Merge branch '2105-export_structure_db' of verdnatura/salix into dev
gitea/salix/dev This commit looks good
Details
gitea/salix/dev This commit looks good
Details
This commit is contained in:
commit
c45ce23cd6
|
@ -1,5 +0,0 @@
|
||||||
CREATE TABLE `vn`.`zoneClosure` (
|
|
||||||
`zoneFk` INT NOT NULL,
|
|
||||||
`dated` DATE NOT NULL,
|
|
||||||
`hour` TIME NOT NULL,
|
|
||||||
PRIMARY KEY (`zoneFk`, `dated`));
|
|
|
@ -1,50 +0,0 @@
|
||||||
|
|
||||||
DROP procedure IF EXISTS vn.`zoneClosure_recalc`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE DEFINER=`root`@`%` PROCEDURE vn.`zoneClosure_recalc`()
|
|
||||||
proc: BEGIN
|
|
||||||
/**
|
|
||||||
* Recalculates the delivery time (hour) for every zone in days + scope in future
|
|
||||||
*/
|
|
||||||
DECLARE vScope INT;
|
|
||||||
DECLARE vCounter INT DEFAULT 0;
|
|
||||||
DECLARE vShipped DATE DEFAULT CURDATE();
|
|
||||||
|
|
||||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
|
|
||||||
BEGIN
|
|
||||||
DO RELEASE_LOCK('vn.zoneClosure_recalc');
|
|
||||||
RESIGNAL;
|
|
||||||
END;
|
|
||||||
|
|
||||||
IF NOT GET_LOCK('vn.zoneClosure_recalc', 0) THEN
|
|
||||||
LEAVE proc;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
SELECT scope INTO vScope
|
|
||||||
FROM zoneConfig;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp.zone;
|
|
||||||
CREATE TEMPORARY TABLE tmp.zone
|
|
||||||
(INDEX (id))
|
|
||||||
ENGINE = MEMORY
|
|
||||||
SELECT id FROM zone;
|
|
||||||
|
|
||||||
TRUNCATE TABLE zoneClosure;
|
|
||||||
|
|
||||||
REPEAT
|
|
||||||
CALL zone_getOptionsForShipment(vShipped);
|
|
||||||
INSERT INTO zoneClosure(zoneFk, dated, `hour`)
|
|
||||||
SELECT zoneFk, vShipped, `hour` FROM tmp.zoneOption;
|
|
||||||
|
|
||||||
SET vCounter = vCounter + 1;
|
|
||||||
SET vShipped = TIMESTAMPADD(DAY, 1, vShipped);
|
|
||||||
UNTIL vCounter > vScope
|
|
||||||
END REPEAT;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE tmp.zone;
|
|
||||||
DO RELEASE_LOCK('vn.zoneClosure_recalc');
|
|
||||||
END$$
|
|
||||||
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
CREATE TABLE `vn`.`zoneConfig` (
|
|
||||||
`id` INT UNSIGNED NOT NULL,
|
|
||||||
`scope` INT UNSIGNED NOT NULL,
|
|
||||||
PRIMARY KEY (`id`));
|
|
||||||
|
|
||||||
ALTER TABLE `vn`.`zoneConfig`
|
|
||||||
CHANGE COLUMN `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ;
|
|
||||||
|
|
||||||
INSERT INTO `vn`.`zoneConfig` (`scope`) VALUES ('1');
|
|
||||||
|
|
||||||
INSERT INTO `bs`.`nightTask` (`order`, `schema`, `procedure`) VALUES ('100', 'vn', 'zoneClosure_recalc');
|
|
|
@ -1,254 +0,0 @@
|
||||||
DROP procedure IF EXISTS `vn`.`catalog_componentCalculate`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`catalog_componentCalculate`(
|
|
||||||
vZoneFk INT,
|
|
||||||
vAddressFk INT,
|
|
||||||
vShipped DATE)
|
|
||||||
proc: BEGIN
|
|
||||||
/**
|
|
||||||
* Calcula los componentes de los articulos de tmp.ticketLot
|
|
||||||
*
|
|
||||||
* @param vZoneFk para calcular el transporte
|
|
||||||
* @param vAgencyModeFk Id del modo de agencia
|
|
||||||
* @param tmp.ticketLot (warehouseFk,available,itemFk,buyFk)
|
|
||||||
*
|
|
||||||
* @return tmp.ticketComponent(itemFk, warehouseFk, available, rate2, rate3, minPrice,
|
|
||||||
* packing, grouping, groupingMode, buyFk, typeFk)
|
|
||||||
* @return tmp.ticketComponentPrice (warehouseFk, itemFk, rate, grouping, price)
|
|
||||||
*/
|
|
||||||
DECLARE vClientFk INT;
|
|
||||||
DECLARE vGeneralInflationCoefficient INT DEFAULT 1;
|
|
||||||
DECLARE vMinimumDensityWeight INT DEFAULT 167;
|
|
||||||
DECLARE vBoxFreightItem INT DEFAULT 71;
|
|
||||||
DECLARE vBoxVolume BIGINT; -- DEFAULT 138000;
|
|
||||||
DECLARE vSpecialPriceComponent INT DEFAULT 10;
|
|
||||||
DECLARE vDeliveryComponent INT DEFAULT 15;
|
|
||||||
DECLARE vRecoveryComponent INT DEFAULT 17;
|
|
||||||
DECLARE vSellByPacketComponent INT DEFAULT 22;
|
|
||||||
DECLARE vBuyValueComponent INT DEFAULT 28;
|
|
||||||
DECLARE vMarginComponent INT DEFAULT 29;
|
|
||||||
DECLARE vDiscountLastItemComponent INT DEFAULT 32;
|
|
||||||
DECLARE vExtraBaggedComponent INT DEFAULT 38;
|
|
||||||
DECLARE vManaAutoComponent INT DEFAULT 39;
|
|
||||||
|
|
||||||
SELECT volume INTO vBoxVolume
|
|
||||||
FROM vn.packaging
|
|
||||||
WHERE id = '94';
|
|
||||||
|
|
||||||
SELECT clientFk INTO vClientFK
|
|
||||||
FROM address
|
|
||||||
WHERE id = vAddressFk;
|
|
||||||
|
|
||||||
SET @rate2 := 0;
|
|
||||||
SET @rate3 := 0;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCalculate;
|
|
||||||
CREATE TEMPORARY TABLE tmp.ticketComponentCalculate
|
|
||||||
(PRIMARY KEY (itemFk, warehouseFk))
|
|
||||||
ENGINE = MEMORY
|
|
||||||
SELECT
|
|
||||||
tl.itemFk, tl.warehouseFk, tl.available,
|
|
||||||
IF((@rate2 := IFNULL(pf.rate2, b.price2)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate2) * 1.0 rate2,
|
|
||||||
IF((@rate3 := IFNULL(pf.rate3, b.price3)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate3) * 1.0 rate3,
|
|
||||||
IFNULL(pf.rate3, 0) AS minPrice,
|
|
||||||
IFNULL(pf.packing, b.packing) packing,
|
|
||||||
IFNULL(pf.`grouping`, b.`grouping`) `grouping`,
|
|
||||||
ABS(IFNULL(pf.box, b.groupingMode)) groupingMode,
|
|
||||||
tl.buyFk,
|
|
||||||
i.typeFk,
|
|
||||||
IF(i.hasKgPrice, b.weight / b.packing, NULL) weightGrouping
|
|
||||||
FROM tmp.ticketLot tl
|
|
||||||
JOIN buy b ON b.id = tl.buyFk
|
|
||||||
JOIN item i ON i.id = tl.itemFk
|
|
||||||
JOIN itemType it ON it.id = i.typeFk
|
|
||||||
LEFT JOIN itemCategory ic ON ic.id = it.categoryFk
|
|
||||||
LEFT JOIN specialPrice sp ON sp.itemFk = i.id AND sp.clientFk = vClientFk
|
|
||||||
LEFT JOIN (
|
|
||||||
SELECT * FROM (
|
|
||||||
SELECT pf.itemFk, pf.`grouping`, pf.packing, pf.box, pf.rate2, pf.rate3, zw.warehouseFk
|
|
||||||
FROM priceFixed pf
|
|
||||||
JOIN zoneWarehouse zw ON zw.zoneFk = vZoneFk AND (zw.warehouseFk = pf.warehouseFk OR pf.warehouseFk = 0)
|
|
||||||
WHERE vShipped BETWEEN pf.started AND pf.ended ORDER BY pf.itemFk, pf.warehouseFk DESC
|
|
||||||
) tpf
|
|
||||||
GROUP BY tpf.itemFk, tpf.warehouseFk
|
|
||||||
) pf ON pf.itemFk = tl.itemFk AND pf.warehouseFk = tl.warehouseFk
|
|
||||||
WHERE b.buyingValue + b.freightValue + b.packageValue + b.comissionValue > 0.01 AND ic.display <> 0;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponent;
|
|
||||||
CREATE TEMPORARY TABLE tmp.ticketComponent (
|
|
||||||
`warehouseFk` INT UNSIGNED NOT NULL,
|
|
||||||
`itemFk` INT NOT NULL,
|
|
||||||
`componentFk` INT UNSIGNED NOT NULL,
|
|
||||||
`cost` DECIMAL(10,4) NOT NULL,
|
|
||||||
INDEX `itemWarehouse` USING BTREE (`itemFk` ASC, `warehouseFk` ASC),
|
|
||||||
UNIQUE INDEX `itemWarehouseComponent` (`itemFk` ASC, `warehouseFk` ASC, `componentFk` ASC));
|
|
||||||
|
|
||||||
INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost)
|
|
||||||
SELECT
|
|
||||||
tcc.warehouseFk,
|
|
||||||
tcc.itemFk,
|
|
||||||
vBuyValueComponent,
|
|
||||||
b.buyingValue + b.freightValue + b.packageValue + b.comissionValue
|
|
||||||
FROM tmp.ticketComponentCalculate tcc
|
|
||||||
JOIN buy b ON b.id = tcc.buyFk;
|
|
||||||
|
|
||||||
INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost)
|
|
||||||
SELECT
|
|
||||||
tcc.warehouseFk,
|
|
||||||
tcc.itemFk,
|
|
||||||
vMarginComponent,
|
|
||||||
tcc.rate3 - b.buyingValue - b.freightValue - b.packageValue - b.comissionValue
|
|
||||||
FROM tmp.ticketComponentCalculate tcc
|
|
||||||
JOIN buy b ON b.id = tcc.buyFk;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentBase;
|
|
||||||
CREATE TEMPORARY TABLE tmp.ticketComponentBase ENGINE = MEMORY
|
|
||||||
SELECT tc.itemFk, ROUND(SUM(tc.cost), 4) AS base, tc.warehouseFk
|
|
||||||
FROM tmp.ticketComponent tc
|
|
||||||
GROUP BY tc.itemFk, warehouseFk;
|
|
||||||
|
|
||||||
INSERT INTO tmp.ticketComponent
|
|
||||||
SELECT tcb.warehouseFk, tcb.itemFk, vRecoveryComponent, ROUND(tcb.base * LEAST(cr.priceIncreasing, 0.25), 3)
|
|
||||||
FROM tmp.ticketComponentBase tcb
|
|
||||||
JOIN claimRatio cr ON cr.clientFk = vClientFk
|
|
||||||
WHERE cr.priceIncreasing > 0.009;
|
|
||||||
|
|
||||||
INSERT INTO tmp.ticketComponent
|
|
||||||
SELECT tcb.warehouseFk, tcb.itemFk, vManaAutoComponent, ROUND(base * (0.01 + wm.pricesModifierRate), 3) as manaAuto
|
|
||||||
FROM tmp.ticketComponentBase tcb
|
|
||||||
JOIN `client` c on c.id = vClientFk
|
|
||||||
JOIN workerMana wm ON c.salesPersonFk = wm.workerFk
|
|
||||||
WHERE wm.isPricesModifierActivated
|
|
||||||
HAVING manaAuto <> 0;
|
|
||||||
|
|
||||||
INSERT INTO tmp.ticketComponent
|
|
||||||
SELECT tcb.warehouseFk,
|
|
||||||
tcb.itemFk,
|
|
||||||
c.id,
|
|
||||||
GREATEST(IFNULL(ROUND(tcb.base * c.tax, 4), 0), tcc.minPrice - tcc.rate3)
|
|
||||||
FROM tmp.ticketComponentBase tcb
|
|
||||||
JOIN component c
|
|
||||||
JOIN tmp.ticketComponentCalculate tcc ON tcc.itemFk = tcb.itemFk AND tcc.warehouseFk = tcb.warehouseFk
|
|
||||||
LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk
|
|
||||||
WHERE c.id = vDiscountLastItemComponent AND c.tax <> 0 AND tcc.minPrice < tcc.rate3 AND sp.value IS NULL;
|
|
||||||
|
|
||||||
INSERT INTO tmp.ticketComponent
|
|
||||||
SELECT tcc.warehouseFk, tcc.itemFk, vSellByPacketComponent, tcc.rate2 - tcc.rate3
|
|
||||||
FROM tmp.ticketComponentCalculate tcc
|
|
||||||
JOIN buy b ON b.id = tcc.buyFk
|
|
||||||
LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk
|
|
||||||
WHERE sp.value IS NULL;
|
|
||||||
|
|
||||||
INSERT INTO tmp.ticketComponent
|
|
||||||
SELECT tcc.warehouseFK,
|
|
||||||
tcc.itemFk,
|
|
||||||
vDeliveryComponent,
|
|
||||||
vGeneralInflationCoefficient
|
|
||||||
* ROUND((
|
|
||||||
i.compression
|
|
||||||
* ic.cm3
|
|
||||||
* IF(am.deliveryMethodFk = 1, (GREATEST(i.density, vMinimumDensityWeight) / vMinimumDensityWeight), 1)
|
|
||||||
* IFNULL((z.price - z.bonus)
|
|
||||||
* 1/*amz.inflation*/ , 50)) / vBoxVolume, 4
|
|
||||||
) cost
|
|
||||||
FROM tmp.ticketComponentCalculate tcc
|
|
||||||
JOIN item i ON i.id = tcc.itemFk
|
|
||||||
JOIN zone z ON z.id = vZoneFk
|
|
||||||
JOIN agencyMode am ON am.id = z.agencyModeFk
|
|
||||||
LEFT JOIN itemCost ic ON ic.warehouseFk = tcc.warehouseFk
|
|
||||||
AND ic.itemFk = tcc.itemFk
|
|
||||||
HAVING cost <> 0;
|
|
||||||
|
|
||||||
IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = vAddressFk) THEN
|
|
||||||
INSERT INTO tmp.ticketComponent
|
|
||||||
SELECT tcc.warehouseFk, b.itemFk, vExtraBaggedComponent, ap.packagingValue cost
|
|
||||||
FROM tmp.ticketComponentCalculate tcc
|
|
||||||
JOIN vn.addressForPackaging ap
|
|
||||||
WHERE ap.addressFk = vAddressFk;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCopy;
|
|
||||||
CREATE TEMPORARY TABLE tmp.ticketComponentCopy ENGINE = MEMORY
|
|
||||||
SELECT * FROM tmp.ticketComponent;
|
|
||||||
|
|
||||||
INSERT INTO tmp.ticketComponent
|
|
||||||
SELECT tcc.warehouseFk,
|
|
||||||
tcc.itemFk,
|
|
||||||
vSpecialPriceComponent,
|
|
||||||
sp.value - SUM(tcc.cost) sumCost
|
|
||||||
FROM tmp.ticketComponentCopy tcc
|
|
||||||
JOIN component c ON c.id = tcc.componentFk
|
|
||||||
JOIN specialPrice sp ON sp.clientFk = vClientFK AND sp.itemFk = tcc.itemFk
|
|
||||||
WHERE c.classRate IS NULL
|
|
||||||
GROUP BY tcc.itemFk, tcc.warehouseFk
|
|
||||||
HAVING ABS(sumCost) > 0.001;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentSum;
|
|
||||||
CREATE TEMPORARY TABLE tmp.ticketComponentSum
|
|
||||||
(INDEX (itemFk, warehouseFk))
|
|
||||||
ENGINE = MEMORY
|
|
||||||
SELECT SUM(cost) sumCost, tc.itemFk, tc.warehouseFk, c.classRate
|
|
||||||
FROM tmp.ticketComponent tc
|
|
||||||
JOIN component c ON c.id = tc.componentFk
|
|
||||||
GROUP BY tc.itemFk, tc.warehouseFk, c.classRate;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentRate;
|
|
||||||
CREATE TEMPORARY TABLE tmp.ticketComponentRate ENGINE = MEMORY
|
|
||||||
SELECT tcc.warehouseFk,
|
|
||||||
tcc.itemFk,
|
|
||||||
1 rate,
|
|
||||||
IF(tcc.groupingMode = 1, tcc.`grouping`, 1) `grouping`,
|
|
||||||
CAST(SUM(tcs.sumCost) AS DECIMAL(10,2)) price,
|
|
||||||
CAST(SUM(tcs.sumCost) AS DECIMAL(10,2)) / weightGrouping priceKg
|
|
||||||
FROM tmp.ticketComponentCalculate tcc
|
|
||||||
JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk
|
|
||||||
AND tcs.warehouseFk = tcc.warehouseFk
|
|
||||||
WHERE IFNULL(tcs.classRate, 1) = 1
|
|
||||||
AND tcc.groupingMode < 2 AND (tcc.packing > tcc.`grouping` or tcc.groupingMode = 0)
|
|
||||||
GROUP BY tcs.warehouseFk, tcs.itemFk;
|
|
||||||
|
|
||||||
INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, `grouping`, price, priceKg)
|
|
||||||
SELECT
|
|
||||||
tcc.warehouseFk,
|
|
||||||
tcc.itemFk,
|
|
||||||
2 rate,
|
|
||||||
tcc.packing `grouping`,
|
|
||||||
SUM(tcs.sumCost) price,
|
|
||||||
SUM(tcs.sumCost) / weightGrouping priceKg
|
|
||||||
FROM tmp.ticketComponentCalculate tcc
|
|
||||||
JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk
|
|
||||||
AND tcs.warehouseFk = tcc.warehouseFk
|
|
||||||
WHERE tcc.available IS NULL OR (IFNULL(tcs.classRate, 2) = 2
|
|
||||||
AND tcc.packing > 0 AND tcc.available >= tcc.packing)
|
|
||||||
GROUP BY tcs.warehouseFk, tcs.itemFk;
|
|
||||||
|
|
||||||
INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, `grouping`, price, priceKg)
|
|
||||||
SELECT
|
|
||||||
tcc.warehouseFk,
|
|
||||||
tcc.itemFk,
|
|
||||||
3 rate,
|
|
||||||
tcc.available `grouping`,
|
|
||||||
SUM(tcs.sumCost) price,
|
|
||||||
SUM(tcs.sumCost) / weightGrouping priceKg
|
|
||||||
FROM tmp.ticketComponentCalculate tcc
|
|
||||||
JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk
|
|
||||||
AND tcs.warehouseFk = tcc.warehouseFk
|
|
||||||
WHERE IFNULL(tcs.classRate, 3) = 3
|
|
||||||
GROUP BY tcs.warehouseFk, tcs.itemFk;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentPrice;
|
|
||||||
CREATE TEMPORARY TABLE tmp.ticketComponentPrice ENGINE = MEMORY
|
|
||||||
SELECT * FROM (
|
|
||||||
SELECT * FROM tmp.ticketComponentRate ORDER BY price
|
|
||||||
) t
|
|
||||||
GROUP BY itemFk, warehouseFk, `grouping`;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE
|
|
||||||
tmp.ticketComponentCalculate,
|
|
||||||
tmp.ticketComponentSum,
|
|
||||||
tmp.ticketComponentBase,
|
|
||||||
tmp.ticketComponentRate,
|
|
||||||
tmp.ticketComponentCopy;
|
|
||||||
END$$
|
|
||||||
DELIMITER ;
|
|
|
@ -1,5 +0,0 @@
|
||||||
ALTER TABLE `vn`.`chatConfig`
|
|
||||||
ADD COLUMN `host` VARCHAR(255) NOT NULL AFTER `id`,
|
|
||||||
CHANGE COLUMN `uri` `api` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ;
|
|
||||||
|
|
||||||
UPDATE `vn`.`chatConfig` SET `host` = 'https://chat.verdnatura.es' WHERE (`id` = '1');
|
|
|
@ -1,6 +0,0 @@
|
||||||
CREATE TABLE `vn`.`greugeConfig` (
|
|
||||||
`id` INT NOT NULL AUTO_INCREMENT,
|
|
||||||
`freightPickUpPrice` DECIMAL(10,2) NOT NULL,
|
|
||||||
PRIMARY KEY (`id`));
|
|
||||||
|
|
||||||
INSERT IGNORE INTO `vn`.`greugeConfig` (`id`, `freightPickUpPrice`) VALUES ('1', '11');
|
|
|
@ -1,70 +0,0 @@
|
||||||
|
|
||||||
DROP procedure IF EXISTS `vn`.`manaSpellersRequery`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`manaSpellersRequery`(vWorkerFk INTEGER)
|
|
||||||
BEGIN
|
|
||||||
|
|
||||||
DECLARE vWorkerIsExcluded BOOLEAN;
|
|
||||||
DECLARE vFromDated DATE;
|
|
||||||
DECLARE vToDated DATE DEFAULT TIMESTAMPADD(DAY,1,CURDATE());
|
|
||||||
DECLARE vMana INT;
|
|
||||||
DECLARE vAutoMana INT;
|
|
||||||
DECLARE vManaBank INT;
|
|
||||||
DECLARE vManaGreugeType INT;
|
|
||||||
|
|
||||||
SELECT id INTO vMana
|
|
||||||
FROM `component` WHERE code = 'mana';
|
|
||||||
|
|
||||||
SELECT id INTO vAutoMana
|
|
||||||
FROM `component` WHERE code = 'autoMana';
|
|
||||||
|
|
||||||
SELECT id INTO vManaBank
|
|
||||||
FROM `bank` WHERE code = 'mana';
|
|
||||||
|
|
||||||
SELECT id INTO vManaGreugeType
|
|
||||||
FROM `greugeType` WHERE code = 'mana';
|
|
||||||
|
|
||||||
SELECT COUNT(*) INTO vWorkerIsExcluded
|
|
||||||
FROM workerManaExcluded
|
|
||||||
WHERE workerFk = vWorkerFk;
|
|
||||||
|
|
||||||
IF NOT vWorkerIsExcluded THEN
|
|
||||||
|
|
||||||
SELECT max(dated) INTO vFromDated
|
|
||||||
FROM clientManaCache;
|
|
||||||
|
|
||||||
REPLACE workerMana (workerFk, amount)
|
|
||||||
SELECT vWorkerFk, sum(mana) FROM
|
|
||||||
(
|
|
||||||
SELECT s.quantity * sc.value as mana
|
|
||||||
FROM ticket t
|
|
||||||
JOIN address a ON a.id = t.addressFk
|
|
||||||
JOIN client c ON c.id = a.clientFk
|
|
||||||
JOIN sale s ON s.ticketFk = t.id
|
|
||||||
JOIN saleComponent sc ON sc.saleFk = s.id
|
|
||||||
WHERE c.salesPersonFk = vWorkerFk AND sc.componentFk IN (vMana, vAutoMana)
|
|
||||||
AND t.shipped > vFromDated AND t.shipped < vToDated
|
|
||||||
UNION ALL
|
|
||||||
SELECT - r.amountPaid
|
|
||||||
FROM receipt r
|
|
||||||
JOIN client c ON c.id = r.clientFk
|
|
||||||
WHERE c.salesPersonFk = vWorkerFk AND bankFk = vManaBank
|
|
||||||
AND payed > vFromDated
|
|
||||||
UNION ALL
|
|
||||||
SELECT g.amount
|
|
||||||
FROM greuge g
|
|
||||||
JOIN client c ON c.id = g.clientFk
|
|
||||||
WHERE c.salesPersonFk = vWorkerFk AND g.greugeTypeFk = vManaGreugeType
|
|
||||||
AND g.shipped > vFromDated and g.shipped < CURDATE()
|
|
||||||
UNION ALL
|
|
||||||
SELECT cc.mana
|
|
||||||
FROM clientManaCache cc
|
|
||||||
JOIN client c ON c.id = cc.clientFk
|
|
||||||
WHERE c.salesPersonFk = vWorkerFk AND cc.dated = vFromDated
|
|
||||||
) sub;
|
|
||||||
END IF;
|
|
||||||
END$$
|
|
||||||
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
USE `vn`;
|
|
||||||
DROP procedure IF EXISTS `timeControl_calculate`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
USE `vn`$$
|
|
||||||
CREATE DEFINER=`root`@`%` PROCEDURE `timeControl_calculate`(vDatedFrom DATETIME, vDatedTo DATETIME)
|
|
||||||
BEGIN
|
|
||||||
SET @vIsOdd := TRUE;
|
|
||||||
SET @vUser := NULL;
|
|
||||||
SET @vDated := NULL;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp.timeControlCalculate;
|
|
||||||
|
|
||||||
CREATE TEMPORARY TABLE tmp.timeControlCalculate
|
|
||||||
SELECT userFk,
|
|
||||||
dated,
|
|
||||||
IF( timeWork >= 18000, @timeWork:=timeWork + 1200, @timeWork:=timeWork) timeWorkSeconds,
|
|
||||||
SEC_TO_TIME(@timeWork ) timeWorkSexagesimal,
|
|
||||||
@timeWork / 3600 timeWorkDecimal
|
|
||||||
FROM (SELECT SUM(timeWork) timeWork,
|
|
||||||
userFk,
|
|
||||||
dated
|
|
||||||
FROM (SELECT IF(@vUser = wtc.userFk, @vUser :=@vUser, @vUser := wtc.userFk ),
|
|
||||||
IF(@vIsOdd, @vIsOdd := FALSE, @vIsOdd := TRUE ),
|
|
||||||
IF(direction='in', @vIsOdd := TRUE, @vIsOdd := @vIsOdd ),
|
|
||||||
IF(@vIsOdd, @vLastTimed:=UNIX_TIMESTAMP(timed),@vLastTimed:=@vLastTimed),
|
|
||||||
IF(@vIsOdd, 0, UNIX_TIMESTAMP(timed)-@vLastTimed) timeWork,
|
|
||||||
IF(direction='in', @vDated := DATE(wtc.timed), @vDated :=@vDated) dated,
|
|
||||||
wtc.userFk,
|
|
||||||
wtc.timed timed,
|
|
||||||
direction
|
|
||||||
FROM (SELECT * FROM workerTimeControl ORDER BY userFk, timed ASC) wtc
|
|
||||||
JOIN tmp.`user` w ON w.userFk = wtc.userFk
|
|
||||||
WHERE wtc.timed BETWEEN vDatedFrom AND vDatedTo
|
|
||||||
ORDER BY userFk, timed ASC
|
|
||||||
) sub
|
|
||||||
GROUP BY userFk, dated
|
|
||||||
ORDER BY userFk, dated
|
|
||||||
)sub2;
|
|
||||||
|
|
||||||
END$$
|
|
||||||
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES ('Thermograph', '*', '*', 'ALLOW', 'ROLE', 'buyer');
|
|
||||||
INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES ('TravelThermograph', '*', '*', 'ALLOW', 'ROLE', 'buyer');
|
|
||||||
INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES ('Entry', '*', '*', 'ALLOW', 'ROLE', 'buyer');
|
|
|
@ -1,81 +0,0 @@
|
||||||
|
|
||||||
DROP procedure IF EXISTS `vn`.`buy_afterUpsert`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`buy_afterUpsert`(vSelf INT)
|
|
||||||
BEGIN
|
|
||||||
/**
|
|
||||||
* Triggered actions when a buy is updated or inserted.
|
|
||||||
*
|
|
||||||
* @param vSelf The buy reference
|
|
||||||
*/
|
|
||||||
DECLARE vEntryFk INT;
|
|
||||||
DECLARE vItemFk INT;
|
|
||||||
DECLARE vStickers INT;
|
|
||||||
DECLARE vPacking INT;
|
|
||||||
DECLARE vWarehouse INT;
|
|
||||||
DECLARE vWarehouseOut INT;
|
|
||||||
DECLARE vIsMerchandise BOOL;
|
|
||||||
DECLARE vIsFeedStock BOOL;
|
|
||||||
DECLARE vLanded DATE;
|
|
||||||
DECLARE vBuyerFk INT;
|
|
||||||
DECLARE vItemName VARCHAR(50);
|
|
||||||
|
|
||||||
SELECT entryFk, itemFk, stickers, packing
|
|
||||||
INTO vEntryFk, vItemFk, vStickers, vPacking
|
|
||||||
FROM buy
|
|
||||||
WHERE id = vSelf;
|
|
||||||
|
|
||||||
SELECT t.warehouseInFk, t.warehouseOutFk, t.landed
|
|
||||||
INTO vWarehouse, vWarehouseOut, vLanded
|
|
||||||
FROM entry e
|
|
||||||
JOIN travel t ON t.id = e.travelFk
|
|
||||||
WHERE e.id = vEntryFk;
|
|
||||||
|
|
||||||
SELECT k.merchandise, it.workerFk, i.longName
|
|
||||||
INTO vIsMerchandise, vBuyerFk, vItemName
|
|
||||||
FROM itemCategory k
|
|
||||||
JOIN itemType it ON it.categoryFk = k.id
|
|
||||||
JOIN item i ON i.typeFk = it.id
|
|
||||||
WHERE i.id = vItemFk;
|
|
||||||
|
|
||||||
IF vIsMerchandise THEN
|
|
||||||
REPLACE itemCost SET
|
|
||||||
itemFk = vItemFk,
|
|
||||||
warehouseFk = vWarehouse,
|
|
||||||
cm3 = buy_getUnitVolume(vSelf);
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
SELECT isFeedStock INTO vIsFeedStock
|
|
||||||
FROM warehouse WHERE id = vWarehouseOut AND id <> 13;
|
|
||||||
|
|
||||||
IF vIsFeedStock THEN
|
|
||||||
INSERT IGNORE INTO producer(`name`)
|
|
||||||
SELECT es.company_name
|
|
||||||
FROM buy b
|
|
||||||
JOIN edi.ekt be ON be.id = b.ektFk
|
|
||||||
JOIN edi.supplier es ON es.supplier_id = be.pro
|
|
||||||
WHERE b.id = vSelf;
|
|
||||||
|
|
||||||
IF buy_hasNotifyPassport(vSelf, vItemFk) THEN
|
|
||||||
CALL vn.buy_notifyPassport(vSelf, vItemFk, vStickers, vPacking);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
-- Aviso al comprador de modificacion de entrada en Barajas
|
|
||||||
IF (SELECT isBuyerToBeEmailed FROM warehouse WHERE id = vWarehouse)
|
|
||||||
AND vLanded = CURDATE()
|
|
||||||
AND vBuyerFk != account.myUserGetId()
|
|
||||||
THEN
|
|
||||||
|
|
||||||
CALL vn.mail_insert(CONCAT(account.userGetNameFromId(vBuyerFk),'@verdnatura.es'),
|
|
||||||
CONCAT(account.myUserGetName(),'@verdnatura.es'),
|
|
||||||
CONCAT('E ',vEntryFk,' Se ha modificado item ', vItemFk, ' ',vItemName),
|
|
||||||
'Este email se ha generado automáticamente');
|
|
||||||
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
END$$
|
|
||||||
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`clientRisk_update`(vClientId INT, vCompanyId INT, vAmount DECIMAL(10,2))
|
|
||||||
BEGIN
|
|
||||||
IF vAmount IS NOT NULL
|
|
||||||
THEN
|
|
||||||
INSERT INTO clientRisk
|
|
||||||
SET
|
|
||||||
clientFk = vClientId,
|
|
||||||
companyFk = vCompanyId,
|
|
||||||
amount = vAmount
|
|
||||||
ON DUPLICATE KEY UPDATE
|
|
||||||
amount = amount + VALUES(amount);
|
|
||||||
END IF;
|
|
||||||
END$$
|
|
||||||
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
ALTER TABLE `vn`.`componentType`
|
|
||||||
CHANGE COLUMN `base` `isBase` TINYINT(4) NOT NULL DEFAULT '0' COMMENT 'Marca aquellas series que se utilizan para calcular el precio base de las ventas, a efectos estadisticos' ;
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
|
|
||||||
DROP procedure IF EXISTS `bi`.`customer_risk_update`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
USE `bi`$$
|
|
||||||
CREATE DEFINER=`root`@`%` PROCEDURE `bi`.`customer_risk_update`(v_customer INT, v_company INT, v_amount DECIMAL(10,2))
|
|
||||||
BEGIN
|
|
||||||
CALL vn.clientRisk_update(v_customer, v_company, v_amount);
|
|
||||||
END$$
|
|
||||||
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
ALTER TABLE `vn`.`department`
|
|
||||||
ADD COLUMN `chatName` VARCHAR(45) NULL AFTER `path`;
|
|
|
@ -1,155 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
DROP procedure IF EXISTS `vn`.`ticketComponentUpdateSale`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
|
|
||||||
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`ticketComponentUpdateSale`(vOption INT)
|
|
||||||
BEGIN
|
|
||||||
/**
|
|
||||||
* A partir de la tabla tmp.sale, crea los Movimientos_componentes
|
|
||||||
* y modifica el campo Preu de la tabla Movimientos
|
|
||||||
*
|
|
||||||
* @param i_option integer tipo de actualizacion
|
|
||||||
* @param table tmp.sale tabla memory con el campo saleFk, warehouseFk
|
|
||||||
**/
|
|
||||||
DECLARE vComponentFk INT;
|
|
||||||
DECLARE vRenewComponents BOOLEAN;
|
|
||||||
DECLARE vKeepPrices BOOLEAN;
|
|
||||||
|
|
||||||
CASE vOption
|
|
||||||
WHEN 1 THEN
|
|
||||||
SET vRenewComponents = TRUE;
|
|
||||||
SET vKeepPrices = FALSE;
|
|
||||||
WHEN 2 THEN
|
|
||||||
SET vComponentFk = 17;
|
|
||||||
SET vRenewComponents = TRUE;
|
|
||||||
SET vKeepPrices = TRUE;
|
|
||||||
WHEN 3 THEN
|
|
||||||
SET vComponentFk = 37;
|
|
||||||
SET vRenewComponents = TRUE;
|
|
||||||
SET vKeepPrices = TRUE;
|
|
||||||
WHEN 4 THEN
|
|
||||||
SET vComponentFk = 34;
|
|
||||||
SET vRenewComponents = TRUE;
|
|
||||||
SET vKeepPrices = TRUE;
|
|
||||||
WHEN 5 THEN
|
|
||||||
SET vComponentFk = 35;
|
|
||||||
SET vRenewComponents = TRUE;
|
|
||||||
SET vKeepPrices = TRUE;
|
|
||||||
WHEN 6 THEN
|
|
||||||
SET vComponentFk = 36;
|
|
||||||
SET vRenewComponents = TRUE;
|
|
||||||
SET vKeepPrices = TRUE;
|
|
||||||
WHEN 7 THEN
|
|
||||||
REPLACE INTO saleComponent(saleFk, componentFk, value)
|
|
||||||
SELECT s.id, 28, ROUND(((s.price * (100 - s.discount) / 100) - SUM(IFNULL(sc.value, 0))) * 0.8, 3)
|
|
||||||
FROM sale s
|
|
||||||
JOIN tmp.sale tmps ON tmps.saleFk = s.id
|
|
||||||
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
|
|
||||||
AND sc.componentFk NOT IN (28, 29)
|
|
||||||
GROUP BY s.id;
|
|
||||||
|
|
||||||
REPLACE INTO saleComponent(saleFk, componentFk, value)
|
|
||||||
SELECT s.id, 29, ROUND(((s.price * (100 - s.discount) / 100) - SUM(IFNULL(sc.value, 0))) * 0.2, 3)
|
|
||||||
FROM sale s
|
|
||||||
JOIN tmp.sale tmps ON tmps.saleFk = s.id
|
|
||||||
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
|
|
||||||
AND sc.componentFk NOT IN (28, 29)
|
|
||||||
GROUP BY s.id;
|
|
||||||
|
|
||||||
SET vRenewComponents = FALSE;
|
|
||||||
SET vKeepPrices = FALSE;
|
|
||||||
WHEN 8 THEN
|
|
||||||
DELETE sc.*
|
|
||||||
FROM tmp.sale tmps JOIN saleComponent sc ON sc.saleFk = tmps.saleFk;
|
|
||||||
|
|
||||||
REPLACE INTO saleComponent(saleFk, componentFk, value)
|
|
||||||
SELECT s.id, 28, ROUND(((s.price * (100 - s.discount) / 100)), 3)
|
|
||||||
FROM sale s
|
|
||||||
JOIN tmp.sale tmps ON tmps.saleFk = s.id;
|
|
||||||
|
|
||||||
SET vRenewComponents = FALSE;
|
|
||||||
SET vKeepPrices = FALSE;
|
|
||||||
WHEN 9 THEN
|
|
||||||
SET vRenewComponents = TRUE;
|
|
||||||
SET vKeepPrices = TRUE;
|
|
||||||
END CASE;
|
|
||||||
|
|
||||||
IF vRenewComponents THEN
|
|
||||||
DELETE sc.*
|
|
||||||
FROM tmp.sale tmps
|
|
||||||
JOIN saleComponent sc ON sc.saleFk = tmps.saleFk
|
|
||||||
JOIN `component` c ON c.id = sc.componentFk
|
|
||||||
WHERE c.isRenewable;
|
|
||||||
|
|
||||||
REPLACE INTO saleComponent(saleFk, componentFk, value)
|
|
||||||
SELECT s.id, tc.componentFk, tc.cost
|
|
||||||
FROM sale s
|
|
||||||
JOIN tmp.sale tmps ON tmps.saleFk = s.id
|
|
||||||
JOIN tmp.ticketComponent tc ON tc.itemFk = s.itemFk AND tc.warehouseFk = tmps.warehouseFk
|
|
||||||
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
|
|
||||||
AND sc.componentFk = tc.componentFk
|
|
||||||
LEFT JOIN `component` c ON c.id = tc.componentFk
|
|
||||||
WHERE IF(sc.componentFk IS NULL AND NOT c.isRenewable, FALSE, TRUE);
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
IF vKeepPrices THEN
|
|
||||||
REPLACE INTO saleComponent(saleFk, componentFk, value)
|
|
||||||
SELECT s.id, vComponentFk, ROUND((s.price * (100 - s.discount) / 100) - SUM(sc.value), 3) dif
|
|
||||||
FROM sale s
|
|
||||||
JOIN tmp.sale tmps ON tmps.saleFk = s.id
|
|
||||||
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
|
|
||||||
WHERE sc.saleFk <> vComponentFk
|
|
||||||
GROUP BY s.id
|
|
||||||
HAVING dif <> 0;
|
|
||||||
ELSE
|
|
||||||
UPDATE sale s
|
|
||||||
JOIN item i on i.id = s.itemFk
|
|
||||||
JOIN itemType it on it.id = i.typeFk
|
|
||||||
JOIN (SELECT SUM(sc.value) sumValue, sc.saleFk
|
|
||||||
FROM saleComponent sc
|
|
||||||
JOIN tmp.sale tmps ON tmps.saleFk = sc.saleFk
|
|
||||||
GROUP BY sc.saleFk) sc ON sc.saleFk = s.id
|
|
||||||
SET s.price = sumValue
|
|
||||||
WHERE it.code != 'PRT' ;
|
|
||||||
|
|
||||||
REPLACE INTO saleComponent(saleFk, componentFk, value)
|
|
||||||
SELECT s.id, 21, ROUND((s.price * (100 - s.discount) / 100) - SUM(value), 3) saleValue
|
|
||||||
FROM sale s
|
|
||||||
JOIN tmp.sale tmps ON tmps.saleFk = s.id
|
|
||||||
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
|
|
||||||
WHERE sc.componentFk != 21
|
|
||||||
GROUP BY s.id
|
|
||||||
HAVING ROUND(saleValue, 4) <> 0;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
UPDATE sale s
|
|
||||||
JOIN (
|
|
||||||
SELECT SUM(sc.value) sumValue, sc.saleFk
|
|
||||||
FROM saleComponent sc
|
|
||||||
JOIN tmp.sale tmps ON tmps.saleFk = sc.saleFk
|
|
||||||
JOIN `component` c ON c.id = sc.componentFk
|
|
||||||
JOIN componentType ct on ct.id = c.typeFk AND ct.isBase
|
|
||||||
GROUP BY sc.saleFk) sc ON sc.saleFk = s.id
|
|
||||||
SET s.priceFixed = sumValue, s.isPriceFixed = 1;
|
|
||||||
|
|
||||||
DELETE sc.*
|
|
||||||
FROM saleComponent sc
|
|
||||||
JOIN tmp.sale tmps ON tmps.saleFk = sc.saleFk
|
|
||||||
JOIN sale s on s.id = sc.saleFk
|
|
||||||
JOIN item i ON i.id = s.itemFk
|
|
||||||
JOIN itemType it ON it.id = i.typeFk
|
|
||||||
WHERE it.code = 'PRT';
|
|
||||||
|
|
||||||
INSERT INTO saleComponent(saleFk, componentFk, value)
|
|
||||||
SELECT s.id, 15, s.price
|
|
||||||
FROM sale s
|
|
||||||
JOIN tmp.sale tmps ON tmps.saleFk = s.id
|
|
||||||
JOIN item i ON i.id = s.itemFK
|
|
||||||
JOIN itemType it ON it.id = i.typeFk
|
|
||||||
WHERE it.code = 'PRT' AND s.price > 0;
|
|
||||||
END$$
|
|
||||||
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
ALTER TABLE `vn`.`travelThermograph`
|
|
||||||
ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT FIRST,
|
|
||||||
DROP PRIMARY KEY,
|
|
||||||
ADD PRIMARY KEY (`id`);
|
|
||||||
|
|
||||||
ALTER TABLE `vn`.`travelThermograph`
|
|
||||||
ADD UNIQUE INDEX `thermograph_created` (`thermographFk` ASC, `created` ASC) VISIBLE;
|
|
|
@ -1,27 +0,0 @@
|
||||||
DROP TRIGGER IF EXISTS `vn`.`invoiceOut_afterInsert`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE DEFINER=`root`@`%` TRIGGER `vn`.`invoiceOut_afterInsert` AFTER INSERT ON `vn`.`invoiceOut` FOR EACH ROW BEGIN
|
|
||||||
CALL clientRisk_update(NEW.clientFk, NEW.companyFk, NEW.amount);
|
|
||||||
END$$
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS `vn`.`invoiceOut_beforeUpdate`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE DEFINER=`root`@`%` TRIGGER `vn`.`invoiceOut_beforeUpdate` BEFORE UPDATE ON `vn`.`invoiceOut` FOR EACH ROW
|
|
||||||
BEGIN
|
|
||||||
CALL clientRisk_update (OLD.clientFk, OLD.companyFk, -OLD.amount);
|
|
||||||
CALL clientRisk_update (NEW.clientFk, NEW.companyFk, NEW.amount);
|
|
||||||
END$$
|
|
||||||
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS `vn`.`invoiceOut_beforeDelete`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE DEFINER=`root`@`%` TRIGGER `vn`.`invoiceOut_beforeDelete` BEFORE DELETE ON `invoiceOut` FOR EACH ROW BEGIN
|
|
||||||
CALL clientRisk_update (OLD.clientFk, OLD.companyFk, -OLD.amount);
|
|
||||||
END$$
|
|
||||||
DELIMITER ;
|
|
|
@ -1,20 +0,0 @@
|
||||||
DROP TRIGGER IF EXISTS `vn`.`receipt_afterInsert`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE DEFINER=`root`@`%` TRIGGER `vn`.`receipt_afterInsert` AFTER INSERT ON `receipt` FOR EACH ROW
|
|
||||||
CALL clientRisk_update(NEW.clientFk, NEW.companyFk, -NEW.amountPaid)$$
|
|
||||||
DELIMITER ;
|
|
||||||
DROP TRIGGER IF EXISTS `vn`.`receipt_beforeUpdate`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE DEFINER=`root`@`%` TRIGGER `vn`.`receipt_beforeUpdate` BEFORE UPDATE ON `receipt` FOR EACH ROW BEGIN
|
|
||||||
CALL clientRisk_update(OLD.clientFk, OLD.companyFk, OLD.amountPaid);
|
|
||||||
CALL clientRisk_update(NEW.clientFk, NEW.companyFk, -NEW.amountPaid);
|
|
||||||
END$$
|
|
||||||
DELIMITER ;
|
|
||||||
DROP TRIGGER IF EXISTS `vn`.`receipt_beforeDelete`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE DEFINER=`root`@`%` TRIGGER `vn`.`receipt_beforeDelete` BEFORE DELETE ON `receipt` FOR EACH ROW
|
|
||||||
CALL clientRisk_update(OLD.clientFk, OLD.companyFk, OLD.amountPaid)$$
|
|
||||||
DELIMITER ;
|
|
|
@ -1,29 +0,0 @@
|
||||||
USE `bs`;
|
|
||||||
DROP procedure IF EXISTS `weekWaste_getDetail`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
USE `bs`$$
|
|
||||||
CREATE DEFINER=`root`@`%` PROCEDURE `weekWaste_getDetail`()
|
|
||||||
BEGIN
|
|
||||||
DECLARE vLastWeek DATE;
|
|
||||||
DECLARE vWeek INT;
|
|
||||||
DECLARE vYear INT;
|
|
||||||
|
|
||||||
SET vLastWeek = TIMESTAMPADD(WEEK,-1,CURDATE());
|
|
||||||
SET vYear = YEAR(vLastWeek);
|
|
||||||
SET vWeek = WEEK(vLastWeek, 1);
|
|
||||||
|
|
||||||
SELECT *, 100 * dwindle / total AS percentage
|
|
||||||
FROM (
|
|
||||||
SELECT buyer,
|
|
||||||
ws.family,
|
|
||||||
sum(ws.saleTotal) AS total,
|
|
||||||
sum(ws.saleWaste) AS dwindle
|
|
||||||
FROM bs.waste ws
|
|
||||||
WHERE year = vYear AND week = vWeek
|
|
||||||
GROUP BY buyer, family
|
|
||||||
) sub
|
|
||||||
ORDER BY percentage DESC;
|
|
||||||
END$$
|
|
||||||
|
|
||||||
DELIMITER ;
|
|
|
@ -1,32 +0,0 @@
|
||||||
USE `vn`;
|
|
||||||
DROP function IF EXISTS `worker_isWorking`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
USE `vn`$$
|
|
||||||
CREATE DEFINER=`root`@`%` FUNCTION `worker_isWorking`(vWorkerFk INT) RETURNS tinyint(1)
|
|
||||||
READS SQL DATA
|
|
||||||
BEGIN
|
|
||||||
/**
|
|
||||||
* Comprueba si el trabajador está trabajando en el momento de la consulta
|
|
||||||
* @return Devuelve TRUE en caso de que este trabajando. Si se encuentra en un descanso devolverá FALSE
|
|
||||||
*/
|
|
||||||
DECLARE vLastIn DATETIME ;
|
|
||||||
|
|
||||||
SELECT MAX(timed) INTO vLastIn
|
|
||||||
FROM vn.workerTimeControl
|
|
||||||
WHERE userFk = vWorkerFk AND
|
|
||||||
direction = 'in';
|
|
||||||
|
|
||||||
IF (SELECT MOD(COUNT(*),2)
|
|
||||||
FROM vn.workerTimeControl
|
|
||||||
WHERE userFk = vWorkerFk AND
|
|
||||||
timed >= vLastIn
|
|
||||||
) THEN
|
|
||||||
RETURN TRUE;
|
|
||||||
ELSE
|
|
||||||
RETURN FALSE;
|
|
||||||
END IF;
|
|
||||||
END$$
|
|
||||||
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
|
@ -1,240 +0,0 @@
|
||||||
|
|
||||||
DROP procedure IF EXISTS `hedera`.`order_confirmWithUser`;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_confirmWithUser`(IN `vOrder` INT, IN `vUserId` INT)
|
|
||||||
BEGIN
|
|
||||||
/**
|
|
||||||
* Confirms an order, creating each of its tickets on the corresponding
|
|
||||||
* date, store and user.
|
|
||||||
*
|
|
||||||
* @param vOrder The order identifier
|
|
||||||
* @param vUser The user identifier
|
|
||||||
*/
|
|
||||||
DECLARE vOk BOOL;
|
|
||||||
DECLARE vDone BOOL DEFAULT FALSE;
|
|
||||||
DECLARE vWarehouse INT;
|
|
||||||
DECLARE vShipment DATETIME;
|
|
||||||
DECLARE vTicket INT;
|
|
||||||
DECLARE vNotes VARCHAR(255);
|
|
||||||
DECLARE vItem INT;
|
|
||||||
DECLARE vConcept VARCHAR(30);
|
|
||||||
DECLARE vAmount INT;
|
|
||||||
DECLARE vPrice DECIMAL(10,2);
|
|
||||||
DECLARE vSale INT;
|
|
||||||
DECLARE vRate INT;
|
|
||||||
DECLARE vRowId INT;
|
|
||||||
DECLARE vDelivery DATE;
|
|
||||||
DECLARE vAddress INT;
|
|
||||||
DECLARE vIsConfirmed BOOL;
|
|
||||||
DECLARE vClientId INT;
|
|
||||||
DECLARE vCompanyId INT;
|
|
||||||
DECLARE vAgencyModeId INT;
|
|
||||||
|
|
||||||
DECLARE TICKET_FREE INT DEFAULT 2;
|
|
||||||
|
|
||||||
DECLARE cDates CURSOR FOR
|
|
||||||
SELECT zgs.shipped, r.warehouse_id
|
|
||||||
FROM `order` o
|
|
||||||
JOIN order_row r ON r.order_id = o.id
|
|
||||||
LEFT JOIN tmp.zoneGetShipped zgs ON zgs.warehouseFk = r.warehouse_id
|
|
||||||
WHERE o.id = vOrder AND r.amount != 0
|
|
||||||
GROUP BY r.warehouse_id;
|
|
||||||
|
|
||||||
DECLARE cRows CURSOR FOR
|
|
||||||
SELECT r.id, r.item_id, i.name, r.amount, r.price, r.rate
|
|
||||||
FROM order_row r
|
|
||||||
JOIN vn.item i ON i.id = r.item_id
|
|
||||||
WHERE r.amount != 0
|
|
||||||
AND r.warehouse_id = vWarehouse
|
|
||||||
AND r.order_id = vOrder
|
|
||||||
ORDER BY r.rate DESC;
|
|
||||||
|
|
||||||
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
|
||||||
SET vDone = TRUE;
|
|
||||||
|
|
||||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
|
||||||
BEGIN
|
|
||||||
ROLLBACK;
|
|
||||||
RESIGNAL;
|
|
||||||
END;
|
|
||||||
|
|
||||||
-- Carga los datos del pedido
|
|
||||||
|
|
||||||
SELECT o.date_send, o.address_id, o.note,
|
|
||||||
o.confirmed, a.clientFk, o.company_id, o.agency_id
|
|
||||||
INTO vDelivery, vAddress, vNotes,
|
|
||||||
vIsConfirmed, vClientId, vCompanyId, vAgencyModeId
|
|
||||||
FROM hedera.`order` o
|
|
||||||
JOIN vn.address a ON a.id = o.address_id
|
|
||||||
WHERE o.id = vOrder;
|
|
||||||
|
|
||||||
-- Comprueba que el pedido no está confirmado
|
|
||||||
|
|
||||||
IF vIsConfirmed THEN
|
|
||||||
CALL util.throw ('ORDER_ALREADY_CONFIRMED');
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
-- Comprueba que el pedido no está vacío
|
|
||||||
|
|
||||||
SELECT COUNT(*) > 0 INTO vOk
|
|
||||||
FROM order_row WHERE order_id = vOrder AND amount > 0;
|
|
||||||
|
|
||||||
IF !vOk THEN
|
|
||||||
CALL util.throw ('ORDER_EMPTY');
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
-- Carga las fechas de salida de cada almacén
|
|
||||||
|
|
||||||
CALL vn.zone_getShippedWarehouse (vDelivery, vAddress, vAgencyModeId);
|
|
||||||
|
|
||||||
-- Trabajador que realiza la acción
|
|
||||||
|
|
||||||
IF vUserId IS NULL THEN
|
|
||||||
SELECT employeeFk INTO vUserId FROM orderConfig;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
-- Crea los tickets del pedido
|
|
||||||
|
|
||||||
START TRANSACTION;
|
|
||||||
|
|
||||||
OPEN cDates;
|
|
||||||
|
|
||||||
lDates:
|
|
||||||
LOOP
|
|
||||||
SET vTicket = NULL;
|
|
||||||
SET vDone = FALSE;
|
|
||||||
FETCH cDates INTO vShipment, vWarehouse;
|
|
||||||
|
|
||||||
IF vDone THEN
|
|
||||||
LEAVE lDates;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
-- Busca un ticket existente que coincida con los parametros
|
|
||||||
|
|
||||||
SELECT t.id INTO vTicket
|
|
||||||
FROM vn.ticket t
|
|
||||||
LEFT JOIN vn.ticketState tls on tls.ticket = t.id
|
|
||||||
JOIN `order` o
|
|
||||||
ON o.address_id = t.addressFk
|
|
||||||
AND vWarehouse = t.warehouseFk
|
|
||||||
AND o.agency_id = t.agencyModeFk
|
|
||||||
AND o.date_send = t.landed
|
|
||||||
AND vShipment = DATE(t.shipped)
|
|
||||||
WHERE o.id = vOrder
|
|
||||||
AND t.invoiceOutFk IS NULL
|
|
||||||
AND IFNULL(tls.alertLevel,0) = 0
|
|
||||||
AND t.clientFk <> 1118
|
|
||||||
LIMIT 1;
|
|
||||||
|
|
||||||
-- Crea el ticket en el caso de no existir uno adecuado
|
|
||||||
|
|
||||||
IF vTicket IS NULL
|
|
||||||
THEN
|
|
||||||
CALL vn.ticketCreateWithUser(
|
|
||||||
vClientId,
|
|
||||||
IFNULL(vShipment, CURDATE()),
|
|
||||||
vWarehouse,
|
|
||||||
vCompanyId,
|
|
||||||
vAddress,
|
|
||||||
vAgencyModeId,
|
|
||||||
NULL,
|
|
||||||
vDelivery,
|
|
||||||
vUserId,
|
|
||||||
vTicket
|
|
||||||
);
|
|
||||||
ELSE
|
|
||||||
INSERT INTO vncontrol.inter
|
|
||||||
SET Id_Ticket = vTicket,
|
|
||||||
Id_Trabajador = vUserId,
|
|
||||||
state_id = TICKET_FREE;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
INSERT IGNORE INTO vn.orderTicket
|
|
||||||
SET orderFk = vOrder,
|
|
||||||
ticketFk = vTicket;
|
|
||||||
|
|
||||||
-- Añade las notas
|
|
||||||
|
|
||||||
IF vNotes IS NOT NULL AND vNotes != ''
|
|
||||||
THEN
|
|
||||||
INSERT INTO vn.ticketObservation SET
|
|
||||||
ticketFk = vTicket,
|
|
||||||
observationTypeFk = 4 /* salesperson */ ,
|
|
||||||
`description` = vNotes
|
|
||||||
ON DUPLICATE KEY UPDATE
|
|
||||||
`description` = CONCAT(VALUES(`description`),'. ', `description`);
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
-- Añade los movimientos y sus componentes
|
|
||||||
|
|
||||||
OPEN cRows;
|
|
||||||
|
|
||||||
lRows:
|
|
||||||
LOOP
|
|
||||||
SET vDone = FALSE;
|
|
||||||
FETCH cRows INTO vRowId, vItem, vConcept, vAmount, vPrice, vRate;
|
|
||||||
|
|
||||||
IF vDone THEN
|
|
||||||
LEAVE lRows;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
INSERT INTO vn.sale
|
|
||||||
SET
|
|
||||||
itemFk = vItem,
|
|
||||||
ticketFk = vTicket,
|
|
||||||
concept = vConcept,
|
|
||||||
quantity = vAmount,
|
|
||||||
price = vPrice,
|
|
||||||
priceFixed = 0,
|
|
||||||
isPriceFixed = TRUE;
|
|
||||||
|
|
||||||
SET vSale = LAST_INSERT_ID();
|
|
||||||
|
|
||||||
INSERT INTO vn.saleComponent
|
|
||||||
(saleFk, componentFk, `value`)
|
|
||||||
SELECT vSale, cm.component_id, cm.price
|
|
||||||
FROM order_component cm
|
|
||||||
JOIN vn.component c ON c.id = cm.component_id
|
|
||||||
WHERE cm.order_row_id = vRowId
|
|
||||||
GROUP BY vSale, cm.component_id;
|
|
||||||
|
|
||||||
UPDATE order_row SET Id_Movimiento = vSale
|
|
||||||
WHERE id = vRowId;
|
|
||||||
|
|
||||||
END LOOP;
|
|
||||||
|
|
||||||
CLOSE cRows;
|
|
||||||
|
|
||||||
-- Fija el coste
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tComponents;
|
|
||||||
CREATE TEMPORARY TABLE tComponents
|
|
||||||
(INDEX (saleFk))
|
|
||||||
ENGINE = MEMORY
|
|
||||||
SELECT SUM(sc.`value`) valueSum, sc.saleFk
|
|
||||||
FROM vn.saleComponent sc
|
|
||||||
JOIN vn.component c ON c.id = sc.componentFk
|
|
||||||
JOIN vn.componentType ct ON ct.id = c.typeFk AND ct.isBase
|
|
||||||
JOIN vn.sale s ON s.id = sc.saleFk
|
|
||||||
WHERE s.ticketFk = vTicket
|
|
||||||
GROUP BY sc.saleFk;
|
|
||||||
|
|
||||||
UPDATE vn.sale s
|
|
||||||
JOIN tComponents mc ON mc.saleFk = s.id
|
|
||||||
SET s.priceFixed = valueSum;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE tComponents;
|
|
||||||
END LOOP;
|
|
||||||
|
|
||||||
CLOSE cDates;
|
|
||||||
|
|
||||||
DELETE FROM basketOrder WHERE orderFk = vOrder;
|
|
||||||
UPDATE `order` SET confirmed = TRUE, confirm_date = NOW()
|
|
||||||
WHERE id = vOrder;
|
|
||||||
|
|
||||||
COMMIT;
|
|
||||||
END$$
|
|
||||||
|
|
||||||
DELIMITER ;
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
CREATE
|
|
||||||
OR REPLACE ALGORITHM = UNDEFINED
|
|
||||||
DEFINER = `root`@`%`
|
|
||||||
SQL SECURITY DEFINER
|
|
||||||
VIEW `bi`.`tarifa_componentes_series` AS
|
|
||||||
SELECT
|
|
||||||
`ct`.`id` AS `tarifa_componentes_series_id`,
|
|
||||||
`ct`.`type` AS `Serie`,
|
|
||||||
`ct`.`isBase` AS `base`,
|
|
||||||
`ct`.`isMargin` AS `margen`
|
|
||||||
FROM
|
|
||||||
`vn`.`componentType` `ct`;
|
|
|
@ -1,3 +0,0 @@
|
||||||
INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId)
|
|
||||||
VALUES ('TicketWeekly', '*', 'WRITE', 'ALLOW', 'ROLE', 'buyer');
|
|
||||||
UPDATE salix.ACL SET accessType = 'READ' WHERE (id = '91');
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
@ -17,7 +17,7 @@ describe('Client activeWorkersWithRole', () => {
|
||||||
|
|
||||||
let isBuyer = await app.models.Account.hasRole(result[0].id, 'buyer');
|
let isBuyer = await app.models.Account.hasRole(result[0].id, 'buyer');
|
||||||
|
|
||||||
expect(result.length).toEqual(10);
|
expect(result.length).toEqual(11);
|
||||||
expect(isBuyer).toBeTruthy();
|
expect(isBuyer).toBeTruthy();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -6,7 +6,7 @@ describe('Client listWorkers', () => {
|
||||||
.then(result => {
|
.then(result => {
|
||||||
let amountOfEmployees = Object.keys(result).length;
|
let amountOfEmployees = Object.keys(result).length;
|
||||||
|
|
||||||
expect(amountOfEmployees).toEqual(49);
|
expect(amountOfEmployees).toEqual(50);
|
||||||
done();
|
done();
|
||||||
})
|
})
|
||||||
.catch(done.fail);
|
.catch(done.fail);
|
||||||
|
|
Loading…
Reference in New Issue