Files
kupshop/admin/templates/window/orders.items.tpl
2025-08-02 16:30:27 +02:00

748 lines
43 KiB
Smarty

{extends "../windowFrame.tpl"}
{block body_class}class="panel_frame window-orders-items"{/block}
{block content}
<div class="container-fluid">
{block 'orders-items-variables'}
{$closed = $body.order->isClosed()}
{$storno = $body.order.status_storno == 1}
{$pricePreferred = '_vat'}
{$labelPricePreferred = 'withTax'|translate:'choice'}
{if ($dbcfg->prod_prefer_price_vat == 'N')}
{$pricePreferred = ''}
{$labelPricePreferred = 'withoutTax'|translate:'choice'}
{/if}
{/block}
<form name="editform" method="post" action="launch.php?s=orders.items.php&amp;acn=edititem&amp;IDo={$body.id}" class="form-horizontal">
<div id="items">
<div class="row bottom-space">
{if !$storno and !$closed and !$warehouse_closed}
<div class="col-md-2">
<a href="#" data-form-add class="btn btn-success btn-block"><span
class="glyphicon glyphicon-plus"></span>&nbsp;{'submitAddNewItem'|translate:'orders' nofilter}
</a>
</div>
{/if}
<div class="col-md-2">
{if $body.price_level}
<a href="javascript:nw('pricelevel', {$body.price_level.id})" title="Upravit cenovou hladinu {$body.price_level.name}" class="badge badge badge-info">
{$body.price_level.name}
</a>
{/if}
</div>
{if $body.pv}
<div class="col-md-1 text-right pull-right" data-form-mass-open>
<a class="btn btn-sm" style="margin-right: 15px" title="Rozbalit vše">
<i class="glyphicon glyphicon-plus-sign"></i>
</a>
</div>
{/if}
<div class="col-md-2 pull-right">
{if !$storno and !$closed and !$warehouse_closed}
<input type="submit" value="{'editItems'|translate:'orders'}" name="edititems" class="btn btn-primary btn-block">
{/if}
</div>
</div>
<div class="panel-group panel-group-lists" id="items">
<div class="panel panel-body" data-form-new style="display:none">
{block 'autocomplete-html'}
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'productItem'|translate:'orders'}</label>
</div>
<div class="col-md-5">
<input type="hidden" class="form-control" name="data[items][0][id_product]" value="">
<input type="hidden" class="form-control" name="data[items][0][id_product_text]" value="">
<input type="hidden" class="form-control" name="data[items][0][id_variation]" value="">
<input id="autocomplete-input" type="text" class="form-control input-sm" value="" size="2" maxlength="255" autocomplete="off">
</div>
<span class="col-md-4"></span>
<div class="col-md-1 text-right">
<a class="btn-sm btn btn-danger" data-form-delete>
<input class="hidden" type="checkbox" name="data[items][0][delete]">
<span class="glyphicon glyphicon-remove"></span>
</a>
</div>
</div>
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'countPieces'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[items][0][pieces]" size="5" maxlength="11" data-calculate='pieces' value="1">
<span class="input-group-addon">{'piecesUnit'|translate:'orders'}</span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'code'|translate:'products'}</label>
</div>
<div class="col-md-2">
<input type="text" class="form-control input-sm disabled" value="" data-type="code" disabled>
</div>
<div class="col-md-2 control-label">
<label>{'piecesInStore'|translate:'products'}</label>
</div>
<div class="col-md-2">
<input type="text" class="form-control input-sm disabled" value="" data-type="in_store" disabled>
</div>
</div>
{block "add-spec-row"}
{/block}
{/block}
</div>
<div class="panel-group panel-group-lists collapse in" id="">
<div class="panel">
<div class="panel-heading">
<div class="row">
<div class="col-md-5">
<label>{'productItem'|translate:'orders'}:</label>
</div>
<div class="col-md-2">
<label>{'pieces'|translate:'orders'}:</label>
</div>
<div class="col-md-2">
<label>{'piecePrice'|translate:'orders'} {$labelPricePreferred}:</label>
</div>
<div class="col-md-2">
<label>{'totalPrice'|translate:'orders'} {$labelPricePreferred}:</label>
</div>
</div>
</div>
</div>
{block "order-items"}
{foreach from=$body.pv item=item key=key name=pv}
<div class="panel" data-form-item="{$item.id}">
{if empty($item.id_product) || $item.in_store + $item.piecesOrdered >= 0}
{$class="row-green"}
{else}
{if $item.in_store + $item.piecesOrdered + $item.piecesInSuppliers >= 0}
{$class="row-orange"}
{else}
{$class="row-red"}
{/if}
{/if}
<div class="panel-heading collapsed {$class}" data-toggle="collapse" data-target="#collapse_{$item@index}">
<div class="row">
<div class="col-md-5">
<h4 class="panel-title">
<p>
{block productTitle}
<strong>{$item.descr}</strong>
{/block}
</p>
</h4>
</div>
<div class="col-md-2">
<p class="input-height">{block pieces}{$item.pieces}{/block}</p>
</div>
<div class="col-md-2">
<p class="input-height" style="white-space: nowrap;">{$item["piece_price{$pricePreferred}"]|format_price:"ceil=no;decimal=dynamic"} {if !$item.discount->isZero()}( -{$item.discount|format_editable_price:-2} %){/if}</p>
</div>
<div class="col-md-2">
<p class="input-height" style="white-space: nowrap;">{$item["total_price{$pricePreferred}"]|format_price:"ceil=no;decimal=dynamic"}</p>
</div>
<div class="col-md-1 text-right">
{if !$closed and !$warehouse_closed}
<a class="btn-sm btn btn-danger" data-form-delete>
<input class="hidden" type="checkbox" name="data[items][{$item.id}][delete]">
<span class="glyphicon glyphicon-remove"></span>
</a>
{/if}
</div>
</div>
</div>
<div id="collapse_{$item@index}" class="panel-collapse collapse">
<div class="panel-body">
<div class="form-group" id="item_replace_{$item.id}">
<div class="col-md-2 control-label">
<label>{if $item.id_product}
<a href="javascript:nw('product', '{$item.id_product}');">{'productItem'|translate:'orders'}</a>
{else}
{'item'|translate:'orders'}
{/if}
</label>
</div>
<div class="col-md-4">
<div class="d-flex align-items-center">
<input type="text" class="form-control input-sm d-inline-block" name="data[items][{$item.id}][descr]" maxlength="255" value="{$item.descr}">
<input type="hidden" name="data[items][{$item.id}][id_variation]" value="{$item.id_variation}">
<a class="btn-sm btn btn-primary" data-exchange-item="{$item.id_product}" title="Zkopírovat produkt do vyhledávání pro výměnu">
<span class="glyphicon glyphicon-retweet"></span>
</a>
</div>
</div>
<div class="col-md-2 control-label">
<label>{'replaceProduct'|translate:'products'}</label>
</div>
<div class="col-md-4">
<input
type="text"
data-autocomplete-search
autocomplete="off"
class="form-control input-sm autocomplete-control"
>
<input
data-replace-product
type="hidden"
autocomplete="off"
name="data[items][{$item.id}][id_product_replace]"
>
<input
data-replace-variation
type="hidden"
autocomplete="off"
name="data[items][{$item.id}][id_variation_replace]"
>
</div>
</div>
<script>
$(function() {
autoCompleteItemsRender('#item_replace_{$item.id}')
})
</script>
{block 'item-note'}
{if $item.note}
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'note'|translate:'orders'}</label>
</div>
<div class="col-md-4">
{$item.note}
</div>
</div>
{/if}
{/block}
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'countPieces'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[items][{$item.id}][pieces]" size="5" maxlength="11"
onkeypress="checkInputData('float');" data-calculate='pieces' value="{$item.pieces}">
<span class="input-group-addon">{'piecesUnit'|translate:'orders'}</span>
</div>
</div>
<div class="col-md-1 control-label col-md-offset-1">
<label>{'piecePrice'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[items][{$item.id}][piece_price]" size="10" maxlength="20"
onkeypress="checkInputData('float');" data-calculate='piece_price' value="{$item.piece_price|format_editable_price:-4}">
<input type="hidden" data-calculate='last_piece_price' value="{$item.piece_price}">
<span class="input-group-addon">{'withoutTax'|translate:'choice'}</span>
</div>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[items][{$item.id}][piece_price_vat]" size="10" maxlength="20"
onkeypress="checkInputData('float');" data-calculate='piece_price_vat' value="{$item.piece_price_vat|format_editable_price:-2}">
<span class="input-group-addon">{'withTax'|translate:'choice'}</span>
</div>
</div>
<div class="col-md-2 text-center">
<label>{'addDiscount'|translate:'orders'}</label>
</div>
</div>
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'itemVat'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[items][{$item.id}][tax]" size="5" maxlength="5" value="{$item.tax}"
onkeyup="checkInputData('float');" data-calculate='vat'>
<span class="input-group-addon">%</span>
</div>
</div>
<div class="col-md-2 control-label">
<label>{'totalPrice'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[items][{$item.id}][total_price]" size="10" maxlength="11"
onkeypress="checkInputData('float');" data-calculate='total_price' value="{$item.total_price|format_editable_price:-4}">
<span class="input-group-addon">{'withoutTax'|translate:'choice'}</span>
</div>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[items][{$item.id}][total_price_vat]" size="10" maxlength="11"
onkeypress="checkInputData('float');" data-calculate='total_price_vat' value="{$item.total_price_vat|format_editable_price:-2}">
<span class="input-group-addon">{'withTax'|translate:'choice'}</span>
</div>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[items][{$item.id}][discount]" value="{$item.discount|format_editable_price:-2}"
size="10" maxlength="11" onkeypress="checkInputData('float');" data-calculate='discount'>
<input type="hidden" value="{$item.discount}" data-calculate='last_discount'>
<span class="input-group-addon">%</span>
</div>
</div>
</div>
{if $item.custom_data.discounts}
{$itemInfo = $body.order->getItemInfo($item)}
<div class="form-group">
<div class="col-md-2 col-md-offset-4 control-label">
<label>{'discount'|translate:'products'}</label>
</div>
<div class="col-md-6">
<p class="input-height">
{$itemInfo.discounts nofilter}<br>
{$itemInfo.discounts_admin nofilter}
</p>
</div>
</div>
{/if}
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'code'|translate:'products'}</label>
</div>
<div class="col-md-2">
<input type="text" class="form-control input-sm disabled" value="{$item.code}" disabled>
</div>
<div class="col-md-2 control-label">
<label>{'piecesInStore'|translate:'products'}</label>
</div>
<div class="col-md-2">
<input type="text" class="form-control input-sm disabled" value="{$item.in_store}" disabled>
</div>
{if $module.PRODUCTS__PRICE_BUY && findRight('PROD_PRICEBUY')}
<div class="col-md-2 control-label">
<label>{'priceBuy'|translate:'products'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[items][{$item.id}][price_buy]"
value="{$item.price_buy}">
<span class="input-group-addon">{'withoutTax'|translate:'choice'}</span>
</div>
</div>
{/if}
</div>
{block "spec-row"}
{/block}
<input type="hidden" name="data[items][{$item.id}][id_product]" value="{$item.id_product}">
<input type="hidden" name="data[items][{$item.id}][id]" value="{$item.id}">
</div>
</div>
</div>
{/foreach}
{/block}
</div>
</div>
</div>
<div id="discounts">
<div class="row bottom-space">
{if !$storno and !$closed and !$warehouse_closed}
<div class="col-md-2">
<a href="#" data-form-add class="btn btn-success btn-block"><span
class="glyphicon glyphicon-plus"></span>&nbsp;{'submitAddNewDiscount'|translate:'orders' nofilter}</a>
<a class="help-tip" data-toggle="tooltip"
title="Jakákoliv další položka, která není produkt. Může to být doprava, sleva nebo cokoliv dalšího, co ovlivňuje konečnou cenu objednávky."><i
class="bi bi-question-circle"></i></a>
</div>
{/if}
{if $body.oi}
<div class="col-md-1 text-right pull-right" data-form-mass-open>
<a class="btn btn-sm" style="margin-right: 15px" title="Rozbalit vše">
<i class="glyphicon glyphicon-plus-sign"></i>
</a>
</div>
{/if}
</div>
<div class="panel-group panel-group-lists" id="discounts">
<div class="panel panel-body" data-form-new style="display:none">
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'discount'|translate:'orders'}</label>
</div>
<div class="col-md-9">
<input type="text" class="form-control input-sm" name="data[discounts][0][descr]" maxlength="255" value="{$body.descr2}" placeholder="Doprava, sleva, ..">
</div>
<div class="col-md-1 text-right">
{if !$closed and !$warehouse_closed}
<a class="btn-sm btn btn-danger" data-form-delete>
<input class="hidden" type="checkbox" name="data[discounts][{$item.id}][delete]">
<span class="glyphicon glyphicon-remove"></span>
</a>
{/if}
</div>
</div>
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'discountPieces'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][0][pieces]" onkeypress="checkInputData('float');" size="5" maxlength="11" data-calculate='pieces' value="1">
<span class="input-group-addon">{'discountPiecesUnit'|translate:'orders'}</span>
</div>
</div>
<div class="col-md-1 control-label col-md-offset-1">
<label>{'discountPiecePrice'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][0][piece_price]" size="10" maxlength="20"
onkeypress="checkInputData('float');" data-calculate='piece_price' value="0">
<span class="input-group-addon">{'withoutTax'|translate:'choice'}</span>
</div>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][0][piece_price_vat]" size="10" maxlength="20"
onkeypress="checkInputData('float');" data-calculate='piece_price_vat' value="0">
<span class="input-group-addon">{'withTax'|translate:'choice'}</span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'itemVat'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
{print_select var=$body.vats name="data[discounts][0][tax]" selected=$body.defaultVat param="data-calculate='vat'"}
</div>
</div>
<div class="col-md-2 control-label">
<label>{'totalDiscount'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][0][total_price]" size="10" maxlength="11"
onkeypress="checkInputData('float');" data-calculate='total_price' value="0">
<span class="input-group-addon">{'withoutTax'|translate:'choice'}</span>
</div>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][0][total_price_vat]" size="10" maxlength="11"
onkeypress="checkInputData('float');" data-calculate='total_price_vat' value="0">
<span class="input-group-addon">{'withTax'|translate:'choice'}</span>
</div>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][0][discount]" value="0" size="10" maxlength="11" data-calculate='discount'>
<input type="hidden" value="0" data-calculate='last_discount'>
<span class="input-group-addon">%</span>
</div>
</div>
<input type="hidden" name="data[discounts][0][id_product]" value="-1">
<input type="hidden" name="data[discounts][0][id_variation]" value="-1">
</div>
{block "add-discounts-spec-row"}
{/block}
</div>
<div class="panel-group panel-group-lists collapse in" id="">
{block 'discount-items'}
{foreach from=$body.oi item=item key=key name=pv}
<div class="panel" data-form-item="{$item.id}">
<div class="panel-heading collapsed " style="background-color: #E5FCCD" data-toggle="collapse" data-target="#collapse2_{$item@index}">
<div class="row">
<div class="col-md-5">
<h4 class="panel-title">
<p>
<strong>{$item.descr}</strong>
</p>
</h4>
</div>
<div class="col-md-2">
<p class="input-height">{$item.pieces}</p>
</div>
<div class="col-md-2">
<p class="input-height">{$item["piece_price{$pricePreferred}"]|format_price:"ceil=no;decimal=dynamic"} {if !$item.discount->isZero()}<span data-discounts-discount>( -{$item.discount|format_editable_price:-2} %)</span>{/if}</p>
</div>
<div class="col-md-2">
<p class="input-height">{$item["total_price{$pricePreferred}"]|format_price:"ceil=no;decimal=dynamic"}</p>
</div>
<div class="col-md-1 text-right">
{if !$closed and !$warehouse_closed}
<a class="btn-sm btn btn-danger" data-form-delete>
<input class="hidden" type="checkbox" name="data[discounts][{$item.id}][delete]" title="Smazat položku">
<span class="glyphicon glyphicon-remove"></span>
</a>
{/if}
</div>
</div>
</div>
<div id="collapse2_{$item@index}" class="panel-collapse collapse">
<div class="panel-body">
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'item'|translate:'orders'}
</label>
</div>
<div class="col-md-4">
<input type="text" class="form-control input-sm" name="data[discounts][{$item.id}][descr]" maxlength="255" value="{$item.descr}">
</div>
</div>
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'countPieces'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][{$item.id}][pieces]" size="5" maxlength="11"
data-calculate='pieces' value="{$item.pieces}" onkeypress="checkInputData('float');">
<span class="input-group-addon">{'piecesUnit'|translate:'orders'}</span>
</div>
</div>
<div class="col-md-1 control-label col-md-offset-1">
<label>{'piecePrice'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][{$item.id}][piece_price]" maxlength="20"
value="{$item.piece_price|format_editable_price:-4}" onkeypress="checkInputData('float');" data-calculate='piece_price'>
<span class="input-group-addon">{'withoutTax'|translate:'choice'}</span>
</div>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][{$item.id}][piece_price_vat]" maxlength="20"
value="{$item.piece_price_vat|format_editable_price:-2}" onkeypress="checkInputData('float');" data-calculate='piece_price_vat'>
<span class="input-group-addon">{'withTax'|translate:'choice'}</span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'itemVat'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][{$item.id}][tax]" size="5" maxlength="5"
value="{$item.tax}" onkeyup="checkInputData('float');" data-calculate='vat'>
<span class="input-group-addon">%</span>
</div>
</div>
<div class="col-md-2 control-label">
<label>{'totalPrice'|translate:'orders'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][{$item.id}][total_price]" size="10" maxlength="11"
onkeypress="checkInputData('float');" data-calculate='total_price' value="{$item.total_price|format_editable_price:-4}">
<span class="input-group-addon">{'withoutTax'|translate:'choice'}</span>
</div>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][{$item.id}][total_price_vat]" size="10" maxlength="11"
onkeypress="checkInputData('float');" data-calculate='total_price_vat' value="{$item.total_price_vat|format_editable_price:-2}">
<span class="input-group-addon">{'withTax'|translate:'choice'}</span>
</div>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][{$item.id}][discount]" value="{$item.discount}" size="10"
maxlength="11" data-calculate='discount'>
<input type="hidden" value="{$item.discount}" data-calculate='last_discount'>
<span class="input-group-addon">%</span>
</div>
</div>
</div>
{if $module.PRODUCTS__PRICE_BUY && findRight('PROD_PRICEBUY')}
<div class="form-group">
<div class="col-md-2 control-label">
<label>{'priceBuy'|translate:'products'}</label>
</div>
<div class="col-md-2">
<div class="input-group">
<input type="text" class="form-control input-sm" name="data[discounts][{$item.id}][price_buy]"
value="{$item.price_buy}">
<span class="input-group-addon">{'withoutTax'|translate:'choice'}</span>
</div>
</div>
</div>
{/if}
{block "discounts-spec-row"}
{/block}
<input type="hidden" name="data[discounts][{$item.id}][id_product]" value="{$item.id_product}">
<input type="hidden" name="data[discounts][{$item.id}][id_variation]" value="{$item.id_variation}">
<input type="hidden" name="data[discounts][{$item.id}][id]" value="{$item.id}">
</div>
</div>
</div>
{/foreach}
{/block}
</div>
<div class="row">
<div class="col-md-5">
{if $storno}
<div class="alert alert-danger"><strong>{'errorCanceledCantEdit'|translate:'orders'}</strong></div>
{elseif $closed}
<div class="alert alert-danger"><strong>{'errorOrderClosed'|translate:'orders'}</strong></div>
{elseif $warehouse_closed}
<div class="alert alert-danger"><strong>Položky objednávky již nelze upravovat, protože objednávka už prošla výstupní kontrolou.</strong></div>
{/if}
</div>
{if !$storno and !$closed and !$warehouse_closed}
<div class="col-md-2 pull-right">
<input type="submit" value="{'editItems'|translate:'orders'}" name="edititems" class="btn btn-primary btn-block">
</div>
{/if}
<div class="col-md-5 pull-right">
<div class="row">
<div class="col-md-12">
<h5 class="no-margin pull-right"><strong>{'itemsTotalPrice'|translate:'orders'}: {$body.total_price_vat|format_price:"ceil=no;decimal=dynamic"} ({'withTax'|translate:'choice'})</strong></h5>
</div>
</div>
<div class="row">
<div class="col-md-12">
<h6 class="no-margin pull-right"><strong>{$body.total_price->value(2)|format_price:"ceil=no;decimal=dynamic"} ({'withoutTax'|translate:'choice'})</strong></h6>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
{/block}
<script type="text/javascript">
{block onready append}
calcPrices('form');
$("form").on("click", ".btn-danger", function (e) {
$this = $(this);
$panel = $this.closest(".panel, .well");
$panel.find(":input[name*=delete]").val("1");
$panel.slideUp();
});
initForm({
selector: '#items',
beforeAdd: function (original) {
var $form = original();
createAutocomplete($form);
}
});
initForm({
selector: '#discounts',
beforeAdd: function (original) {
var $form = original();
$form.find(":input[name*=descr]").focus();
}
});
function createAutocomplete($form) {
const fields = {
$productId: $form.find(':input[name*="id_product"]'),
$productText: $form.find(':input[name*="id_product_text"]'),
$variationId: $form.find(':input[name*="id_variation"]'),
$code: $form.find('[data-type="code"]'),
$in_store: $form.find('[data-type="in_store"]'),
};
$form.find('#autocomplete-input').adminVariationAutoComplete({
allowSelectProduct: false,
$form,
select: function (e, info) {
let { product, variation, variations } = info;
for (const $field of Object.values(fields)) {
$field.val('');
}
fields.$productId.val(product.id);
fields.$productText.val(product.text);
// shouldn't happen with keyboard navigation!
// product with variation selected
if (!variation && Array.isArray(variations) && variations.length > 0) {
variation = product.variations[0];
}
if (variation) {
fields.$variationId.val(variation.id);
fields.$code.val(!variation.code ? product.code : variation.code);
fields.$in_store.val(variation.in_store);
return false;
}
fields.$code.val(product.code);
fields.$in_store.val(product.in_store);
$(e.target).closest('[data-form-item]').find('[name*="[pieces]"]').focus();
return false;
},
})
$form.find("#autocomplete-input").focus();
}
function autoCompleteItemsRender(selector) {
const $replacementItemsAutocomplete = $(selector).find('[data-autocomplete-search]');
$replacementItemsAutocomplete.adminVariationAutoComplete({
$menu: null,
minLength: 2,
xhr: null,
data: null,
templateContext: null,
allowSelectProduct: false,
options: {
type: 'product_id',
limit: 50,
visible: 0
},
select: function(e, item) {
const product = item.product
$replacementItemsAutocomplete.text(product.title + ( product.title_variation ? (' | ' + product.title_variation) : '' ));
$(selector).find('[data-replace-product]').val(item.product.id)
$(selector).find('[data-replace-variation]').val(item.variation?.id)
return false;
}
})
$(selector).find('[data-exchange-item]').on('click', function() {
$replacementItemsAutocomplete.adminVariationAutoComplete('search', $(this).data('exchange-item'))
});
}
{if $closed || $warehouse_closed}
$('input[type=text], input[type=number]').attr('readonly', 'readonly');
{/if}
{/block}
</script>