# Order entry module
# Quotation module
#======================================================================
-use Data::Dumper;
+
+use POSIX qw(strftime);
use SL::OE;
use SL::IR;
use SL::IS;
use SL::PE;
+use SL::ReportGenerator;
require "bin/mozilla/io.pl";
require "bin/mozilla/arap.pl";
+require "bin/mozilla/report_generator.pl";
1;
set_headings("edit");
# editing without stuff to edit? try adding it first
- if ($form->{rowcount}) {
+ if ($form->{rowcount} && !$form->{print_and_save}) {
map { $id++ if $form->{"multi_id_$_"} } (1 .. $form->{rowcount});
if (!$id) {
my $checkedclosed = $form->{"closed"} ? "checked" : "";
my $checkeddelivered = $form->{"delivered"} ? "checked" : "";
+ if ($form->{old_employee_id}) {
+ $form->{employee_id} = $form->{old_employee_id};
+ }
+ if ($form->{old_salesman_id}) {
+ $form->{salesman_id} = $form->{old_salesman_id};
+ }
+
+ $form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
+
+
+ if ($form->{old_employee_id}) {
+ $form->{employee_id} = $form->{old_employee_id};
+ }
+ if ($form->{old_salesman_id}) {
+ $form->{salesman_id} = $form->{old_salesman_id};
+ }
+
map { $form->{$_} =~ s/\"/"/g }
qw(ordnumber quonumber shippingpoint shipvia notes intnotes shiptoname
shiptostreet shiptozipcode shiptocity shiptocountry shiptocontact
$form->{exchangerate} =
$form->format_amount(\%myconfig, $form->{exchangerate});
+ if (!$form->{exchangerate}) {
+ $form->{exchangerate} = "";
+ }
+
if (($form->{creditlimit} != 0) && ($form->{creditremaining} < 0) && !$form->{update}) {
$creditwarning = 1;
} else {
$form->get_lists("projects" => { "key" => "ALL_PROJECTS",
"all" => 1 },
- "employees" => "ALL_EMPLOYEES",
+ "employees" => "ALL_EMPLOYEES",
$vc => "ALL_" . uc($vc));
my %labels = ();
#employees
%labels = ();
- @values = ();
+ @values = ("");
foreach my $item (@{ $form->{"ALL_EMPLOYEES"} }) {
push(@values, $item->{"id"});
$labels{$item->{"id"}} = $item->{"name"} ne "" ? $item->{"name"} : $item->{"login"};
<tr>
<th align="right">| . $locale->text('Employee') . qq|</th>
<td>| .
- NTI($cgi->popup_menu('-name' => 'employee_id', '-default' => $form->{"employee_id"},
- '-values' => \@values, '-labels' => \%labels)) . qq|
+ NTI($cgi->popup_menu('-name' => 'employee_id',
+ '-values' => \@values,
+ '-labels' => \%labels)) . qq|
</td>
</tr>|;
$lxdebug->leave_sub();
}
+sub create_subtotal_row {
+ $lxdebug->enter_sub();
+
+ my ($totals, $columns, $column_alignment, $subtotal_columns, $class) = @_;
+
+ my $row = { map { $_ => { 'data' => '', 'class' => $class, 'align' => $column_alignment->{$_}, } } @{ $columns } };
+
+ map { $row->{$_}->{data} = $form->format_amount(\%myconfig, $totals->{$_}, 2) } @{ $subtotal_columns };
+
+ $row->{tax}->{data} = $form->format_amount(\%myconfig, $totals->{amount} - $totals->{netamount}, 2);
+
+ map { $totals->{$_} = 0 } @{ $subtotal_columns };
+
+ $lxdebug->leave_sub();
+
+ return $row;
+}
+
sub orders {
$lxdebug->enter_sub();
$ordnumber = ($form->{type} =~ /_order$/) ? "ordnumber" : "quonumber";
- # construct href
- my @fields =
- qw(type vc login password transdatefrom transdateto
- open closed notdelivered delivered department
- transaction_description);
- push @fields, $form->{vc};
- $href = "$form->{script}?action=orders&"
- . join("&", map { "${_}=" . E($form->{$_}) } @fields)
- . "&${ordnumber}=" . E($form->{$ordnumber});
- $callback = $href;
-
- # split vendor / customer
- ($form->{ $form->{vc} }, $form->{"$form->{vc}_id"}) =
- split(/--/, $form->{ $form->{vc} });
+ ($form->{ $form->{vc} }, $form->{"${form->{vc}}_id"}) = split(/--/, $form->{ $form->{vc} });
+
+ $form->{sort} ||= 'transdate';
OE->transactions(\%myconfig, \%$form);
- @columns = (
+ $form->{rowcount} = scalar @{ $form->{OE} };
+
+ my @columns = (
"transdate", "reqdate",
- "id", "$ordnumber",
+ "id", $ordnumber,
"name", "netamount",
"tax", "amount",
"curr", "employee",
"shipvia", "globalprojectnumber",
"transaction_description", "open",
- "closed", "delivered"
+ "delivered"
);
- $form->{l_open} = $form->{l_closed} = "Y"
- if ($form->{open} && $form->{closed});
-
- $form->{"l_delivered"} = "Y"
- if ($form->{"delivered"} && $form->{"notdelivered"});
-
- foreach $item (@columns) {
- if ($form->{"l_$item"} eq "Y") {
- push @column_index, $item;
-
- # add column to href and callback
- $callback .= "&l_$item=Y";
- $href .= "&l_$item=Y";
- }
- }
-
# only show checkboxes if gotten here via sales_order form.
- if ($form->{type} =~ /sales_order/) {
- unshift @column_index, "ids";
+ my $allow_multiple_orders = $form->{type} eq 'sales_order';
+ if ($allow_multiple_orders) {
+ unshift @columns, "ids";
}
- if ($form->{l_subtotal} eq 'Y') {
- $callback .= "&l_subtotal=Y";
- $href .= "&l_subtotal=Y";
- }
+ $form->{l_open} = $form->{l_closed} = "Y" if ($form->{open} && $form->{closed});
+ $form->{l_delivered} = "Y" if ($form->{delivered} && $form->{notdelivered});
+ my $attachment_basename;
if ($form->{vc} eq 'vendor') {
if ($form->{type} eq 'purchase_order') {
- $form->{title} = $locale->text('Purchase Orders');
+ $form->{title} = $locale->text('Purchase Orders');
+ $attachment_basename = $locale->text('purchase_order_list');
} else {
- $form->{title} = $locale->text('Request for Quotations');
+ $form->{title} = $locale->text('Request for Quotations');
+ $attachment_basename = $locale->text('rfq_list');
}
- $name = $locale->text('Vendor');
- $employee = $locale->text('Employee');
- }
- if ($form->{vc} eq 'customer') {
+
+ } else {
if ($form->{type} eq 'sales_order') {
- $form->{title} = $locale->text('Sales Orders');
+ $form->{title} = $locale->text('Sales Orders');
+ $attachment_basename = $locale->text('sales_order_list');
} else {
- $form->{title} = $locale->text('Quotations');
+ $form->{title} = $locale->text('Quotations');
+ $attachment_basename = $locale->text('quotation_list');
}
- $employee = $locale->text('Employee');
- $name = $locale->text('Customer');
- }
-
- $column_header{id} =
- qq|<th><a class=listheading href=$href&sort=id>|
- . $locale->text('ID')
- . qq|</a></th>|;
- $column_header{transdate} =
- qq|<th><a class=listheading href=$href&sort=transdate>|
- . $locale->text('Date')
- . qq|</a></th>|;
- $column_header{reqdate} =
- qq|<th><a class=listheading href=$href&sort=reqdate>|
- . $locale->text('Required by')
- . qq|</a></th>|;
- $column_header{ordnumber} =
- qq|<th><a class=listheading href=$href&sort=ordnumber>|
- . $locale->text('Order')
- . qq|</a></th>|;
- $column_header{quonumber} =
- qq|<th><a class=listheading href=$href&sort=quonumber>|
- . ($form->{"type"} eq "request_quotation" ?
- $locale->text('RFQ') :
- $locale->text('Quotation'))
- . qq|</a></th>|;
- $column_header{name} =
- qq|<th><a class=listheading href=$href&sort=name>$name</a></th>|;
- $column_header{netamount} =
- qq|<th class=listheading>| . $locale->text('Amount') . qq|</th>|;
- $column_header{tax} =
- qq|<th class=listheading>| . $locale->text('Tax') . qq|</th>|;
- $column_header{amount} =
- qq|<th class=listheading>| . $locale->text('Total') . qq|</th>|;
- $column_header{curr} =
- qq|<th class=listheading>| . $locale->text('Curr') . qq|</th>|;
- $column_header{shipvia} =
- qq|<th><a class=listheading href=$href&sort=shipvia>|
- . $locale->text('Ship via')
- . qq|</a></th>|;
- $column_header{globalprojectnumber} =
- qq|<th class="listheading">| . $locale->text('Project Number') . qq|</th>|;
- $column_header{open} =
- qq|<th class=listheading>| . $locale->text('O') . qq|</th>|;
- $column_header{closed} =
- qq|<th class=listheading>| . $locale->text('C') . qq|</th>|;
- $column_header{"delivered"} =
- qq|<th class="listheading">| . $locale->text("Delivered") . qq|</th>|;
-
- $column_header{employee} =
- qq|<th><a class=listheading href=$href&sort=employee>$employee</a></th>|;
- $column_header{transaction_description} =
- qq|<th><a class=listheading href="$href&sort=transaction_description">|
- . $locale->text("Transaction description") . qq|</a></th>|;
-
- $column_header{ids} = qq|<th></th>|;
-
- if ($form->{ $form->{vc} }) {
- $option = $locale->text(ucfirst $form->{vc});
- $option .= " : $form->{$form->{vc}}";
+ }
+
+ my $report = SL::ReportGenerator->new(\%myconfig, $form);
+
+ my @hidden_variables = map { "l_${_}" } @columns;
+ push @hidden_variables, "l_subtotal", $form->{vc}, qw(l_closed l_notdelivered open closed delivered notdelivered ordnumber quonumber
+ transaction_description transdatefrom transdateto type vc employee_id);
+
+ my $href = build_std_url('action=orders', grep { $form->{$_} } @hidden_variables);
+
+ my %column_defs = (
+ 'ids' => { 'text' => '', },
+ 'transdate' => { 'text' => $locale->text('Date'), },
+ 'reqdate' => { 'text' => $locale->text('Required by'), },
+ 'id' => { 'text' => $locale->text('ID'), },
+ 'ordnumber' => { 'text' => $locale->text('Order'), },
+ 'quonumber' => { 'text' => $form->{type} eq "request_quotation" ? $locale->text('RFQ') : $locale->text('Quotation'), },
+ 'name' => { 'text' => $form->{vc} eq 'customer' ? $locale->text('Customer') : $locale->text('Vendor'), },
+ 'netamount' => { 'text' => $locale->text('Amount'), },
+ 'tax' => { 'text' => $locale->text('Tax'), },
+ 'amount' => { 'text' => $locale->text('Total'), },
+ 'curr' => { 'text' => $locale->text('Curr'), },
+ 'employee' => { 'text' => $locale->text('Salesperson'), },
+ 'shipvia' => { 'text' => $locale->text('Ship via'), },
+ 'globalprojectnumber' => { 'text' => $locale->text('Project Number'), },
+ 'transaction_description' => { 'text' => $locale->text('Transaction description'), },
+ 'open' => { 'text' => $locale->text('Open'), },
+ 'delivered' => { 'text' => $locale->text('Delivered'), },
+ );
+
+ foreach my $name (qw(id transdate reqdate quonumber ordnumber name employee shipvia)) {
+ $column_defs{$name}->{link} = $href . "&sort=$name";
+ }
+
+ my %column_alignment = map { $_ => 'right' } qw(netamount tax amount curr);
+
+ $form->{"l_type"} = "Y";
+ map { $column_defs{$_}->{visible} = $form->{"l_${_}"} ? 1 : 0 } @columns;
+ $column_defs{ids}->{visible} = $allow_multiple_orders ? 'HTML' : 0;
+
+ $report->set_columns(%column_defs);
+ $report->set_column_order(@columns);
+
+ $report->set_export_options('orders', @hidden_variables);
+
+ $report->set_sort_indicator($form->{sort}, 1);
+
+ my @options;
+ if ($form->{customer}) {
+ push @options, $locale->text('Customer') . " : $form->{customer}";
+ }
+ if ($form->{vendor}) {
+ push @options, $locale->text('Vendor') . " : $form->{vendor}";
}
if ($form->{department}) {
- $option .= "\n<br>" if ($option);
($department) = split /--/, $form->{department};
- $option .= $locale->text('Department') . " : $department";
+ push @options, $locale->text('Department') . " : $department";
+ }
+ if ($form->{ordnumber}) {
+ push @options, $locale->text('Order Number') . " : $form->{ordnumber}";
+ }
+ if ($form->{notes}) {
+ push @options, $locale->text('Notes') . " : $form->{notes}";
+ }
+ if ($form->{transaction_description}) {
+ push @options, $locale->text('Transaction description') . " : $form->{transaction_description}";
}
if ($form->{transdatefrom}) {
- $option .= "\n<br>"
- . $locale->text('From') . " "
- . $locale->date(\%myconfig, $form->{transdatefrom}, 1);
+ push @options, $locale->text('From') . " " . $locale->date(\%myconfig, $form->{transdatefrom}, 1);
}
if ($form->{transdateto}) {
- $option .= "\n<br>"
- . $locale->text('Bis') . " "
- . $locale->date(\%myconfig, $form->{transdateto}, 1);
+ push @options, $locale->text('Bis') . " " . $locale->date(\%myconfig, $form->{transdateto}, 1);
}
if ($form->{open}) {
- $option .= "\n<br>" if ($option);
- $option .= $locale->text('Open');
+ push @options, $locale->text('Open');
}
if ($form->{closed}) {
- $option .= "\n<br>" if ($option);
- $option .= $locale->text('Closed');
+ push @options, $locale->text('Closed');
+ }
+ if ($form->{delivered}) {
+ push @options, $locale->text('Delivered');
+ }
+ if ($form->{notdelivered}) {
+ push @options, $locale->text('Not delivered');
}
- $form->header;
+ $report->set_options('top_info_text' => join("\n", @options),
+ 'raw_top_info_text' => $form->parse_html_template('oe/orders_top'),
+ 'raw_bottom_info_text' => $form->parse_html_template('oe/orders_bottom', { 'SHOW_CONTINUE_BUTTON' => $allow_multiple_orders }),
+ 'output_format' => 'HTML',
+ 'title' => $form->{title},
+ 'attachment_basename' => $attachment_basename . strftime('_%Y%m%d', localtime time),
+ );
+ $report->set_options_from_form();
- print qq|
-<body>
+ # add sort and escape callback, this one we use for the add sub
+ $form->{callback} = $href .= "&sort=$form->{sort}";
-<form method="post" action="oe.pl">
-<table width=100%>
- <tr>
- <th class=listtop>$form->{title}</th>
- </tr>
- <tr height="5"></tr>
- <tr>
- <td>$option</td>
- </tr>
- <tr>
- <td>
- <table width=100%>
- <tr class=listheading>|;
+ # escape callback for href
+ $callback = $form->escape($href);
- map { print "\n$column_header{$_}" } @column_index;
+ my @subtotal_columns = qw(netamount amount);
- print qq|
- </tr>
-|;
+ my %totals = map { $_ => 0 } @subtotal_columns;
+ my %subtotals = map { $_ => 0 } @subtotal_columns;
- # add sort and escape callback
- $callback_escaped = $form->escape($callback . "&sort=$form->{sort}");
-
- if (@{ $form->{OE} }) {
- $sameitem = $form->{OE}->[0]->{ $form->{sort} };
- }
+ my $idx = 0;
- $action = "edit";
+ my $edit_url = build_std_url('action=edit', 'type', 'vc');
foreach $oe (@{ $form->{OE} }) {
- $form->{rowcount} = ++$j;
+ map { $oe->{$_} *= $oe->{exchangerate} } @subtotal_columns;
- if ($form->{l_subtotal} eq 'Y') {
- if ($sameitem ne $oe->{ $form->{sort} }) {
- &subtotal;
- $sameitem = $oe->{ $form->{sort} };
- }
- }
-
- map { $oe->{$_} *= $oe->{exchangerate} } (qw(netamount amount));
-
- $column_data{netamount} =
- "<td align=right>"
- . $form->format_amount(\%myconfig, $oe->{netamount}, 2, " ")
- . "</td>";
- $column_data{tax} = "<td align=right>"
- . $form->format_amount(\%myconfig, $oe->{amount} - $oe->{netamount},
- 2, " ")
- . "</td>";
- $column_data{amount} =
- "<td align=right>"
- . $form->format_amount(\%myconfig, $oe->{amount}, 2, " ") . "</td>";
-
- $totalnetamount += $oe->{netamount};
- $totalamount += $oe->{amount};
-
- $subtotalnetamount += $oe->{netamount};
- $subtotalamount += $oe->{amount};
-
- $column_data{ids} =
- qq|<td><input name="multi_id_$j" class=checkbox type=checkbox><input type="hidden" name="trans_id_$j" value="$oe->{id}"></td>|;
- $column_data{id} = "<td>$oe->{id}</td>";
- $column_data{transdate} = "<td>$oe->{transdate} </td>";
- $column_data{reqdate} = "<td>$oe->{reqdate} </td>";
-
- $column_data{$ordnumber} =
- "<td><a href=oe.pl?action=$action&type=$form->{type}&id=$oe->{id}&vc=$form->{vc}&login=$form->{login}&password=$form->{password}&callback=$callback_escaped>$oe->{$ordnumber}</a></td>";
- $column_data{name} = "<td>$oe->{name}</td>";
-
- $column_data{employee} = "<td>$oe->{employee} </td>";
- $column_data{shipvia} = "<td>$oe->{shipvia} </td>";
- $column_data{globalprojectnumber} = "<td>" . H($oe->{globalprojectnumber}) . "</td>";
-
- if ($oe->{closed}) {
- $column_data{closed} = "<td align=center>X</td>";
- $column_data{open} = "<td> </td>";
- } else {
- $column_data{closed} = "<td> </td>";
- $column_data{open} = "<td align=center>X</td>";
- }
- $column_data{"delivered"} = "<td>" .
- ($oe->{"delivered"} ? $locale->text("Yes") : $locale->text("No")) .
- "</td>";
- $column_data{transaction_description} = "<td>" . H($oe->{transaction_description}) . "</td>";
+ $oe->{tax} = $oe->{amount} - $oe->{netamount};
+ $oe->{open} = $oe->{closed} ? $locale->text('No') : $locale->text('Yes');
+ $oe->{delivered} = $oe->{delivered} ? $locale->text('Yes') : $locale->text('No');
- $i++;
- $i %= 2;
- print "
- <tr class=listrow$i>";
+ map { $subtotals{$_} += $oe->{$_};
+ $totals{$_} += $oe->{$_} } @subtotal_columns;
- map { print "\n$column_data{$_}" } @column_index;
+ map { $oe->{$_} = $form->format_amount(\%myconfig, $oe->{$_}, 2) } qw(netamount tax amount);
- print qq|
- </tr>
-|;
+ my $row = { };
- }
-
- if ($form->{l_subtotal} eq 'Y') {
- &subtotal;
- }
-
- # print totals
- print qq|
- <tr class=listtotal>|;
+ foreach my $column (@columns) {
+ next if ($column eq 'ids');
+ $row->{$column} = {
+ 'data' => $oe->{$column},
+ 'align' => $column_alignment{$column},
+ };
+ }
- map { $column_data{$_} = "<td> </td>" } @column_index;
+ $row->{ids} = {
+ 'raw_data' => $cgi->hidden('-name' => "trans_id_${idx}", '-value' => $oe->{id})
+ . $cgi->checkbox('-name' => "multi_id_${idx}", '-value' => 1, '-label' => ''),
+ 'valign' => 'center',
+ 'align' => 'center',
+ };
- $column_data{netamount} =
- "<th class=listtotal align=right>"
- . $form->format_amount(\%myconfig, $totalnetamount, 2, " ") . "</th>";
- $column_data{tax} = "<th class=listtotal align=right>"
- . $form->format_amount(\%myconfig, $totalamount - $totalnetamount,
- 2, " ")
- . "</th>";
- $column_data{amount} =
- "<th class=listtotal align=right>"
- . $form->format_amount(\%myconfig, $totalamount, 2, " ") . "</th>";
+ $row->{$ordnumber}->{link} = $edit_url . "&id=" . E($oe->{id}) . "&callback=${callback}";
- map { print "\n$column_data{$_}" } @column_index;
+ my $row_set = [ $row ];
- print qq|
- </tr>
- </td>
- </table>
- </tr>
- <tr>
- <td><hr size=3 noshade></td>
- </tr>
-</table>|;
+ if (($form->{l_subtotal} eq 'Y')
+ && (($idx == (scalar @{ $form->{OE} } - 1))
+ || ($oe->{ $form->{sort} } ne $form->{OE}->[$idx + 1]->{ $form->{sort} }))) {
+ push @{ $row_set }, create_subtotal_row(\%subtotals, \@columns, \%column_alignment, \@subtotal_columns, 'listsubtotal');
+ }
- # multiple invoice edit button only if gotten there via sales_order form.
+ $report->add_data($row_set);
- if ($form->{type} =~ /sales_order/) {
- print qq|
- <input class"submit" type="submit" name="action" value="|
- . $locale->text('Continue') . qq|">
- <input type="hidden" name="nextsub" value="edit">
- <input type="hidden" name="type" value="$form->{type}">
- <input type="hidden" name="vc" value="$form->{vc}">
- <input type="hidden" name="login" value="$form->{login}">
- <input type="hidden" name="password" value="$form->{password}">
- <input type="hidden" name="callback" value="$callback">
- <input type="hidden" name="rowcount" value="$form->{rowcount}">|;
+ $idx++;
}
- print qq|
-</form>
-
-<br>
-<form method=post action=$form->{script}>
-
-<input name=callback type=hidden value="$form->{callback}">
-
-<input type=hidden name=type value=$form->{type}>
-<input type=hidden name=vc value=$form->{vc}>
-
-<input type=hidden name=login value=$form->{login}>
-<input type=hidden name=password value=$form->{password}>
-
-</form>
+ $report->add_separator();
+ $report->add_data(create_subtotal_row(\%totals, \@columns, \%column_alignment, \@subtotal_columns, 'listtotal'));
-</body>
-</html>
-|;
+ $report->generate_with_headers();
$lxdebug->leave_sub();
}
-sub subtotal {
+sub check_delivered_flag {
$lxdebug->enter_sub();
- map { $column_data{$_} = "<td> </td>" } @column_index;
+ if (($form->{type} ne 'sales_order') && ($form->{type} ne 'purchase_order')) {
+ return $lxdebug->leave_sub();
+ }
- $column_data{netamount} =
- "<th class=listsubtotal align=right>"
- . $form->format_amount(\%myconfig, $subtotalnetamount, 2, " ")
- . "</th>";
- $column_data{tax} = "<td class=listsubtotal align=right>"
- . $form->format_amount(\%myconfig, $subtotalamount - $subtotalnetamount,
- 2, " ")
- . "</th>";
- $column_data{amount} =
- "<th class=listsubtotal align=right>"
- . $form->format_amount(\%myconfig, $subtotalamount, 2, " ") . "</th>";
+ my $all_delivered = 0;
- $subtotalnetamount = 0;
- $subtotalamount = 0;
+ foreach my $i (1 .. $form->{rowcount}) {
+ next if (!$form->{"id_$i"});
- print "
- <tr class=listsubtotal>
-";
+ if ($form->parse_amount(\%myconfig, $form->{"qty_$i"}) == $form->parse_amount(\%myconfig, $form->{"ship_$i"})) {
+ $all_delivered = 1;
+ next;
+ }
- map { print "\n$column_data{$_}" } @column_index;
+ $all_delivered = 0;
+ last;
+ }
- print qq|
- </tr>
-|;
+ $form->{delivered} = 1 if $all_delivered;
$lxdebug->leave_sub();
}
sub save_and_close {
$lxdebug->enter_sub();
+ $form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
+
if ($form->{type} =~ /_order$/) {
$form->isblank("transdate", $locale->text('Order Date missing!'));
} else {
$err = $locale->text('Cannot save order!');
+ check_delivered_flag();
+
} else {
if ($form->{type} eq 'sales_quotation') {
$form->{label} = $locale->text('Quotation');
sub save {
$lxdebug->enter_sub();
+ $form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
+
+
if ($form->{type} =~ /_order$/) {
$form->isblank("transdate", $locale->text('Order Date missing!'));
} else {
$err = $locale->text('Cannot save order!');
+ check_delivered_flag();
+
} else {
if ($form->{type} eq 'sales_quotation') {
$form->{label} = $locale->text('Quotation');
sub invoice {
$lxdebug->enter_sub();
+ $form->{old_employee_id} = $form->{employee_id};
+ $form->{old_salesman_id} = $form->{salesman_id};
+
if ($form->{type} =~ /_order$/) {
# these checks only apply if the items don't bring their own ordnumbers/transdates.
$exchangerate =
$form->check_exchangerate(\%myconfig, $form->{currency}, $orddate,
$buysell);
+ print(STDERR "CURRENCY $form->{currency} DEFAULT: $form->{defaultcurrency} EXCHANGE $exchangerate\n");
if (!$exchangerate) {
&backorder_exchangerate($orddate, $buysell);
$form->{rowcount}--;
$form->{shipto} = 1;
+ $form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
+
if ($form->{type} =~ /_order$/) {
$form->{exchangerate} = $exchangerate;
&create_backorder;
$form->{closed} = 0;
+ $form->{old_employee_id} = $form->{employee_id};
+ $form->{old_salesman_id} = $form->{salesman_id};
+
# reset
map { delete $form->{$_} }
qw(id subject message cc bcc printed emailed queued customer vendor creditlimit creditremaining discount tradediscount oldinvtotal);