parent
378ee1119f
commit
31b04cba75
|
@ -1,128 +0,0 @@
|
||||||
CREATE TABLE IF NOT EXISTS `vn`.`ticketCanAdvanceConfig` (
|
|
||||||
`id` INT auto_increment NULL,
|
|
||||||
`destinationOrder` INT NULL,
|
|
||||||
CONSTRAINT `ticketCanAdvanceConfig_PK` PRIMARY KEY (id)
|
|
||||||
)
|
|
||||||
ENGINE=InnoDB
|
|
||||||
DEFAULT CHARSET=utf8mb3
|
|
||||||
COLLATE=utf8mb3_unicode_ci;
|
|
||||||
|
|
||||||
INSERT INTO `vn`.`ticketCanAdvanceConfig`
|
|
||||||
SET `destinationOrder` = 5;
|
|
||||||
|
|
||||||
DELIMITER $$
|
|
||||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_canAdvance`(vDateFuture DATE, vDateToAdvance DATE, vWarehouseFk INT)
|
|
||||||
BEGIN
|
|
||||||
/**
|
|
||||||
* Devuelve los tickets y la cantidad de lineas de venta que se pueden adelantar.
|
|
||||||
*
|
|
||||||
* @param vDateFuture Fecha de los tickets que se quieren adelantar.
|
|
||||||
* @param vDateToAdvance Fecha a cuando se quiere adelantar.
|
|
||||||
* @param vWarehouseFk Almacén
|
|
||||||
*/
|
|
||||||
DECLARE vDateInventory DATE;
|
|
||||||
|
|
||||||
SELECT inventoried INTO vDateInventory FROM config;
|
|
||||||
|
|
||||||
CREATE OR REPLACE TEMPORARY TABLE tStock
|
|
||||||
(itemFk INT PRIMARY KEY, amount INT)
|
|
||||||
ENGINE = MEMORY;
|
|
||||||
|
|
||||||
INSERT INTO tStock(itemFk, amount)
|
|
||||||
SELECT itemFk, SUM(quantity) amount FROM
|
|
||||||
(
|
|
||||||
SELECT itemFk, quantity
|
|
||||||
FROM itemTicketOut
|
|
||||||
WHERE shipped >= vDateInventory
|
|
||||||
AND shipped < vDateFuture
|
|
||||||
AND warehouseFk = vWarehouseFk
|
|
||||||
UNION ALL
|
|
||||||
SELECT itemFk, quantity
|
|
||||||
FROM itemEntryIn
|
|
||||||
WHERE landed >= vDateInventory
|
|
||||||
AND landed < vDateFuture
|
|
||||||
AND isVirtualStock = FALSE
|
|
||||||
AND warehouseInFk = vWarehouseFk
|
|
||||||
UNION ALL
|
|
||||||
SELECT itemFk, quantity
|
|
||||||
FROM itemEntryOut
|
|
||||||
WHERE shipped >= vDateInventory
|
|
||||||
AND shipped < vDateFuture
|
|
||||||
AND warehouseOutFk = vWarehouseFk
|
|
||||||
) t
|
|
||||||
GROUP BY itemFk HAVING amount != 0;
|
|
||||||
|
|
||||||
CREATE OR REPLACE TEMPORARY TABLE tmp.filter
|
|
||||||
(INDEX (id))
|
|
||||||
SELECT dest.*,
|
|
||||||
origin.*
|
|
||||||
FROM (
|
|
||||||
SELECT s.ticketFk futureId,
|
|
||||||
t.workerFk,
|
|
||||||
t.shipped futureShipped,
|
|
||||||
t.totalWithVat futureTotalWithVat,
|
|
||||||
st.name futureState,
|
|
||||||
t.addressFk futureAddressFk,
|
|
||||||
am.name futureAgency,
|
|
||||||
count(s.id) futureLines,
|
|
||||||
GROUP_CONCAT(DISTINCT ipt.code ORDER BY ipt.code) futureIpt,
|
|
||||||
CAST(SUM(litros) AS DECIMAL(10,0)) futureLiters,
|
|
||||||
SUM((s.quantity <= IFNULL(tst.amount,0))) hasStock,
|
|
||||||
st.classColor futureClassColor,
|
|
||||||
(
|
|
||||||
count(s.id) -
|
|
||||||
SUM((s.quantity <= IFNULL(tst.amount,0)))
|
|
||||||
) notMovableLines,
|
|
||||||
(
|
|
||||||
count(s.id) =
|
|
||||||
SUM((s.quantity <= IFNULL(tst.amount,0)))
|
|
||||||
) isFullMovable
|
|
||||||
FROM ticket t
|
|
||||||
JOIN sale s ON s.ticketFk = t.id
|
|
||||||
JOIN saleVolume sv ON sv.saleFk = s.id
|
|
||||||
JOIN item i ON i.id = s.itemFk
|
|
||||||
JOIN ticketState ts ON ts.ticketFk = t.id
|
|
||||||
JOIN `state` st ON st.id = ts.stateFk
|
|
||||||
JOIN agencyMode am ON t.agencyModeFk = am.id
|
|
||||||
LEFT JOIN itemPackingType ipt ON ipt.code = i.itemPackingTypeFk
|
|
||||||
LEFT JOIN tStock tst ON tst.itemFk = i.id
|
|
||||||
WHERE t.shipped BETWEEN vDateFuture AND util.dayend(vDateFuture)
|
|
||||||
AND t.warehouseFk = vWarehouseFk
|
|
||||||
GROUP BY t.id
|
|
||||||
) origin
|
|
||||||
JOIN (
|
|
||||||
SELECT t.id,
|
|
||||||
t.addressFk,
|
|
||||||
st.name state,
|
|
||||||
GROUP_CONCAT(DISTINCT ipt.code ORDER BY ipt.code) ipt,
|
|
||||||
t.shipped,
|
|
||||||
t.totalWithVat,
|
|
||||||
am.name agency,
|
|
||||||
CAST(SUM(litros) AS DECIMAL(10,0)) liters,
|
|
||||||
CAST(COUNT(*) AS DECIMAL(10,0)) `lines`,
|
|
||||||
st.classColor,
|
|
||||||
IF(HOUR(t.shipped),
|
|
||||||
HOUR(t.shipped),
|
|
||||||
COALESCE(HOUR(zc.hour),HOUR(z.hour))
|
|
||||||
) preparation
|
|
||||||
FROM ticket t
|
|
||||||
JOIN sale s ON s.ticketFk = t.id
|
|
||||||
JOIN saleVolume sv ON sv.saleFk = s.id
|
|
||||||
JOIN item i ON i.id = s.itemFk
|
|
||||||
JOIN ticketState ts ON ts.ticketFk = t.id
|
|
||||||
JOIN `state` st ON st.id = ts.stateFk
|
|
||||||
JOIN agencyMode am ON t.agencyModeFk = am.id
|
|
||||||
JOIN ticketCanAdvanceConfig
|
|
||||||
LEFT JOIN itemPackingType ipt ON ipt.code = i.itemPackingTypeFk
|
|
||||||
LEFT JOIN `zone` z ON z.id = t.zoneFk
|
|
||||||
LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk
|
|
||||||
WHERE t.shipped BETWEEN vDateToAdvance AND util.dayend(vDateToAdvance)
|
|
||||||
AND t.warehouseFk = vWarehouseFk
|
|
||||||
AND st.order <= destinationOrder
|
|
||||||
GROUP BY t.id
|
|
||||||
) dest ON dest.addressFk = origin.futureAddressFk
|
|
||||||
WHERE origin.hasStock != 0;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE tStock;
|
|
||||||
END$$
|
|
||||||
DELIMITER ;
|
|
|
@ -1,5 +1,7 @@
|
||||||
|
|
||||||
|
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_canAdvance`(vDateFuture DATE, vDateToAdvance DATE, vWarehouseFk INT)
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_canAdvance`(vDateFuture DATE, vDateToAdvance DATE, vWarehouseFk INT)
|
||||||
BEGIN
|
BEGIN
|
||||||
/**
|
/**
|
||||||
* Devuelve los tickets y la cantidad de lineas de venta que se pueden adelantar.
|
* Devuelve los tickets y la cantidad de lineas de venta que se pueden adelantar.
|
||||||
|
@ -8,91 +10,79 @@ BEGIN
|
||||||
* @param vDateToAdvance Fecha a cuando se quiere adelantar.
|
* @param vDateToAdvance Fecha a cuando se quiere adelantar.
|
||||||
* @param vWarehouseFk Almacén
|
* @param vWarehouseFk Almacén
|
||||||
*/
|
*/
|
||||||
|
DECLARE vDateInventory DATE;
|
||||||
|
|
||||||
CALL item_getStock(vWarehouseFk, vDateToAdvance, NULL);
|
SELECT inventoried INTO vDateInventory FROM config;
|
||||||
CALL item_getMinacum(
|
|
||||||
vWarehouseFk,
|
CREATE OR REPLACE TEMPORARY TABLE tStock
|
||||||
vDateToAdvance,
|
(itemFk INT PRIMARY KEY, amount INT)
|
||||||
DATEDIFF(DATE_SUB(vDateFuture, INTERVAL 1 DAY), vDateToAdvance),
|
ENGINE = MEMORY;
|
||||||
NULL
|
|
||||||
);
|
INSERT INTO tStock(itemFk, amount)
|
||||||
|
SELECT itemFk, SUM(quantity) amount FROM
|
||||||
|
(
|
||||||
|
SELECT itemFk, quantity
|
||||||
|
FROM itemTicketOut
|
||||||
|
WHERE shipped >= vDateInventory
|
||||||
|
AND shipped < vDateFuture
|
||||||
|
AND warehouseFk = vWarehouseFk
|
||||||
|
UNION ALL
|
||||||
|
SELECT itemFk, quantity
|
||||||
|
FROM itemEntryIn
|
||||||
|
WHERE landed >= vDateInventory
|
||||||
|
AND landed < vDateFuture
|
||||||
|
AND isVirtualStock = FALSE
|
||||||
|
AND warehouseInFk = vWarehouseFk
|
||||||
|
UNION ALL
|
||||||
|
SELECT itemFk, quantity
|
||||||
|
FROM itemEntryOut
|
||||||
|
WHERE shipped >= vDateInventory
|
||||||
|
AND shipped < vDateFuture
|
||||||
|
AND warehouseOutFk = vWarehouseFk
|
||||||
|
) t
|
||||||
|
GROUP BY itemFk HAVING amount != 0;
|
||||||
|
|
||||||
CREATE OR REPLACE TEMPORARY TABLE tmp.filter
|
CREATE OR REPLACE TEMPORARY TABLE tmp.filter
|
||||||
(INDEX (id))
|
(INDEX (id))
|
||||||
SELECT
|
SELECT dest.*,
|
||||||
origin.ticketFk futureId,
|
origin.*
|
||||||
dest.ticketFk id,
|
|
||||||
dest.state,
|
|
||||||
origin.futureState,
|
|
||||||
origin.futureIpt,
|
|
||||||
dest.ipt,
|
|
||||||
origin.workerFk,
|
|
||||||
origin.futureLiters,
|
|
||||||
origin.futureLines,
|
|
||||||
dest.shipped,
|
|
||||||
origin.shipped futureShipped,
|
|
||||||
dest.totalWithVat,
|
|
||||||
origin.totalWithVat futureTotalWithVat,
|
|
||||||
dest.agency,
|
|
||||||
dest.agencyModeFk,
|
|
||||||
origin.futureAgency,
|
|
||||||
origin.agencyModeFk futureAgencyModeFk,
|
|
||||||
dest.lines,
|
|
||||||
dest.liters,
|
|
||||||
origin.futureLines - origin.hasStock AS notMovableLines,
|
|
||||||
(origin.futureLines = origin.hasStock) AS isFullMovable,
|
|
||||||
dest.zoneFk,
|
|
||||||
origin.futureZoneFk,
|
|
||||||
origin.futureZoneName,
|
|
||||||
origin.classColor futureClassColor,
|
|
||||||
dest.classColor,
|
|
||||||
origin.clientFk futureClientFk,
|
|
||||||
origin.addressFk futureAddressFk,
|
|
||||||
origin.warehouseFk futureWarehouseFk,
|
|
||||||
origin.companyFk futureCompanyFk,
|
|
||||||
IFNULL(dest.nickname, origin.nickname) nickname,
|
|
||||||
dest.landed
|
|
||||||
FROM (
|
FROM (
|
||||||
SELECT
|
SELECT s.ticketFk futureId,
|
||||||
s.ticketFk,
|
t.workerFk,
|
||||||
c.salesPersonFk workerFk,
|
t.shipped futureShipped,
|
||||||
t.shipped,
|
t.totalWithVat futureTotalWithVat,
|
||||||
t.totalWithVat,
|
st.name futureState,
|
||||||
st.name futureState,
|
t.addressFk futureAddressFk,
|
||||||
am.name futureAgency,
|
am.name futureAgency,
|
||||||
count(s.id) futureLines,
|
count(s.id) futureLines,
|
||||||
GROUP_CONCAT(DISTINCT ipt.code ORDER BY ipt.code) futureIpt,
|
GROUP_CONCAT(DISTINCT ipt.code ORDER BY ipt.code) futureIpt,
|
||||||
CAST(SUM(litros) AS DECIMAL(10,0)) futureLiters,
|
CAST(SUM(litros) AS DECIMAL(10,0)) futureLiters,
|
||||||
SUM(s.quantity <= (IFNULL(il.stock,0) + IFNULL(im.amount, 0))) hasStock,
|
SUM((s.quantity <= IFNULL(tst.amount,0))) hasStock,
|
||||||
z.id futureZoneFk,
|
st.classColor futureClassColor,
|
||||||
z.name futureZoneName,
|
(
|
||||||
st.classColor,
|
count(s.id) -
|
||||||
t.clientFk,
|
SUM((s.quantity <= IFNULL(tst.amount,0)))
|
||||||
t.nickname,
|
) notMovableLines,
|
||||||
|
(
|
||||||
|
count(s.id) =
|
||||||
|
SUM((s.quantity <= IFNULL(tst.amount,0)))
|
||||||
|
) isFullMovable
|
||||||
|
FROM ticket t
|
||||||
|
JOIN sale s ON s.ticketFk = t.id
|
||||||
|
JOIN saleVolume sv ON sv.saleFk = s.id
|
||||||
|
JOIN item i ON i.id = s.itemFk
|
||||||
|
JOIN ticketState ts ON ts.ticketFk = t.id
|
||||||
|
JOIN `state` st ON st.id = ts.stateFk
|
||||||
|
JOIN agencyMode am ON t.agencyModeFk = am.id
|
||||||
|
LEFT JOIN itemPackingType ipt ON ipt.code = i.itemPackingTypeFk
|
||||||
|
LEFT JOIN tStock tst ON tst.itemFk = i.id
|
||||||
|
WHERE t.shipped BETWEEN vDateFuture AND util.dayend(vDateFuture)
|
||||||
|
AND t.warehouseFk = vWarehouseFk
|
||||||
|
GROUP BY t.id
|
||||||
|
) origin
|
||||||
|
JOIN (
|
||||||
|
SELECT t.id,
|
||||||
t.addressFk,
|
t.addressFk,
|
||||||
t.warehouseFk,
|
|
||||||
t.companyFk,
|
|
||||||
t.agencyModeFk
|
|
||||||
FROM ticket t
|
|
||||||
JOIN client c ON c.id = t.clientFk
|
|
||||||
JOIN sale s ON s.ticketFk = t.id
|
|
||||||
JOIN saleVolume sv ON sv.saleFk = s.id
|
|
||||||
JOIN item i ON i.id = s.itemFk
|
|
||||||
JOIN ticketState ts ON ts.ticketFk = t.id
|
|
||||||
JOIN state st ON st.id = ts.stateFk
|
|
||||||
JOIN agencyMode am ON t.agencyModeFk = am.id
|
|
||||||
JOIN zone z ON t.zoneFk = z.id
|
|
||||||
LEFT JOIN itemPackingType ipt ON ipt.code = i.itemPackingTypeFk
|
|
||||||
LEFT JOIN tmp.itemMinacum im ON im.itemFk = i.id
|
|
||||||
AND im.warehouseFk = vWarehouseFk
|
|
||||||
LEFT JOIN tmp.itemList il ON il.itemFk = i.id
|
|
||||||
WHERE t.shipped BETWEEN vDateFuture AND util.dayend(vDateFuture)
|
|
||||||
AND t.warehouseFk = vWarehouseFk
|
|
||||||
GROUP BY t.id
|
|
||||||
) origin
|
|
||||||
LEFT JOIN (
|
|
||||||
SELECT
|
|
||||||
t.id ticketFk,
|
|
||||||
st.name state,
|
st.name state,
|
||||||
GROUP_CONCAT(DISTINCT ipt.code ORDER BY ipt.code) ipt,
|
GROUP_CONCAT(DISTINCT ipt.code ORDER BY ipt.code) ipt,
|
||||||
t.shipped,
|
t.shipped,
|
||||||
|
@ -101,31 +91,32 @@ BEGIN
|
||||||
CAST(SUM(litros) AS DECIMAL(10,0)) liters,
|
CAST(SUM(litros) AS DECIMAL(10,0)) liters,
|
||||||
CAST(COUNT(*) AS DECIMAL(10,0)) `lines`,
|
CAST(COUNT(*) AS DECIMAL(10,0)) `lines`,
|
||||||
st.classColor,
|
st.classColor,
|
||||||
t.clientFk,
|
CONCAT_WS(':',
|
||||||
t.nickname,
|
IF(HOUR(t.shipped),
|
||||||
t.addressFk,
|
HOUR(t.shipped),
|
||||||
t.zoneFk,
|
COALESCE(HOUR(zc.hour),HOUR(z.hour))),
|
||||||
t.warehouseFk,
|
IF(MINUTE(t.shipped),
|
||||||
t.companyFk,
|
MINUTE(t.shipped),
|
||||||
t.landed,
|
COALESCE(MINUTE(zc.hour),MINUTE(z.hour)))
|
||||||
t.agencyModeFk
|
) preparation
|
||||||
FROM ticket t
|
FROM ticket t
|
||||||
JOIN sale s ON s.ticketFk = t.id
|
JOIN sale s ON s.ticketFk = t.id
|
||||||
JOIN saleVolume sv ON sv.saleFk = s.id
|
JOIN saleVolume sv ON sv.saleFk = s.id
|
||||||
JOIN item i ON i.id = s.itemFk
|
JOIN item i ON i.id = s.itemFk
|
||||||
JOIN ticketState ts ON ts.ticketFk = t.id
|
JOIN ticketState ts ON ts.ticketFk = t.id
|
||||||
JOIN state st ON st.id = ts.stateFk
|
JOIN `state` st ON st.id = ts.stateFk
|
||||||
JOIN agencyMode am ON t.agencyModeFk = am.id
|
JOIN agencyMode am ON t.agencyModeFk = am.id
|
||||||
|
JOIN ticketCanAdvanceConfig
|
||||||
LEFT JOIN itemPackingType ipt ON ipt.code = i.itemPackingTypeFk
|
LEFT JOIN itemPackingType ipt ON ipt.code = i.itemPackingTypeFk
|
||||||
|
LEFT JOIN `zone` z ON z.id = t.zoneFk
|
||||||
|
LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk
|
||||||
WHERE t.shipped BETWEEN vDateToAdvance AND util.dayend(vDateToAdvance)
|
WHERE t.shipped BETWEEN vDateToAdvance AND util.dayend(vDateToAdvance)
|
||||||
AND t.warehouseFk = vWarehouseFk
|
AND t.warehouseFk = vWarehouseFk
|
||||||
AND st.order <= 5
|
AND st.order <= destinationOrder
|
||||||
GROUP BY t.id
|
GROUP BY t.id
|
||||||
) dest ON dest.addressFk = origin.addressFk
|
) dest ON dest.addressFk = origin.futureAddressFk
|
||||||
WHERE origin.hasStock;
|
WHERE origin.hasStock != 0;
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS
|
DROP TEMPORARY TABLE tStock;
|
||||||
tmp.itemList,
|
|
||||||
tmp.itemMinacum;
|
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
-- Place your SQL code here
|
||||||
|
CREATE TABLE IF NOT EXISTS `vn`.`ticketCanAdvanceConfig` (
|
||||||
|
`id` INT auto_increment NULL,
|
||||||
|
`destinationOrder` INT NULL,
|
||||||
|
CONSTRAINT `ticketCanAdvanceConfig_PK` PRIMARY KEY (id)
|
||||||
|
)
|
||||||
|
ENGINE=InnoDB
|
||||||
|
DEFAULT CHARSET=utf8mb3
|
||||||
|
COLLATE=utf8mb3_unicode_ci;
|
||||||
|
|
||||||
|
INSERT INTO `vn`.`ticketCanAdvanceConfig`
|
||||||
|
SET `destinationOrder` = 5;
|
Loading…
Reference in New Issue