feat(item_fixed-price): recalculate rate2 and when change item keep minPrice of item
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
This commit is contained in:
parent
c94c8a159e
commit
f82870bec6
|
@ -0,0 +1,23 @@
|
||||||
|
DROP FUNCTION IF EXISTS `vn`.`priceFixed_getRate2`;
|
||||||
|
|
||||||
|
DELIMITER $$
|
||||||
|
$$
|
||||||
|
CREATE FUNCTION `vn`.`priceFixed_getRate2`(vFixedPriceFk INT, vRate3 DOUBLE)
|
||||||
|
RETURNS DOUBLE
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
DECLARE vWarehouse INT;
|
||||||
|
DECLARE vRate2 DOUBLE;
|
||||||
|
|
||||||
|
SELECT round(vRate3 * (1 + ((r.rate2 - r.rate3)/100)), 2) INTO vRate2
|
||||||
|
FROM vn.rate r
|
||||||
|
JOIN vn.priceFixed p ON p.id = vFixedPriceFk
|
||||||
|
WHERE r.dated <= p.started
|
||||||
|
AND r.warehouseFk = p.warehouseFk
|
||||||
|
ORDER BY r.dated DESC
|
||||||
|
LIMIT 1;
|
||||||
|
|
||||||
|
RETURN vRate2;
|
||||||
|
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,34 @@
|
||||||
|
module.exports = Self => {
|
||||||
|
Self.remoteMethod('getRate2', {
|
||||||
|
description: 'Return the rate2.',
|
||||||
|
accessType: 'READ',
|
||||||
|
accepts: [
|
||||||
|
{
|
||||||
|
arg: 'fixedPriceId',
|
||||||
|
type: 'integer',
|
||||||
|
description: 'The fixedPrice Id',
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arg: 'rate3',
|
||||||
|
type: 'number',
|
||||||
|
description: `The price rate 3`,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
returns: {
|
||||||
|
type: 'number',
|
||||||
|
root: true
|
||||||
|
},
|
||||||
|
http: {
|
||||||
|
path: `/getRate2`,
|
||||||
|
verb: 'GET'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Self.getRate2 = async(fixedPriceId, rate3) => {
|
||||||
|
const [result] = await Self.rawSql(`SELECT vn.priceFixed_getRate2(?, ?) as rate2`,
|
||||||
|
[fixedPriceId, rate3]);
|
||||||
|
return result.rate2;
|
||||||
|
};
|
||||||
|
};
|
|
@ -1,4 +1,5 @@
|
||||||
module.exports = Self => {
|
module.exports = Self => {
|
||||||
require('../methods/fixed-price/filter')(Self);
|
require('../methods/fixed-price/filter')(Self);
|
||||||
require('../methods/fixed-price/upsertFixedPrice')(Self);
|
require('../methods/fixed-price/upsertFixedPrice')(Self);
|
||||||
|
require('../methods/fixed-price/getRate2')(Self);
|
||||||
};
|
};
|
||||||
|
|
|
@ -41,14 +41,12 @@
|
||||||
<span translate>Warehouse</span>
|
<span translate>Warehouse</span>
|
||||||
</th>
|
</th>
|
||||||
<th
|
<th
|
||||||
field="rate2"
|
field="rate2">
|
||||||
vn-tooltip="Price By Unit">
|
<span translate>Grouping price</span>
|
||||||
<span translate>P.P.U.</span>
|
|
||||||
</th>
|
</th>
|
||||||
<th
|
<th
|
||||||
field="rate3"
|
field="rate3">
|
||||||
vn-tooltip="Price By Package">
|
<span translate>Packing price</span>
|
||||||
<span translate>P.P.P.</span>
|
|
||||||
</th>
|
</th>
|
||||||
<th field="minPrice">
|
<th field="minPrice">
|
||||||
<span translate>Min price</span>
|
<span translate>Min price</span>
|
||||||
|
@ -72,7 +70,7 @@
|
||||||
show-field="name"
|
show-field="name"
|
||||||
value-field="id"
|
value-field="id"
|
||||||
search-function="$ctrl.itemSearchFunc($search)"
|
search-function="$ctrl.itemSearchFunc($search)"
|
||||||
on-change="$ctrl.upsertPrice(price)"
|
on-change="$ctrl.upsertPrice(price, true)"
|
||||||
order="id DESC"
|
order="id DESC"
|
||||||
tabindex="1">
|
tabindex="1">
|
||||||
<tpl-item>
|
<tpl-item>
|
||||||
|
@ -112,18 +110,32 @@
|
||||||
</vn-autocomplete>
|
</vn-autocomplete>
|
||||||
</td>
|
</td>
|
||||||
<td shrink-field>
|
<td shrink-field>
|
||||||
|
<vn-td-editable number>
|
||||||
|
<text>{{price.rate2 | currency: 'EUR':2}}</text>
|
||||||
|
<field>
|
||||||
<vn-input-number
|
<vn-input-number
|
||||||
|
class="dense"
|
||||||
|
vn-focus
|
||||||
ng-model="price.rate2"
|
ng-model="price.rate2"
|
||||||
on-change="$ctrl.upsertPrice(price)"
|
on-change="$ctrl.upsertPrice(price)"
|
||||||
step="0.01">
|
step="0.01">
|
||||||
</vn-input-number>
|
</vn-input-number>
|
||||||
|
</field>
|
||||||
|
</vn-td-editable>
|
||||||
</td>
|
</td>
|
||||||
<td shrink-field>
|
<td shrink-field>
|
||||||
|
<vn-td-editable number>
|
||||||
|
<text>{{price.rate3 | currency: 'EUR':2}}</text>
|
||||||
|
<field>
|
||||||
<vn-input-number
|
<vn-input-number
|
||||||
|
class="dense"
|
||||||
|
vn-focus
|
||||||
ng-model="price.rate3"
|
ng-model="price.rate3"
|
||||||
on-change="$ctrl.upsertPrice(price)"
|
on-change="$ctrl.upsertPrice(price); $ctrl.recalculateRate2(price)"
|
||||||
step="0.01">
|
step="0.01"s>
|
||||||
</vn-input-number>
|
</vn-input-number>
|
||||||
|
</field>
|
||||||
|
</vn-td-editable>
|
||||||
</td>
|
</td>
|
||||||
<td shrink-field-expand class="minPrice">
|
<td shrink-field-expand class="minPrice">
|
||||||
<vn-check
|
<vn-check
|
||||||
|
|
|
@ -62,7 +62,10 @@ export default class Controller extends Section {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
upsertPrice(price) {
|
upsertPrice(price, resetMinPrice) {
|
||||||
|
if (resetMinPrice)
|
||||||
|
delete price['minPrice'];
|
||||||
|
|
||||||
price.hasMinPrice = price.minPrice ? true : false;
|
price.hasMinPrice = price.minPrice ? true : false;
|
||||||
|
|
||||||
let requiredFields = ['itemFk', 'started', 'ended', 'rate2', 'rate3'];
|
let requiredFields = ['itemFk', 'started', 'ended', 'rate2', 'rate3'];
|
||||||
|
@ -110,6 +113,24 @@ export default class Controller extends Section {
|
||||||
return {[param]: value};
|
return {[param]: value};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
recalculateRate2(price) {
|
||||||
|
if (!price.id || !price.rate3) return;
|
||||||
|
|
||||||
|
const query = 'FixedPrices/getRate2';
|
||||||
|
const params = {
|
||||||
|
fixedPriceId: price.id,
|
||||||
|
rate3: price.rate3
|
||||||
|
};
|
||||||
|
this.$http.get(query, {params})
|
||||||
|
.then(res => {
|
||||||
|
const rate2 = res.data;
|
||||||
|
if (rate2) {
|
||||||
|
price.rate2 = rate2;
|
||||||
|
this.upsertPrice(price);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ngModule.vnComponent('vnFixedPrice', {
|
ngModule.vnComponent('vnFixedPrice', {
|
||||||
|
|
|
@ -3,5 +3,3 @@ Search prices by item ID or code: Buscar por ID de artículo o código
|
||||||
Search fixed prices: Buscar precios fijados
|
Search fixed prices: Buscar precios fijados
|
||||||
Add fixed price: Añadir precio fijado
|
Add fixed price: Añadir precio fijado
|
||||||
This row will be removed: Esta linea se eliminará
|
This row will be removed: Esta linea se eliminará
|
||||||
Price By Unit: Precio Por Unidad
|
|
||||||
Price By Package: Precio Por Paquete
|
|
Loading…
Reference in New Issue