summaryrefslogtreecommitdiff
path: root/Projects/UPSTREAM
ModeNameSize
d---------MISC37logplain
d---------WEBDESIGN37logplain
class="hl">#
  • # This file contains source code included with or based on SQL-Ledger which
  • # is Copyright Dieter Simader and DWS Systems Inc. 2000-2005 and licensed
  • # under the GNU General Public License version 2 or, at your option, any later
  • # version. For a full list including contact information of contributors,
  • # maintainers, and copyright holders, see the CONTRIBUTORS file.
  • #
  • # Original Copyright Notice from SQL-Ledger 2.6.17 (before the fork):
  • # Copyright (c) 2001
  • #
  • # Author: DWS Systems Inc.
  • # Web: http://www.sql-ledger.org
  • #
  • # Contributors: Reed White <alta@alta-research.com>
  • #
  • #
  • #
  • # This program 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.
  • #
  • # This program 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 this program; if not, write to the Free Software
  • # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  • #======================================================================
  • #
  • # customer/vendor module
  • #
  • #======================================================================
  • use LedgerSMB::CT;
  • 1;
  • # end of main
  • sub add {
  • $form->{title} = "Add";
  • # $locale->text('Add Customer')
  • # $locale->text('Add Vendor')
  • $form->{callback} = "$form->{script}?action=add&db=$form->{db}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}" unless $form->{callback};
  • CT->create_links(\%myconfig, \%$form);
  • &form_header;
  • &form_footer;
  • }
  • sub history {
  • # $locale->text('Customer History')
  • # $locale->text('Vendor History')
  • $history = 1;
  • $label = ucfirst $form->{db};
  • $label .= " History";
  • if ($form->{db} eq 'customer') {
  • $invlabel = $locale->text('Sales Invoices');
  • $ordlabel = $locale->text('Sales Orders');
  • $quolabel = $locale->text('Quotations');
  • } else {
  • $invlabel = $locale->text('Vendor Invoices');
  • $ordlabel = $locale->text('Purchase Orders');
  • $quolabel = $locale->text('Request for Quotations');
  • }
  • $form->{title} = $locale->text($label);
  • $form->{nextsub} = "list_history";
  • $transactions = qq|
  • <tr>
  • <td></td>
  • <td>
  • <table>
  • <tr>
  • <td>
  • <table>
  • <tr>
  • <td><input name=type type=radio class=radio value=invoice checked> $invlabel</td>
  • </tr>
  • <tr>
  • <td><input name=type type=radio class=radio value=order> $ordlabel</td>
  • </tr>
  • <tr>
  • <td><input name="type" type=radio class=radio value=quotation> $quolabel</td>
  • </tr>
  • </table>
  • </td>
  • <td>
  • <table>
  • <tr>
  • <th>|.$locale->text('From').qq|</th>
  • <td><input name=transdatefrom size=11 title="$myconfig{dateformat}"></td>
  • <th>|.$locale->text('To').qq|</th>
  • <td><input name=transdateto size=11 title="$myconfig{dateformat}"></td>
  • </tr>
  • <tr>
  • <td></td>
  • <td colspan=3>
  • <input name="open" type=checkbox class=checkbox value=Y checked>&nbsp;|.$locale->text('Open').qq|
  • <input name="closed" type=checkbox class=checkbox value=Y checked>&nbsp;|.$locale->text('Closed').qq|
  • </td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • |;
  • $include = qq|
  • <tr>
  • <th align=right nowrap>|.$locale->text('Include in Report').qq|</th>
  • <td>
  • <table>
  • <tr>
  • <td><input name=history type=radio class=radio value=summary checked> |.$locale->text('Summary').qq|</td>
  • <td><input name=history type=radio class=radio value=detail> |.$locale->text('Detail').qq|
  • </td>
  • </tr>
  • <tr>
  • <td>
  • <input name="l_partnumber" type=checkbox class=checkbox value=Y checked>&nbsp;|.$locale->text('Part Number').qq|
  • </td>
  • <td>
  • <input name="l_description" type=checkbox class=checkbox value=Y checked>&nbsp;|.$locale->text('Description').qq|
  • </td>
  • <td>
  • <input name="l_sellprice" type=checkbox class=checkbox value=Y checked>&nbsp;|.$locale->text('Sell Price').qq|
  • </td>
  • <td>
  • <input name="l_curr" type=checkbox class=checkbox value=Y>&nbsp;|.$locale->text('Currency').qq|
  • </td>
  • </tr>
  • <tr>
  • <td>
  • <input name="l_qty" type=checkbox class=checkbox value=Y>&nbsp;|.$locale->text('Qty').qq|
  • </td>
  • <td>
  • <input name="l_unit" type=checkbox class=checkbox value=Y>&nbsp;|.$locale->text('Unit').qq|
  • </td>
  • <td>
  • <input name="l_discount" type=checkbox class=checkbox value=Y>&nbsp;|.$locale->text('Discount').qq|
  • </td>
  • <tr>
  • </tr>
  • <td>
  • <input name="l_deliverydate" type=checkbox class=checkbox value=Y>&nbsp;|.$locale->text('Delivery Date').qq|
  • </td>
  • <td>
  • <input name="l_projectnumber" type=checkbox class=checkbox value=Y>&nbsp;|.$locale->text('Project Number').qq|
  • </td>
  • <td>
  • <input name="l_serialnumber" type=checkbox class=checkbox value=Y>&nbsp;|.$locale->text('Serial Number').qq|
  • </td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • |;
  • &search_name;
  • if ($form->{lynx}) {
  • require "bin/menu.pl";
  • &menubar;
  • }
  • print qq|
  • </body>
  • </html>
  • |;
  • }
  • sub transactions {
  • if ($form->{db} eq 'customer') {
  • $translabel = $locale->text('AR Transactions');
  • $invlabel = $locale->text('Sales Invoices');
  • $ordlabel = $locale->text('Sales Orders');
  • $quolabel = $locale->text('Quotations');
  • } else {
  • $translabel = $locale->text('AP Transactions');
  • $invlabel = $locale->text('Vendor Invoices');
  • $ordlabel = $locale->text('Purchase Orders');
  • $quolabel = $locale->text('Request for Quotations');
  • }
  • $transactions = qq|
  • <tr>
  • <td></td>
  • <td>
  • <table>
  • <tr>
  • <td>
  • <table>
  • <tr>
  • <td><input name="l_transnumber" type=checkbox class=checkbox value=Y> $translabel</td>
  • </tr>
  • <tr>
  • <td><input name="l_invnumber" type=checkbox class=checkbox value=Y> $invlabel</td>
  • </tr>
  • <tr>
  • <td><input name="l_ordnumber" type=checkbox class=checkbox value=Y> $ordlabel</td>
  • </tr>
  • <tr>
  • <td><input name="l_quonumber" type=checkbox class=checkbox value=Y> $quolabel</td>
  • </tr>
  • </table>
  • </td>
  • <td>
  • <table>
  • <tr>
  • <th>|.$locale->text('From').qq|</th>
  • <td><input name=transdatefrom size=11 title="$myconfig{dateformat}"></td>
  • <th>|.$locale->text('To').qq|</th>
  • <td><input name=transdateto size=11 title="$myconfig{dateformat}"></td>
  • </tr>
  • <tr>
  • <td></td>
  • <td colspan=3>
  • <input name="open" type=checkbox class=checkbox value=Y checked>&nbsp;|.$locale->text('Open').qq|
  • <input name="closed" type=checkbox class=checkbox value=Y checked>&nbsp;|.$locale->text('Closed').qq|
  • </td>
  • </tr>
  • <tr>
  • <td></td>
  • <td colspan=3>
  • <input name="l_amount" type=checkbox class=checkbox value=Y checked>&nbsp;|.$locale->text('Amount').qq|
  • <input name="l_tax" type=checkbox class=checkbox value=Y checked>&nbsp;|.$locale->text('Tax').qq|
  • <input name="l_total" type=checkbox class=checkbox value=Y checked>&nbsp;|.$locale->text('Total').qq|
  • <input name="l_subtotal" type=checkbox class=checkbox value=Y>&nbsp;|.$locale->text('Subtotal').qq|
  • </td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • |;
  • }
  • sub include_in_report {
  • $label = ucfirst $form->{db};
  • @a = ();
  • push @a, qq|<input name="l_ndx" type=checkbox class=checkbox value=Y> |.$locale->text('No.');
  • push @a, qq|<input name="l_id" type=checkbox class=checkbox value=Y> |.$locale->text('ID');
  • push @a, qq|<input name="l_$form->{db}number" type=checkbox class=checkbox value=Y> |.$locale->text($label . ' Number');
  • push @a, qq|<input name="l_name" type=checkbox class=checkbox value=Y $form->{l_name}> |.$locale->text('Company Name');
  • push @a, qq|<input name="l_contact" type=checkbox class=checkbox value=Y $form->{l_contact}> |.$locale->text('Contact');
  • push @a, qq|<input name="l_email" type=checkbox class=checkbox value=Y $form->{l_email}> |.$locale->text('E-mail');
  • push @a, qq|<input name="l_address" type=checkbox class=checkbox value=Y> |.$locale->text('Address');
  • push @a, qq|<input name="l_city" type=checkbox class=checkbox value=Y> |.$locale->text('City');
  • push @a, qq|<input name="l_state" type=checkbox class=checkbox value=Y> |.$locale->text('State/Province');
  • push @a, qq|<input name="l_zipcode" type=checkbox class=checkbox value=Y> |.$locale->text('Zip/Postal Code');
  • push @a, qq|<input name="l_country" type=checkbox class=checkbox value=Y> |.$locale->text('Country');
  • push @a, qq|<input name="l_phone" type=checkbox class=checkbox value=Y $form->{l_phone}> |.$locale->text('Phone');
  • push @a, qq|<input name="l_fax" type=checkbox class=checkbox value=Y> |.$locale->text('Fax');
  • push @a, qq|<input name="l_cc" type=checkbox class=checkbox value=Y> |.$locale->text('Cc');
  • if ($myconfig{role} =~ /(admin|manager)/) {
  • push @a, qq|<input name="l_bcc" type=checkbox class=checkbox value=Y> |.$locale->text('Bcc');
  • }
  • push @a, qq|<input name="l_notes" type=checkbox class=checkbox value=Y> |.$locale->text('Notes');
  • push @a, qq|<input name="l_discount" type=checkbox class=checkbox value=Y> |.$locale->text('Discount');
  • push @a, qq|<input name="l_taxaccount" type=checkbox class=checkbox value=Y> |.$locale->text('Tax Account');
  • push @a, qq|<input name="l_taxnumber" type=checkbox class=checkbox value=Y> |.$locale->text('Tax Number');
  • if ($form->{db} eq 'customer') {
  • push @a, qq|<input name="l_employee" type=checkbox class=checkbox value=Y> |.$locale->text('Salesperson');
  • push @a, qq|<input name="l_manager" type=checkbox class=checkbox value=Y> |.$locale->text('Manager');
  • push @a, qq|<input name="l_pricegroup" type=checkbox class=checkbox value=Y> |.$locale->text('Pricegroup');
  • } else {
  • push @a, qq|<input name="l_employee" type=checkbox class=checkbox value=Y> |.$locale->text('Employee');
  • push @a, qq|<input name="l_manager" type=checkbox class=checkbox value=Y> |.$locale->text('Manager');
  • push @a, qq|<input name="l_gifi_accno" type=checkbox class=checkbox value=Y> |.$locale->text('GIFI');
  • }
  • push @a, qq|<input name="l_sic_code" type=checkbox class=checkbox value=Y> |.$locale->text('SIC');
  • push @a, qq|<input name="l_iban" type=checkbox class=checkbox value=Y> |.$locale->text('IBAN');
  • push @a, qq|<input name="l_bic" type=checkbox class=checkbox value=Y> |.$locale->text('BIC');
  • push @a, qq|<input name="l_business" type=checkbox class=checkbox value=Y> |.$locale->text('Type of Business');
  • push @a, qq|<input name="l_terms" type=checkbox class=checkbox value=Y> |.$locale->text('Terms');
  • push @a, qq|<input name="l_language" type=checkbox class=checkbox value=Y> |.$locale->text('Language');
  • push @a, qq|<input name="l_startdate" type=checkbox class=checkbox value=Y> |.$locale->text('Startdate');
  • push @a, qq|<input name="l_enddate" type=checkbox class=checkbox value=Y> |.$locale->text('Enddate');
  • $include = qq|
  • <tr>
  • <th align=right nowrap>|.$locale->text('Include in Report').qq|</th>
  • <td>
  • <table>
  • |;
  • while (@a) {
  • $include .= qq|<tr>\n|;
  • for (1 .. 5) {
  • $include .= qq|<td nowrap>|. shift @a;
  • $include .= qq|</td>\n|;
  • }
  • $include .= qq|</tr>\n|;
  • }
  • $include .= qq|
  • </table>
  • </td>
  • </tr>
  • |;
  • }
  • sub search {
  • # $locale->text('Customers')
  • # $locale->text('Vendors')
  • $form->{title} = $locale->text('Search') unless $form->{title};
  • for (qw(name contact phone email)) { $form->{"l_$_"} = 'checked' }
  • $form->{nextsub} = "list_names";
  • $orphan = qq|
  • <tr>
  • <td></td>
  • <td><input name=status class=radio type=radio value=all checked>&nbsp;|.$locale->text('All').qq|
  • <input name=status class=radio type=radio value=active>&nbsp;|.$locale->text('Active').qq|
  • <input name=status class=radio type=radio value=inactive>&nbsp;|.$locale->text('Inactive').qq|
  • <input name=status class=radio type=radio value=orphaned>&nbsp;|.$locale->text('Orphaned').qq|</td>
  • </tr>
  • |;
  • &transactions;
  • &include_in_report;
  • &search_name;
  • if ($form->{lynx}) {
  • require "bin/menu.pl";
  • &menubar;
  • }
  • print qq|
  • </body>
  • </html>
  • |;
  • }
  • sub search_name {
  • $label = ucfirst $form->{db};
  • if ($form->{db} eq 'customer') {
  • $employee = qq|
  • <th align=right nowrap>|.$locale->text('Salesperson').qq|</th>
  • <td><input name=employee size=32></td>
  • |;
  • }
  • if ($form->{db} eq 'vendor') {
  • $employee = qq|
  • <th align=right nowrap>|.$locale->text('Employee').qq|</th>
  • <td><input name=employee size=32></td>
  • |;
  • }
  • $form->header;
  • print qq|
  • <body>
  • <form method=post action=$form->{script}>
  • <input type=hidden name=db value=$form->{db}>
  • <table width=100%>
  • <tr>
  • <th class=listtop>$form->{title}</th>
  • </tr>
  • <tr height="5"></tr>
  • <tr valign=top>
  • <td>
  • <table>
  • <tr valign=top>
  • <td>
  • <table>
  • <tr>
  • <th align=right nowrap>|.$locale->text('Company Name').qq|</th>
  • <td><input name=name size=32></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('Contact').qq|</th>
  • <td><input name=contact size=32></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('E-mail').qq|</th>
  • <td><input name=email size=32></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('Phone').qq|</th>
  • <td><input name=phone size=20></td>
  • </tr>
  • <tr>
  • $employee
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('Notes').qq|</th>
  • <td colspan=3><textarea name=notes rows=3 cols=32></textarea></td>
  • </tr>
  • </table>
  • </td>
  • <td>
  • <table>
  • <tr>
  • <th align=right nowrap>|.$locale->text($label . ' Number').qq|</th>
  • <td><input name=$form->{db}number size=32></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('Address').qq|</th>
  • <td><input name=address size=32></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('City').qq|</th>
  • <td><input name=city size=32></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('State/Province').qq|</th>
  • <td><input name=state size=32></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('Zip/Postal Code').qq|</th>
  • <td><input name=zipcode size=10></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('Country').qq|</th>
  • <td><input name=country size=32></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('Startdate').qq|</th>
  • <td>|.$locale->text('From').qq| <input name=startdatefrom size=11 title="$myconfig{dateformat}"> |.$locale->text('To').qq| <input name=startdateto size=11 title="$myconfig{dateformat}"></td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • <tr>
  • <td>
  • <table>
  • $orphan
  • $transactions
  • $include
  • </table>
  • </td>
  • </tr>
  • <tr>
  • <td><hr size=3 noshade></td>
  • </tr>
  • </table>
  • <input type="hidden" name="nextsub" value="$form->{nextsub}">
  • <input type="hidden" name="path" value="$form->{path}">
  • <input type="hidden" name="login" value="$form->{login}">
  • <input type="hidden" name="sessionid" value="$form->{sessionid}">
  • <br>
  • <button type="submit" class="submit" name="action" value="continue">|.$locale->text('Continue').qq|</button>
  • </form>
  • |;
  • }
  • sub list_names {
  • CT->search(\%myconfig, \%$form);
  • $href = "$form->{script}?action=list_names&direction=$form->{direction}&oldsort=$form->{oldsort}&db=$form->{db}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&status=$form->{status}&l_subtotal=$form->{l_subtotal}";
  • $form->sort_order();
  • $callback = "$form->{script}?action=list_names&direction=$form->{direction}&oldsort=$form->{oldsort}&db=$form->{db}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&status=$form->{status}&l_subtotal=$form->{l_subtotal}";
  • @columns = $form->sort_columns(id, name, "$form->{db}number", address,
  • city, state, zipcode, country, contact,
  • phone, fax, email, cc, bcc, employee,
  • manager, notes, discount, terms,
  • taxaccount, taxnumber, gifi_accno, sic_code, business,
  • pricegroup, language, iban, bic,
  • startdate, enddate,
  • invnumber, invamount, invtax, invtotal,
  • ordnumber, ordamount, ordtax, ordtotal,
  • quonumber, quoamount, quotax, quototal);
  • unshift @columns, "ndx";
  • $form->{l_invnumber} = "Y" if $form->{l_transnumber};
  • foreach $item (qw(inv ord quo)) {
  • if ($form->{"l_${item}number"}) {
  • for (qw(amount tax total)) { $form->{"l_$item$_"} = $form->{"l_$_"} }
  • $removeemployee = 1;
  • $openclosed = 1;
  • }
  • }
  • $form->{open} = $form->{closed} = "" if !$openclosed;
  • foreach $item (@columns) {
  • if ($form->{"l_$item"} eq "Y") {
  • push @column_index, $item;
  • # add column to href and callback
  • $callback .= "&l_$item=Y";
  • $href .= "&l_$item=Y";
  • }
  • }
  • foreach $item (qw(amount tax total transnumber)) {
  • if ($form->{"l_$item"} eq "Y") {
  • $callback .= "&l_$item=Y";
  • $href .= "&l_$item=Y";
  • }
  • }
  • if ($form->{status} eq 'all') {
  • $option = $locale->text('All');
  • }
  • if ($form->{status} eq 'orphaned') {
  • $option = $locale->text('Orphaned');
  • }
  • if ($form->{status} eq 'active') {
  • $option = $locale->text('Active');
  • }
  • if ($form->{status} eq 'inactive') {
  • $option = $locale->text('Inactive');
  • }
  • if ($form->{name}) {
  • $callback .= "&name=".$form->escape($form->{name},1);
  • $href .= "&name=".$form->escape($form->{name});
  • $option .= "\n<br>".$locale->text('Name')." : $form->{name}";
  • }
  • if ($form->{address}) {
  • $callback .= "&address=".$form->escape($form->{address},1);
  • $href .= "&address=".$form->escape($form->{address});
  • $option .= "\n<br>".$locale->text('Address')." : $form->{address}";
  • }
  • if ($form->{city}) {
  • $callback .= "&city=".$form->escape($form->{city},1);
  • $href .= "&city=".$form->escape($form->{city});
  • $option .= "\n<br>".$locale->text('City')." : $form->{city}";
  • }
  • if ($form->{state}) {
  • $callback .= "&state=".$form->escape($form->{state},1);
  • $href .= "&state=".$form->escape($form->{state});
  • $option .= "\n<br>".$locale->text('State')." : $form->{state}";
  • }
  • if ($form->{zipcode}) {
  • $callback .= "&zipcode=".$form->escape($form->{zipcode},1);
  • $href .= "&zipcode=".$form->escape($form->{zipcode});
  • $option .= "\n<br>".$locale->text('Zip/Postal Code')." : $form->{zipcode}";
  • }
  • if ($form->{country}) {
  • $callback .= "&country=".$form->escape($form->{country},1);
  • $href .= "&country=".$form->escape($form->{country});
  • $option .= "\n<br>".$locale->text('Country')." : $form->{country}";
  • }
  • if ($form->{contact}) {
  • $callback .= "&contact=".$form->escape($form->{contact},1);
  • $href .= "&contact=".$form->escape($form->{contact});
  • $option .= "\n<br>".$locale->text('Contact')." : $form->{contact}";
  • }
  • if ($form->{employee}) {
  • $callback .= "&employee=".$form->escape($form->{employee},1);
  • $href .= "&employee=".$form->escape($form->{employee});
  • $option .= "\n<br>";
  • if ($form->{db} eq 'customer') {
  • $option .= $locale->text('Salesperson');
  • }
  • if ($form->{db} eq 'vendor') {
  • $option .= $locale->text('Employee');
  • }
  • $option .= " : $form->{employee}";
  • }
  • $fromdate = "";
  • $todate = "";
  • if ($form->{startdatefrom}) {
  • $callback .= "&startdatefrom=$form->{startdatefrom}";
  • $href .= "&startdatefrom=$form->{startdatefrom}";
  • $fromdate = $locale->date(\%myconfig, $form->{startdatefrom}, 1);
  • }
  • if ($form->{startdateto}) {
  • $callback .= "&startdateto=$form->{startdateto}";
  • $href .= "&startdateto=$form->{startdateto}";
  • $todate = $locale->date(\%myconfig, $form->{startdateto}, 1);
  • }
  • if ($fromdate || $todate) {
  • $option .= "\n<br>".$locale->text('Startdate')." $fromdate - $todate";
  • }
  • if ($form->{notes}) {
  • $callback .= "&notes=".$form->escape($form->{notes},1);
  • $href .= "&notes=".$form->escape($form->{notes});
  • $option .= "\n<br>".$locale->text('Notes')." : $form->{notes}";
  • }
  • if ($form->{"$form->{db}number"}) {
  • $callback .= qq|&$form->{db}number=|.$form->escape($form->{"$form->{db}number"},1);
  • $href .= "&$form->{db}number=".$form->escape($form->{"$form->{db}number"});
  • $option .= "\n<br>".$locale->text('Number').qq| : $form->{"$form->{db}number"}|;
  • }
  • if ($form->{phone}) {
  • $callback .= "&phone=".$form->escape($form->{phone},1);
  • $href .= "&phone=".$form->escape($form->{phone});
  • $option .= "\n<br>".$locale->text('Phone')." : $form->{phone}";
  • }
  • if ($form->{email}) {
  • $callback .= "&email=".$form->escape($form->{email},1);
  • $href .= "&email=".$form->escape($form->{email});
  • $option .= "\n<br>".$locale->text('E-mail')." : $form->{email}";
  • }
  • if ($form->{transdatefrom}) {
  • $callback .= "&transdatefrom=$form->{transdatefrom}";
  • $href .= "&transdatefrom=$form->{transdatefrom}";
  • $option .= "\n<br>" if ($option);
  • $option .= $locale->text('From')."&nbsp;".$locale->date(\%myconfig, $form->{transdatefrom}, 1);
  • }
  • if ($form->{transdateto}) {
  • $callback .= "&transdateto=$form->{transdateto}";
  • $href .= "&transdateto=$form->{transdateto}";
  • if ($form->{transdatefrom}) {
  • $option .= " ";
  • } else {
  • $option .= "\n<br>" if ($option);
  • }
  • $option .= $locale->text('To')."&nbsp;".$locale->date(\%myconfig, $form->{transdateto}, 1);
  • }
  • if ($form->{open}) {
  • $callback .= "&open=$form->{open}";
  • $href .= "&open=$form->{open}";
  • $option .= "\n<br>" if ($option);
  • $option .= $locale->text('Open');
  • }
  • if ($form->{closed}) {
  • $callback .= "&closed=$form->{closed}";
  • $href .= "&closed=$form->{closed}";
  • $option .= "\n<br>" if ($option);
  • $option .= $locale->text('Closed');
  • }
  • $form->{callback} = "$callback&sort=$form->{sort}";
  • $callback = $form->escape($form->{callback});
  • $column_header{ndx} = qq|<th class=listheading>&nbsp;</th>|;
  • $column_header{id} = qq|<th class=listheading>|.$locale->text('ID').qq|</th>|;
  • $column_header{"$form->{db}number"} = qq|<th><a class=listheading href=$href&sort=$form->{db}number>|.$locale->text('Number').qq|</a></th>|;
  • $column_header{name} = qq|<th><a class=listheading href=$href&sort=name>|.$locale->text('Name').qq|</a></th>|;
  • $column_header{address} = qq|<th class=listheading>|.$locale->text('Address').qq|</th>|;
  • $column_header{city} = qq|<th><a class=listheading href=$href&sort=city>|.$locale->text('City').qq|</a></th>|;
  • $column_header{state} = qq|<th><a class=listheading href=$href&sort=state>|.$locale->text('State/Province').qq|</a></th>|;
  • $column_header{zipcode} = qq|<th><a class=listheading href=$href&sort=zipcode>|.$locale->text('Zip/Postal Code').qq|</a></th>|;
  • $column_header{country} = qq|<th><a class=listheading href=$href&sort=country>|.$locale->text('Country').qq|</a></th>|;
  • $column_header{contact} = qq|<th><a class=listheading href=$href&sort=contact>|.$locale->text('Contact').qq|</a></th>|;
  • $column_header{phone} = qq|<th><a class=listheading href=$href&sort=phone>|.$locale->text('Phone').qq|</a></th>|;
  • $column_header{fax} = qq|<th><a class=listheading href=$href&sort=fax>|.$locale->text('Fax').qq|</a></th>|;
  • $column_header{email} = qq|<th><a class=listheading href=$href&sort=email>|.$locale->text('E-mail').qq|</a></th>|;
  • $column_header{cc} = qq|<th><a class=listheading href=$href&sort=cc>|.$locale->text('Cc').qq|</a></th>|;
  • $column_header{bcc} = qq|<th><a class=listheading href=$href&sort=cc>|.$locale->text('Bcc').qq|</a></th>|;
  • $column_header{notes} = qq|<th><a class=listheading href=$href&sort=notes>|.$locale->text('Notes').qq|</a></th>|;
  • $column_header{discount} = qq|<th class=listheading>%</th>|;
  • $column_header{terms} = qq|<th class=listheading>|.$locale->text('Terms').qq|</th>|;
  • $column_header{taxnumber} = qq|<th><a class=listheading href=$href&sort=taxnumber>|.$locale->text('Tax Number').qq|</a></th>|;
  • $column_header{taxaccount} = qq|<th class=listheading>|.$locale->text('Tax Account').qq|</th>|;
  • $column_header{gifi_accno} = qq|<th><a class=listheading href=$href&sort=gifi_accno>|.$locale->text('GIFI').qq|</a></th>|;
  • $column_header{sic_code} = qq|<th><a class=listheading href=$href&sort=sic_code>|.$locale->text('SIC').qq|</a></th>|;
  • $column_header{business} = qq|<th><a class=listheading href=$href&sort=business>|.$locale->text('Type of Business').qq|</a></th>|;
  • $column_header{iban} = qq|<th class=listheading>|.$locale->text('IBAN').qq|</th>|;
  • $column_header{bic} = qq|<th class=listheading>|.$locale->text('BIC').qq|</th>|;
  • $column_header{startdate} = qq|<th><a class=listheading href=$href&sort=startdate>|.$locale->text('Startdate').qq|</a></th>|;
  • $column_header{enddate} = qq|<th><a class=listheading href=$href&sort=enddate>|.$locale->text('Enddate').qq|</a></th>|;
  • $column_header{invnumber} = qq|<th><a class=listheading href=$href&sort=invnumber>|.$locale->text('Invoice').qq|</a></th>|;
  • $column_header{ordnumber} = qq|<th><a class=listheading href=$href&sort=ordnumber>|.$locale->text('Order').qq|</a></th>|;
  • $column_header{quonumber} = qq|<th><a class=listheading href=$href&sort=quonumber>|.$locale->text('Quotation').qq|</a></th>|;
  • if ($form->{db} eq 'customer') {
  • $column_header{employee} = qq|<th><a class=listheading href=$href&sort=employee>|.$locale->text('Salesperson').qq|</a></th>|;
  • } else {
  • $column_header{employee} = qq|<th><a class=listheading href=$href&sort=employee>|.$locale->text('Employee').qq|</a></th>|;
  • }
  • $column_header{manager} = qq|<th><a class=listheading href=$href&sort=manager>|.$locale->text('Manager').qq|</a></th>|;
  • $column_header{pricegroup} = qq|<th><a class=listheading href=$href&sort=pricegroup>|.$locale->text('Pricegroup').qq|</a></th>|;
  • $column_header{language} = qq|<th><a class=listheading href=$href&sort=language>|.$locale->text('Language').qq|</a></th>|;
  • $amount = $locale->text('Amount');
  • $tax = $locale->text('Tax');
  • $total = $locale->text('Total');
  • $column_header{invamount} = qq|<th class=listheading>$amount</th>|;
  • $column_header{ordamount} = qq|<th class=listheading>$amount</th>|;
  • $column_header{quoamount} = qq|<th class=listheading>$amount</th>|;
  • $column_header{invtax} = qq|<th class=listheading>$tax</th>|;
  • $column_header{ordtax} = qq|<th class=listheading>$tax</th>|;
  • $column_header{quotax} = qq|<th class=listheading>$tax</th>|;
  • $column_header{invtotal} = qq|<th class=listheading>$total</th>|;
  • $column_header{ordtotal} = qq|<th class=listheading>$total</th>|;
  • $column_header{quototal} = qq|<th class=listheading>$total</th>|;
  • if ($form->{status}) {
  • $label = ucfirst $form->{db}."s";
  • $form->{title} = $locale->text($label);
  • } else {
  • $label = ucfirst $form->{db};
  • $form->{title} = $locale->text($label ." Transactions");
  • }
  • $form->header;
  • print qq|
  • <body>
  • <table width=100%>
  • <tr>
  • <th class=listtop>$form->{title}</th>
  • </tr>
  • <tr height="5"></tr>
  • <tr>
  • <td>$option</td>
  • </tr>
  • <tr>
  • <td>
  • <table width=100%>
  • <tr class=listheading>
  • |;
  • for (@column_index) { print "$column_header{$_}\n" }
  • print qq|
  • </tr>
  • |;
  • $ordertype = ($form->{db} eq 'customer') ? 'sales_order' : 'purchase_order';
  • $quotationtype = ($form->{db} eq 'customer') ? 'sales_quotation' : 'request_quotation';
  • $subtotal = 0;
  • $i = 0;
  • foreach $ref (@{ $form->{CT} }) {
  • if ($ref->{$form->{sort}} ne $sameitem && $form->{l_subtotal}) {
  • # print subtotal
  • if ($subtotal) {
  • for (@column_index) { $column_data{$_} = "<td>&nbsp;</td>" }
  • &list_subtotal;
  • }
  • }
  • if ($ref->{id} eq $sameid) {
  • for (@column_index) { $column_data{$_} = "<td>&nbsp;</td>" }
  • } else {
  • $i++;
  • $ref->{notes} =~ s/\r?\n/<br>/g;
  • for (@column_index) { $column_data{$_} = "<td>$ref->{$_}&nbsp;</td>" }
  • $column_data{ndx} = "<td align=right>$i</td>";
  • if ($ref->{$form->{sort}} eq $sameitem) {
  • $column_data{$form->{sort}} = "<td>&nbsp;</td>";
  • }
  • $column_data{address} = "<td>$ref->{address1} $ref->{address2}&nbsp;</td>";
  • $column_data{name} = "<td><a href=$form->{script}?action=edit&id=$ref->{id}&db=$form->{db}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&status=$form->{status}&callback=$callback>$ref->{name}&nbsp;</td>";
  • $email = "";
  • if ($form->{sort} =~ /(email|cc)/) {
  • if ($ref->{$form->{sort}} ne $sameitem) {
  • $email = 1;
  • }
  • } else {
  • $email = 1;
  • }
  • if ($email) {
  • foreach $item (qw(email cc bcc)) {
  • if ($ref->{$item}) {
  • $email = $ref->{$item};
  • $email =~ s/</\&lt;/;
  • $email =~ s/>/\&gt;/;
  • $column_data{$item} = qq|<td><a href="mailto:$ref->{$item}">$email</a></td>|;
  • }
  • }
  • }
  • }
  • if ($ref->{formtype} eq 'invoice') {
  • $column_data{invnumber} = "<td><a href=$ref->{module}.pl?action=edit&id=$ref->{invid}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$ref->{invnumber}&nbsp;</td>";
  • $column_data{invamount} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{netamount}, 2, "&nbsp;")."</td>";
  • $column_data{invtax} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{amount} - $ref->{netamount}, 2, "&nbsp;")."</td>";
  • $column_data{invtotal} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{amount}, 2, "&nbsp;")."</td>";
  • $invamountsubtotal += $ref->{netamount};
  • $invtaxsubtotal += ($ref->{amount} - $ref->{netamount});
  • $invtotalsubtotal += $ref->{amount};
  • $subtotal = 1;
  • }
  • if ($ref->{formtype} eq 'order') {
  • $column_data{ordnumber} = "<td><a href=$ref->{module}.pl?action=edit&id=$ref->{invid}&type=$ordertype&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$ref->{ordnumber}&nbsp;</td>";
  • $column_data{ordamount} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{netamount}, 2, "&nbsp;")."</td>";
  • $column_data{ordtax} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{amount} - $ref->{netamount}, 2, "&nbsp;")."</td>";
  • $column_data{ordtotal} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{amount}, 2, "&nbsp;")."</td>";
  • $ordamountsubtotal += $ref->{netamount};
  • $ordtaxsubtotal += ($ref->{amount} - $ref->{netamount});
  • $ordtotalsubtotal += $ref->{amount};
  • $subtotal = 1;
  • }
  • if ($ref->{formtype} eq 'quotation') {
  • $column_data{quonumber} = "<td><a href=$ref->{module}.pl?action=edit&id=$ref->{invid}&type=$quotationtype&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$ref->{quonumber}&nbsp;</td>";
  • $column_data{quoamount} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{netamount}, 2, "&nbsp;")."</td>";
  • $column_data{quotax} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{amount} - $ref->{netamount}, 2, "&nbsp;")."</td>";
  • $column_data{quototal} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{amount}, 2, "&nbsp;")."</td>";
  • $quoamountsubtotal += $ref->{netamount};
  • $quotaxsubtotal += ($ref->{amount} - $ref->{netamount});
  • $quototalsubtotal += $ref->{amount};
  • $subtotal = 1;
  • }
  • if ($sameid ne "$ref->{id}") {
  • if ($form->{l_discount}) {
  • $column_data{discount} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{discount} * 100, "", "&nbsp;")."</td>";
  • }
  • if ($form->{l_terms}) {
  • $column_data{terms} = "<td align=right>".$form->format_amount(\%myconfig, $ref->{terms}, "", "&nbsp;")."</td>";
  • }
  • }
  • $j++; $j %= 2;
  • print "
  • <tr class=listrow$j>
  • ";
  • for (@column_index) { print "$column_data{$_}\n" }
  • print qq|
  • </tr>
  • |;
  • $sameitem = "$ref->{$form->{sort}}";
  • $sameid = $ref->{id};
  • }
  • if ($form->{l_subtotal} && $subtotal) {
  • for (@column_index) { $column_data{$_} = "<td>&nbsp;</td>" }
  • &list_subtotal;
  • }
  • $i = 1;
  • if ($myconfig{acs} !~ /AR--AR/) {
  • if ($form->{db} eq 'customer') {
  • $button{'AR--Customers--Add Customer'}{code} = qq|<button class="submit" type="submit" name="action" value="add_customer">|.$locale->text('Add Customer').qq|</button> |;
  • $button{'AR--Customers--Add Customer'}{order} = $i++;
  • }
  • }
  • if ($myconfig{acs} !~ /AP--AP/) {
  • if ($form->{db} eq 'vendor') {
  • $button{'AP--Vendors--Add Vendor'}{code} = qq|<button class="submit" type="submit" name="action" value="add_vendor">|.$locale->text('Add Vendor').qq|</button> |;
  • $button{'AP--Vendors--Add Vendor'}{order} = $i++;
  • }
  • }
  • foreach $item (split /;/, $myconfig{acs}) {
  • delete $button{$item};
  • }
  • print qq|
  • </table>
  • </td>
  • </tr>
  • <tr>
  • <td><hr size=3 noshade></td>
  • </tr>
  • </table>
  • <br>
  • <form method=post action=$form->{script}>
  • |;
  • $form->hide_form(qw(callback db path login sessionid));
  • if ($form->{status}) {
  • foreach $item (sort { $a->{order} <=> $b->{order} } %button) {
  • print $item->{code};
  • }
  • }
  • if ($form->{lynx}) {
  • require "bin/menu.pl";
  • &menubar;
  • }
  • print qq|
  • </form>
  • </body>
  • </html>
  • |;
  • }
  • sub list_subtotal {
  • $column_data{invamount} = "<td align=right>".$form->format_amount(\%myconfig, $invamountsubtotal, 2, "&nbsp;")."</td>";
  • $column_data{invtax} = "<td align=right>".$form->format_amount(\%myconfig, $invtaxsubtotal, 2, "&nbsp;")."</td>";
  • $column_data{invtotal} = "<td align=right>".$form->format_amount(\%myconfig, $invtotalsubtotal, 2, "&nbsp;")."</td>";
  • $invamountsubtotal = 0;
  • $invtaxsubtotal = 0;
  • $invtotalsubtotal = 0;
  • $column_data{ordamount} = "<td align=right>".$form->format_amount(\%myconfig, $ordamountsubtotal, 2, "&nbsp;")."</td>";
  • $column_data{ordtax} = "<td align=right>".$form->format_amount(\%myconfig, $ordtaxsubtotal, 2, "&nbsp;")."</td>";
  • $column_data{ordtotal} = "<td align=right>".$form->format_amount(\%myconfig, $ordtotalsubtotal, 2, "&nbsp;")."</td>";
  • $ordamountsubtotal = 0;
  • $ordtaxsubtotal = 0;
  • $ordtotalsubtotal = 0;
  • $column_data{quoamount} = "<td align=right>".$form->format_amount(\%myconfig, $quoamountsubtotal, 2, "&nbsp;")."</td>";
  • $column_data{quotax} = "<td align=right>".$form->format_amount(\%myconfig, $quotaxsubtotal, 2, "&nbsp;")."</td>";
  • $column_data{quototal} = "<td align=right>".$form->format_amount(\%myconfig, $quototalsubtotal, 2, "&nbsp;")."</td>";
  • $quoamountsubtotal = 0;
  • $quotaxsubtotal = 0;
  • $quototalsubtotal = 0;
  • print "
  • <tr class=listsubtotal>
  • ";
  • for (@column_index) { print "$column_data{$_}\n" }
  • print qq|
  • </tr>
  • |;
  • }
  • sub list_history {
  • CT->get_history(\%myconfig, \%$form);
  • $href = "$form->{script}?action=list_history&direction=$form->{direction}&oldsort=$form->{oldsort}&db=$form->{db}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&type=$form->{type}&transdatefrom=$form->{transdatefrom}&transdateto=$form->{transdateto}&history=$form->{history}";
  • $form->sort_order();
  • $callback = "$form->{script}?action=list_history&direction=$form->{direction}&oldsort=$form->{oldsort}&db=$form->{db}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&type=$form->{type}&transdatefrom=$form->{transdatefrom}&transdateto=$form->{transdateto}&history=$form->{history}";
  • $form->{l_fxsellprice} = $form->{l_curr};
  • @columns = $form->sort_columns(partnumber, description, qty, unit, sellprice, fxsellprice, curr, discount, deliverydate, projectnumber, serialnumber);
  • if ($form->{history} eq 'summary') {
  • @columns = $form->sort_columns(partnumber, description, qty, unit, sellprice, curr);
  • }
  • foreach $item (@columns) {
  • if ($form->{"l_$item"} eq "Y") {
  • push @column_index, $item;
  • # add column to href and callback
  • $callback .= "&l_$item=Y";
  • $href .= "&l_$item=Y";
  • }
  • }
  • if ($form->{history} eq 'detail') {
  • $option = $locale->text('Detail');
  • }
  • if ($form->{history} eq 'summary') {
  • $option .= $locale->text('Summary');
  • }
  • if ($form->{name}) {
  • $callback .= "&name=".$form->escape($form->{name},1);
  • $href .= "&name=".$form->escape($form->{name});
  • $option .= "\n<br>".$locale->text('Name')." : $form->{name}";
  • }
  • if ($form->{contact}) {
  • $callback .= "&contact=".$form->escape($form->{contact},1);
  • $href .= "&contact=".$form->escape($form->{contact});
  • $option .= "\n<br>".$locale->text('Contact')." : $form->{contact}";
  • }
  • if ($form->{"$form->{db}number"}) {
  • $callback .= qq|&$form->{db}number=|.$form->escape($form->{"$form->{db}number"},1);
  • $href .= "&$form->{db}number=".$form->escape($form->{"$form->{db}number"});
  • $option .= "\n<br>".$locale->text('Number').qq| : $form->{"$form->{db}number"}|;
  • }
  • if ($form->{email}) {
  • $callback .= "&email=".$form->escape($form->{email},1);
  • $href .= "&email=".$form->escape($form->{email});
  • $option .= "\n<br>".$locale->text('E-mail')." : $form->{email}";
  • }
  • if ($form->{transdatefrom}) {
  • $callback .= "&transdatefrom=$form->{transdatefrom}";
  • $href .= "&transdatefrom=$form->{transdatefrom}";
  • $option .= "\n<br>" if ($option);
  • $option .= $locale->text('From')."&nbsp;".$locale->date(\%myconfig, $form->{transdatefrom}, 1);
  • }
  • if ($form->{transdateto}) {
  • $callback .= "&transdateto=$form->{transdateto}";
  • $href .= "&transdateto=$form->{transdateto}";
  • if ($form->{transdatefrom}) {
  • $option .= " ";
  • } else {
  • $option .= "\n<br>" if ($option);
  • }
  • $option .= $locale->text('To')."&nbsp;".$locale->date(\%myconfig, $form->{transdateto}, 1);
  • }
  • if ($form->{open}) {
  • $callback .= "&open=$form->{open}";
  • $href .= "&open=$form->{open}";
  • $option .= "\n<br>" if ($option);
  • $option .= $locale->text('Open');
  • }
  • if ($form->{closed}) {
  • $callback .= "&closed=$form->{closed}";
  • $href .= "&closed=$form->{closed}";
  • $option .= "\n<br>" if ($option);
  • $option .= $locale->text('Closed');
  • }
  • $form->{callback} = "$callback&sort=$form->{sort}";
  • $callback = $form->escape($form->{callback});
  • $column_header{partnumber} = qq|<th><a class=listheading href=$href&sort=partnumber>|.$locale->text('Part Number').qq|</a></th>|;
  • $column_header{description} = qq|<th><a class=listheading href=$href&sort=description>|.$locale->text('Description').qq|</a></th>|;
  • if ($form->{history} eq 'summary') {
  • $column_header{sellprice} = qq|<th class=listheading>|.$locale->text('Total').qq|</th>|;
  • } else {
  • $column_header{sellprice} = qq|<th class=listheading>|.$locale->text('Sell Price').qq|</th>|;
  • }
  • $column_header{fxsellprice} = qq|<th>&nbsp;</th>|;
  • $column_header{curr} = qq|<th class=listheading>|.$locale->text('Curr').qq|</th>|;
  • $column_header{discount} = qq|<th class=listheading>|.$locale->text('Discount').qq|</th>|;
  • $column_header{qty} = qq|<th class=listheading>|.$locale->text('Qty').qq|</th>|;
  • $column_header{unit} = qq|<th class=listheading>|.$locale->text('Unit').qq|</th>|;
  • $column_header{deliverydate} = qq|<th><a class=listheading href=$href&sort=deliverydate>|.$locale->text('Delivery Date').qq|</a></th>|;
  • $column_header{projectnumber} = qq|<th><a class=listheading href=$href&sort=projectnumber>|.$locale->text('Project Number').qq|</a></th>|;
  • $column_header{serialnumber} = qq|<th><a class=listheading href=$href&sort=serialnumber>|.$locale->text('Serial Number').qq|</a></th>|;
  • # $locale->text('Customer History')
  • # $locale->text('Vendor History')
  • $label = ucfirst $form->{db};
  • $form->{title} = $locale->text($label." History");
  • $colspan = $#column_index + 1;
  • $form->header;
  • print qq|
  • <body>
  • <table width=100%>
  • <tr>
  • <th class=listtop>$form->{title}</th>
  • </tr>
  • <tr height="5"></tr>
  • <tr>
  • <td>$option</td>
  • </tr>
  • <tr>
  • <td>
  • <table width=100%>
  • <tr class=listheading>
  • |;
  • for (@column_index) { print "$column_header{$_}\n" }
  • print qq|
  • </tr>
  • |;
  • $module = 'oe';
  • if ($form->{db} eq 'customer') {
  • $invlabel = $locale->text('Sales Invoice');
  • $ordlabel = $locale->text('Sales Order');
  • $quolabel = $locale->text('Quotation');
  • $ordertype = 'sales_order';
  • $quotationtype = 'sales_quotation';
  • if ($form->{type} eq 'invoice') {
  • $module = 'is';
  • }
  • } else {
  • $invlabel = $locale->text('Vendor Invoice');
  • $ordlabel = $locale->text('Purchase Order');
  • $quolabel = $locale->text('RFQ');
  • $ordertype = 'purchase_order';
  • $quotationtype = 'request_quotation';
  • if ($form->{type} eq 'invoice') {
  • $module = 'ir';
  • }
  • }
  • $ml = ($form->{db} eq 'vendor') ? -1 : 1;
  • foreach $ref (@{ $form->{CT} }) {
  • if ($ref->{id} ne $sameid) {
  • # print the header
  • print qq|
  • <tr class=listheading>
  • <th colspan=$colspan><a class=listheading href=$form->{script}?action=edit&id=$ref->{ctid}&db=$form->{db}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$ref->{name} $ref->{address}</a></th>
  • </tr>
  • |;
  • }
  • if ($form->{type} ne 'invoice') {
  • $ref->{fxsellprice} = $ref->{sellprice};
  • $ref->{sellprice} *= $ref->{exchangerate};
  • }
  • if ($form->{history} eq 'detail' and $ref->{invid} ne $sameinvid) {
  • # print inv, ord, quo number
  • $i++; $i %= 2;
  • print qq|
  • <tr class=listrow$i>
  • |;
  • if ($form->{type} eq 'invoice') {
  • print qq|<th align=left colspan=$colspan><a href=${module}.pl?action=edit&id=$ref->{invid}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$invlabel $ref->{invnumber} / $ref->{employee}</a></th>|;
  • }
  • if ($form->{type} eq 'order') {
  • print qq|<th align=left colspan=$colspan><a href=${module}.pl?action=edit&id=$ref->{invid}&type=$ordertype&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$ordlabel $ref->{ordnumber} / $ref->{employee}</a></th>|;
  • }
  • if ($form->{type} eq 'quotation') {
  • print qq|<th align=left colspan=$colspan><a href=${module}.pl?action=edit&id=$ref->{invid}&type=$quotationtype&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$quolabel $ref->{quonumber} / $ref->{employee}</a></th>|;
  • }
  • print qq|
  • </tr>
  • |;
  • }
  • for (@column_index) { $column_data{$_} = "<td>$ref->{$_}&nbsp;</td>" }
  • if ($form->{l_curr}) {
  • $column_data{fxsellprice} = qq|<td align=right>|.$form->format_amount(\%myconfig, $ref->{fxsellprice}, 2)."</td>";
  • }
  • $column_data{sellprice} = qq|<td align=right>|.$form->format_amount(\%myconfig, $ref->{sellprice}, 2)."</td>";
  • $column_data{qty} = qq|<td align=right>|.$form->format_amount(\%myconfig, $ref->{qty} * $ml)."</td>";
  • $column_data{discount} = qq|<td align=right>|.$form->format_amount(\%myconfig, $ref->{discount} * 100, "", "&nbsp;")."</td>";
  • $column_data{partnumber} = qq|<td><a href=ic.pl?action=edit&id=$ref->{pid}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$ref->{partnumber}</td>|;
  • $i++; $i %= 2;
  • print qq|
  • <tr class=listrow$i>
  • |;
  • for (@column_index) { print "$column_data{$_}\n" }
  • print qq|
  • </tr>
  • |;
  • $sameid = $ref->{id};
  • $sameinvid = $ref->{invid};
  • }
  • print qq|
  • </table>
  • </td>
  • </tr>
  • <tr>
  • <td><hr size=3 noshade></td>
  • </tr>
  • </table>
  • |;
  • if ($form->{lynx}) {
  • require "bin/menu.pl";
  • &menubar;
  • }
  • print qq|
  • </form>
  • </body>
  • </html>
  • |;
  • }
  • sub edit {
  • # $locale->text('Edit Customer')
  • # $locale->text('Edit Vendor')
  • CT->create_links(\%myconfig, \%$form);
  • for (keys %$form) { $form->{$_} = $form->quote($form->{$_}) }
  • $form->{title} = "Edit";
  • # format discount
  • $form->{discount} *= 100;
  • &form_header;
  • &form_footer;
  • }
  • sub form_header {
  • $form->{taxincluded} = ($form->{taxincluded}) ? "checked" : "";
  • $form->{creditlimit} = $form->format_amount(\%myconfig, $form->{creditlimit}, 0);
  • $form->{discount} = $form->format_amount(\%myconfig, $form->{discount}, "");
  • $form->{terms} = $form->format_amount(\%myconfig, $form->{terms}, "");
  • if ($myconfig{role} =~ /(admin|manager)/) {
  • $bcc = qq|
  • <tr>
  • <th align=right nowrap>|.$locale->text('Bcc').qq|</th>
  • <td><input name=bcc size=35 value="$form->{bcc}"></td>
  • </tr>
  • |;
  • }
  • if ($form->{currencies}) {
  • # currencies
  • for (split /:/, $form->{currencies}) { $form->{selectcurrency} .= "<option>$_\n" }
  • $form->{selectcurrency} =~ s/option>($form->{curr})/option selected>$1/;
  • $currency = qq|
  • <th>|.$locale->text('Currency').qq|</th>
  • <td><select name=curr>$form->{selectcurrency}</select></td>
  • |;
  • }
  • foreach $item (split / /, $form->{taxaccounts}) {
  • if ($form->{tax}{$item}{taxable}) {
  • $taxable .= qq| <input name="tax_$item" value=1 class=checkbox type=checkbox checked>&nbsp;<b>$form->{tax}{$item}{description}</b>|;
  • } else {
  • $taxable .= qq| <input name="tax_$item" value=1 class=checkbox type=checkbox>&nbsp;<b>$form->{tax}{$item}{description}</b>|;
  • }
  • }
  • if ($taxable) {
  • $tax = qq|
  • <tr>
  • <th align=right>|.$locale->text('Taxable').qq|</th>
  • <td colspan=5>
  • <table>
  • <tr>
  • <td>$taxable</td>
  • <td><input name=taxincluded class=checkbox type=checkbox value=1 $form->{taxincluded}></td>
  • <th align=left>|.$locale->text('Tax Included').qq|</th>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • |;
  • }
  • $typeofbusiness = qq|
  • <th></th>
  • <td></td>
  • |;
  • if (@{ $form->{all_business} }) {
  • $form->{selectbusiness} = qq|<option>\n|;
  • for (@{ $form->{all_business} }) { $form->{selectbusiness} .= qq|<option value="$_->{description}--$_->{id}">$_->{description}\n| }
  • $form->{selectbusiness} =~ s/(<option value="\Q$form->{business}--$form->{business_id}\E")>/$1 selected>/;
  • $typeofbusiness = qq|
  • <th align=right>|.$locale->text('Type of Business').qq|</th>
  • <td><select name=business>$form->{selectbusiness}</select></td>
  • |;
  • }
  • $pricegroup = qq|
  • <th></th>
  • <td></td>
  • |;
  • if (@{ $form->{all_pricegroup} } && $form->{db} eq 'customer') {
  • $form->{selectpricegroup} = qq|<option>\n|;
  • for (@{ $form->{all_pricegroup} }) { $form->{selectpricegroup} .= qq|<option value="$_->{pricegroup}--$_->{id}">$_->{pricegroup}\n| }
  • $form->{selectpricegroup} =~ s/(<option value="\Q$form->{pricegroup}--$form->{pricegroup_id}\E")/$1 selected/;
  • $pricegroup = qq|
  • <th align=right>|.$locale->text('Pricegroup').qq|</th>
  • <td><select name=pricegroup>$form->{selectpricegroup}</select></td>
  • |;
  • }
  • $lang = qq|
  • <th></th>
  • <td></td>
  • |;
  • if (@{ $form->{all_language} }) {
  • $form->{selectlanguage} = qq|<option>\n|;
  • for (@{ $form->{all_language} }) { $form->{selectlanguage} .= qq|<option value="$_->{description}--$_->{code}">$_->{description}\n| }
  • $form->{selectlanguage} =~ s/(<option value="\Q$form->{language}--$form->{language_code}\E")/$1 selected/;
  • $lang = qq|
  • <th align=right>|.$locale->text('Language').qq|</th>
  • <td><select name=language>$form->{selectlanguage}</select></td>
  • |;
  • }
  • $employeelabel = $locale->text('Salesperson');
  • $form->{selectemployee} = qq|<option>\n|;
  • for (@{ $form->{all_employee} }) { $form->{selectemployee} .= qq|<option value="$_->{name}--$_->{id}">$_->{name}\n| }
  • $form->{selectemployee} =~ s/(<option value="\Q$form->{employee}--$form->{employee_id}\E")/$1 selected/;
  • if ($form->{db} eq 'vendor') {
  • $gifi = qq|
  • <th align=right>|.$locale->text('Sub-contract GIFI').qq|</th>
  • <td><input name=gifi_accno size=9 value="$form->{gifi_accno}"></td>
  • |;
  • $employeelabel = $locale->text('Employee');
  • }
  • if (@{ $form->{all_employee} }) {
  • $employee = qq|
  • <th align=right>$employeelabel</th>|;
  • if ($myconfig{role} ne 'user' || !$form->{id}) {
  • $employee .= qq|
  • <td><select name=employee>$form->{selectemployee}</select></td>
  • |;
  • } else {
  • $employee .= qq|
  • <td>$form->{employee}</td>
  • <input type=hidden name=employee value="$form->{employee}--$form->{employee_id}">|;
  • }
  • }
  • # $locale->text('Customer Number')
  • # $locale->text('Vendor Number')
  • $label = ucfirst $form->{db};
  • $form->{title} = $locale->text("$form->{title} $label");
  • $form->header;
  • print qq|
  • <body>
  • <form method=post action=$form->{script}>
  • <table width=100%>
  • <tr>
  • <th class=listtop>$form->{title}</th>
  • </tr>
  • <tr height="5"></tr>
  • <tr>
  • <td>
  • <table width=100%>
  • <tr valign=top>
  • <td width=50%>
  • <table width=100%>
  • <tr class=listheading>
  • <th class=listheading colspan=2 width=50%>|.$locale->text('Billing Address').qq|</th>
  • <tr>
  • <th align=right nowrap>|.$locale->text($label .' Number').qq|</th>
  • <td><input name="$form->{db}number" size=35 maxlength=32 value="$form->{"$form->{db}number"}"></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('Company Name').qq|</th>
  • <td><input name=name size=35 maxlength=64 value="$form->{name}"></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('Address').qq|</th>
  • <td><input name=address1 size=35 maxlength=32 value="$form->{address1}"></td>
  • </tr>
  • <tr>
  • <th></th>
  • <td><input name=address2 size=35 maxlength=32 value="$form->{address2}"></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('City').qq|</th>
  • <td><input name=city size=35 maxlength=32 value="$form->{city}"></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('State/Province').qq|</th>
  • <td><input name=state size=35 maxlength=32 value="$form->{state}"></td>
  • </tr>
  • <tr>
  • <th align=right nowrap>|.$locale->text('Zip/Postal Code').qq|</th>
  • <td><input name=zipcode size=10 maxlength=10 value="$form->{zipcode}"></td>
  • </tr>
  • <tr>