This commit is contained in:
parent
682a75ac76
commit
13abed3d00
|
@ -1,15 +0,0 @@
|
|||
CREATE TABLE `vn`.`device` (
|
||||
`id` INT NOT NULL,
|
||||
`sn` VARCHAR(50) NULL,
|
||||
`model` VARCHAR(50) NULL,
|
||||
`userFk` INT(10) UNSIGNED NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `device_fk1_idx` (`userFk` ASC),
|
||||
CONSTRAINT `device_fk1`
|
||||
FOREIGN KEY (`userFk`)
|
||||
REFERENCES `account`.`user` (`id`)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION);
|
||||
|
||||
ALTER TABLE `vn`.`device`
|
||||
CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT ;
|
|
@ -1,74 +0,0 @@
|
|||
USE `nst`;
|
||||
DROP procedure IF EXISTS `nodeAdd`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `nst`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `nodeAdd`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vParentFk` INT, IN `vChild` VARCHAR(100))
|
||||
BEGIN
|
||||
DECLARE vSql TEXT;
|
||||
DECLARE vTableClone VARCHAR(45);
|
||||
|
||||
SET vTableClone = CONCAT(vTable, 'Clone');
|
||||
|
||||
CALL util.exec(CONCAT('DROP TEMPORARY TABLE IF EXISTS tmp.', vTableClone));
|
||||
CALL util.exec(CONCAT(
|
||||
'CREATE TEMPORARY TABLE tmp.', vTableClone,
|
||||
' ENGINE = MEMORY',
|
||||
' SELECT * FROM ', vScheme, '.', vTable
|
||||
));
|
||||
|
||||
CALL util.exec(CONCAT(
|
||||
'SELECT COUNT(c.id) INTO @childs',
|
||||
' FROM ', vScheme, '.', vTable, ' p',
|
||||
' LEFT JOIN tmp.', vTableClone, ' c ON c.lft',
|
||||
' BETWEEN p.lft AND p.rgt AND c.id != ', vParentFk,
|
||||
' WHERE p.id = ', vParentFk
|
||||
));
|
||||
|
||||
IF @childs = 0 THEN
|
||||
CALL util.exec(CONCAT(
|
||||
'SELECT lft INTO @vLeft',
|
||||
' FROM ', vScheme, '.', vTable,
|
||||
' WHERE id = ', vParentFk
|
||||
));
|
||||
ELSE
|
||||
CALL util.exec(CONCAT(
|
||||
'SELECT c.rgt INTO @vLeft',
|
||||
' FROM ', vScheme, '.', vTable, ' p',
|
||||
' JOIN tmp.', vTableClone, ' c ON c.depth = p.depth + 1'
|
||||
' AND c.lft BETWEEN p.lft AND p.rgt',
|
||||
' WHERE p.id = ', vParentFk,
|
||||
' ORDER BY c.lft',
|
||||
' DESC LIMIT 1'
|
||||
));
|
||||
END IF;
|
||||
|
||||
CALL util.exec(CONCAT(
|
||||
'UPDATE ', vScheme, '.', vTable, ' SET rgt = rgt + 2',
|
||||
' WHERE rgt > @vLeft',
|
||||
' ORDER BY rgt DESC'
|
||||
));
|
||||
CALL util.exec(CONCAT(
|
||||
'UPDATE ', vScheme, '.', vTable, ' SET lft = lft + 2',
|
||||
' WHERE lft > @vLeft',
|
||||
' ORDER BY lft DESC'
|
||||
));
|
||||
|
||||
SET vChild = REPLACE(vChild, "'", "\\'");
|
||||
|
||||
CALL util.exec(CONCAT(
|
||||
'INSERT INTO ', vScheme, '.', vTable, ' (name, lft, rgt)',
|
||||
' VALUES ("', vChild, '", @vLeft + 1, @vLeft + 2)'
|
||||
));
|
||||
|
||||
-- CALL util.exec(CONCAT(
|
||||
-- 'SELECT id, name, lft, rgt, depth, sons',
|
||||
-- ' FROM ', vScheme, '.', vTable,
|
||||
-- ' WHERE id = LAST_INSERT_ID()'
|
||||
-- ));
|
||||
|
||||
CALL util.exec(CONCAT('DROP TEMPORARY TABLE tmp.', vTableClone));
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -1,28 +0,0 @@
|
|||
DROP procedure IF EXISTS `vn`.`zoneNest`;
|
||||
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`zoneNest`()
|
||||
BEGIN
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.zoneGeo;
|
||||
CREATE TEMPORARY TABLE tmp.zoneGeo
|
||||
(id INT AUTO_INCREMENT PRIMARY KEY)
|
||||
ENGINE = MEMORY
|
||||
SELECT * FROM vn.zoneGeo;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.country;
|
||||
CREATE TEMPORARY TABLE tmp.country
|
||||
SELECT id FROM country
|
||||
WHERE country IN('España exento');
|
||||
|
||||
CALL vn.zoneNestCountry();
|
||||
CALL vn.zoneNestProvince();
|
||||
CALL vn.zoneNestTown();
|
||||
CALL vn.zoneNestPostcode();
|
||||
CALL vn.nestTree('tmp', 'zoneGeo', 'vn', 'zoneGeo');
|
||||
|
||||
DROP TEMPORARY TABLE
|
||||
tmp.zoneGeo,
|
||||
tmp.country;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
|
@ -1,55 +0,0 @@
|
|||
DROP procedure IF EXISTS `vn`.`zoneNestCountry`;
|
||||
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`zoneNestCountry`()
|
||||
BEGIN
|
||||
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vParent INT DEFAULT 1;
|
||||
DECLARE vGeoFk INT;
|
||||
DECLARE vChildFk INT;
|
||||
DECLARE vChildName VARCHAR(100);
|
||||
DECLARE countryCur CURSOR FOR
|
||||
SELECT 1, c.id, c.`country`
|
||||
FROM vn.country c
|
||||
JOIN tmp.country tc ON tc.id = c.id
|
||||
ORDER BY c.`country`;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
-- Remove existing countries
|
||||
DELETE zg FROM vn.country c
|
||||
JOIN tmp.country tc ON tc.id = c.id
|
||||
JOIN tmp.zoneGeo zg ON zg.id = c.geoFk;
|
||||
|
||||
-- Reset country geoFk
|
||||
UPDATE vn.country c
|
||||
JOIN tmp.country tc ON tc.id = c.id
|
||||
SET c.geoFk = NULL
|
||||
WHERE c.geoFk IS NOT NULL;
|
||||
|
||||
-- > Country cursor start
|
||||
OPEN countryCur;
|
||||
|
||||
countryLoop: LOOP
|
||||
SET vDone = FALSE;
|
||||
|
||||
FETCH countryCur INTO vParent, vChildFk, vChildName;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE countryLoop;
|
||||
END IF;
|
||||
|
||||
CALL nst.nodeAdd('tmp', 'zoneGeo', vParent, vChildName);
|
||||
END LOOP;
|
||||
CLOSE countryCur;
|
||||
-- < Country cursor end
|
||||
|
||||
UPDATE country c
|
||||
JOIN tmp.zoneGeo z ON z.name = c.country
|
||||
SET c.geoFk = z.id
|
||||
WHERE c.geoFk IS NULL;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
DROP procedure IF EXISTS `vn`.`zoneNestPostcode`;
|
||||
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`zoneNestPostcode`()
|
||||
BEGIN
|
||||
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vParent INT DEFAULT 1;
|
||||
DECLARE vGeoFk INT;
|
||||
DECLARE vChildFk INT;
|
||||
DECLARE vChildName VARCHAR(100);
|
||||
DECLARE postcodeCur CURSOR FOR
|
||||
SELECT t.geoFk, pc.`code`, pc.`code`
|
||||
FROM vn.postCode pc
|
||||
JOIN vn.town t ON t.id = pc.townFk
|
||||
JOIN vn.province p ON p.id = t.provinceFk
|
||||
JOIN tmp.country tc ON tc.id = p.countryFk
|
||||
ORDER BY t.geoFk, pc.`code`;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
-- Remove existing postCodes from zoneGeo
|
||||
DELETE zg FROM vn.postCode pc
|
||||
JOIN vn.town t ON t.id = pc.townFk
|
||||
JOIN vn.province p ON p.id = t.provinceFk
|
||||
JOIN tmp.country tc ON tc.id = p.countryFk
|
||||
JOIN tmp.zoneGeo zg ON zg.id = pc.geoFk;
|
||||
|
||||
-- Reset town geoFk
|
||||
UPDATE vn.postCode pc
|
||||
JOIN vn.town t ON t.id = pc.townFk
|
||||
JOIN vn.province p ON p.id = t.provinceFk
|
||||
JOIN tmp.country tc ON tc.id = p.countryFk
|
||||
SET pc.geoFk = NULL
|
||||
WHERE pc.geoFk IS NOT NULL;
|
||||
|
||||
-- > Postcode cursor start
|
||||
OPEN postcodeCur;
|
||||
|
||||
postcodeLoop: LOOP
|
||||
SET vDone = FALSE;
|
||||
|
||||
FETCH postcodeCur INTO vParent, vChildFk, vChildName;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE postcodeLoop;
|
||||
END IF;
|
||||
|
||||
CALL nst.nodeAdd('tmp', 'zoneGeo', vParent, vChildName);
|
||||
END LOOP;
|
||||
CLOSE postcodeCur;
|
||||
-- < Postcode cursor end
|
||||
|
||||
UPDATE postCode p
|
||||
JOIN tmp.zoneGeo z ON z.name = p.code
|
||||
SET p.geoFk = z.id
|
||||
WHERE p.geoFk IS NULL;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
DROP procedure IF EXISTS `vn`.`zoneNestProvince`;
|
||||
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`zoneNestProvince`()
|
||||
BEGIN
|
||||
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vParent INT DEFAULT 1;
|
||||
DECLARE vGeoFk INT;
|
||||
DECLARE vChildFk INT;
|
||||
DECLARE vChildName VARCHAR(100);
|
||||
DECLARE provinceCur CURSOR FOR
|
||||
SELECT c.geoFk, p.id, p.`name`
|
||||
FROM province p
|
||||
JOIN tmp.country tc ON tc.id = p.countryFk
|
||||
JOIN vn.country c ON c.id = tc.id
|
||||
ORDER BY c.geoFk, p.`name`;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
-- Remove existing provinces from zoneGeo
|
||||
DELETE zg FROM vn.province p
|
||||
JOIN tmp.country tc ON tc.id = p.countryFk
|
||||
JOIN tmp.zoneGeo zg ON zg.id = p.geoFk;
|
||||
|
||||
-- Reset country geoFk
|
||||
UPDATE vn.province p
|
||||
JOIN tmp.country tc ON tc.id = p.countryFk
|
||||
SET p.geoFk = NULL
|
||||
WHERE p.geoFk IS NOT NULL;
|
||||
|
||||
-- > Province cursor start
|
||||
OPEN provinceCur;
|
||||
|
||||
provinceLoop: LOOP
|
||||
SET vDone = FALSE;
|
||||
|
||||
FETCH provinceCur INTO vParent, vChildFk, vChildName;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE provinceLoop;
|
||||
END IF;
|
||||
|
||||
CALL nst.nodeAdd('tmp', 'zoneGeo', vParent, vChildName);
|
||||
END LOOP;
|
||||
CLOSE provinceCur;
|
||||
-- < Province cursor end
|
||||
|
||||
UPDATE province p
|
||||
JOIN tmp.zoneGeo z ON z.name = p.name
|
||||
SET p.geoFk = z.id
|
||||
WHERE p.geoFk IS NULL;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
DROP procedure IF EXISTS `vn`.`zoneNestTown`;
|
||||
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`zoneNestTown`()
|
||||
BEGIN
|
||||
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vParent INT DEFAULT 1;
|
||||
DECLARE vGeoFk INT;
|
||||
DECLARE vChildFk INT;
|
||||
DECLARE vChildName VARCHAR(100);
|
||||
DECLARE townCur CURSOR FOR
|
||||
SELECT p.geoFk, t.id, t.`name`
|
||||
FROM vn.town t
|
||||
JOIN vn.province p ON p.id = t.provinceFk
|
||||
JOIN tmp.country tc ON tc.id = p.countryFk
|
||||
ORDER BY p.geoFk, t.`name`;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
-- Remove existing towns from zoneGeo
|
||||
DELETE zg FROM vn.town t
|
||||
JOIN vn.province p ON p.id = t.provinceFk
|
||||
JOIN tmp.country tc ON tc.id = p.countryFk
|
||||
JOIN tmp.zoneGeo zg ON zg.id = t.geoFk;
|
||||
|
||||
-- Reset town geoFk
|
||||
UPDATE vn.town t
|
||||
JOIN vn.province p ON p.id = t.provinceFk
|
||||
JOIN tmp.country tc ON tc.id = p.countryFk
|
||||
SET t.geoFk = NULL
|
||||
WHERE t.geoFk IS NOT NULL;
|
||||
|
||||
-- > Town cursor start
|
||||
OPEN townCur;
|
||||
|
||||
townLoop: LOOP
|
||||
SET vDone = FALSE;
|
||||
|
||||
FETCH townCur INTO vParent, vChildFk, vChildName;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE townLoop;
|
||||
END IF;
|
||||
|
||||
CALL nst.nodeAdd('tmp', 'zoneGeo', vParent, vChildName);
|
||||
END LOOP;
|
||||
CLOSE townCur;
|
||||
-- < Town cursor end
|
||||
|
||||
UPDATE town t
|
||||
JOIN tmp.zoneGeo z ON z.name = t.name
|
||||
LEFT JOIN province p ON p.geoFk = z.id
|
||||
SET t.geoFk = z.id
|
||||
WHERE p.geoFk IS NULL;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
|
||||
CREATE
|
||||
OR REPLACE ALGORITHM = UNDEFINED
|
||||
DEFINER = `root`@`%`
|
||||
SQL SECURITY DEFINER
|
||||
VIEW `vn`.`ticketGetVolume` AS
|
||||
SELECT
|
||||
`s`.`ticketFk` AS `ticketFk`,
|
||||
`t`.`routeFk` AS `routeFk`,
|
||||
`s`.`id` AS `saleFk`,
|
||||
`t`.`shipped` AS `Fecha`,
|
||||
(((`s`.`quantity` * `r`.`cm3`) * `i`.`compression`) / 1000000) AS `volume`
|
||||
FROM
|
||||
(((`vn`.`sale` `s`
|
||||
JOIN `vn`.`item` `i` ON ((`i`.`id` = `s`.`itemFk`)))
|
||||
JOIN `vn`.`ticket` `t` ON ((`t`.`id` = `s`.`ticketFk`)))
|
||||
JOIN `bi`.`rotacion` `r` ON (((`r`.`Id_Article` = `s`.`itemFk`)
|
||||
AND (`r`.`warehouse_id` = `t`.`warehouseFk`))));
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
|
||||
DROP function IF EXISTS `vn`.`ticketTotalVolume`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `vn`$$
|
||||
CREATE DEFINER=`root`@`%` FUNCTION `ticketTotalVolume`(vTicketId INT) RETURNS decimal(10,3)
|
||||
READS SQL DATA
|
||||
BEGIN
|
||||
-- Devuelte el volumen total del ticket sumado
|
||||
-- DECLARE vWarehouseId INTEGER;
|
||||
-- DECLARE vShippedDate DATE;
|
||||
DECLARE vVolume DECIMAL(10,3);
|
||||
/*
|
||||
SELECT warehouseFk, shipped INTO vWarehouseId,vShippedDate FROM vn.ticket WHERE id = vTicketId;
|
||||
|
||||
SELECT IFNULL(SUM(s.quantity * i.compression * r.cm3)/1000000,0) INTO vVolume
|
||||
FROM sale s
|
||||
JOIN vn.item i ON i.id = s.itemFk
|
||||
JOIN bi.rotacion r on r.Id_Article = s.itemFk AND r.warehouse_id = vWarehouseId
|
||||
WHERE s.ticketFk = vTicketId;
|
||||
*/
|
||||
SELECT sum(volume) INTO vVolume
|
||||
FROM ticketGetVolume
|
||||
WHERE ticketFk = vTicketId;
|
||||
RETURN vVolume;
|
||||
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
|
||||
DROP procedure IF EXISTS `vn`.`available_calc`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`available_calc`(
|
||||
vDate DATE,
|
||||
vAddress INT,
|
||||
vAgencyMode INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Calculates the available for all available stores
|
||||
* according to the given parameters.
|
||||
*
|
||||
* @param vDate The delivery date
|
||||
* @param vAddress The delivery address id
|
||||
* @param vAgencyMode The shipping agency
|
||||
* @return tmp.availableCalc(calcFk) The available cache ids
|
||||
*/
|
||||
DECLARE vCalcFk INT;
|
||||
DECLARE vShipment DATE;
|
||||
DECLARE vWarehouse INT;
|
||||
DECLARE vDone BOOL;
|
||||
|
||||
DECLARE cWarehouses CURSOR FOR
|
||||
SELECT warehouseFk, shipped FROM tmp.zoneGetShipped;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
||||
SET vDone = TRUE;
|
||||
|
||||
-- Establecemos los almacenes y las fechas que van a entrar al disponible
|
||||
|
||||
CALL vn.zoneGetShippedWarehouse(vDate, vAddress, vAgencyMode);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.availableCalc;
|
||||
CREATE TEMPORARY TABLE tmp.availableCalc(
|
||||
calcFk INT UNSIGNED,
|
||||
PRIMARY KEY (calcFk)
|
||||
)
|
||||
ENGINE = MEMORY;
|
||||
|
||||
OPEN cWarehouses;
|
||||
|
||||
l: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH cWarehouses INTO vWarehouse, vShipment;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE l;
|
||||
END IF;
|
||||
|
||||
CALL `cache`.available_refresh(vCalcFk, FALSE, vWarehouse, vShipment);
|
||||
|
||||
INSERT IGNORE INTO tmp.availableCalc
|
||||
SET calcFk = vCalcFk;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cWarehouses;
|
||||
DROP TEMPORARY TABLE tmp.zoneGetShipped;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
|
||||
DROP procedure IF EXISTS `vn`.`catalog_calcFromItem`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`catalog_calcFromItem`(
|
||||
vLanded DATE,
|
||||
vAddressFk INT,
|
||||
vAgencyModeFk INT,
|
||||
vItemFk INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Calculates available and price for a single item.
|
||||
*
|
||||
* @param vItemFk The item id
|
||||
* @return tmp.ticketCalculateItem
|
||||
* @return tmp.ticketComponentPrice
|
||||
* @return tmp.ticketComponent
|
||||
* @return tmp.ticketLot
|
||||
* @return tmp.zoneGetShipped
|
||||
*/
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.item;
|
||||
CREATE TEMPORARY TABLE tmp.item
|
||||
ENGINE = MEMORY
|
||||
SELECT vItemFk itemFk;
|
||||
|
||||
CALL ticketCalculate(vLanded, vAddressFk, vAgencyModeFk);
|
||||
DROP TEMPORARY TABLE tmp.item;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,41 +0,0 @@
|
|||
|
||||
DROP procedure IF EXISTS `hedera`.`catalog_calcFromMyAddress`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`catalog_calcFromMyAddress`(vDelivery DATE, vAddress INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the available items list.
|
||||
*
|
||||
* @param vDelivery Delivery date
|
||||
* @param vAddress Address id
|
||||
* @return tmp.ticketCalculateItem
|
||||
* @return tmp.ticketComponentPrice
|
||||
* @return tmp.ticketComponent
|
||||
* @return tmp.ticketLot
|
||||
* @return tmp.zoneGetShipped
|
||||
*/
|
||||
DECLARE vAgencyMode INT;
|
||||
|
||||
SELECT a.agencyModeFk
|
||||
INTO vAgencyMode
|
||||
FROM myClient c
|
||||
JOIN vn.address a ON a.clientFk = c.id
|
||||
WHERE a.id = vAddress;
|
||||
|
||||
CALL vn.available_calc(vDelivery, vAddress, vAgencyMode);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.item;
|
||||
CREATE TEMPORARY TABLE tmp.item
|
||||
(INDEX (itemFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT c.item_id itemFk
|
||||
FROM `cache`.available c
|
||||
JOIN tmp.availableCalc a ON a.calcFk = c.calc_id
|
||||
WHERE c.available > 0
|
||||
GROUP BY c.item_id;
|
||||
|
||||
CALL vn.ticketCalculate(vDelivery, vAddress, vAgencyMode);
|
||||
|
||||
DROP TEMPORARY TABLE tmp.item;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,398 +0,0 @@
|
|||
|
||||
USE `vn2008`;
|
||||
DROP procedure IF EXISTS `vn2008`.`bionic_available_`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `vn2008`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `__bionic_available_`(
|
||||
vDate DATE,
|
||||
vAddress INT,
|
||||
vAgency INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Calcula el disponible para un conjunto de almacenes y fechas
|
||||
* devueltos por el procedimiento agencyHourGetShipped()
|
||||
*
|
||||
* @deprecated Use vn.available_calc()
|
||||
* @table t_bionic_available Tabla con los ids de cache
|
||||
*/
|
||||
DECLARE vAvailableCalc INT;
|
||||
DECLARE vShipment DATE;
|
||||
DECLARE vAgencyId INT;
|
||||
DECLARE vWh INT;
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE cTravelTree CURSOR FOR
|
||||
SELECT warehouseFk, shipped FROM tmp.agencyHourGetShipped;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
-- Establecemos los almacenes y las fechas que van a entrar al disponible
|
||||
|
||||
SELECT agency_id INTO vAgencyId
|
||||
FROM Agencias WHERE Id_Agencia = vAgency;
|
||||
|
||||
CALL vn.agencyHourGetShipped (vDate, vAddress, vAgencyId);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS t_bionic_available;
|
||||
CREATE TEMPORARY TABLE t_bionic_available(
|
||||
calc_id INT UNSIGNED,
|
||||
PRIMARY KEY (calc_id)
|
||||
)
|
||||
ENGINE = MEMORY;
|
||||
|
||||
OPEN cTravelTree;
|
||||
l: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH cTravelTree INTO vWh, vShipment;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE l;
|
||||
END IF;
|
||||
|
||||
CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWh, vShipment);
|
||||
|
||||
INSERT IGNORE INTO t_bionic_available
|
||||
SET calc_id = vAvailableCalc;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cTravelTree;
|
||||
DROP TEMPORARY TABLE tmp.agencyHourGetShipped;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
;
|
||||
|
||||
|
||||
USE `hedera`;
|
||||
DROP procedure IF EXISTS `hedera`.`bionic_from_item`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `hedera`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `__bionic_from_item`(vItem INT)
|
||||
BEGIN
|
||||
DECLARE vDate DATE;
|
||||
DECLARE vAddress INT;
|
||||
DECLARE vAgencyMode INT;
|
||||
|
||||
SELECT sent, addressFk, agencyModeFk
|
||||
INTO vDate, vAddress, vAgencyMode
|
||||
FROM myBasket;
|
||||
|
||||
CALL vn2008.bionic_from_item(vDate, vAddress, vAgencyMode, vItem);
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
;
|
||||
|
||||
|
||||
USE `vn2008`;
|
||||
DROP procedure IF EXISTS `vn2008`.`bionic_from_order`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `vn2008`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `__bionic_from_order`(
|
||||
v_date DATE, -- fecha de recepcion de mercancia
|
||||
v_consigna INT,
|
||||
v_agencia INT,
|
||||
v_order INT)
|
||||
BEGIN
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.bionic_calc;
|
||||
CREATE TEMPORARY TABLE tmp.bionic_calc
|
||||
(PRIMARY KEY (item_id))
|
||||
ENGINE = MEMORY
|
||||
SELECT item_id FROM order_row
|
||||
WHERE order_id = v_order GROUP BY item_id;
|
||||
|
||||
CALL bionic_calc (v_date, v_consigna, v_agencia);
|
||||
DROP TEMPORARY TABLE tmp.bionic_calc;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
;
|
||||
|
||||
|
||||
USE `hedera`;
|
||||
DROP procedure IF EXISTS `hedera`.`bionicCalcWithDate`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `hedera`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `__bionicCalcWithDate`(vDate DATE)
|
||||
BEGIN
|
||||
DECLARE vMyAddressFk INTEGER;
|
||||
DECLARE vMyAgencyModeFk INTEGER;
|
||||
|
||||
SELECT id, agencyModeFk INTO vMyAddressFk, vMyAgencyModeFk
|
||||
FROM myAddress
|
||||
WHERE isDefaultAddress;
|
||||
|
||||
CALL vn2008.bionic_calc(vDate, vMyAddressFk, vMyAgencyModeFk);
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
;
|
||||
|
||||
|
||||
USE `hedera`;
|
||||
DROP procedure IF EXISTS `hedera`.`bionic_calc`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `hedera`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `__bionic_calc`()
|
||||
BEGIN
|
||||
DECLARE vDate DATE;
|
||||
DECLARE vAddress INT;
|
||||
DECLARE vAgencyMode INT;
|
||||
|
||||
SELECT sent, addressFk, agencyModeFk
|
||||
INTO vDate, vAddress, vAgencyMode
|
||||
FROM myBasket;
|
||||
|
||||
CALL vn2008.bionic_calc(vDate, vAddress, vAgencyMode);
|
||||
|
||||
IF account.myUserGetName() = 'visitor'
|
||||
THEN
|
||||
DROP TEMPORARY TABLE tmp.bionic_component;
|
||||
UPDATE tmp.bionic_item SET price = NULL;
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
;
|
||||
|
||||
|
||||
USE `hedera`;
|
||||
DROP procedure IF EXISTS `hedera`.`itemGetAvailableOrder`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `hedera`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `__itemGetAvailableOrder`(vOrder INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the available items list with an order params.
|
||||
*
|
||||
* @table tmp.itemAvailable
|
||||
*/
|
||||
DECLARE vDelivery DATE;
|
||||
DECLARE vAddress INT;
|
||||
DECLARE vAgency INT;
|
||||
|
||||
SELECT landed, addressFk, agencyModeFk
|
||||
INTO vDelivery, vAddress, vAgency
|
||||
FROM myOrder
|
||||
WHERE id = vOrder;
|
||||
|
||||
CALL vn2008.bionic_available_ (vDelivery, vAddress, vAgency);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.itemAvailable;
|
||||
CREATE TEMPORARY TABLE tmp.itemAvailable
|
||||
(INDEX (id))
|
||||
ENGINE = MEMORY
|
||||
SELECT c.item_id id
|
||||
FROM cache.available c
|
||||
JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id
|
||||
WHERE c.available > 0
|
||||
GROUP BY c.item_id;
|
||||
|
||||
DROP TEMPORARY TABLE vn2008.t_bionic_available;
|
||||
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
;
|
||||
|
||||
|
||||
USE `hedera`;
|
||||
DROP procedure IF EXISTS `hedera`.`itemGetAvailable`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `hedera`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `__itemGetAvailable`()
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the available items list.
|
||||
*
|
||||
* @table tmp.itemAvailable
|
||||
*/
|
||||
DECLARE vDelivery DATE;
|
||||
DECLARE vAddress INT;
|
||||
DECLARE vAgency INT;
|
||||
|
||||
SELECT sent, addressFk, agencyModeFk
|
||||
INTO vDelivery, vAddress, vAgency
|
||||
FROM myBasket;
|
||||
|
||||
CALL vn2008.bionic_available_ (vDelivery, vAddress, vAgency);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.itemAvailable;
|
||||
CREATE TEMPORARY TABLE tmp.itemAvailable
|
||||
(INDEX (id))
|
||||
ENGINE = MEMORY
|
||||
SELECT c.item_id id
|
||||
FROM cache.available c
|
||||
JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id
|
||||
WHERE c.available > 0
|
||||
GROUP BY c.item_id;
|
||||
|
||||
DROP TEMPORARY TABLE vn2008.t_bionic_available;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
;
|
||||
|
||||
|
||||
USE `hedera`;
|
||||
DROP procedure IF EXISTS `hedera`.`myItemGetAvailableFromDate`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `hedera`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `__myItemGetAvailableFromDate`(vDelivery DATE)
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the available items list.
|
||||
*
|
||||
* @deprecated Use item_calcCatalogFromMyAddress()
|
||||
* @param vDelivery Delivery date
|
||||
*/
|
||||
DECLARE vAddress INT;
|
||||
DECLARE vAgencyMode INT;
|
||||
|
||||
SELECT a.agencyModeFk, a.id
|
||||
INTO vAgencyMode, vAddress
|
||||
FROM myClient c
|
||||
JOIN vn.address a ON a.id = c.defaultAddressFk;
|
||||
|
||||
CALL vn2008.bionic_available_ (vDelivery, vAddress, vAgencyMode);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.item;
|
||||
CREATE TEMPORARY TABLE tmp.item
|
||||
(INDEX (itemFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT c.item_id itemFk
|
||||
FROM cache.available c
|
||||
JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id
|
||||
WHERE c.available > 0
|
||||
GROUP BY c.item_id;
|
||||
|
||||
CALL vn.ticketCalculate(vDelivery, vAddress, vAgencyMode);
|
||||
-- -------------------
|
||||
/*SELECT b.itemFk, b.item, b.available, b.price
|
||||
FROM tmp.ticketCalculateItem b
|
||||
JOIN vn.item i ON i.id = b.itemFk
|
||||
WHERE b.available > 0
|
||||
ORDER BY i.relevancy DESC, i.name, i.size;
|
||||
|
||||
select * from tmp.ticketComponentPrice;*/
|
||||
-- -------------------
|
||||
DROP TEMPORARY TABLE vn2008.t_bionic_available;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
;
|
||||
|
||||
|
||||
USE `hedera`;
|
||||
DROP procedure IF EXISTS `hedera`.`myItemGetAvailable`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `hedera`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `__myItemGetAvailable`(vDelivery DATE, vAddress INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the available items list.
|
||||
*
|
||||
* @deprecated Use item_calcCatalogFromMyAddress()
|
||||
* @param vDelivery Delivery date
|
||||
* @param vAddress Id Address
|
||||
*/
|
||||
DECLARE vAgencyMode INT;
|
||||
|
||||
SELECT a.agencyModeFk
|
||||
INTO vAgencyMode
|
||||
FROM myClient c
|
||||
JOIN vn.address a ON a.clientFk = c.id
|
||||
WHERE a.id = vAddress;
|
||||
|
||||
CALL vn2008.bionic_available_ (vDelivery, vAddress, vAgencyMode);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.item;
|
||||
CREATE TEMPORARY TABLE tmp.item
|
||||
(INDEX (itemFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT c.item_id itemFk
|
||||
FROM cache.available c
|
||||
JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id
|
||||
WHERE c.available > 0
|
||||
GROUP BY c.item_id;
|
||||
|
||||
CALL vn.ticketCalculate(vDelivery, vAddress, vAgencyMode);
|
||||
-- -------------------
|
||||
/*SELECT b.itemFk, b.item, b.available, b.price
|
||||
FROM tmp.ticketCalculateItem b
|
||||
JOIN vn.item i ON i.id = b.itemFk
|
||||
WHERE b.available > 0
|
||||
ORDER BY i.relevancy DESC, i.name, i.size;
|
||||
|
||||
select * from tmp.ticketComponentPrice;*/
|
||||
-- -------------------
|
||||
DROP TEMPORARY TABLE vn2008.t_bionic_available;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
;
|
||||
|
||||
|
||||
USE `hedera`;
|
||||
DROP procedure IF EXISTS `hedera`.`myOrderAddItem`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `hedera`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `__myOrderAddItem`(
|
||||
vSelf INT,
|
||||
vWarehouse INT,
|
||||
vItem INT,
|
||||
vAmount INT)
|
||||
BEGIN
|
||||
/**
|
||||
* @deprecated Use myOrder_addItem()
|
||||
*/
|
||||
CALL myOrder_addItem(vSelf, vWarehouse, vItem, vAmount);
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
;
|
||||
|
||||
|
||||
USE `hedera`;
|
||||
DROP procedure IF EXISTS `hedera`.`myOrderConfirm`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `hedera`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `__myOrderConfirm`(vSelf INT)
|
||||
BEGIN
|
||||
/**
|
||||
* @deprecated Use myOrder_confirm()
|
||||
*/
|
||||
CALL myOrder_confirm(vSelf);
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
;
|
||||
|
||||
|
||||
USE `hedera`;
|
||||
DROP procedure IF EXISTS `hedera`.`myOrderNewFromDate`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `hedera`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `__myOrderNewFromDate`(
|
||||
OUT vSelf INT,
|
||||
vLandingDate DATE)
|
||||
BEGIN
|
||||
/**
|
||||
* @deprecated Use myOrder_newWithDate()
|
||||
*/
|
||||
CALL myOrder_newWithDate(vSelf, vLandingDate);
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
;
|
|
@ -1,19 +0,0 @@
|
|||
|
||||
DROP procedure IF EXISTS `hedera`.`myBasket_calcCatalogFromItem`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`myBasket_calcCatalogFromItem`(vItem INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the availability and prices for the given item
|
||||
* using current user basket parameters.
|
||||
*
|
||||
* @table tmp.item(itemFk)
|
||||
* @return tmp.ticketCalculateItem
|
||||
* @return tmp.ticketComponentPrice
|
||||
* @return tmp.ticketComponent
|
||||
* @return tmp.ticketLot
|
||||
* @return tmp.zoneGetShipped
|
||||
*/
|
||||
CALL order_calcCatalogFromItem(myBasket_getId(), vItem);
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,19 +0,0 @@
|
|||
|
||||
DROP procedure IF EXISTS `hedera`.`myBasket_calcCatalogFull`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`myBasket_calcCatalogFull`()
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the availability and prices for the given items
|
||||
* using current user basket parameters.
|
||||
*
|
||||
* @table tmp.item(itemFk)
|
||||
* @return tmp.ticketCalculateItem
|
||||
* @return tmp.ticketComponentPrice
|
||||
* @return tmp.ticketComponent
|
||||
* @return tmp.ticketLot
|
||||
* @return tmp.zoneGetShipped
|
||||
*/
|
||||
CALL order_calcCatalogFull(myBasket_getId());
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,14 +0,0 @@
|
|||
|
||||
DROP procedure IF EXISTS `hedera`.`myBasket_getAvailable`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`myBasket_getAvailable`()
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the available items list.
|
||||
*
|
||||
* @table tmp.itemAvailable
|
||||
*/
|
||||
CALL order_getAvailable(myBasket_getId());
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
|
||||
DROP procedure IF EXISTS `hedera`.`myOrder_getAvailable`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`myOrder_getAvailable`(vSelf INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the available items list.
|
||||
*
|
||||
* @param vSelf The order id
|
||||
* @table tmp.itemAvailable
|
||||
*/
|
||||
DECLARE isMine BOOL;
|
||||
|
||||
SELECT COUNT(*) INTO isMine
|
||||
FROM myOrder
|
||||
WHERE id = vSelf;
|
||||
|
||||
IF isMine THEN
|
||||
CALL order_getAvailable(vSelf);
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,105 +0,0 @@
|
|||
|
||||
DROP procedure IF EXISTS `hedera`.`order_addItem`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_addItem`(
|
||||
vSelf INT,
|
||||
vWarehouse INT,
|
||||
vItem INT,
|
||||
vAmount INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Adds an item to the order, checking availability and grouping.
|
||||
*
|
||||
* @param vSelf The order id
|
||||
* @param vWarehouse The warehouse id
|
||||
* @param vItem The item id
|
||||
* @param vAmount The amount to add
|
||||
*/
|
||||
DECLARE vRow INT;
|
||||
DECLARE vAdd INT;
|
||||
DECLARE vAvailable INT;
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vGrouping INT;
|
||||
DECLARE vRate INT;
|
||||
DECLARE vShipment DATE;
|
||||
DECLARE vPrice DECIMAL(10,2);
|
||||
DECLARE cur CURSOR FOR
|
||||
SELECT `grouping`, price, rate
|
||||
FROM tmp.ticketComponentPrice
|
||||
WHERE warehouseFk = vWarehouse
|
||||
AND itemFk = vItem
|
||||
ORDER BY `grouping` DESC;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
||||
SET vDone = TRUE;
|
||||
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
ROLLBACK;
|
||||
RESIGNAL;
|
||||
END;
|
||||
|
||||
CALL order_calcCatalogFromItem(vSelf, vItem);
|
||||
START TRANSACTION;
|
||||
|
||||
SELECT shipped INTO vShipment
|
||||
FROM tmp.zoneGetShipped
|
||||
WHERE warehouseFk = vWarehouse;
|
||||
|
||||
SELECT available INTO vAvailable
|
||||
FROM tmp.ticketLot
|
||||
WHERE warehouseFk = vWarehouse
|
||||
AND itemFk = vItem;
|
||||
|
||||
IF vAmount > IFNULL(vAvailable, 0) THEN
|
||||
CALL util.throw ('ORDER_ROW_UNAVAILABLE');
|
||||
END IF;
|
||||
|
||||
OPEN cur;
|
||||
|
||||
l: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH cur INTO vGrouping, vPrice, vRate;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE l;
|
||||
END IF;
|
||||
|
||||
SET vAdd = vAmount - MOD(vAmount, vGrouping);
|
||||
SET vAmount = vAmount - vAdd;
|
||||
|
||||
IF vAdd = 0 THEN
|
||||
ITERATE l;
|
||||
END IF;
|
||||
|
||||
INSERT INTO orderRow SET
|
||||
orderFk = vSelf,
|
||||
itemFk = vItem,
|
||||
warehouseFk = vWarehouse,
|
||||
shipment = vShipment,
|
||||
rate = vRate,
|
||||
amount = vAdd,
|
||||
price = vPrice;
|
||||
|
||||
SET vRow = LAST_INSERT_ID();
|
||||
|
||||
INSERT INTO orderRowComponent (rowFk, componentFk, price)
|
||||
SELECT vRow, c.componentFk, c.cost
|
||||
FROM tmp.ticketComponent c
|
||||
JOIN vn.component t
|
||||
ON t.id = c.componentFk
|
||||
AND (t.classRate IS NULL OR t.classRate = vRate)
|
||||
WHERE c.warehouseFk = vWarehouse
|
||||
AND c.itemFk = vItem;
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur;
|
||||
|
||||
IF vAmount > 0 THEN
|
||||
CALL util.throw ('AMOUNT_NOT_MATCH_GROUPING');
|
||||
END IF;
|
||||
|
||||
COMMIT;
|
||||
CALL vn.ticketCalculatePurge;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,36 +0,0 @@
|
|||
|
||||
DROP procedure IF EXISTS `hedera`.`order_calcCatalog`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_calcCatalog`(vSelf INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the availability and prices for order items.
|
||||
*
|
||||
* @param vSelf The order id
|
||||
* @return tmp.ticketCalculateItem
|
||||
* @return tmp.ticketComponentPrice
|
||||
* @return tmp.ticketComponent
|
||||
* @return tmp.ticketLot
|
||||
*/
|
||||
DECLARE vDate DATE;
|
||||
DECLARE vAddress INT;
|
||||
DECLARE vAgencyMode INT;
|
||||
|
||||
SELECT date_send, address_id, agency_id
|
||||
INTO vDate, vAddress, vAgencyMode
|
||||
FROM `order`
|
||||
WHERE id = vSelf;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.item;
|
||||
CREATE TEMPORARY TABLE tmp.item
|
||||
(PRIMARY KEY (itemFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT itemFk FROM orderRow
|
||||
WHERE orderFk = vSelf
|
||||
GROUP BY itemFk;
|
||||
|
||||
CALL vn.ticketCalculate(vDate, vAddress, vAgencyMode);
|
||||
|
||||
DROP TEMPORARY TABLE tmp.item;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,30 +0,0 @@
|
|||
|
||||
DROP procedure IF EXISTS `hedera`.`order_calcCatalogFromItem`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_calcCatalogFromItem`(vSelf INT, vItem INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the availability and prices for the given item
|
||||
* using the order parameters.
|
||||
*
|
||||
* @param vSelf The order id
|
||||
* @table tmp.item(itemFk)
|
||||
* @return tmp.ticketCalculateItem
|
||||
* @return tmp.ticketComponentPrice
|
||||
* @return tmp.ticketComponent
|
||||
* @return tmp.ticketLot
|
||||
* @return tmp.zoneGetShipped
|
||||
*/
|
||||
DECLARE vDate DATE;
|
||||
DECLARE vAddress INT;
|
||||
DECLARE vAgencyMode INT;
|
||||
|
||||
SELECT date_send, address_id, agency_id
|
||||
INTO vDate, vAddress, vAgencyMode
|
||||
FROM `order`
|
||||
WHERE id = vSelf;
|
||||
|
||||
CALL vn.catalog_calcFromItem(vDate, vAddress, vAgencyMode, vItem);
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
|
||||
DROP procedure IF EXISTS `hedera`.`order_calcCatalogFull`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_calcCatalogFull`(vSelf INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the availability and prices for the given items
|
||||
* using the order parameters.
|
||||
*
|
||||
* @param vSelf The order id
|
||||
* @table tmp.item(itemFk)
|
||||
* @return tmp.ticketCalculateItem
|
||||
* @return tmp.ticketComponentPrice
|
||||
* @return tmp.ticketComponent
|
||||
* @return tmp.ticketLot
|
||||
* @return tmp.zoneGetShipped
|
||||
*/
|
||||
DECLARE vDate DATE;
|
||||
DECLARE vAddress INT;
|
||||
DECLARE vAgencyMode INT;
|
||||
|
||||
SELECT date_send, address_id, agency_id
|
||||
INTO vDate, vAddress, vAgencyMode
|
||||
FROM `order`
|
||||
WHERE id = vSelf;
|
||||
|
||||
CALL vn.ticketCalculate(vDate, vAddress, vAgencyMode);
|
||||
|
||||
IF account.myUserGetName() = 'visitor'
|
||||
THEN
|
||||
DROP TEMPORARY TABLE tmp.ticketComponent;
|
||||
UPDATE tmp.ticketCalculateItem SET price = NULL;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,34 +0,0 @@
|
|||
DROP procedure IF EXISTS `hedera`.`order_getAvailable`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_getAvailable`(vSelf INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Gets the available items list.
|
||||
*
|
||||
* @param vSelf The order id
|
||||
* @table tmp.itemAvailable
|
||||
*/
|
||||
DECLARE vDelivery DATE;
|
||||
DECLARE vAddress INT;
|
||||
DECLARE vAgencyMode INT;
|
||||
|
||||
SELECT date_send, address_id, agency_id
|
||||
INTO vDelivery, vAddress, vAgencyMode
|
||||
FROM `order`
|
||||
WHERE id = vSelf;
|
||||
|
||||
CALL vn.available_calc(vDelivery, vAddress, vAgencyMode);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.itemAvailable;
|
||||
CREATE TEMPORARY TABLE tmp.itemAvailable
|
||||
(INDEX (id))
|
||||
ENGINE = MEMORY
|
||||
SELECT DISTINCT a.item_id id
|
||||
FROM `cache`.available a
|
||||
JOIN tmp.availableCalc c ON c.calcFk = a.calc_id
|
||||
WHERE a.available > 0;
|
||||
|
||||
DROP TEMPORARY TABLE tmp.availableCalc;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
|
@ -1,71 +0,0 @@
|
|||
|
||||
DROP procedure IF EXISTS `hedera`.`order_update`;
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_update`(vSelf INT)
|
||||
proc: BEGIN
|
||||
/**
|
||||
* Actualiza las líneas de un pedido.
|
||||
*
|
||||
* @param vSelf Id del pedido
|
||||
*/
|
||||
DECLARE vDate DATE;
|
||||
DECLARE vAddress INT;
|
||||
DECLARE vAgencyMode INT;
|
||||
DECLARE vNRows INT;
|
||||
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
ROLLBACK;
|
||||
RESIGNAL;
|
||||
END;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
SELECT COUNT(*) INTO vNRows
|
||||
FROM orderRow WHERE orderFk = vSelf;
|
||||
|
||||
IF vNRows > 0
|
||||
THEN
|
||||
CALL order_calcCatalog(vSelf);
|
||||
|
||||
DELETE c
|
||||
FROM orderRow r
|
||||
JOIN orderRowComponent c ON c.rowFk = r.id
|
||||
WHERE r.orderFk = vSelf;
|
||||
|
||||
UPDATE orderRow r
|
||||
LEFT JOIN tmp.ticketComponentPrice p
|
||||
ON p.warehouseFk = r.warehouseFk
|
||||
AND p.itemFk = r.itemFk
|
||||
AND p.rate = r.rate
|
||||
LEFT JOIN tmp.zoneGetShipped t
|
||||
ON t.warehouseFk = r.warehouseFk
|
||||
SET
|
||||
r.price = p.price,
|
||||
r.amount = IF(p.itemFk IS NOT NULL,
|
||||
r.amount + IF(@m := MOD(r.amount, p.`grouping`), p.`grouping` - @m, 0), 0),
|
||||
r.shipment = t.shipped
|
||||
WHERE r.orderFk = vSelf;
|
||||
|
||||
INSERT INTO orderRowComponent(rowFk, componentFk, price)
|
||||
SELECT r.id, c.componentFk, c.cost
|
||||
FROM orderRow r
|
||||
JOIN tmp.ticketComponent c
|
||||
ON c.warehouseFk = r.warehouseFk
|
||||
AND c.itemFk = r.itemFk
|
||||
JOIN vn.component t
|
||||
ON t.id = c.componentFk
|
||||
AND (t.classRate IS NULL OR t.classRate = r.rate)
|
||||
WHERE r.orderFk = vSelf;
|
||||
|
||||
CALL vn.ticketCalculatePurge;
|
||||
END IF;
|
||||
|
||||
UPDATE `order` SET date_make = NOW()
|
||||
WHERE id = vSelf;
|
||||
|
||||
COMMIT;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
|
@ -1 +0,0 @@
|
|||
RENAME TABLE hedera.myOrderMyTicket TO hedera.myOrderTicket;
|
|
@ -1,10 +0,0 @@
|
|||
GRANT EXECUTE ON PROCEDURE vn.zoneGetAgency TO `account`@`%`;
|
||||
GRANT EXECUTE ON PROCEDURE hedera.myBasket_calcCatalogFromItem TO `guest`@`%`;
|
||||
GRANT EXECUTE ON PROCEDURE hedera.myBasket_calcCatalogFull TO `guest`@`%`;
|
||||
GRANT EXECUTE ON PROCEDURE hedera.myBasket_getAvailable TO `guest`@`%`;
|
||||
GRANT EXECUTE ON PROCEDURE hedera.myOrder_getAvailable TO `guest`@`%`;
|
||||
GRANT EXECUTE ON PROCEDURE hedera.catalog_calcFromMyAddress TO account@'%';
|
||||
REVOKE SELECT ON TABLE hedera.myOrderMyTicket FROM account@'%';
|
||||
GRANT SELECT ON TABLE hedera.myOrderTicket TO account@'%';
|
||||
|
||||
CALL account.privSync;
|
|
@ -0,0 +1,139 @@
|
|||
DROP procedure IF EXISTS `vn`.`ticketGetProblems`;
|
||||
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`ticketGetProblems`()
|
||||
BEGIN
|
||||
|
||||
DECLARE vWarehouse INT;
|
||||
DECLARE vDate DATE;
|
||||
DECLARE vAvailableCache INT;
|
||||
DECLARE vVisibleCache INT;
|
||||
DECLARE vDone INT DEFAULT 0;
|
||||
|
||||
DECLARE vCursor CURSOR FOR
|
||||
SELECT DISTINCT tt.warehouseFk, date(tt.shipped)
|
||||
FROM tmp.ticketGetProblems tt
|
||||
WHERE DATE(tt.shipped) BETWEEN CURDATE()
|
||||
AND TIMESTAMPADD(DAY, 1.9, CURDATE());
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = 1;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketProblems;
|
||||
CREATE TEMPORARY TABLE tmp.ticketProblems (
|
||||
ticketFk INT(11) PRIMARY KEY,
|
||||
isFreezed INTEGER(1) DEFAULT 0,
|
||||
risk DECIMAL(10,2) DEFAULT 0,
|
||||
hasTicketRequest INTEGER(1) DEFAULT 0,
|
||||
isAvailable INTEGER(1) DEFAULT 1
|
||||
) ENGINE = MEMORY;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketList;
|
||||
CREATE TEMPORARY TABLE tmp.ticketList
|
||||
(PRIMARY KEY (ticketFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT tp.ticketFk, c.id clientFk
|
||||
FROM tmp.ticketGetProblems tp
|
||||
JOIN vn.client c ON c.id = tp.clientFk;
|
||||
|
||||
|
||||
INSERT INTO tmp.ticketProblems(ticketFk, isFreezed)
|
||||
SELECT DISTINCT tl.ticketFk, 1
|
||||
FROM tmp.ticketList tl
|
||||
JOIN vn.client c ON c.id = tl.clientFk
|
||||
WHERE c.isFreezed;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt;
|
||||
CREATE TEMPORARY TABLE tmp.clientGetDebt
|
||||
(PRIMARY KEY (clientFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT DISTINCT clientFk
|
||||
FROM tmp.ticketList;
|
||||
|
||||
CALL clientGetDebt(CURDATE());
|
||||
|
||||
|
||||
INSERT INTO tmp.ticketProblems(ticketFk, risk)
|
||||
SELECT DISTINCT tl.ticketFk, r.risk
|
||||
FROM tmp.ticketList tl
|
||||
JOIN vn.ticket t ON t.id = tl.ticketFk
|
||||
JOIN vn.agencyMode a ON t.agencyModeFk = a.id
|
||||
JOIN tmp.risk r ON r.clientFk = t.clientFk
|
||||
JOIN vn.client c ON c.id = t.clientFk
|
||||
WHERE r.risk > c.credit + 10
|
||||
AND a.deliveryMethodFk != 3
|
||||
ON DUPLICATE KEY UPDATE
|
||||
risk = r.risk;
|
||||
|
||||
INSERT INTO tmp.ticketProblems(ticketFk, hasTicketRequest)
|
||||
SELECT DISTINCT tl.ticketFk, 1
|
||||
FROM tmp.ticketList tl
|
||||
JOIN vn.ticketRequest tr ON tr.ticketFk = tl.ticketFk
|
||||
WHERE tr.isOK IS NULL
|
||||
ON DUPLICATE KEY UPDATE
|
||||
hasTicketRequest = 1;
|
||||
|
||||
OPEN vCursor;
|
||||
|
||||
WHILE NOT vDone
|
||||
DO
|
||||
FETCH vCursor INTO vWarehouse, vDate;
|
||||
|
||||
CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouse);
|
||||
CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouse, vDate);
|
||||
|
||||
|
||||
INSERT INTO tmp.ticketProblems(ticketFk, isAvailable)
|
||||
SELECT tl.ticketFk, 0
|
||||
FROM tmp.ticketList tl
|
||||
JOIN vn.ticket t ON t.id = tl.ticketFk
|
||||
LEFT JOIN vn.sale s ON s.ticketFk = t.id
|
||||
JOIN vn.item i ON i.id = s.itemFk
|
||||
JOIN vn.itemType it on it.id = i.typeFk
|
||||
LEFT JOIN cache.available av ON av.item_id = i.id
|
||||
AND av.calc_id = vAvailableCache
|
||||
WHERE date(t.shipped) = vDate
|
||||
AND categoryFk != 6
|
||||
AND IFNULL(av.available, 0) < 0
|
||||
AND s.isPicked = FALSE
|
||||
AND NOT i.generic
|
||||
AND vWarehouse = t.warehouseFk
|
||||
GROUP BY tl.ticketFk
|
||||
ON DUPLICATE KEY UPDATE
|
||||
isAvailable = 0;
|
||||
|
||||
INSERT INTO tmp.ticketProblems(ticketFk, isAvailable)
|
||||
SELECT tl.ticketFk, 0
|
||||
FROM tmp.ticketList tl
|
||||
JOIN vn.ticket t ON t.id = tl.ticketFk
|
||||
LEFT JOIN vn.sale s ON s.ticketFk = t.id
|
||||
JOIN vn.item i ON i.id = s.itemFk
|
||||
JOIN vn.itemType it on it.id = i.typeFk
|
||||
LEFT JOIN cache.visible v ON i.id = v.item_id AND v.calc_id = vVisibleCache
|
||||
LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache
|
||||
WHERE IFNULL(av.available, 0) >= 0
|
||||
AND s.quantity > IFNULL(v.visible, 0)
|
||||
AND s.isPicked = FALSE
|
||||
AND s.reserved = FALSE
|
||||
AND it.categoryFk != 6
|
||||
AND date(t.shipped) = vDate
|
||||
AND NOT i.generic
|
||||
AND CURDATE() = vDate
|
||||
AND t.warehouseFk = vWarehouse
|
||||
GROUP BY tl.ticketFk
|
||||
ON DUPLICATE KEY UPDATE
|
||||
isAvailable = 0;
|
||||
|
||||
END WHILE;
|
||||
|
||||
CLOSE vCursor;
|
||||
|
||||
SELECT * FROM tmp.ticketProblems;
|
||||
|
||||
DROP TEMPORARY TABLE
|
||||
tmp.clientGetDebt,
|
||||
tmp.ticketList;
|
||||
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
Loading…
Reference in New Issue