Bug 7113: Standardize vendor id name in templates and scripts
[koha.git] / acqui / supplier.pl
index d2e0f47..8896b3b 100755 (executable)
 #!/usr/bin/perl
 
-#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 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-use C4::Acquisitions;
+=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.
+
+=head1 CGI PARAMETERS
+
+=over 4
+
+=item booksellerid
+
+To know the bookseller this script has to display details.
+
+=back
+
+=cut
+
+use strict;
+use warnings;
+use C4::Auth;
+use C4::Contract qw/GetContract/;
+use C4::Biblio;
 use C4::Output;
+use C4::Dates qw/format_date /;
 use CGI;
-use strict;
 
-my $input=new CGI;
-print $input->header();
-my $id=$input->param('id');
-my ($count,@booksellers)=bookseller($id); 
-print startpage;
-
-print startmenu('acquisitions');
-
-print <<EOP
-<form action=updatesupplier.pl method=post>
-
-<input type=hidden name=id value=$id>
-<FONT SIZE=6><em>Update: $booksellers[0]->{'name'}</em></FONT>
-<P>
-<CENTER>
-<TABLE  CELLSPACING=0  CELLPADDING=5 border=1 align=left width="40%">
-<tr valign=top bgcolor=#99cc33><td background="/images/background-mem.gif" colspan=2><B>COMPANY DETAILS</B></td></tr>
-<TR VALIGN=TOP>
-<TD><b>Company Name</b></td>
-<td><input type=text size=20 name=company value="$booksellers[0]->{'name'}">
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>Postal Address</td>
-<td><textarea name=company_postal cols=20 rows=3>$booksellers[0]->{'postal'}
-</textarea></td>
-</tr>
-<TR VALIGN=TOP>
-<TD>Physical Address</td>
-<td><textarea name=physical cols=20 rows=4>$booksellers[0]->{'address1'}
-$booksellers[0]->{'address2'}
-$booksellers[0]->{'address3'}
-$booksellers[0]->{'address4'}
-</textarea>
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>Phone</td>
-<td><input type=text size=20 name=company_phone value="$booksellers[0]->{'phone'}">
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>Fax</td>
-<td><input type=text size=20 name=company_fax value="$booksellers[0]->{'fax'}">
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>Website</td>
-<td><input type=text size=20 name=website value="$booksellers[0]->{'url'}">
-</td>
-</tr>
-<tr valign=top bgcolor=#99cc33><td background="/images/background-mem.gif" colspan=2><B>CONTACT DETAILS</B></td></tr>
-<TR VALIGN=TOP>
-<TD>Contact Name</td>
-<td><input type=text size=20 name=company_contact_name value="$booksellers[0]->{'contact'}">
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>Position</td>
-<td><input type=text size=20 name=company_contact_position value="$booksellers[0]->{'contpos'}">
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>Phone</td>
-<td><input type=text size=20 name=contact_phone value="$booksellers[0]->{'contphone'}">
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>Alternative Phone</td>
-<td><input type=text size=20 name=contact_phone_2 value="$booksellers[0]->{'contaltphone'}">
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>Fax</td>
-<td><input type=text size=20 name=contact_fax value="$booksellers[0]->{'contfax'}">
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>E-mail</td>
-<td><input type=text size=20 name=company_email value="$booksellers[0]->{'contemail'}">
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>Notes</td>
-<td><textarea name=notes cols=20 rows=4>$booksellers[0]->{'contnotes'}</textarea>
-</td>
-</tr>
-<tr valign=right><td><input type=image  name=submit src=/images/save-changes.gif border=0 width=187 height=42 align=right></td></tr>
-</table>
-<img src="/images/holder.gif" width=32 height=250 align=left>
-
-<table border=1 cellspacing=0 cellpadding=5 width="40%">
-<tr valign=top bgcolor=#99cc33><td background="/images/background-mem.gif" colspan=2><B>CURRENT STATUS</B></td></tr>
-<TR VALIGN=TOP>
-<TD>Supplier is</td>
-<td><input type=radio name=status value=1
-EOP
-;
-if ($booksellers[0]->{'active'}==1){
-  print " checked ";
-}
-print ">Active
-<input type=radio name=status value=0";
-if ($booksellers[0]->{'active'}==0){
-  print " checked ";
-}
-print <<EOP
->Inactive
-</td>
-</tr>
-<tr valign=top bgcolor=#99cc33><td background="/images/background-mem.gif" colspan=2><B>ORDERING INFORMATION</B></td></tr>
-<TR VALIGN=TOP>
-<TD>Publishers and Imprints</td>
-<td><textarea name=publishers_imprints cols=20 rows=4>$booksellers[0]->{'specialty'}</textarea>
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>List Prices are</td>
-<td><select name=list_currency size=1>
-<option value=NZD
-EOP
-;
-if ($booksellers[0]->{'listprice'} eq 'NZD'){
-  print " selected";
-}
-print ">\$ NZ
-<option value=AUD";
-if ($booksellers[0]->{'listprice'} eq 'AUD'){
-  print " selected";
-}
-print ">\$ Aus
-<option value=USD";
-if ($booksellers[0]->{'listprice'} eq 'USD'){
-  print " selected";
-}
-print ">\$ USA
-<option value=UKP";
-if ($booksellers[0]->{'listprice'} eq 'UKP'){
-  print " selected";
-}
+use C4::Bookseller qw( GetBookSellerFromId DelBookseller );
+use C4::Budgets;
 
-print <<EOP
->&pound; Sterling
-</select>
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>Invoice Prices are</td>
-<td><select name=invoice_currency size=1>
-<option value=NZD
-EOP
-;
-if ($booksellers[0]->{'invoiceprice'} eq 'NZD'){
-  print " selected";
-}
-print ">\$ NZ
-<option value=AUD";
-if ($booksellers[0]->{'invoiceprice'} eq 'AUD'){
-  print " selected";
-}
-print ">\$ Aus
-<option value=USD";
-if ($booksellers[0]->{'invoiceprice'} eq 'USD'){
-  print " selected";
-}
-print ">\$ USA
-<option value=UKP";
-if ($booksellers[0]->{'invoiceprice'} eq 'UKP'){
-  print " selected";
-}
-print <<EOP
->&pound; Sterling
-</select>
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>GST Registered</td>
-<td><input type=radio name=gst value=1
-EOP
-;
-if ($booksellers[0]->{'gstreg'}==1){
-  print " checked";
-}
-print ">Yes 
-<input type=radio name=gst value=0";
-if ($booksellers[0]->{'gstreg'}==0){
-  print " checked";
-}
-print <<EOP
->No
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>List Item Price Includes GST</td>
-<td><input type=radio name=list_gst value=1
-EOP
-;
-if ($booksellers[0]->{'listincgst'}==1){
-  print " checked";
-}
-print ">Yes 
-<input type=radio name=list_gst value=0";
-if ($booksellers[0]->{'listincgst'}==0){
-  print " checked";
-}
-print <<EOP
->No
-</td>
-</tr>
-<TR VALIGN=TOP>
-<TD>Invoice Item Price Includes GST</td>
-<td><input type=radio name=invoice_gst value=1
-EOP
-;
-if ($booksellers[0]->{'invoiceincgst'}==1){
-  print " checked";
-}
-print ">Yes 
-<input type=radio name=invoice_gst value=0";
-if ($booksellers[0]->{'invoiceincgst'}==0){
-  print " checked";
-}
-print <<EOP
->No
-</td>
-</tr>
-<TR VALIGN=TOP>                                
-<TD>Discount</td>
-<td><input type=text size=3 name=discount value=$booksellers[0]->{'discount'}> %
-</tr>
-</table>
+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 $seller_gstrate = $supplier->{'gstrate'};
 
-</form>
-</center>
-EOP
-;
+# 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' ) {
 
+    my $contracts = GetContract( { booksellerid => $booksellerid } );
 
-print endmenu('acquisitions');
+    for ( @{$contracts} ) {
+        $_->{contractstartdate} = format_date( $_->{contractstartdate} );
+        $_->{contractenddate}   = format_date( $_->{contractenddate} );
+    }
+
+    $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 $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 $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,
+    );
+}
 
-print endpage;
+output_html_with_http_headers $query, $cookie, $template->output;