[Koha-patches] [PATCH] Bug 4510 Script processes single supplier not an array

Colin Campbell colin.campbell at ptfs-europe.com
Tue May 18 12:42:58 CEST 2010


Script was written as though it had an array rather than
a single supplier. Replaced the excess punctuation with a single
supplier variable

replaced the C-style currency loop with a simpler perl-style one
Changed variable name $GST to $tax it's not magical and not a constant
and we all know what tax is

Be explicit over which Contract routines are imported and
called as C4::Contract redefines
subroutines in the Acquisitions module
causing compile time errors
removed introduction of unneeded variable to test contract returns
---
 acqui/supplier.pl |  186 ++++++++++++++++++++++++++---------------------------
 1 files changed, 92 insertions(+), 94 deletions(-)

diff --git a/acqui/supplier.pl b/acqui/supplier.pl
index c3a5db4..bc475c6 100755
--- a/acqui/supplier.pl
+++ b/acqui/supplier.pl
@@ -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.
 #
@@ -43,11 +41,11 @@ To know the bookseller this script has to display details.
 use strict;
 use warnings;
 use C4::Auth;
-use C4::Acquisition;
-use C4::Contract;
+use C4::Acquisition qw/GetContracts/;
 use C4::Biblio;
 use C4::Output;
 use C4::Dates qw/format_date /;
+use C4::Contract qw/GetContract/;
 use CGI;
 
 use C4::Bookseller;
@@ -55,33 +53,35 @@ use C4::Budgets;
 
 my $query       = new CGI;
 my $id          = $query->param('supplierid');
-my @booksellers = GetBookSellerFromId($id) if $id;
-my $count       = scalar @booksellers;
+my $supplier    = GetBookSellerFromId($id);
+if (!$supplier) {
+    print $query->redirect('/cgi-bin/koha/acqui/acqui-home.pl');
+    exit;
+}
 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,
-	}
+    {   template_name   => 'acqui/supplier.tmpl',
+        query           => $query,
+        type            => 'intranet',
+        authnotrequired => 0,
+        flagsrequired   => { acquisition => 'vendors_manage' },
+        debug           => 1,
+    }
 );
-my $seller_gstrate = $booksellers[0]->{'gstrate'};
+my $seller_gstrate = $supplier->{'gstrate'};
 # A perl-ism: '0'==false, '0.000'==true, but 0=='0.000' - this accounts for that
 undef $seller_gstrate if ($seller_gstrate == 0);
-my $GST = $seller_gstrate || C4::Context->preference("gist");
-$GST *= 100;
+my $tax = $seller_gstrate || C4::Context->preference('gist');
+$tax *= 100;
 
 my @contracts = GetContracts($id);
-my $contractcount = scalar(@contracts);
-$template->param(hascontracts => 1) if ($contractcount > 0);
+$template->param(hascontracts => 1) if (@contracts);
 
 #build array for currencies
-if ($op eq "display") {
+if ($op eq 'display') {
 
     # get contracts
-    my @contracts = @{GetContract( { booksellerid => $id } )};
+    my @contracts = @{C4::Contract::GetContract( { booksellerid => $id } )};
 
     # format dates
     for ( @contracts ) {
@@ -89,92 +89,90 @@ if ($op eq "display") {
         $$_{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
-	);
+    $template->param(
+        id            => $id,
+        name          => $supplier->{'name'},
+        postal        => $supplier->{'postal'},
+        address1      => $supplier->{'address1'},
+        address2      => $supplier->{'address2'},
+        address3      => $supplier->{'address3'},
+        address4      => $supplier->{'address4'},
+        phone         => $supplier->{'phone'},
+        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'},
+        gstrate       => $supplier->{'gstrate'}*100,
+        discount      => $supplier->{'discount'},
+        invoiceprice  => $supplier->{'invoiceprice'},
+        listprice     => $supplier->{'listprice'},
+        GST           => $tax,
+        basketcount   => $supplier->{'basketcount'},
+        contracts     => \@contracts
+    );
 }
 elsif ($op eq 'delete') {
-  &DelBookseller($id);
-  print $query->redirect("/cgi-bin/koha/acqui/acqui-home.pl");
+  DelBookseller($id);
+  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>" };
+    for my $curr ( @currencies ) {
+        if ($supplier->{'listprice'} eq $curr->{'currency'}) {
+            push @loop_pricescurrency, { currency => "<option selected=\"selected\" value=\"$curr->{'currency'}\">$curr->{'currency'}</option>" };
         } else {
-            push @loop_pricescurrency, { currency => "<option value=\"$currencies[$i]->{'currency'}\">$currencies[$i]->{'currency'}</option>"};
+            push @loop_pricescurrency, { currency => "<option value=\"$curr->{'currency'}\">$curr->{'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>"};
+        if ($supplier->{'invoiceprice'} eq $curr->{'currency'}) {
+            push @loop_invoicecurrency, { currency => "<option selected=\"selected\" value=\"$curr->{'currency'}\">$curr->{'currency'}</option>"};
         } else {
-            push @loop_invoicecurrency, { currency => "<option value=\"$currencies[$i]->{'currency'}\">$currencies[$i]->{'currency'}</option>"};
+            push @loop_invoicecurrency, { currency => "<option value=\"$curr->{'currency'}\">$curr->{'currency'}</option>"};
         }
     }
-	$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,
-	);
+    $template->param(
+        id                   => $id,
+        name                 => $supplier->{name},
+        postal               => $supplier->{postal},
+        address1             => $supplier->{address1},
+        address2             => $supplier->{address2},
+        address3             => $supplier->{address3},
+        address4             => $supplier->{address4},
+        phone                => $supplier->{phone},
+        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               => $id?$supplier->{active}:1, # set active ON by default for supplier add (id empty for add)
+        gstreg               => $supplier->{gstreg},
+        listincgst           => $supplier->{listincgst},
+        invoiceincgst        => $supplier->{invoiceincgst},
+        gstrate              => $supplier->{gstrate}*100,
+        discount             => $supplier->{discount},
+        loop_pricescurrency  => \@loop_pricescurrency,
+        loop_invoicecurrency => \@loop_invoicecurrency,
+        GST                  => $tax,
+        enter                => 1,
+    );
 }
 
-
-
 output_html_with_http_headers $query, $cookie, $template->output;
-- 
1.6.6.1




More information about the Koha-patches mailing list