[%- USE HTML %]
[%- USE LxERP %]
[%- USE L %]
+[%- USE P %]
-<tbody class="row_entry">
-
- <tr class="listrow0">
- <td style='display:none'>
+<tbody class="row_entry listrow" data-position="[%- HTML.escape(ITEM.position) -%]"[%- IF MYCONFIG.show_form_details -%] data-expanded="1"[%- END -%]>
+ <tr>
+ <td align="center">
+ [%- IF MYCONFIG.show_form_details %]
+ [% L.img_tag(src="image/collapse.svg",
+ alt=LxERP.t8('Hide details'), title=LxERP.t8('Hide details'), class="expand") %]
+ [%- ELSE %]
+ [% L.img_tag(src="image/expand.svg",
+ 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("order.orderitems[+].id", ITEM.id, id='item_' _ ID) %]
[% L.hidden_tag("order.orderitems[].parts_id", ITEM.parts_id) %]
</td>
+ <td>
+ <div name="position" class="numeric">
+ [% HTML.escape(ITEM.position) %]
+ </div>
+ </td>
<td align="center">
<img src="image/updown.png" alt="[%- LxERP.t8('reorder item') %]" class="dragdrop">
</td>
<td align="center">
- [%- L.button_tag("delete_order_item_row(this)",
+ [%- L.button_tag("kivi.Order.delete_order_item_row(this)",
LxERP.t8("X"),
confirm=LxERP.t8("Are you sure?")) %]
</td>
+ [%- IF SELF.show_update_button -%]
+ <td align="center">
+ [%- L.img_tag(src="image/rotate_cw.svg",
+ alt=LxERP.t8('Update from master data'),
+ title= LxERP.t8('Update from master data'),
+ onclick="if (!confirm('" _ LxERP.t8("Are you sure to update this position from master data?") _ "')) return false; kivi.Order.update_row_from_master_data(this);",
+ id='update_from_master') %]
+ </td>
+ [%- END -%]
+ <td>
+ <div name="partnumber">
+ [%- P.link_tag(SELF.url_for(controller='Part', action='edit', 'part.id'=ITEM.part.id), ITEM.part.partnumber, target="_blank", title=LxERP.t8('Open in new window')) -%]
+ </div>
+ </td>
+ [%- IF SELF.search_cvpartnumber -%]
+ <td>
+ <div name="cvpartnumber">[% HTML.escape(ITEM.cvpartnumber) %]</div>
+ </td>
+ [%- END -%]
<td>
- [% HTML.escape(ITEM.part.partnumber) %]
+ <div name="partclassification">[% ITEM.part.presenter.typeclass_abbreviation %]</div>
</td>
<td>
- [% L.input_tag("order.orderitems[].description",
+ [% L.areainput_tag("order.orderitems[].description",
ITEM.description,
+ size='40',
style='width: 300px') %]
+ [%- L.hidden_tag("order.orderitems[].longdescription", ITEM.longdescription) %]
+ [%- L.button_tag("kivi.Order.show_longdescription_dialog(this)", LxERP.t8("L")) %]
</td>
- <td>
+ [%- IF (SELF.type == "sales_order" || SELF.type == "purchase_order") -%]
+ <td nowrap>
+ [%- L.div_tag(LxERP.format_amount(ITEM.shipped_qty, 2, 0) _ ' ' _ ITEM.unit, name="shipped_qty", class="numeric") %]
+ </td>
+ [%- END -%]
+ <td nowrap>
[%- L.input_tag("order.orderitems[].qty_as_number",
ITEM.qty_as_number,
size = 5,
- style='text-align:right',
- class="recalc") %]
+ class="recalc reformat_number numeric") %]
+ [%- IF ITEM.part.formel -%]
+ [%- L.button_tag("kivi.Order.show_calculate_qty_dialog(this)", LxERP.t8("*/")) %]
+ [%- L.hidden_tag("formula[+]", ITEM.part.formel) -%]
+ [%- END -%]
</td>
<td>
- [%- L.input_tag("order.orderitems[].price_factor",
- ITEM.price_factor,
- size = 5,
- style='text-align:right',
- class="recalc") %]
+ [%- L.select_tag("order.orderitems[].price_factor_id",
+ SELF.all_price_factors,
+ default = ITEM.price_factor_id,
+ title_key = 'description',
+ with_empty = 1,
+ class="recalc") %]
</td>
<td nowrap>
- [%- L.input_tag("order.orderitems[].unit",
- ITEM.unit,
- size = 5,
- class="recalc") %]
+ [%- L.select_tag("order.orderitems[].unit",
+ ITEM.part.available_units,
+ default = ITEM.unit,
+ title_key = 'name',
+ value_key = 'name',
+ class = 'unitselect') %]
</td>
<td>
- [%- L.input_tag("order.orderitems[].sellprice_as_number",
- ITEM.sellprice_as_number,
- size = 10,
- style='text-align:right',
- class="recalc") %]
+ [%- L.button_tag("kivi.Order.price_chooser_item_row(this)",
+ ITEM.active_price_source.source_description _ ' | ' _ ITEM.active_discount_source.source_description,
+ name = "price_chooser_button") %]
</td>
+ [% SET RIGHT_TO_EDIT_PRICES = 0 %]
+ [% IF (SELF.type == "sales_order" || SELF.type == "sales_quotation") %]
+ [% SET RIGHT_TO_EDIT_PRICES = AUTH.assert('sales_edit_prices', 1) %]
+ [% END %]
+ [% IF (SELF.type == "purchase_order" || SELF.type == "request_quotation") %]
+ [% SET RIGHT_TO_EDIT_PRICES = AUTH.assert('purchase_edit_prices', 1) %]
+ [% END %]
<td>
- [%- L.input_tag("order.orderitems[].discount_as_percent",
- ITEM.discount_as_percent,
- size = 5,
- style='text-align:right',
- class="recalc") %]
+ [%- L.hidden_tag("order.orderitems[].active_price_source", ITEM.active_price_source.source) %]
+ [%- SET EDIT_PRICE = (RIGHT_TO_EDIT_PRICES && ITEM.active_price_source.source == '') %]
+ <div name="editable_price" [%- IF !EDIT_PRICE %]style="display:none"[%- END %] class="numeric">
+ [%- L.input_tag("order.orderitems[].sellprice_as_number",
+ ITEM.sellprice_as_number,
+ size = 10,
+ disabled=(EDIT_PRICE? '' : 1),
+ class="recalc reformat_number numeric") %]
+ </div>
+ <div name="not_editable_price" [%- IF EDIT_PRICE %]style="display:none"[%- END %]>
+ [%- L.div_tag(ITEM.sellprice_as_number, name="sellprice_text", class="numeric") %]
+ [%- L.hidden_tag("order.orderitems[].sellprice_as_number",
+ ITEM.sellprice_as_number,
+ disabled=(EDIT_PRICE? 1 : '')) %]
+ </div>
+ </td>
+ <td>
+ [%- L.hidden_tag("order.orderitems[].active_discount_source", ITEM.active_discount_source.source) %]
+ [%- SET EDIT_DISCOUNT = (RIGHT_TO_EDIT_PRICES && ITEM.active_discount_source.source == '') %]
+ <div name="editable_discount" [%- IF !EDIT_DISCOUNT %]style="display:none"[%- END %] class="numeric">
+ [%- L.input_tag("order.orderitems[].discount_as_percent",
+ ITEM.discount_as_percent,
+ size = 5,
+ disabled=(EDIT_DISCOUNT? '' : 1),
+ class="recalc reformat_number numeric") %]
+ </div>
+ <div name="not_editable_discount" [%- IF EDIT_DISCOUNT %]style="display:none"[%- END %]>
+ [%- L.div_tag(ITEM.discount_as_percent, name="discount_text", class="numeric") %]
+ [%- L.hidden_tag("order.orderitems[].discount_as_percent",
+ ITEM.discount_as_percent,
+ disabled=(EDIT_DISCOUNT? 1 : '')) %]
+ </div>
</td>
<td align="right">
[%- L.div_tag(LxERP.format_amount(ITEM.linetotal, 2, 0), name="linetotal") %]
</tr>
- <tr class="listrow1" style="display:none">
+ <tr [%- IF !MYCONFIG.show_form_details -%]style="display:none"[%- END -%]>
<td colspan="100%">
- <table>
- <tr class="listrow1">
- [%- SET n = 0 %]
- [%- FOREACH var = ITEM.cvars_by_config %]
- [%- NEXT UNLESS (var.config.processed_flags.editable && ITEM.part.cvar_by_name(var.config.name).is_valid) %]
- [%- SET n = n + 1 %]
- <th>
- [% var.config.description %]
- </th>
- <td>
- [% L.hidden_tag('order.orderitems[].custom_variables[+].config_id', var.config.id) %]
- [% L.hidden_tag('order.orderitems[].custom_variables[].id', var.id) %]
- [% L.hidden_tag('order.orderitems[].custom_variables[].sub_module', var.sub_module) %]
- [% INCLUDE 'common/render_cvar_input.html' var_name='order.orderitems[].custom_variables[].unparsed_value' %]
- </td>
- [%- IF (n % (MYCONFIG.form_cvars_nr_cols || 3)) == 0 %]
- </tr><tr class="listrow1">
- [%- END %]
- [%- END %]
- </tr>
- </table>
+ [%- IF MYCONFIG.show_form_details || ITEM.render_second_row %]
+ <div name="second_row" data-loaded="1">
+ [%- PROCESS order/tabs/_second_row.html ITEM=ITEM TYPE=SELF.type %]
+ </div>
+ [%- ELSE %]
+ <div name="second_row" id="second_row_[% ID %]">
+ [%- LxERP.t8("Loading...") %]
+ </div>
+ [%- END %]
</td>
</tr>