X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=acqui%2Fsupplier.pl;h=fdeef06f5b39a1af04e094c8bde580991438933e;hb=31a3a7ed9353958e3f684fffc62316caf21e3e77;hp=42b23b038a4e7ec28bf602f088c471e261a24038;hpb=f36c042b80f053b7f75dfc1aff12a312e5a59134;p=koha.git
diff --git a/acqui/supplier.pl b/acqui/supplier.pl
index 42b23b038a..fdeef06f5b 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.
#
@@ -17,15 +15,16 @@
# 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, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
=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.
@@ -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,146 @@ 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'},
+ subscriptioncount => $supplier->{'subscriptioncount'},
+ 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->{'basketcount'} == 0 ) {
+ 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 => "" };
- } else {
- push @loop_pricescurrency, { currency => ""};
- }
- if ($booksellers[0]->{'invoiceprice'} eq $currencies[$i]->{'currency'}) {
- push @loop_invoicecurrency, { currency => ""};
- } else {
- push @loop_invoicecurrency, { currency => ""};
- }
+ 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;