Revision 7ac17a23
Von Tamino Steinert vor mehr als 2 Jahren hinzugefügt
| SL/DB/DeliveryOrderItem.pm | ||
|---|---|---|
|
|
||
|
# methods
|
||
|
|
||
|
sub new_from {
|
||
|
my ($class, $source, %params) = @_;
|
||
|
|
||
|
my %allowed_sources = map { $_ => 1 } qw(
|
||
|
SL::DB::ReclamationItem
|
||
|
SL::DB::OrderItem
|
||
|
);
|
||
|
unless( $allowed_sources{ref $source} ) {
|
||
|
croak("Unsupported source object type '" . ref($source) . "'");
|
||
|
}
|
||
|
|
||
|
my @custom_variables = map { _clone_cvar_for_delivery_order_item($_) } @{ $source->custom_variables };
|
||
|
|
||
|
my %item_args;
|
||
|
if (ref($source) eq 'SL::DB::ReclamationItem') {
|
||
|
map { $item_args{$_} = $source->$_ } # {{{ for vim folds
|
||
|
qw(
|
||
|
active_discount_source
|
||
|
active_price_source
|
||
|
base_qty
|
||
|
description
|
||
|
discount
|
||
|
lastcost
|
||
|
longdescription
|
||
|
parts_id
|
||
|
position
|
||
|
price_factor
|
||
|
price_factor_id
|
||
|
pricegroup_id
|
||
|
project_id
|
||
|
qty
|
||
|
reqdate
|
||
|
sellprice
|
||
|
serialnumber
|
||
|
unit
|
||
|
);
|
||
|
$item_args{custom_variables} = \@custom_variables;
|
||
|
# }}} for vim folds
|
||
|
} elsif (ref($source) eq 'SL::DB::OrderItem') {
|
||
|
map { $item_args{$_} = $source->$_ } # {{{ for vim folds
|
||
|
qw(
|
||
|
active_discount_source
|
||
|
active_price_source
|
||
|
base_qty
|
||
|
cusordnumber
|
||
|
description
|
||
|
discount
|
||
|
lastcost
|
||
|
longdescription
|
||
|
marge_price_factor
|
||
|
parts_id
|
||
|
price_factor
|
||
|
price_factor_id
|
||
|
project_id
|
||
|
qty
|
||
|
reqdate
|
||
|
sellprice
|
||
|
serialnumber
|
||
|
transdate
|
||
|
unit
|
||
|
);
|
||
|
$item_args{custom_variables} = \@custom_variables;
|
||
|
$item_args{ordnumber} = ref($source->record) eq 'SL::DB::Order' ? $source->record->ordnumber : $source->ordnumber;
|
||
|
# }}} for vim folds
|
||
|
}
|
||
|
|
||
|
my $item = $class->new(%item_args);
|
||
|
|
||
|
my $source_table = '';
|
||
|
if( ref($source) eq 'SL::DB::OrderItem' ) {
|
||
|
$source_table = 'orderitems';
|
||
|
} elsif ( ref($source) eq 'SL::DB::ReclamationItem' ) {
|
||
|
$source_table = 'reclamation_items';
|
||
|
}
|
||
|
$item->{"converted_from_". $source_table ."_id"} = $_->{id};
|
||
|
|
||
|
return $item;
|
||
|
}
|
||
|
|
||
|
sub _clone_cvar_for_delivery_order_item {
|
||
|
my ($cvar) = @_;
|
||
|
|
||
|
my $cloned = $_->clone_and_reset;
|
||
|
$cloned->sub_module('delivery_order_items');
|
||
|
|
||
|
return $cloned;
|
||
|
}
|
||
|
|
||
|
sub record { goto &delivery_order }
|
||
|
sub record_id { goto &delivery_order_id }
|
||
|
|
||
Auch abrufbar als: Unified diff
Workflow: delivery_order ↔ reclamation