X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FWH.pm;h=8ff63f219c8c1958de068049522de3c1eb090478;hb=9e0188ba785104e391419738942476f4036ea921;hp=7e4d5194bb6e1d376705211203e545cdd0623417;hpb=7482e44da683adb4bcd43fa272c4418e6c09d5f0;p=kivitendo-erp.git diff --git a/SL/WH.pm b/SL/WH.pm index 7e4d5194b..8ff63f219 100644 --- a/SL/WH.pm +++ b/SL/WH.pm @@ -59,7 +59,7 @@ sub transfer { require SL::DB::Employee; require SL::DB::Inventory; - my $employee = SL::DB::Manager::Employee->find_by(login => $::form->{login}); + my $employee = SL::DB::Manager::Employee->find_by(login => $::myconfig{login}); my ($now) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT current_date|); my @directions = (undef, qw(out in transfer)); @@ -79,7 +79,7 @@ sub transfer { my @trans_ids; my $db = SL::DB::Inventory->new->db; - $db->do_transaction(sub{ + $db->with_transaction(sub{ while (my $transfer = shift @args) { my ($trans_id) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT nextval('id')|); @@ -110,7 +110,7 @@ sub transfer { trans_id => $trans_id, shippingdate => !$transfer->{shippingdate} || $transfer->{shippingdate} eq 'current_date' ? $now : $transfer->{shippingdate}, - map { $_ => $transfer->{$_} } qw( chargenumber bestbefore oe_id orderitems_id comment), + map { $_ => $transfer->{$_} } qw(chargenumber bestbefore oe_id delivery_order_items_stock_id invoice_id comment), ); if ($unit) { @@ -137,14 +137,14 @@ sub transfer { )->save; # Standardlagerplatz in Stammdaten gleich mitverschieben if (defined($transfer->{change_default_bin})){ - my $part = SL::DB::Part->new(id => conv_i($transfer->{parts_id}))->load; - $part->update_attributes(warehouse_id => conv_i($transfer->{dst_warehouse_id})); - $part->update_attributes(bin_id => conv_i($transfer->{dst_bin_id})); + $part->update_attributes(warehouse_id => $dst_wh->id, bin_id => $dst_bin->id); } - } + } push @trans_ids, $trans_id; } + + 1; }) or do { $::form->error("Warehouse transfer error: " . join("\n", (split(/\n/, $db->error))[0..2])); }; @@ -162,7 +162,7 @@ sub transfer_assembly { Common::check_params(\%params, qw(assembly_id dst_warehouse_id login qty unit dst_bin_id chargenumber bestbefore comment)); - my $unit = SL::DB::Manager::Unit->find_by(name => $params{unit}); + my $unit = SL::DB::Manager::Unit->find_by(name => $params{unit}); if ($unit) { my $assembly = SL::DB::Manager::Assembly->get_all( query => [ id => $params{assembly_id} ], @@ -408,6 +408,7 @@ sub get_warehouse_journal { "trans_type" => "tt.description", "trans_id" => "i1.trans_id", "oe_id" => "COALESCE(i1.oe_id, i2.oe_id)", + "invoice_id" => "COALESCE(i1.invoice_id, i2.invoice_id)", "date" => "i1.itime::DATE", "itime" => "i1.itime", "employee" => "e.name", @@ -424,6 +425,8 @@ sub get_warehouse_journal { "warehouse_from" => "'$filter{na}'", }; + $form->{l_invoice_id} = $form->{l_oe_id} if $form->{l_oe_id}; + # build the select clauses. # take all the requested ones from the first hash and overwrite them from the out/in hashes if present. for my $i ('trans', 'out', 'in') { @@ -523,6 +526,18 @@ sub get_warehouse_journal { SELECT ap.id AS id, ap.invnumber AS number, 'purchase_invoice' AS type FROM ap WHERE ap.id = ? + + UNION + + SELECT ar.id AS id, ar.invnumber AS number, 'sales_invoice' AS type + FROM ar + WHERE ar.id = (SELECT trans_id FROM invoice WHERE id = ?) + + UNION + + SELECT ap.id AS id, ap.invnumber AS number, 'purchase_invoice' AS type + FROM ap + WHERE ap.id = (SELECT trans_id FROM invoice WHERE id = ?) SQL $h_oe_id = prepare_query($form, $dbh, $q_oe_id); } @@ -543,8 +558,9 @@ SQL next if (('<=' eq $f_qty_op) && ($qty > $f_qty)); } - if ($h_oe_id && $ref->{oe_id}) { - do_statement($form, $h_oe_id, $q_oe_id, ($ref->{oe_id}) x 4); + if ($h_oe_id && ($ref->{oe_id} || $ref->{invoice_id})) { + my $id = $ref->{oe_id} ? $ref->{oe_id} : $ref->{invoice_id}; + do_statement($form, $h_oe_id, $q_oe_id, ($id) x 6); $ref->{oe_id_info} = $h_oe_id->fetchrow_hashref() || {}; } @@ -960,7 +976,7 @@ $main::lxdebug->enter_sub(); while (my $ref = $sth_QTY->fetchrow_hashref()) { # wir laufen über alle Haltbarkeiten und Chargen(s.a. SQL-Query oben) $max_qty_parts += $ref->{sum}; $i++; - if ($ref->{chargenumber} || $ref->{bestbefore}){ + if (($ref->{chargenumber} || $ref->{bestbefore}) && $ref->{sum} != 0){ $error=1; } }