Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 60a2e713

Von Tamino Steinert vor mehr als 1 Jahr hinzugefügt

  • ID 60a2e7139fcbe30fc268f2cfaa813a56b48ed4fa
  • Vorgänger c368c2c7
  • Nachfolger 781e38df

Order: Nutze Type und ID zum Erstellen von verknüpften Belegen

Unterschiede anzeigen:

SL/Controller/Order.pm
use SL::DB::Shipto;
use SL::DB::Translation;
use SL::DB::ValidityToken;
use SL::DB::Helper::RecordLink qw(set_record_link_conversions RECORD_ID RECORD_ITEM_ID);
use SL::DB::Helper::RecordLink qw(set_record_link_conversions RECORD_ID RECORD_TYPE_REF RECORD_ITEM_ID RECORD_ITEM_TYPE_REF);
use SL::DB::Helper::TypeDataProxy;
use SL::DB::Helper::Record qw(get_object_name_from_type get_class_from_type);
use SL::Model::Record;
......
my $order = SL::Model::Record->new_from_workflow($record, $self->type, %flags);
$self->order($order);
if (ref($record) eq 'SL::DB::Reclamation') {
$self->{converted_from_reclamation_id} = $order->{ RECORD_ID() };
$_ ->{converted_from_reclamation_items_id} = $_ ->{ RECORD_ITEM_ID() } for @{ $order->items_sorted };
}
if (ref($record) eq 'SL::DB::Order') {
$self->{converted_from_oe_id} = $order->{ RECORD_ID() };
$_ ->{converted_from_oe_items_id} = $_ ->{ RECORD_ITEM_ID() } for @{ $order->items_sorted };
}
$self->recalc();
$self->pre_render();
......
# make new order from given orders
my @multi_orders = map { SL::DB::Order->new(id => $_)->load } @multi_ids;
$self->{converted_from_oe_id} = join ' ', map { $_->id } @multi_orders;
my $target_type = "sales_order";
my $target_type = SALES_ORDER_TYPE();
my $order = SL::Model::Record->new_from_workflow_multi(\@multi_orders, $target_type, sort_sources_by => 'transdate');
$self->order($order);
......
$self->js
->val('#id', $self->order->id)
->val('#converted_from_oe_id', '')
->val('#converted_from_reclamation_id', '')
->val('#converted_from_record_type_ref', '')
->val('#converted_from_record_id', '')
->val('#order_' . $self->nr_key(), $self->order->number);
my $idx = 0;
......
} continue {
$idx++;
}
$self->js->val('[name="converted_from_orderitems_ids[+]"]', '');
$self->js->val('[name="converted_from_reclamation_items_ids[+]"]', '');
$self->js->val('[name="converted_from_record_item_type_refs[+]"]', '');
$self->js->val('[name="converted_from_record_item_ids[+]"]', '');
$self->js->val('[name="basket_item_ids[+]"]', '');
}
......
sub save {
my ($self) = @_;
my $is_new = !$self->order->id;
$self->parse_phone_note if $::form->{phone_note}->{subject} || $::form->{phone_note}->{body};
# create first version if none exists
$self->order->add_order_version(SL::DB::OrderVersion->new(version => 1)) if !$self->order->order_version;
set_record_link_conversions($self->order,
delete $::form->{RECORD_TYPE_REF()}
=> delete $::form->{RECORD_ID()},
delete $::form->{RECORD_ITEM_TYPE_REF()}
=> delete $::form->{RECORD_ITEM_ID()},
);
my @converted_from_oe_ids;
if ($::form->{converted_from_oe_id}) {
@converted_from_oe_ids = split ' ', $::form->{converted_from_oe_id};
set_record_link_conversions(
$self->order,
'SL::DB::Order' => \@converted_from_oe_ids,
'SL::DB::OrderItem' => $::form->{converted_from_orderitems_ids},
);
}
if ($::form->{converted_from_reclamation_id}) {
my @converted_from_reclamation_ids = split ' ', $::form->{converted_from_reclamation_id};
set_record_link_conversions(
$self->order,
'SL::DB::Reclamation' => \@converted_from_reclamation_ids,
'SL::DB::ReclamationItem' => $::form->{converted_from_reclamation_items_ids},
);
if ($self->order->{RECORD_TYPE_REF()} eq 'SL::DB::Order'
&& $self->order->{RECORD_ID()}) {
@converted_from_oe_ids = split ' ', $self->order->{RECORD_ID()};
}
# check for purchase basket items
......
}
}
my $is_new = !$self->order->id;
my $objects_to_close = scalar @converted_from_oe_ids
? SL::DB::Manager::Order->get_all(where => [
id => \@converted_from_oe_ids,
SL/DB/Helper/RecordLink.pm
my $idx = 0;
my $items = $record->items_sorted;
$item_ids ||= [];
croak "more item ids than items in record" if @$item_ids > @$items;
for my $idx (0..$#$item_ids) {
SL/DB/Order.pm
any { $from_to->{abbr} eq $_ } @_;
};
my ($item_parent_id_column, $item_parent_column);
if (ref($source) eq 'SL::DB::Order') {
$item_parent_id_column = 'trans_id';
$item_parent_column = 'order';
} elsif ( ref($source) eq 'SL::DB::Reclamation') {
$item_parent_id_column = 'reclamation_id';
$item_parent_column = 'reclamation';
}
my %args;
if (ref($source) eq 'SL::DB::Order') {
%args = ( map({ ( $_ => $source->$_ ) } qw(amount cp_id currency_id cusordnumber customer_id delivery_customer_id delivery_term_id delivery_vendor_id
......
$order->assign_attributes(%{ $params{attributes} }) if $params{attributes};
my $items = delete($params{items}) || $source->items_sorted;
my %item_parents;
my @items = map {
my $source_item = $_;
my $source_item_id = $_->$item_parent_id_column;
my @custom_variables = map { _clone_orderitem_cvar($_) } @{ $source_item->custom_variables };
$item_parents{$source_item_id} ||= $source_item->$item_parent_column;
my $item_parent = $item_parents{$source_item_id};
my $current_oe_item;
if (ref($source) eq 'SL::DB::Order') {
$current_oe_item = SL::DB::OrderItem->new(map({ ( $_ => $source_item->$_ ) }
......
$current_oe_item->lastcost($source_item->sellprice);
}
unless ($params{no_linked_records}) {
$current_oe_item->{ RECORD_ITEM_ID() } = $_->{id};
$current_oe_item->{ RECORD_ITEM_ID() } = $source_item->{id};
$current_oe_item->{ RECORD_ITEM_TYPE_REF() } = ref($source_item);
}
$current_oe_item;
......
attributes => \%attributes,
items => \@items,
%params);
$order->{RECORD_ID()} = join ' ', map { $_->id } @$sources; # link all sources
return $order;
}
templates/design40_webpages/order/form.html
[% L.hidden_tag('callback', FORM.callback) %]
[% L.hidden_tag('type', FORM.type) %]
[% L.hidden_tag('id', SELF.order.id) %]
[% L.hidden_tag('converted_from_oe_id', SELF.converted_from_oe_id) %]
[% L.hidden_tag('converted_from_reclamation_id', SELF.converted_from_reclamation_id) %]
[% L.hidden_tag('converted_from_record_type_ref', SELF.order.converted_from_record_type_ref) %]
[% L.hidden_tag('converted_from_record_id', SELF.order.converted_from_record_id) %]
[% IF !SELF.order.id %]
[% L.hidden_tag('form_validity_token', FORM.form_validity_token) %]
templates/design40_webpages/order/tabs/_row.html
alt=LxERP.t8('Show details'), title=LxERP.t8('Show details'), class="expand") %]
[% END %]
[% L.hidden_tag("orderitem_ids[+]", ID) %]
[% L.hidden_tag("converted_from_orderitems_ids[+]", ITEM.converted_from_orderitems_id) %]
[% L.hidden_tag("converted_from_reclamation_items_ids[+]", ITEM.converted_from_reclamation_items_id) %]
[% L.hidden_tag("converted_from_record_item_type_ref[+]", ITEM.converted_from_record_item_type_ref) %]
[% L.hidden_tag("converted_from_record_item_id[+]", ITEM.converted_from_record_item_id) %]
[% L.hidden_tag("order.orderitems[+].id", ITEM.id, id='item_' _ ID) %]
[% L.hidden_tag("order.orderitems[].parts_id", ITEM.parts_id) %]
[% L.hidden_tag("basket_item_ids[+]", ITEM.basket_item_id) %]
templates/webpages/order/form.html
[% L.hidden_tag('callback', FORM.callback) %]
[% L.hidden_tag('type', FORM.type) %]
[% L.hidden_tag('id', SELF.order.id) %]
[% L.hidden_tag('converted_from_oe_id', SELF.converted_from_oe_id) %]
[% L.hidden_tag('converted_from_reclamation_id', SELF.converted_from_reclamation_id) %]
[% L.hidden_tag('converted_from_record_type_ref', SELF.order.converted_from_record_type_ref) %]
[% L.hidden_tag('converted_from_record_id', SELF.order.converted_from_record_id) %]
[% IF !SELF.order.id %]
[% L.hidden_tag('form_validity_token', FORM.form_validity_token) %]
templates/webpages/order/tabs/_row.html
alt=LxERP.t8('Show details'), title=LxERP.t8('Show details'), class="expand") %]
[%- END %]
[% L.hidden_tag("orderitem_ids[+]", ID) %]
[% L.hidden_tag("converted_from_orderitems_ids[+]", ITEM.converted_from_orderitems_id) %]
[% L.hidden_tag("converted_from_reclamation_items_ids[+]", ITEM.converted_from_reclamation_items_id) %]
[% L.hidden_tag("converted_from_record_item_type_ref[+]", ITEM.converted_from_record_item_type_ref) %]
[% L.hidden_tag("converted_from_record_item_id[+]", ITEM.converted_from_record_item_id) %]
[% L.hidden_tag("order.orderitems[+].id", ITEM.id, id='item_' _ ID) %]
[% L.hidden_tag("order.orderitems[].parts_id", ITEM.parts_id) %]
[% L.hidden_tag("purchase_basket_item_ids[+]", ITEM.purchase_basket_item_ids) %]

Auch abrufbar als: Unified diff