# Delivery orders
#======================================================================
+use Carp;
use List::MoreUtils qw(uniq);
use List::Util qw(max sum);
use POSIX qw(strftime);
my %myconfig = %main::myconfig;
my $locale = $main::locale;
+ $form->mtime_ischanged('delivery_orders');
+
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
$form->isblank("transdate", $locale->text('Delivery Order Date missing!'));
my $locale = $main::locale;
check_do_access();
+ $form->mtime_ischanged('delivery_orders');
+
$main::auth->assert($form->{type} eq 'purchase_delivery_order' ? 'vendor_invoice_edit' : 'invoice_edit');
$form->{convert_from_do_ids} = $form->{id};
my $currency = $form->{currency};
invoice_links();
+ if ($form->{ordnumber}) {
+ require SL::DB::Order;
+ if (my $order = SL::DB::Manager::Order->find_by(ordnumber => $form->{ordnumber})) {
+ $order->load;
+ $form->{orddate} = $order->transdate_as_date;
+ $form->{$_} = $order->$_ for qw(payment_id salesman_id taxzone_id quonumber);
+ }
+ }
+
$form->{currency} = $currency;
$form->{exchangerate} = "";
$form->{forex} = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{invdate}, $buysell);
check_do_access();
- my $form = $main::form;
+ $::form->mtime_ischanged('delivery_orders','mail');
- $form->{print_and_save} = 1;
+ $::form->{print_and_save} = 1;
my $saved_form = save_form();
# dieser array_ref ist für DO->save da:
# einmal die all_requests in YAML verwandeln, damit delivery_order_items_stock
# gefüllt werden kann.
+ # could be dumped to the form in the first loop,
+ # but maybe bin_id and warehouse_id has changed to the "korrekturlager" with
+ # allowed negative qty ($::instance_conf->get_warehouse_id_ignore_onhand) ...
my $i = 0;
foreach (@all_requests){
$i++;
save(no_redirect => 1); # Wir können auslagern, deshalb beleg speichern
# und in delivery_order_items_stock speichern
+
+ # ... and fill back the persistent dois_id for inventory fk
+ undef (@all_requests);
+ foreach my $i (1 .. $form->{rowcount}) {
+ next unless ($form->{"id_$i"} && $form->{"stock_${prefix}_$i"});
+ push @all_requests, @{ DO->unpack_stock_information('packed' => $form->{"stock_${prefix}_$i"}) };
+ }
DO->transfer_in_out('direction' => $prefix,
'requests' => \@all_requests);