Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision c888c8a7

Von Sven Schöling vor fast 2 Jahren hinzugefügt

  • ID c888c8a7c4cf9cad2d63fc7adbc3e1f859e2efe3
  • Vorgänger a31c242b
  • Nachfolger c4fb78fe

RecordLink: converted_from_* Felder in allen convert_to und new_from korrekt setzen.

Das hier benutzt jetzt das neue Reclamation Format. Statt

converted_from_oe_id

wird jetzt

converted_from_record_id
converted_from_record_type_ref = SL::DB::Order

benutzt.

Unterschiede anzeigen:

SL/DB/DeliveryOrder.pm
my $items = delete($params{items}) || $source->items_sorted;
my @items = ( $delivery_order->is_type(SUPPLIER_DELIVERY_ORDER_TYPE) && ref($source) ne 'SL::DB::Reclamation' ) ?
()
: map { SL::DB::DeliveryOrderItem->new_from($_) } @{ $items };
: map { SL::DB::DeliveryOrderItem->new_from($_, %params) } @{ $items };
@items = grep { $params{item_filter}->($_) } @items if $params{item_filter};
@items = grep { $_->qty * 1 } @items if $params{skip_items_zero_qty};
......
$delivery_order->items(\@items);
unless ($params{no_linked_records}) {
$delivery_order->{ RECORD_ID() } = $source->id;
$delivery_order->{ RECORD_TYPE_REF() } = ref $source;
}
return $delivery_order;
}
......
if (!$self->db->with_transaction(sub {
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 (orderitems)
if ($item->{"converted_from_${_}_id"}) {
die unless $item->{id};
RecordLinks->create_links('mode' => 'ids',
'from_table' => $_,
'from_ids' => $item->{"converted_from_${_}_id"},
'to_table' => 'invoice',
'to_id' => $item->{id},
) || die;
delete $item->{"converted_from_${_}_id"};
}
}
}
$self->update_attributes(closed => 1);
1;
})) {
SL/DB/DeliveryOrderItem.pm
use SL::DB::Manager::DeliveryOrderItem;
use SL::DB::Helper::ActsAsList;
use SL::DB::Helper::LinkedRecords;
use SL::DB::Helper::RecordLink qw(RECORD_ITEM_ID RECORD_ITEM_TYPE_REF);
use SL::DB::Helper::RecordItem;
use SL::DB::Helper::CustomVariables (
sub_module => 'delivery_order_items',
......
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';
unless ($params{no_linked_records}) {
$item->{ RECORD_ITEM_ID() } = $source->id;
$item->{ RECORD_ITEM_TYPE_REF() } = ref $source;
}
$item->{"converted_from_". $source_table ."_id"} = $_->{id};
return $item;
}
SL/DB/Invoice.pm
donumber => ref($item_parent) eq 'SL::DB::DeliveryOrder' ? $item_parent->donumber : $source_item->can('donumber') ? $source_item->donumber : '',
);
$current_invoice_item->{"converted_from_orderitems_id"} = $_->{id} if ref($item_parent) eq 'SL::DB::Order';
$current_invoice_item->{"converted_from_delivery_order_items_id"} = $_->{id} if ref($item_parent) eq 'SL::DB::DeliveryOrder';
$current_invoice_item->{RECORD_ITEM_ID()} = $_->{id};
$current_invoice_item->{RECORD_ITEM_TYPE_REF()} = ref $source_item;
$current_invoice_item;
} @{ $items };
$invoice->{RECORD_ID()} = $source->id;
$invoice->{RECORD_TYPE_REF()} = ref $source;
@items = grep { $params{item_filter}->($_) } @items if $params{item_filter};
@items = grep { $_->qty * 1 } @items if $params{skip_items_zero_qty};
@items = grep { $_->qty >=0 } @items if $params{skip_items_negative_qty};
SL/DB/Order.pm
if (!$self->db->with_transaction(sub {
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(orderitems)) {
if ($item->{"converted_from_${_}_id"}) {
die unless $item->{id};
RecordLinks->create_links('mode' => 'ids',
'from_table' => $_,
'from_ids' => $item->{"converted_from_${_}_id"},
'to_table' => 'invoice',
'to_id' => $item->{id},
) || die;
delete $item->{"converted_from_${_}_id"};
}
}
}
$self->update_attributes(closed => 1);
1;
})) {
......
require SL::DB::DeliveryOrder;
$delivery_order = SL::DB::DeliveryOrder->new_from($self, @args);
$delivery_order->save;
$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('dbh' => $self->db->dbh,
'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) unless $::instance_conf->get_shipped_qty_require_stock_out;
1;
......
if ( $is_abbr_any->(qw(poso rqsq rqso)) ) {
$current_oe_item->lastcost($source_item->sellprice);
}
$current_oe_item->{"converted_from_orderitems_id"} = $_->{id} if ref($item_parent) eq 'SL::DB::Order';
$current_oe_item->{"converted_from_reclamation_item_id"} = $_->{id} if ref($item_parent) eq 'SL::DB::Reclamation';
$current_oe_item->{ RECORD_ITEM_ID() } = $_->{id};
$current_oe_item->{ RECORD_ITEM_TYPE_REF() } = ref($source_item);
$current_oe_item;
} @{ $items };
......
$order->items(\@items);
$order->{ RECORD_ID() } = $source->{id};
$order->{ RECORD_TYPE_REF() } = ref($source);
return $order;
}
SL/DB/Reclamation.pm
require SL::DB::Order;
$order = SL::DB::Order->new_from($self, %params);
$order->save;
$self->link_to_record($order);
foreach my $item (@{ $order->items }) {
foreach (qw(reclamation_item)) {
if ($item->{"converted_from_${_}_id"}) {
die unless $item->{id};
RecordLinks->create_links('dbh' => $self->db->dbh,
'mode' => 'ids',
'from_table' => 'reclamation_items',
'from_ids' => $item->{"converted_from_${_}_id"},
'to_table' => 'orderitems',
'to_id' => $item->{id},
) || die;
delete $item->{"converted_from_${_}_id"};
}
}
}
1;
})) {
......
require SL::DB::DeliveryOrder;
$delivery_order = SL::DB::DeliveryOrder->new_from($self, %params);
$delivery_order->save;
$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(reclamation_items)) {
if ($item->{"converted_from_${_}_id"}) {
die unless $item->{id};
RecordLinks->create_links('dbh' => $self->db->dbh,
'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) unless $::instance_conf->get_shipped_qty_require_stock_out;
1;

Auch abrufbar als: Unified diff