Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision fc890e10

Von Jan Büren vor etwa 9 Jahren hinzugefügt

  • ID fc890e1040a469ee62b3661c5da2f3d2efb4cce9
  • Vorgänger d04a436f
  • Nachfolger 109745f3

convert_to_delivery_order um record_links auf item-Ebene erweitert

Bisher wurden nur die Belege verknüpft und nicht die einzelnen
Items. Analoge Implementierung wie bei convert_to_invoice.
Sinnvoll wäre ein Auslagern, dieser "zu ähnlichen" Verfahren in beiden
Fällen

Unterschiede anzeigen:

SL/DB/DeliveryOrder.pm
$item_parents{$source_item_id} ||= $source_item->$item_parent_column;
my $item_parent = $item_parents{$source_item_id};
SL::DB::DeliveryOrderItem->new(map({ ( $_ => $source_item->$_ ) }
my $current_do_item = SL::DB::DeliveryOrderItem->new(map({ ( $_ => $source_item->$_ ) }
qw(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 active_discount_source active_price_source
)),
custom_variables => \@custom_variables,
ordnumber => ref($item_parent) eq 'SL::DB::Order' ? $item_parent->ordnumber : $source_item->ordnumber,
);
$current_do_item->{"converted_from_orderitems_id"} = $_->{id} if ref($item_parent) eq 'SL::DB::Order';
$current_do_item;
} @{ $items };
@items = grep { $params{item_filter}->($_) } @items if $params{item_filter};
......
require SL::DB::Invoice;
$invoice = SL::DB::Invoice->new_from($self, %params)->post || die;
$self->link_to_record($invoice);
# TODO extend link_to_record for items, otherwise long-term no d.r.y.
foreach my $item (@{ $invoice->items }) {
foreach (qw(delivery_order_items)) { # expand if needed (delivery_order_items)
foreach (qw(delivery_order_items)) { # expand if needed (orderitems)
if ($item->{"converted_from_${_}_id"}) {
die unless $item->{id};
RecordLinks->create_links('mode' => 'ids',
SL/DB/Order.pm
$delivery_order->save;
$custom_shipto->save if $custom_shipto;
$self->link_to_record($delivery_order);
# TODO extend link_to_record for items, otherwise long-term no d.r.y.
foreach my $item (@{ $delivery_order->items }) {
foreach (qw(orderitems)) { # expand if needed (delivery_order_items)
if ($item->{"converted_from_${_}_id"}) {
die unless $item->{id};
RecordLinks->create_links('mode' => 'ids',
'from_table' => $_,
'from_ids' => $item->{"converted_from_${_}_id"},
'to_table' => 'delivery_order_items',
'to_id' => $item->{id},
) || die;
delete $item->{"converted_from_${_}_id"};
}
}
}
$self->update_attributes(delivered => 1);
1;
})) {

Auch abrufbar als: Unified diff