- #=====================================================================
- # LedgerSMB Small Medium Business Accounting
- # http://www.ledgersmb.org/
- #
- # Copyright (C) 2006
- # This work contains copyrighted information from a number of sources all used
- # 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,
- # maintainers, and copyright holders, see the CONTRIBUTORS file.
- #
- # Original Copyright Notice from SQL-Ledger 2.6.17 (before the fork):
- # Copyright (c) 2003
- #
- # 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
- # 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.
- #======================================================================
- #
- # common routines for gl, ar, ap, is, ir, oe
- #
- use LedgerSMB::AA;
- # any custom scripts for this one
- if ( -f "bin/custom/arap.pl" ) {
- eval { require "bin/custom/arap.pl"; };
- }
- if ( -f "bin/custom/$form->{login}_arap.pl" ) {
- eval { require "bin/custom/$form->{login}_arap.pl"; };
- }
- 1;
- # end of main
- sub check_name {
- my ($name) = @_;
- my ( $new_name, $new_id ) = split /--/, $form->{$name};
- my $rv = 0;
- # if we use a selection
- if ( $form->{"select$name"} ) {
- if ( $form->{"old$name"} ne $form->{$name} ) {
- # this is needed for is, ir and oe
- for ( split / /, $form->{taxaccounts} ) {
- delete $form->{"${_}_rate"};
- }
- # for credit calculations
- $form->{oldinvtotal} = 0;
- $form->{oldtotalpaid} = 0;
- $form->{calctax} = 1;
- $form->{"${name}_id"} = $new_id;
- AA->get_name( \%myconfig, \%$form );
- $form->{$name} = $form->{"old$name"} = "$new_name--$new_id";
- $form->{currency} =~ s/ //g;
- # put employee together if there is a new employee_id
- $form->{employee} = "$form->{employee}--$form->{employee_id}"
- if $form->{employee_id};
- $rv = 1;
- }
- }
- else {
- # check name, combine name and id
- if ( $form->{"old$name"} ne qq|$form->{$name}--$form->{"${name}_id"}| )
- {
- # this is needed for is, ir and oe
- for ( split / /, $form->{taxaccounts} ) {
- delete $form->{"${_}_rate"};
- }
- # for credit calculations
- $form->{oldinvtotal} = 0;
- $form->{oldtotalpaid} = 0;
- $form->{calctax} = 1;
- # return one name or a list of names in $form->{name_list}
- if (
- (
- $rv =
- $form->get_name( \%myconfig, $name, $form->{transdate} )
- ) > 1
- )
- {
- &select_name($name);
- exit;
- }
- if ( $rv == 1 ) {
- # we got one name
- $form->{"${name}_id"} = $form->{name_list}[0]->{id};
- $form->{$name} = $form->{name_list}[0]->{name};
- $form->{"old$name"} = qq|$form->{$name}--$form->{"${name}_id"}|;
- AA->get_name( \%myconfig, \%$form );
- $form->{currency} =~ s/ //g;
- # put employee together if there is a new employee_id
- $form->{employee} = "$form->{employee}--$form->{employee_id}"
- if $form->{employee_id};
- }
- else {
- # name is not on file
- $msg = ucfirst $name . " not on file!";
- $form->error( $locale->text($msg) );
- }
- }
- }
- $rv;
- }
- # $locale->text('Customer not on file!')
- # $locale->text('Vendor not on file!')
- sub select_name {
- my ($table) = @_;
- @column_index = qw(ndx name address);
- $label = ucfirst $table;
- $column_data{ndx} = qq|<th> </th>|;
- $column_data{name} =
- qq|<th class="listheading">| . $locale->text($label) . qq|</th>|;
- $column_data{address} =
- qq|<th class="listheading" colspan="5">|
- . $locale->text('Address')
- . qq|</th>|;
- # list items with radio button on a form
- $form->header;
- $title = $locale->text('Select from one of the names below');
- print qq|
- <body>
- <form method="post" action="$form->{script}">
- <table width="100%">
- <tr>
- <th class="listtop">$title</th>
- </tr>
- <tr space="5"></tr>
- <tr>
- <td>
- <table width="100%">
- <tr class="listheading">|;
- for (@column_index) { print "\n$column_data{$_}" }
- print qq|
- </tr>
- |;
- @column_index = qw(ndx name address city state zipcode country);
- my $i = 0;
- foreach $ref ( @{ $form->{name_list} } ) {
- $checked = ( $i++ ) ? "" : "checked";
- $ref->{name} = $form->quote( $ref->{name} );
- $column_data{ndx} =
- qq|<td><input name="ndx" class="radio" type="radio" value="$i" $checked></td>|;
- $column_data{name} =
- qq|<td><input name="new_name_$i" type="hidden" value="$ref->{name}">$ref->{name}</td>|;
- $column_data{address} = qq|<td>$ref->{address1} $ref->{address2}</td>|;
- for (qw(city state zipcode country)) {
- $column_data{$_} = qq|<td>$ref->{$_} </td>|;
- }
- $j++;
- $j %= 2;
- print qq|
- <tr class="listrow$j">|;
- for (@column_index) { print "\n$column_data{$_}" }
- print qq|
- </tr>
- <input name="new_id_$i" type="hidden" value="$ref->{id}">
- |;
- }
- print qq|
- </table>
- </td>
- </tr>
- <tr>
- <td><hr size="3" noshade></td>
- </tr>
- </table>
- <input name="lastndx" type="hidden" value="$i">
- |;
- # delete variables
- for (qw(nextsub name_list)) { delete $form->{$_} }
- $form->{action} = "name_selected";
- $form->hide_form;
- print qq|
- <input type="hidden" name="nextsub" value="name_selected">
- <input type="hidden" name="vc" value="$table">
- <br>
- <button class="submit" type="submit" name="action" value="continue">|
- . $locale->text('Continue')
- . qq|</button>
- </form>
- </body>
- </html>
- |;
- }
- sub name_selected {
- # replace the variable with the one checked
- # index for new item
- $i = $form->{ndx};
- $form->{ $form->{vc} } = $form->{"new_name_$i"};
- $form->{"$form->{vc}_id"} = $form->{"new_id_$i"};
- $form->{"old$form->{vc}"} =
- qq|$form->{$form->{vc}}--$form->{"$form->{vc}_id"}|;
- # delete all the new_ variables
- for $i ( 1 .. $form->{lastndx} ) {
- for (qw(id, name)) { delete $form->{"new_${_}_$i"} }
- }
- for (qw(ndx lastndx nextsub)) { delete $form->{$_} }
- AA->get_name( \%myconfig, \%$form );
- # put employee together if there is a new employee_id
- $form->{employee} = "$form->{employee}--$form->{employee_id}"
- if $form->{employee_id};
- &update(1);
- }
- sub rebuild_vc {
- my ( $vc, $ARAP, $transdate, $job ) = @_;
- ( $null, $form->{employee_id} ) = split /--/, $form->{employee};
- $form->all_vc( \%myconfig, $vc, $ARAP, undef, $transdate, $job );
- $form->{"select$vc"} = "";
- for ( @{ $form->{"all_$vc"} } ) {
- $form->{"select$vc"} .=
- qq|<option value="$_->{name}--$_->{id}">$_->{name}\n|;
- }
- $form->{selectprojectnumber} = "";
- if ( @{ $form->{all_project} } ) {
- $form->{selectprojectnumber} = "<option>\n";
- for ( @{ $form->{all_project} } ) {
- $form->{selectprojectnumber} .=
- qq|<option value="$_->{projectnumber}--$_->{id}">$_->{projectnumber}\n|;
- }
- }
- 1;
- }
- sub add_transaction {
- my ($module) = @_;
- delete $form->{script};
- $form->{action} = "add";
- $form->{type} = "invoice" if $module =~ /(is|ir)/;
- $form->{callback} = $form->escape( $form->{callback}, 1 );
- $argv = "";
- for ( keys %$form ) { $argv .= "$_=$form->{$_}&" if $_ ne 'dbh' }
- $form->{callback} = "$module.pl?$argv";
- $form->redirect;
- }
- sub check_project {
- for $i ( 1 .. $form->{rowcount} ) {
- $form->{"project_id_$i"} = "" unless $form->{"projectnumber_$i"};
- if ( $form->{"projectnumber_$i"} ne $form->{"oldprojectnumber_$i"} ) {
- if ( $form->{"projectnumber_$i"} ) {
- # get new project
- $form->{projectnumber} = $form->{"projectnumber_$i"};
- if ( ( $rows = PE->projects( \%myconfig, $form ) ) > 1 ) {
- # check form->{project_list} how many there are
- $form->{rownumber} = $i;
- &select_project;
- exit;
- }
- if ( $rows == 1 ) {
- $form->{"project_id_$i"} = $form->{project_list}->[0]->{id};
- $form->{"projectnumber_$i"} =
- $form->{project_list}->[0]->{projectnumber};
- $form->{"oldprojectnumber_$i"} =
- $form->{project_list}->[0]->{projectnumber};
- }
- else {
- # not on file
- $form->error( $locale->text('Project not on file!') );
- }
- }
- else {
- $form->{"oldprojectnumber_$i"} = "";
- }
- }
- }
- }
- sub select_project {
- @column_index = qw(ndx projectnumber description);
- $column_data{ndx} = qq|<th> </th>|;
- $column_data{projectnumber} =
- qq|<th>| . $locale->text('Number') . qq|</th>|;
- $column_data{description} =
- qq|<th>| . $locale->text('Description') . qq|</th>|;
- # list items with radio button on a form
- $form->header;
- $title = $locale->text('Select from one of the projects below');
- print qq|
- <body>
- <form method="post" action="$form->{script}">
- <input type=hidden name="rownumber" value="$form->{rownumber}">
- <table width="100%">
- <tr>
- <th class="listtop">$title</th>
- </tr>
- <tr space="5"></tr>
- <tr>
- <td>
- <table width="100%">
- <tr class="listheading">|;
- for (@column_index) { print "\n$column_data{$_}" }
- print qq|
- </tr>
- |;
- my $i = 0;
- foreach $ref ( @{ $form->{project_list} } ) {
- $checked = ( $i++ ) ? "" : "checked";
- $ref->{name} = $form->quote( $ref->{name} );
- $column_data{ndx} =
- qq|<td><input name="ndx" class="radio" type="radio" value="$i" $checked></td>|;
- $column_data{projectnumber} =
- qq|<td><input name="new_projectnumber_$i" type="hidden" value="$ref->{projectnumber}">$ref->{projectnumber}</td>|;
- $column_data{description} = qq|<td>$ref->{description}</td>|;
- $j++;
- $j %= 2;
- print qq|
- <tr class="listrow$j">|;
- for (@column_index) { print "\n$column_data{$_}" }
- print qq|
- </tr>
- <input name="new_id_$i" type="hidden" value="$ref->{id}">
- |;
- }
- print qq|
- </table>
- </td>
- </tr>
- <tr>
- <td><hr size="3" noshade></td>
- </tr>
- </table>
- <input name="lastndx" type="hidden" value="$i">
- |;
- # delete list variable
- for (qw(nextsub project_list)) { delete $form->{$_} }
- $form->{action} = "project_selected";
- $form->hide_form;
- print qq|
- <input type="hidden" name="nextsub" value="project_selected">
- <br>
- <button class="submit" type="submit" name="action" value="continue">|
- . $locale->text('Continue')
- . qq|</button>
- </form>
- </body>
- </html>
- |;
- }
- sub project_selected {
- # replace the variable with the one checked
- # index for new item
- $i = $form->{ndx};
- $form->{"projectnumber_$form->{rownumber}"} =
- $form->{"new_projectnumber_$i"};
- $form->{"oldprojectnumber_$form->{rownumber}"} =
- $form->{"new_projectnumber_$i"};
- $form->{"project_id_$form->{rownumber}"} = $form->{"new_id_$i"};
- # delete all the new_ variables
- for $i ( 1 .. $form->{lastndx} ) {
- for (qw(id projectnumber description)) { delete $form->{"new_${_}_$i"} }
- }
- for (qw(ndx lastndx nextsub)) { delete $form->{$_} }
- if ( $form->{update} ) {
- &{ $form->{update} };
- }
- else {
- &update;
- }
- }
- sub post_as_new {
- for (qw(id printed emailed queued)) { delete $form->{$_} }
- &post;
- }
- sub print_and_post_as_new {
- for (qw(id printed emailed queued)) { delete $form->{$_} }
- &print_and_post;
- }
- sub repost {
- if ( $form->{type} =~ /_order/ ) {
- if ( $form->{print_and_save} ) {
- $form->{nextsub} = "print_and_save";
- $msg =
- $locale->text('You are printing and saving an existing order');
- }
- else {
- $form->{nextsub} = "save";
- $msg = $locale->text('You are saving an existing order');
- }
- }
- elsif ( $form->{type} =~ /_quotation/ ) {
- if ( $form->{print_and_save} ) {
- $form->{nextsub} = "print_and_save";
- $msg =
- $locale->text(
- 'You are printing and saving an existing quotation');
- }
- else {
- $form->{nextsub} = "save";
- $msg = $locale->text('You are saving an existing quotation');
- }
- }
- else {
- if ( $form->{print_and_post} ) {
- $form->{nextsub} = "print_and_post";
- $msg =
- $locale->text(
- 'You are printing and posting an existing transaction!');
- }
- else {
- $form->{nextsub} = "post";
- $msg = $locale->text('You are posting an existing transaction!');
- }
- }
- delete $form->{action};
- $form->{repost} = 1;
- $form->header;
- print qq|
- <body>
- <form method="post" action="$form->{script}">
- |;
- $form->hide_form;
- print qq|
- <h2 class="confirm">| . $locale->text('Warning!') . qq|</h2>
- <h4>$msg</h4>
- <button name="action" class="submit" type="submit" value="continue">|
- . $locale->text('Continue')
- . qq|</button>
- </form>
- </body>
- </html>
- |;
- }
- sub schedule {
- (
- $form->{recurringreference}, $form->{recurringstartdate},
- $form->{recurringrepeat}, $form->{recurringunit},
- $form->{recurringhowmany}, $form->{recurringpayment},
- $form->{recurringprint}, $form->{recurringemail},
- $form->{recurringmessage}
- ) = split /,/, $form->{recurring};
- $form->{recurringreference} =
- $form->quote( $form->unescape( $form->{recurringreference} ) );
- $form->{recurringmessage} =
- $form->quote( $form->unescape( $form->{recurringmessage} ) );
- $form->{recurringstartdate} ||= $form->{transdate};
- $recurringpayment = "checked" if $form->{recurringpayment};
- if ( $form->{paidaccounts} ) {
- $postpayment = qq|
- <tr>
- <th align="right" nowrap>| . $locale->text('Include Payment') . qq|</th>
- <td><input name="recurringpayment" type="checkbox" class="checkbox" value="1" $recurringpayment></td>
- </tr>
- |;
- }
- if ( $form->{recurringnextdate} ) {
- $nextdate = qq|
- <tr>
- <th align="right" nowrap>| . $locale->text('Next Date') . qq|</th>
- <td><input name="recurringnextdate" size="11" title="($myconfig{'dateformat'})" value="$form->{recurringnextdate}"></td>
- </tr>
- |;
- }
- @a = split /<option/, $form->unescape( $form->{selectformname} );
- %formname = ();
- for ( $i = 1 ; $i <= $#a ; $i++ ) {
- $a[$i] =~ /"(.*)"/;
- $v = $1;
- $a[$i] =~ />(.*)/;
- $formname{$v} = $1;
- }
- for (qw(check receipt)) { delete $formname{$_} }
- $selectformat = $form->unescape( $form->{selectformat} );
- if ( $form->{type} !~ /transaction/ && %formname ) {
- $email = qq|
- <table>
- <tr>
- <th colspan="2" class="listheading">| . $locale->text('E-mail') . qq|</th>
- </tr>
-
- <tr>
- <td>
- <table>
- |;
- # formname:format
- @p = split /:/, $form->{recurringemail};
- %p = ();
- for ( $i = 0 ; $i <= $#p ; $i += 2 ) {
- $p{ $p[$i] }{format} = $p[ $i + 1 ];
- }
- foreach $item ( keys %formname ) {
- $checked = ( $p{$item}{format} ) ? "checked" : "";
- $selectformat =~ s/ selected//;
- $p{$item}{format} ||= "pdf";
- $selectformat =~
- s/(<option value="\Q$p{$item}{format}\E")/$1 selected/;
- $email .= qq|
- <tr>
- <td><input name="email$item" type="checkbox" class="checkbox" value="1" $checked></td>
- <th align=left>$formname{$item}</th>
- <td><select name="emailformat$item">$selectformat</select></td>
- </tr>
- |;
- }
- $email .= qq|
- </table>
- </td>
- </tr>
- </table>
- |;
- $message = qq|
- <table>
- <tr>
- <th class="listheading">| . $locale->text('E-mail message') . qq|</th>
- </tr>
- <tr>
- <td><textarea name="recurringmessage" rows="10" cols="60" wrap="soft">$form->{recurringmessage}</textarea></td>
- </tr>
- </table>
- |;
- }
- if ( %{LedgerSMB::Sysconfig::printer}
- && ${LedgerSMB::Sysconfig::latex}
- && %formname )
- {
- $selectprinter = qq|<option>\n|;
- for ( sort keys %{LedgerSMB::Sysconfig::printer} ) {
- $selectprinter .= qq|<option value="$_">$_\n|;
- }
- # formname:format:printer
- @p = split /:/, $form->{recurringprint};
- %p = ();
- for ( $i = 0 ; $i <= $#p ; $i += 3 ) {
- $p{ $p[$i] }{formname} = $p[$i];
- $p{ $p[$i] }{format} = $p[ $i + 1 ];
- $p{ $p[$i] }{printer} = $p[ $i + 2 ];
- }
- $print = qq|
- <table>
- <tr>
- <th colspan="2" class="listheading">| . $locale->text('Print') . qq|</th>
- </tr>
- <tr>
- <td>
- <table>
- |;
- $selectformat =~ s/<option.*html//;
- foreach $item ( keys %formname ) {
- $selectprinter =~ s/ selected//;
- $selectprinter =~
- s/(<option value="\Q$p{$item}{printer}\E")/$1 selected/;
- $checked = ( $p{$item}{formname} ) ? "checked" : "";
- $selectformat =~ s/ selected//;
- $p{$item}{format} ||= "postscript";
- $selectformat =~
- s/(<option value="\Q$p{$item}{format}\E")/$1 selected/;
- $print .= qq|
- <tr>
- <td><input name="print$item" type="checkbox" class="checkbox" value=1 $checked></td>
- <th align="left">$formname{$item}</th>
- <td><select name="printprinter$item">$selectprinter</select></td>
- <td><select name="printformat$item">$selectformat</select></td>
- </tr>
- |;
- }
- $print .= qq|
- </table>
- </td>
- </tr>
- </table>
- |;
- }
- $selectrepeat = "";
- for ( 1 .. 31 ) { $selectrepeat .= qq|<option value="$_">$_\n| }
- $selectrepeat =~ s/(<option value="$form->{recurringrepeat}")/$1 selected/;
- $selectunit = qq|<option value="days">| . $locale->text('Day(s)') . qq|
- <option value="weeks">| . $locale->text('Week(s)') . qq|
- <option value="months">| . $locale->text('Month(s)') . qq|
- <option value="years">| . $locale->text('Year(s)');
- if ( $form->{recurringunit} ) {
- $selectunit =~ s/(<option value="$form->{recurringunit}")/$1 selected/;
- }
- if ( $form->{ $form->{vc} } ) {
- $description = $form->{ $form->{vc} };
- }
- else {
- $description = $form->{description};
- }
- $repeat = qq|
- <table>
- <tr>
- <th colspan="3" class="listheading">| . $locale->text('Repeat') . qq|</th>
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Every') . qq|</th>
- <td><select name="recurringrepeat">$selectrepeat</td>
- <td><select name="recurringunit">$selectunit</td>
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('For') . qq|</th>
- <td><input name="recurringhowmany" size="3" value="$form->{recurringhowmany}"></td>
- <th align="left" nowrap>| . $locale->text('time(s)') . qq|</th>
- </tr>
- </table>
- |;
- $title = $locale->text( 'Recurring Transaction for [_1]', $description );
- $form->header;
- print qq|
- <body>
- <form method="post" action="$form->{script}">
- <table width="100%">
- <tr class="listtop">
- <th class="listtop">$title</th>
- </tr>
- <tr space="5"></tr>
- <tr>
- <td>
- <table>
- <tr>
- <td>
- <table>
- <tr>
- <th align="right" nowrap>| . $locale->text('Reference') . qq|</th>
- <td><input name="recurringreference" size="20" value="$form->{recurringreference}"></td>
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Startdate') . qq|</th>
- <td><input name="recurringstartdate" size="11" title="($myconfig{'dateformat'})" value="$form->{recurringstartdate}"></td>
- </tr>
- $nextdate
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>
- <table>
- $postpayment
- </table>
- </td>
- </tr>
-
- <tr>
- <td>
- <table>
- <tr valign="top">
- <td>$repeat</td>
- <td>$print</td>
- </tr>
- <tr valign="top">
- <td>$email</td>
- <td>$message</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><hr size="3" noshade></td>
- </tr>
- </table>
- <br>
- |;
- # type=submit $locale->text('Save Schedule')
- # type=submit $locale->text('Delete Schedule')
- %button = (
- 'save_schedule' =>
- { ndx => 1, key => 'S', value => $locale->text('Save Schedule') },
- 'delete_schedule' =>
- { ndx => 16, key => 'D', value => $locale->text('Delete Schedule') },
- );
- $form->print_button( \%button, 'save_schedule' );
- if ( $form->{recurring} ) {
- $form->print_button( \%button, 'delete_schedule' );
- }
- # delete variables
- for (qw(action recurring)) { delete $form->{$_} }
- for (
- qw(reference startdate nextdate enddate repeat unit howmany payment print email message)
- )
- {
- delete $form->{"recurring$_"};
- }
- $form->hide_form;
- print qq|
- </form>
- </body>
- </html>
- |;
- }
- sub save_schedule {
- $form->{recurring} = "";
- $form->{recurringreference} =
- $form->escape( $form->{recurringreference}, 1 );
- $form->{recurringmessage} = $form->escape( $form->{recurringmessage}, 1 );
- if ( $form->{recurringstartdate} ) {
- for (qw(reference startdate repeat unit howmany payment)) {
- $form->{recurring} .= qq|$form->{"recurring$_"},|;
- }
- }
- @a = split /<option/, $form->unescape( $form->{selectformname} );
- @p = ();
- for ( $i = 1 ; $i <= $#a ; $i++ ) {
- $a[$i] =~ /"(.*)"/;
- push @p, $1;
- }
- $recurringemail = "";
- for (@p) {
- $recurringemail .= qq|$_:$form->{"emailformat$_"}:|
- if $form->{"email$_"};
- }
- chop $recurringemail;
- $recurringprint = "";
- for (@p) {
- $recurringprint .=
- qq|$_:$form->{"printformat$_"}:$form->{"printprinter$_"}:|
- if $form->{"print$_"};
- }
- chop $recurringprint;
- $form->{recurring} .=
- qq|$recurringprint,$recurringemail,$form->{recurringmessage}|
- if $recurringemail || $recurringprint;
- $form->save_recurring( undef, \%myconfig ) if $form->{id};
- if ( $form->{recurringid} ) {
- $form->redirect;
- }
- else {
- &update;
- }
- }
- sub delete_schedule {
- $form->{recurring} = "";
- $form->save_recurring( undef, \%myconfig ) if $form->{id};
- if ( $form->{recurringid} ) {
- $form->redirect;
- }
- else {
- &update;
- }
- }
- sub reprint {
- $myconfig{vclimit} = 0;
- $pf = "print_form";
- for (qw(format formname media message)) { $temp{$_} = $form->{$_} }
- if ( $form->{module} eq 'oe' ) {
- &order_links;
- &prepare_order;
- delete $form->{order_details};
- for ( keys %$form ) { $form->{$_} = $form->unquote( $form->{$_} ) }
- }
- else {
- if ( $form->{type} eq 'invoice' ) {
- &invoice_links;
- &prepare_invoice;
- for ( keys %$form ) { $form->{$_} = $form->unquote( $form->{$_} ) }
- }
- else {
- &create_links;
- $form->{rowcount}--;
- for ( 1 .. $form->{rowcount} ) {
- $form->{"amount_$_"} =
- $form->format_amount( \%myconfig, $form->{"amount_$_"}, 2 );
- }
- for ( split / /, $form->{taxaccounts} ) {
- $form->{"tax_$_"} =
- $form->format_amount( \%myconfig, $form->{"tax_$_"}, 2 );
- }
- $pf = "print_transaction";
- }
- for (qw(acc_trans invoice_details)) { delete $form->{$_} }
- }
- for (qw(department employee language month partsgroup project years)) {
- delete $form->{"all_$_"};
- }
- for ( keys %temp ) { $form->{$_} = $temp{$_} }
- $form->{rowcount}++;
- $form->{paidaccounts}++;
- delete $form->{paid};
- for ( 1 .. $form->{paidaccounts} ) {
- $form->{"paid_$_"} =
- $form->format_amount( \%myconfig, $form->{"paid_$_"}, 2 );
- }
- $form->{copies} = 1;
- &$pf;
- if ( $form->{media} eq 'email' ) {
- # add email message
- $now = scalar localtime;
- $cc = $locale->text( 'Cc: [_1]', $form->{cc} ) . qq|\n| if $form->{cc};
- $bcc = $locale->text( 'Bcc: [_1]', $form->{bcc} ) . qq|\n|
- if $form->{bcc};
- $form->{intnotes} .= qq|\n\n| if $form->{intnotes};
- $form->{intnotes} .=
- qq|[email]\n|
- . $locale->text( 'Date: [_1]', $now ) . qq|\n|
- . $locale->text( 'To: [_1]', $form->{email} )
- . qq|\n${cc}${bcc}|
- . $locale->text( 'Subject: [_1]', $form->{subject} )
- . qq|\n\n|
- . $locale->text('Message: ');
- $form->{intnotes} .=
- ( $form->{message} ) ? $form->{message} : $locale->text('sent');
- $form->save_intnotes( \%myconfig, $form->{module} );
- }
- }
- sub continue { &{ $form->{nextsub} } }
- sub gl_transaction { &add }
- sub ar_transaction { &add_transaction(ar) }
- sub ap_transaction { &add_transaction(ap) }
- sub sales_invoice_ { &add_transaction(is) }
- sub vendor_invoice_ { &add_transaction(ir) }
|