diff options
Diffstat (limited to 'bin/arapprn.pl')
-rwxr-xr-x | bin/arapprn.pl | 1071 |
1 files changed, 580 insertions, 491 deletions
diff --git a/bin/arapprn.pl b/bin/arapprn.pl index b6bdda14..397a624c 100755 --- a/bin/arapprn.pl +++ b/bin/arapprn.pl @@ -8,9 +8,9 @@ # with permission. # # 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, +# 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): @@ -18,7 +18,7 @@ # # Author: DWS Systems Inc. # Web: http://www.sql-ledger.org -# +# # # 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 @@ -33,492 +33,569 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #====================================================================== -# +# # This file has not undergone any whitespace cleanup. # # printing routines for ar, ap # # any custom scripts for this one -if (-f "bin/custom/arapprn.pl") { +if ( -f "bin/custom/arapprn.pl" ) { eval { require "bin/custom/arapprn.pl"; }; } -if (-f "bin/custom/$form->{login}_arapprn.pl") { +if ( -f "bin/custom/$form->{login}_arapprn.pl" ) { eval { require "bin/custom/$form->{login}_arapprn.pl"; }; } - 1; -# end of main +# end of main sub print { - if ($form->{media} !~ /screen/) { - $form->error($locale->text('Select postscript or PDF!')) if $form->{format} !~ /(postscript|pdf)/; - $old_form = new Form; - for (keys %$form) { $old_form->{$_} = $form->{$_} } - } - - if ($form->{formname} =~ /(check|receipt)/) { - if ($form->{media} eq 'screen') { - $form->error($locale->text('Select postscript or PDF!')) if $form->{format} !~ /(postscript|pdf)/; - } - } - - if (! $form->{invnumber}) { - $invfld = 'sinumber'; - $invfld = 'vinumber' if $form->{ARAP} eq 'AP'; - $form->{invnumber} = $form->update_defaults(\%myconfig, $invfld); - if ($form->{media} eq 'screen') { - if ($form->{media} eq 'screen') { - &update; - exit; - } - } - } - - if ($form->{formname} =~ /(check|receipt)/) { - if ($form->{media} ne 'screen') { - for (qw(action header)) { delete $form->{$_} } - $form->{invtotal} = $form->{oldinvtotal}; - - foreach $key (keys %$form) { - $form->{$key} =~ s/&/%26/g; - $form->{previousform} .= qq|$key=$form->{$key}&|; - } - chop $form->{previousform}; - $form->{previousform} = $form->escape($form->{previousform}, 1); - } - - if ($form->{paidaccounts} > 1) { - if ($form->{"paid_$form->{paidaccounts}"}) { - &update; - exit; - } elsif ($form->{paidaccounts} > 2) { - # select payment - &select_payment; - exit; - } - } else { - $form->error($locale->text('Nothing to print!')); - } - - } - if ($filename = $queued{$form->{formname}}) { - $form->{queued} =~ s/$form->{formname} $filename//; - unlink "${LedgerSMB::Sysconfig::spool}/$filename"; - $filename =~ s/\..*$//g; - } else { - $filename = time; - $filename .= $$; - } - - $filename .= ($form->{format} eq 'postscript') ? '.ps' : '.pdf'; - if ($form->{media} ne 'screen'){ - $form->{OUT} = "${LedgerSMB::Sysconfig::spool}/$filename"; - $form->{printmode} = '>'; - } - $form->{queued} .= " $form->{formname} $filename"; - $form->{queued} =~ s/^ //; - $printform = new Form; - for (keys %$form){ - $printform->{$_} = $form->{$_}; - } - - - if ($form->{printandpost}){ - &post; - } else { - &{ "print_$form->{formname}" }($old_form, 1); - } - + if ( $form->{media} !~ /screen/ ) { + $form->error( $locale->text('Select postscript or PDF!') ) + if $form->{format} !~ /(postscript|pdf)/; + $old_form = new Form; + for ( keys %$form ) { $old_form->{$_} = $form->{$_} } + } -} + if ( $form->{formname} =~ /(check|receipt)/ ) { + if ( $form->{media} eq 'screen' ) { + $form->error( $locale->text('Select postscript or PDF!') ) + if $form->{format} !~ /(postscript|pdf)/; + } + } + if ( !$form->{invnumber} ) { + $invfld = 'sinumber'; + $invfld = 'vinumber' if $form->{ARAP} eq 'AP'; + $form->{invnumber} = $form->update_defaults( \%myconfig, $invfld ); + if ( $form->{media} eq 'screen' ) { + if ( $form->{media} eq 'screen' ) { + &update; + exit; + } + } + } -sub print_check { - my ($old_form, $i) = @_; - - $display_form = ($form->{display_form}) ? $form->{display_form} : "display_form"; + if ( $form->{formname} =~ /(check|receipt)/ ) { + if ( $form->{media} ne 'screen' ) { + for (qw(action header)) { delete $form->{$_} } + $form->{invtotal} = $form->{oldinvtotal}; + + foreach $key ( keys %$form ) { + $form->{$key} =~ s/&/%26/g; + $form->{previousform} .= qq|$key=$form->{$key}&|; + } + chop $form->{previousform}; + $form->{previousform} = $form->escape( $form->{previousform}, 1 ); + } + + if ( $form->{paidaccounts} > 1 ) { + if ( $form->{"paid_$form->{paidaccounts}"} ) { + &update; + exit; + } + elsif ( $form->{paidaccounts} > 2 ) { + + # select payment + &select_payment; + exit; + } + } + else { + $form->error( $locale->text('Nothing to print!') ); + } - if ($form->{"paid_$i"}) { - @a = (); - - if (exists $form->{longformat}) { - $form->{"datepaid_$i"} = $locale->date(\%myconfig, $form->{"datepaid_$i"}, $form->{longformat}); + } + if ( $filename = $queued{ $form->{formname} } ) { + $form->{queued} =~ s/$form->{formname} $filename//; + unlink "${LedgerSMB::Sysconfig::spool}/$filename"; + $filename =~ s/\..*$//g; + } + else { + $filename = time; + $filename .= $$; } - push @a, "source_$i", "memo_$i"; - $form->format_string(@a); - } - - $form->{amount} = $form->{"paid_$i"}; - - if (($form->{formname} eq 'check' && $form->{vc} eq 'customer') || - ($form->{formname} eq 'receipt' && $form->{vc} eq 'vendor')) { - $form->{amount} =~ s/-//g; - } - - for (qw(datepaid source memo)) { $form->{$_} = $form->{"${_}_$i"} } - - &{ "$form->{vc}_details" }; - @a = qw(name address1 address2 city state zipcode country); - - foreach $item (qw(invnumber ordnumber)) { - $temp{$item} = $form->{$item}; - delete $form->{$item}; - push(@{ $form->{$item} }, $temp{$item}); - } - push(@{ $form->{invdate} }, $form->{transdate}); - push(@{ $form->{due} }, $form->format_amount(\%myconfig, $form->{oldinvtotal}, 2)); - push(@{ $form->{paid} }, $form->{"paid_$i"}); - - use LedgerSMB::CP; - $c = CP->new(($form->{language_code}) ? $form->{language_code} : $myconfig{countrycode}); - $c->init; - ($whole, $form->{decimal}) = split /\./, $form->parse_amount(\%myconfig, $form->{amount}); - - $form->{decimal} .= "00"; - $form->{decimal} = substr($form->{decimal}, 0, 2); - $form->{text_decimal} = $c->num2text($form->{decimal} * 1); - $form->{text_amount} = $c->num2text($whole); - $form->{integer_amount} = $form->format_amount($myconfig, $whole); - - ($form->{employee}) = split /--/, $form->{employee}; - - $form->{notes} =~ s/^\s+//g; - push @a, "notes"; - - for (qw(company address tel fax businessnumber)) { $form->{$_} = $myconfig{$_} } - $form->{address} =~ s/\\n/\n/g; - - push @a, qw(company address tel fax businessnumber text_amount text_decimal); - - $form->format_string(@a); - - $form->{templates} = "$myconfig{templates}"; - $form->{IN} = ($form->{formname} eq 'transaction') ? lc $form->{ARAP} . "_$form->{formname}.html" : "$form->{formname}.html"; - - if ($form->{format} =~ /(postscript|pdf)/) { - $form->{IN} =~ s/html$/tex/; - } - if ($form->{media} eq 'queue') { - - # save status - $form->update_status(\%myconfig); - - $form->{queued} = $form->{queued}; - - %audittrail = ( tablename => ($order) ? 'oe' : lc $ARAP, - reference => $form->{"${inv}number"}, - formname => $form->{formname}, - action => 'queued', - id => $form->{id} ); - - $form->{audittrail} .= $form->audittrail("", \%myconfig, \%audittrail); - $form->{OUT} = "${LedgerSMB::Sysconfig::spool}/$filename"; - $form->{printmode} = '>'; + $filename .= ( $form->{format} eq 'postscript' ) ? '.ps' : '.pdf'; + if ( $form->{media} ne 'screen' ) { + $form->{OUT} = "${LedgerSMB::Sysconfig::spool}/$filename"; + $form->{printmode} = '>'; + } $form->{queued} .= " $form->{formname} $filename"; $form->{queued} =~ s/^ //; - } + $printform = new Form; + for ( keys %$form ) { + $printform->{$_} = $form->{$_}; + } - if ($form->{media} !~ /(screen|queue)/) { + if ( $form->{printandpost} ) { + &post; + } + else { + &{"print_$form->{formname}"}( $old_form, 1 ); + } + +} - %queued = split / /, $form->{queued}; +sub print_check { + my ( $old_form, $i ) = @_; + + $display_form = + ( $form->{display_form} ) ? $form->{display_form} : "display_form"; + if ( $form->{"paid_$i"} ) { + @a = (); - $form->{OUT} = ${LedgerSMB::Sysconfig::printer}{$form->{media}}; - $form->{printmode} = '|-'; - if ($form->{printed} !~ /$form->{formname}/) { + if ( exists $form->{longformat} ) { + $form->{"datepaid_$i"} = + $locale->date( \%myconfig, $form->{"datepaid_$i"}, + $form->{longformat} ); + } + + push @a, "source_$i", "memo_$i"; + $form->format_string(@a); + } - $form->{printed} .= " $form->{formname}"; - $form->{printed} =~ s/^ //; + $form->{amount} = $form->{"paid_$i"}; - $form->update_status(\%myconfig); + if ( ( $form->{formname} eq 'check' && $form->{vc} eq 'customer' ) + || ( $form->{formname} eq 'receipt' && $form->{vc} eq 'vendor' ) ) + { + $form->{amount} =~ s/-//g; } - %audittrail = ( tablename => lc $form->{ARAP}, - reference => $form->{invnumber}, - formname => $form->{formname}, - action => 'printed', - id => $form->{id} ); - - %status = (); - for (qw(printed audittrail)) { $status{$_} = $form->{$_} } - - $status{audittrail} .= $form->audittrail("", \%myconfig, \%audittrail); + for (qw(datepaid source memo)) { $form->{$_} = $form->{"${_}_$i"} } - } + &{"$form->{vc}_details"}; + @a = qw(name address1 address2 city state zipcode country); - $form->{fileid} = $invnumber; - $form->{fileid} =~ s/(\s|\W)+//g; + foreach $item (qw(invnumber ordnumber)) { + $temp{$item} = $form->{$item}; + delete $form->{$item}; + push( @{ $form->{$item} }, $temp{$item} ); + } + push( @{ $form->{invdate} }, $form->{transdate} ); + push( + @{ $form->{due} }, + $form->format_amount( \%myconfig, $form->{oldinvtotal}, 2 ) + ); + push( @{ $form->{paid} }, $form->{"paid_$i"} ); + + use LedgerSMB::CP; + $c = + CP->new( ( $form->{language_code} ) + ? $form->{language_code} + : $myconfig{countrycode} ); + $c->init; + ( $whole, $form->{decimal} ) = split /\./, + $form->parse_amount( \%myconfig, $form->{amount} ); + + $form->{decimal} .= "00"; + $form->{decimal} = substr( $form->{decimal}, 0, 2 ); + $form->{text_decimal} = $c->num2text( $form->{decimal} * 1 ); + $form->{text_amount} = $c->num2text($whole); + $form->{integer_amount} = $form->format_amount( $myconfig, $whole ); + + ( $form->{employee} ) = split /--/, $form->{employee}; + + $form->{notes} =~ s/^\s+//g; + push @a, "notes"; + + for (qw(company address tel fax businessnumber)) { + $form->{$_} = $myconfig{$_}; + } + $form->{address} =~ s/\\n/\n/g; - $form->parse_template(\%myconfig); + push @a, + qw(company address tel fax businessnumber text_amount text_decimal); - if ($form->{previousform}) { - - $previousform = $form->unescape($form->{previousform}); + $form->format_string(@a); - for (keys %$form) { delete $form->{$_} } + $form->{templates} = "$myconfig{templates}"; + $form->{IN} = + ( $form->{formname} eq 'transaction' ) + ? lc $form->{ARAP} . "_$form->{formname}.html" + : "$form->{formname}.html"; - foreach $item (split /&/, $previousform) { - ($key, $value) = split /=/, $item, 2; - $value =~ s/%26/&/g; - $form->{$key} = $value; + if ( $form->{format} =~ /(postscript|pdf)/ ) { + $form->{IN} =~ s/html$/tex/; + } + if ( $form->{media} eq 'queue' ) { + + # save status + $form->update_status( \%myconfig ); + + $form->{queued} = $form->{queued}; + + %audittrail = ( + tablename => ($order) ? 'oe' : lc $ARAP, + reference => $form->{"${inv}number"}, + formname => $form->{formname}, + action => 'queued', + id => $form->{id} + ); + + $form->{audittrail} .= + $form->audittrail( "", \%myconfig, \%audittrail ); + $form->{OUT} = "${LedgerSMB::Sysconfig::spool}/$filename"; + $form->{printmode} = '>'; + $form->{queued} .= " $form->{formname} $filename"; + $form->{queued} =~ s/^ //; } - for (qw(exchangerate creditlimit creditremaining)) { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } + if ( $form->{media} !~ /(screen|queue)/ ) { + + %queued = split / /, $form->{queued}; + + $form->{OUT} = ${LedgerSMB::Sysconfig::printer}{ $form->{media} }; + $form->{printmode} = '|-'; + if ( $form->{printed} !~ /$form->{formname}/ ) { + + $form->{printed} .= " $form->{formname}"; + $form->{printed} =~ s/^ //; + + $form->update_status( \%myconfig ); + } - for (1 .. $form->{rowcount}) { $form->{"amount_$_"} = $form->parse_amount(\%myconfig, $form->{"amount_$_"}) } - for (split / /, $form->{taxaccounts}) { $form->{"tax_$_"} = $form->parse_amount(\%myconfig, $form->{"tax_$_"}) } + %audittrail = ( + tablename => lc $form->{ARAP}, + reference => $form->{invnumber}, + formname => $form->{formname}, + action => 'printed', + id => $form->{id} + ); + + %status = (); + for (qw(printed audittrail)) { $status{$_} = $form->{$_} } + + $status{audittrail} .= + $form->audittrail( "", \%myconfig, \%audittrail ); - for $i (1 .. $form->{paidaccounts}) { - for (qw(paid exchangerate)) { $form->{"${_}_$i"} = $form->parse_amount(\%myconfig, $form->{"${_}_$i"}) } } - for (qw(printed audittrail)) { $form->{$_} = $status{$_} } + $form->{fileid} = $invnumber; + $form->{fileid} =~ s/(\s|\W)+//g; - &{ "$display_form" }; - - } + $form->parse_template( \%myconfig ); -} + if ( $form->{previousform} ) { + $previousform = $form->unescape( $form->{previousform} ); -sub print_receipt { - my ($old_form, $i) = @_; - - &print_check($old_form, $i); + for ( keys %$form ) { delete $form->{$_} } + + foreach $item ( split /&/, $previousform ) { + ( $key, $value ) = split /=/, $item, 2; + $value =~ s/%26/&/g; + $form->{$key} = $value; + } + + for (qw(exchangerate creditlimit creditremaining)) { + $form->{$_} = $form->parse_amount( \%myconfig, $form->{$_} ); + } + + for ( 1 .. $form->{rowcount} ) { + $form->{"amount_$_"} = + $form->parse_amount( \%myconfig, $form->{"amount_$_"} ); + } + for ( split / /, $form->{taxaccounts} ) { + $form->{"tax_$_"} = + $form->parse_amount( \%myconfig, $form->{"tax_$_"} ); + } + + for $i ( 1 .. $form->{paidaccounts} ) { + for (qw(paid exchangerate)) { + $form->{"${_}_$i"} = + $form->parse_amount( \%myconfig, $form->{"${_}_$i"} ); + } + } + + for (qw(printed audittrail)) { $form->{$_} = $status{$_} } + + &{"$display_form"}; + + } } +sub print_receipt { + my ( $old_form, $i ) = @_; + + &print_check( $old_form, $i ); + +} sub print_transaction { - my ($old_form) = @_; - - $display_form = ($form->{display_form}) ? $form->{display_form} : "display_form"; - - - &{ "$form->{vc}_details" }; - @a = qw(name address1 address2 city state zipcode country); - - - $form->{invtotal} = 0; - foreach $i (1 .. $form->{rowcount} - 1) { - ($form->{tempaccno}, $form->{tempaccount}) = split /--/, $form->{"$form->{ARAP}_amount_$i"}; - ($form->{tempprojectnumber}) = split /--/, $form->{"projectnumber_$i"}; - $form->{tempdescription} = $form->{"description_$i"}; - - $form->format_string(qw(tempaccno tempaccount tempprojectnumber tempdescription)); - - push(@{ $form->{accno} }, $form->{tempaccno}); - push(@{ $form->{account} }, $form->{tempaccount}); - push(@{ $form->{description} }, $form->{tempdescription}); - push(@{ $form->{projectnumber} }, $form->{tempprojectnumber}); - - push(@{ $form->{amount} }, $form->{"amount_$i"}); - - $form->{subtotal} += $form->parse_amount(\%myconfig, $form->{"amount_$i"}); - - } - foreach $accno (split / /, $form->{taxaccounts}) { - if ($form->{"tax_$accno"}) { - $form->format_string("${accno}_description"); - - $tax += $form->parse_amount(\%myconfig, $form->{"tax_$accno"}); - - $form->{"${accno}_tax"} = $form->{"tax_$accno"}; - push(@{ $form->{tax} }, $form->{"tax_$accno"}); - - push(@{ $form->{taxdescription} }, $form->{"${accno}_description"}); - - $form->{"${accno}_taxrate"} = $form->format_amount($myconfig, $form->{"${accno}_rate"} * 100); - push(@{ $form->{taxrate} }, $form->{"${accno}_taxrate"}); - - push(@{ $form->{taxnumber} }, $form->{"${accno}_taxnumber"}); - } - } - - $tax = 0 if $form->{taxincluded}; - - push @a, $form->{ARAP}; - $form->format_string(@a); - - $form->{paid} = 0; - for $i (1 .. $form->{paidaccounts} - 1) { - - if ($form->{"paid_$i"}) { - @a = (); - $form->{paid} += $form->parse_amount(\%myconfig, $form->{"paid_$i"}); - - if (exists $form->{longformat}) { - $form->{"datepaid_$i"} = $locale->date(\%myconfig, $form->{"datepaid_$i"}, $form->{longformat}); - } - - push @a, "$form->{ARAP}_paid_$i", "source_$i", "memo_$i"; + my ($old_form) = @_; + + $display_form = + ( $form->{display_form} ) ? $form->{display_form} : "display_form"; + + &{"$form->{vc}_details"}; + @a = qw(name address1 address2 city state zipcode country); + + $form->{invtotal} = 0; + foreach $i ( 1 .. $form->{rowcount} - 1 ) { + ( $form->{tempaccno}, $form->{tempaccount} ) = split /--/, + $form->{"$form->{ARAP}_amount_$i"}; + ( $form->{tempprojectnumber} ) = split /--/, + $form->{"projectnumber_$i"}; + $form->{tempdescription} = $form->{"description_$i"}; + + $form->format_string( + qw(tempaccno tempaccount tempprojectnumber tempdescription)); + + push( @{ $form->{accno} }, $form->{tempaccno} ); + push( @{ $form->{account} }, $form->{tempaccount} ); + push( @{ $form->{description} }, $form->{tempdescription} ); + push( @{ $form->{projectnumber} }, $form->{tempprojectnumber} ); + + push( @{ $form->{amount} }, $form->{"amount_$i"} ); + + $form->{subtotal} += + $form->parse_amount( \%myconfig, $form->{"amount_$i"} ); + + } + foreach $accno ( split / /, $form->{taxaccounts} ) { + if ( $form->{"tax_$accno"} ) { + $form->format_string("${accno}_description"); + + $tax += $form->parse_amount( \%myconfig, $form->{"tax_$accno"} ); + + $form->{"${accno}_tax"} = $form->{"tax_$accno"}; + push( @{ $form->{tax} }, $form->{"tax_$accno"} ); + + push( + @{ $form->{taxdescription} }, + $form->{"${accno}_description"} + ); + + $form->{"${accno}_taxrate"} = + $form->format_amount( $myconfig, $form->{"${accno}_rate"} * 100 ); + push( @{ $form->{taxrate} }, $form->{"${accno}_taxrate"} ); + + push( @{ $form->{taxnumber} }, $form->{"${accno}_taxnumber"} ); + } + } + + $tax = 0 if $form->{taxincluded}; + + push @a, $form->{ARAP}; $form->format_string(@a); - - ($accno, $account) = split /--/, $form->{"$form->{ARAP}_paid_$i"}; - - push(@{ $form->{payment} }, $form->{"paid_$i"}); - push(@{ $form->{paymentdate} }, $form->{"datepaid_$i"}); - push(@{ $form->{paymentaccount} }, $account); - push(@{ $form->{paymentsource} }, $form->{"source_$i"}); - push(@{ $form->{paymentmemo} }, $form->{"memo_$i"}); - } - - } - - $form->{invtotal} = $form->{subtotal} + $tax; - $form->{total} = $form->{invtotal} - $form->{paid}; - - use LedgerSMB::CP; - $c = CP->new(($form->{language_code}) ? $form->{language_code} : $myconfig{countrycode}); - $c->init; - ($whole, $form->{decimal}) = split /\./, $form->{invtotal}; - - $form->{decimal} .= "00"; - $form->{decimal} = substr($form->{decimal}, 0, 2); - $form->{text_decimal} = $c->num2text($form->{decimal} * 1); - $form->{text_amount} = $c->num2text($whole); - $form->{integer_amount} = $form->format_amount($myconfig, $whole); - - for (qw(invtotal subtotal paid total)) { $form->{$_} = $form->format_amount(\%myconfig, $form->{$_}, 2) } - - ($form->{employee}) = split /--/, $form->{employee}; - - if (exists $form->{longformat}) { - for (qw(duedate transdate)) { $form->{$_} = $locale->date(\%myconfig, $form->{$_}, $form->{longformat}) } - } - - $form->{notes} =~ s/^\s+//g; - - @a = ("invnumber", "transdate", "duedate", "notes"); - - for (qw(company address tel fax businessnumber)) { $form->{$_} = $myconfig{$_} } - $form->{address} =~ s/\\n/\n/g; - - push @a, qw(company address tel fax businessnumber text_amount text_decimal); - - $form->format_string(@a); - - $form->{invdate} = $form->{transdate}; - - $form->{templates} = "$myconfig{templates}"; - $form->{IN} = ($form->{formname} eq 'transaction') ? lc $form->{ARAP} . "_$form->{formname}.html" : "$form->{formname}.html"; - - if ($form->{format} =~ /(postscript|pdf)/) { - $form->{IN} =~ s/html$/tex/; - } - if ($form->{media} eq 'queue') { - %queued = split / /, $form->{queued}; - - if ($filename = $queued{$form->{formname}}) { - $form->{queued} =~ s/$form->{formname} $filename//; - unlink "${LedgerSMB::Sysconfig::spool}/$filename"; - $filename =~ s/\..*$//g; - } else { - $filename = time; - $filename .= $$; - } - - $filename .= ($form->{format} eq 'postscript') ? '.ps' : '.pdf'; - $form->{OUT} = "${LedgerSMB::Sysconfig::spool}/$filename"; - $form->{printmode} = '>'; - $form->{queued} .= " $form->{formname} $filename"; - $form->{queued} =~ s/^ //; + $form->{paid} = 0; + for $i ( 1 .. $form->{paidaccounts} - 1 ) { - # save status - $form->update_status(\%myconfig); + if ( $form->{"paid_$i"} ) { + @a = (); + $form->{paid} += + $form->parse_amount( \%myconfig, $form->{"paid_$i"} ); - $old_form->{queued} = $form->{queued}; + if ( exists $form->{longformat} ) { + $form->{"datepaid_$i"} = + $locale->date( \%myconfig, $form->{"datepaid_$i"}, + $form->{longformat} ); + } - %audittrail = ( tablename => ($order) ? 'oe' : lc $ARAP, - reference => $form->{"${inv}number"}, - formname => $form->{formname}, - action => 'queued', - id => $form->{id} ); + push @a, "$form->{ARAP}_paid_$i", "source_$i", "memo_$i"; + $form->format_string(@a); - $old_form->{audittrail} .= $form->audittrail("", \%myconfig, \%audittrail); - } + ( $accno, $account ) = split /--/, $form->{"$form->{ARAP}_paid_$i"}; - if ($form->{media} !~ /(queue|screen)/) { - $form->{OUT} = ${LedgerSMB::Sysconfig::printer}{$form->{media}}; - $form->{printmode} = '|-'; - - if ($form->{printed} !~ /$form->{formname}/) { + push( @{ $form->{payment} }, $form->{"paid_$i"} ); + push( @{ $form->{paymentdate} }, $form->{"datepaid_$i"} ); + push( @{ $form->{paymentaccount} }, $account ); + push( @{ $form->{paymentsource} }, $form->{"source_$i"} ); + push( @{ $form->{paymentmemo} }, $form->{"memo_$i"} ); + } - $form->{printed} .= " $form->{formname}"; - $form->{printed} =~ s/^ //; + } - $form->update_status(\%myconfig); + $form->{invtotal} = $form->{subtotal} + $tax; + $form->{total} = $form->{invtotal} - $form->{paid}; + + use LedgerSMB::CP; + $c = + CP->new( ( $form->{language_code} ) + ? $form->{language_code} + : $myconfig{countrycode} ); + $c->init; + ( $whole, $form->{decimal} ) = split /\./, $form->{invtotal}; + + $form->{decimal} .= "00"; + $form->{decimal} = substr( $form->{decimal}, 0, 2 ); + $form->{text_decimal} = $c->num2text( $form->{decimal} * 1 ); + $form->{text_amount} = $c->num2text($whole); + $form->{integer_amount} = $form->format_amount( $myconfig, $whole ); + + for (qw(invtotal subtotal paid total)) { + $form->{$_} = $form->format_amount( \%myconfig, $form->{$_}, 2 ); } - $old_form->{printed} = $form->{printed} if %$old_form; - - %audittrail = ( tablename => lc $form->{ARAP}, - reference => $form->{"invnumber"}, - formname => $form->{formname}, - action => 'printed', - id => $form->{id} ); - - $old_form->{audittrail} .= $form->audittrail("", \%myconfig, \%audittrail) if %$old_form; + ( $form->{employee} ) = split /--/, $form->{employee}; + + if ( exists $form->{longformat} ) { + for (qw(duedate transdate)) { + $form->{$_} = + $locale->date( \%myconfig, $form->{$_}, $form->{longformat} ); + } + } - } + $form->{notes} =~ s/^\s+//g; - $form->{fileid} = $form->{invnumber}; - $form->{fileid} =~ s/(\s|\W)+//g; + @a = ( "invnumber", "transdate", "duedate", "notes" ); - $form->parse_template(\%myconfig); + for (qw(company address tel fax businessnumber)) { + $form->{$_} = $myconfig{$_}; + } + $form->{address} =~ s/\\n/\n/g; - if (%$old_form) { - $old_form->{invnumber} = $form->{invnumber}; - $old_form->{invtotal} = $form->{invtotal}; + push @a, + qw(company address tel fax businessnumber text_amount text_decimal); - for (keys %$form) { delete $form->{$_} } - for (keys %$old_form) { $form->{$_} = $old_form->{$_} } + $form->format_string(@a); - if (! $form->{printandpost}) { - for (qw(exchangerate creditlimit creditremaining)) { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } + $form->{invdate} = $form->{transdate}; - for (1 .. $form->{rowcount}) { $form->{"amount_$_"} = $form->parse_amount(\%myconfig, $form->{"amount_$_"}) } - for (split / /, $form->{taxaccounts}) { $form->{"tax_$_"} = $form->parse_amount(\%myconfig, $form->{"tax_$_"}) } + $form->{templates} = "$myconfig{templates}"; + $form->{IN} = + ( $form->{formname} eq 'transaction' ) + ? lc $form->{ARAP} . "_$form->{formname}.html" + : "$form->{formname}.html"; - for $i (1 .. $form->{paidaccounts}) { - for (qw(paid exchangerate)) { $form->{"${_}_$i"} = $form->parse_amount(\%myconfig, $form->{"${_}_$i"}) } - } + if ( $form->{format} =~ /(postscript|pdf)/ ) { + $form->{IN} =~ s/html$/tex/; + } + if ( $form->{media} eq 'queue' ) { + %queued = split / /, $form->{queued}; + + if ( $filename = $queued{ $form->{formname} } ) { + $form->{queued} =~ s/$form->{formname} $filename//; + unlink "${LedgerSMB::Sysconfig::spool}/$filename"; + $filename =~ s/\..*$//g; + } + else { + $filename = time; + $filename .= $$; + } + + $filename .= ( $form->{format} eq 'postscript' ) ? '.ps' : '.pdf'; + $form->{OUT} = "${LedgerSMB::Sysconfig::spool}/$filename"; + $form->{printmode} = '>'; + + $form->{queued} .= " $form->{formname} $filename"; + $form->{queued} =~ s/^ //; + + # save status + $form->update_status( \%myconfig ); + + $old_form->{queued} = $form->{queued}; + + %audittrail = ( + tablename => ($order) ? 'oe' : lc $ARAP, + reference => $form->{"${inv}number"}, + formname => $form->{formname}, + action => 'queued', + id => $form->{id} + ); + + $old_form->{audittrail} .= + $form->audittrail( "", \%myconfig, \%audittrail ); } - - &{ "$display_form" }; - } + if ( $form->{media} !~ /(queue|screen)/ ) { + $form->{OUT} = ${LedgerSMB::Sysconfig::printer}{ $form->{media} }; + $form->{printmode} = '|-'; -} + if ( $form->{printed} !~ /$form->{formname}/ ) { + + $form->{printed} .= " $form->{formname}"; + $form->{printed} =~ s/^ //; + + $form->update_status( \%myconfig ); + } + + $old_form->{printed} = $form->{printed} if %$old_form; + + %audittrail = ( + tablename => lc $form->{ARAP}, + reference => $form->{"invnumber"}, + formname => $form->{formname}, + action => 'printed', + id => $form->{id} + ); + + $old_form->{audittrail} .= + $form->audittrail( "", \%myconfig, \%audittrail ) + if %$old_form; + } + + $form->{fileid} = $form->{invnumber}; + $form->{fileid} =~ s/(\s|\W)+//g; + + $form->parse_template( \%myconfig ); + + if (%$old_form) { + $old_form->{invnumber} = $form->{invnumber}; + $old_form->{invtotal} = $form->{invtotal}; + + for ( keys %$form ) { delete $form->{$_} } + for ( keys %$old_form ) { $form->{$_} = $old_form->{$_} } + + if ( !$form->{printandpost} ) { + for (qw(exchangerate creditlimit creditremaining)) { + $form->{$_} = $form->parse_amount( \%myconfig, $form->{$_} ); + } + + for ( 1 .. $form->{rowcount} ) { + $form->{"amount_$_"} = + $form->parse_amount( \%myconfig, $form->{"amount_$_"} ); + } + for ( split / /, $form->{taxaccounts} ) { + $form->{"tax_$_"} = + $form->parse_amount( \%myconfig, $form->{"tax_$_"} ); + } + + for $i ( 1 .. $form->{paidaccounts} ) { + for (qw(paid exchangerate)) { + $form->{"${_}_$i"} = + $form->parse_amount( \%myconfig, $form->{"${_}_$i"} ); + } + } + } -sub vendor_details { IR->vendor_details(\%myconfig, \%$form) }; -sub customer_details { IS->customer_details(\%myconfig, \%$form) }; + &{"$display_form"}; + } + +} + +sub vendor_details { IR->vendor_details( \%myconfig, \%$form ) } +sub customer_details { IS->customer_details( \%myconfig, \%$form ) } sub select_payment { - @column_index = ("ndx", "datepaid", "source", "memo", "paid", "$form->{ARAP}_paid"); + @column_index = + ( "ndx", "datepaid", "source", "memo", "paid", "$form->{ARAP}_paid" ); - # list payments with radio button on a form - $form->header; + # list payments with radio button on a form + $form->header; - $title = $locale->text('Select payment'); + $title = $locale->text('Select payment'); - $column_data{ndx} = qq|<th width=1%> </th>|; - $column_data{datepaid} = qq|<th>|.$locale->text('Date').qq|</th>|; - $column_data{source} = qq|<th>|.$locale->text('Source').qq|</th>|; - $column_data{memo} = qq|<th>|.$locale->text('Memo').qq|</th>|; - $column_data{paid} = qq|<th>|.$locale->text('Amount').qq|</th>|; - $column_data{"$form->{ARAP}_paid"} = qq|<th>|.$locale->text('Account').qq|</th>|; + $column_data{ndx} = qq|<th width=1%> </th>|; + $column_data{datepaid} = qq|<th>| . $locale->text('Date') . qq|</th>|; + $column_data{source} = qq|<th>| . $locale->text('Source') . qq|</th>|; + $column_data{memo} = qq|<th>| . $locale->text('Memo') . qq|</th>|; + $column_data{paid} = qq|<th>| . $locale->text('Amount') . qq|</th>|; + $column_data{"$form->{ARAP}_paid"} = + qq|<th>| . $locale->text('Account') . qq|</th>|; - print qq| + print qq| <body> <form method=post action=$form->{script}> @@ -533,38 +610,42 @@ sub select_payment { <table width=100%> <tr class=listheading>|; - for (@column_index) { print "\n$column_data{$_}" } - - print qq| + for (@column_index) { print "\n$column_data{$_}" } + + print qq| </tr> |; - $checked = "checked"; - foreach $i (1 .. $form->{paidaccounts} - 1) { + $checked = "checked"; + foreach $i ( 1 .. $form->{paidaccounts} - 1 ) { - for (@column_index) { $column_data{$_} = qq|<td>$form->{"${_}_$i"}</td>| } + for (@column_index) { + $column_data{$_} = qq|<td>$form->{"${_}_$i"}</td>|; + } - $paid = $form->{"paid_$i"}; - $ok = 1; + $paid = $form->{"paid_$i"}; + $ok = 1; - $column_data{ndx} = qq|<td><input name=ndx class=radio type=radio value=$i $checked></td>|; - $column_data{paid} = qq|<td align=right>$paid</td>|; + $column_data{ndx} = +qq|<td><input name=ndx class=radio type=radio value=$i $checked></td>|; + $column_data{paid} = qq|<td align=right>$paid</td>|; - $checked = ""; - - $j++; $j %= 2; - print qq| + $checked = ""; + + $j++; + $j %= 2; + print qq| <tr class=listrow$j>|; - for (@column_index) { print "\n$column_data{$_}" } + for (@column_index) { print "\n$column_data{$_}" } - print qq| + print qq| </tr> |; - } - - print qq| + } + + print qq| </table> </td> </tr> @@ -574,80 +655,88 @@ sub select_payment { </table> |; - for (qw(action nextsub)) { delete $form->{$_} } + for (qw(action nextsub)) { delete $form->{$_} } + + $form->hide_form; - $form->hide_form; - - print qq| + print qq| <br> <input type=hidden name=nextsub value=payment_selected> |; - if ($ok) { - print qq| -<button class="submit" type="submit" name="action" value="continue">|.$locale->text('Continue').qq|</button>|; - } + if ($ok) { + print qq| +<button class="submit" type="submit" name="action" value="continue">| + . $locale->text('Continue') + . qq|</button>|; + } - print qq| + print qq| </form> </body> </html> |; - + } sub payment_selected { - &{ "print_$form->{formname}" }($form->{oldform}, $form->{ndx}); + &{"print_$form->{formname}"}( $form->{oldform}, $form->{ndx} ); } - sub print_options { - if ($form->{selectlanguage}) { - $form->{"selectlanguage"} = $form->unescape($form->{"selectlanguage"}); - $form->{"selectlanguage"} =~ s/ selected//; - $form->{"selectlanguage"} =~ s/(<option value="\Q$form->{language_code}\E")/$1 selected/; - $lang = qq|<select name=language_code>$form->{selectlanguage}</select> - <input type=hidden name=selectlanguage value="|. - $form->escape($form->{selectlanguage},1).qq|">|; - } - - $form->{selectformname} = $form->unescape($form->{selectformname}); - $form->{selectformname} =~ s/ selected//; - $form->{selectformname} =~ s/(<option value="\Q$form->{formname}\E")/$1 selected/; - - $type = qq|<select name=formname>$form->{selectformname}</select> - <input type=hidden name=selectformname value="|.$form->escape($form->{selectformname},1).qq|">|; - - $media = qq|<select name=media> - <option value="screen">|.$locale->text('Screen'); - - $form->{selectformat} = qq|<option value="html">html\n|; - - if (%{LedgerSMB::Sysconfig::printer} && ${LedgerSMB::Sysconfig::latex}) { - for (sort keys %{LedgerSMB::Sysconfig::printer}) { $media .= qq| - <option value="$_">$_| } - } - - if (${LedgerSMB::Sysconfig::latex}) { - $form->{selectformat} .= qq| - <option value="postscript">|.$locale->text('Postscript').qq| - <option value="pdf">|.$locale->text('PDF'); - $media .= qq|<option value="queue">|.$locale->text('Queue'); - } - - $format = qq|<select name=format>$form->{selectformat}</select>|; - $format =~ s/(<option value="\Q$form->{format}\E")/$1 selected/; - $format .= qq| - <input type=hidden name=selectformat value="|.$form->escape($form->{selectformat},1).qq|">|; - $media .= qq|</select>|; - $media =~ s/(<option value="\Q$form->{media}\E")/$1 selected/; - - print qq| + if ( $form->{selectlanguage} ) { + $form->{"selectlanguage"} = + $form->unescape( $form->{"selectlanguage"} ); + $form->{"selectlanguage"} =~ s/ selected//; + $form->{"selectlanguage"} =~ + s/(<option value="\Q$form->{language_code}\E")/$1 selected/; + $lang = qq|<select name=language_code>$form->{selectlanguage}</select> + <input type=hidden name=selectlanguage value="| + . $form->escape( $form->{selectlanguage}, 1 ) . qq|">|; + } + + $form->{selectformname} = $form->unescape( $form->{selectformname} ); + $form->{selectformname} =~ s/ selected//; + $form->{selectformname} =~ + s/(<option value="\Q$form->{formname}\E")/$1 selected/; + + $type = qq|<select name=formname>$form->{selectformname}</select> + <input type=hidden name=selectformname value="| + . $form->escape( $form->{selectformname}, 1 ) . qq|">|; + + $media = qq|<select name=media> + <option value="screen">| . $locale->text('Screen'); + + $form->{selectformat} = qq|<option value="html">html\n|; + + if ( %{LedgerSMB::Sysconfig::printer} && ${LedgerSMB::Sysconfig::latex} ) { + for ( sort keys %{LedgerSMB::Sysconfig::printer} ) { + $media .= qq| + <option value="$_">$_|; + } + } + + if ( ${LedgerSMB::Sysconfig::latex} ) { + $form->{selectformat} .= qq| + <option value="postscript">| . $locale->text('Postscript') . qq| + <option value="pdf">| . $locale->text('PDF'); + $media .= qq|<option value="queue">| . $locale->text('Queue'); + } + + $format = qq|<select name=format>$form->{selectformat}</select>|; + $format =~ s/(<option value="\Q$form->{format}\E")/$1 selected/; + $format .= qq| + <input type=hidden name=selectformat value="| + . $form->escape( $form->{selectformat}, 1 ) . qq|">|; + $media .= qq|</select>|; + $media =~ s/(<option value="\Q$form->{media}\E")/$1 selected/; + + print qq| <table width=100%> <tr> <td>$type</td> @@ -657,15 +746,15 @@ sub print_options { <td align=right width=90%> |; - if ($form->{printed} =~ /$form->{formname}/) { - print $locale->text('Printed').qq|<br>|; - } + if ( $form->{printed} =~ /$form->{formname}/ ) { + print $locale->text('Printed') . qq|<br>|; + } - if ($form->{recurring}) { - print $locale->text('Scheduled'); - } + if ( $form->{recurring} ) { + print $locale->text('Scheduled'); + } - print qq| + print qq| </td> </tr> </table> @@ -673,16 +762,16 @@ sub print_options { } - sub print_and_post { - $form->error($locale->text('Select postscript or PDF!')) if $form->{format} !~ /(postscript|pdf)/; - $form->error($locale->text('Select a Printer!')) if $form->{media} eq 'screen'; + $form->error( $locale->text('Select postscript or PDF!') ) + if $form->{format} !~ /(postscript|pdf)/; + $form->error( $locale->text('Select a Printer!') ) + if $form->{media} eq 'screen'; - $form->{printandpost} = 1; - $form->{display_form} = "post"; - &print; + $form->{printandpost} = 1; + $form->{display_form} = "post"; + &print; } - |