X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=sql-ledger%2Fbin%2Fmozilla%2Fct.pl;h=988422b9daef65b2b91b6ce22e27d9c411171552;hp=3dbb5656a9c55002f6068c2da976616f9618bab2;hb=32306b5f8ffe4ce594409aa6e89626740b225a39;hpb=52072fcd26f2faf57923f598c358e7f47c4e2643 diff --git a/sql-ledger/bin/mozilla/ct.pl b/sql-ledger/bin/mozilla/ct.pl index 3dbb5656a..988422b9d 100644 --- a/sql-ledger/bin/mozilla/ct.pl +++ b/sql-ledger/bin/mozilla/ct.pl @@ -1,6 +1,6 @@ #===================================================================== # SQL-Ledger Accounting -# Copyright (c) 1998-2002 +# Copyright (c) 2001 # # Author: Dieter Simader # Email: dsimader@sql-ledger.org @@ -26,9 +26,6 @@ # #====================================================================== -# $locale->text('Customers') -# $locale->text('Vendors') - use SL::CT; 1; @@ -39,10 +36,12 @@ use SL::CT; 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}&password=$form->{password}" unless $form->{callback}; + $form->{callback} = "$form->{script}?action=add&db=$form->{db}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}" unless $form->{callback}; - CT->taxaccounts(\%myconfig, \%$form); + CT->create_links(\%myconfig, \%$form); &form_header; &form_footer; @@ -50,10 +49,316 @@ sub add { } +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| + + + + + + + + +
+ + + + + + + + + + +
$invlabel
$ordlabel
$quolabel
+
+ + + + + + + + + + + +
|.$locale->text('From').qq||.$locale->text('To').qq|
+  |.$locale->text('Open').qq| +  |.$locale->text('Closed').qq| +
+
+ + +|; + + $include = qq| + + |.$locale->text('Include in Report').qq| + + + + + + + + + + + + + + + + + + + + + + +
|.$locale->text('Summary').qq| |.$locale->text('Detail').qq| +
+  |.$locale->text('Part Number').qq| + +  |.$locale->text('Description').qq| + +  |.$locale->text('Sell Price').qq| + +  |.$locale->text('Currency').qq| +
+  |.$locale->text('Qty').qq| + +  |.$locale->text('Unit').qq| + +  |.$locale->text('Discount').qq| +
+  |.$locale->text('Delivery Date').qq| + +  |.$locale->text('Project Number').qq| + +  |.$locale->text('Serial Number').qq| +
+ + +|; + + &search_name; + +} + + +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| + + + + + + + + +
+ + + + + + + + + + + + + +
$translabel
$invlabel
$ordlabel
$quolabel
+
+ + + + + + + + + + + + + + + +
|.$locale->text('From').qq||.$locale->text('To').qq|
+  |.$locale->text('Open').qq| +  |.$locale->text('Closed').qq| +
+  |.$locale->text('Amount').qq| +  |.$locale->text('Tax').qq| +  |.$locale->text('Total').qq| +  |.$locale->text('Subtotal').qq| +
+
+ + +|; + +} + + +sub include_in_report { + + $label = ucfirst $form->{db}; + + if ($myconfig{role} =~ /(admin|manager)/) { + $bcc = qq| + |.$locale->text('Bcc').qq| +|; + } + + if ($form->{db} eq 'customer') { + $employee = qq| + |.$locale->text('Salesperson').qq| +|; + + $pricegroup = qq| + |.$locale->text('Pricegroup').qq| +|; + + } else { + $employee = qq| + |.$locale->text('Employee').qq| +|; + } + + $employee .= qq| + |.$locale->text('Manager').qq| +|; + + $include = qq| + + |.$locale->text('Include in Report').qq| + + + + + + + + + + + + + + + + + + + + + $bcc + + + + + + $gifi + + + + + + $employee + + $pricegroup + + + + + + +
|.$locale->text('ID').qq| |.$locale->text($label . ' Number').qq|{l_name}> |.$locale->text('Company Name').qq|{l_contact}> |.$locale->text('Contact').qq|{l_email}> |.$locale->text('E-mail').qq|
|.$locale->text('Address').qq| |.$locale->text('City').qq| |.$locale->text('State/Province').qq| |.$locale->text('Zip/Postal Code').qq| |.$locale->text('Country').qq|
{l_phone}> |.$locale->text('Phone').qq| |.$locale->text('Fax').qq| |.$locale->text('Cc').qq| |.$locale->text('Notes').qq| |.$locale->text('Discount').qq|
|.$locale->text('Tax Number').qq| |.$locale->text('SIC').qq| |.$locale->text('IBAN').qq| |.$locale->text('BIC').qq|
|.$locale->text('Type of Business').qq| |.$locale->text('Language').qq|
|.$locale->text('Startdate').qq| |.$locale->text('Enddate').qq|
+ + +|; + +} + + sub search { +# $locale->text('Customers') +# $locale->text('Vendors') + + $form->{title} = $locale->text('Search') unless $form->{title}; + + map { $form->{"l_$_"} = 'checked' } qw(name contact phone email); + + $form->{nextsub} = "list_names"; + + $orphan = qq| + + +  |.$locale->text('All').qq| +  |.$locale->text('Orphaned').qq| + +|; + + if ($form->{db} eq 'vendor') { + $gifi = qq| + |.$locale->text('GIFI').qq| +|; + } + + &transactions; + &include_in_report; + &search_name; + +} + + +sub search_name { + $label = ucfirst $form->{db}; - $form->{title} = $locale->text($label."s"); + $form->header; @@ -73,52 +378,65 @@ sub search { - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + $invnumber + $orphan + $transactions + $include +
|.$locale->text('Number').qq|{db}number size=35>|.$locale->text($label . ' Number').qq|{db}number size=32>
|.$locale->text('Name').qq||.$locale->text('Company Name').qq|
|.$locale->text('Contact').qq||.$locale->text('Address').qq|
|.$locale->text('E-mail').qq||.$locale->text('City').qq|
 |.$locale->text('All').qq| -  |.$locale->text('Orphaned').qq||.$locale->text('State/Province').qq|
|.$locale->text('Include in Report').qq| -  |.$locale->text('Number').qq| -  |.$locale->text('Name').qq| -  |.$locale->text('Address').qq|
-  |.$locale->text('Contact').qq| -  |.$locale->text('Phone').qq| -  |.$locale->text('Fax').qq| -  |.$locale->text('E-mail').qq| -  |.$locale->text('Cc').qq| -
|.$locale->text('Zip/Postal Code').qq|
|.$locale->text('Country').qq|
|.$locale->text('Contact').qq|
|.$locale->text('E-mail').qq|
|.$locale->text('Notes').qq|
+
- +{nextsub}> {path}> {login}> -{password}> +{sessionid}>
@@ -131,13 +449,44 @@ sub search { sub list_names { - + CT->search(\%myconfig, \%$form); - $callback = "$form->{script}?action=list_names&db=$form->{db}&path=$form->{path}&login=$form->{login}&password=$form->{password}&status=$form->{status}"; - $href = $callback; + $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(); - @columns = $form->sort_columns(name, "$form->{db}number", address, contact, phone, fax, email, cc); + $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, + taxnumber, gifi_accno, sic_code, business, + pricegroup, language, iban, bic, + startdate, enddate, + invnumber, invamount, invtax, invtotal, + ordnumber, ordamount, ordtax, ordtotal, + quonumber, quoamount, quotax, quototal); + + foreach $item (qw(inv ord quo)) { + if ($form->{"l_${item}number"}) { + map { $form->{"l_$item$_"} = $form->{"l_$_"} } qw(amount tax total); + $removeemployee = 1; + $openclosed = 1; + } + } + $form->{open} = $form->{closed} = "" if !$openclosed; + + if ($form->{l_transnumber}) { + map { $form->{"l_inv$_"} = $form->{"l_$_"} } qw(amount tax total); + $removeemployee = 1; + } + + if ($removeemployee) { + @columns = grep !/(employee|manager)/, @columns; + } + foreach $item (@columns) { if ($form->{"l_$item"} eq "Y") { @@ -149,6 +498,14 @@ sub list_names { } } + 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'); } @@ -156,40 +513,153 @@ sub list_names { $option .= $locale->text('Orphaned'); } if ($form->{name}) { - $callback .= "&name=$form->{name}"; + $callback .= "&name=".$form->escape($form->{name},1); $href .= "&name=".$form->escape($form->{name}); $option .= "\n
".$locale->text('Name')." : $form->{name}"; } + if ($form->{address}) { + $callback .= "&address=".$form->escape($form->{address},1); + $href .= "&address=".$form->escape($form->{address}); + $option .= "\n
".$locale->text('Address')." : $form->{address}"; + } + if ($form->{city}) { + $callback .= "&city=".$form->escape($form->{city},1); + $href .= "&city=".$form->escape($form->{city}); + $option .= "\n
".$locale->text('City')." : $form->{city}"; + } + if ($form->{state}) { + $callback .= "&state=".$form->escape($form->{state},1); + $href .= "&state=".$form->escape($form->{state}); + $option .= "\n
".$locale->text('State')." : $form->{state}"; + } + if ($form->{zipcode}) { + $callback .= "&zipcode=".$form->escape($form->{zipcode},1); + $href .= "&zipcode=".$form->escape($form->{zipcode}); + $option .= "\n
".$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
".$locale->text('Country')." : $form->{country}"; + } if ($form->{contact}) { - $callback .= "&contact=$form->{contact}"; + $callback .= "&contact=".$form->escape($form->{contact},1); $href .= "&contact=".$form->escape($form->{contact}); $option .= "\n
".$locale->text('Contact')." : $form->{contact}"; } + if ($form->{notes}) { + $callback .= "¬es=".$form->escape($form->{notes},1); + $href .= "¬es=".$form->escape($form->{notes}); + $option .= "\n
".$locale->text('Notes')." : $form->{notes}"; + } if ($form->{"$form->{db}number"}) { - $callback .= qq|&$form->{db}number=$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
".$locale->text('Number').qq| : $form->{"$form->{db}number"}|; } if ($form->{email}) { - $callback .= "&email=$form->{email}"; + $callback .= "&email=".$form->escape($form->{email},1); $href .= "&email=".$form->escape($form->{email}); $option .= "\n
".$locale->text('E-mail')." : $form->{email}"; } + if ($form->{transdatefrom}) { + $callback .= "&transdatefrom=$form->{transdatefrom}"; + $href .= "&transdatefrom=$form->{transdatefrom}"; + $option .= "\n
" if ($option); + $option .= $locale->text('From')." ".$locale->date(\%myconfig, $form->{transdatefrom}, 1); + } + if ($form->{transdateto}) { + $callback .= "&transdateto=$form->{transdateto}"; + $href .= "&transdateto=$form->{transdateto}"; + if ($form->{transdatefrom}) { + $option .= " "; + } else { + $option .= "\n
" if ($option); + } + $option .= $locale->text('To')." ".$locale->date(\%myconfig, $form->{transdateto}, 1); + } + if ($form->{open}) { + $callback .= "&open=$form->{open}"; + $href .= "&open=$form->{open}"; + $option .= "\n
" if ($option); + $option .= $locale->text('Open'); + } + if ($form->{closed}) { + $callback .= "&closed=$form->{closed}"; + $href .= "&closed=$form->{closed}"; + $option .= "\n
" if ($option); + $option .= $locale->text('Closed'); + } + $form->{callback} = "$callback&sort=$form->{sort}"; $callback = $form->escape($form->{callback}); + $column_header{id} = qq||.$locale->text('ID').qq||; $column_header{"$form->{db}number"} = qq|{db}number>|.$locale->text('Number').qq||; $column_header{name} = qq||.$locale->text('Name').qq||; - $column_header{address} = qq||.$locale->text('Address').qq||; + $column_header{address} = qq||.$locale->text('Address').qq||; + $column_header{city} = qq||.$locale->text('City').qq||; + $column_header{state} = qq||.$locale->text('State/Province').qq||; + $column_header{zipcode} = qq||.$locale->text('Zip/Postal Code').qq||; + $column_header{country} = qq||.$locale->text('Country').qq||; $column_header{contact} = qq||.$locale->text('Contact').qq||; $column_header{phone} = qq||.$locale->text('Phone').qq||; $column_header{fax} = qq||.$locale->text('Fax').qq||; $column_header{email} = qq||.$locale->text('E-mail').qq||; $column_header{cc} = qq||.$locale->text('Cc').qq||; + $column_header{bcc} = qq||.$locale->text('Bcc').qq||; + $column_header{notes} = qq||.$locale->text('Notes').qq||; + $column_header{discount} = qq|%|; - $label = ucfirst $form->{db}."s"; - $form->{title} = $locale->text($label); + $column_header{taxnumber} = qq||.$locale->text('Tax Number').qq||; + $column_header{gifi_accno} = qq||.$locale->text('GIFI').qq||; + $column_header{sic_code} = qq||.$locale->text('SIC').qq||; + $column_header{business} = qq||.$locale->text('Type of Business').qq||; + $column_header{iban} = qq||.$locale->text('IBAN').qq||; + $column_header{bic} = qq||.$locale->text('BIC').qq||; + $column_header{startdate} = qq||.$locale->text('Startdate').qq||; + $column_header{enddate} = qq||.$locale->text('Enddate').qq||; + + $column_header{invnumber} = qq||.$locale->text('Invoice').qq||; + $column_header{ordnumber} = qq||.$locale->text('Order').qq||; + $column_header{quonumber} = qq||.$locale->text('Quotation').qq||; + + if ($form->{db} eq 'customer') { + $column_header{employee} = qq||.$locale->text('Salesperson').qq||; + } else { + $column_header{employee} = qq||.$locale->text('Employee').qq||; + } + $column_header{manager} = qq||.$locale->text('Manager').qq||; + + $column_header{pricegroup} = qq||.$locale->text('Pricegroup').qq||; + $column_header{language} = qq||.$locale->text('Language').qq||; + + + $amount = $locale->text('Amount'); + $tax = $locale->text('Tax'); + $total = $locale->text('Total'); + + $column_header{invamount} = qq|$amount|; + $column_header{ordamount} = qq|$amount|; + $column_header{quoamount} = qq|$amount|; + + $column_header{invtax} = qq|$tax|; + $column_header{ordtax} = qq|$tax|; + $column_header{quotax} = qq|$tax|; + + $column_header{invtotal} = qq|$total|; + $column_header{ordtotal} = qq|$total|; + $column_header{quototal} = qq|$total|; + + + 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; @@ -211,20 +681,97 @@ sub list_names { |; map { print "$column_header{$_}\n" } @column_index; - + print qq| |; + $ordertype = ($form->{db} eq 'customer') ? 'sales_order' : 'purchase_order'; + $quotationtype = ($form->{db} eq 'customer') ? 'sales_quotation' : 'request_quotation'; + $subtotal = 0; + foreach $ref (@{ $form->{CT} }) { - map { $column_data{$_} = "$ref->{$_} " } ("$form->{db}number", address, contact, phone, fax); - - $column_data{name} = "{script}?action=edit&id=$ref->{id}&db=$form->{db}&path=$form->{path}&login=$form->{login}&password=$form->{password}&status=$form->{status}&callback=$callback>$ref->{name} "; + if ("$ref->{$form->{sort}}$ref->{id}" ne $sameitem && $form->{l_subtotal}) { + # print subtotal + if ($subtotal) { + map { $column_data{$_} = " " } @column_index; + &list_subtotal; + } + } + + if ("$ref->{$form->{sort}}$ref->{id}" eq $sameitem && $form->{sort} eq 'name') { + map { $column_data{$_} = " " } @column_index; + } else { + + map { $column_data{$_} = "$ref->{$_} " } @column_index; + $column_data{$form->{sort}} = " " if $ref->{$form->{sort}} eq $sameitem && $form->{l_subtotal}; + + $column_data{address} = "$ref->{address1} $ref->{address2} "; + $column_data{name} = "{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} "; + + $email = ""; + if ($form->{sort} =~ /(email|cc)/) { + if ("$ref->{$form->{sort}}$ref->{id}" ne $sameitem) { + $email = 1; + } + } else { + $email = 1; + } + + if ($email) { + foreach $item (qw(email cc bcc)) { + if ($ref->{$item}) { + $email = $ref->{$item}; + $email =~ s//\>/; + + $column_data{$item} = qq|$email|; + } + } + } + } - $column_data{email} = ($ref->{email}) ? qq|$ref->{email}| : " "; - $column_data{cc} = ($ref->{cc}) ? qq|$ref->{cc}| : " "; + if ($ref->{formtype} eq 'invoice') { + $column_data{invnumber} = "{module}.pl?action=edit&id=$ref->{invid}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$ref->{invnumber} "; + + $column_data{invamount} = "".$form->format_amount(\%myconfig, $ref->{netamount}, 2, " ").""; + $column_data{invtax} = "".$form->format_amount(\%myconfig, $ref->{amount} - $ref->{netamount}, 2, " ").""; + $column_data{invtotal} = "".$form->format_amount(\%myconfig, $ref->{amount}, 2, " ").""; + + $invamountsubtotal += $ref->{netamount}; + $invtaxsubtotal += ($ref->{amount} - $ref->{netamount}); + $invtotalsubtotal += $ref->{amount}; + } + + if ($ref->{formtype} eq 'order') { + $column_data{ordnumber} = "{module}.pl?action=edit&id=$ref->{invid}&type=$ordertype&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$ref->{ordnumber} "; + + $column_data{ordamount} = "".$form->format_amount(\%myconfig, $ref->{netamount}, 2, " ").""; + $column_data{ordtax} = "".$form->format_amount(\%myconfig, $ref->{amount} - $ref->{netamount}, 2, " ").""; + $column_data{ordtotal} = "".$form->format_amount(\%myconfig, $ref->{amount}, 2, " ").""; + + $ordamountsubtotal += $ref->{netamount}; + $ordtaxsubtotal += ($ref->{amount} - $ref->{netamount}); + $ordtotalsubtotal += $ref->{amount}; + } + + if ($ref->{formtype} eq 'quotation') { + $column_data{quonumber} = "{module}.pl?action=edit&id=$ref->{invid}&type=$quotationtype&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$ref->{quonumber} "; + + $column_data{quoamount} = "".$form->format_amount(\%myconfig, $ref->{netamount}, 2, " ").""; + $column_data{quotax} = "".$form->format_amount(\%myconfig, $ref->{amount} - $ref->{netamount}, 2, " ").""; + $column_data{quototal} = "".$form->format_amount(\%myconfig, $ref->{amount}, 2, " ").""; + + $quoamountsubtotal += $ref->{netamount}; + $quotaxsubtotal += ($ref->{amount} - $ref->{netamount}); + $quototalsubtotal += $ref->{amount}; + } + if ($form->{l_discount}) { + $column_data{discount} = "".$form->format_amount(\%myconfig, $ref->{discount} * 100, "", " ").""; + } + $i++; $i %= 2; print " @@ -236,8 +783,34 @@ sub list_names { |; + $sameitem = "$ref->{$form->{sort}}$ref->{id}"; + $subtotal = 1; + } + if ($form->{l_subtotal}) { + map { $column_data{$_} = " " } @column_index; + &list_subtotal; + } + + $i = 1; + if ($myconfig{acs} !~ /AR--AR/) { + if ($form->{db} eq 'customer') { + $button{'AR--Customers-Add Customer'}{code} = qq| |; + $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{'AP--Vendors--Add Vendor'}{order} = $i++; + } + } + + foreach $item (split /;/, $myconfig{acs}) { + delete $button{$item}; + } + print qq| @@ -255,11 +828,22 @@ sub list_names { {path}> {login}> -{password}> +{sessionid}> +|; + + if ($form->{status}) { + foreach $item (sort { $a->{order} <=> $b->{order} } %button) { + print $item->{code}; + } + } - + if ($form->{menubar}) { + require "$form->{path}/menu.pl"; + &menubar; + } - + print qq| + @@ -268,364 +852,1476 @@ sub list_names { } -sub edit { - -# $locale->text('Edit Customer') -# $locale->text('Edit Vendor') +sub list_subtotal { - CT->get_tuple(\%myconfig, \%$form); + $column_data{invamount} = "".$form->format_amount(\%myconfig, $invamountsubtotal, 2, " ").""; + $column_data{invtax} = "".$form->format_amount(\%myconfig, $invtaxsubtotal, 2, " ").""; + $column_data{invtotal} = "".$form->format_amount(\%myconfig, $invtotalsubtotal, 2, " ").""; - # format " into " - map { $form->{$_} =~ s/"/"/g } keys %$form; + $invamountsubtotal = 0; + $invtaxsubtotal = 0; + $invtotalsubtotal = 0; - $form->{title} = "Edit"; + $column_data{ordamount} = "".$form->format_amount(\%myconfig, $ordamountsubtotal, 2, " ").""; + $column_data{ordtax} = "".$form->format_amount(\%myconfig, $ordtaxsubtotal, 2, " ").""; + $column_data{ordtotal} = "".$form->format_amount(\%myconfig, $ordtotalsubtotal, 2, " ").""; - # format discount - $form->{discount} *= 100; - - &form_header; - &form_footer; + $ordamountsubtotal = 0; + $ordtaxsubtotal = 0; + $ordtotalsubtotal = 0; -} + $column_data{quoamount} = "".$form->format_amount(\%myconfig, $quoamountsubtotal, 2, " ").""; + $column_data{quotax} = "".$form->format_amount(\%myconfig, $quotaxsubtotal, 2, " ").""; + $column_data{quototal} = "".$form->format_amount(\%myconfig, $quototalsubtotal, 2, " ").""; + $quoamountsubtotal = 0; + $quotaxsubtotal = 0; + $quototalsubtotal = 0; + + print " + +"; + map { print "$column_data{$_}\n" } @column_index; -sub form_header { + print qq| + +|; + - foreach $item (split / /, $form->{taxaccounts}) { - if (($form->{tax}{$item}{taxable}) || !($form->{id})) { - $taxable .= qq|  $form->{tax}{$item}{description}|; - } else { - $taxable .= qq|  $form->{tax}{$item}{description}|; - } - } +} - $tax = qq| - - - - - - - -
|.$locale->text('Taxable').qq|$taxable
- - -|; - $form->{taxincluded} = ($form->{taxincluded}) ? "checked" : ""; - $form->{creditlimit} = $form->format_amount(\%myconfig, $form->{creditlimit}, 0); +sub list_history { - if ($myconfig{admin}) { - $bcc = qq| - - |.$locale->text('Bcc').qq| - - -|; - } + 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}"; - $label = ucfirst $form->{db}; - $form->{title} = $locale->text("$form->{title} $label"); + $form->{l_fxsellprice} = $form->{l_curr}; + @columns = $form->sort_columns(partnumber, description, qty, unit, sellprice, fxsellprice, curr, discount, deliverydate, projectnumber, serialnumber); - if ($form->{db} eq 'customer') { - $creditlimit = qq| - |.$locale->text('Credit Limit').qq| - - |.$locale->text('Discount').qq| - - % -|; + if ($form->{history} eq 'summary') { + @columns = $form->sort_columns(partnumber, description, qty, unit, sellprice, curr); } - $form->header; - - print qq| - - -
{script}> + foreach $item (@columns) { + if ($form->{"l_$item"} eq "Y") { + push @column_index, $item; - - - - - - + + +|; + } + + # currencies + map { $form->{selectcurrency} .= " - - - + + - - - - +|; + } + + $typeofbusiness = qq| + + +|; + + if (@{ $form->{all_business} }) { + $form->{selectbusiness} = qq| + +|; + + + } + + $pricegroup = qq| + + +|; + + if (@{ $form->{all_pricegroup} } && $form->{db} eq 'customer') { + $form->{selectpricegroup} = qq| +|; + } + + $lang = qq| + + +|; + + if (@{ $form->{all_language} }) { + $form->{selectlanguage} = qq| +|; + } + + + $employeelabel = $locale->text('Salesperson'); + + $form->{selectemployee} = qq| + +|; + $employeelabel = $locale->text('Employee'); + } + + + if (@{ $form->{all_employee} }) { + $employee = qq| + |; + + if ($myconfig{role} ne 'user' || !$form->{id}) { + $employee .= qq| + +|; + } else { + $employee .= qq| + + |; + } + } + + +# $locale->text('Customer Number') +# $locale->text('Vendor Number') + + $label = ucfirst $form->{db}; + $form->{title} = $locale->text("$form->{title} $label"); + + $form->header; + + print qq| + + +{script}> + +
$form->{title}
- + # 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
".$locale->text('Name')." : $form->{name}"; + } + if ($form->{contact}) { + $callback .= "&contact=".$form->escape($form->{contact},1); + $href .= "&contact=".$form->escape($form->{contact}); + $option .= "\n
".$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
".$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
".$locale->text('E-mail')." : $form->{email}"; + } + if ($form->{transdatefrom}) { + $callback .= "&transdatefrom=$form->{transdatefrom}"; + $href .= "&transdatefrom=$form->{transdatefrom}"; + $option .= "\n
" if ($option); + $option .= $locale->text('From')." ".$locale->date(\%myconfig, $form->{transdatefrom}, 1); + } + if ($form->{transdateto}) { + $callback .= "&transdateto=$form->{transdateto}"; + $href .= "&transdateto=$form->{transdateto}"; + if ($form->{transdatefrom}) { + $option .= " "; + } else { + $option .= "\n
" if ($option); + } + $option .= $locale->text('To')." ".$locale->date(\%myconfig, $form->{transdateto}, 1); + } + if ($form->{open}) { + $callback .= "&open=$form->{open}"; + $href .= "&open=$form->{open}"; + $option .= "\n
" if ($option); + $option .= $locale->text('Open'); + } + if ($form->{closed}) { + $callback .= "&closed=$form->{closed}"; + $href .= "&closed=$form->{closed}"; + $option .= "\n
" if ($option); + $option .= $locale->text('Closed'); + } + + + $form->{callback} = "$callback&sort=$form->{sort}"; + $callback = $form->escape($form->{callback}); + + $column_header{partnumber} = qq||; + $column_header{description} = qq||; + + if ($form->{history} eq 'summary') { + $column_header{sellprice} = qq||; + } else { + $column_header{sellprice} = qq||; + } + $column_header{fxsellprice} = qq||; + + $column_header{curr} = qq||; + $column_header{discount} = qq||; + $column_header{qty} = qq||; + $column_header{unit} = qq||; + $column_header{deliverydate} = qq||; + $column_header{projectnumber} = qq||; + $column_header{serialnumber} = qq||; + + +# $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| + + +
|.$locale->text('Part Number').qq||.$locale->text('Description').qq||.$locale->text('Total').qq||.$locale->text('Sell Price').qq| |.$locale->text('Curr').qq||.$locale->text('Discount').qq||.$locale->text('Qty').qq||.$locale->text('Unit').qq||.$locale->text('Delivery Date').qq||.$locale->text('Project Number').qq||.$locale->text('Serial Number').qq|
+ + + + + + + + + + + + + +
$form->{title}
$option
+ - - - - - - - - - - - - +|; + + map { print "$column_header{$_}\n" } @column_index; + + print qq| + +|; + + + $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'; + } + } + + + foreach $ref (@{ $form->{CT} }) { + + if ($ref->{id} ne $sameid) { + # print the header + print qq| + + - - - - +|; + } + + 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| + +|; + + if ($form->{type} eq 'invoice') { + print qq||; + } + + if ($form->{type} eq 'order') { + print qq||; + } + + if ($form->{type} eq 'quotation') { + print qq||; + } + + print qq| + +|; + } + + map { $column_data{$_} = "" } @column_index; + + if ($form->{l_curr}) { + $column_data{fxsellprice} = qq|"; + } + $column_data{sellprice} = qq|"; + + $column_data{qty} = qq|"; + $column_data{discount} = qq|"; + $column_data{partnumber} = qq||; + + + $i++; $i %= 2; + print qq| + +|; + + map { print "$column_data{$_}\n" } @column_index; + + print qq| + +|; + + $sameid = $ref->{id}; + $sameinvid = $ref->{invid}; + + } + + + print qq| +
 |.$locale->text('Ship to').qq|
|.$locale->text('Number').qq|{db}number"}">
|.$locale->text('Name').qq|
{script}?action=edit&id=$ref->{ctid}&db=$form->{db}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$ref->{name} $ref->{address}
|.$locale->text('Address').qq|
{invid}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$invlabel $ref->{invnumber} / $ref->{employee}{invid}&type=$ordertype&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$ordlabel $ref->{ordnumber} / $ref->{employee}{invid}&type=$quotationtype&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$quolabel $ref->{quonumber} / $ref->{employee}
$ref->{$_} |.$form->format_amount(\%myconfig, $ref->{fxsellprice}, 2)."|.$form->format_amount(\%myconfig, $ref->{sellprice}, 2)."|.$form->format_amount(\%myconfig, $ref->{qty})."|.$form->format_amount(\%myconfig, $ref->{discount} * 100, "", " ")."{pid}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}&callback=$callback>$ref->{partnumber}
+

+ +|; + + if ($form->{menubar}) { + require "$form->{path}/menu.pl"; + &menubar; + } + + print qq| + + + + +|; + +} + + + +sub edit { + +# $locale->text('Edit Customer') +# $locale->text('Edit Vendor') + + CT->create_links(\%myconfig, \%$form); + + map { $form->{$_} = $form->quote($form->{$_}) } keys %$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); + + if ($myconfig{role} =~ /(admin|manager)/) { + $bcc = qq| +
|.$locale->text('Bcc').qq|
|.$locale->text('Taxable').qq| + + + + + + +
$taxable{taxincluded}>|.$locale->text('Tax Included').qq|
+
|.$locale->text('Type of Business').qq||.$locale->text('Sub-contract GIFI').qq|$employeelabel$form->{employee}
+ + + + + + + + + + + +
$form->{title}
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $bcc +
|.$locale->text('Billing Address').qq|
|.$locale->text($label .' Number').qq|{db}number"}">
|.$locale->text('Company Name').qq|
|.$locale->text('Address').qq|
|.$locale->text('City').qq|
|.$locale->text('State/Province').qq|
|.$locale->text('Zip/Postal Code').qq|
|.$locale->text('Country').qq|
|.$locale->text('Contact').qq|
|.$locale->text('Phone').qq|
|.$locale->text('Fax').qq|
|.$locale->text('E-mail').qq|
|.$locale->text('Cc').qq|
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|.$locale->text('Shipping Address').qq|
{shiptoname}">
+
+
+ + $tax - - - + + + + - - - + + + + + + - - - + + + $gifi + + - - - + $typeofbusiness + + + + - - - + $pricegroup + $lang + + - - - + + $employee + - $bcc
|.$locale->text('Startdate').qq|{startdate}>|.$locale->text('Enddate').qq|{enddate}>
|.$locale->text('Contact').qq||.$locale->text('Credit Limit').qq||.$locale->text('Terms').qq| |.$locale->text('days').qq||.$locale->text('Discount').qq| + %
|.$locale->text('Phone').qq||.$locale->text('Tax Number / SSN').qq||.$locale->text('SIC').qq|
|.$locale->text('Fax').qq||.$locale->text('BIC').qq||.$locale->text('IBAN').qq|
|.$locale->text('E-mail').qq||.$locale->text('Currency').qq|
|.$locale->text('Cc').qq|
+ + + + + +
|.$locale->text('Notes').qq|
+

+|; + +} + + + +sub form_footer { + + $i = 1; + if ($form->{db} eq 'customer') { + if ($myconfig{acs} !~ /AR--AR/) { + $button{'AR--Add Transaction'}{code} = qq| |; + $button{'AR--Add Transaction'}{order} = $i++; + $button{'AR--Sales Invoice'}{code} = qq| |; + $button{'AR--Sales Invoice'}{order} = $i++; + } + if ($myconfig{acs} !~ /Order Entry--Order Entry/) { + $button{'Order Entry--Sales Order'}{code} = qq| |; + $button{'Order Entry--Sales Order'}{order} = $i++; + } + if ($myconfig{acs} !~ /Quotations--Quotations/) { + $button{'Quotations--Quotation'}{code} = qq| |; + $button{'Quotations--Quotation'}{order} = $i++; + } + } + if ($form->{db} eq 'vendor') { + if ($myconfig{acs} !~ /AP--AP/) { + $button{'AP--Add Transaction'}{code} = qq| |; + $button{'AP--Add Transaction'}{order} = $i++; + $button{'AP--Vendor Invoice'}{code} = qq| |; + $button{'AP--Vendor Invoice'}{order} = $i++; + } + if ($myconfig{acs} !~ /Order Entry--Order Entry/) { + $button{'Order Entry--Purchase Order'}{code} = qq| |; + $button{'Order Entry--Purchase Order'}{order} = $i++; + } + if ($myconfig{acs} !~ /Quotations--Quotations/) { + $button{'Quotations--RFQ'}{code} = qq| |; + $button{'Quotations--RFQ'}{order} = $i++; + } + } + if ($myconfig{acs} !~ /Goods & Services--Goods & Services/) { + $myconfig{acs} =~ s/(Goods & Services--Add )(Service|Assembly).*;/$1--Add Part/g; + $button{'Goods & Services--Add Part'}{code} = qq| |; + $button{'Goods & Services--Add Part'}{order} = $i++; + } + + foreach $item (split /;/, $myconfig{acs}) { + delete $button{$item}; + } + + print qq| +{id}> + + +{path}> +{login}> +{sessionid}> + + +{db}> + +
+|; + + if ($form->{db} eq 'customer') { + $item = 'AR--Customers--Add Customer'; + } + if ($form->{db} eq 'vendor') { + $item = 'AP--Vendors--Add Vendor'; + } + + if ($myconfig{acs} !~ /$item/) { + print qq| + +|; + if ($form->{id} && $form->{status} eq 'orphaned') { + print qq|\n|; + } + } + + foreach $item (sort { $a->{order} <=> $b->{order} } %button) { + print $item->{code}; + } + + if ($form->{menubar}) { + require "$form->{path}/menu.pl"; + &menubar; + } + + print qq| + + + + + +|; + +} + + +sub pricelist { + + $form->isblank("name", $locale->text('Name missing!')); + + CT->pricelist(\%myconfig, \%$form); + + foreach $ref (@{ $form->{"all_partspricelist"} }) { + $i++; + map { $form->{"${_}_$i"} = $ref->{$_} } keys %$ref; + } + $form->{rowcount} = $i; + + # currencies + @curr = split /:/, $form->{currencies}; + map { $form->{selectcurrency} .= "
+ + + +|; + } +sub update { + + $i = $form->{rowcount}; + $additem = 0; -sub form_footer { + if ($form->{db} eq 'customer') { + $additem = 1 if ! (($form->{"partnumber_$i"} eq "") && ($form->{"description_$i"} eq "") && ($form->{"partsgroup_$i"} eq "")); + } + if ($form->{db} eq 'vendor') { + if (! (($form->{"sku_$i"} eq "") && ($form->{"description_$i"} eq "") && ($form->{"partsgroup_$i"} eq ""))) { + $additem = 1; + $form->{"partnumber_$i"} = $form->{"sku_$i"}; + } + } - $label = ucfirst $form->{db}; + if ($additem) { + + CT->retrieve_item(\%myconfig, \%$form); + + $rows = scalar @{ $form->{item_list} }; + + if ($rows > 0) { + + if ($rows > 1) { + + &select_item; + exit; + + } else { + + $sellprice = $form->{"sellprice_$i"}; + $pricebreak = $form->{"pricebreak_$i"}; + $lastcost = $form->{"lastcost_$i"}; + + map { $form->{item_list}[$i]{$_} = $form->quote($form->{item_list}[$i]{$_}) } qw(partnumber description); + map { $form->{"${_}_$i"} = $form->{item_list}[0]{$_} } keys %{ $form->{item_list}[0] }; + + if ($form->{db} eq 'customer') { + + if ($sellprice) { + $form->{"sellprice_$i"} = $sellprice; + } + + ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/); + $dec = length $dec; + $decimalplaces = ($dec > 2) ? $dec : 2; + + $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); + + $form->{"pricebreak_$i"} = $pricebreak; + + } else { + + foreach $j (1 .. $form->{rowcount}) { + if ($form->{"sku_$j"} eq $form->{"partnumber_$i"}) { + $form->error($locale->text('Item already on pricelist!')); + } + } + + if ($lastcost) { + $form->{"lastcost_$i"} = $lastcost; + } + + ($dec) = ($form->{"lastcost_$i"} =~ /\.(\d+)/); + $dec = length $dec; + $decimalplaces = ($dec > 2) ? $dec : 2; + + $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, $decimalplaces); + + $form->{"sku_$i"} = $form->{"partnumber_$i"}; + delete $form->{"partnumber_$i"}; + + } + + $form->{rowcount}++; + + } + + } else { + $form->error($locale->text('Item not on file!')); + + } + } + + &{ "$form->{db}_pricelist" }; + +} + + + +sub select_item { + + @column_index = qw(ndx partnumber description partsgroup unit sellprice lastcost); + + $column_data{ndx} = qq| |; + $column_data{partnumber} = qq||.$locale->text('Number').qq||; + $column_data{description} = qq||.$locale->text('Description').qq||; + $column_data{partsgroup} = qq||.$locale->text('Group').qq||; + $column_data{unit} = qq||.$locale->text('Unit').qq||; + $column_data{sellprice} = qq||.$locale->text('Sell Price').qq||; + $column_data{lastcost} = qq||.$locale->text('Cost').qq||; + + $form->header; + + $title = $locale->text('Select from one of the items below'); + print qq| -{id}> - + -{path}> -{login}> -{password}> +
- -{db}> + + + + + + + + + + + + + + +
$title
$option
+ + |; -
+ map { print "\n$column_data{$_}" } @column_index; + + print qq| + +|; + + my $i = 0; + foreach $ref (@{ $form->{item_list} }) { + $checked = ($i++) ? "" : "checked"; + + map { $ref->{$_} = $form->quote($ref->{$_}) } qw(partnumber description unit); + + $column_data{ndx} = qq||; + + map { $column_data{$_} = qq|| } qw(partnumber description partsgroup unit); + + $column_data{sellprice} = qq||; + $column_data{lastcost} = qq||; + + $j++; $j %= 2; + + print qq| + |; + + map { print "\n$column_data{$_}" } @column_index; + + print qq| + + + + + + +{sellprice}> +{lastcost}> + + +{id}> - - - |; - if ($form->{id} && $form->{status} eq 'orphaned') { - print qq|\n|; } print qq| - - +
$ref->{$_} |.$form->format_amount(\%myconfig, $ref->{sellprice}, 2, " ").qq||.$form->format_amount(\%myconfig, $ref->{lastcost}, 2, " ").qq|
+

+ + + +|; + + # delete action variable + map { delete $form->{$_} } qw(action item_list header); + + $form->hide_form(); + + print qq| + + +
+ + |; - } -sub invoice { &{ "$form->{db}_invoice" } }; -sub customer_invoice { +sub item_selected { - $form->isblank("name", $locale->text("Name missing!")); - CT->save_customer(\%myconfig, \%$form); - - delete $form->{script}; + # replace the last row with the checked row + $i = $form->{rowcount}; + + # index for new item + $j = $form->{ndx}; + + @new = qw(id partnumber description unit); + push @new, "sellprice" if ! $form->{"sellprice_$i"}; + push @new, "lastcost" if ! $form->{"lastcost_$i"}; - $form->{action} = "add"; - $form->{callback} = $form->escape($form->{callback},1); + map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} } @new; - $form->{customer} = $form->{name}; - $form->{customer_id} = $form->{id}; - $form->{vc} = 'customer'; + $form->{"partsgroup_$i"} = qq|$form->{"new_partsgroup_$j"}--$form->{"new_partsgroup_id_$j"}|; - delete $form->{id}; + map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(sellprice lastcost); + + push @new, qw(partsgroup partsgroup_id); + + # delete all the new_ variables + for $i (1 .. $form->{lastndx}) { + map { delete $form->{"new_${_}_$i"} } @new; + } + + map { delete $form->{$_} } qw(ndx lastndx nextsub); - map { $argv .= "$_=$form->{$_}&" } keys %$form; + # format amounts + map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2) } qw(sellprice lastcost); - exec ("perl", "is.pl", $argv); + foreach $j (1 .. $form->{rowcount}) { + if ($form->{"sku_$j"} eq $form->{"partnumber_$i"}) { + $form->error($locale->text('Item already on pricelist!')); + } + } + + $form->{"sku_$i"} = $form->{"partnumber_$i"}; + delete $form->{"partnumber_$i"} if $form->{db} eq 'vendor'; + + $form->{rowcount}++; + &{ "$form->{db}_pricelist" }; } -sub vendor_invoice { - $form->isblank("name", $locale->text("Name missing!")); - CT->save_vendor(\%myconfig, \%$form); - - delete $form->{script}; - - $form->{action} = "add"; - $form->{callback} = $form->escape($form->{callback},1); + +sub save_pricelist { + + &{ "CT::save_$form->{db}" }("", \%myconfig, \%$form); - $form->{vendor} = $form->{name}; - $form->{vendor_id} = $form->{id}; - $form->{vc} = 'vendor'; - - delete $form->{id}; + $rc = CT->save_pricelist(\%myconfig, \%$form); - map { $argv .= "$_=$form->{$_}&" } keys %$form; + $form->{callback} = "$form->{script}?action=edit&db=$form->{db}&id=$form->{id}&login=$form->{login}&path=$form->{path}&login=$form->{login}&sessionid=$form->{sessionid}"; - exec ("perl", "ir.pl", $argv); + $form->redirect if $rc; + $form->error($locale->text('Could not save pricelist!')); } -sub order { &{ "$form->{db}_order" } }; -sub customer_order { - - $form->isblank("name", $locale->text("Name missing!")); - CT->save_customer(\%myconfig, \%$form); +sub add_transaction { - delete $form->{script}; + $form->isblank("name", $locale->text("Name missing!")); + + &{ "CT::save_$form->{db}" }("", \%myconfig, \%$form); - $form->{action} = "add"; $form->{callback} = $form->escape($form->{callback},1); - - $form->{customer} = $form->{name}; - $form->{customer_id} = $form->{id}; - $form->{vc} = 'customer'; + $name = $form->escape($form->{name},1); - $form->{type} = 'sales_order'; - - delete $form->{id}; + $form->{callback} = "$form->{script}?login=$form->{login}&path=$form->{path}&sessionid=$form->{sessionid}&action=add&vc=$form->{db}&$form->{db}_id=$form->{id}&$form->{db}=$name&type=$form->{type}&callback=$form->{callback}"; - map { $argv .= "$_=$form->{$_}&" } keys %$form; + $form->redirect; - exec ("perl", "oe.pl", $argv); +} + +sub ap_transaction { + + $form->{script} = "ap.pl"; + $form->{type} = "ap_transaction"; + &add_transaction; } -sub vendor_order { +sub ar_transaction { - $form->isblank("name", $locale->text("Name missing!")); - CT->save_vendor(\%myconfig, \%$form); - - delete $form->{script}; - - $form->{action} = "add"; - $form->{callback} = $form->escape($form->{callback},1); + $form->{script} = "ar.pl"; + $form->{type} = "ar_transaction"; + &add_transaction; + +} + + +sub sales_invoice { + + $form->{script} = "is.pl"; + $form->{type} = "invoice"; + &add_transaction; - $form->{vendor} = $form->{name}; - $form->{vendor_id} = $form->{id}; - $form->{vc} = 'vendor'; +} - $form->{type} = 'purchase_order'; - delete $form->{id}; +sub vendor_invoice { - map { $argv .= "$_=$form->{$_}&" } keys %$form; + $form->{script} = "ir.pl"; + $form->{type} = "invoice"; + &add_transaction; - exec ("perl", "oe.pl", $argv); +} + + +sub rfq { + + $form->{script} = "oe.pl"; + $form->{type} = "request_quotation"; + &add_transaction; } -sub save { &{ "save_$form->{db}" } }; +sub quotation { + + $form->{script} = "oe.pl"; + $form->{type} = "sales_quotation"; + &add_transaction; + +} -sub save_customer { - $form->isblank("name", $locale->text("Name missing!")); - CT->save_customer(\%myconfig, \%$form); - $form->redirect($locale->text('Customer saved!')); +sub sales_order { + $form->{script} = "oe.pl"; + $form->{type} = "sales_order"; + &add_transaction; + } -sub save_vendor { +sub purchase_order { - $form->isblank("name", $locale->text("Name missing!")); - CT->save_vendor(\%myconfig, \%$form); - $form->redirect($locale->text('Vendor saved!')); + $form->{script} = "oe.pl"; + $form->{type} = "purchase_order"; + &add_transaction; } -sub delete { &{ "delete_$form->{db}" } }; +sub save { -sub delete_customer { +# $locale->text('Customer saved!') +# $locale->text('Vendor saved!') - $rc = CT->delete_customer(\%myconfig, \%$form); + $msg = ucfirst $form->{db}; + $msg .= " saved!"; + + $form->isblank("name", $locale->text("Name missing!")); + &{ "CT::save_$form->{db}" }("", \%myconfig, \%$form); + + $form->redirect($locale->text($msg)); - $form->error($locale->text('Transactions exist, cannot delete customer!')) if ($rc == -1); - $form->redirect($locale->text('Customer deleted!')) if $rc; - $form->error($locale->text('Cannot delete customer!')); - } -sub delete_vendor { +sub delete { - $rc = CT->delete_vendor(\%myconfig, \%$form); +# $locale->text('Customer deleted!') +# $locale->text('Cannot delete customer!') +# $locale->text('Vendor deleted!') +# $locale->text('Cannot delete vendor!') + + CT->delete(\%myconfig, \%$form); + + $msg = ucfirst $form->{db}; + $msg .= " deleted!"; + $form->redirect($locale->text($msg)); - $form->error($locale->text('Transactions exist, cannot delete vendor!')) if ($rc == -1); - $form->redirect($locale->text('Vendor deleted!')) if $rc; - $form->error($locale->text('Cannot delete vendor!')); + $msg = "Cannot delete $form->{db}"; + $form->error($locale->text($msg)); } sub continue { &{ $form->{nextsub} } }; +sub add_customer { &add }; +sub add_vendor { &add };