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 {
38 my $project = $stock->delivery_order_item->effective_project;
40 return __PACKAGE__->new(
41 delivery_order_items_stock_id => $stock->id,
42 parts_id => $stock->delivery_order_item->parts_id,
43 qty => $stock->unit->convert_to($stock->qty => $stock->delivery_order_item->part->unit_obj),
44 unit => $stock->delivery_order_item->part->unit_obj,
45 warehouse_id => $stock->warehouse_id,
46 bin_id => $stock->bin_id,
47 chargenumber => $stock->chargenumber,
48 bestbefore => $stock->bestbefore,
49 project_id => $project ? $project->id : undef,
50 # trans_type - not set here, set in controller
54 sub _before_save_create_trans_id {
55 my ($self, %params) = @_;
57 return 1 if $self->trans_id;
59 my ($trans_id) = selectrow_query($::form, SL::DB->client->dbh, qq|SELECT nextval('id')|);
61 $self->trans_id($trans_id);
66 sub _before_save_set_shippingdate {
67 my ($self, %params) = @_;
69 return 1 if $self->shippingdate;
71 $self->shippingdate(DateTime->now);
76 sub _before_save_set_employee {
77 my ($self, %params) = @_;
79 return 1 if $self->employee_id;
81 $self->employee(SL::DB::Manager::Employee->current);