use strict;
-my $print_post;
-my %TMPL_VAR;
+our %TMPL_VAR;
1;
$form->{"reqdate_$i"} ||= $form->{"deliverydate_$i"};
$form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * ($format_discounts ? 100 : 1));
$form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"});
+ $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"});
$form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"});
}
check_oe_access();
- # Container for template variables. Unfortunately this has to be visible in form_footer too, so not my.
- our %TMPL_VAR = ();
+ # Container for template variables. Unfortunately this has to be
+ # visible in form_footer too, so package local level and not my here.
+ %TMPL_VAR = ();
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(exchangerate) unless $recursive_call;
$form->{update} = 1;
- my $payment_id = $form->{payment_id} if $form->{payment_id};
-
&check_name($form->{vc});
- $form->{payment_id} = $payment_id if $form->{payment_id} eq "";
-
my $buysell = 'buy';
$buysell = 'sell' if ($form->{vc} eq 'vendor');
$form->{forex} = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{transdate}, $buysell);
# select discount as customer_discount from customer
$form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"$form->{vc}_discount"} * 100);
+ $form->{"lastcost_$i"} = $form->parse_amount(\%myconfig, $form->{"lastcost_$i"});
+
if ($rows) {
$form->{"qty_$i"} = 1 unless ($form->parse_amount(\%myconfig, $form->{"qty_$i"}));
if ($rows > 1) {
&select_item;
- exit;
+ ::end_of_request();
} else {
$form->{creditremaining} -= $amount;
$form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces);
+ $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, $decimalplaces);
$form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty);
# get pricegroups for parts
$form->header();
- print $form->parse_html_template('oe/search', { %myconfig });
+ print $form->parse_html_template('oe/search', {
+ %myconfig,
+ is_order => $form->{type} =~ /_order/,
+ });
$main::lxdebug->leave_sub();
}
my %column_defs = (
'ids' => { 'text' => '', },
'transdate' => { 'text' => $locale->text('Date'), },
- 'reqdate' => { 'text' => $locale->text('Required by'), },
+ 'reqdate' => { 'text' => $form->{type} =~ /_order/ ? $locale->text('Required by') : $locale->text('Valid until') },
'id' => { 'text' => $locale->text('ID'), },
'ordnumber' => { 'text' => $locale->text('Order'), },
'quonumber' => { 'text' => $form->{type} eq "request_quotation" ? $locale->text('RFQ') : $locale->text('Quotation'), },
'attachment_basename' => $attachment_basename . strftime('_%Y%m%d', localtime time),
);
$report->set_options_from_form();
+ $locale->set_numberformat_wo_thousands_separator(\%myconfig) if lc($report->{options}->{output_format}) eq 'csv';
# add sort and escape callback, this one we use for the add sub
$form->{callback} = $href .= "&sort=$form->{sort}";
$form->{payment_id} = $payment_id;
}
&update;
- exit;
+ ::end_of_request();
}
$form->{id} = 0 if $form->{saveasnew};
if(!exists $form->{addition}) {
$form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
$form->{addition} = "SAVED";
- $form->save_history($form->dbconnect(\%myconfig));
+ $form->save_history;
}
# /saving the history
$form->isblank("exchangerate", $locale->text('Exchangerate missing!'))
if ($form->{currency} ne $form->{defaultcurrency});
+ remove_emptied_rows();
&validate_items;
my $payment_id;
$form->{payment_id} = $payment_id;
}
&update;
- exit;
+ ::end_of_request();
}
$form->{id} = 0 if $form->{saveasnew};
if(!exists $form->{addition}) {
$form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
$form->{addition} = "SAVED";
- $form->save_history($form->dbconnect(\%myconfig));
+ $form->save_history;
}
# /saving the history
if(!$form->{print_and_save}) {
delete @{$form}{ary_diff([keys %{ $form }], [qw(login stylesheet id script type cursor_fokus)])};
edit();
- exit;
+ ::end_of_request();
}
$main::lxdebug->leave_sub();
}
if(!exists $form->{addition}) {
$form->{snumbers} = qq|ordnumber_| . $form->{ordnumber};
$form->{addition} = "DELETED";
- $form->save_history($form->dbconnect(\%myconfig));
+ $form->save_history;
}
# /saving the history
$form->info($msg);
- exit();
+ ::end_of_request();
}
$form->error($err);
if (&check_name($form->{vc})) {
$form->{payment_id} = $payment_id if $form->{payment_id} eq "";
&update;
- exit;
+ ::end_of_request();
}
$form->{cp_id} *= 1;
if (!$exchangerate) {
&backorder_exchangerate($orddate, $buysell);
- exit;
+ ::end_of_request();
}
}
}
+ # show pricegroup in newly loaded invoice when creating invoice from quotation/order
+ IS->get_pricegroups_for_parts(\%myconfig, \%$form);
+ set_pricegroup($_) for 1 .. $form->{rowcount};
+
&display_form;
$main::lxdebug->leave_sub();
$main::lxdebug->leave_sub();
- exit 0;
+ ::end_of_request();
}
sub purchase_order {
# reset
map { delete $form->{$_} } qw(id subject message cc bcc printed emailed queued customer vendor creditlimit creditremaining discount tradediscount oldinvtotal delivered ordnumber);
- # if purchase_order was generated from sales_order, use lastcost_$i as sellprice_$i
+ # if purchase_order was generated from sales_order, use lastcost_$i as sellprice_$i
if ( $form->{sales_order_to_purchase_order} ) {
for my $i (1 .. $form->{rowcount}) {
$form->{"sellprice_${i}"} = $form->format_amount(\%myconfig,$form->{"lastcost_${i}"});
};
&prepare_order;
-
- # format amounts
- for my $i (1 .. $form->{rowcount} - 1) {
- map { $form->{"${_}_$i"} =~ s/\"/"/g } qw(partnumber description unit);
- }
-
&update;
$main::lxdebug->leave_sub();
delete @{$form}{qw(id subject message cc bcc printed emailed queued creditlimit creditremaining discount tradediscount oldinvtotal closed delivered)};
for my $i (1 .. $form->{rowcount}) {
- map { $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if ($form->{"${_}_${i}"}) } qw(ship qty sellprice listprice basefactor discount);
+ map { $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if ($form->{"${_}_${i}"}) } qw(ship qty sellprice listprice lastcost basefactor discount);
}
- my %old_values = map { $_ => $form->{$_} } qw(customer_id oldcustomer customer vendor_id oldvendor vendor);
+ my %old_values = map { $_ => $form->{$_} } qw(customer_id oldcustomer customer vendor_id oldvendor vendor shipto_id);
order_links();
$form->{print_and_save} = 1;
- $print_post = 1;
-
my $saved_form = save_form();
save();
}
$form->{"taxaccounts"} = "";
- for my $i (1 .. $form->{"rowcount"}) {
- IC->retrieve_accounts(\%myconfig, $form, $form->{"id_$i"}, $i, 1) if $form->{"id_$i"};
- }
+ IC->retrieve_accounts(\%myconfig, $form, map { $_ => $form->{"id_$_"} } 1 .. $form->{rowcount});
$form->{rowcount}++;
$form->{"project_id_$form->{rowcount}"} = $form->{globalproject_id};
return $content;
}
+sub dispatcher {
+ my $form = $main::form;
+ my $locale = $main::locale;
+
+ foreach my $action (qw(delete delivery_order e_mail invoice print purchase_order purchase_order quotation
+ request_for_quotation sales_order sales_order save save_and_close save_as_new ship_to update)) {
+ if ($form->{"action_${action}"}) {
+ call_sub($action);
+ return;
+ }
+ }
+
+ $form->error($locale->text('No action defined.'));
+}