diff --git a/db/dump/dumpedFixtures.sql b/db/dump/dumpedFixtures.sql index 966a6258b..ce47886f8 100644 --- a/db/dump/dumpedFixtures.sql +++ b/db/dump/dumpedFixtures.sql @@ -1,6 +1,6 @@ USE `util`; --- MariaDB dump 10.19 Distrib 10.6.5-MariaDB, for debian-linux-gnu (x86_64) +-- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: util -- ------------------------------------------------------ @@ -9,7 +9,7 @@ USE `util`; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; @@ -34,9 +34,9 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-03-09 15:31:03 +-- Dump completed on 2022-03-14 10:27:51 USE `account`; --- MariaDB dump 10.19 Distrib 10.6.5-MariaDB, for debian-linux-gnu (x86_64) +-- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: account -- ------------------------------------------------------ @@ -45,7 +45,7 @@ USE `account`; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; @@ -120,9 +120,9 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-03-09 15:31:03 +-- Dump completed on 2022-03-14 10:27:53 USE `salix`; --- MariaDB dump 10.19 Distrib 10.6.5-MariaDB, for debian-linux-gnu (x86_64) +-- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: salix -- ------------------------------------------------------ @@ -131,7 +131,7 @@ USE `salix`; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; @@ -186,9 +186,9 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-03-09 15:31:04 +-- Dump completed on 2022-03-14 10:27:55 USE `vn`; --- MariaDB dump 10.19 Distrib 10.6.5-MariaDB, for debian-linux-gnu (x86_64) +-- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: vn -- ------------------------------------------------------ @@ -197,7 +197,7 @@ USE `vn`; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; @@ -452,9 +452,9 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-03-09 15:31:05 +-- Dump completed on 2022-03-14 10:28:02 USE `cache`; --- MariaDB dump 10.19 Distrib 10.6.5-MariaDB, for debian-linux-gnu (x86_64) +-- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: cache -- ------------------------------------------------------ @@ -463,7 +463,7 @@ USE `cache`; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; @@ -488,9 +488,9 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-03-09 15:31:05 +-- Dump completed on 2022-03-14 10:28:02 USE `hedera`; --- MariaDB dump 10.19 Distrib 10.6.5-MariaDB, for debian-linux-gnu (x86_64) +-- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: hedera -- ------------------------------------------------------ @@ -499,7 +499,7 @@ USE `hedera`; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; @@ -554,9 +554,9 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-03-09 15:31:05 +-- Dump completed on 2022-03-14 10:28:04 USE `postgresql`; --- MariaDB dump 10.19 Distrib 10.6.5-MariaDB, for debian-linux-gnu (x86_64) +-- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: postgresql -- ------------------------------------------------------ @@ -565,7 +565,7 @@ USE `postgresql`; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; @@ -640,9 +640,9 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-03-09 15:31:05 +-- Dump completed on 2022-03-14 10:28:07 USE `sage`; --- MariaDB dump 10.19 Distrib 10.6.5-MariaDB, for debian-linux-gnu (x86_64) +-- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: sage -- ------------------------------------------------------ @@ -651,7 +651,7 @@ USE `sage`; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; @@ -696,4 +696,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-03-09 15:31:05 +-- Dump completed on 2022-03-14 10:28:10 diff --git a/db/dump/structure.sql b/db/dump/structure.sql index 10c758df4..ce367a1d4 100644 --- a/db/dump/structure.sql +++ b/db/dump/structure.sql @@ -1,4 +1,4 @@ --- MariaDB dump 10.19 Distrib 10.6.5-MariaDB, for debian-linux-gnu (x86_64) +-- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: account -- ------------------------------------------------------ @@ -29955,7 +29955,7 @@ CREATE TABLE `delivery` ( PRIMARY KEY (`id`), KEY `delivery_FK` (`addressFk`), CONSTRAINT `delivery_FK` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Informa de los datos geográficos y temporales de las entregas de los repartidores'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Informa de los datos geográficos y temporales de las entregas de los repartidores'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -31409,6 +31409,7 @@ CREATE TABLE `expedition` ( `packagingFk` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, `itemPackingTypeFk` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, `hostFk` varchar(6) COLLATE utf8_unicode_ci NOT NULL, + `stateTypeFk` int(11) DEFAULT NULL COMMENT 'Ultimo estado de la expedicion', PRIMARY KEY (`id`), KEY `index1` (`agencyModeFk`), KEY `index2` (`isBox`), @@ -31417,6 +31418,8 @@ CREATE TABLE `expedition` ( KEY `expedition_fk3_idx` (`packagingFk`), KEY `expedition_itemPackingTypeFk` (`itemPackingTypeFk`), KEY `workerFk` (`workerFk`), + KEY `expedition_FK` (`stateTypeFk`), + CONSTRAINT `expedition_FK` FOREIGN KEY (`stateTypeFk`) REFERENCES `expeditionStateType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `expedition_fk1` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON UPDATE CASCADE, CONSTRAINT `expedition_fk2` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `expedition_fk3` FOREIGN KEY (`packagingFk`) REFERENCES `packaging` (`id`) ON UPDATE CASCADE, @@ -31767,6 +31770,30 @@ BEGIN SET NEW.userFk = account.myUser_getId(); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER expeditionState_AfterInsert +AFTER INSERT +ON expeditionState FOR EACH ROW +BEGIN + + UPDATE vn.expedition e + SET e.stateTypeFk = NEW.typeFk + WHERE e.id = NEW.expeditionFk; + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -42555,6 +42582,7 @@ CREATE TABLE `vehicle` ( `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `deliveryPointFk` int(11) DEFAULT '6' COMMENT 'Direccion para Buscaman', `isKmTruckRate` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Computar km como camión en el cálculo de salario de reparto', + `photo` blob, PRIMARY KEY (`id`), KEY `empresa_id` (`companyFk`), KEY `provinceFk_idx` (`warehouseFk`), @@ -42581,7 +42609,7 @@ CREATE TABLE `vehicleDms` ( KEY `vehicleDms_FK_1` (`dmsFk`), CONSTRAINT `vehicleDms_FK` FOREIGN KEY (`vehicleFk`) REFERENCES `vehicle` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `vehicleDms_FK_1` FOREIGN KEY (`dmsFk`) REFERENCES `dms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Gestion documental de vehicle'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Gestion documental de vehicle'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42624,7 +42652,7 @@ CREATE TABLE `vehicleInvoiceIn` ( KEY `vehicleInvoiceIn_FK_1` (`invoiceInFk`), CONSTRAINT `vehicleInvoiceIn_FK` FOREIGN KEY (`vehicleFk`) REFERENCES `vehicle` (`id`), CONSTRAINT `vehicleInvoiceIn_FK_1` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -69051,17 +69079,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `item_getVisibleAvailable` */; +/*!50003 DROP PROCEDURE IF EXISTS `item_getVisibleAvailable__` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getVisibleAvailable`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getVisibleAvailable__`( vItem INT, vDate DATE, vWarehouse TINYINT, @@ -78148,93 +78176,93 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `stockBuyed`(vDate DATE) BEGIN - DECLARE vVolume DECIMAL(10,2); - DECLARE vWarehouse INT DEFAULT 7; - DECLARE vRuben INT; - DECLARE vClaudi INT; - DECLARE vJose INT; + DECLARE vVolume DECIMAL(10,2); + DECLARE vWarehouse INT DEFAULT 7; + DECLARE vRuben INT; + DECLARE vClaudi INT; + DECLARE vJose INT; - SELECT w.id INTO vRuben - FROM vn.worker w - WHERE w.code = 'RET'; - - SELECT w.id INTO vClaudi - FROM vn.worker w - WHERE w.code = 'CSR'; - - SELECT w.id INTO vJose - FROM vn.worker w - WHERE w.code = 'ATJ'; - - CALL stockTraslation(vDate); + SELECT w.id INTO vRuben + FROM vn.worker w + WHERE w.code = 'RET'; - -- SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; - - INSERT INTO stockBuyed(user, buyed, `date`) - SELECT tr.user_id, SUM(( amount / c.packing ) * vn.buy_getVolume(Id_Compra)) / vc.palletM3 / 1000000 buyed, vDate - FROM tmp_item i - JOIN vn2008.Articles a ON a.Id_Article = i.item_id - JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id + SELECT w.id INTO vClaudi + FROM vn.worker w + WHERE w.code = 'CSR'; + + SELECT w.id INTO vJose + FROM vn.worker w + WHERE w.code = 'ATJ'; + + CALL stockTraslation(vDate); + + -- SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; + + INSERT INTO stockBuyed(user, buyed, `date`) + SELECT tr.user_id, SUM(( amount / c.packing ) * vn.buy_getVolume(Id_Compra)) / vc.palletM3 / 1000000 buyed, vDate + FROM tmp_item i + JOIN vn2008.Articles a ON a.Id_Article = i.item_id + JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id JOIN vn2008.reinos r ON r.id = t.reino_id JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = t.Id_Trabajador - JOIN vn2008.t_item_last_buy ilb ON ilb.item_id = Id_Article AND ilb.warehouse_id = vWarehouse - JOIN vn2008.Compres c ON c.Id_compra = ilb.buy_id + JOIN tmp.buyUltimate bu ON bu.itemFk = Id_Article AND bu.warehouseFk = vWarehouse + JOIN vn2008.Compres c ON c.Id_compra = bu.buyFk JOIN vn.volumeConfig vc WHERE r.display <> 0 - GROUP BY tr.Id_Trabajador + GROUP BY tr.Id_Trabajador ON DUPLICATE KEY UPDATE buyed = VALUES(buyed); - + INSERT INTO stockBuyed(USER, buyed, `date`) - SELECT vRuben, @amount := SUM(ic.cm3 * io.amount / vc.palletM3 / 1000000), vDate - FROM vn2008.item_out io - JOIN vn.itemCost ic ON ic.itemFk = io.item_id AND ic.warehouseFk = vWarehouse - JOIN vn.ticket t ON t.id = io.ticketFk - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.country c ON c.id = p.countryFk - JOIN vn.volumeConfig vc - WHERE dat = vDate - AND warehouse_id = vWarehouse - AND c.country = 'Francia' - ON DUPLICATE KEY UPDATE buyed = buyed + @amount; - - INSERT INTO stockBuyed(USER, buyed, `date`) - SELECT vJose, @amount := SUM(ic.cm3 * io.amount / vc.palletM3 / 1000000), vDate - FROM vn2008.item_out io - JOIN vn.itemCost ic ON ic.itemFk = io.item_id AND ic.warehouseFk = vWarehouse - JOIN vn.ticket t ON t.id = io.ticketFk - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.country c ON c.id = p.countryFk - JOIN vn.volumeConfig vc - WHERE dat = vDate - AND warehouse_id = vWarehouse - AND c.country = 'Holanda' - ON DUPLICATE KEY UPDATE buyed = buyed + @amount; - - INSERT INTO stockBuyed(USER, buyed, `date`) - SELECT vClaudi, @amount := SUM(ic.cm3 * io.amount / vc.palletM3 / 1000000), vDate - FROM vn2008.item_out io - JOIN vn.itemCost ic ON ic.itemFk = io.item_id AND ic.warehouseFk = vWarehouse - JOIN vn.ticket t ON t.id = io.ticketFk - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.country c ON c.id = p.countryFk - JOIN vn.volumeConfig vc - WHERE dat BETWEEN vDate AND util.dayend(vDate) - AND warehouse_id = vWarehouse - AND c.country NOT IN ('Francia','Holanda') - ON DUPLICATE KEY UPDATE buyed = buyed + @amount; - - DROP TEMPORARY TABLE - vn2008.t_item_last_buy, - tmp_item; + SELECT vRuben, @amount := SUM(ic.cm3 * io.amount / vc.palletM3 / 1000000), vDate + FROM vn2008.item_out io + JOIN vn.itemCost ic ON ic.itemFk = io.item_id AND ic.warehouseFk = vWarehouse + JOIN vn.ticket t ON t.id = io.ticketFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.province p ON p.id = a.provinceFk + JOIN vn.country c ON c.id = p.countryFk + JOIN vn.volumeConfig vc + WHERE dat = vDate + AND warehouse_id = vWarehouse + AND c.country = 'Francia' + ON DUPLICATE KEY UPDATE buyed = buyed + @amount; + + INSERT INTO stockBuyed(USER, buyed, `date`) + SELECT vJose, @amount := SUM(ic.cm3 * io.amount / vc.palletM3 / 1000000), vDate + FROM vn2008.item_out io + JOIN vn.itemCost ic ON ic.itemFk = io.item_id AND ic.warehouseFk = vWarehouse + JOIN vn.ticket t ON t.id = io.ticketFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.province p ON p.id = a.provinceFk + JOIN vn.country c ON c.id = p.countryFk + JOIN vn.volumeConfig vc + WHERE dat = vDate + AND warehouse_id = vWarehouse + AND c.country = 'Holanda' + ON DUPLICATE KEY UPDATE buyed = buyed + @amount; + + INSERT INTO stockBuyed(USER, buyed, `date`) + SELECT vClaudi, @amount := SUM(ic.cm3 * io.amount / vc.palletM3 / 1000000), vDate + FROM vn2008.item_out io + JOIN vn.itemCost ic ON ic.itemFk = io.item_id AND ic.warehouseFk = vWarehouse + JOIN vn.ticket t ON t.id = io.ticketFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.province p ON p.id = a.provinceFk + JOIN vn.country c ON c.id = p.countryFk + JOIN vn.volumeConfig vc + WHERE dat BETWEEN vDate AND util.dayend(vDate) + AND warehouse_id = vWarehouse + AND c.country NOT IN ('Francia','Holanda') + ON DUPLICATE KEY UPDATE buyed = buyed + @amount; + + DROP TEMPORARY TABLE + tmp.buyUltimate, + tmp_item; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -78247,32 +78275,32 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `stockBuyedByWorker`(vDate DATE, vWorker INT) BEGIN - - DECLARE vVolume DECIMAL(10,2); - DECLARE vWarehouse INT DEFAULT 7; - CALL stockTraslation(vDate); - - SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; - - SELECT c.Id_Entrada, a.Id_Article, a.Article, i.amount Cantidad, (0.6 * ( i.amount / c.packing ) * vn.buy_getVolume(Id_Compra))/vVolume buyed - FROM tmp_item i - JOIN vn2008.Articles a ON a.Id_Article = i.item_id - JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id - JOIN vn2008.reinos r ON r.id = t.reino_id + + DECLARE vVolume DECIMAL(10,2); + DECLARE vWarehouse INT DEFAULT 7; + CALL stockTraslation(vDate); + + SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; + + SELECT c.Id_Entrada, a.Id_Article, a.Article, i.amount Cantidad, (0.6 * ( i.amount / c.packing ) * vn.buy_getVolume(Id_Compra))/vVolume buyed + FROM tmp_item i + JOIN vn2008.Articles a ON a.Id_Article = i.item_id + JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id + JOIN vn2008.reinos r ON r.id = t.reino_id JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = t.Id_Trabajador - JOIN vn2008.t_item_last_buy ilb ON ilb.item_id = a.Id_Article AND ilb.warehouse_id = vWarehouse - JOIN vn2008.Compres c ON c.Id_compra = ilb.buy_id - WHERE r.display <> 0 AND tr.user_id = vWorker; - - DROP TEMPORARY TABLE - vn2008.t_item_last_buy, - tmp_item; + JOIN tmp.buyUltimate bu ON bu.itemFk = a.Id_Article AND bu.warehouseFk = vWarehouse + JOIN vn2008.Compres c ON c.Id_compra = bu.buyFk + WHERE r.display <> 0 AND tr.user_id = vWorker; + + DROP TEMPORARY TABLE + tmp.buyUltimate, + tmp_item; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -78326,39 +78354,38 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `stockTraslation`(vDate DATE) BEGIN - /** - * Calcula el stock del vWarehouse desde FechaInventario hasta v_date - sin tener en cuenta las salidas del mismo dia vDate - para ver el transporte a reservar - **/ - - DECLARE vWarehouse INT DEFAULT 7; + /** + * Calcula el stock del vWarehouse desde FechaInventario hasta v_date + sin tener en cuenta las salidas del mismo dia vDate + para ver el transporte a reservar + **/ - DELETE FROM stockBuyed WHERE `date` = vDate; - - DROP TEMPORARY TABLE IF EXISTS tmp_item; - CREATE TEMPORARY TABLE tmp_item - (UNIQUE INDEX i USING HASH (item_id)) - ENGINE = MEMORY - SELECT item_id, SUM(amount) amount - FROM vn2008.item_entry_in - WHERE dat = vDate - AND vDate >= CURDATE() - AND warehouse_id = vWarehouse + DECLARE vWarehouse INT DEFAULT 7; + + DELETE FROM stockBuyed WHERE `date` = vDate; + + DROP TEMPORARY TABLE IF EXISTS tmp_item; + CREATE TEMPORARY TABLE tmp_item + (UNIQUE INDEX i USING HASH (item_id)) + ENGINE = MEMORY + SELECT item_id, SUM(amount) amount + FROM vn2008.item_entry_in + WHERE dat = vDate + AND vDate >= CURDATE() + AND warehouse_id = vWarehouse AND isVirtualStock is FALSE - GROUP BY item_id - HAVING amount != 0; + GROUP BY item_id + HAVING amount != 0; CALL `cache`.stock_refresh (FALSE); - INSERT INTO tmp_item (item_id,amount) - SELECT item_id,s.amount - FROM `cache`.stock s - WHERE warehouse_id = vWarehouse - ON DUPLICATE KEY UPDATE - amount = tmp_item.amount + VALUES(amount); - - CALL vn2008.item_last_buy_(vWarehouse,vDate); + INSERT INTO tmp_item (item_id,amount) + SELECT item_id,s.amount + FROM `cache`.stock s + WHERE warehouse_id = vWarehouse + ON DUPLICATE KEY UPDATE amount = tmp_item.amount + VALUES(amount); + + CALL buyUltimate(vWarehouse,vDate); END ;; DELIMITER ; @@ -83713,7 +83740,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_getFromFloramondo`(vDated DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_getFromFloramondo`(vDateFrom DATE, vDateTo DATE) BEGIN /** @@ -83729,17 +83756,18 @@ BEGIN agencyName VARCHAR(50), freight DECIMAL(10,2) DEFAULT 0, expeditionCount INT, - margin DECIMAL(10,3), + margin DECIMAL(10,3) DEFAULT 0, trolleys INT DEFAULT 0, + shipped DATE, pallets INT DEFAULT 0) ENGINE = MEMORY; - INSERT INTO tmp.ticketFloramondo(ticketFk, clientName, agencyName) - SELECT t.id ticketFk, t.nickname , am.name + INSERT INTO tmp.ticketFloramondo(ticketFk, clientName, agencyName, shipped) + SELECT t.id ticketFk, t.nickname , am.name, t.shipped FROM vn.ticket t JOIN vn.agencyMode am ON am.id = t.agencyModeFk JOIN vn.warehouse w ON w.id = t.warehouseFk AND w.code IN ('VNH','FLM') - AND t.shipped BETWEEN vDated AND TIMESTAMPADD(HOUR, 23, vDated); + AND t.shipped BETWEEN vDateFrom AND TIMESTAMPADD(HOUR, 23, vDateTo); DROP TEMPORARY TABLE IF EXISTS tmp.ticket; CREATE TEMPORARY TABLE tmp.ticket @@ -83800,7 +83828,7 @@ BEGIN -- Pallets UPDATE tmp.ticketFloramondo tf - JOIN (SELECT sum(tp.quantity) pallets, t.ticketFk + JOIN (SELECT SUM(tp.quantity) pallets, t.ticketFk FROM vn.ticketPackaging tp JOIN tmp.ticket t ON t.ticketFk = tp.ticketFk JOIN vn.packaging p ON p.id = tp.packagingFk @@ -85526,7 +85554,7 @@ BEGIN wtc.userFk, wtc.timed, wtc.direction, - TRUE isForShow + TRUE isReal FROM workerTimeControl wtc JOIN tmp.`user` w ON w.userFk = wtc.userFk LEFT JOIN tmp.timeControlError tce ON tce.id = wtc.id @@ -85578,8 +85606,6 @@ BEGIN WHERE hasBreak; -- Cambio de dia - - INSERT INTO tmp.workerTimeControlAux (id, userFk, timed, direction) SELECT @vCont:= @vCont + 1 id, sub.userFk, util.dayEnd(sub.dated) timed, 'out' direction FROM (SELECT MAX(wtc.timed) timed, wtc.userFk, date(wtc.timed) dated @@ -85606,9 +85632,9 @@ BEGIN JOIN tmp.workerTimeControl wtc ON wtc.timed = sub.timed AND wtc.userFk = sub.userFk WHERE wtc.direction <> 'out'; - INSERT INTO tmp.workerTimeControl (id, userFk, timed, direction, isForShow) - SELECT *, FALSE FROM tmp.workerTimeControlAux; - + INSERT INTO tmp.workerTimeControl (id, userFk, timed, direction, isReal) + SELECT id, userFk, timed, direction, FALSE FROM tmp.workerTimeControlAux; + SET vHourToSeconds = 3600; SET @vIsOdd := TRUE; SET @vDated := 0; @@ -85645,17 +85671,17 @@ BEGIN IF(wb.userFk, vBreakTime, 0) + SUM(sub.timeWork) timeWorkSeconds, SEC_TO_TIME(IF(wb.userFk, vBreakTime, 0) + SUM(sub.timeWork)) timeWorkSexagesimal, (IF(wb.userFk, vBreakTime, 0) + SUM(sub.timeWork)) / vHourToSeconds timeWorkDecimal, - CAST(GROUP_CONCAT(DATE_FORMAT(sub.timed,"%H:%i") ORDER BY sub.timed ASC SEPARATOR ' - ') AS CHAR(256)) timed + CAST(GROUP_CONCAT(DATE_FORMAT(sub.realTimed, "%H:%i") ORDER BY sub.timed ASC SEPARATOR ' - ') AS CHAR(256)) timed FROM (SELECT (@vIsOdd := NOT @vIsOdd), IF(direction='in', @vIsOdd := TRUE, 0), IF(@vIsOdd, @vLastTimed := UNIX_TIMESTAMP(timed), 0), IF(@vIsOdd, 0, UNIX_TIMESTAMP(timed) - @vLastTimed) timeWork, timed, userFk, - DATE(timed) dated + DATE(timed) dated, + IF(isReal, timed, NULL) realTimed FROM tmp.workerTimeControl WHERE timed BETWEEN vDatedFromYesterday AND vDatedTo - AND isForShow ORDER BY userFk, timed, id )sub LEFT JOIN tmp.workerBreakDays wb ON wb.userFk = sub.userFk AND wb.dated = sub.dated @@ -85937,14 +85963,16 @@ BEGIN JOIN (SELECT journeyCounter, UNIX_TIMESTAMP(MAX(timed)) - UNIX_TIMESTAMP(MIN(timed)) timeWork, SUM(direction = 'in') totalIn, - SUM(direction = 'out') totalOut + SUM(direction = 'out') totalOut, + timed FROM tmp.timeControl GROUP BY journeyCounter HAVING COUNT(*) MOD 2 = 1 OR totalIn <> 1 OR totalOut <> 1 OR timeWork >= vDayMaxTime - )sub ON sub.journeyCounter = tca.journeyCounter; + )sub ON sub.journeyCounter = tca.journeyCounter + WHERE sub.timed BETWEEN vDatedFrom AND vDatedTo; DROP TEMPORARY TABLE IF EXISTS tmp.timeControl; DROP TEMPORARY TABLE IF EXISTS tmp.timeControlAux; @@ -87897,9 +87925,9 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `workerJourney_replace`(vDatedFrom DATE, vDatedTo DATE, vWorkerFk INT) BEGIN @@ -87921,6 +87949,205 @@ BEGIN SET vDatedTimeTo = util.dayEnd(vDatedTo); + SELECT minHoursToBreak, breakHours, maxTimePerDay + INTO vMinHoursToBreak, vBreakHours, vMaxTimePerDay + FROM workerTimeControlConfig; + + DELETE FROM workerJourney + WHERE dated BETWEEN vDatedFrom AND vDatedTo + AND NOT isPaid + AND NOT isUpdated + AND (vWorkerFk IS NULL OR userFK = vWorkerFk); + + -- Se inserta todos los días del periodo por worker y business en el rango de fechas. + INSERT IGNORE INTO workerJourney(userFk, dated, businessFk) + SELECT w.workerFk, t.dated, w.businessFk + FROM workerLabour w + JOIN time t ON t.dated BETWEEN w.started AND IFNULL(w.ended,CURDATE()) + WHERE t.dated BETWEEN vDatedFrom AND vDatedTo + AND (vWorkerFk IS NULL OR w.workerFk = vWorkerFk) + ORDER BY w.workerFk, t.dated, w.businessFk; + + DROP TEMPORARY TABLE IF EXISTS tmp.`user`; + + IF vWorkerFk THEN + CALL timeControl_calculateByUser(vWorkerFk, vDatedFrom , vDatedTimeTo); + CREATE TEMPORARY TABLE IF NOT EXISTS tmp.`user` + SELECT vWorkerFk userFk; + ELSE + CALL timeControl_calculateAll(vDatedFrom, vDatedTimeTo); + CREATE TEMPORARY TABLE IF NOT EXISTS tmp.`user` + SELECT id userFk + FROM vn.worker w; + END IF; + + UPDATE workerJourney wj + JOIN tmp.timeControlCalculate t ON wj.dated = t.dated AND wj.userFk = t.userFk + SET wj.total = CAST(IF(t.timeWorkDecimal >= vMinHoursToBreak, t.timeWorkDecimal - vBreakHours, t.timeWorkDecimal) AS DECIMAL (10,2)), + wj.lunch = IF(t.timeWorkDecimal >= vMinHoursToBreak , vBreakHours , 0) + WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo + AND NOT wj.isPaid + AND NOT wj.isUpdated + AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk); + + -- NOCTURNIDAD + CALL vn.timeControl_getError(vDatedFrom, vDatedTimeTo); + + SET @vIsOdd := TRUE; + SET @vDated := NULL; + + + UPDATE workerJourney wj + JOIN (SELECT sub.dated, userFk, SUM(NigthlyHours) NigthlyHours + FROM(SELECT (@vIsOdd := NOT @vIsOdd) isOdd, + IF(direction='in', @vIsOdd := TRUE, @vIsOdd := @vIsOdd), + IF(@vIsOdd, @vLastTimed:=UNIX_TIMESTAMP(timed),@vLastTimed), + IF(direction='in', @vDated := DATE(wtc.timed), @vDated ) dated, + wtc.userFk, + IF(UNIX_TIMESTAMP(timed)- @vLastTimed < vMaxTimePerDay, + vn.workerNigthlyHours_calculate(FROM_UNIXTIME(@vLastTimed), wtc.timed), + 0) NigthlyHours + FROM (SELECT DISTINCT(wtc.id), wtc.userFk, wtc.timed, wtc.direction + FROM workerTimeControl wtc + LEFT JOIN tmp.timeControlError tce ON tce.id = wtc.id + WHERE wtc.timed BETWEEN vDatedFrom AND util.dayEnd(DATE_ADD(vDatedTo, INTERVAL 1 DAY)) + AND tce.id IS NULL + ORDER BY userFk, timed ASC + ) wtc + )sub + + + WHERE sub.dated BETWEEN vDatedFrom AND vDatedTo + + GROUP BY userFk, sub.dated + )night ON night.userFk = wj.userFk AND night.dated = wj.dated + SET wj.nocturn = night.NigthlyHours + WHERE NOT wj.isPaid + AND NOT isUpdated + AND night.NigthlyHours <> 0; + + -- Horas téoricas y precio de la hora ordinaria + UPDATE workerJourney wj + JOIN postgresql.business_labour_payroll blp ON blp.business_id = wj.businessFk + JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk + JOIN postgresql.calendar_labour_type cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id + SET wj.priceOrdinaryHour = (vMonthsByYear * blp.importepactado) / (vWeeksByYear * cl.hours_week), + wj.contractJourney = cl.hours_week / vDaysByWeek + WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo + AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) + AND NOT wj.isPaid + AND NOT isUpdated; + + -- Precio Extras, Vacaciones y Nocturnas + UPDATE workerJourney wj + JOIN(SELECT MAX(w.dated), t.dated, w.holidayInc, w.nightInc, w.extraInc + FROM time t + JOIN workerHourPrice w ON w.dated <= t.dated + WHERE t.dated BETWEEN vDatedFrom AND vDatedTo + GROUP BY t.dated + ) sub ON sub.dated = wj.dated + SET wj.priceHolidayHour = wj.priceOrdinaryHour * sub.holidayInc, + wj.priceNocturnHour = wj.priceOrdinaryHour * sub.nightInc, + wj.priceExtraHour = wj.priceOrdinaryHour * sub.extraInc + WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo + AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) + AND NOT wj.isPaid + AND NOT wj.isUpdated; + + -- Elimina el precio de las horas extras para los contratos parciales. + UPDATE workerJourney wj + JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk + JOIN postgresql.calendar_labour_type cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id + SET wj.priceExtraHour = 0 + WHERE cl.isPartial + AND wj.dated BETWEEN vDatedFrom AND vDatedTo + AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) + AND NOT wj.isPaid + AND NOT wj.isUpdated; + + -- Ausencias + UPDATE workerJourney wj + JOIN businessCalendar bc ON bc.businessFk = wj.businessFk AND bc.dated = wj.dated + JOIN absenceType ab ON ab.id = bc.absenceTypeFk + JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk + SET wj.permission = ab.permissionRate * wj.contractJourney, + wj.contractJourney = IF(ab.permissionRate = 1, 0, ab.permissionRate) * wj.contractJourney + WHERE ab.permissionRate > 0 + AND wj.dated BETWEEN vDatedFrom AND vDatedTo + AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) + AND NOT wj.isPaid + AND NOT wj.isUpdated; + + -- Sábados / Domingos + UPDATE workerJourney + SET holiday = IF(DAYNAME(dated)='sábado', 0, total), + contractJourney = 0 + WHERE DAYNAME(dated) IN ('sábado', 'domingo') + AND dated BETWEEN vDatedFrom AND vDatedTo + AND (vWorkerFk IS NULL OR userFk = vWorkerFk) + AND NOT isPaid + AND NOT isUpdated; + + -- Festivos por centro de trabajo + UPDATE workerJourney wj + JOIN calendarHolidays ch ON ch.dated = wj.dated + JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk + AND bl.workcenter_id = ch.workcenterFk + SET wj.holiday = wj.total, + wj.permission = wj.contractJourney, + wj.contractJourney = 0 + WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo + AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) + AND NOT wj.isPaid + AND NOT wj.isUpdated; + + -- Horas extras + UPDATE workerJourney + SET extra = lunch + total - contractJourney + WHERE dated BETWEEN vDatedFrom AND vDatedTo + AND (vWorkerFk IS NULL OR userFk = vWorkerFk) + AND NOT isPaid + AND NOT isUpdated; + + DROP TEMPORARY TABLE tmp.timeControlCalculate; + DROP TEMPORARY TABLE tmp.`user`; + DROP TEMPORARY TABLE tmp.timeControlError; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `workerJourney_replace__` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerJourney_replace__`(vDatedFrom DATE, vDatedTo DATE, vWorkerFk INT) +BEGIN +/** + * Actualiza la tabla workerJourney para que actue como caché permanente revisable de las jornadas laborales. + * @param vDatedFrom workerTimeControl + * @param vDatedTo workerTimeControl + * @param vWorkerFk, en caso de pasar 0 ó NULL se aplica a todos + */ + + DECLARE vDatedTimeTo DATETIME; + DECLARE vMaxTimePerDay INT; + DECLARE vMinHoursToBreak DECIMAL(10,2); + DECLARE vBreakHours DECIMAL(10,2); + DECLARE vMonthByYear INT; + DECLARE vWeeksByYear INT DEFAULT 52; + DECLARE vMonthsByYear INT DEFAULT 12; + DECLARE vDaysByWeek INT DEFAULT 5; + + SET vDatedTimeTo = util.dayEnd(vDatedTo); + SELECT minHoursToBreak, breakHours, maxTimePerDay INTO vMinHoursToBreak, vBreakHours, vMaxTimePerDay FROM workerTimeControlConfig; @@ -88079,218 +88306,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `workerJourney_replace__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `workerJourney_replace__`(vDatedFrom DATE, vDatedTo DATE, vWorkerFk INT) -BEGIN -/** - * Actualiza la tabla workerJourney para que actue como caché permanente revisable de las jornadas laborales. - * @param vDatedFrom workerTimeControl - * @param vDatedTo workerTimeControl - * @param vWorkerFk, en caso de pasar 0 ó NULL se aplica a todos - */ - - DECLARE vDatedTimeTo DATETIME; - DECLARE vMinHoursToBreak DECIMAL(10,2); - DECLARE vBreakHours DECIMAL(10,2); - DECLARE vMonthByYear INT; - DECLARE vWeeksByYear INT DEFAULT 52; - DECLARE vMonthsByYear INT DEFAULT 12; - DECLARE vDaysByWeek INT DEFAULT 5; - - SET vDatedTimeTo = util.dayEnd(vDatedTo); - - SELECT minHoursToBreak, breakHours - INTO vMinHoursToBreak, vBreakHours - FROM workerTimeControlConfig; - - DELETE FROM workerJourney - WHERE dated BETWEEN vDatedFrom AND vDatedTo - AND NOT isPaid - AND NOT isUpdated - AND (vWorkerFk IS NULL OR userFK = vWorkerFk); - - -- Se inserta todos los días del periodo por worker y business en el rango de fechas. - INSERT IGNORE INTO workerJourney(userFk, dated, businessFk) - SELECT w.workerFk, t.dated, w.businessFk - FROM workerLabour w - JOIN time t ON t.dated BETWEEN w.started AND IFNULL(w.ended,CURDATE()) - WHERE t.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR w.workerFk = vWorkerFk) - ORDER BY w.workerFk, t.dated, w.businessFk; - - IF vWorkerFk THEN - CALL timeControl_calculateByUser(vWorkerFk, vDatedFrom , vDatedTimeTo); - ELSE - CALL timeControl_calculateAll(vDatedFrom, vDatedTimeTo); - END IF; - - UPDATE workerJourney wj - JOIN tmp.timeControlCalculate t ON wj.dated = t.dated AND wj.userFk = t.userFk - SET wj.total = CAST(IF(t.timeWorkDecimal >= vMinHoursToBreak, t.timeWorkDecimal - vBreakHours, t.timeWorkDecimal) AS DECIMAL (10,2)), - wj.lunch = IF(t.timeWorkDecimal >= vMinHoursToBreak , vBreakHours , 0) - WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo - AND NOT wj.isPaid - AND NOT wj.isUpdated - AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk); - - -- NOCTURNIDAD - DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControl; - CREATE TEMPORARY TABLE tmp.workerTimeControl - SELECT sub.userFk, sub.timed, sub.order, 0 Non, FALSE manual - FROM (SELECT w.userFk, - IF(TIME(w.timed) IN ('06:00:00','22:00:00'), TIMESTAMPADD(SECOND, -1, w.timed), w.timed) timed, -- Regalamos un segundo para evitar que hayan fichadas en las horas claves de inicio y fin de la nocturnidad. - w.`order` - FROM workerTimeControl w - WHERE w.timed BETWEEN vDatedFrom AND vDatedTo - AND w.userFk = IFNULL(vWorkerFk, w.userFk) - UNION ALL - SELECT w.userFk, - TIMESTAMPADD(HOUR, 6, DATE(w.timed)), - w.`order` - FROM workerTimeControl w - WHERE w.timed BETWEEN vDatedFrom AND vDatedTo - AND w.userFk = IFNULL(vWorkerFk, w.userFk) - GROUP BY w.userFk, DATE(w.timed) - UNION ALL - SELECT w.userFk, - TIMESTAMPADD(HOUR, 22, DATE(w.timed)), - w.order - FROM workerTimeControl w - WHERE w.timed BETWEEN vDatedFrom AND vDatedTo - AND w.userFk = IFNULL(vWorkerFk, w.userFk) - GROUP BY w.userFk, DATE(w.timed) - ) sub - ORDER BY sub.userFk, sub.timed; - - -- Establece el orden en que se han de leer las fichadas - CALL workerTimeControlSetOrder(); - - -- Marca los impares para facilitar la consulta siguiente - UPDATE tmp.workerTimeControl - SET Non = 1 - WHERE `order` mod 2; - - -- Actualizamos la nocturnidad - UPDATE workerJourney wj - JOIN(SELECT userFk, Dia, sum(Nocturnidad) Nocturnidad FROM - (SELECT userFk, - date(timed) Dia, - ((IF( TIME(timed) < '06:00:00' OR (TIME(timed) = '06:00:00' AND Non = FALSE ) , IF(Non,-1,1),0) - + - IF(TIME(timed) > '22:00:00' OR (TIME(timed) = '22:00:00' AND Non = TRUE), If(Non,-1,1),0)) - * (HOUR(`timed`) + MINUTE(`timed`) / 60) - ) Nocturnidad - FROM tmp.workerTimeControl - ) sub - GROUP BY userFk, Dia - ) night ON night.userFk = wj.userFk AND night.Dia = wj.dated - SET wj.nocturn = night.Nocturnidad - WHERE NOT wj.isPaid - AND NOT isUpdated - AND night.Nocturnidad<>0; - - - -- Horas téoricas y precio de la hora ordinaria - UPDATE workerJourney wj - JOIN postgresql.business_labour_payroll blp ON blp.business_id = wj.businessFk - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - JOIN postgresql.calendar_labour_type cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id - SET wj.priceOrdinaryHour = (vMonthsByYear * blp.importepactado) / (vWeeksByYear * cl.hours_week), - wj.contractJourney = cl.hours_week / vDaysByWeek - WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) - AND NOT wj.isPaid - AND NOT isUpdated; - - -- Precio Extras, Vacaciones y Nocturnas - UPDATE workerJourney wj - JOIN(SELECT MAX(w.dated), t.dated, w.holidayInc, w.nightInc, w.extraInc - FROM time t - JOIN workerHourPrice w ON w.dated <= t.dated - WHERE t.dated BETWEEN vDatedFrom AND vDatedTo - GROUP BY t.dated - ) sub ON sub.dated = wj.dated - SET wj.priceHolidayHour = wj.priceOrdinaryHour * sub.holidayInc, - wj.priceNocturnHour = wj.priceOrdinaryHour * sub.nightInc, - wj.priceExtraHour = wj.priceOrdinaryHour * sub.extraInc - WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) - AND NOT wj.isPaid - AND NOT wj.isUpdated; - - -- Elimina el precio de las horas extras para los contratos parciales. - UPDATE workerJourney wj - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - JOIN postgresql.calendar_labour_type cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id - SET wj.priceExtraHour = 0 - WHERE cl.isPartial - AND wj.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) - AND NOT wj.isPaid - AND NOT wj.isUpdated; - - -- Bajas, vacaciones y festivos personales - UPDATE workerJourney wj - JOIN businessCalendar bc ON bc.businessFk = wj.businessFk AND bc.dated = wj.dated - JOIN absenceType ab ON ab.id = bc.absenceTypeFk - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - SET wj.permission = ab.permissionRate * wj.contractJourney, - wj.contractJourney = IF(ab.permissionRate = 1, 0, ab.permissionRate) * wj.contractJourney, - wj.holiday = wj.total - IF(ab.permissionRate = 1, 0, ab.permissionRate) * wj.contractJourney - WHERE ab.permissionRate > 0 - AND wj.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) - AND NOT wj.isPaid - AND NOT wj.isUpdated; - - -- Festivos por centro de trabajo - UPDATE workerJourney wj - JOIN calendarHolidays ch ON ch.dated = wj.dated - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - AND bl.workcenter_id = ch.workcenterFk - SET wj.holiday = wj.total, - wj.permission = wj.contractJourney, - wj.contractJourney = 0 - WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) - AND NOT wj.isPaid - AND NOT wj.isUpdated; - - -- Sábados / Domingos - UPDATE workerJourney - SET holiday = total, - contractJourney = 0 - WHERE DAYNAME(dated) IN ('sábado', 'domingo') - AND dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR userFk = vWorkerFk) - AND NOT isPaid - AND NOT isUpdated; - - -- Horas extras - UPDATE workerJourney - SET extra = lunch + total - contractJourney - WHERE dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR userFk = vWorkerFk) - AND NOT isPaid - AND NOT isUpdated; - - DROP TEMPORARY TABLE tmp.timeControlCalculate; - DROP TEMPORARY TABLE tmp.workerTimeControl; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `workerMistakeType_get` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -98017,4 +98032,4 @@ USE `vncontrol`; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-03-09 15:30:23 +-- Dump completed on 2022-03-14 10:24:57