1 # This file has been auto-generated only because it didn't exist.
 
   2 # Feel free to modify it at will; it will not be overwritten automatically.
 
   4 package SL::DB::Inventory;
 
  10 use SL::DBUtils qw(selectrow_query);
 
  11 use SL::DB::MetaSetup::Inventory;
 
  12 use SL::DB::Manager::Inventory;
 
  14 __PACKAGE__->meta->initialize;
 
  16 __PACKAGE__->before_save(\&_before_save_create_trans_id);
 
  17 __PACKAGE__->before_save(\&_before_save_set_shippingdate);
 
  18 __PACKAGE__->before_save(\&_before_save_set_employee);
 
  20 # part accessor is badly named
 
  26   my ($class, $obj) = @_;
 
  28   if ('SL::DB::DeliveryOrderItemsStock' eq ref $obj) {
 
  29     return $class->new_from_delivery_order_stock($obj);
 
  32   croak "unknown obj type (@{[ ref $obj ]}) for SL::DB::Inventory::new_from";
 
  35 sub new_from_delivery_order_stock {
 
  36   my ($class, $stock) = @_;
 
  38   my $project = $stock->delivery_order_item->effective_project;
 
  41     delivery_order_items_stock_id => $stock->id,
 
  42     parts_id                      => $stock->delivery_order_item->parts_id,
 
  43     qty                           => $stock->unit_obj->convert_to($stock->qty => $stock->delivery_order_item->part->unit_obj),
 
  44     warehouse_id                  => $stock->warehouse_id,
 
  45     bin_id                        => $stock->bin_id,
 
  46     chargenumber                  => $stock->chargenumber,
 
  47     bestbefore                    => $stock->bestbefore,
 
  48     project_id                    => $project ? $project->id : undef,
 
  49     # trans_type - not set here, set in controller
 
  53 sub _before_save_create_trans_id {
 
  54   my ($self, %params) = @_;
 
  56   return 1 if $self->trans_id;
 
  58   my ($trans_id) = selectrow_query($::form, SL::DB->client->dbh, qq|SELECT nextval('id')|);
 
  60   $self->trans_id($trans_id);
 
  65 sub _before_save_set_shippingdate {
 
  66   my ($self, %params) = @_;
 
  68   return 1 if $self->shippingdate;
 
  70   $self->shippingdate(DateTime->now);
 
  75 sub _before_save_set_employee {
 
  76   my ($self, %params) = @_;
 
  78   return 1 if $self->employee_id;
 
  80   $self->employee(SL::DB::Manager::Employee->current);