Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 69597c45

Von Jan Büren vor mehr als 1 Jahr hinzugefügt

  • ID 69597c4596bbcc3f6d0c50346ad56fcd51109924
  • Vorgänger 67e51032
  • Nachfolger fdbb484e

ShopOrder nur teilweise Positionen für den Auftrag übernehmen

Unterschiede anzeigen:

SL/Controller/ShopOrder.pm
sub action_transfer {
my ( $self ) = @_;
$::form->{customer} ||= $::form->{partial_transfer_customer_id};
my $customer = SL::DB::Manager::Customer->find_by(id => $::form->{customer});
die "Can't find customer" unless $customer;
die "Can't find customer" unless ref $customer eq 'SL::DB::Customer';
my $employee = SL::DB::Manager::Employee->current;
die "Can't find employee" unless $employee;
die "Can't load shop_order form form->import_id" unless $self->shop_order;
my $order = $self->shop_order->convert_to_sales_order(customer => $customer, employee => $employee);
my $order = $self->shop_order->convert_to_sales_order(customer => $customer, employee => $employee,
pos_ids => $::form->{pos_ids} );
if ($order->{error}){
flash_later('error',@{$order->{errors}});
......
=item C<action_transfer>
Transfers one shoporder to an order.
If the optional $::form->{pos_ids} exists, they will be added
as a param for the convert_to_sales_order method
=item C<action_apply_customer>
SL/DB/ShopOrder.pm
my $customer = delete $params{customer};
my $employee = delete $params{employee};
my $transdate = delete $params{transdate} // DateTime->today_local;
croak "param customer is missing" unless ref($customer) eq 'SL::DB::Customer';
croak "param employee is missing" unless ref($employee) eq 'SL::DB::Employee';
# check if caller wants optional partial transfer and create partial soi array
my $partial_transfer;
my %pos_ids;
if ($params{pos_ids}) {
$partial_transfer = 1;
%pos_ids = %{ delete $params{pos_ids} };
# TODO check if pos_ids is a valid hash
}
my @soi = $partial_transfer
? grep { $pos_ids{$_->id} } @{ $self->shop_order_items }
: @{ $self->shop_order_items };
require SL::DB::Order;
require SL::DB::OrderItem;
require SL::DB::Part;
......
discount => $_->discount,
);
}
}@{ $self->shop_order_items };
} @soi;
if(!scalar(@error_report)){
my $shipto_id;
locale/de/all
'Create new version' => 'Neue Version anlegen',
'Create one from the context menu by right-clicking on this text.' => 'Erstellen Sie einen aus dem Kontextmenü, indem Sie auf diesen Text rechtsklicken.',
'Create order' => 'Auftrag erstellen',
'Create partial order' => 'Teil-Auftrag erstellen',
'Create sales invoices with Factur-X/ZUGFeRD data' => 'Verkaufsrechnungen mit Factur-X-/ZUGFeRD-Daten erzeugen',
'Create sales invoices with Swiss QR-bill' => 'Verkaufsrechnungen mit Schweizer QR-Rechnung erzeugen',
'Create tables' => 'Tabellen anlegen',
templates/design40_webpages/shop_order/show.html
</div>
<div class="wrapper" id="wrapper-3">
<table class="tbl-list" style="width:100%">
<thead>
<tr>
<th>[% 'Position' | $T8 %]</th>
<th>[% 'Partnumber' | $T8 %]</th>
<th>[% 'Partdescriptipion' | $T8 %]</th>
<th>[% 'Qty' | $T8 %]</th>
<th>[% 'Price' | $T8 %]</th>
<th>[% 'Discount' | $T8 %]</th>
<th>[% 'Promotion Code' | $T8 %]</th>
<th>[% 'Extended' | $T8 %]</th>
</tr>
</thead>
<tbody>
[% FOREACH pos = IMPORT.shop_order_items %]
<tr>
<td>[% loop.count %]</td>
<td>[% HTML.escape(pos.partnumber) %]</td>
<td>[% HTML.escape(pos.description) %]</td>
<td>[% pos.quantity_as_number %]</td>
<td>[% pos.price_as_number %]</td>
<td>[% pos.discount_as_number * 100 %] %</td>
<td>[% pos.discount_code %]</td>
<td>[% LxERP.format_amount(pos.price * pos.quantity,2) %]</td>
</tr>
[% END %]
</tbody>
</table>
<form method="post" action="controller.pl" id="create_partial_order">
[% L.hidden_tag('import_id', IMPORT.id) %]
<table class="tbl-list" style="width:100%">
<thead>
<tr>
<th>[% 'Assign' | $T8 %]</th>
<th>[% 'Position' | $T8 %]</th>
<th>[% 'Partnumber' | $T8 %]</th>
<th>[% 'Partdescriptipion' | $T8 %]</th>
<th>[% 'Qty' | $T8 %]</th>
<th>[% 'Price' | $T8 %]</th>
<th>[% 'Discount' | $T8 %]</th>
<th>[% 'Promotion Code' | $T8 %]</th>
<th>[% 'Extended' | $T8 %]</th>
</tr>
</thead>
<tbody>
[% FOREACH pos = IMPORT.shop_order_items %]
<tr>
<td>[% L.checkbox_tag("pos_ids." _ pos.id _ "[]", value=1, checked=1) %]</td>
<td>[% loop.count %]</td>
<td>[% HTML.escape(pos.partnumber) %]</td>
<td>[% HTML.escape(pos.description) %]</td>
<td>[% pos.quantity_as_number %]</td>
<td>[% pos.price_as_number %]</td>
<td>[% pos.discount_as_number * 100 %] %</td>
<td>[% pos.discount_code %]</td>
<td>[% LxERP.format_amount(pos.price * pos.quantity,2) %]</td>
</tr>
[% END %]
</tbody>
</table>
<div id="partial_transfer" style="float:left; display:none;">
[% L.hidden_tag('partial_transfer_customer_id') %]
[% L.ajax_submit_tag('controller.pl?action=ShopOrder/transfer', "#create_partial_order", LxERP.t8('Create partial order')) %]
</div>
</form>
</div>
......
var cv_id = $("input[type=radio][id="+ this.id + "]").val();
$('#shop_update_customer_'+ cv_id).css("display", 'block');
$('#transfer').css("display", 'block');
$('#partial_transfer').css("display", 'block');
$('#partial_transfer_customer_id').val(cv_id);
});
</script>
templates/webpages/shop_order/show.html
</table>
<hr>
<div style="height: 250px; overflow:auto; margin:15px;">
<table width="99%">
<tr class="listheading">
<th>[% 'Position' | $T8 %]</th>
<th>[% 'Partnumber' | $T8 %]</th>
<th>[% 'Partdescriptipion' | $T8 %]</th>
<th>[% 'Qty' | $T8 %]</th>
<th>[% 'Price' | $T8 %]</th>
<th>[% 'Discount' | $T8 %]</th>
<th>[% 'Promotion Code' | $T8 %]</th>
<th>[% 'Extended' | $T8 %]</th>
</tr>
<tr class="listrow">
[% FOREACH pos = IMPORT.shop_order_items %]
<td>[% loop.count %]</td>
<td>[% HTML.escape(pos.partnumber) %]</td>
<td>[% HTML.escape(pos.description) %]</td>
<td>[% pos.quantity_as_number %]</td>
<td>[% pos.price_as_number %]</td>
<td>[% pos.discount_as_number * 100 %] %</td>
<td>[% pos.discount_code %]</td>
<td>[% LxERP.format_amount(pos.price * pos.quantity,2) %]</td>
</tr>
[% END %]
</table>
<form method="post" action="controller.pl" id="create_partial_order">
[% L.hidden_tag('import_id', IMPORT.id) %]
<table width="99%">
<tr class="listheading">
<th>[% 'Assign' | $T8 %]</th>
<th>[% 'Position' | $T8 %]</th>
<th>[% 'Partnumber' | $T8 %]</th>
<th>[% 'Partdescriptipion' | $T8 %]</th>
<th>[% 'Qty' | $T8 %]</th>
<th>[% 'Price' | $T8 %]</th>
<th>[% 'Discount' | $T8 %]</th>
<th>[% 'Promotion Code' | $T8 %]</th>
<th>[% 'Extended' | $T8 %]</th>
</tr>
<tr class="listrow">
[% FOREACH pos = IMPORT.shop_order_items %]
<td>[% L.checkbox_tag("pos_ids." _ pos.id _ "[]", value=1, checked=1) %]</td>
<td>[% loop.count %]</td>
<td>[% HTML.escape(pos.partnumber) %]</td>
<td>[% HTML.escape(pos.description) %]</td>
<td>[% pos.quantity_as_number %]</td>
<td>[% pos.price_as_number %]</td>
<td>[% pos.discount_as_number * 100 %] %</td>
<td>[% pos.discount_code %]</td>
<td>[% LxERP.format_amount(pos.price * pos.quantity,2) %]</td>
</tr>
[% END %]
</table>
<div id="partial_transfer" style="float:left; display:none;">
[% L.hidden_tag('partial_transfer_customer_id') %]
[% L.ajax_submit_tag('controller.pl?action=ShopOrder/transfer', "#create_partial_order", LxERP.t8('Create partial order')) %]
</div>
</form>
</div>
<hr>
<script type="text/javascript">
......
var cv_id = $("input[type=radio][id="+ this.id + "]").val();
$('#shop_update_customer_'+ cv_id).css("display", 'block');
$('#transfer').css("display", 'block');
$('#partial_transfer').css("display", 'block');
$('#partial_transfer_customer_id').val(cv_id);
});
</script>

Auch abrufbar als: Unified diff