feat: refs #4948 Added ticket_doSelfConsumptionPackaging proc & event #2262
|
@ -1,8 +0,0 @@
|
||||||
DELIMITER $$
|
|
||||||
CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`ticket_doSelfConsumptionPackaging`
|
|
||||||
ON SCHEDULE EVERY 1 DAY
|
|
||||||
STARTS '2024-04-19 04:05:00.000'
|
|
||||||
ON COMPLETION PRESERVE
|
|
||||||
ENABLE
|
|
||||||
DO CALL ticket_doSelfConsumptionPackaging(util.yesterday(), util.yesterday())$$
|
|
||||||
DELIMITER ;
|
|
|
@ -1,36 +1,63 @@
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_doSelfConsumptionPackaging`(
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`expedition_doSelfConsumptionPackaging`(
|
||||||
vDateFrom DATE,
|
vSelf DATE,
|
||||||
vDateTo DATE
|
|
||||||
)
|
)
|
||||||
BEGIN
|
BEGIN
|
||||||
/**
|
/**
|
||||||
* Crea un ticket de autoconsumo de un rango determinado de fechas.
|
* Comprueba si existe un ticket de autoconsumo ese mismo día
|
||||||
|
* si no lo está lo crea, y añade la caja utilizada.
|
||||||
*
|
*
|
||||||
* @param vDateFrom Fecha desde
|
* @param vSelf Id de expedición
|
||||||
* @param vDateTo Fecha hasta
|
|
||||||
*/
|
*/
|
||||||
|
DECLARE vCurdate DATE;
|
||||||
DECLARE vClientFk INT;
|
DECLARE vClientFk INT;
|
||||||
DECLARE vAddressFk INT;
|
DECLARE vAddressFk INT;
|
||||||
DECLARE vTicketFk INT;
|
DECLARE vTicketFk INT;
|
||||||
DECLARE vWarehouseFk INT;
|
DECLARE vItemFk INT;
|
||||||
|
DECLARE vItemName VARCHAR(50);
|
||||||
|
DECLARE vExists BOOL;
|
||||||
|
|
||||||
SELECT pc.clientSelfConsumptionFk, pc.addressSelfConsumptionFk, w.id
|
SET vCurdate = util.VN_CURDATE();
|
||||||
INTO vClientFk, vAddressFk, vWarehouseFk
|
|
||||||
FROM productionConfig pc
|
|
||||||
JOIN warehouse w ON w.code = 'alg';
|
|
||||||
|
|
||||||
INSERT INTO ticket(clientFk, warehouseFk, shipped, nickname, addressFk)
|
SELECT clientSelfConsumptionFk, addressSelfConsumptionFk
|
||||||
SELECT vClientFk, vWarehouseFk, vDateFrom, 'CAJAS AUTOCONSUMO', vAddressFk;
|
INTO vClientFk, vAddressFk
|
||||||
|
FROM productionConfig;
|
||||||
|
|
||||||
SET vTicketFk = LAST_INSERT_ID();
|
IF vClientFk IS NULL OR vAddressFk IS NULL THEN
|
||||||
|
CALL util.throw('Some config parameters are not set');
|
||||||
|
END IF;
|
||||||
|
|
||||||
INSERT INTO sale(itemFk, ticketFk, concept, quantity)
|
SELECT i.id, t.warehouseFk, i.name
|
||||||
SELECT i.id, vTicketFk, i.name, COUNT(*)
|
INTO vItemFk, vWarehouseFk, vItemName
|
||||||
FROM expedition e
|
FROM expedition e
|
||||||
JOIN packaging p ON p.id = e.packagingFk
|
JOIN packaging p ON p.id = e.packagingFk
|
||||||
JOIN item i ON i.id = p.itemFk
|
JOIN item i ON i.id = p.itemFk
|
||||||
guillermo marked this conversation as resolved
Outdated
|
|||||||
WHERE e.created BETWEEN vDateFrom AND util.dayEnd(vDateTo)
|
JOIN ticket t ON t.id = e.ticketFk
|
||||||
GROUP BY e.packagingFk;
|
WHERE e.id = vSelf;
|
||||||
|
|
||||||
|
SELECT id INTO vTicketFk
|
||||||
|
FROM ticket
|
||||||
|
WHERE shipped BETWEEN vCurdate AND util.dayEnd(vCurdate)
|
||||||
|
AND clientFk = vClientFk
|
||||||
|
AND addressFk = vAddressFk
|
||||||
|
AND warehouseFk = vWarehouseFk;
|
||||||
|
|
||||||
|
IF vTicketFk IS NULL THEN
|
||||||
|
INSERT INTO ticket(clientFk, warehouseFk, shipped, nickname, addressFk)
|
||||||
|
SELECT vClientFk, vWarehouseFk, vCurdate, 'CAJAS AUTOCONSUMO', vAddressFk;
|
||||||
|
|
||||||
|
SET vTicketFk = LAST_INSERT_ID();
|
||||||
|
|
||||||
|
INSERT INTO sale(itemFk, ticketFk, concept, quantity)
|
||||||
|
SELECT vItemFk, vTicketFk, vItemName, 1;
|
||||||
|
ELSE
|
||||||
|
SELECT id INTO vExists
|
||||||
|
FROM sale
|
||||||
|
WHERE itemFk = vItemFk
|
||||||
|
AND ticketFk = vTicketFk;
|
||||||
|
|
||||||
|
-- Comprobar si existe o no y si existe, sumar +1 la quantity, si no, lo creamos
|
||||||
|
|
||||||
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
Loading…
Reference in New Issue
@pako creà el cau, hi ha que valorar si es llança en un rango de una semana o un mes, si volem que es cree sols un ticket amb tots els embalatges, o que faça un ticket per dia.
Hi haurà casos que fallarà el procés, per tant, el seguen dia que es llance posaria els dos dies junts en un ticket, lo cual per a fer revisions o comprobacions serà molt confús.
Cal també saber si s'ha llançat o no, per a que no torne a insertar els mateixos embalatges, pe mirar que no existisca previament un ticket i si hi ha borrar el contingut y insertar de nou.
Jo voldría un ticket per dia. Es podría fer un consignatari en el client 450 que fora el dels embalatges, i així es podría comprovar si existeix el ticket o no. El proc deuria de revisar i fer, si cal, els tickets de la última setmana, cada nit