X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/14672a1d69298562d8aac987ff2c4eaab3492088..b90ff6b18df92c98b1b875d14835d1fdf9ff339a:/SL/DB/Inventory.pm diff --git a/SL/DB/Inventory.pm b/SL/DB/Inventory.pm index a2b571ce6..8557719d5 100644 --- a/SL/DB/Inventory.pm +++ b/SL/DB/Inventory.pm @@ -4,7 +4,10 @@ package SL::DB::Inventory; use strict; +use Carp; +use DateTime; +use SL::DBUtils qw(selectrow_query); use SL::DB::MetaSetup::Inventory; use SL::DB::Manager::Inventory; @@ -19,6 +22,34 @@ sub part { goto &parts; } +sub new_from { + my ($class, $obj) = @_; + + if ('SL::DB::DeliveryOrderItemsStock' eq ref $obj) { + return $class->new_from_delivery_order_stock($obj); + } + + croak "unknown obj type (@{[ ref $obj ]}) for SL::DB::Inventory::new_from"; +} + +sub new_from_delivery_order_stock { + my ($class, $stock) = @_; + + my $project = $stock->delivery_order_item->effective_project; + + return $class->new( + delivery_order_items_stock_id => $stock->id, + parts_id => $stock->delivery_order_item->parts_id, + qty => $stock->unit_obj->convert_to($stock->qty => $stock->delivery_order_item->part->unit_obj), + warehouse_id => $stock->warehouse_id, + bin_id => $stock->bin_id, + chargenumber => $stock->chargenumber, + bestbefore => $stock->bestbefore, + project_id => $project ? $project->id : undef, + # trans_type - not set here, set in controller + ); +} + sub _before_save_create_trans_id { my ($self, %params) = @_; @@ -44,7 +75,7 @@ sub _before_save_set_shippingdate { sub _before_save_set_employee { my ($self, %params) = @_; - return 1 if $self->emplyee_id; + return 1 if $self->employee_id; $self->employee(SL::DB::Manager::Employee->current);