kivitendo/SL/DB/Inventory.pm @ 7b1da9c3
4fd22b56 | Sven Schöling | # This file has been auto-generated only because it didn't exist.
|
||
# Feel free to modify it at will; it will not be overwritten automatically.
|
||||
f97b0778 | Sven Schöling | package SL::DB::Inventory;
|
||
4fd22b56 | Sven Schöling | |||
use strict;
|
||||
b24583b6 | Sven Schöling | use Carp;
|
||
use DateTime;
|
||||
4fd22b56 | Sven Schöling | |||
b24583b6 | Sven Schöling | use SL::DBUtils qw(selectrow_query);
|
||
f97b0778 | Sven Schöling | use SL::DB::MetaSetup::Inventory;
|
||
6c59b08a | Bernd Bleßmann | use SL::DB::Manager::Inventory;
|
||
4fd22b56 | Sven Schöling | |||
2d7e4203 | Sven Schöling | __PACKAGE__->meta->initialize;
|
||
14672a1d | Sven Schöling | __PACKAGE__->before_save(\&_before_save_create_trans_id);
|
||
__PACKAGE__->before_save(\&_before_save_set_shippingdate);
|
||||
__PACKAGE__->before_save(\&_before_save_set_employee);
|
||||
719696e4 | Sven Schöling | # part accessor is badly named
|
||
sub part {
|
||||
goto &parts;
|
||||
}
|
||||
b24583b6 | Sven Schöling | 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 {
|
||||
e73048f9 | Sven Schöling | my ($class, $stock) = @_;
|
||
b24583b6 | Sven Schöling | |||
my $project = $stock->delivery_order_item->effective_project;
|
||||
e73048f9 | Sven Schöling | return $class->new(
|
||
b24583b6 | Sven Schöling | delivery_order_items_stock_id => $stock->id,
|
||
parts_id => $stock->delivery_order_item->parts_id,
|
||||
e73048f9 | Sven Schöling | qty => $stock->unit_obj->convert_to($stock->qty => $stock->delivery_order_item->part->unit_obj),
|
||
b24583b6 | Sven Schöling | 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
|
||||
);
|
||||
}
|
||||
14672a1d | Sven Schöling | sub _before_save_create_trans_id {
|
||
my ($self, %params) = @_;
|
||||
return 1 if $self->trans_id;
|
||||
my ($trans_id) = selectrow_query($::form, SL::DB->client->dbh, qq|SELECT nextval('id')|);
|
||||
$self->trans_id($trans_id);
|
||||
return 1;
|
||||
}
|
||||
sub _before_save_set_shippingdate {
|
||||
my ($self, %params) = @_;
|
||||
return 1 if $self->shippingdate;
|
||||
$self->shippingdate(DateTime->now);
|
||||
return 1;
|
||||
}
|
||||
sub _before_save_set_employee {
|
||||
my ($self, %params) = @_;
|
||||
eccf9705 | Sven Schöling | return 1 if $self->employee_id;
|
||
14672a1d | Sven Schöling | |||
$self->employee(SL::DB::Manager::Employee->current);
|
||||
return 1;
|
||||
}
|
||||
4fd22b56 | Sven Schöling | 1;
|