feat: conversion art. A1 a A2 refs #4979
gitea/salix/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Carlos Andrés 2024-05-09 14:24:20 +02:00
parent d6451a94e3
commit cc941de606
2 changed files with 48 additions and 53 deletions

View File

@ -1,7 +1,7 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_devalueA2`( CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_devalueA2`(
vSelf INT,
vShelvingFK VARCHAR(10), vShelvingFK VARCHAR(10),
vItemFk INT,
vBuyingValue DECIMAL(10,4), vBuyingValue DECIMAL(10,4),
vQuantity INT vQuantity INT
) )
@ -11,8 +11,8 @@ BEGIN
* Si no existe el item A2 lo crea y genera los movimientos de las entradas * Si no existe el item A2 lo crea y genera los movimientos de las entradas
* de almacén y shelvings correspondientes * de almacén y shelvings correspondientes
* *
* @param vSelf Id de artículo a devaluar
* @param vShelvingFK Ubicación actual del artículo * @param vShelvingFK Ubicación actual del artículo
* @param vItemFk Id de artículo a devaluar
* @param vBuyingValue Nuevo precio de coste * @param vBuyingValue Nuevo precio de coste
*/ */
DECLARE vItemA2Fk INT; DECLARE vItemA2Fk INT;
@ -26,7 +26,7 @@ BEGIN
DECLARE vCacheFk INT; DECLARE vCacheFk INT;
DECLARE vLastEntryFk INT; DECLARE vLastEntryFk INT;
DECLARE vCurrentVisible INT; DECLARE vCurrentVisible INT;
DECLARE vInventoryTravelFk INT; DECLARE vDevalueTravelFk INT;
DECLARE vCurdate DATE; DECLARE vCurdate DATE;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
@ -35,7 +35,7 @@ BEGIN
RESIGNAL; RESIGNAL;
END; END;
IF (SELECT TRUE FROM item WHERE id = vItemFk AND (category <> 'A1' OR category IS NULL)) THEN IF (SELECT TRUE FROM item WHERE id = vSelf AND (category <> 'A1' OR category IS NULL)) THEN
CALL util.throw('Item has not category A1'); CALL util.throw('Item has not category A1');
END IF; END IF;
@ -47,9 +47,13 @@ BEGIN
CALL util.throw ('Operator has not a valid warehouse'); CALL util.throw ('Operator has not a valid warehouse');
END IF; END IF;
IF vQuantity <= 0 OR vQuantity IS NULL THEN
CALL util.throw ('The quantity is incorrect');
END IF;
SELECT util.VN_CURDATE() INTO vCurdate; SELECT util.VN_CURDATE() INTO vCurdate;
SELECT t.id INTO vInventoryTravelFk SELECT t.id INTO vDevalueTravelFk
FROM travel t FROM travel t
JOIN travelConfig tc JOIN travelConfig tc
WHERE t.shipped = vCurdate WHERE t.shipped = vCurdate
@ -59,7 +63,7 @@ BEGIN
AND t.agencyModeFk = tc.devalueAgencyModeFk AND t.agencyModeFk = tc.devalueAgencyModeFk
LIMIT 1; LIMIT 1;
IF NOT vInventoryTravelFk OR vInventoryTravelFk IS NULL THEN IF NOT vDevalueTravelFk OR vDevalueTravelFk IS NULL THEN
INSERT INTO travel ( INSERT INTO travel (
shipped, shipped,
landed, landed,
@ -76,14 +80,14 @@ BEGIN
TRUE, TRUE,
tc.devalueAgencyModeFk tc.devalueAgencyModeFk
FROM travelConfig tc; FROM travelConfig tc;
SET vInventoryTravelFk = LAST_INSERT_ID(); SET vDevalueTravelFk = LAST_INSERT_ID();
END IF; END IF;
SELECT id, dated INTO vTargetEntryFk, vTargetEntryDate SELECT id, DATE(dated) INTO vTargetEntryFk, vTargetEntryDate
FROM `entry` e FROM `entry` e
WHERE created = vCurdate WHERE DATE(dated) = vCurdate
AND typeFk ='devaluation' AND typeFk ='devaluation'
AND travelFk = vInventoryTravelFk AND travelFk = vDevalueTravelFk
ORDER BY created DESC ORDER BY created DESC
LIMIT 1; LIMIT 1;
@ -92,16 +96,24 @@ BEGIN
SELECT b.entryFk, bu.buyFk INTO vLastEntryFk,vLastBuyFk SELECT b.entryFk, bu.buyFk INTO vLastEntryFk,vLastBuyFk
FROM tmp.buyUltimate bu FROM tmp.buyUltimate bu
JOIN vn.buy b ON b.id =bu.buyFk JOIN vn.buy b ON b.id =bu.buyFk
WHERE bu.itemFk = vItemFk WHERE bu.itemFk = vSelf
AND bu.warehouseFk = vWarehouseFk; AND bu.warehouseFk = vWarehouseFk;
SELECT id,visible INTO vTargetItemShelvingFk,vCurrentVisible IF vLastEntryFk IS NULL OR vLastBuyFk IS NULL THEN
CALL util.throw ('The item has not a buy');
END IF;
SELECT id,visible INTO vTargetItemShelvingFk, vCurrentVisible
FROM itemShelving FROM itemShelving
WHERE shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci WHERE shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci
AND itemFk = vItemFk AND itemFk = vSelf
LIMIT 1; LIMIT 1;
IF vQuantity >= vCurrentVisible THEN IF vCurrentVisible IS NULL THEN
CALL util.throw ('The shelving has not a visible for this item');
END IF;
IF vQuantity > vCurrentVisible THEN
CALL util.throw('Quantity is greater than visible'); CALL util.throw('Quantity is greater than visible');
END IF; END IF;
@ -119,7 +131,7 @@ BEGIN
clonedFrom, clonedFrom,
typeFk typeFk
) )
SELECT vInventoryTravelFk, SELECT vDevalueTravelFk,
supplierFk, supplierFk,
vCurdate, vCurdate,
commission, commission,
@ -149,7 +161,7 @@ BEGIN
i.EmbalageCode, i.EmbalageCode,
i.quality i.quality
FROM item i FROM item i
WHERE i.id = vItemFk WHERE i.id = vSelf
)i2 ON i2.name <=> i.name )i2 ON i2.name <=> i.name
AND i2.subname <=> i.subname AND i2.subname <=> i.subname
AND i2.value5 <=> i.value5 AND i2.value5 <=> i.value5
@ -193,18 +205,6 @@ BEGIN
isActive, isActive,
longName, longName,
subName, subName,
tag5,
value5,
tag6,
value6,
tag7,
value7,
tag8,
value8,
tag9,
value9,
tag10,
value10,
minimum, minimum,
upToDown, upToDown,
supplyResponseFk, supplyResponseFk,
@ -251,18 +251,6 @@ BEGIN
isActive, isActive,
longName, longName,
subName, subName,
tag5,
value5,
tag6,
value6,
tag7,
value7,
tag8,
value8,
tag9,
value9,
tag10,
value10,
minimum, minimum,
upToDown, upToDown,
supplyResponseFk, supplyResponseFk,
@ -283,12 +271,17 @@ BEGIN
recycledPlastic, recycledPlastic,
nonRecycledPlastic nonRecycledPlastic
FROM item FROM item
WHERE id = vItemFk; WHERE id = vSelf;
SET vItemA2Fk = LAST_INSERT_ID(); SET vItemA2Fk = LAST_INSERT_ID();
INSERT INTO itemTag (itemFk, tagFk, `value`, intValue, priority, editorFk)
SELECT vItemA2Fk, tagFk, `value`, intValue, priority, editorFk
FROM itemTag
WHERE id = vSelf;
UPDATE itemTaxCountry itc UPDATE itemTaxCountry itc
JOIN itemTaxCountry itc2 ON itc2.itemFk = vItemFk JOIN itemTaxCountry itc2 ON itc2.itemFk = vSelf
AND itc2.countryFk = itc.countryFk AND itc2.countryFk = itc.countryFk
SET itc2.taxClassFk = itc.taxClassFk SET itc2.taxClassFk = itc.taxClassFk
WHERE itc.id = vItemA2Fk; WHERE itc.id = vItemA2Fk;
@ -296,7 +289,7 @@ BEGIN
INSERT INTO itemBotanical (itemFk, genusFk, specieFk) INSERT INTO itemBotanical (itemFk, genusFk, specieFk)
SELECT vItemA2Fk, genusFk, specieFk SELECT vItemA2Fk, genusFk, specieFk
FROM itemBotanical FROM itemBotanical
WHERE itemFk = vItemFk; WHERE itemFk = vSelf;
END IF; END IF;
IF vQuantity = vCurrentVisible THEN IF vQuantity = vCurrentVisible THEN
@ -334,7 +327,7 @@ BEGIN
SELECT vTargetEntryFk, SELECT vTargetEntryFk,
itemFk, itemFk,
- LEAST(vQuantity, vCurrentVisible), - LEAST(vQuantity, vCurrentVisible),
vBuyingValue, buyingValue,
freightValue, freightValue,
TRUE, TRUE,
stickers, stickers,
@ -381,7 +374,7 @@ BEGIN
FROM vn.buy FROM vn.buy
WHERE id = vLastBuyFk; WHERE id = vLastBuyFk;
INSERT INTO itemShelving ( INSERT IGNORE INTO itemShelving (
itemFk, itemFk,
shelvingFk, shelvingFk,
visible, visible,
@ -392,15 +385,17 @@ BEGIN
isChecked) isChecked)
SELECT vItemA2Fk, SELECT vItemA2Fk,
shelvingFk, shelvingFk,
vQuantity, vQuantity ,
`grouping`, `grouping`,
packing, packing,
packagingFk, packagingFk,
account.myUser_getId(), account.myUser_getId(),
isChecked isChecked
FROM itemShelving FROM itemShelving
WHERE itemFK = vItemFk WHERE itemFK = vSelf
AND shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci; AND shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci
ON DUPLICATE KEY UPDATE
visible = vQuantity + VALUES(visible);
COMMIT; COMMIT;
CALL cache.visible_refresh(vCacheFk, TRUE, vWarehouseFk); CALL cache.visible_refresh(vCacheFk, TRUE, vWarehouseFk);