first commit
This commit is contained in:
747
admin/templates/window/orders.items.tpl
Normal file
747
admin/templates/window/orders.items.tpl
Normal file
@@ -0,0 +1,747 @@
|
||||
{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&acn=edititem&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> {'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> {'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>
|
||||
Reference in New Issue
Block a user