use POSIX qw(strftime);
use YAML;
+use SL::DB::DeliveryOrder;
use SL::DO;
use SL::IR;
use SL::IS;
} else {
+ my $mode;
if ($form->{type} eq 'purchase_delivery_order') {
IR->retrieve_item(\%myconfig, $form);
+ $mode = 'IR';
} else {
IS->retrieve_item(\%myconfig, $form);
+ $mode = 'IS';
}
my $rows = scalar @{ $form->{item_list} };
if ($rows > 1) {
- select_item();
+ select_item(mode => $mode);
::end_of_request();
} else {
my $form = $main::form;
my %myconfig = %main::myconfig;
my $locale = $main::locale;
- my $cgi = $main::cgi;
+ my $cgi = $::request->{cgi};
($form->{ $form->{vc} }, $form->{"$form->{vc}_id"}) = split(/--/, $form->{ $form->{vc} });
sub save {
$main::lxdebug->enter_sub();
+ my (%params) = @_;
+
check_do_access();
my $form = $main::form;
# /saving the history
$form->{simple_save} = 1;
- if(!$form->{print_and_save}) {
+ if (!$params{no_redirect} && !$form->{print_and_save}) {
set_headings("edit");
update();
::end_of_request();
$vc_discount = $form->{vendor_discount};
} else {
IS->get_customer(\%myconfig, \%$form);
- $vc_discount = $form->parse_amount(\%myconfig, $form->{customer_discount});
+ $vc_discount = $form->{customer_discount};
}
restore_form($saved_form);
my %myconfig = %main::myconfig;
my $locale = $main::locale;
- if (DO->is_marked_as_delivered('id' => $form->{id})) {
+ if ($form->{id} && 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);
}
+ save(no_redirect => 1);
+
my @part_ids = map { $form->{"id_${_}"} } grep { $form->{"id_${_}"} && $form->{"stock_in_${_}"} } (1 .. $form->{rowcount});
my @all_requests;
if (@{ $form->{ERRORS} }) {
push @{ $form->{ERRORS} }, $locale->text('The delivery order has not been marked as delivered. The warehouse contents have not changed.');
+ set_headings('edit');
update();
$main::lxdebug->leave_sub();
DO->transfer_in_out('direction' => 'in',
'requests' => \@all_requests);
- $form->{delivered} = 1;
+ SL::DB::DeliveryOrder->new(id => $form->{id})->load->update_attributes(delivered => 1);
- save();
+ $form->{callback} = 'do.pl?action=edit&type=purchase_delivery_order&id=' . $form->escape($form->{id});
+ $form->redirect;
$main::lxdebug->leave_sub();
}
my %myconfig = %main::myconfig;
my $locale = $main::locale;
- if (DO->is_marked_as_delivered('id' => $form->{id})) {
+ if ($form->{id} && 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);
}
+ save(no_redirect => 1);
+
my @part_ids = map { $form->{"id_${_}"} } grep { $form->{"id_${_}"} && $form->{"stock_out_${_}"} } (1 .. $form->{rowcount});
my @all_requests;
next if (0 == $row_sum_base_qty);
- my $do_base_qty = $form->parse_amount(\%myconfig, $form->{"qty_$i"}) * $units->{$form->{"unit_$i"}}->{factor} / $base_unit_factor;
+ my $do_base_qty = $form->{"qty_$i"} * $units->{$form->{"unit_$i"}}->{factor} / $base_unit_factor;
# if ($do_base_qty != $row_sum_base_qty) {
# push @{ $form->{ERRORS} }, $locale->text('Error in position #1: You must either assign no transfer at all or the full quantity of #2 #3.',
if (@{ $form->{ERRORS} }) {
push @{ $form->{ERRORS} }, $locale->text('The delivery order has not been marked as delivered. The warehouse contents have not changed.');
+ set_headings('edit');
update();
$main::lxdebug->leave_sub();
DO->transfer_in_out('direction' => 'out',
'requests' => \@all_requests);
- $form->{delivered} = 1;
+ SL::DB::DeliveryOrder->new(id => $form->{id})->load->update_attributes(delivered => 1);
- save();
+ $form->{callback} = 'do.pl?action=edit&type=sales_delivery_order&id=' . $form->escape($form->{id});
+ $form->redirect;
$main::lxdebug->leave_sub();
}