Revision 2714604a
Von Moritz Bunkus vor mehr als 10 Jahren hinzugefügt
SL/DB/Invoice.pm | ||
---|---|---|
8 | 8 |
use Carp; |
9 | 9 |
use List::Util qw(first); |
10 | 10 |
|
11 |
use Rose::DB::Object::Helpers (); |
|
12 |
|
|
11 | 13 |
use SL::DB::MetaSetup::Invoice; |
12 | 14 |
use SL::DB::Manager::Invoice; |
13 | 15 |
use SL::DB::Helper::FlattenToForm; |
... | ... | |
111 | 113 |
return $self->paid >= $self->amount; |
112 | 114 |
} |
113 | 115 |
|
116 |
sub _clone_orderitem_delivery_order_item_cvar { |
|
117 |
my ($cvar) = @_; |
|
118 |
|
|
119 |
my $cloned = Rose::DB::Object::Helpers::clone_and_reset($_); |
|
120 |
$cloned->sub_module('invoice'); |
|
121 |
|
|
122 |
return $cloned; |
|
123 |
} |
|
124 |
|
|
114 | 125 |
sub new_from { |
115 | 126 |
my ($class, $source, %params) = @_; |
116 | 127 |
|
... | ... | |
152 | 163 |
my $invoice = $class->new(%args, %params); |
153 | 164 |
|
154 | 165 |
my @items = map { |
155 |
my $source_item = $_; |
|
166 |
my $source_item = $_; |
|
167 |
my @custom_variables = map { _clone_orderitem_delivery_order_item_cvar($_) } @{ $source_item->custom_variables }; |
|
168 |
|
|
156 | 169 |
SL::DB::InvoiceItem->new(map({ ( $_ => $source_item->$_ ) } |
157 | 170 |
qw(parts_id description qty sellprice discount project_id serialnumber pricegroup_id ordnumber transdate cusordnumber unit |
158 | 171 |
base_qty longdescription lastcost price_factor_id), @item_columns), |
159 |
deliverydate => $source_item->reqdate, |
|
160 |
fxsellprice => $source_item->sellprice,); |
|
172 |
deliverydate => $source_item->reqdate, |
|
173 |
fxsellprice => $source_item->sellprice, |
|
174 |
custom_variables => \@custom_variables, |
|
175 |
); |
|
176 |
|
|
161 | 177 |
} @{ $source->items_sorted }; |
162 | 178 |
|
163 | 179 |
$invoice->invoiceitems(\@items); |
Auch abrufbar als: Unified diff
SL::DB::{DeliveryOrder,Invoice}->new_from: custom_variables der Items mit clonen
Behebt #2365 auf eine etwas angenehmere Weise als
5bd7e74db1f425a8bbc43357e949efcc1d4eb135.