X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDO.pm;h=86c65ea1449d9b263236cb9c8bc53604f7cfce2c;hb=844a541e0d8f59644540413f675e8f07cd154cf6;hp=90599a7de193e4b06685fc23d542c1badb856edd;hpb=6ceacc682f9c760e654f5aacde9b8480760d8b36;p=kivitendo-erp.git diff --git a/SL/DO.pm b/SL/DO.pm index 90599a7de..86c65ea14 100644 --- a/SL/DO.pm +++ b/SL/DO.pm @@ -513,7 +513,7 @@ SQL donumber = ?, ordnumber = ?, cusordnumber = ?, transdate = ?, vendor_id = ?, customer_id = ?, reqdate = ?, tax_point = ?, shippingpoint = ?, shipvia = ?, notes = ?, intnotes = ?, closed = ?, - delivered = ?, department_id = ?, language_id = ?, shipto_id = ?, + delivered = ?, department_id = ?, language_id = ?, shipto_id = ?, billing_address_id = ?, globalproject_id = ?, employee_id = ?, salesman_id = ?, cp_id = ?, transaction_description = ?, is_sales = ?, taxzone_id = ?, taxincluded = ?, payment_id = ?, currency_id = (SELECT id FROM currencies WHERE name = ?), delivery_term_id = ? @@ -525,7 +525,7 @@ SQL conv_date($form->{reqdate}), conv_date($form->{tax_point}), $form->{shippingpoint}, $form->{shipvia}, $restricter->process($form->{notes}), $form->{intnotes}, $form->{closed} ? 't' : 'f', $form->{delivered} ? "t" : "f", - conv_i($form->{department_id}), conv_i($form->{language_id}), conv_i($form->{shipto_id}), + conv_i($form->{department_id}), conv_i($form->{language_id}), conv_i($form->{shipto_id}), conv_i($form->{billing_address_id}), conv_i($form->{globalproject_id}), conv_i($form->{employee_id}), conv_i($form->{salesman_id}), conv_i($form->{cp_id}), $form->{transaction_description}, @@ -557,10 +557,10 @@ SQL 'to_id' => $form->{id}, ); delete $form->{convert_from_oe_ids}; - - $self->mark_orders_if_delivered('do_id' => $form->{id}, - 'type' => $form->{type} eq 'sales_delivery_order' ? 'sales' : 'purchase', - 'dbh' => $dbh,); + unless ($::instance_conf->get_shipped_qty_require_stock_out) { + $self->mark_orders_if_delivered('do_id' => $form->{id}, + 'type' => $form->{type} eq 'sales_delivery_order' ? 'sales' : 'purchase'); + } $form->{saved_donumber} = $form->{donumber}; $form->{saved_ordnumber} = $form->{ordnumber}; @@ -649,6 +649,38 @@ sub delete { return $rc; } +sub delete_transfers { + $main::lxdebug->enter_sub(); + + my ($self) = @_; + + my $myconfig = \%main::myconfig; + my $form = $main::form; + + my $rc = SL::DB::Order->new->db->with_transaction(sub { + + my $do = SL::DB::DeliveryOrder->new(id => $form->{id})->load; + die "No valid delivery order found" unless ref $do eq 'SL::DB::DeliveryOrder'; + + my $dt = DateTime->today->subtract(days => $::instance_conf->get_undo_transfer_interval); + croak "Wrong call. Please check undoing interval" unless $do->itime > $dt; + + foreach my $doi (@{ $do->orderitems }) { + foreach my $dois (@{ $doi->delivery_order_stock_entries}) { + $dois->inventory->delete; + $dois->delete; + } + } + $do->update_attributes(delivered => 0); + + 1; + }); + + $main::lxdebug->leave_sub(); + + return $rc; +} + sub retrieve { $main::lxdebug->enter_sub(); @@ -699,7 +731,7 @@ sub retrieve { dord.${vc}_id, cv.name AS ${vc}, dord.closed, dord.reqdate, dord.department_id, dord.cusordnumber, d.description AS department, dord.language_id, - dord.shipto_id, + dord.shipto_id, dord.billing_address_id, dord.itime, dord.mtime, dord.globalproject_id, dord.delivered, dord.transaction_description, dord.taxzone_id, dord.taxincluded, dord.payment_id, (SELECT cu.name FROM currencies cu WHERE cu.id=dord.currency_id) AS currency, @@ -1231,6 +1263,11 @@ sub transfer_in_out { WH->transfer(@transfers); + if ($::instance_conf->get_shipped_qty_require_stock_out) { + $self->mark_orders_if_delivered('do_id' => $form->{id}, + 'type' => $form->{type} eq 'sales_delivery_order' ? 'sales' : 'purchase'); + } + $main::lxdebug->leave_sub(); }