salix/db/routines/vn2008/procedures/entryFromOrder.sql

56 lines
1.8 KiB
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`entryFromOrder`(IN vShipmentWarehouse INTEGER, IN vLandingWarehouse INTEGER, IN vItem INTEGER,
IN vAmount INTEGER,IN vVolume INTEGER,vCost DECIMAL(10,2), IN vRetailedPrice DECIMAL(10,2), vInOutDate DATE)
BEGIN
DECLARE vTravel INT;
DECLARE vEntry INT;
DECLARE vBucket VARCHAR(10);
-- seleccionamos travel
SELECT id, Id_Entrada INTO vTravel, vEntry
FROM travel t LEFT JOIN Entradas e ON t.id = e.travel_id
WHERE t.landing = vInOutDate AND t.shipment = vInOutDate AND t.warehouse_id_out = vShipmentWarehouse
AND t.warehouse_id = vLandingWarehouse AND agency_id = 15
LIMIT 1;
-- creamos el travel si es necesario
IF NOT IFNULL(vTravel,0) THEN
INSERT INTO travel (shipment, landing, warehouse_id, warehouse_id_out, agency_id)
VALUES (vInOutDate, vInOutDate, vLandingWarehouse, vShipmentWarehouse, 15);
SELECT LAST_INSERT_ID() INTO vTravel;
END IF;
-- creamos la Entrada si es necesario
IF NOT IFNULL(vEntry,0) THEN
INSERT INTO Entradas (Id_Proveedor, travel_id)
VALUES (13, vTravel); -- proveedor 'MOVIMIENTO ALMACEN'
SELECT LAST_INSERT_ID() INTO vEntry;
END IF;
-- creamos el cubo si es necesario
SELECT Id_Cubo INTO vBucket FROM Cubos WHERE Volumen = vVolume LIMIT 1;
IF NOT IFNULL(vBucket,'') > '' THEN
INSERT INTO Cubos (Id_Cubo, Volumen)
VALUES (CONCAT('dm',vVolume/1000), vVolume);
SELECT LAST_INSERT_ID() INTO vBucket;
END IF;
INSERT INTO Compres(Id_Article,Cantidad, Id_Entrada, Id_Cubo, Packing, `grouping`, caja, Costefijo, Portefijo, Embalajefijo,
Comisionfija, Tarifa2, Tarifa3)
VALUES(vItem,
vAmount,
vEntry,
vBucket,
1,
1,
0,
vCost,
0,
0,
0,
vRetailedPrice,
vRetailedPrice);
END$$
DELIMITER ;