Bug 7113: Standardize vendor id name in templates and scripts
[koha.git] / acqui / supplier.pl
index e2d0a73..8896b3b 100755 (executable)
@@ -1,10 +1,8 @@
 #!/usr/bin/perl
 
-
-#script to show display basket of orders
-
 # Copyright 2000-2002 Katipo Communications
 # Copyright 2008-2009 BibLibre SARL
+# Copyright 2010 PTFS Europe Ltd
 #
 # This file is part of Koha.
 #
@@ -26,6 +24,7 @@
 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.
 
@@ -33,7 +32,8 @@ 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
@@ -41,138 +41,141 @@ To know the bookseller this script has to display details.
 =cut
 
 use strict;
+use warnings;
 use C4::Auth;
-use C4::Acquisition;
-use C4::Contract;
+use C4::Contract qw/GetContract/;
 use C4::Biblio;
 use C4::Output;
 use C4::Dates qw/format_date /;
 use CGI;
 
-use C4::Bookseller;
+use C4::Bookseller qw( GetBookSellerFromId DelBookseller );
 use C4::Budgets;
 
-my $query       = new CGI;
-my $id          = $query->param('supplierid');
-my @booksellers = GetBookSellerFromId($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 => 'vendors_manage' },
-               debug           => 1,
-       }
+my $query    = CGI->new;
+my $booksellerid       = $query->param('booksellerid');
+my $supplier = {};
+if ($booksellerid) {
+    $supplier = GetBookSellerFromId($booksellerid);
+}
+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 => '*' },
+        debug           => 1,
+    }
 );
-my $GST = $booksellers[0]->{'gstrate'} || C4::Context->preference("gist");
-$GST *= 100;
-
-my @contracts = GetContracts($id);
-my $contractcount = scalar(@contracts);
-$template->param(hascontracts => 1) if ($contractcount > 0);
+my $seller_gstrate = $supplier->{'gstrate'};
 
+# ensure the scalar isn't flagged as a string
+$seller_gstrate = ( defined $seller_gstrate ) ? $seller_gstrate + 0 : undef;
+my $tax_rate = $seller_gstrate // C4::Context->preference('gist') // 0;
+$tax_rate *= 100;
 #build array for currencies
-if ($op eq "display") {
+if ( $op eq 'display' ) {
 
-    # get contracts
-    my @contracts = @{GetContract( { booksellerid => $id } )};
+    my $contracts = GetContract( { booksellerid => $booksellerid } );
 
-    # format dates
-    for ( @contracts ) {
-        $$_{contractstartdate} = format_date($$_{contractstartdate});
-        $$_{contractenddate}   = format_date($$_{contractenddate});
+    for ( @{$contracts} ) {
+        $_->{contractstartdate} = format_date( $_->{contractstartdate} );
+        $_->{contractenddate}   = format_date( $_->{contractenddate} );
     }
 
-       $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'},
-               gstreg        => $booksellers[0]->{'gstreg'},
-               listincgst    => $booksellers[0]->{'listincgst'},
-               invoiceincgst => $booksellers[0]->{'invoiceincgst'},
-               gstrate       => $booksellers[0]->{'gstrate'}*100,
-               discount      => $booksellers[0]->{'discount'},
-               invoiceprice  => $booksellers[0]->{'invoiceprice'},
-               listprice     => $booksellers[0]->{'listprice'},
-               GST           => $GST,
-               basketcount   => $booksellers[0]->{'basketcount'},
-               contracts     => \@contracts
-       );
-}
-elsif ($op eq 'delete') {
-  &DelBookseller($id);
-  print $query->redirect("/cgi-bin/koha/acqui/acqui-home.pl");
-  exit;
+    $template->param(
+        booksellerid  => $booksellerid,
+        name          => $supplier->{'name'},
+        postal        => $supplier->{'postal'},
+        address1      => $supplier->{'address1'},
+        address2      => $supplier->{'address2'},
+        address3      => $supplier->{'address3'},
+        address4      => $supplier->{'address4'},
+        phone         => $supplier->{'phone'},
+        accountnumber => $supplier->{'accountnumber'},
+        fax           => $supplier->{'fax'},
+        url           => $supplier->{'url'},
+        contact       => $supplier->{'contact'},
+        contpos       => $supplier->{'contpos'},
+        contphone     => $supplier->{'contphone'},
+        contaltphone  => $supplier->{'contaltphone'},
+        contfax       => $supplier->{'contfax'},
+        contemail     => $supplier->{'contemail'},
+        contnotes     => $supplier->{'contnotes'},
+        notes         => $supplier->{'notes'},
+        active        => $supplier->{'active'},
+        gstreg        => $supplier->{'gstreg'},
+        listincgst    => $supplier->{'listincgst'},
+        invoiceincgst => $supplier->{'invoiceincgst'},
+        discount      => $supplier->{'discount'},
+        invoiceprice  => $supplier->{'invoiceprice'},
+        listprice     => $supplier->{'listprice'},
+        GST           => $tax_rate,
+        default_tax   => defined($seller_gstrate),
+        basketcount   => $supplier->{'basketcount'},
+        contracts     => $contracts,
+    );
+} elsif ( $op eq 'delete' ) {
+    DelBookseller($booksellerid);
+    print $query->redirect('/cgi-bin/koha/acqui/acqui-home.pl');
+    exit;
 } 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>"};
-        }
+    my $loop_currency;
+    my $active_currency = GetCurrency();
+    my $active_listprice = $supplier->{'listprice'};
+    my $active_invoiceprice = $supplier->{'invoiceprice'};
+    if (!$supplier->{listprice}) {
+        $active_listprice =  $active_currency->{currency};
+    }
+    if (!$supplier->{invoiceprice}) {
+        $active_invoiceprice =  $active_currency->{currency};
+    }
+    for (@currencies) {
+        push @{$loop_currency},
+            { 
+            currency     => $_->{currency},
+            listprice    => ( $_->{currency} eq $active_listprice ),
+            invoiceprice => ( $_->{currency} eq $active_invoiceprice ),
+            };
     }
-    my $GST = $booksellers[0]->{'gstrate'} || C4::Context->preference("gist");
-    $GST *= 100;
-       $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               => $id?$booksellers[0]->{'active'}:1, # set active ON by default for supplier add (id empty for add)
-               gstreg               => $booksellers[0]->{'gstreg'},
-               listincgst           => $booksellers[0]->{'listincgst'},
-               invoiceincgst        => $booksellers[0]->{'invoiceincgst'},
-               gstrate              => $booksellers[0]->{'gstrate'}*100,
-               discount             => $booksellers[0]->{'discount'},
-               loop_pricescurrency  => \@loop_pricescurrency,
-               loop_invoicecurrency => \@loop_invoicecurrency,
-               GST                  => $GST,
-               enter                => 1,
-       );
-}
-
 
+    my $default_gst_rate = (C4::Context->preference('gist') * 100) || '0.0';
+
+    my $gstrate = defined $supplier->{gstrate} ? $supplier->{gstrate} * 100 : '';
+    $template->param(
+        booksellerid => $booksellerid,
+        name         => $supplier->{'name'},
+        postal       => $supplier->{'postal'},
+        address1     => $supplier->{'address1'},
+        address2     => $supplier->{'address2'},
+        address3     => $supplier->{'address3'},
+        address4     => $supplier->{'address4'},
+        phone        => $supplier->{'phone'},
+        accountnumber=> $supplier->{'accountnumber'},
+        fax          => $supplier->{'fax'},
+        url          => $supplier->{'url'},
+        contact      => $supplier->{'contact'},
+        contpos      => $supplier->{'contpos'},
+        contphone    => $supplier->{'contphone'},
+        contaltphone => $supplier->{'contaltphone'},
+        contfax      => $supplier->{'contfax'},
+        contemail    => $supplier->{'contemail'},
+        contnotes    => $supplier->{'contnotes'},
+        notes        => $supplier->{'notes'},
+        # set active ON by default for supplier add (id empty for add)
+        active       => $booksellerid ? $supplier->{'active'} : 1,
+        gstreg        => $supplier->{'gstreg'},
+        listincgst    => $supplier->{'listincgst'},
+        invoiceincgst => $supplier->{'invoiceincgst'},
+        gstrate       => $gstrate,
+        discount      => $supplier->{'discount'},
+        loop_currency => $loop_currency,
+        GST           => $tax_rate,
+        enter         => 1,
+        default_gst_rate => $default_gst_rate,
+    );
+}
 
 output_html_with_http_headers $query, $cookie, $template->output;