159 lines
4.4 KiB
MySQL
159 lines
4.4 KiB
MySQL
|
ALTER TABLE `vn`.`operator` ADD sectorFk int(11) NULL;
|
||
|
ALTER TABLE `vn`.`operator` ADD labelerFk tinyint(3) unsigned NULL;
|
||
|
ALTER TABLE `vn`.`operator` ADD CONSTRAINT operator_FK_5 FOREIGN KEY (labelerFk) REFERENCES `vn`.`printer`(id) ON DELETE CASCADE ON UPDATE CASCADE;
|
||
|
|
||
|
UPDATE `vn`.`operator` o
|
||
|
JOIN (SELECT id, sectorFk, labelerFk
|
||
|
FROM `vn`.`worker`) sub ON sub.id = o.workerFk
|
||
|
SET o.sectorFk = sub.sectorFk,
|
||
|
o.labelerFk = sub.labelerFk;
|
||
|
|
||
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_printSticker`(
|
||
|
vSelf INT,
|
||
|
vLabelCount INT
|
||
|
)
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Prints a yellow label from a collection or a ticket
|
||
|
*
|
||
|
* @param vSelf collection or ticket
|
||
|
* @param vLabelCount number of times the collection has been printed
|
||
|
*/
|
||
|
DECLARE vPrintArgs JSON DEFAULT JSON_OBJECT('collectionOrTicketFk', vSelf);
|
||
|
|
||
|
IF vLabelCount IS NULL THEN
|
||
|
INSERT INTO ticketTrolley
|
||
|
SELECT ticketFk, 1
|
||
|
FROM ticketCollection
|
||
|
WHERE collectionFk = vSelf
|
||
|
ON DUPLICATE KEY UPDATE labelCount = labelCount + 1;
|
||
|
ELSE
|
||
|
SET vPrintArgs = JSON_MERGE_PATCH(vPrintArgs, JSON_OBJECT('labelCount', vLabelCount));
|
||
|
END IF;
|
||
|
|
||
|
CALL report_print(
|
||
|
'LabelCollection',
|
||
|
(SELECT o.labelerFk FROM operator o WHERE o.workerFk = account.myUser_getId()),
|
||
|
account.myUser_getId(),
|
||
|
vPrintArgs,
|
||
|
'high'
|
||
|
);
|
||
|
END$$
|
||
|
DELIMITER ;
|
||
|
|
||
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionPallet_printLabel`(vSelf INT)
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Calls the report_print procedure and passes it
|
||
|
* the necessary parameters for printing.
|
||
|
*
|
||
|
* @param vSelf expeditioPallet id.
|
||
|
*/
|
||
|
DECLARE vPrinterFk INT;
|
||
|
DECLARE vUserFk INT DEFAULT account.myUser_getId();
|
||
|
|
||
|
SELECT o.labelerFk INTO vPrinterFk
|
||
|
FROM operator o
|
||
|
WHERE o.workerFk = vUserFk;
|
||
|
|
||
|
CALL vn.report_print(
|
||
|
'LabelPalletExpedition',
|
||
|
vPrinterFk,
|
||
|
account.myUser_getId(),
|
||
|
JSON_OBJECT('palletFk', vSelf, 'userFk', vUserFk),
|
||
|
'high'
|
||
|
);
|
||
|
|
||
|
UPDATE vn.expeditionPallet
|
||
|
SET isPrint = TRUE
|
||
|
WHERE id = vSelf;
|
||
|
END$$
|
||
|
DELIMITER ;
|
||
|
|
||
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_getAlternatives`(vShelvingFk VARCHAR(10))
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Devuelve un listado de posibles ubicaciones alternativas a ubicar los item de la matricula
|
||
|
* del carro que se le ha pasado.
|
||
|
*
|
||
|
* @param vShelvingFk matricula del carro
|
||
|
*/
|
||
|
SELECT is2.id,is2.shelvingFk , p.code, is2.itemFk , is2.visible, p.pickingOrder
|
||
|
FROM itemShelving is2
|
||
|
JOIN shelving sh ON sh.code = is2.shelvingFk
|
||
|
JOIN parking p ON p.id = sh.parkingFk
|
||
|
JOIN sector s ON s.id = p.sectorFk
|
||
|
LEFT JOIN operator o ON o.sectorFk = s.id
|
||
|
LEFT JOIN worker w ON w.sectorFk = s.id AND w.id = account.myUser_getId()
|
||
|
JOIN warehouse wh ON wh.id = s.warehouseFk
|
||
|
JOIN itemShelving is3 ON is3.itemFk = is2.itemFk AND is3.shelvingFk = vShelvingFk COLLATE utf8_unicode_ci
|
||
|
WHERE is2.shelvingFk <> vShelvingFk COLLATE utf8_unicode_ci
|
||
|
GROUP BY is2.id
|
||
|
ORDER BY p.pickingOrder DESC;
|
||
|
END$$
|
||
|
DELIMITER ;
|
||
|
|
||
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`operator_beforeInsert`
|
||
|
BEFORE INSERT ON `operator`
|
||
|
FOR EACH ROW
|
||
|
BEGIN
|
||
|
CALL vn.printer_checkSector(NEW.labelerFk, NEW.sectorFk);
|
||
|
END$$
|
||
|
DELIMITER ;
|
||
|
|
||
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`operator_beforeUpdate`
|
||
|
BEFORE UPDATE ON `operator`
|
||
|
FOR EACH ROW
|
||
|
BEGIN
|
||
|
IF NOT (NEW.labelerFk <=> OLD.labelerFk AND NEW.sectorFk <=> OLD.sectorFk) THEN
|
||
|
CALL vn.printer_checkSector(NEW.labelerFk, NEW.sectorFk);
|
||
|
END IF;
|
||
|
END$$
|
||
|
DELIMITER ;
|
||
|
|
||
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`worker_beforeUpdate`
|
||
|
BEFORE UPDATE ON `worker`
|
||
|
FOR EACH ROW
|
||
|
BEGIN
|
||
|
IF NOT (NEW.labelerFk <=> OLD.labelerFk AND NEW.sectorFk <=> OLD.sectorFk) THEN
|
||
|
CALL vn.printer_checkSector(NEW.labelerFk, NEW.sectorFk);
|
||
|
|
||
|
INSERT IGNORE INTO vn.operator (workerFk)
|
||
|
VALUES (NEW.id);
|
||
|
|
||
|
UPDATE operator
|
||
|
SET labelerFk = NEW.labelerFk,
|
||
|
sectorFk = NEW.sectorFk
|
||
|
WHERE workerFk = NEW.id;
|
||
|
END IF;
|
||
|
END$$
|
||
|
DELIMITER ;
|
||
|
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost`
|
||
|
SQL SECURITY DEFINER
|
||
|
VIEW `vn`.`operatorWorkerCode`
|
||
|
AS SELECT `o`.`workerFk` AS `workerFk`,
|
||
|
concat(`w`.`firstName`, ' ', `w`.`lastName`) AS `fullName`,
|
||
|
`w`.`code` AS `code`,
|
||
|
`o`.`numberOfWagons` AS `numberOfWagons`
|
||
|
FROM (
|
||
|
(
|
||
|
`vn`.`worker` `w`
|
||
|
JOIN `vn`.`operator` `o` ON(`o`.`workerFk` = `w`.`id`)
|
||
|
)
|
||
|
JOIN `vn`.`sector` `s` ON(`o`.`sectorFk` = `s`.`id`)
|
||
|
)
|
||
|
WHERE `o`.`sectorFk` IS NOT NULL
|
||
|
AND `s`.`code` IN (
|
||
|
'H2',
|
||
|
'H2',
|
||
|
'PEQUES_H',
|
||
|
'ALTILLO COMP',
|
||
|
'ALTILLO ARTI'
|
||
|
)
|