Compare commits
19 Commits
dev
...
8227-roadm
Author | SHA1 | Date |
---|---|---|
Guillermo Bonet | 12604d0f67 | |
Guillermo Bonet | 8dc803b5df | |
Guillermo Bonet | b40f145613 | |
Guillermo Bonet | 855600811e | |
Guillermo Bonet | 123f28055e | |
Guillermo Bonet | a14d6227a1 | |
Guillermo Bonet | 56b0baebaa | |
Guillermo Bonet | 75168eef91 | |
Guillermo Bonet | 609df98614 | |
Guillermo Bonet | 75b0589561 | |
Guillermo Bonet | e9f1e28ac0 | |
Guillermo Bonet | 306eb6a059 | |
Guillermo Bonet | a6908aa8c0 | |
Guillermo Bonet | ce8b707400 | |
Guillermo Bonet | 162cd4d69e | |
Guillermo Bonet | 0177353b30 | |
Guillermo Bonet | 052630d268 | |
Guillermo Bonet | 482fe77159 | |
Guillermo Bonet | 477646ba31 |
|
@ -750,17 +750,15 @@ INSERT INTO `vn`.`zoneClosure` (`zoneFk`, `dated`, `hour`)
|
||||||
|
|
||||||
INSERT INTO `vn`.`zoneConfig` (`id`, `scope`) VALUES (1, '1');
|
INSERT INTO `vn`.`zoneConfig` (`id`, `scope`) VALUES (1, '1');
|
||||||
|
|
||||||
INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agencyModeFk`, `description`, `m3`, `cost`, `started`, `finished`, `zoneFk`, `dated`)
|
INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agencyModeFk`, `description`, `m3`, `cost`, `started`, `finished`, `dated`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, '1899-12-30 12:15:00', 133, util.VN_CURDATE(), 1, 1, 'first route', 1.8, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1, util.VN_CURDATE()),
|
(1, '1899-12-30 12:15:00', 56, util.VN_CURDATE(), 1, 1, 'first route', 1.8, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), util.VN_CURDATE()),
|
||||||
(2, '1899-12-30 13:20:00', 56, util.VN_CURDATE(), 1, 2, 'second route', 0.2, 20, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 9, util.VN_CURDATE()),
|
(2, '1899-12-30 13:20:00', 56, util.VN_CURDATE(), 1, 2, 'second route', 0.2, 20, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), util.VN_CURDATE()),
|
||||||
(3, '1899-12-30 14:30:00', 56, util.VN_CURDATE(), 2, 3, 'third route', 0.5, 30, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 10, util.VN_CURDATE()),
|
(3, '1899-12-30 14:30:00', 56, util.VN_CURDATE(), 2, 3, 'third route', 0.5, 30, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), util.VN_CURDATE()),
|
||||||
(4, '1899-12-30 15:45:00', 56, util.VN_CURDATE(), 3, 4, 'fourth route', 0, 40, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 12, util.VN_CURDATE()),
|
(4, '1899-12-30 15:45:00', 56, util.VN_CURDATE(), 3, 4, 'fourth route', 0, 40, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), util.VN_CURDATE()),
|
||||||
(5, '1899-12-30 16:00:00', 56, util.VN_CURDATE(), 4, 5, 'fifth route', 0.1, 50, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 13, util.VN_CURDATE()),
|
(5, '1899-12-30 16:00:00', 56, util.VN_CURDATE(), 4, 5, 'fifth route', 0.1, 50, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), util.VN_CURDATE()),
|
||||||
(6, NULL, 57, util.VN_CURDATE(), 5, 7, 'sixth route', 1.7, 60, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 3, util.VN_CURDATE()),
|
(6, NULL, 57, util.VN_CURDATE(), 5, 7, 'sixth route', 1.7, 60, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), util.VN_CURDATE()),
|
||||||
(7, NULL, 57, util.VN_CURDATE(), 6, 8, 'seventh route', 0, 70, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 5, util.VN_CURDATE()),
|
(7, NULL, 57, util.VN_CURDATE(), 6, 8, 'seventh route', 0, 70, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), util.VN_CURDATE());
|
||||||
(8, NULL, 133, util.VN_CURDATE(), 1, 1, 'eighth route', 1.8, 10.0, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1, util.VN_CURDATE()),
|
|
||||||
(9, NULL, 133, util.VN_CURDATE(), 1, 2, 'ninth route', 0.2, 20.0, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 9, util.VN_CURDATE());
|
|
||||||
|
|
||||||
INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `zoneFk`, `zonePrice`, `zoneBonus`, `created`, `weight`, `cmrFk`, `problem`, `risk`)
|
INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `zoneFk`, `zonePrice`, `zoneBonus`, `created`, `weight`, `cmrFk`, `problem`, `risk`)
|
||||||
VALUES
|
VALUES
|
||||||
|
@ -2756,13 +2754,13 @@ INSERT INTO `vn`.`roadmapAddress` (`addressFk`)
|
||||||
(3),
|
(3),
|
||||||
(4);
|
(4);
|
||||||
|
|
||||||
INSERT INTO `vn`.`roadmap` (`id`, `name`, `tractorPlate`, `trailerPlate`, `phone`, `supplierFk`, `etd`, `observations`, `userFk`, `price`, `driverName`)
|
INSERT INTO `vn`.`roadmap` (`id`, `name`, `tractorPlate`, `trailerPlate`, `phone`, `supplierFk`, `etd`, `eta`, `observations`, `editorFk`, `price`, `driverName`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 'val-algemesi', '1234-BCD', '9876-BCD', '111111111', 1, util.VN_NOW(), 'this is test observation', 1, 15, 'Batman'),
|
(1, 'val-algemesi', '1234-BCD', '9876-BCD', '111111111', 1, util.VN_NOW(), DATE_ADD(util.VN_NOW(), INTERVAL 2 DAY), 'this is test observation', 1, 15, 'Batman'),
|
||||||
(2, 'alg-valencia', '2345-CDF', '8765-BCD', '111111111', 1, util.VN_NOW(), 'test observation', 1, 20, 'Robin'),
|
(2, 'alg-valencia', '2345-CDF', '8765-BCD', '111111111', 1, util.VN_NOW(), DATE_ADD(util.VN_NOW(), INTERVAL 5 DAY), 'test observation', 1, 20, 'Robin'),
|
||||||
(3, 'alz-algemesi', '3456-DFG', '7654-BCD', '222222222', 2, DATE_ADD(util.VN_NOW(), INTERVAL 2 DAY), 'observations...', 2, 25, 'Driverman');
|
(3, 'alz-algemesi', '3456-DFG', '7654-BCD', '222222222', 2, DATE_ADD(util.VN_NOW(), INTERVAL 3 DAY), DATE_ADD(util.VN_NOW(), INTERVAL 6 DAY), 'observations...', 2, 25, 'Driverman');
|
||||||
|
|
||||||
INSERT INTO `vn`.`roadmapStop` (`id`, `roadmapFk`, `addressFk`, `eta`, `description`, `userFk`)
|
INSERT INTO `vn`.`roadmapStop` (`id`, `roadmapFk`, `roadmapAddressFk`, `eta`, `description`, `editorFk`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 1, 1, DATE_ADD(util.VN_NOW(), INTERVAL 1 DAY), 'Best truck in fleet', 1),
|
(1, 1, 1, DATE_ADD(util.VN_NOW(), INTERVAL 1 DAY), 'Best truck in fleet', 1),
|
||||||
(2, 1, 2, DATE_ADD(util.VN_NOW(), INTERVAL '1 2' DAY_HOUR), 'Second truck in fleet', 1),
|
(2, 1, 2, DATE_ADD(util.VN_NOW(), INTERVAL '1 2' DAY_HOUR), 'Second truck in fleet', 1),
|
||||||
|
@ -3207,7 +3205,7 @@ UPDATE vn.department
|
||||||
SET workerFk = null;
|
SET workerFk = null;
|
||||||
|
|
||||||
INSERT INTO vn.packaging
|
INSERT INTO vn.packaging
|
||||||
VALUES('--', 2745600.00, 100.00, 120.00, 220.00, 0.00, 1, '2001-01-01 00:00:00.000', NULL, NULL, NULL, 0.00, 16, 0.00, 0, NULL, 0.00, NULL, NULL, 0, NULL, 0, 0,0,1,0);
|
VALUES('--', 2745600.00, 100.00, 120.00, 220.00, 0.00, 1, '2001-01-01 00:00:00.000', NULL, NULL, NULL, 0.00, 16, 0.00, 0, NULL, 0.00, NULL, NULL, 0, NULL, 0, 0,0,1);
|
||||||
|
|
||||||
|
|
||||||
INSERT IGNORE INTO vn.intrastat
|
INSERT IGNORE INTO vn.intrastat
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`getTimeBetweenRoadmapAddresses`(
|
||||||
|
vRoadmapAddressFrom INT,
|
||||||
|
vRoadmapAddressTo INT
|
||||||
|
)
|
||||||
|
RETURNS int(11)
|
||||||
|
DETERMINISTIC
|
||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* Retorna el tiempo en segundos que se suele tardar en ir
|
||||||
|
* de un punto de distribución a otro en una ruta troncal.
|
||||||
|
*
|
||||||
|
* @param vRoadmapAddressFrom Punto de distribución de origen
|
||||||
|
* @param vRoadmapAddressTo Punto de distribución de destino
|
||||||
|
* @return Tiempo en segundos
|
||||||
|
*/
|
||||||
|
DECLARE vSeconds INT;
|
||||||
|
|
||||||
|
WITH wRoadmapStop AS (
|
||||||
|
SELECT ROW_NUMBER() OVER(PARTITION BY roadmapFk ORDER BY eta) `sequence`,
|
||||||
|
roadmapFk,
|
||||||
|
roadmapAddressFk,
|
||||||
|
eta
|
||||||
|
FROM vn.roadmapStop
|
||||||
|
WHERE roadmapFk IS NOT NULL
|
||||||
|
AND roadmapAddressFk IS NOT NULL
|
||||||
|
AND eta IS NOT NULL
|
||||||
|
)
|
||||||
|
SELECT AVG(TIME_TO_SEC(TIMEDIFF(rsTo.eta, rsFrom.eta))) INTO vSeconds
|
||||||
|
FROM wRoadmapStop rsFrom
|
||||||
|
JOIN wRoadmapStop rsTo ON rsTo.roadmapFk = rsFrom.roadmapFk
|
||||||
|
WHERE rsFrom.roadmapAddressFk = vRoadmapAddressFrom
|
||||||
|
AND rsTo.roadmapAddressFk = vRoadmapAddressTo
|
||||||
|
AND rsFrom.`sequence` + 1 = rsTo.`sequence`;
|
||||||
|
|
||||||
|
IF NOT IFNULL(vSeconds, 0) THEN
|
||||||
|
WITH wRoadmap AS (
|
||||||
|
SELECT id,
|
||||||
|
roadmapAddressFk,
|
||||||
|
etd
|
||||||
|
FROM vn.roadmap
|
||||||
|
WHERE roadmapAddressFk = vRoadmapAddressFrom
|
||||||
|
AND etd IS NOT NULL
|
||||||
|
), wRoadmapStop AS (
|
||||||
|
SELECT ROW_NUMBER() OVER(PARTITION BY roadmapFk ORDER BY eta) `sequence`,
|
||||||
|
roadmapFk,
|
||||||
|
roadmapAddressFk,
|
||||||
|
eta
|
||||||
|
FROM vn.roadmapStop
|
||||||
|
WHERE roadmapFk IS NOT NULL
|
||||||
|
AND roadmapAddressFk = vRoadmapAddressTo
|
||||||
|
AND eta IS NOT NULL
|
||||||
|
)
|
||||||
|
SELECT AVG(TIME_TO_SEC(TIMEDIFF(rsTo.eta, rFrom.etd))) INTO vSeconds
|
||||||
|
FROM wRoadmap rFrom
|
||||||
|
JOIN wRoadmapStop rsTo ON rsTo.roadmapFk = rFrom.id
|
||||||
|
AND rsTo.`sequence` = 1;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
RETURN vSeconds;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,71 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`roadmap_cloneDay`(
|
||||||
|
vDateToCopy DATE,
|
||||||
|
vDateToPaste DATE
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* Clona roadmaps de un día a otro, incluyendo las paradas y sin algunos
|
||||||
|
* campos de la tabla principal, como matrículas, conductores...
|
||||||
|
*
|
||||||
|
* @param vDateToCopy Fecha para copiar
|
||||||
|
* @param vDateToPaste Fecha para pegar
|
||||||
|
*/
|
||||||
|
DECLARE vDaysDiff INT;
|
||||||
|
DECLARE vNextRoadmapId INT;
|
||||||
|
|
||||||
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||||
|
BEGIN
|
||||||
|
ROLLBACK;
|
||||||
|
RESIGNAL;
|
||||||
|
END;
|
||||||
|
|
||||||
|
SET vDaysDiff = DATEDIFF(vDateToPaste, vDateToCopy);
|
||||||
|
|
||||||
|
IF vDaysDiff IS NULL THEN
|
||||||
|
CALL util.throw("No valid dates");
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
SELECT AUTO_INCREMENT INTO vNextRoadmapId
|
||||||
|
FROM information_schema.tables
|
||||||
|
WHERE table_name = 'roadmap'
|
||||||
|
AND table_schema = 'vn';
|
||||||
|
|
||||||
|
CREATE OR REPLACE TEMPORARY TABLE tmp.roadmapsToCopy
|
||||||
|
ENGINE = MEMORY
|
||||||
|
SELECT ROW_NUMBER() OVER(ORDER BY id) rowOrder,
|
||||||
|
id,
|
||||||
|
`name`,
|
||||||
|
roadmapAddressFk,
|
||||||
|
etd,
|
||||||
|
eta,
|
||||||
|
observations,
|
||||||
|
price
|
||||||
|
FROM roadmap
|
||||||
|
WHERE etd BETWEEN vDateToCopy AND util.dayEnd(vDateToCopy);
|
||||||
|
|
||||||
|
INSERT INTO roadmap (`name`, roadmapAddressFk, etd, eta, observations, price)
|
||||||
|
SELECT `name`,
|
||||||
|
roadmapAddressFk,
|
||||||
|
etd + INTERVAL vDaysDiff DAY,
|
||||||
|
eta + INTERVAL vDaysDiff DAY,
|
||||||
|
observations,
|
||||||
|
price
|
||||||
|
FROM tmp.roadmapsToCopy;
|
||||||
|
|
||||||
|
INSERT INTO roadmapStop (roadmapFk, roadmapAddressFk, eta, `description`, bufferFk)
|
||||||
|
SELECT (rtc.rowOrder - 1) + vNextRoadmapId,
|
||||||
|
rs.roadmapAddressFk,
|
||||||
|
rs.eta + INTERVAL vDaysDiff DAY,
|
||||||
|
rs.description,
|
||||||
|
rs.bufferFk
|
||||||
|
FROM tmp.roadmapsToCopy rtc
|
||||||
|
JOIN roadmapStop rs ON rs.roadmapFk = rtc.id;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE tmp.roadmapsToCopy;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -1,14 +1,21 @@
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`vehicle_checkNumberPlate`(vNumberPlate VARCHAR(10), vCountryCodeFk VARCHAR(2))
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`vehicle_checkNumberPlate`(
|
||||||
|
vNumberPlate VARCHAR(10),
|
||||||
|
vCountryCodeFk VARCHAR(2)
|
||||||
|
)
|
||||||
BEGIN
|
BEGIN
|
||||||
/**
|
/**
|
||||||
* Comprueba si la matricula pasada tiene el formato correcto dependiendo del pais del vehiculo
|
* Comprueba si la matricula pasada tiene el formato
|
||||||
|
* correcto dependiendo del pais del vehiculo.
|
||||||
|
*
|
||||||
|
* @param vNumberPlate Número de matricula
|
||||||
|
* @param vCountryCodeFk Código de pais
|
||||||
*/
|
*/
|
||||||
DECLARE vRegex VARCHAR(45);
|
DECLARE vRegex VARCHAR(45);
|
||||||
|
|
||||||
SELECT vp.regex INTO vRegex
|
SELECT regex INTO vRegex
|
||||||
FROM vehiclePlateRegex vp
|
FROM vehiclePlateRegex
|
||||||
WHERE vp.countryCodeFk = vCountryCodeFk;
|
WHERE countryCodeFk = vCountryCodeFk;
|
||||||
|
|
||||||
IF NOT vNumberPlate REGEXP BINARY (vRegex)THEN
|
IF NOT vNumberPlate REGEXP BINARY (vRegex)THEN
|
||||||
CALL util.throw(CONCAT('Error: la matricula ', vNumberPlate, ' no es valida para ',vCountryCodeFk));
|
CALL util.throw(CONCAT('Error: la matricula ', vNumberPlate, ' no es valida para ',vCountryCodeFk));
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeDelete`
|
||||||
|
BEFORE DELETE ON `roadmapStop`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
DECLARE vMaxEta DATETIME;
|
||||||
|
DECLARE vRoadmapEta DATETIME;
|
||||||
|
|
||||||
|
IF OLD.roadmapFk IS NOT NULL THEN
|
||||||
|
SELECT MAX(eta) INTO vMaxEta
|
||||||
|
FROM roadmapStop
|
||||||
|
WHERE roadmapFk = OLD.roadmapFk
|
||||||
|
AND id <> OLD.id;
|
||||||
|
|
||||||
|
SELECT eta INTO vRoadmapEta
|
||||||
|
FROM roadmap
|
||||||
|
WHERE id = OLD.roadmapFk;
|
||||||
|
|
||||||
|
IF vMaxEta <> vRoadmapEta OR vMaxEta IS NULL THEN
|
||||||
|
UPDATE roadmap
|
||||||
|
SET eta = vMaxEta
|
||||||
|
WHERE id = OLD.roadmapFk;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -3,8 +3,30 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeInser
|
||||||
BEFORE INSERT ON `roadmapStop`
|
BEFORE INSERT ON `roadmapStop`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
|
DECLARE vRoadmapEta DATETIME;
|
||||||
|
|
||||||
SET NEW.description = UCASE(NEW.description);
|
SET NEW.editorFk = account.myUser_getId();
|
||||||
|
|
||||||
|
IF NEW.description IS NOT NULL THEN
|
||||||
|
SET NEW.description = UCASE(NEW.description);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NEW.roadmapFk IS NOT NULL THEN
|
||||||
|
IF NEW.eta < (SELECT etd FROM roadmap WHERE id = NEW.roadmapFk) THEN
|
||||||
|
CALL util.throw('Departure time can not be after arrival time');
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NEW.roadmapFk IS NOT NULL AND NEW.eta IS NOT NULL THEN
|
||||||
|
SELECT eta INTO vRoadmapEta
|
||||||
|
FROM roadmap
|
||||||
|
WHERE id = NEW.roadmapFk;
|
||||||
|
|
||||||
|
IF vRoadmapEta < NEW.eta OR vRoadmapEta IS NULL THEN
|
||||||
|
UPDATE roadmap
|
||||||
|
SET eta = NEW.eta
|
||||||
|
WHERE id = NEW.roadmapFk;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
|
@ -3,8 +3,40 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeUpdat
|
||||||
BEFORE UPDATE ON `roadmapStop`
|
BEFORE UPDATE ON `roadmapStop`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
|
DECLARE vMaxEta DATETIME;
|
||||||
|
DECLARE vCurrentEta DATETIME;
|
||||||
|
|
||||||
SET NEW.description = UCASE(NEW.description);
|
SET NEW.editorFk = account.myUser_getId();
|
||||||
|
|
||||||
|
IF NOT (NEW.description <=> OLD.description) THEN
|
||||||
|
SET NEW.description = UCASE(NEW.description);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF (NOT (NEW.roadmapFk <=> OLD.roadmapFk) AND NEW.roadmapFk IS NOT NULL)
|
||||||
|
OR (NOT (NEW.eta <=> OLD.eta)) THEN
|
||||||
|
|
||||||
|
IF NEW.eta < (SELECT etd FROM roadmap WHERE id = NEW.roadmapFk) THEN
|
||||||
|
CALL util.throw('Departure time can not be after arrival time');
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
SELECT MAX(eta) INTO vMaxEta
|
||||||
|
FROM roadmapStop
|
||||||
|
WHERE roadmapFk = NEW.roadmapFk
|
||||||
|
AND id <> OLD.id;
|
||||||
|
|
||||||
|
IF vMaxEta < NEW.eta OR vMaxEta IS NULL THEN
|
||||||
|
SET vMaxEta = NEW.eta;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
SELECT eta INTO vCurrentEta
|
||||||
|
FROM roadmap
|
||||||
|
WHERE id = NEW.roadmapFk;
|
||||||
|
|
||||||
|
IF (vMaxEta <> vCurrentEta OR vMaxEta IS NULL) OR vMaxEta IS NOT NULL THEN
|
||||||
|
UPDATE roadmap
|
||||||
|
SET eta = vMaxEta
|
||||||
|
WHERE id = NEW.roadmapFk;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_afterUpdate`
|
||||||
|
AFTER UPDATE ON `roadmap`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
DECLARE vSeconds INT;
|
||||||
|
|
||||||
|
IF NOT (NEW.etd <=> OLD.etd) THEN
|
||||||
|
SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd));
|
||||||
|
IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN
|
||||||
|
UPDATE roadmapStop
|
||||||
|
SET eta = eta + INTERVAL vSeconds SECOND
|
||||||
|
WHERE roadmapFk = NEW.id;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -3,10 +3,31 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_beforeInsert`
|
||||||
BEFORE INSERT ON `roadmap`
|
BEFORE INSERT ON `roadmap`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
|
SET NEW.editorFk = account.myUser_getId();
|
||||||
|
|
||||||
|
IF NEW.name IS NOT NULL THEN
|
||||||
|
SET NEW.name = UCASE(NEW.name);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NEW.trailerPlate IS NOT NULL OR NEW.tugPlate IS NOT NULL THEN
|
||||||
|
SET NEW.m3 = (SELECT SUM(m3) FROM vehicle WHERE numberPlate IN (NEW.trailerPlate, NEW.tugPlate));
|
||||||
|
END IF;
|
||||||
|
|
||||||
IF NEW.driver1Fk IS NOT NULL THEN
|
IF NEW.driver1Fk IS NOT NULL THEN
|
||||||
SET NEW.driverName = (SELECT firstName FROM worker WHERE id = NEW.driver1Fk);
|
SET NEW.driverName = (SELECT CONCAT(w.firstName, ' ', w.lastName)
|
||||||
ELSE
|
FROM worker w
|
||||||
SET NEW.driverName = NULL;
|
WHERE w.id = NEW.driver1Fk);
|
||||||
|
|
||||||
|
SET NEW.phone = (SELECT COALESCE(w.phone, c.mobile, c.phone, c.mobile)
|
||||||
|
FROM worker w
|
||||||
|
LEFT JOIN client c ON c.id = w.id
|
||||||
|
WHERE w.id = NEW.driver1Fk);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NEW.driverChangeFk IS NOT NULL THEN
|
||||||
|
SET NEW.driverChangeName = (SELECT CONCAT(w.firstName, ' ', w.lastName)
|
||||||
|
FROM worker w
|
||||||
|
WHERE w.id = NEW.driverChangeFk);
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
|
@ -3,10 +3,39 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_beforeUpdate`
|
||||||
BEFORE UPDATE ON `roadmap`
|
BEFORE UPDATE ON `roadmap`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
IF NEW.driver1Fk IS NOT NULL THEN
|
SET NEW.editorFk = account.myUser_getId();
|
||||||
SET NEW.driverName = (SELECT firstName FROM worker WHERE id = NEW.driver1Fk);
|
|
||||||
ELSE
|
IF NOT (NEW.name <=> OLD.name) THEN
|
||||||
SET NEW.driverName = NULL;
|
SET NEW.name = UCASE(NEW.name);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NOT (NEW.trailerPlate <=> OLD.trailerPlate) OR NOT (NEW.tugPlate <=> OLD.tugPlate) THEN
|
||||||
|
SET NEW.m3 = (SELECT SUM(m3) FROM vehicle WHERE numberPlate IN (NEW.trailerPlate, NEW.tugPlate));
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NOT (NEW.driverName <=> OLD.driverName) THEN
|
||||||
|
SET NEW.driver1Fk = NULL;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NOT (NEW.driver1Fk <=> OLD.driver1Fk) AND NEW.driver1Fk IS NOT NULL THEN
|
||||||
|
SET NEW.driverName = (SELECT CONCAT(w.firstName, ' ', w.lastName)
|
||||||
|
FROM worker w
|
||||||
|
WHERE w.id = NEW.driver1Fk);
|
||||||
|
|
||||||
|
SET NEW.phone = (SELECT COALESCE(w.phone, c.mobile, c.phone, c.mobile)
|
||||||
|
FROM worker w
|
||||||
|
LEFT JOIN client c ON c.id = w.id
|
||||||
|
WHERE w.id = NEW.driver1Fk);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NOT (NEW.driverChangeName <=> OLD.driverChangeName) THEN
|
||||||
|
SET NEW.driverChangeFk = NULL;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NOT (NEW.driverChangeFk <=> OLD.driverChangeFk) AND NEW.driverChangeFk IS NOT NULL THEN
|
||||||
|
SET NEW.driverChangeName = (SELECT CONCAT(w.firstName, ' ', w.lastName)
|
||||||
|
FROM worker w
|
||||||
|
WHERE w.id = NEW.driverChangeFk);
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
|
@ -18,6 +18,5 @@ AS SELECT `p`.`id` AS `Id_Cubo`,
|
||||||
`p`.`base` AS `Base`,
|
`p`.`base` AS `Base`,
|
||||||
`p`.`isBox` AS `box`,
|
`p`.`isBox` AS `box`,
|
||||||
`p`.`returnCost` AS `costeRetorno`,
|
`p`.`returnCost` AS `costeRetorno`,
|
||||||
`p`.`isActive` AS `isActive`,
|
`p`.`isActive` AS `isActive`
|
||||||
`p`.`flippingCost` AS `flippingCost`
|
|
||||||
FROM `vn`.`packaging` `p`
|
FROM `vn`.`packaging` `p`
|
||||||
|
|
|
@ -29,6 +29,5 @@ AS SELECT `a`.`id` AS `id`,
|
||||||
`a`.`invoiceInPaletizedFk` AS `invoiceInPaletizedFk`,
|
`a`.`invoiceInPaletizedFk` AS `invoiceInPaletizedFk`,
|
||||||
`a`.`observation` AS `observation`,
|
`a`.`observation` AS `observation`,
|
||||||
`a`.`hasFreightPrepaid` AS `hasFreightPrepaid`,
|
`a`.`hasFreightPrepaid` AS `hasFreightPrepaid`,
|
||||||
`a`.`propertyNumber` AS `propertyNumber`,
|
`a`.`propertyNumber` AS `propertyNumber`
|
||||||
`a`.`costPerKg` AS `costPerKg`
|
|
||||||
FROM `vn`.`awb` `a`
|
FROM `vn`.`awb` `a`
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
ALTER TABLE vn.business
|
|
||||||
ADD CONSTRAINT `business_companyCodeFk` FOREIGN KEY (`companyCodeFk`) REFERENCES `company` (`code`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
||||||
|
|
||||||
-- Auto-generated SQL script. Actual values for binary/complex data types may differ - what you see is the default string representation of values.
|
|
||||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
|
||||||
VALUES ('BusinessReasonEnd','find','*','ALLOW','ROLE','hr');
|
|
||||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
|
||||||
VALUES ('CalendarType','find','*','ALLOW','ROLE','hr');
|
|
||||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
|
||||||
VALUES ('OccupationCode','find','*','ALLOW','ROLE','hr');
|
|
||||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
|
||||||
VALUES ('BusinessReasonEnd','find','*','ALLOW','ROLE','hr');
|
|
||||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
|
||||||
VALUES ('WorkerBusinessProfessionalCategory','find','*','ALLOW','ROLE','hr');
|
|
||||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
|
||||||
VALUES ('WorkerBusinessAgreement','find','*','ALLOW','ROLE','hr');
|
|
||||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
|
||||||
VALUES ('WorkerBusinessType','find','*','ALLOW','ROLE','hr');
|
|
||||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
|
||||||
VALUES ('PayrollCategory','find','*','ALLOW','ROLE','hr');
|
|
||||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
|
||||||
VALUES ('Worker','__get__business','*','ALLOW','ROLE','hr');
|
|
||||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
|
||||||
VALUES ('Worker','__create__business','*','ALLOW','ROLE','hr');
|
|
||||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
|
||||||
VALUES ('Business','crud','*','ALLOW','ROLE','hr');
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
ALTER TABLE vn.roadmap
|
||||||
|
DROP FOREIGN KEY roadmap_worker_FK_2,
|
||||||
|
DROP FOREIGN KEY roadmap_worker_FK,
|
||||||
|
DROP FOREIGN KEY roadmap_ibfk_2;
|
|
@ -0,0 +1,20 @@
|
||||||
|
ALTER TABLE vn.roadmap
|
||||||
|
COMMENT='Rutas troncales (trailers)',
|
||||||
|
MODIFY COLUMN m3 int(10) unsigned DEFAULT NULL NULL COMMENT 'Capacidad máxima del remolque',
|
||||||
|
MODIFY COLUMN trailerPlate varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL,
|
||||||
|
MODIFY COLUMN etd datetime NOT NULL COMMENT 'Tiempo estimado de salida',
|
||||||
|
MODIFY COLUMN `name` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL,
|
||||||
|
MODIFY COLUMN driver1Fk int(10) unsigned DEFAULT NULL NULL AFTER driverName,
|
||||||
|
MODIFY COLUMN driver2Fk int(10) unsigned DEFAULT NULL NULL AFTER driver1Fk,
|
||||||
|
ADD eta datetime DEFAULT NULL NULL COMMENT 'Tiempo estimado de llegada' AFTER etd,
|
||||||
|
ADD roadmapAddressFk int(11) DEFAULT NULL NULL AFTER `name`,
|
||||||
|
ADD dollyPlate varchar(10) DEFAULT NULL AFTER trailerPlate,
|
||||||
|
ADD tugPlate varchar(10) DEFAULT NULL AFTER dollyPlate,
|
||||||
|
ADD driverChangeName varchar(45) DEFAULT NULL AFTER driver2Fk,
|
||||||
|
ADD driverChangeFk int(10) unsigned DEFAULT NULL NULL AFTER driverChangeName;
|
||||||
|
|
||||||
|
-- Separamos los CHANGE por que si no arriba no se aplican
|
||||||
|
ALTER TABLE vn.roadmap
|
||||||
|
CHANGE userFk editorFk int(10) unsigned DEFAULT NULL NULL AFTER m3;
|
||||||
|
|
||||||
|
CREATE INDEX roadmap_etd_IDX USING BTREE ON vn.roadmap (etd);
|
|
@ -0,0 +1,15 @@
|
||||||
|
UPDATE vn.roadmap
|
||||||
|
SET roadmapAddressFk = (SELECT MIN(addressFk) FROM vn.roadmapAddress),
|
||||||
|
eta = etd + INTERVAL 1 DAY;
|
||||||
|
|
||||||
|
ALTER TABLE vn.roadmap
|
||||||
|
ADD CONSTRAINT roadmap_roadmapAddress_FK FOREIGN KEY (roadmapAddressFk)
|
||||||
|
REFERENCES vn.roadmapAddress(addressFk) ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||||
|
ADD CONSTRAINT roadmap_driver_FK FOREIGN KEY (driver1Fk)
|
||||||
|
REFERENCES vn.worker(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||||
|
ADD CONSTRAINT roadmap_driver_FK2 FOREIGN KEY (driver2Fk)
|
||||||
|
REFERENCES vn.worker(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||||
|
ADD CONSTRAINT roadmap_driverChange_FK FOREIGN KEY (driverChangeFk)
|
||||||
|
REFERENCES vn.worker(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||||
|
ADD CONSTRAINT roadmap_user_Fk FOREIGN KEY (editorFk)
|
||||||
|
REFERENCES account.user(id) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
@ -0,0 +1,7 @@
|
||||||
|
ALTER TABLE vn.roadmapStop
|
||||||
|
CHANGE userFk editorFk int(10) unsigned DEFAULT NULL NULL,
|
||||||
|
CHANGE addressFk roadmapAddressFk int(11) DEFAULT NULL NULL,
|
||||||
|
DROP FOREIGN KEY expeditionTruck_FK_2;
|
||||||
|
|
||||||
|
ALTER TABLE vn.roadmapStop ADD CONSTRAINT roadmapStop_roadmap_FK
|
||||||
|
FOREIGN KEY (roadmapFk) REFERENCES vn.roadmap(id) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@ -0,0 +1,4 @@
|
||||||
|
ALTER TABLE vn.route
|
||||||
|
ADD roadmapStopFk int(11) NULL,
|
||||||
|
ADD CONSTRAINT route_roadmapStop_FK FOREIGN KEY (roadmapStopFk) REFERENCES vn.roadmapStop(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||||
|
CHANGE editorFk editorFk int(10) unsigned DEFAULT NULL NULL AFTER roadmapStopFk;
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER TABLE vn.roadmapAddress
|
||||||
|
COMMENT='Direcciones de los troncales o también llamados puntos de distribución';
|
|
@ -0,0 +1,11 @@
|
||||||
|
GRANT SELECT ON TABLE vn.roadmap TO 'delivery';
|
||||||
|
GRANT SELECT ON TABLE vn.roadmapStop TO 'delivery';
|
||||||
|
GRANT SELECT ON TABLE vn.roadmapAddress TO 'delivery';
|
||||||
|
|
||||||
|
GRANT DELETE, UPDATE, INSERT ON TABLE vn.roadmap TO 'deliveryBoss';
|
||||||
|
GRANT DELETE, UPDATE, INSERT ON TABLE vn.roadmapStop TO 'deliveryBoss';
|
||||||
|
GRANT DELETE, UPDATE, INSERT ON TABLE vn.roadmapAddress TO 'deliveryBoss';
|
||||||
|
|
||||||
|
-- Comentado debido a que da error porque ejecuta primero el script de la versión
|
||||||
|
-- GRANT EXECUTE ON PROCEDURE vn.roadmap_cloneDay TO 'deliveryBoss';
|
||||||
|
-- GRANT EXECUTE ON FUNCTION vn.getTimeBetweenRoadmapAddresses TO 'deliveryBoss';
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER TABLE vn.route DROP FOREIGN KEY fk_route_1;
|
||||||
|
ALTER TABLE vn.route DROP COLUMN zoneFk;
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER TABLE vn.vehicle
|
||||||
|
ADD typeFk enum('car','van','truck','trailer','tug', 'tugDolly','dolly') DEFAULT 'van' NOT NULL;
|
|
@ -0,0 +1 @@
|
||||||
|
CREATE INDEX route_dated_IDX USING BTREE ON vn.route (dated);
|
|
@ -1,2 +0,0 @@
|
||||||
ALTER TABLE vn.packaging
|
|
||||||
ADD COLUMN flippingCost decimal(10, 2) NOT NULL DEFAULT 0.00
|
|
|
@ -1 +0,0 @@
|
||||||
ALTER TABLE vn.travel CHANGE appointment appointment__ datetime DEFAULT NULL COMMENT '@deprecated 2025-01-28';
|
|
|
@ -1,2 +0,0 @@
|
||||||
ALTER TABLE `vn`.`awb`
|
|
||||||
ADD COLUMN `costPerKg` DECIMAL(10, 2) UNSIGNED DEFAULT NULL COMMENT 'Tarifa que indica a cuanto cuesta el kilo en ese vuelo';
|
|
|
@ -158,12 +158,10 @@ module.exports = Self => {
|
||||||
a.provinceFk AS provinceAddressFk,
|
a.provinceFk AS provinceAddressFk,
|
||||||
p.name AS province,
|
p.name AS province,
|
||||||
u.id AS salesPersonFk,
|
u.id AS salesPersonFk,
|
||||||
u.name AS salesPerson,
|
u.name AS salesPerson
|
||||||
co.name AS country
|
|
||||||
FROM client c
|
FROM client c
|
||||||
LEFT JOIN account.user u ON u.id = c.salesPersonFk
|
LEFT JOIN account.user u ON u.id = c.salesPersonFk
|
||||||
LEFT JOIN province p ON p.id = c.provinceFk
|
LEFT JOIN province p ON p.id = c.provinceFk
|
||||||
LEFT JOIN country co ON co.id = c.countryFk
|
|
||||||
JOIN address a ON a.clientFk = c.id
|
JOIN address a ON a.clientFk = c.id
|
||||||
`
|
`
|
||||||
);
|
);
|
||||||
|
|
|
@ -139,23 +139,5 @@
|
||||||
},
|
},
|
||||||
"Xdiario": {
|
"Xdiario": {
|
||||||
"dataSource": "vn"
|
"dataSource": "vn"
|
||||||
},
|
|
||||||
"BusinessReasonEnd": {
|
|
||||||
"dataSource": "vn"
|
|
||||||
},
|
|
||||||
"OccupationCode": {
|
|
||||||
"dataSource": "vn"
|
|
||||||
},
|
|
||||||
"WorkerBusinessProfessionalCategory": {
|
|
||||||
"dataSource": "vn"
|
|
||||||
},
|
|
||||||
"CalendarType": {
|
|
||||||
"dataSource": "vn"
|
|
||||||
},
|
|
||||||
"WorkerBusinessType": {
|
|
||||||
"dataSource": "vn"
|
|
||||||
},
|
|
||||||
"PayrollCategory": {
|
|
||||||
"dataSource": "vn"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
"name": "BusinessReasonEnd",
|
|
||||||
"base": "VnModel",
|
|
||||||
"options": {
|
|
||||||
"mysql": {
|
|
||||||
"table": "businessReasonEnd"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"properties": {
|
|
||||||
"id": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"reason": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -13,63 +13,6 @@
|
||||||
},
|
},
|
||||||
"workcenterFk" : {
|
"workcenterFk" : {
|
||||||
"type": "number"
|
"type": "number"
|
||||||
},
|
|
||||||
"companyCodeFk" : {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"started" : {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"ended" : {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"workerBusiness" : {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"reasonEndFk" : {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"payedHolidays" : {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"occupationCodeFk" : {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"workerFk" : {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"notes" : {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"departmentFk": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"workerBusinessProfessionalCategoryFk": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"calendarTypeFk": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"isHourlyLabor": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"rate": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"workerBusinessCategoryFk": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"workerBusinessTypeFk": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"amount": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"workerBusinessAgreementFk": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"basicSalary": {
|
|
||||||
"type": "number"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"relations": {
|
"relations": {
|
||||||
|
@ -82,59 +25,6 @@
|
||||||
"type": "belongsTo",
|
"type": "belongsTo",
|
||||||
"model": "Department",
|
"model": "Department",
|
||||||
"foreignKey": "departmentFk"
|
"foreignKey": "departmentFk"
|
||||||
},
|
|
||||||
"workCenter": {
|
|
||||||
"type": "belongsTo",
|
|
||||||
"model": "WorkCenter",
|
|
||||||
"foreignKey": "workcenterFk"
|
|
||||||
},
|
|
||||||
"companyCode": {
|
|
||||||
"type": "belongsTo",
|
|
||||||
"model": "Company",
|
|
||||||
"foreignKey": "companyCodeFk",
|
|
||||||
"primaryKey": "code"
|
|
||||||
},
|
|
||||||
"reasonEnd": {
|
|
||||||
"type": "belongsTo",
|
|
||||||
"model": "BusinessReasonEnd",
|
|
||||||
"foreignKey": "reasonEndFk"
|
|
||||||
},
|
|
||||||
"occupationCode": {
|
|
||||||
"type": "belongsTo",
|
|
||||||
"model": "OccupationCode",
|
|
||||||
"foreignKey":"occupationCodeFk",
|
|
||||||
"primaryKey": "code"
|
|
||||||
},
|
|
||||||
"payrollCategory": {
|
|
||||||
"type": "belongsTo",
|
|
||||||
"model": "PayrollCategory",
|
|
||||||
"foreignKey":"workerBusinessCategoryFk"
|
|
||||||
},
|
|
||||||
"workerBusinessProfessionalCategory": {
|
|
||||||
"type": "belongsTo",
|
|
||||||
"model": "WorkerBusinessProfessionalCategory",
|
|
||||||
"foreignKey": "workerBusinessProfessionalCategoryFk"
|
|
||||||
},
|
|
||||||
"calendarType": {
|
|
||||||
"type": "belongsTo",
|
|
||||||
"model": "CalendarType",
|
|
||||||
"foreignKey": "calendarTypeFk"
|
|
||||||
},
|
|
||||||
"workerBusinessCategory": {
|
|
||||||
"type": "belongsTo",
|
|
||||||
"model": "WorkerBusinessCategory",
|
|
||||||
"foreignKey": "workerBusinessCategoryFk"
|
|
||||||
},
|
|
||||||
"workerBusinessType": {
|
|
||||||
"type": "belongsTo",
|
|
||||||
"model": "WorkerBusinessType",
|
|
||||||
"foreignKey": "workerBusinessTypeFk"
|
|
||||||
},
|
|
||||||
"workerBusinessAgreement": {
|
|
||||||
"type": "belongsTo",
|
|
||||||
"model": "WorkerBusinessAgreement",
|
|
||||||
"foreignKey": "workerBusinessAgreementFk"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
"name": "CalendarType",
|
|
||||||
"base": "VnModel",
|
|
||||||
"options": {
|
|
||||||
"mysql": {
|
|
||||||
"table": "calendarType"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"properties": {
|
|
||||||
"id": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"hoursWeek": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"isPartial": "number"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
"name": "OccupationCode",
|
|
||||||
"base": "VnModel",
|
|
||||||
"options": {
|
|
||||||
"mysql": {
|
|
||||||
"table": "occupationCode"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"properties": {
|
|
||||||
"code": {
|
|
||||||
"type": "string",
|
|
||||||
"id": true
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"name": "PayrollCategory",
|
|
||||||
"base": "VnModel",
|
|
||||||
"options": {
|
|
||||||
"mysql": {
|
|
||||||
"table": "payrollCategories"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"properties": {
|
|
||||||
"id": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"rate": {
|
|
||||||
"type": "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"name": "WorkerBusinessProfessionalCategory",
|
|
||||||
"base": "VnModel",
|
|
||||||
"options": {
|
|
||||||
"mysql": {
|
|
||||||
"table": "professionalCategory"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"properties": {
|
|
||||||
"id": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"code": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
{
|
|
||||||
"name": "WorkerBusinessAgreement",
|
|
||||||
"base": "VnModel",
|
|
||||||
"options": {
|
|
||||||
"mysql": {
|
|
||||||
"table": "workerBusinessAgreement"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"properties": {
|
|
||||||
"id": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"monthHolidays": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"yearsHours": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"started": {
|
|
||||||
"type": "date"
|
|
||||||
},
|
|
||||||
"ended": {
|
|
||||||
"type": "date"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
{
|
|
||||||
"name": "WorkerBusinessType",
|
|
||||||
"base": "VnModel",
|
|
||||||
"options": {
|
|
||||||
"mysql": {
|
|
||||||
"table": "workerBusinessType"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"properties": {
|
|
||||||
"id": {
|
|
||||||
"type": "number",
|
|
||||||
"id": true
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"isFullTime": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"isPermanent": {
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
"hasHolidayEntitlement": {
|
|
||||||
"type": "number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -75,11 +75,6 @@
|
||||||
"type": "hasMany",
|
"type": "hasMany",
|
||||||
"model": "Ticket",
|
"model": "Ticket",
|
||||||
"foreignKey": "routeFk"
|
"foreignKey": "routeFk"
|
||||||
},
|
}
|
||||||
"zone": {
|
|
||||||
"type": "belongsTo",
|
|
||||||
"model": "Zone",
|
|
||||||
"foreignKey": "zoneFk"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
module.exports = Self => {
|
module.exports = Self => {
|
||||||
|
const validateTin = require('vn-loopback/util/validateTin');
|
||||||
require('../methods/worker/filter')(Self);
|
require('../methods/worker/filter')(Self);
|
||||||
require('../methods/worker/mySubordinates')(Self);
|
require('../methods/worker/mySubordinates')(Self);
|
||||||
require('../methods/worker/isSubordinate')(Self);
|
require('../methods/worker/isSubordinate')(Self);
|
||||||
|
@ -22,10 +23,26 @@ module.exports = Self => {
|
||||||
require('../methods/worker/getAvailablePda')(Self);
|
require('../methods/worker/getAvailablePda')(Self);
|
||||||
require('../methods/worker/myTeam')(Self);
|
require('../methods/worker/myTeam')(Self);
|
||||||
|
|
||||||
|
Self.validateAsync('fi', tinIsValid, {
|
||||||
|
message: 'Invalid TIN'
|
||||||
|
});
|
||||||
|
|
||||||
Self.canModifyAbsenceInPast = async(ctx, time) => {
|
Self.canModifyAbsenceInPast = async(ctx, time) => {
|
||||||
const hasPrivs = await Self.app.models.ACL.checkAccessAcl(ctx, 'Worker', 'canModifyAbsenceInPast', 'WRITE');
|
const hasPrivs = await Self.app.models.ACL.checkAccessAcl(ctx, 'Worker', 'canModifyAbsenceInPast', 'WRITE');
|
||||||
const today = Date.vnNew();
|
const today = Date.vnNew();
|
||||||
today.setHours(0, 0, 0, 0);
|
today.setHours(0, 0, 0, 0);
|
||||||
return hasPrivs || today.getTime() < time;
|
return hasPrivs || today.getTime() < time;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
async function tinIsValid(err, done) {
|
||||||
|
const country = await Self.app.models.Country.findOne({
|
||||||
|
fields: ['code'],
|
||||||
|
where: {id: this.originCountryFk}
|
||||||
|
});
|
||||||
|
const code = country ? country.code.toLowerCase() : null;
|
||||||
|
|
||||||
|
if (!this.fi || !validateTin(this.fi, code))
|
||||||
|
err();
|
||||||
|
done();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -75,9 +75,6 @@
|
||||||
},
|
},
|
||||||
"isSsDiscounted": {
|
"isSsDiscounted": {
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
|
||||||
"businessFk": {
|
|
||||||
"type": "number"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"relations": {
|
"relations": {
|
||||||
|
@ -106,11 +103,6 @@
|
||||||
"model": "WorkerDepartment",
|
"model": "WorkerDepartment",
|
||||||
"foreignKey": "id"
|
"foreignKey": "id"
|
||||||
},
|
},
|
||||||
"currentBusiness": {
|
|
||||||
"type": "belongsTo",
|
|
||||||
"model": "Business",
|
|
||||||
"foreignKey": "businessFk"
|
|
||||||
},
|
|
||||||
"collegues": {
|
"collegues": {
|
||||||
"type": "hasMany",
|
"type": "hasMany",
|
||||||
"model": "WorkerTeamCollegues",
|
"model": "WorkerTeamCollegues",
|
||||||
|
@ -121,11 +113,6 @@
|
||||||
"model": "Locker",
|
"model": "Locker",
|
||||||
"foreignKey": "workerFk"
|
"foreignKey": "workerFk"
|
||||||
},
|
},
|
||||||
"business": {
|
|
||||||
"type": "hasMany",
|
|
||||||
"model": "Business",
|
|
||||||
"foreignKey": "workerFk"
|
|
||||||
},
|
|
||||||
"medicalReview": {
|
"medicalReview": {
|
||||||
"type": "hasMany",
|
"type": "hasMany",
|
||||||
"model": "MedicalReview",
|
"model": "MedicalReview",
|
||||||
|
@ -272,36 +259,12 @@
|
||||||
"relation": "department",
|
"relation": "department",
|
||||||
"scope": {
|
"scope": {
|
||||||
"fields": [
|
"fields": [
|
||||||
"id"
|
"name"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"relation": "business",
|
|
||||||
"scope": {
|
|
||||||
"fields": [
|
|
||||||
"id",
|
|
||||||
"started",
|
|
||||||
"ended",
|
|
||||||
"reasonEndFk",
|
|
||||||
"departmentFk",
|
|
||||||
"workerBusinessProfessionalCategoryFk"
|
|
||||||
],
|
|
||||||
"include": [
|
|
||||||
{
|
|
||||||
"relation": "reasonEnd",
|
|
||||||
"scope": {
|
|
||||||
"fields": [
|
|
||||||
"id",
|
|
||||||
"reason"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"relation": "boss",
|
"relation": "boss",
|
||||||
"scope": {
|
"scope": {
|
||||||
|
@ -349,8 +312,7 @@
|
||||||
"educationLevelFk",
|
"educationLevelFk",
|
||||||
"originCountryFk",
|
"originCountryFk",
|
||||||
"maritalStatus",
|
"maritalStatus",
|
||||||
"SSN",
|
"SSN"
|
||||||
"businessFk"
|
|
||||||
],
|
],
|
||||||
"include": [
|
"include": [
|
||||||
{
|
{
|
||||||
|
@ -361,48 +323,6 @@
|
||||||
"phone"
|
"phone"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"relation": "currentBusiness",
|
|
||||||
"scope": {
|
|
||||||
"fields": [
|
|
||||||
"id",
|
|
||||||
"started",
|
|
||||||
"ended",
|
|
||||||
"reasonEndFk",
|
|
||||||
"departmentFk",
|
|
||||||
"workerBusinessProfessionalCategoryFk"
|
|
||||||
],
|
|
||||||
"include": [
|
|
||||||
{
|
|
||||||
"relation": "reasonEnd",
|
|
||||||
"scope": {
|
|
||||||
"fields": [
|
|
||||||
"id",
|
|
||||||
"reason"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"relation": "department",
|
|
||||||
"scope": {
|
|
||||||
"fields": [
|
|
||||||
"id",
|
|
||||||
"name"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"relation": "workerBusinessProfessionalCategory",
|
|
||||||
"scope": {
|
|
||||||
"fields": [
|
|
||||||
"id",
|
|
||||||
"description"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue