X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fdo.pl;h=fd8482b196b4fcdcd2c221c155c41fd28448d977;hb=26b68f7e988acbe102b54c40ba205bf1fa74fb10;hp=228b8e68d5073ead902952f7b1ba4362084150dc;hpb=1bfdd83b1ba9b0dca96105be0a32ff3ea9794584;p=kivitendo-erp.git diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index 228b8e68d..fd8482b19 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; + +my $print_post; + 1; # end of main 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,17 +424,22 @@ 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->{sort} ||= 'transdate'; + ($form->{ $form->{vc} }, $form->{"$form->{vc}_id"}) = split(/--/, $form->{ $form->{vc} }); + + report_generator_set_default_sort('transdate', 1); DO->transactions(); @@ -455,8 +485,9 @@ sub orders { 'delivered' => { 'text' => $locale->text('Delivered'), }, ); - foreach my $name (qw(id transdate donumber ordnumber name employee shipvia)) { - $column_defs{$name}->{link} = $href . "&sort=$name"; + 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"; } $form->{"l_type"} = "Y"; @@ -467,9 +498,9 @@ 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}, 1); + $report->set_sort_indicator($form->{sort}, $form->{sortdir}); my @options; if ($form->{customer}) { @@ -479,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}) { @@ -492,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'); @@ -523,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'); @@ -553,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!')); @@ -568,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!'); @@ -600,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 }; @@ -616,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}) { @@ -639,31 +681,35 @@ 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(); - check_do_access(); - $auth->assert($form->{type} eq 'purchase_delivery_order' ? 'vendor_invoice_edit' : 'invoice_edit'); + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; - $form->{close_do_ids} = $form->{id}; + check_do_access(); + $main::auth->assert($form->{type} eq 'purchase_delivery_order' ? 'vendor_invoice_edit' : 'invoice_edit'); - $form->{deliverydate} = $form->{transdate}; - $form->{transdate} = $form->{invdate} = $form->current_date(\%myconfig); - $form->{duedate} = $form->current_date(\%myconfig, $form->{invdate}, $form->{terms} * 1); + $form->{convert_from_do_ids} = $form->{id}; + $form->{deliverydate} = $form->{transdate}; + $form->{transdate} = $form->{invdate} = $form->current_date(\%myconfig); + $form->{duedate} = $form->current_date(\%myconfig, $form->{invdate}, $form->{terms} * 1); + $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); - $form->{id} = ''; - $form->{closed} = 0; $form->{rowcount}--; - $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); + 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'); @@ -672,14 +718,15 @@ 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); } $form->{type} = "invoice"; # locale messages - $locale = new Locale "$myconfig{countrycode}", "$script"; + $main::locale = new Locale "$myconfig{countrycode}", "$script"; + $locale = $main::locale; require "bin/mozilla/$form->{script}"; @@ -694,12 +741,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"} @@ -718,14 +765,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}); @@ -742,16 +793,22 @@ sub invoice_multi { 'back_button' => 1); } - $form->{close_do_ids} = join ' ', @do_ids; - $form->{deliverydate} = $form->{transdate}; - $form->{transdate} = $form->current_date(\%myconfig); - $form->{duedate} = $form->current_date(\%myconfig, $form->{invdate}, $form->{terms} * 1); - $form->{type} = "invoice"; - $form->{closed} = 0; - $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); - - my $buysell; - if ($form->{type} eq 'purchase_delivery_order') { + 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); + $form->{type} = "invoice"; + $form->{closed} = 0; + $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); + + my ($script, $buysell); + if ($source_type eq 'purchase_delivery_order') { $form->{title} = $locale->text('Add Vendor Invoice'); $form->{script} = 'ir.pl'; $script = "ir"; @@ -769,8 +826,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}; @@ -782,14 +843,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; @@ -805,14 +868,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; @@ -825,20 +890,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}"}); @@ -852,16 +919,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}); @@ -869,11 +938,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(); @@ -881,14 +952,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}) { @@ -900,11 +973,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 = []; @@ -915,24 +991,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}); @@ -952,11 +1034,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 = []; @@ -973,11 +1058,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'); @@ -1019,11 +1108,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 = []; @@ -1057,11 +1150,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); @@ -1104,7 +1201,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; } @@ -1117,11 +1214,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); @@ -1181,7 +1282,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}}; @@ -1200,7 +1301,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; } @@ -1213,11 +1314,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} ]); @@ -1225,18 +1328,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.')); }