X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=bin%2Fmozilla%2Fdo.pl;h=a43da17ed1feb8a8fe28c7bffeca7e42617daf07;hb=2dacd2790bb5e0990ec5fe89a9d59370b018c25c;hp=b4ccfe3c49748a033ab0aba5ee6003f614d1277e;hpb=fc8ad1a3510949f71a0b35415130d573599fb5d4;p=kivitendo-erp.git
diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl
index b4ccfe3c4..a43da17ed 100644
--- a/bin/mozilla/do.pl
+++ b/bin/mozilla/do.pl
@@ -1,4 +1,4 @@
-# #=====================================================================
+#=====================================================================
# LX-Office ERP
# Copyright (C) 2004
# Based on SQL-Ledger Version 2.1.9
@@ -46,21 +46,28 @@ require "bin/mozilla/invoice_io.pl";
require "bin/mozilla/io.pl";
require "bin/mozilla/reportgenerator.pl";
+use strict;
+
1;
# end of main
+my $print_post;
+
sub check_do_access {
- $auth->assert($form->{type} . '_edit');
+ $main::auth->assert($main::form->{type} . '_edit');
}
sub set_headings {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
my ($action) = @_;
+ my $form = $main::form;
+ my $locale = $main::locale;
+
if ($form->{type} eq 'purchase_delivery_order') {
$form->{vc} = 'vendor';
$form->{title} = $action eq "edit" ? $locale->text('Edit Purchase Delivery Order') : $locale->text('Add Purchase Delivery Order');
@@ -71,14 +78,16 @@ sub set_headings {
$form->{heading} = $locale->text('Delivery Order');
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub add {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+
set_headings("add");
$form->{callback} = build_std_url('action=add', 'type', 'vc') unless ($form->{callback});
@@ -87,14 +96,16 @@ sub add {
prepare_order();
display_form();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub edit {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+
# show history button
$form->{javascript} = qq||;
#/show hhistory button
@@ -111,17 +122,19 @@ sub edit {
# reset rowcount
undef $form->{rowcount};
add();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
return;
# }
} elsif (!$form->{id}) {
add();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
return;
}
+ my ($language_id, $printer_id);
if ($form->{print_and_save}) {
- $form->{action} = "print";
+ $form->{action} = "dispatcher";
+ $form->{action_print} = "1";
$form->{resubmit} = 1;
$language_id = $form->{language_id};
$printer_id = $form->{printer_id};
@@ -139,19 +152,22 @@ sub edit {
display_form();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub order_links {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+
# get customer/vendor
$form->all_vc(\%myconfig, $form->{vc}, ($form->{vc} eq 'customer') ? "AR" : "AP");
# retrieve order/quotation
- $form->{webdav} = $webdav;
+ $form->{webdav} = $main::webdav;
$form->{jsscript} = 1;
my $editing = $form->{id};
@@ -159,14 +175,19 @@ sub order_links {
DO->retrieve('vc' => $form->{vc},
'ids' => $form->{id});
- $payment_id = $form->{payment_id} if ($form->{payment_id});
- $language_id = $form->{language_id} if ($form->{language_id});
- $taxzone_id = $form->{taxzone_id} if ($form->{taxzone_id});
- $salesman_id = $form->{salesman_id} if ($editing);
+ $form->backup_vars(qw(payment_id language_id taxzone_id salesman_id taxincluded cp_id intnotes));
+ $form->{shipto} = 1 if $form->{id};
+ # get customer / vendor
+ if ($form->{vc} eq 'vendor') {
+ IR->get_vendor(\%myconfig, \%$form);
+ } else {
+ IS->get_customer(\%myconfig, \%$form);
+ }
- $taxincluded = $form->{taxincluded};
- $form->{shipto} = 1 if $form->{id};
+ $form->restore_vars(qw(payment_id language_id taxzone_id intnotes cp_id));
+ $form->restore_vars(qw(taxincluded)) if $form->{id};
+ $form->restore_vars(qw(salesman_id)) if $editing;
if ($form->{"all_$form->{vc}"}) {
unless ($form->{"$form->{vc}_id"}) {
@@ -174,37 +195,26 @@ sub order_links {
}
}
- $cp_id = $form->{cp_id};
- $intnotes = $form->{intnotes};
-
- $form->{cp_id} = $cp_id;
-
- $form->{payment_id} = $payment_id if ($payment_id);
- $form->{language_id} = $language_id if ($language_id);
- $form->{taxzone_id} = $taxzone_id if ($taxzone_id);
- $form->{intnotes} = $intnotes if ($intnotes);
-
($form->{ $form->{vc} }) = split /--/, $form->{ $form->{vc} };
$form->{"old$form->{vc}"} = qq|$form->{$form->{vc}}--$form->{"$form->{vc}_id"}|;
- $form->{taxincluded} = $taxincluded if ($form->{id});
-
$form->{employee} = "$form->{employee}--$form->{employee_id}";
- $form->{salesman_id} = $salesman_id if ($editing);
-
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub prepare_order {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+
$form->{formname} = $form->{type} unless $form->{formname};
my $i = 0;
- foreach $ref (@{ $form->{form_details} }) {
+ foreach my $ref (@{ $form->{form_details} }) {
$form->{rowcount} = ++$i;
map { $form->{"${_}_$i"} = $ref->{$_} } keys %{$ref};
@@ -215,9 +225,9 @@ sub prepare_order {
} else {
$form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"});
}
- ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/);
+ my ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/);
$dec = length $dec;
- $decimalplaces = ($dec > 2) ? $dec : 2;
+ my $decimalplaces = ($dec > 2) ? $dec : 2;
# copy reqdate from deliverydate for invoice -> order conversion
$form->{"reqdate_$i"} = $form->{"deliverydate_$i"} unless $form->{"reqdate_$i"};
@@ -227,18 +237,19 @@ sub prepare_order {
(my $dec_qty) = ($form->{"qty_$i"} =~ /\.(\d+)/);
$dec_qty = length $dec_qty;
$form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty);
-
- map { $form->{"${_}_$i"} =~ s/\"/"/g } qw(partnumber description unit);
}
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub form_header {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+
$form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id};
$form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id};
@@ -246,7 +257,7 @@ sub form_header {
$form->{jsscript} = 1;
#write Trigger
- $jsscript = Form->write_trigger(\%myconfig, "2", "transdate", "BL", "trigger1", "reqdate", "BL", "trigger2");
+ my $jsscript = Form->write_trigger(\%myconfig, "2", "transdate", "BL", "trigger1", "reqdate", "BL", "trigger2");
my @old_project_ids = ($form->{"globalproject_id"});
map({ push(@old_project_ids, $form->{"project_id_$_"})
@@ -281,36 +292,47 @@ sub form_header {
if ($form->{format} eq "html") {
$form->{onload} = "window.open('about:blank','Beleg'); document.do.target = 'Beleg';";
}
+ # emulate click for resubmitting actions
+ $form->{onload} .= "document.do.${_}.click(); " for grep { /^action_/ } keys %$form;
$form->{onload} .= "document.do.submit();"
}
$form->header();
+ # Fix für Bug 1082 Erwartet wird: 'abteilungsNAME--abteilungsID'
+ $form->{department} .= '--' . $form->{department_id};
+
print $form->parse_html_template('do/form_header');
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub form_footer {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+
$form->{PRINT_OPTIONS} = print_options('inline' => 1);
print $form->parse_html_template('do/form_footer');
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub update_delivery_order {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+
set_headings($form->{"id"} ? "edit" : "add");
$form->{update} = 1;
+ my $payment_id;
$payment_id = $form->{payment_id} if $form->{payment_id};
check_name($form->{vc});
@@ -318,7 +340,7 @@ sub update_delivery_order {
$form->{payment_id} = $payment_id if $form->{payment_id} eq "";
# for pricegroups
- $i = $form->{rowcount};
+ my $i = $form->{rowcount};
if ( ($form->{"partnumber_$i"} eq "")
&& ($form->{"description_$i"} eq "")
@@ -346,7 +368,6 @@ sub update_delivery_order {
} else {
- map { $form->{item_list}[$i]{$_} =~ s/\"/"/g } qw(partnumber description unit);
map { $form->{"${_}_$i"} = $form->{item_list}[0]{$_} } keys %{ $form->{item_list}[0] };
$form->{"marge_price_factor_$i"} = $form->{item_list}->[0]->{price_factor};
@@ -375,14 +396,18 @@ sub update_delivery_order {
}
}
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub search {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
+
$form->{vc} = $form->{type} eq 'purchase_delivery_order' ? 'vendor' : 'customer';
$form->get_lists("projects" => { "key" => "ALL_PROJECTS",
@@ -399,15 +424,20 @@ sub search {
print $form->parse_html_template('do/search');
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub orders {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
- ($form->{ $form->{vc} }, $form->{"${form->{vc}}_id"}) = split(/--/, $form->{ $form->{vc} });
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
+ my $cgi = $main::cgi;
+
+ ($form->{ $form->{vc} }, $form->{"$form->{vc}_id"}) = split(/--/, $form->{ $form->{vc} });
report_generator_set_default_sort('transdate', 1);
@@ -455,7 +485,7 @@ sub orders {
'delivered' => { 'text' => $locale->text('Delivered'), },
);
- foreach my $name (qw(id transdate donumber ordnumber name employee shipvia)) {
+ foreach my $name (qw(id transdate donumber ordnumber name employee shipvia transaction_description)) {
my $sortdir = $form->{sort} eq $name ? 1 - $form->{sortdir} : $form->{sortdir};
$column_defs{$name}->{link} = $href . "&sort=$name&sortdir=$sortdir";
}
@@ -468,7 +498,7 @@ sub orders {
$report->set_columns(%column_defs);
$report->set_column_order(@columns);
- $report->set_export_options('orders', @hidden_variables);
+ $report->set_export_options('orders', @hidden_variables, qw(sort sortdir));
$report->set_sort_indicator($form->{sort}, $form->{sortdir});
@@ -480,7 +510,7 @@ sub orders {
push @options, $locale->text('Vendor') . " : $form->{vendor}";
}
if ($form->{department}) {
- ($department) = split /--/, $form->{department};
+ my ($department) = split /--/, $form->{department};
push @options, $locale->text('Department') . " : $department";
}
if ($form->{donumber}) {
@@ -493,10 +523,10 @@ sub orders {
push @options, $locale->text('Transaction description') . " : $form->{transaction_description}";
}
if ($form->{transdatefrom}) {
- push @options, $locale->text('From') . " " . $locale->date(\%myconfig, $form->{transdatefrom}, 1);
+ push @options, $locale->text('From') . " " . $locale->date(\%myconfig, $form->{transdatefrom}, 1);
}
if ($form->{transdateto}) {
- push @options, $locale->text('Bis') . " " . $locale->date(\%myconfig, $form->{transdateto}, 1);
+ push @options, $locale->text('Bis') . " " . $locale->date(\%myconfig, $form->{transdateto}, 1);
}
if ($form->{open}) {
push @options, $locale->text('Open');
@@ -524,14 +554,14 @@ sub orders {
$form->{callback} = $href .= "&sort=$form->{sort}";
# escape callback for href
- $callback = $form->escape($href);
+ my $callback = $form->escape($href);
my $edit_url = build_std_url('action=edit', 'type', 'vc');
my $edit_order_url = build_std_url('script=oe.pl', 'type=' . ($form->{type} eq 'sales_delivery_order' ? 'sales_order' : 'purchase_order'), 'action=edit');
my $idx = 1;
- foreach $dord (@{ $form->{DO} }) {
+ foreach my $dord (@{ $form->{DO} }) {
$dord->{open} = $dord->{closed} ? $locale->text('No') : $locale->text('Yes');
$dord->{delivered} = $dord->{delivered} ? $locale->text('Yes') : $locale->text('No');
@@ -554,14 +584,18 @@ sub orders {
$report->generate_with_headers();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub save {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
+
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
$form->isblank("transdate", $locale->text('Delivery Order Date missing!'));
@@ -569,7 +603,7 @@ sub save {
$form->{donumber} =~ s/^\s*//g;
$form->{donumber} =~ s/\s*$//g;
- $msg = ucfirst $form->{vc};
+ my $msg = ucfirst $form->{vc};
$form->isblank($form->{vc}, $locale->text($msg . " missing!"));
# $locale->text('Customer missing!');
@@ -601,14 +635,17 @@ sub save {
update();
exit;
}
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub delete {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+ my $locale = $main::locale;
+
map { delete $form->{$_} } qw(action header login password);
my @variables = map { { 'key' => $_, 'value' => $form->{$_} } } grep { '' eq ref $form->{$_} } keys %{ $form };
@@ -617,14 +654,18 @@ sub delete {
print $form->parse_html_template('do/delete', { 'VARIABLES' => \@variables });
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub delete_delivery_order {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
+
if (DO->delete()) {
# saving the history
if(!exists $form->{addition}) {
@@ -640,14 +681,18 @@ sub delete_delivery_order {
$form->error($locale->text('Cannot delete delivery order!'));
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub invoice {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
check_do_access();
- $auth->assert($form->{type} eq 'purchase_delivery_order' ? 'vendor_invoice_edit' : 'invoice_edit');
+ $main::auth->assert($form->{type} eq 'purchase_delivery_order' ? 'vendor_invoice_edit' : 'invoice_edit');
$form->{convert_from_do_ids} = $form->{id};
$form->{deliverydate} = $form->{transdate};
@@ -659,10 +704,12 @@ sub invoice {
delete @{$form}{qw(id closed delivered)};
+ my ($script, $buysell);
if ($form->{type} eq 'purchase_delivery_order') {
$form->{title} = $locale->text('Add Vendor Invoice');
$form->{script} = 'ir.pl';
$script = "ir";
+ $buysell = 'sell';
} else {
$form->{title} = $locale->text('Add Sales Invoice');
@@ -671,7 +718,7 @@ sub invoice {
$buysell = 'buy';
}
- for $i (1 .. $form->{rowcount}) {
+ for my $i (1 .. $form->{rowcount}) {
map { $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if $form->{"${_}_${i}"} } qw(ship qty sellprice listprice basefactor);
}
@@ -693,12 +740,12 @@ sub invoice {
prepare_invoice();
# format amounts
- for $i (1 .. $form->{rowcount}) {
+ for my $i (1 .. $form->{rowcount}) {
$form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"});
- ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/);
+ my ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/);
$dec = length $dec;
- $decimalplaces = ($dec > 2) ? $dec : 2;
+ my $decimalplaces = ($dec > 2) ? $dec : 2;
# copy delivery date from reqdate for order -> invoice conversion
$form->{"deliverydate_$i"} = $form->{"reqdate_$i"}
@@ -717,14 +764,18 @@ sub invoice {
display_form();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub invoice_multi {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
check_do_access();
- $auth->assert($form->{type} eq 'sales_delivery_order' ? 'invoice_edit' : 'vendor_invoice_edit');
+ $main::auth->assert($form->{type} eq 'sales_delivery_order' ? 'invoice_edit' : 'vendor_invoice_edit');
my @do_ids = map { $form->{"trans_id_$_"} } grep { $form->{"multi_id_$_"} } (1..$form->{rowcount});
@@ -741,7 +792,13 @@ sub invoice_multi {
'back_button' => 1);
}
+ my $source_type = $form->{type};
$form->{convert_from_do_ids} = join ' ', @do_ids;
+ # bei der auswahl von mehreren Lieferscheinen fuer eine Rechnung, die einfach in donumber_array
+ # zwischenspeichern (DO.pm) und als ' '-separierte Liste wieder zurueckschreiben
+ # Hinweis: delete gibt den wert zurueck und loescht danach das element (nett und einfach)
+ # $shell: perldoc perlunc; /delete EXPR
+ $form->{donumber} = delete $form->{donumber_array};
$form->{deliverydate} = $form->{transdate};
$form->{transdate} = $form->current_date(\%myconfig);
$form->{duedate} = $form->current_date(\%myconfig, $form->{invdate}, $form->{terms} * 1);
@@ -749,8 +806,8 @@ sub invoice_multi {
$form->{closed} = 0;
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
- my $buysell;
- if ($form->{type} eq 'purchase_delivery_order') {
+ my ($script, $buysell);
+ if ($source_type eq 'purchase_delivery_order') {
$form->{title} = $locale->text('Add Vendor Invoice');
$form->{script} = 'ir.pl';
$script = "ir";
@@ -768,8 +825,12 @@ sub invoice_multi {
$form->{rowcount} = 0;
foreach my $ref (@{ $form->{form_details} }) {
$form->{rowcount}++;
+ $ref->{reqdate} ||= $ref->{dord_transdate}; # copy transdates into each invoice row
map { $form->{"${_}_$form->{rowcount}"} = $ref->{$_} } keys %{ $ref };
map { $form->{"${_}_$form->{rowcount}"} = $form->format_amount(\%myconfig, $ref->{$_}) } qw(qty sellprice discount lastcost);
+ $form->{"discount_$form->{rowcount}"} = $form->{"discount_$form->{rowcount}"} * 100; #s.a. Bug 1151
+ # Anm.: Eine Ãnderung des discounts in der SL/DO.pm->retrieve (select (doi.discount * 100) as discount) ergibt in psql einen
+ # Wert von 10.0000001490116. Ferner ist der Rabatt in der Rechnung dann bei 1.0 (?). Deswegen lasse ich das hier. jb 10.10.09
}
delete $form->{form_details};
@@ -781,14 +842,16 @@ sub invoice_multi {
prepare_invoice();
display_form();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub save_as_new {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+
$form->{saveasnew} = 1;
$form->{closed} = 0;
$form->{delivered} = 0;
@@ -804,14 +867,16 @@ sub save_as_new {
save();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub e_mail {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
check_do_access();
+ my $form = $main::form;
+
$form->{print_and_save} = 1;
$print_post = 1;
@@ -824,20 +889,22 @@ sub e_mail {
edit_e_mail();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub calculate_stock_in_out {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
my $i = shift;
if (!$form->{"id_${i}"}) {
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
return '';
}
- AM->retrieve_all_units();
+ my $all_units = AM->retrieve_all_units();
my $in_out = $form->{type} =~ /^sales/ ? 'out' : 'in';
my $sinfo = DO->unpack_stock_information('packed' => $form->{"stock_${in_out}_${i}"});
@@ -851,16 +918,18 @@ sub calculate_stock_in_out {
'max_places' => 2);
$content .= qq| |;
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
return $content;
}
sub get_basic_bin_wh_info {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
my $stock_info = shift;
+ my $form = $main::form;
+
foreach my $sinfo (@{ $stock_info }) {
next unless ($sinfo->{bin_id});
@@ -868,11 +937,13 @@ sub get_basic_bin_wh_info {
map { $sinfo->{"${_}_description"} = $sinfo->{"${_}description"} = $bin_info->{"${_}_description"} } qw(bin warehouse);
}
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub stock_in_out_form {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
if ($form->{in_out} eq 'out') {
stock_out_form();
@@ -880,14 +951,16 @@ sub stock_in_out_form {
stock_in_form();
}
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub redo_stock_info {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
my %params = @_;
+ my $form = $main::form;
+
my @non_empty = grep { $_->{qty} } @{ $params{stock_info} };
if ($params{add_empty_row}) {
@@ -899,11 +972,14 @@ sub redo_stock_info {
@{ $params{stock_info} } = @non_empty;
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub update_stock_in {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
my $stock_info = [];
@@ -914,24 +990,30 @@ sub update_stock_in {
display_stock_in_form($stock_info);
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub stock_in_form {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
my $stock_info = DO->unpack_stock_information('packed' => $form->{stock});
display_stock_in_form($stock_info);
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub display_stock_in_form {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
my $stock_info = shift;
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
+
$form->{title} = $locale->text('Stock');
my $part_info = IC->get_basic_part_info('id' => $form->{parts_id});
@@ -951,11 +1033,14 @@ sub display_stock_in_form {
'STOCK_INFO' => $stock_info,
'PART_INFO' => $part_info, });
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub set_stock_in {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
my $stock_info = [];
@@ -972,11 +1057,15 @@ sub set_stock_in {
$form->header();
print $form->parse_html_template('do/set_stock_in_out');
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub stock_out_form {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
$form->{title} = $locale->text('Release From Stock');
@@ -1018,11 +1107,15 @@ sub stock_out_form {
'WHCONTENTS' => $form->{delivered} ? $stock_info : \@contents,
'PART_INFO' => $part_info, });
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub set_stock_out {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
my $stock_info = [];
@@ -1056,11 +1149,15 @@ sub set_stock_out {
print $form->parse_html_template('do/set_stock_in_out');
}
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub transfer_in {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
if (DO->is_marked_as_delivered('id' => $form->{id})) {
$form->show_generic_error($locale->text('The parts for this delivery order have already been transferred in.'), 'back_button' => 1);
@@ -1103,7 +1200,7 @@ sub transfer_in {
push @{ $form->{ERRORS} }, $locale->text('The delivery order has not been marked as delivered. The warehouse contents have not changed.');
update();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
exit 0;
}
@@ -1116,11 +1213,15 @@ sub transfer_in {
save();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub transfer_out {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
if (DO->is_marked_as_delivered('id' => $form->{id})) {
$form->show_generic_error($locale->text('The parts for this delivery order have already been transferred out.'), 'back_button' => 1);
@@ -1180,7 +1281,7 @@ sub transfer_out {
$request->{ok} = $request->{sum_base_qty} <= $inv->{qty};
}
- foreach $request (values %request_map) {
+ foreach my $request (values %request_map) {
next if ($request->{ok});
my $pinfo = $part_info_map{$request->{parts_id}};
@@ -1199,7 +1300,7 @@ sub transfer_out {
push @{ $form->{ERRORS} }, $locale->text('The delivery order has not been marked as delivered. The warehouse contents have not changed.');
update();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
exit 0;
}
@@ -1212,11 +1313,13 @@ sub transfer_out {
save();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub mark_closed {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
DO->close_orders('ids' => [ $form->{id} ]);
@@ -1224,18 +1327,32 @@ sub mark_closed {
update();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
sub yes {
- call_sub($form->{yes_nextsub});
+ call_sub($main::form->{yes_nextsub});
}
sub no {
- call_sub($form->{no_nextsub});
+ call_sub($main::form->{no_nextsub});
}
sub update {
- call_sub($form->{update_nextsub} || $form->{nextsub} || 'update_delivery_order');
+ call_sub($main::form->{update_nextsub} || $main::form->{nextsub} || 'update_delivery_order');
+}
+
+sub dispatcher {
+ my $form = $main::form;
+ my $locale = $main::locale;
+
+ foreach my $action (qw(update ship_to print e_mail save transfer_out transfer_in mark_closed save_as_new invoice delete)) {
+ if ($form->{"action_${action}"}) {
+ call_sub($action);
+ return;
+ }
+ }
+
+ $form->error($locale->text('No action defined.'));
}