]> wagnertech.de Git - mfinanz.git/blobdiff - SL/WH.pm
Auslagern in VK-Rechnung: Beim Buchen einer VK-Rechnung wird ausgelagert.
[mfinanz.git] / SL / WH.pm
index 3087dfff4ade3b06f213b3776af03a8fedcf67a0..a8c1ae3bf91e385536d1e7b107bbdbdd2550bdc9 100644 (file)
--- a/SL/WH.pm
+++ b/SL/WH.pm
@@ -38,6 +38,9 @@ use SL::AM;
 use SL::DBUtils;
 use SL::Form;
 
+use SL::DB::Unit;
+use SL::DB::Assembly;
+
 use warnings;
 use strict;
 
@@ -76,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')|);
 
@@ -107,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) {
@@ -138,10 +141,12 @@ sub transfer {
           $part->update_attributes(warehouse_id  => conv_i($transfer->{dst_warehouse_id}));
           $part->update_attributes(bin_id        => conv_i($transfer->{dst_bin_id}));
         }
-     }
+      }
 
       push @trans_ids, $trans_id;
     }
+
+    1;
   }) or do {
     $::form->error("Warehouse transfer error: " . join("\n", (split(/\n/, $db->error))[0..2]));
   };
@@ -158,6 +163,17 @@ sub transfer_assembly {
   my %params   = @_;
   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});
+  if ($unit) {
+    my $assembly = SL::DB::Manager::Assembly->get_all(
+      query => [ id => $params{assembly_id} ],
+      with_objects => ['part'],
+      limit => 1,
+    )->[0];
+    $params{qty} = $unit->convert_to($params{qty}, $assembly->part->unit_obj);
+  }
+
 #  my $maxcreate=WH->check_assembly_max_create(assembly_id =>$params{'assembly_id'}, dbh => $my_dbh);
 
   my $myconfig = \%main::myconfig;