Bug 19166: (follow-up) Add ADJ_REASON auhtorised value category and minor fixes
[koha.git] / acqui / supplier.pl
index 1a8be5b..40235df 100755 (executable)
@@ -1,32 +1,30 @@
 #!/usr/bin/perl
 
-# $Id$
-
-#script to show display basket of orders
-#written by chris@katipo.co.nz 24/2/2000
-
 # Copyright 2000-2002 Katipo Communications
+# Copyright 2008-2009 BibLibre SARL
+# Copyright 2010 PTFS Europe Ltd
 #
 # This file is part of Koha.
 #
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
 #
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 =head1 NAME
 
 supplier.pl
 
 =head1 DESCRIPTION
+
 this script shows the details for a bookseller given on input arg.
 It allows to edit & save information about this bookseller.
 
@@ -34,115 +32,88 @@ It allows to edit & save information about this bookseller.
 
 =over 4
 
-=item supplierid
+=item booksellerid
+
 To know the bookseller this script has to display details.
 
 =back
 
 =cut
 
-use strict;
+use Modern::Perl;
 use C4::Auth;
-use C4::Acquisition;
+use C4::Contract;
 use C4::Biblio;
 use C4::Output;
-use CGI;
-
-
-use C4::Bookseller;
-use C4::Bookfund;
-
-my $query=new CGI;
-my $id=$query->param('supplierid');
-my @booksellers = GetBookSeller($id) if $id;
-my $count = scalar @booksellers;
-my $op=$query->param('op') || "display";
-
-my ($template, $loggedinuser, $cookie)
-    = get_template_and_user({template_name => "acqui/supplier.tmpl",
-                            query => $query,
-                            type => "intranet",
-                            authnotrequired => 0,
-                            flagsrequired => {acquisition => 1},
-                            debug => 1,
-                });
-
-#build array for currencies
-if ($op eq "display"){
-    $template->param(id => $id,
-                    name => $booksellers[0]->{'name'},
-                    postal =>$booksellers[0]->{'postal'},
-                    address1 => $booksellers[0]->{'address1'},
-                    address2 => $booksellers[0]->{'address2'},
-                    address3 => $booksellers[0]->{'address3'},
-                    address4 => $booksellers[0]->{'address4'},
-                    phone =>$booksellers[0]->{'phone'},
-                    fax => $booksellers[0]->{'fax'},
-                    url => $booksellers[0]->{'url'},
-                    contact => $booksellers[0]->{'contact'},
-                    contpos => $booksellers[0]->{'contpos'},
-                    contphone => $booksellers[0]->{'contphone'},
-                    contaltphone => $booksellers[0]->{'contaltphone'},
-                    contfax => $booksellers[0]->{'contfax'},
-                    contemail => $booksellers[0]->{'contemail'},
-                    contnotes => $booksellers[0]->{'contnotes'},
-                    notes => $booksellers[0]->{'notes'},
-                    active => $booksellers[0]->{'active'},
-                    specialty => $booksellers[0]->{'specialty'},
-                    gstreg => $booksellers[0]->{'gstreg'},
-                    listincgst => $booksellers[0]->{'listincgst'},
-                    invoiceincgst => $booksellers[0]->{'invoiceincgst'},
-                    discount => $booksellers[0]->{'discount'},
-                    invoiceprice=>$booksellers[0]->{'invoiceprice'},
-                    listprice=>$booksellers[0]->{'listprice'},
-                    GST => C4::Context->preference("gist"),
-                    );
-}else{
-    my @currencies = GetCurrencies();
-    my $count = scalar @currencies;
-    
-    my @loop_pricescurrency;
-    my @loop_invoicecurrency;
-    for (my $i=0;$i<$count;$i++) {
-        if ($booksellers[0]->{'listprice'} eq $currencies[$i]->{'currency'}) {
-            push @loop_pricescurrency, { currency => "<option selected=\"selected\" value=\"$currencies[$i]->{'currency'}\">$currencies[$i]->{'currency'}</option>" };
-        } else {
-            push @loop_pricescurrency, { currency => "<option value=\"$currencies[$i]->{'currency'}\">$currencies[$i]->{'currency'}</option>"};
-        }
-        if ($booksellers[0]->{'invoiceprice'} eq $currencies[$i]->{'currency'}) {
-            push @loop_invoicecurrency, { currency => "<option selected=\"selected\" value=\"$currencies[$i]->{'currency'}\">$currencies[$i]->{'currency'}</option>"};
-        } else {
-            push @loop_invoicecurrency, { currency => "<option value=\"$currencies[$i]->{'currency'}\">$currencies[$i]->{'currency'}</option>"};
-        }
+use CGI qw ( -utf8 );
+
+use C4::Budgets;
+
+use Koha::Acquisition::Bookseller::Contacts;
+use Koha::Acquisition::Booksellers;
+use Koha::Acquisition::Currencies;
+
+my $query    = CGI->new;
+my $op = $query->param('op') || 'display';
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+    {   template_name   => 'acqui/supplier.tt',
+        query           => $query,
+        type            => 'intranet',
+        authnotrequired => 0,
+        flagsrequired   => { acquisition => '*' },
+        debug           => 1,
+    }
+);
+my $booksellerid       = $query->param('booksellerid');
+my $supplier;
+if ($booksellerid) {
+    $supplier = Koha::Acquisition::Booksellers->find( $booksellerid );
+    my $supplier_hashref = $supplier->unblessed;
+    foreach ( keys %{$supplier_hashref} ) {
+        $template->{'VARS'}->{$_} = $supplier->$_;
     }
-    $template->param(id => $id,
-                    name => $booksellers[0]->{'name'},
-                    postal =>$booksellers[0]->{'postal'},
-                    address1 => $booksellers[0]->{'address1'},
-                    address2 => $booksellers[0]->{'address2'},
-                    address3 => $booksellers[0]->{'address3'},
-                    address4 => $booksellers[0]->{'address4'},
-                    phone =>$booksellers[0]->{'phone'},
-                    fax => $booksellers[0]->{'fax'},
-                    url => $booksellers[0]->{'url'},
-                    contact => $booksellers[0]->{'contact'},
-                    contpos => $booksellers[0]->{'contpos'},
-                    contphone => $booksellers[0]->{'contphone'},
-                    contaltphone => $booksellers[0]->{'contaltphone'},
-                    contfax => $booksellers[0]->{'contfax'},
-                    contemail => $booksellers[0]->{'contemail'},
-                    contnotes => $booksellers[0]->{'contnotes'},
-                    notes => $booksellers[0]->{'notes'},
-                    active => $booksellers[0]->{'active'},
-                    specialty => $booksellers[0]->{'specialty'},
-                    gstreg => $booksellers[0]->{'gstreg'},
-                    listincgst => $booksellers[0]->{'listincgst'},
-                    invoiceincgst => $booksellers[0]->{'invoiceincgst'},
-                    discount => $booksellers[0]->{'discount'},
-                    loop_pricescurrency => \@loop_pricescurrency,
-                    loop_invoicecurrency => \@loop_invoicecurrency,
-                    GST => C4::Context->preference("gist"),
-                    enter=>1,
-                    );
+    $template->{VARS}->{contacts} = $supplier->contacts if $supplier->contacts->count;
+    $template->{'VARS'}->{'booksellerid'} = $booksellerid;
 }
+
+$template->{VARS}->{contacts} ||= Koha::Acquisition::Bookseller::Contact->new;
+
+if ( $op eq 'display' ) {
+    my $contracts = GetContracts( { booksellerid => $booksellerid } );
+
+    $template->param(
+        active        => $supplier->active,
+        tax_rate      => $supplier->tax_rate + 0.0,
+        invoiceprice  => $supplier->invoiceprice,
+        listprice     => $supplier->listprice,
+        basketcount   => $supplier->baskets->count,
+        subscriptioncount => $supplier->subscriptions->count,
+        contracts     => $contracts,
+    );
+} elsif ( $op eq 'delete' ) {
+    # no further message needed for the user
+    # the DELETE button only appears in the template if basketcount == 0
+    if ( $supplier->baskets->count == 0 ) {
+        Koha::Acquisition::Booksellers->find($booksellerid)->delete;
+    }
+    print $query->redirect('/cgi-bin/koha/acqui/acqui-home.pl');
+    exit;
+} else {
+    my @currencies = Koha::Acquisition::Currencies->search;
+
+    # get option values from gist syspref
+    my @gst_values = map {
+        option => $_ + 0.0
+    }, split( '\|', C4::Context->preference("gist") );
+
+    $template->param(
+        # set active ON by default for supplier add (id empty for add)
+        active     => $supplier ? $supplier->active         : 1,
+        tax_rate   => $supplier ? $supplier->tax_rate + 0.0 : 0,
+        gst_values    => \@gst_values,
+        currencies    => \@currencies,
+        enter         => 1,
+    );
+}
+
 output_html_with_http_headers $query, $cookie, $template->output;