55 lines
1.9 KiB
SQL
55 lines
1.9 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entryWithItem`(vShipmentWarehouse INT, vLandingWarehouse INT,vSale INT, vVolume INT, netCost DECIMAL(10,2), vInOutDate DATE)
|
|
BEGIN
|
|
|
|
DECLARE vTravel INT;
|
|
DECLARE vEntry INT;
|
|
DECLARE vBucket VARCHAR(10);
|
|
DECLARE vSupplierFk INT;
|
|
|
|
SET vSupplierFk = IF (vLandingWarehouse = 1, 850, 963);
|
|
-- seleccionamos travel
|
|
SELECT t.id, e.id INTO vTravel, vEntry
|
|
FROM travel t LEFT JOIN entry e ON t.id = e.travelFk
|
|
WHERE t.landed = vInOutDate AND t.shipped = vInOutDate AND t.warehouseOutFk = vShipmentWarehouse
|
|
AND t.warehouseInFk = vLandingWarehouse AND t.agencyModeFk IS NULL AND e.supplierFk = vSupplierFk
|
|
LIMIT 1;
|
|
|
|
-- creamos el travel si es necesario
|
|
IF IFNULL(vTravel, FALSE) = FALSE THEN
|
|
INSERT INTO travel (shipped, landed, warehouseInFk, warehouseOutFk)
|
|
VALUES (vInOutDate, vInOutDate, vLandingWarehouse, vShipmentWarehouse);
|
|
SELECT LAST_INSERT_ID() INTO vTravel;
|
|
END IF;
|
|
|
|
-- creamos la Entrada si es necesario
|
|
IF IFNULL(vEntry, FALSE) = FALSE THEN
|
|
INSERT INTO entry (supplierFk, travelFk)
|
|
VALUES (vSupplierFk, vTravel); -- proveedor 'CONFECCION ARTIFICIAL'
|
|
SELECT LAST_INSERT_ID() INTO vEntry;
|
|
END IF;
|
|
|
|
-- creamos el cubo si es necesario
|
|
SELECT id INTO vBucket FROM packaging WHERE volume = vVolume LIMIT 1;
|
|
IF vBucket IS NULL THEN
|
|
INSERT INTO packaging (id, volume)
|
|
VALUES (CONCAT('dm',vVolume/1000), vVolume);
|
|
-- SELECT LAST_INSERT_ID() INTO vBucket;
|
|
SELECT id INTO vBucket FROM packaging WHERE volume = vVolume LIMIT 1;
|
|
END IF;
|
|
|
|
INSERT INTO buy(itemFk,quantity, entryFk, packagingFk, packing, stickers, buyingValue, price2, price3)
|
|
SELECT itemFk,
|
|
quantity,
|
|
vEntry,
|
|
vBucket,
|
|
1 packing,
|
|
quantity,
|
|
netCost,
|
|
s.price,
|
|
s.price
|
|
FROM sale s
|
|
WHERE s.id = vSale;
|
|
END$$
|
|
DELIMITER ;
|