Merge pull request 'refs #6199 Added minQuantity in item' (!1786) from 6199-minQuantity into test
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
Reviewed-on: #1786 Reviewed-by: Javi Gallego <jgallego@verdnatura.es> Reviewed-by: Alex Moreno <alexm@verdnatura.es>
This commit is contained in:
commit
2250fca6bb
|
@ -30434,6 +30434,7 @@ CREATE TABLE `item` (
|
||||||
`editorFk` int(10) unsigned DEFAULT NULL,
|
`editorFk` int(10) unsigned DEFAULT NULL,
|
||||||
`recycledPlastic` int(11) DEFAULT NULL,
|
`recycledPlastic` int(11) DEFAULT NULL,
|
||||||
`nonRecycledPlastic` int(11) DEFAULT NULL,
|
`nonRecycledPlastic` int(11) DEFAULT NULL,
|
||||||
|
`minQuantity` int(10) unsigned DEFAULT NULL COMMENT 'Cantidad mínima para una línea de venta',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `item_supplyResponseFk_idx` (`supplyResponseFk`),
|
UNIQUE KEY `item_supplyResponseFk_idx` (`supplyResponseFk`),
|
||||||
KEY `Color` (`inkFk`),
|
KEY `Color` (`inkFk`),
|
||||||
|
|
|
@ -131,6 +131,9 @@
|
||||||
"nonRecycledPlastic": {
|
"nonRecycledPlastic": {
|
||||||
"type": "number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
|
"minQuantity": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
"packingOut": {
|
"packingOut": {
|
||||||
"type": "number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
|
|
|
@ -33,6 +33,8 @@
|
||||||
rule
|
rule
|
||||||
info="Full name calculates based on tags 1-3. Is not recommended to change it manually">
|
info="Full name calculates based on tags 1-3. Is not recommended to change it manually">
|
||||||
</vn-textfield>
|
</vn-textfield>
|
||||||
|
</vn-horizontal>
|
||||||
|
<vn-horizontal>
|
||||||
<vn-autocomplete
|
<vn-autocomplete
|
||||||
url="ItemTypes"
|
url="ItemTypes"
|
||||||
label="Type"
|
label="Type"
|
||||||
|
@ -50,6 +52,30 @@
|
||||||
</div>
|
</div>
|
||||||
</tpl-item>
|
</tpl-item>
|
||||||
</vn-autocomplete>
|
</vn-autocomplete>
|
||||||
|
<vn-autocomplete
|
||||||
|
label="Generic"
|
||||||
|
url="Items/withName"
|
||||||
|
ng-model="$ctrl.item.genericFk"
|
||||||
|
vn-name="generic"
|
||||||
|
show-field="name"
|
||||||
|
value-field="id"
|
||||||
|
search-function="$ctrl.itemSearchFunc($search)"
|
||||||
|
order="id DESC"
|
||||||
|
tabindex="1">
|
||||||
|
<tpl-item>
|
||||||
|
<div>{{::name}}</div>
|
||||||
|
<div class="text-caption text-secondary">
|
||||||
|
#{{::id}}
|
||||||
|
</div>
|
||||||
|
</tpl-item>
|
||||||
|
<append>
|
||||||
|
<vn-icon-button
|
||||||
|
icon="filter_alt"
|
||||||
|
vn-click-stop="$ctrl.showFilterDialog($ctrl.item)"
|
||||||
|
vn-tooltip="Filter...">
|
||||||
|
</vn-icon-button>
|
||||||
|
</append>
|
||||||
|
</vn-autocomplete>
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-autocomplete
|
<vn-autocomplete
|
||||||
|
@ -128,30 +154,13 @@
|
||||||
ng-model="$ctrl.item.stemMultiplier"
|
ng-model="$ctrl.item.stemMultiplier"
|
||||||
vn-name="stemMultiplier">
|
vn-name="stemMultiplier">
|
||||||
</vn-input-number>
|
</vn-input-number>
|
||||||
<vn-autocomplete
|
<vn-input-number
|
||||||
label="Generic"
|
min="1"
|
||||||
url="Items/withName"
|
label="Minimum sales quantity"
|
||||||
ng-model="$ctrl.item.genericFk"
|
ng-model="$ctrl.item.minQuantity"
|
||||||
vn-name="generic"
|
vn-name="minQuantity"
|
||||||
show-field="name"
|
rule>
|
||||||
value-field="id"
|
</vn-input-number>
|
||||||
search-function="$ctrl.itemSearchFunc($search)"
|
|
||||||
order="id DESC"
|
|
||||||
tabindex="1">
|
|
||||||
<tpl-item>
|
|
||||||
<div>{{::name}}</div>
|
|
||||||
<div class="text-caption text-secondary">
|
|
||||||
#{{::id}}
|
|
||||||
</div>
|
|
||||||
</tpl-item>
|
|
||||||
<append>
|
|
||||||
<vn-icon-button
|
|
||||||
icon="filter_alt"
|
|
||||||
vn-click-stop="$ctrl.showFilterDialog($ctrl.item)"
|
|
||||||
vn-tooltip="Filter...">
|
|
||||||
</vn-icon-button>
|
|
||||||
</append>
|
|
||||||
</vn-autocomplete>
|
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-input-number
|
<vn-input-number
|
||||||
|
|
|
@ -16,3 +16,4 @@ This item does need a photo: Este artículo necesita una foto
|
||||||
Do photo: Hacer foto
|
Do photo: Hacer foto
|
||||||
Recycled Plastic: Plástico reciclado
|
Recycled Plastic: Plástico reciclado
|
||||||
Non recycled plastic: Plástico no reciclado
|
Non recycled plastic: Plástico no reciclado
|
||||||
|
Minimum sales quantity: Cantidad mínima de venta
|
||||||
|
|
|
@ -128,6 +128,9 @@
|
||||||
<vn-label-value label="Non recycled plastic"
|
<vn-label-value label="Non recycled plastic"
|
||||||
value="{{$ctrl.summary.item.nonRecycledPlastic}}">
|
value="{{$ctrl.summary.item.nonRecycledPlastic}}">
|
||||||
</vn-label-value>
|
</vn-label-value>
|
||||||
|
<vn-label-value label="Minimum sales quantity"
|
||||||
|
value="{{$ctrl.summary.item.minQuantity}}">
|
||||||
|
</vn-label-value>
|
||||||
</vn-one>
|
</vn-one>
|
||||||
<vn-one name="tags">
|
<vn-one name="tags">
|
||||||
<h4 ng-show="$ctrl.isBuyer || $ctrl.isReplenisher">
|
<h4 ng-show="$ctrl.isBuyer || $ctrl.isReplenisher">
|
||||||
|
|
|
@ -2,3 +2,4 @@ Barcode: Códigos de barras
|
||||||
Other data: Otros datos
|
Other data: Otros datos
|
||||||
Go to the item: Ir al artículo
|
Go to the item: Ir al artículo
|
||||||
WarehouseFk: Calculado sobre el almacén de {{ warehouseName }}
|
WarehouseFk: Calculado sobre el almacén de {{ warehouseName }}
|
||||||
|
Minimum sales quantity: Cantidad mínima de venta
|
||||||
|
|
|
@ -100,31 +100,32 @@ module.exports = Self => {
|
||||||
));
|
));
|
||||||
|
|
||||||
stmt = new ParameterizedSQL(`
|
stmt = new ParameterizedSQL(`
|
||||||
SELECT
|
SELECT i.id,
|
||||||
i.id,
|
i.name,
|
||||||
i.name,
|
i.subName,
|
||||||
i.subName,
|
i.image,
|
||||||
i.image,
|
i.tag5,
|
||||||
i.tag5,
|
i.value5,
|
||||||
i.value5,
|
i.tag6,
|
||||||
i.tag6,
|
i.value6,
|
||||||
i.value6,
|
i.tag7,
|
||||||
i.tag7,
|
i.value7,
|
||||||
i.value7,
|
i.tag8,
|
||||||
i.tag8,
|
i.value8,
|
||||||
i.value8,
|
i.stars,
|
||||||
i.stars,
|
tci.price,
|
||||||
tci.price,
|
tci.available,
|
||||||
tci.available,
|
w.lastName,
|
||||||
w.lastName AS lastName,
|
w.firstName,
|
||||||
w.firstName,
|
tci.priceKg,
|
||||||
tci.priceKg,
|
ink.hex,
|
||||||
ink.hex
|
i.minQuantity
|
||||||
FROM tmp.ticketCalculateItem tci
|
FROM tmp.ticketCalculateItem tci
|
||||||
JOIN vn.item i ON i.id = tci.itemFk
|
JOIN vn.item i ON i.id = tci.itemFk
|
||||||
JOIN vn.itemType it ON it.id = i.typeFk
|
JOIN vn.itemType it ON it.id = i.typeFk
|
||||||
JOIN vn.worker w on w.id = it.workerFk
|
JOIN vn.worker w on w.id = it.workerFk
|
||||||
LEFT JOIN vn.ink ON ink.id = i.inkFk`);
|
LEFT JOIN vn.ink ON ink.id = i.inkFk
|
||||||
|
`);
|
||||||
|
|
||||||
// Apply order by tag
|
// Apply order by tag
|
||||||
if (orderBy.isTag) {
|
if (orderBy.isTag) {
|
||||||
|
|
|
@ -8,12 +8,12 @@
|
||||||
<div class="item-color" ng-style="{'background-color': '#' + item.hex}"></div>
|
<div class="item-color" ng-style="{'background-color': '#' + item.hex}"></div>
|
||||||
</div>
|
</div>
|
||||||
<img
|
<img
|
||||||
ng-src="{{::$root.imagePath('catalog', '200x200', item.id)}}"
|
ng-src="{{::$root.imagePath('catalog', '200x200', item.id)}}"
|
||||||
zoom-image="{{::$root.imagePath('catalog', '1600x900', item.id)}}"
|
zoom-image="{{::$root.imagePath('catalog', '1600x900', item.id)}}"
|
||||||
on-error-src/>
|
on-error-src/>
|
||||||
</div>
|
</div>
|
||||||
<div class="description">
|
<div class="description">
|
||||||
<h3 class="link"
|
<h3 class="link"
|
||||||
ng-click="itemDescriptor.show($event, item.id)">
|
ng-click="itemDescriptor.show($event, item.id)">
|
||||||
{{::item.name}}
|
{{::item.name}}
|
||||||
</h3>
|
</h3>
|
||||||
|
@ -37,13 +37,28 @@
|
||||||
value="{{::item.value7}}">
|
value="{{::item.value7}}">
|
||||||
</vn-label-value>
|
</vn-label-value>
|
||||||
</div>
|
</div>
|
||||||
<vn-rating ng-if="::item.stars"
|
<vn-horizontal>
|
||||||
ng-model="::item.stars">
|
<vn-one>
|
||||||
</vn-rating>
|
<vn-rating ng-if="::item.stars"
|
||||||
|
ng-model="::item.stars"/>
|
||||||
|
</vn-one>
|
||||||
|
<vn-horizontal
|
||||||
|
class="text-right text-caption alert vn-mr-xs"
|
||||||
|
ng-if="::item.minQuantity">
|
||||||
|
<vn-one>
|
||||||
|
<vn-icon
|
||||||
|
icon="production_quantity_limits"
|
||||||
|
translate-attr="{title: 'Minimal quantity'}"
|
||||||
|
class="text-subtitle1">
|
||||||
|
</vn-icon>
|
||||||
|
</vn-one>
|
||||||
|
{{::item.minQuantity}}
|
||||||
|
</vn-horizontal>
|
||||||
|
</vn-horizontal>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<div class="price">
|
<div class="price">
|
||||||
<vn-one>
|
<vn-one>
|
||||||
<span>{{::item.available}}</span>
|
<span>{{::item.available}}</span>
|
||||||
<span translate>to</span>
|
<span translate>to</span>
|
||||||
<span>{{::item.price | currency:'EUR':2}}</span>
|
<span>{{::item.price | currency:'EUR':2}}</span>
|
||||||
</vn-one>
|
</vn-one>
|
||||||
|
@ -54,7 +69,7 @@
|
||||||
</vn-icon-button>
|
</vn-icon-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="priceKg" ng-show="::item.priceKg">
|
<div class="priceKg" ng-show="::item.priceKg">
|
||||||
<span>Precio por kilo {{::item.priceKg | currency: 'EUR'}}</span>
|
<span>Precio por kilo {{::item.priceKg | currency: 'EUR'}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -69,4 +84,4 @@
|
||||||
<vn-item-descriptor-popover
|
<vn-item-descriptor-popover
|
||||||
vn-id="item-descriptor"
|
vn-id="item-descriptor"
|
||||||
warehouse-fk="$ctrl.vnConfig.warehouseFk">
|
warehouse-fk="$ctrl.vnConfig.warehouseFk">
|
||||||
</vn-item-descriptor-popover>
|
</vn-item-descriptor-popover>
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
Order created: Orden creada
|
Order created: Orden creada
|
||||||
|
Minimal quantity: Cantidad mínima
|
|
@ -44,4 +44,7 @@ vn-order-catalog {
|
||||||
height: 30px;
|
height: 30px;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
}
|
.alert {
|
||||||
|
color: $color-alert;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue