Revision 295c1205
Von Tamino Steinert vor etwa 2 Jahren hinzugefügt
SL/Controller/DeliveryOrder.pm | ||
---|---|---|
|
||
$self->merge_stock_data($stock_info, \@contents, $part, $unit);
|
||
|
||
my @collection = (
|
||
{ 'description' => 'foo_1', 'id' => '1',
|
||
'key_1' => [
|
||
{ 'id' => 3, 'description' => "bar_1",
|
||
'key_2' => [
|
||
{ 'id' => 1, 'value' => "foobar_1", },
|
||
{ 'id' => 2, 'value' => "foobar_2", },
|
||
],
|
||
},
|
||
{ 'id' => 4, 'description' => "bar_2",
|
||
'key_2' => [],
|
||
},
|
||
],
|
||
},
|
||
{ 'description' => 'foo_2', 'id' => '2',
|
||
'key_1' => [
|
||
{ 'id' => 1, 'description' => "bar_1",
|
||
'key_2' => [
|
||
{ 'id' => 3, 'value' => "foobar_3", },
|
||
{ 'id' => 4, 'value' => "foobar_4", },
|
||
],
|
||
},
|
||
{ 'id' => 2, 'description' => "bar_2",
|
||
'stock' => [
|
||
{ 'id' => 5, 'value' => "test_5", },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
);
|
||
|
||
$self->render("delivery_order/stock_dialog", { layout => 0 },
|
||
WHCONTENTS => $self->order->delivered ? $stock_info : \@contents,
|
||
WHCONTENTS => \@contents,
|
||
STOCK_INFO => $stock_info,
|
||
WAREHOUSES => SL::DB::Manager::Warehouse->get_all(with_objects=> ["bins",]),
|
||
COLLECTION => \@collection,
|
||
part => $part,
|
||
do_qty => $qty,
|
||
do_unit => $unit->unit,
|
||
... | ... | |
);
|
||
}
|
||
|
||
sub action_add_stock_in_line_to_dialog {
|
||
my ($self) = @_;
|
||
|
||
my $do_qty = _parse_number($::form->{do_qty});
|
||
my $qty_sum = $::form->{qty_sum};
|
||
my $row_count = $::form->{row_count};
|
||
my $part = SL::DB::Part->load_cached($::form->{parts_id}) or die "need parts_id";
|
||
|
||
my $row_as_html = $self->p->render('delivery_order/stock_dialog/_stock_in_new_row',
|
||
WAREHOUSES => SL::DB::Manager::Warehouse->get_all(with_objects=> ["bins",]),
|
||
PART => $part,
|
||
pos => $row_count + 1,
|
||
remaining_qty => $do_qty - $qty_sum,
|
||
);
|
||
|
||
$self->js->append('#stock-in-out-table', $row_as_html)->render();
|
||
}
|
||
|
||
sub action_update_stock_information {
|
||
my ($self) = @_;
|
||
|
js/kivi.DeliveryOrder.js | ||
---|---|---|
});
|
||
};
|
||
|
||
ns.add_stock_in_line_to_dialog = function() {
|
||
console.log("clicked");
|
||
console.log($("#parts_id"));
|
||
console.log($("#parts_id").val());
|
||
console.log($("#do_qty"));
|
||
console.log($("#do_qty").val());
|
||
|
||
let qty_sum = 0;
|
||
let row_count = 0;
|
||
$("#stock-in-out-table tr.listrow").each((i,row) => {
|
||
let qty = kivi.parse_amount($(row).find(".data-qty").val());
|
||
|
||
row_count = row_count + 1;
|
||
if (qty === 0) return;
|
||
if (qty === null) return;
|
||
qty_sum = qty_sum + qty;
|
||
});
|
||
|
||
let data = [];
|
||
data.push(
|
||
{ name: 'action', value: 'DeliveryOrder/add_stock_in_line_to_dialog' },
|
||
{ name: 'type', value: $("#type").val()},
|
||
{ name: 'qty_sum', value: qty_sum },
|
||
{ name: 'row_count', value: row_count},
|
||
{ name: 'parts_id', value: $("#parts_id").val()},
|
||
{ name: 'do_qty', value: $("#do_qty").val()},
|
||
);
|
||
|
||
$.post("controller.pl", data, kivi.eval_json_result);
|
||
};
|
||
|
||
ns.save_updated_stock = function() {
|
||
// stock information is saved in DOM as a yaml dump.
|
||
// we don't want to do this in javascript so we do a tiny roundtrip to the backend
|
||
... | ... | |
let qty = kivi.parse_amount($(row).find(".data-qty").val());
|
||
|
||
if (qty === 0) return;
|
||
if (qty === null) return;
|
||
|
||
data.push({
|
||
qty: qty,
|
templates/webpages/delivery_order/stock_dialog.html | ||
---|---|---|
[%- USE L %]
|
||
|
||
<form>
|
||
[%- IF delivered %]
|
||
[% PROCESS "delivery_order/stock_dialog/_stock_delivered_dialog.html" %]
|
||
[%- ELSE %]
|
||
|
||
<table>
|
||
<tr>
|
||
<td>[% 'Part Number' | $T8 %]</td>
|
||
... | ... | |
</tr>
|
||
</table>
|
||
|
||
[% L.hidden_tag("in_out", in_out) %]
|
||
[% L.hidden_tag("parts_id", parts_id) %]
|
||
[% L.hidden_tag("do_qty", do_qty) %]
|
||
[% L.hidden_tag("do_unit", do_unit) %]
|
||
[% L.hidden_tag("row", row, class="data-row") %]
|
||
[% L.hidden_tag("item_id", item_id) %]
|
||
[% L.hidden_tag("in_out", in_out) %]
|
||
[% L.hidden_tag("parts_id", part.id) %]
|
||
[% L.hidden_tag("do_qty", do_qty) %]
|
||
[% L.hidden_tag("do_unit", do_unit) %]
|
||
[% L.hidden_tag("row", row, class="data-row") %]
|
||
[% L.hidden_tag("item_id", item_id) %]
|
||
|
||
[%- IF delivered %]
|
||
[% PROCESS "delivery_order/stock_dialog/_stock_delivered_dialog.html" %]
|
||
[%- ELSE %]
|
||
|
||
[%- IF in_out == "in" %]
|
||
<p>
|
||
... | ... | |
</table>
|
||
</p>
|
||
|
||
[%- IF in_out == "in" %]
|
||
[% L.button_tag('kivi.DeliveryOrder.add_stock_in_line_to_dialog()', LxERP.t8('+')) %]
|
||
[%- END %]
|
||
|
||
<hr size="3" noshade>
|
||
|
||
<p>[% L.button_tag('kivi.DeliveryOrder.save_updated_stock()', LxERP.t8('Save')) %]</p>
|
templates/webpages/delivery_order/stock_dialog/_stock_delivered_dialog.html | ||
---|---|---|
[%- USE HTML %]
|
||
[%- USE LxERP %]
|
||
[%- USE L %]
|
||
[%- IF delivered %]
|
||
[%- SET RO = ' readonly' %]
|
||
[%- END %]
|
||
|
||
<table>
|
||
<tr>
|
||
<td>[% 'Part Number' | $T8 %]</td>
|
||
<td>[% part.partnumber | html %]</td>
|
||
[%- UNLESS STOCK_INFO.size %]
|
||
<p>[% 'There are no items in stock.' | $T8 %]</p>
|
||
[%- ELSE %]
|
||
|
||
<p>
|
||
<table id="stock-in-out-table">
|
||
<tr class="listheading">
|
||
<th> </th>
|
||
<th>[% 'Warehouse' | $T8 %]</th>
|
||
<th>[% 'Bin' | $T8 %]</th>
|
||
<th>[% 'Charge Number' | $T8 %]</th>
|
||
[% IF INSTANCE_CONF.get_show_bestbefore %]
|
||
<th>[% 'Best Before' | $T8 %]</th>
|
||
[% END %]
|
||
<th align="right">[% 'Qty' | $T8 %]</th>
|
||
<th align="right">[% 'Unit' | $T8 %]</th>
|
||
</tr>
|
||
<tr>
|
||
<td>[% 'Description' | $T8 %]</td>
|
||
<td>[% part.description | html %]</td>
|
||
</tr>
|
||
<tr>
|
||
<td>[% 'Qty according to delivery order' | $T8 %]</td>
|
||
<td>[% LxERP.format_amount(do_qty) %] [% do_unit | html %]</td>
|
||
</tr>
|
||
</table>
|
||
|
||
[%- UNLESS WHCONTENTS.size %]
|
||
<p>[% 'There are no items in stock.' | $T8 %]</p>
|
||
[%- ELSE %]
|
||
|
||
[% L.hidden_tag("in_out", in_out) %]
|
||
[% L.hidden_tag("parts_id", parts_id) %]
|
||
[% L.hidden_tag("do_qty", do_qty) %]
|
||
[% L.hidden_tag("do_unit", do_unit) %]
|
||
[% L.hidden_tag("row", row, class="data-row") %]
|
||
[% L.hidden_tag("item_id", item_id) %]
|
||
|
||
<p>
|
||
<table id="stock-in-out-table">
|
||
<tr class="listheading">
|
||
<th> </th>
|
||
<th>[% 'Warehouse' | $T8 %]</th>
|
||
<th>[% 'Bin' | $T8 %]</th>
|
||
<th>[% 'Charge Number' | $T8 %]</th>
|
||
[% IF INSTANCE_CONF.get_show_bestbefore %]
|
||
<th>[% 'Best Before' | $T8 %]</th>
|
||
[% END %]
|
||
[%- UNLESS delivered %]
|
||
<th align="right">[% 'Available qty' | $T8 %]</th>
|
||
[%- END %]
|
||
<th align="right">[% 'Qty' | $T8 %]</th>
|
||
<th align="right">[% 'Unit' | $T8 %]</th>
|
||
</tr>
|
||
|
||
[%- FOREACH row = WHCONTENTS %]
|
||
<tr [% IF row.stock_error %] class="error"[% ELSE %]class="listrow"[% END %]>
|
||
<td>[% loop.count %]</td>
|
||
<td>[% row.warehousedescription | html %]</td>
|
||
<td>[% row.bindescription | html %]</td>
|
||
<td>[% row.chargenumber | html %]</td>
|
||
[% IF INSTANCE_CONF.get_show_bestbefore %]
|
||
<td>[% row.bestbefore | html %]</td>
|
||
[% END %]
|
||
|
||
[%- IF delivered %]
|
||
|
||
<td>[% LxERP.format_amount(row.stock_qty) | html %]</td>
|
||
<td>
|
||
[% row.stock_unit | html %]
|
||
[% L.hidden_tag("unit", row.stock_unit, class="data-unit") %]
|
||
</td>
|
||
|
||
[%- ELSE %]
|
||
|
||
<td>[% row.available_qty | html %]</td>
|
||
<td>
|
||
[% L.input_tag("qty", row.stock_qty ? LxERP.format_amount(row.stock_qty)
|
||
: (WHCONTENTS.size == 1) && (!row.stock_qty) ? LxERP.format_amount(do_qty)
|
||
: "", class="numeric data-qty", size="12") %]</td>
|
||
<td>[% L.select_tag("unit_" _ loop.count, part.unit_obj.convertible_units, value_key="name", default=row.stock_unit, class="data-unit") %]</td>
|
||
|
||
[%- END %]
|
||
<td style="display:none">
|
||
[% L.hidden_tag("warehouse_id", row.warehouse_id, class="data-warehouse-id") %]
|
||
[% L.hidden_tag("bin_id", row.bin_id, class="data-bin-id") %]
|
||
[% L.hidden_tag("chargenumber", row.chargenumber, class="data-chargenumber") %]
|
||
[% L.hidden_tag("delivery_order_items_stock_id", row.delivery_order_items_stock_id, class="data-stock-id") %]
|
||
[% L.hidden_tag("bestbefore", row.bestbefore, class="data-bestbefore") IF INSTANCE_CONF.get_show_bestbefore %]
|
||
</td>
|
||
</tr>
|
||
|
||
[%- END %]
|
||
</table>
|
||
</p>
|
||
|
||
<hr size="3" noshade>
|
||
|
||
<p>[% L.button_tag('kivi.DeliveryOrder.save_updated_stock()', LxERP.t8('Save')) IF !delivered %]</p>
|
||
|
||
[%- FOREACH row = STOCK_INFO %]
|
||
<tr [% IF row.stock_error %] class="error"[% ELSE %]class="listrow"[% END %]>
|
||
<td>[% loop.count %]</td>
|
||
<td>[% row.warehousedescription | html %]</td>
|
||
<td>[% row.bindescription | html %]</td>
|
||
<td>[% row.chargenumber | html %]</td>
|
||
[% IF INSTANCE_CONF.get_show_bestbefore %]
|
||
<td>[% row.bestbefore | html %]</td>
|
||
[% END %]
|
||
|
||
<td>[% LxERP.format_amount(row.stock_qty) | html %]</td>
|
||
<td>
|
||
[% row.stock_unit | html %]
|
||
[% L.hidden_tag("unit", row.stock_unit, class="data-unit") %]
|
||
</td>
|
||
|
||
<td style="display:none">
|
||
[% L.hidden_tag("warehouse_id", row.warehouse_id, class="data-warehouse-id") %]
|
||
[% L.hidden_tag("bin_id", row.bin_id, class="data-bin-id") %]
|
||
[% L.hidden_tag("chargenumber", row.chargenumber, class="data-chargenumber") %]
|
||
[% L.hidden_tag("delivery_order_items_stock_id", row.delivery_order_items_stock_id, class="data-stock-id") %]
|
||
[% L.hidden_tag("bestbefore", row.bestbefore, class="data-bestbefore") IF INSTANCE_CONF.get_show_bestbefore %]
|
||
</td>
|
||
</tr>
|
||
[%- END %]
|
||
</form>
|
||
|
||
|
||
</table>
|
||
</p>
|
||
<hr size="3" noshade>
|
||
[%- END %]
|
templates/webpages/delivery_order/stock_dialog/_stock_in_new_row.html | ||
---|---|---|
[%- USE L %]
|
||
[%- USE LxERP %]
|
||
[% # L.dump( PART ) %] [% # L.dump( pos ) %] [% # L.dump( remaining_qty ) %]
|
||
<tr class="listrow" >
|
||
[% L.multi_level_select_tag(
|
||
"new_wh_bin_" _ pos, WAREHOUSES, 2, surround_tag="td",
|
||
level_1={
|
||
name="warehouse_id",
|
||
value_key="id",
|
||
title_key="description",
|
||
default=PART.warehouse_id,
|
||
class="data-warehouse-id",
|
||
},
|
||
level_2={
|
||
object_key="bins",
|
||
name="bin_id",
|
||
value_key="id",
|
||
title_key="description",
|
||
default=PART.bin_id,
|
||
class="data-bin-id",
|
||
},
|
||
) %]
|
||
|
||
<td>[% L.input_tag("chargenumber", "", class="numeric data-chargenumber", size="12") %]</td>
|
||
[%- IF INSTANCE_CONF.get_show_bestbefore %]
|
||
<td>[% L.date_tag('bestbefore', "", class="data-bestbefore") %]</td>
|
||
[%- END %]
|
||
<td>[% L.input_tag("qty", LxERP.format_amount(remaining_qty) , class="numeric data-qty", size="12") %]</td>
|
||
<td>[% L.select_tag("unit", PART.unit_obj.convertible_units, value_key="name", default=PART.unit, class="data-unit") %]</td>
|
||
<td style="display:none">
|
||
[% L.hidden_tag("delivery_order_items_stock_id", '', class="data-stock-id") %]
|
||
</td>
|
||
</tr>
|
templates/webpages/delivery_order/stock_dialog/_stock_in_row.html | ||
---|---|---|
[%- USE L %]
|
||
[%- USE LxERP %]
|
||
[% # L.dump( PART ) %] [% # L.dump( pos ) %] [% # L.dump( ROW ) %]
|
||
<tr class="listrow" >
|
||
[% L.multi_level_select_tag(
|
||
# name has to be unique
|
||
"wh_bin_" _ pos, WAREHOUSES, 2, surround_tag="td",
|
||
level_1={
|
||
name="warehouse_id",
|
||
value_key="id",
|
||
title_key="description",
|
||
default=ROW.warehouse_id,
|
||
class="data-warehouse-id",
|
||
},
|
||
level_2={
|
||
object_key="bins",
|
||
name="bin_id",
|
||
value_key="id",
|
||
title_key="description",
|
||
default=ROW.bin_id,
|
||
class="data-bin-id",
|
||
},
|
||
) %]
|
||
|
||
<td>[% L.input_tag("chargenumber", ROW.chargenumber, class="numeric data-chargenumber", size="12") %]</td>
|
||
[%- IF INSTANCE_CONF.get_show_bestbefore %]
|
||
<td>[% L.date_tag("bestbefore", ROW.bestbefore, class="data-bestbefore") %]</td>
|
||
[%- END %]
|
||
<td>[% L.input_tag("qty", LxERP.format_amount(ROW.qty), class="numeric data-qty", size="12") %]</td>
|
||
<td>[% L.select_tag("unit", PART.unit_obj.convertible_units, value_key="name", default=ROW.stock_unit, class="data-unit") %]</td>
|
||
<td style="display:none">
|
||
[% L.hidden_tag("delivery_order_items_stock_id", ROW.delivery_order_items_stock_id, class="data-stock-id") %]
|
||
</td>
|
||
</tr>
|
templates/webpages/delivery_order/stock_dialog/_stock_in_table.html | ||
---|---|---|
<tr class="listheading">
|
||
<th>[% 'Warehouse' | $T8 %]</th>
|
||
<th>[% 'Bin' | $T8 %]</th>
|
||
<th>[% 'Charge Number' | $T8 %]</th>
|
||
[% IF INSTANCE_CONF.get_show_bestbefore %]
|
||
<th>[% 'Best Before' | $T8 %]</th>
|
||
[% END %]
|
||
<th align="right">[% 'Qty' | $T8 %]</th>
|
||
<th align="right">[% 'Unit' | $T8 %]</th>
|
||
</tr>
|
||
|
||
<tr>
|
||
[% L.multi_level_select_tag(
|
||
"test_tag", WAREHOUSES, 2, surround_tag="td",
|
||
level_1={
|
||
name="warehouse.id",
|
||
value_key="id",
|
||
title_key="description",
|
||
},
|
||
level_2={
|
||
object_key="bins",
|
||
name="bin.id",
|
||
value_key="id",
|
||
title_key="description",
|
||
},
|
||
) %]
|
||
[%- FOREACH row = STOCK_INFO %]
|
||
[%- PROCESS delivery_order/stock_dialog/_stock_in_row.html PART=part ROW=row pos=loop.count %]
|
||
[%- END %]
|
||
|
||
<td>
|
||
[% L.input_tag("qty", LxERP.format_amount(do_qty), class="numeric data-qty", size="12") %]</td>
|
||
<td>[% L.select_tag("unit_" _ loop.count, part.unit_obj.convertible_units, value_key="name", default=row.stock_unit, class="data-unit") %]</td>
|
||
|
||
<td style="display:none">
|
||
[% L.hidden_tag("warehouse_id", row.warehouse_id, class="data-warehouse-id") %]
|
||
[% L.hidden_tag("bin_id", row.bin_id, class="data-bin-id") %]
|
||
[% L.hidden_tag("chargenumber", row.chargenumber, class="data-chargenumber") %]
|
||
[% L.hidden_tag("delivery_order_items_stock_id", row.delivery_order_items_stock_id, class="data-stock-id") %]
|
||
[% L.hidden_tag("bestbefore", row.bestbefore, class="data-bestbefore") IF INSTANCE_CONF.get_show_bestbefore %]
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
[% L.multi_level_select_tag("multi_select_foo_bar_foobar", COLLECTION, 3,
|
||
surround_tag="td",
|
||
level_1={
|
||
name="foo.id",
|
||
value_key="id",
|
||
title_key="description",
|
||
default="2",
|
||
},
|
||
level_2={
|
||
object_key="key_1",
|
||
name="bar.id",
|
||
value_key="id",
|
||
title_key="description",
|
||
default="1",
|
||
},
|
||
level_3={
|
||
object_key="key_2",
|
||
name="foobar.id",
|
||
value_key="id",
|
||
title_key="value",
|
||
default="4",
|
||
},
|
||
) %]
|
||
</tr>
|
||
[%- UNLESS STOCK_INFO.size %]
|
||
[%- PROCESS delivery_order/stock_dialog/_stock_in_new_row.html PART=part remaining_qty=do_qty pos=0 %]
|
||
[% END %]
|
templates/webpages/delivery_order/stock_dialog/_stock_info_table.html | ||
---|---|---|
</tr>
|
||
|
||
[%- FOREACH row = WHCONTENTS %]
|
||
<tr [% IF row.stock_error %] class="error"[% ELSE %]class="listrow"[% END %]>
|
||
<tr [% IF row.stock_error %] class="error" [% END %]>
|
||
<td>[% loop.count %]</td>
|
||
<td>[% row.warehousedescription | html %]</td>
|
||
<td>[% row.bindescription | html %]</td>
|
templates/webpages/delivery_order/stock_dialog/_stock_out_table.html | ||
---|---|---|
[%- USE HTML %]
|
||
[%- USE LxERP %]
|
||
[%- USE L %]
|
||
[%- IF delivered %]
|
||
[%- SET RO = ' readonly' %]
|
||
[%- END %]
|
||
|
||
<table>
|
||
<tr>
|
||
<td>[% 'Part Number' | $T8 %]</td>
|
||
<td>[% part.partnumber | html %]</td>
|
||
</tr>
|
||
<tr>
|
||
<td>[% 'Description' | $T8 %]</td>
|
||
<td>[% part.description | html %]</td>
|
||
</tr>
|
||
<tr>
|
||
<td>[% 'Qty according to delivery order' | $T8 %]</td>
|
||
<td>[% LxERP.format_amount(do_qty) %] [% do_unit | html %]</td>
|
||
</tr>
|
||
</table>
|
||
|
||
[%- UNLESS WHCONTENTS.size %]
|
||
<p>[% 'There are no items in stock.' | $T8 %]</p>
|
||
[%- ELSE %]
|
||
|
||
[% L.hidden_tag("in_out", in_out) %]
|
||
[% L.hidden_tag("parts_id", parts_id) %]
|
||
[% L.hidden_tag("do_qty", do_qty) %]
|
||
[% L.hidden_tag("do_unit", do_unit) %]
|
||
[% L.hidden_tag("row", row, class="data-row") %]
|
||
[% L.hidden_tag("item_id", item_id) %]
|
||
|
||
<p>
|
||
<table id="stock-in-out-table">
|
||
<tr class="listheading">
|
||
<th> </th>
|
||
<th>[% 'Warehouse' | $T8 %]</th>
|
||
<th>[% 'Bin' | $T8 %]</th>
|
||
<th>[% 'Charge Number' | $T8 %]</th>
|
||
[% IF INSTANCE_CONF.get_show_bestbefore %]
|
||
<th>[% 'Best Before' | $T8 %]</th>
|
||
[% END %]
|
||
[%- UNLESS delivered %]
|
||
<th align="right">[% 'Available qty' | $T8 %]</th>
|
||
[%- END %]
|
||
<th align="right">[% 'Qty' | $T8 %]</th>
|
||
<th align="right">[% 'Unit' | $T8 %]</th>
|
||
</tr>
|
||
|
||
[%- FOREACH row = WHCONTENTS %]
|
||
<tr [% IF row.stock_error %] class="error"[% ELSE %]class="listrow"[% END %]>
|
||
<td>[% loop.count %]</td>
|
||
<td>[% row.warehousedescription | html %]</td>
|
||
<td>[% row.bindescription | html %]</td>
|
||
<td>[% row.chargenumber | html %]</td>
|
||
[% IF INSTANCE_CONF.get_show_bestbefore %]
|
||
<td>[% row.bestbefore | html %]</td>
|
||
[% END %]
|
||
|
||
[%- IF delivered %]
|
||
|
||
<td>[% LxERP.format_amount(row.stock_qty) | html %]</td>
|
||
<td>
|
||
[% row.stock_unit | html %]
|
||
[% L.hidden_tag("unit", row.stock_unit, class="data-unit") %]
|
||
</td>
|
||
|
||
[%- ELSE %]
|
||
|
||
<td>[% row.available_qty | html %]</td>
|
||
<td>
|
||
[% L.input_tag("qty", row.stock_qty ? LxERP.format_amount(row.stock_qty)
|
||
: (WHCONTENTS.size == 1) && (!row.stock_qty) ? LxERP.format_amount(do_qty)
|
||
: "", class="numeric data-qty", size="12") %]</td>
|
||
<td>[% L.select_tag("unit_" _ loop.count, part.unit_obj.convertible_units, value_key="name", default=row.stock_unit, class="data-unit") %]</td>
|
||
|
||
[%- END %]
|
||
<td style="display:none">
|
||
[% L.hidden_tag("warehouse_id", row.warehouse_id, class="data-warehouse-id") %]
|
||
[% L.hidden_tag("bin_id", row.bin_id, class="data-bin-id") %]
|
||
[% L.hidden_tag("chargenumber", row.chargenumber, class="data-chargenumber") %]
|
||
[% L.hidden_tag("delivery_order_items_stock_id", row.delivery_order_items_stock_id, class="data-stock-id") %]
|
||
[% L.hidden_tag("bestbefore", row.bestbefore, class="data-bestbefore") IF INSTANCE_CONF.get_show_bestbefore %]
|
||
</td>
|
||
</tr>
|
||
|
||
[%- END %]
|
||
</table>
|
||
</p>
|
||
|
||
<hr size="3" noshade>
|
||
|
||
<p>[% L.button_tag('kivi.DeliveryOrder.save_updated_stock()', LxERP.t8('Save')) IF !delivered %]</p>
|
||
|
||
[%- END %]
|
||
</form>
|
||
|
||
|
||
<tr class="listheading">
|
||
<th> </th>
|
||
<th>[% 'Warehouse' | $T8 %]</th>
|
||
<th>[% 'Bin' | $T8 %]</th>
|
||
<th>[% 'Charge Number' | $T8 %]</th>
|
||
[% IF INSTANCE_CONF.get_show_bestbefore %]
|
||
<th>[% 'Best Before' | $T8 %]</th>
|
||
[% END %]
|
||
<th align="right">[% 'Available qty' | $T8 %]</th>
|
||
<th align="right">[% 'Qty' | $T8 %]</th>
|
||
<th align="right">[% 'Unit' | $T8 %]</th>
|
||
</tr>
|
||
|
||
[%- FOREACH row = WHCONTENTS %]
|
||
<tr [% IF row.stock_error %] class="error"[% ELSE %]class="listrow"[% END %]>
|
||
<td>[% loop.count %]</td>
|
||
<td>[% row.warehousedescription | html %]</td>
|
||
<td>[% row.bindescription | html %]</td>
|
||
<td>[% row.chargenumber | html %]</td>
|
||
[% IF INSTANCE_CONF.get_show_bestbefore %]
|
||
<td>[% row.bestbefore | html %]</td>
|
||
[% END %]
|
||
|
||
<td>[% row.available_qty | html %]</td>
|
||
<td>
|
||
[% L.input_tag("qty", row.stock_qty ? LxERP.format_amount(row.stock_qty)
|
||
: (WHCONTENTS.size == 1) && (!row.stock_qty) ? LxERP.format_amount(do_qty)
|
||
: "", class="numeric data-qty", size="12") %]</td>
|
||
<td>[% L.select_tag("unit_" _ loop.count, part.unit_obj.convertible_units, value_key="name", default=row.stock_unit, class="data-unit") %]</td>
|
||
|
||
<td style="display:none">
|
||
[% L.hidden_tag("warehouse_id", row.warehouse_id, class="data-warehouse-id") %]
|
||
[% L.hidden_tag("bin_id", row.bin_id, class="data-bin-id") %]
|
||
[% L.hidden_tag("chargenumber", row.chargenumber, class="data-chargenumber") %]
|
||
[% L.hidden_tag("delivery_order_items_stock_id", row.delivery_order_items_stock_id, class="data-stock-id") %]
|
||
[% L.hidden_tag("bestbefore", row.bestbefore, class="data-bestbefore") IF INSTANCE_CONF.get_show_bestbefore %]
|
||
</td>
|
||
</tr>
|
||
[%- END %]
|
Auch abrufbar als: Unified diff
Controller: DeliveryOrder: stock_dialog um Einlagern erweitert