View | Details | Raw Unified | Return to bug 7992
Collapse All | Expand All

(-)a/cataloguing/value_builder/stocknumberAV.pl (-1 / +113 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
3
# Copyright 2012 BibLibre SARL
4
#
5
# This file is part of Koha.
6
#
7
# Koha is free software; you can redistribute it and/or modify it under the
8
# terms of the GNU General Public License as published by the Free Software
9
# Foundation; either version 2 of the License, or (at your option) any later
10
# version.
11
#
12
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License along
17
# with Koha; if not, write to the Free Software Foundation, Inc.,
18
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20
use Modern::Perl;
21
use C4::Auth;
22
use CGI;
23
use C4::Context;
24
25
=head1 DESCRIPTION
26
27
This plugin is based on authorised values INVENTORY.
28
It is used for stocknumber computation.
29
30
If the user send an empty string, we return a simple incremented stocknumber.
31
If a prefix is submited, we look for the highest stocknumber with this prefix, and return it incremented.
32
In this case, a stocknumber has this form : "PREFIX 0009678570".
33
 - PREFIX is an upercase word
34
 - a space separator
35
 - 10 digits, with leading 0s if needed
36
37
=cut
38
39
sub plugin_parameters {
40
}
41
42
sub plugin_javascript {
43
    my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_;
44
    my $res = qq{
45
    <script type='text/javascript'>
46
        function Focus$field_number() {
47
            return 1;
48
        }
49
50
        function Blur$field_number() {
51
                return 1;
52
        }
53
54
        function Clic$field_number() {
55
                var code = document.getElementById('$field_number');
56
                \$.ajax({
57
                    url: '/cgi-bin/koha/cataloguing/plugin_launcher.pl',
58
                    type: 'POST',
59
                    data: {
60
                        'plugin_name': 'stocknumberAV.pl',
61
                        'code'    : code.value,
62
                    },
63
                    success: function(data){
64
                        var field = document.getElementById('$field_number');
65
                        field.value = data;
66
                        return 1;
67
                    }
68
                });
69
        }
70
    </script>
71
    };
72
73
    return ($field_number,$res);
74
}
75
76
sub plugin {
77
    my ($input) = @_;
78
    my $code = $input->param('code');
79
80
    my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
81
        {   template_name   => "cataloguing/value_builder/ajax.tmpl",
82
            query           => $input,
83
            type            => "intranet",
84
            authnotrequired => 0,
85
            flagsrequired   => { editcatalogue => '*' },
86
            debug           => 1,
87
        }
88
    );
89
90
    my $dbh = C4::Context->dbh;
91
92
    # If a prefix is submited, we look for the highest stocknumber with this prefix, and return it incremented
93
    $code =~ s/ *$//g;
94
    if ( $code =~ m/^[A-Z]+$/ ) {
95
        my $sth = $dbh->prepare("SELECT lib FROM authorised_values WHERE category='INVENTORY' AND authorised_value=?");
96
        $sth->execute( $code);
97
98
        if ( my $valeur = $sth->fetchrow ) {
99
            $template->param( return => $code . ' ' . sprintf( '%010s', ( $valeur + 1 ) ), );
100
            my $sth2 = $dbh->prepare("UPDATE authorised_values SET lib=? WHERE category='INVENTORY' AND authorised_value=?");
101
            $sth2->execute($valeur+1,$code);
102
        } else {
103
                $template->param( return => "There is no defined value for $code");
104
        }
105
        # The user entered a custom value, we don't touch it, this could be handled in js
106
    } else {
107
        $template->param( return => $code, );
108
    }
109
110
    output_html_with_http_headers $input, $cookie, $template->output;
111
}
112
113
1;

Return to bug 7992