Revision f404e525
Von Sven Schöling vor mehr als 15 Jahren hinzugefügt
bin/mozilla/do.pl | ||
---|---|---|
# #=====================================================================
|
||
#=====================================================================
|
||
# LX-Office ERP
|
||
# Copyright (C) 2004
|
||
# Based on SQL-Ledger Version 2.1.9
|
||
... | ... | |
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');
|
||
... | ... | |
|
||
$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});
|
||
... | ... | |
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|<script type="text/javascript" src="js/show_history.js"></script>|;
|
||
#/show hhistory button
|
||
... | ... | |
# 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} = "dispatcher";
|
||
$form->{action_print} = "1";
|
||
... | ... | |
|
||
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};
|
||
... | ... | |
|
||
$form->{employee} = "$form->{employee}--$form->{employee_id}";
|
||
|
||
$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};
|
||
... | ... | |
} 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"};
|
||
... | ... | |
$form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty);
|
||
}
|
||
|
||
$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};
|
||
|
||
... | ... | |
$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_$_"})
|
||
... | ... | |
|
||
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});
|
||
... | ... | |
$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 "")
|
||
... | ... | |
}
|
||
}
|
||
|
||
$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",
|
||
... | ... | |
|
||
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);
|
||
|
||
... | ... | |
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}) {
|
||
... | ... | |
$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');
|
||
|
||
... | ... | |
|
||
$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!'));
|
||
... | ... | |
$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!');
|
||
... | ... | |
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 };
|
||
|
||
... | ... | |
|
||
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}) {
|
||
... | ... | |
|
||
$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};
|
||
... | ... | |
|
||
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';
|
||
... | ... | |
$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);
|
||
}
|
||
|
||
... | ... | |
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"}
|
||
... | ... | |
|
||
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});
|
||
|
||
... | ... | |
$form->{closed} = 0;
|
||
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
|
||
|
||
my $buysell;
|
||
my ($script, $buysell);
|
||
if ($source_type eq 'purchase_delivery_order') {
|
||
$form->{title} = $locale->text('Add Vendor Invoice');
|
||
$form->{script} = 'ir.pl';
|
||
... | ... | |
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;
|
||
... | ... | |
|
||
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;
|
||
... | ... | |
|
||
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}"});
|
||
... | ... | |
'max_places' => 2);
|
||
$content .= qq| <input type="button" onclick="open_stock_in_out_window('${in_out}', $i);" value="?">|;
|
||
|
||
$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});
|
||
|
||
... | ... | |
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();
|
||
... | ... | |
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}) {
|
||
... | ... | |
|
||
@{ $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 = [];
|
||
|
||
... | ... | |
|
||
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});
|
||
... | ... | |
'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 = [];
|
||
|
||
... | ... | |
$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');
|
||
|
||
... | ... | |
'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 = [];
|
||
|
||
... | ... | |
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);
|
||
... | ... | |
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;
|
||
}
|
||
... | ... | |
|
||
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);
|
||
... | ... | |
$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}};
|
||
... | ... | |
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;
|
||
}
|
||
... | ... | |
|
||
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} ]);
|
||
|
||
... | ... | |
|
||
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);
|
Auch abrufbar als: Unified diff
do strict