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