diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1e75b6986..74109c7c4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,9 @@
-# Version 24.36 - 2024-08-27
+# Version 24.36 - 2024-09-03
### Added 馃啎
- chore: refs #7524 WIP limit call by:jorgep
+- chore: refs #7524 modify ormConfig table col (origin/7524-warmfix-modifyColumn) by:jorgep
- feat(update-user): refs #7848 add twoFactor by:alexm
- feat: #3199 Requested changes by:guillermo
- feat: refs #3199 Added more scopes ticket_recalcByScope by:guillermo
@@ -16,6 +17,7 @@
- feat: refs #7524 add default limit (origin/7524-limitSelect) by:jorgep
- feat: refs #7524 add mock limit on find query by:jorgep
- feat: refs #7524 wip remote hooks by:jorgep
+- feat: refs #7562 Requested changes by:guillermo
- feat: refs #7567 Changed time to call event by:guillermo
- feat: refs #7567 Requested changes by:guillermo
- feat: refs #7710 pr revision by:jgallego
@@ -31,6 +33,7 @@
- feat: refs #7799 Added Fk in vn.item.itemPackingTypeFk by:guillermo
- feat: refs #7800 Added company Fk by:guillermo
- feat: refs #7842 Added editorFk in vn.host by:guillermo
+- feat: refs #7860 Update new packagings (origin/7860-newPackaging) by:guillermo
- feat: refs #7862 roadmap new fields by:ivanm
- feat: refs #7882 Added quadMindsConfig table by:guillermo
@@ -55,6 +58,8 @@
- fix: refs #7756 id 0 by:guillermo
- fix: refs #7800 tpvMerchantEnable PRIMARY KEY (origin/7800-tpvMerchantEnable) by:guillermo
- fix: refs #7800 tpvMerchantEnable PRIMARY KEY by:guillermo
+- fix: refs #7916 itemShelving_transfer (origin/test, test) by:guillermo
+- fix: refs #pako Deleted duplicated version by:guillermo
# Version 24.34 - 2024-08-20
diff --git a/db/dump/.dump/data.sql b/db/dump/.dump/data.sql
index 37e7835fc..a1c15a30f 100644
--- a/db/dump/.dump/data.sql
+++ b/db/dump/.dump/data.sql
@@ -3,7 +3,7 @@ USE `util`;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-INSERT INTO `version` VALUES ('vn-database','11180','2a5588f013dbb6370e15754e03a6d9f1d74188e2','2024-08-20 08:34:44','11191');
+INSERT INTO `version` VALUES ('vn-database','11209','3cc19549e4a9d61542b5ba906ccaf9fc90a805ce','2024-09-03 15:04:20','11212');
INSERT INTO `versionLog` VALUES ('vn-database','10107','00-firstScript.sql','jenkins@10.0.2.69','2022-04-23 10:53:53',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10112','00-firstScript.sql','jenkins@10.0.2.69','2022-05-09 09:14:53',NULL,NULL);
@@ -896,6 +896,9 @@ INSERT INTO `versionLog` VALUES ('vn-database','11137','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','11138','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:23:34',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11139','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-07-08 10:58:01',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11140','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:23:34',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11141','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11142','00-invoiceOutSerialColumn.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11142','01-invoiceOutSerialUpdate.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11145','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-09 13:55:46',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11146','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-06 07:53:54',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11149','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-23 08:23:35',NULL,NULL);
@@ -915,10 +918,45 @@ INSERT INTO `versionLog` VALUES ('vn-database','11166','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','11168','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-25 08:58:34',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11169','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-25 12:38:13',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11170','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-09 07:12:38',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11171','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','01-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','02-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','03-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','04-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:07',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','05-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:08',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','06-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:39:08',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','07-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:40:15',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','08-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:54:58',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','09-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:55:00',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','10-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:55:16',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','11-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:20',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','12-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:20',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','13-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:20',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','14-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:25',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11172','15-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:44',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11175','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:44',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11177','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-07-30 12:42:28',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11179','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-20 08:34:43',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11180','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-20 08:34:43',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11182','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-08-09 08:19:36',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11185','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:44',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11187','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:57:44',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11189','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:00',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11190','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:00',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11191','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:00',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11191','01-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11191','02-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11192','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11193','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11193','01-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11193','02-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11194','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11195','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11197','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11201','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-27 13:04:26',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11204','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11209','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
@@ -1428,7 +1466,7 @@ INSERT INTO `ACL` VALUES (157,'Calendar','absences','READ','ALLOW','ROLE','emplo
INSERT INTO `ACL` VALUES (158,'ItemTag','*','WRITE','ALLOW','ROLE','accessory',NULL);
INSERT INTO `ACL` VALUES (160,'TicketServiceType','*','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (161,'TicketConfig','*','READ','ALLOW','ROLE','employee',NULL);
-INSERT INTO `ACL` VALUES (162,'InvoiceOut','delete','WRITE','ALLOW','ROLE','invoicing',NULL);
+INSERT INTO `ACL` VALUES (162,'InvoiceOut','delete','WRITE','ALLOW','ROLE','adminBoss',783);
INSERT INTO `ACL` VALUES (163,'InvoiceOut','book','WRITE','ALLOW','ROLE','invoicing',NULL);
INSERT INTO `ACL` VALUES (165,'TicketDms','*','*','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (167,'Worker','isSubordinate','READ','ALLOW','ROLE','employee',NULL);
@@ -1551,9 +1589,8 @@ INSERT INTO `ACL` VALUES (320,'ItemType','*','WRITE','ALLOW','ROLE','buyer',NULL
INSERT INTO `ACL` VALUES (321,'InvoiceOut','refund','WRITE','ALLOW','ROLE','invoicing',NULL);
INSERT INTO `ACL` VALUES (322,'InvoiceOut','refund','WRITE','ALLOW','ROLE','salesAssistant',NULL);
INSERT INTO `ACL` VALUES (323,'InvoiceOut','refund','WRITE','ALLOW','ROLE','claimManager',NULL);
-INSERT INTO `ACL` VALUES (324,'Ticket','refund','WRITE','ALLOW','ROLE','invoicing',NULL);
-INSERT INTO `ACL` VALUES (325,'Ticket','refund','WRITE','ALLOW','ROLE','salesAssistant',NULL);
-INSERT INTO `ACL` VALUES (326,'Ticket','refund','WRITE','ALLOW','ROLE','claimManager',NULL);
+INSERT INTO `ACL` VALUES (324,'Ticket','cloneAll','WRITE','ALLOW','ROLE','invoicing',10578);
+INSERT INTO `ACL` VALUES (326,'Ticket','cloneAll','WRITE','ALLOW','ROLE','claimManager',10578);
INSERT INTO `ACL` VALUES (327,'Sale','clone','WRITE','ALLOW','ROLE','salesAssistant',NULL);
INSERT INTO `ACL` VALUES (328,'Sale','clone','WRITE','ALLOW','ROLE','claimManager',NULL);
INSERT INTO `ACL` VALUES (329,'TicketRefund','*','WRITE','ALLOW','ROLE','invoicing',NULL);
@@ -1841,7 +1878,7 @@ INSERT INTO `ACL` VALUES (626,'Ticket','collectionLabel','READ','ALLOW','ROLE','
INSERT INTO `ACL` VALUES (628,'Ticket','expeditionPalletLabel','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (629,'Ticket','editDiscount','WRITE','ALLOW','ROLE','artificialBoss',NULL);
INSERT INTO `ACL` VALUES (630,'Claim','claimPickupEmail','WRITE','ALLOW','ROLE','salesTeamBoss',NULL);
-INSERT INTO `ACL` VALUES (635,'Ticket','updateAttributes','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (635,'Ticket','updateAttributes','WRITE','ALLOW','ROLE','administrative',19295);
INSERT INTO `ACL` VALUES (636,'Claim','claimPickupEmail','WRITE','ALLOW','ROLE','salesPerson',NULL);
INSERT INTO `ACL` VALUES (637,'Claim','downloadFile','READ','ALLOW','ROLE','salesPerson',NULL);
INSERT INTO `ACL` VALUES (638,'Agency','seeExpired','READ','ALLOW','ROLE','artificialBoss',NULL);
@@ -1871,7 +1908,7 @@ INSERT INTO `ACL` VALUES (688,'ClientSms','create','WRITE','ALLOW','ROLE','emplo
INSERT INTO `ACL` VALUES (689,'Vehicle','sorted','WRITE','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (695,'ViaexpressConfig','internationalExpedition','WRITE','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (696,'ViaexpressConfig','renderer','READ','ALLOW','ROLE','employee',NULL);
-INSERT INTO `ACL` VALUES (697,'Ticket','transferClient','WRITE','ALLOW','ROLE','administrative',NULL);
+INSERT INTO `ACL` VALUES (697,'Ticket','transferClient','WRITE','ALLOW','ROLE','claimManager',19295);
INSERT INTO `ACL` VALUES (698,'Ticket','canEditWeekly','WRITE','ALLOW','ROLE','buyer',NULL);
INSERT INTO `ACL` VALUES (699,'TicketSms','find','READ','ALLOW','ROLE','salesPerson',NULL);
INSERT INTO `ACL` VALUES (701,'Docuware','upload','WRITE','ALLOW','ROLE','deliveryAssistant',NULL);
@@ -1991,7 +2028,6 @@ INSERT INTO `ACL` VALUES (817,'ParkingLog','*','READ','ALLOW','ROLE','employee',
INSERT INTO `ACL` VALUES (818,'ExpeditionPallet','*','*','ALLOW','ROLE','production',NULL);
INSERT INTO `ACL` VALUES (819,'Ticket','addSaleByCode','WRITE','ALLOW','ROLE','production',NULL);
INSERT INTO `ACL` VALUES (820,'TicketCollection','*','READ','ALLOW','ROLE','production',NULL);
-INSERT INTO `ACL` VALUES (821,'Ticket','clone','WRITE','ALLOW','ROLE','administrative',NULL);
INSERT INTO `ACL` VALUES (822,'SupplierDms','*','*','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (823,'MailAlias','*','*','ALLOW','ROLE','developerBoss',NULL);
INSERT INTO `ACL` VALUES (824,'ItemShelving','hasItemOlder','READ','ALLOW','ROLE','production',NULL);
@@ -2012,7 +2048,7 @@ INSERT INTO `ACL` VALUES (840,'Locker','*','*','ALLOW','ROLE','hr',NULL);
INSERT INTO `ACL` VALUES (841,'Locker','*','*','ALLOW','ROLE','productionBoss',NULL);
INSERT INTO `ACL` VALUES (842,'Worker','__get__locker','READ','ALLOW','ROLE','hr',NULL);
INSERT INTO `ACL` VALUES (843,'Worker','__get__locker','READ','ALLOW','ROLE','productionBoss',NULL);
-INSERT INTO `ACL` VALUES (846,'Ticket','refund','WRITE','ALLOW','ROLE','logistic',NULL);
+INSERT INTO `ACL` VALUES (846,'Ticket','cloneAll','WRITE','ALLOW','ROLE','logistic',10578);
INSERT INTO `ACL` VALUES (847,'RouteConfig','*','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (848,'InvoiceIn','updateInvoiceIn','WRITE','ALLOW','ROLE','administrative',NULL);
INSERT INTO `ACL` VALUES (849,'InvoiceIn','clone','WRITE','ALLOW','ROLE','administrative',NULL);
@@ -2070,6 +2106,7 @@ INSERT INTO `ACL` VALUES (904,'Entry','buyLabel','READ','ALLOW','ROLE','supplier
INSERT INTO `ACL` VALUES (905,'AddressWaste','*','READ','ALLOW','ROLE','production',NULL);
INSERT INTO `ACL` VALUES (906,'Entry','print','READ','ALLOW','ROLE','supplier',NULL);
INSERT INTO `ACL` VALUES (907,'Expedition_PrintOut','*','*','ALLOW','ROLE','production',NULL);
+INSERT INTO `ACL` VALUES (908,'Docuware','upload','WRITE','ALLOW','ROLE','hrBuyer',13657);
INSERT INTO `fieldAcl` VALUES (1,'Client','name','update','employee');
INSERT INTO `fieldAcl` VALUES (2,'Client','contact','update','employee');
@@ -2364,11 +2401,9 @@ INSERT INTO `component` VALUES (39,'man谩 auto',7,NULL,NULL,1,'autoMana',0);
INSERT INTO `component` VALUES (40,'cambios Santos 2016',4,NULL,NULL,1,NULL,0);
INSERT INTO `component` VALUES (41,'bonificacion porte',6,NULL,NULL,1,'freightCharge',0);
INSERT INTO `component` VALUES (42,'promocion Francia',4,NULL,NULL,1,'frenchOffer',0);
-INSERT INTO `component` VALUES (43,'promocion Floramondo',4,NULL,NULL,1,'floramondoPromo',0);
INSERT INTO `component` VALUES (44,'rappel cadena',2,NULL,NULL,1,'rappel',0);
INSERT INTO `component` VALUES (45,'man谩 reclamacion',7,4,NULL,0,'manaClaim',0);
INSERT INTO `component` VALUES (46,'recargo a particular',2,NULL,0.25,0,'individual',0);
-INSERT INTO `component` VALUES (47,'promocion Italia',4,NULL,NULL,1,'italianOffer',0);
INSERT INTO `component` VALUES (48,'fusi贸n de lineas',4,NULL,NULL,1,'lineFusion',0);
INSERT INTO `component` VALUES (49,'sustituci贸n',4,NULL,NULL,1,'substitution',0);
@@ -2393,57 +2428,57 @@ INSERT INTO `continent` VALUES (5,'Ocean铆a','OC');
INSERT INTO `department` VALUES (1,'VN','VERDNATURA',1,112,763,0,0,0,0,26,NULL,'/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (22,'shopping','COMPRAS',2,5,NULL,72,0,0,1,1,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (23,'CMA','CAMARA',15,16,NULL,72,1,1,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (23,'CMA','CAMARA',15,16,NULL,72,1,1,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,'PREVIOUS');
INSERT INTO `department` VALUES (31,'it','INFORMATICA',6,7,NULL,72,0,0,1,0,1,'/1/','informatica-cau',1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (34,'accounting','CONTABILIDAD',8,9,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (35,'finance','FINANZAS',10,11,NULL,0,0,0,1,0,1,'/1/',NULL,1,'begonya@verdnatura.es',1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (36,'labor','LABORAL',12,13,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (37,'PROD','PRODUCCION',14,37,NULL,72,1,1,1,11,1,'/1/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (38,'picking','SACADO',17,18,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (39,'packing','ENCAJADO',19,20,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (38,'picking','SACADO',17,18,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'ON_PREPARATION');
+INSERT INTO `department` VALUES (39,'packing','ENCAJADO',19,20,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'PACKING');
INSERT INTO `department` VALUES (41,'administration','ADMINISTRACION',38,39,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (43,'VT','VENTAS',40,71,NULL,0,0,0,1,15,1,'/1/',NULL,0,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (43,'VT','VENTAS',40,71,NULL,0,0,0,1,15,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (44,'management','GERENCIA',72,73,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (45,'logistic','LOGISTICA',74,75,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (46,'delivery','REPARTO',76,77,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (48,'storage','ALMACENAJE',78,79,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (46,'delivery','REPARTO',76,77,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,'DELIVERY');
+INSERT INTO `department` VALUES (48,'storage','ALMACENAJE',78,79,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'STORAGE');
INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',80,81,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (52,NULL,'CARGA AEREA',82,83,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (53,'marketing','MARKETING Y COMUNICACI脫N',41,42,NULL,72,0,0,2,0,43,'/1/43/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (54,NULL,'ORNAMENTALES',84,85,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (55,NULL,'TALLER NATURAL',21,22,14548,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1118,NULL,NULL,NULL);
INSERT INTO `department` VALUES (56,NULL,'TALLER ARTIFICIAL',23,24,8470,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1927,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (58,'CMP','CAMPOS',86,89,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (58,'CMP','CAMPOS',86,89,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'FIELD');
INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',90,91,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (60,'claims','RECLAMACIONES',43,44,NULL,72,0,0,2,0,43,'/1/43/',NULL,0,NULL,1,1,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (60,'claims','RECLAMACIONES',43,44,NULL,72,0,0,2,0,43,'/1/43/',NULL,0,NULL,1,1,0,0,NULL,NULL,NULL,'CLAIM');
INSERT INTO `department` VALUES (61,NULL,'VNH',92,95,NULL,73,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (66,NULL,'VERDNAMADRID',96,97,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (68,NULL,'COMPLEMENTOS',25,26,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (69,NULL,'VERDNABARNA',98,99,NULL,74,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (80,'spainTeam5','EQUIPO ESPA脩A 5',45,46,4250,0,0,0,2,0,43,'/1/43/','es5_equipo',0,'es5@verdnatura.es',0,0,0,0,NULL,NULL,'5300',NULL);
+INSERT INTO `department` VALUES (80,'spainTeam5','EQUIPO ESPA脩A 5',45,46,4250,0,0,0,2,0,43,'/1/43/','es5_equipo',1,'es5@verdnatura.es',0,0,0,0,NULL,NULL,'5300',NULL);
INSERT INTO `department` VALUES (86,NULL,'LIMPIEZA',100,101,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (89,NULL,'COORDINACION',102,103,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (90,NULL,'TRAILER',93,94,NULL,0,0,0,2,0,61,'/1/61/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (91,'artificial','ARTIFICIAL',27,28,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (91,'artificial','ARTIFICIAL',27,28,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'PREVIOUS');
INSERT INTO `department` VALUES (92,NULL,'EQUIPO SILVERIO',47,48,1203,0,0,0,2,0,43,'/1/43/','sdc_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (94,'spainTeam2','EQUIPO ESPA脩A 2',49,50,3797,0,0,0,2,0,43,'/1/43/','es2_equipo',0,'es2@verdnatura.es',0,0,0,0,NULL,NULL,'5100',NULL);
-INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPA脩A 1',51,52,24065,0,0,0,2,0,43,'/1/43/','es1_equipo',0,'es1@verdnatura.es',0,0,0,0,NULL,NULL,'5000',NULL);
+INSERT INTO `department` VALUES (94,'spainTeam2','EQUIPO ESPA脩A 2',49,50,3797,0,0,0,2,0,43,'/1/43/','es2_equipo',1,'es2@verdnatura.es',0,0,0,0,NULL,NULL,'5100',NULL);
+INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPA脩A 1',51,52,24065,0,0,0,2,0,43,'/1/43/','es1_equipo',1,'es1@verdnatura.es',0,0,0,0,NULL,NULL,'5000',NULL);
INSERT INTO `department` VALUES (96,NULL,'EQUIPO C LOPEZ',53,54,4661,0,0,0,2,0,43,'/1/43/','cla_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (115,NULL,'EQUIPO CLAUDI',55,56,3810,0,0,0,2,0,43,'/1/43/','csr_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (123,NULL,'EQUIPO ELENA BASCU脩ANA',57,58,7102,0,0,0,2,0,43,'/1/43/','ebt_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (124,NULL,'CONTROL INTERNO',104,105,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (125,'spainTeam3','EQUIPO ESPA脩A 3',59,60,1118,0,0,0,2,0,43,'/1/43/','es3_equipo',0,'es3@verdnatura.es',0,0,0,0,NULL,NULL,'5200',NULL);
+INSERT INTO `department` VALUES (125,'spainTeam3','EQUIPO ESPA脩A 3',59,60,1118,0,0,0,2,0,43,'/1/43/','es3_equipo',1,'es3@verdnatura.es',0,0,0,0,NULL,NULL,'5200',NULL);
INSERT INTO `department` VALUES (126,NULL,'PRESERVADO',29,30,NULL,0,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (128,NULL,'PALETIZADO',31,32,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (130,NULL,'REVISION',33,34,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (128,NULL,'PALETIZADO',31,32,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'PALLETIZING');
+INSERT INTO `department` VALUES (130,NULL,'REVISION',33,34,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'ON_CHECKING');
INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',87,88,NULL,0,0,0,2,0,58,'/1/58/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (132,NULL,'EQUIPO DC',61,62,1731,0,0,0,2,0,43,'/1/43/','dc_equipo',1,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (133,'franceTeam','EQUIPO FRANCIA',63,64,1731,72,0,0,2,0,43,'/1/43/','fr_equipo',0,'gestionfrancia@verdnatura.es',0,0,0,0,NULL,NULL,'3300',NULL);
-INSERT INTO `department` VALUES (134,'portugalTeam','EQUIPO PORTUGAL',65,66,6264,0,0,0,2,0,43,'/1/43/','pt_equipo',0,'portugal@verdnatura.es',0,0,0,0,NULL,NULL,'3500',NULL);
+INSERT INTO `department` VALUES (133,'franceTeam','EQUIPO FRANCIA',63,64,1731,72,0,0,2,0,43,'/1/43/','fr_equipo',1,'gestionfrancia@verdnatura.es',0,0,0,0,NULL,NULL,'3300',NULL);
+INSERT INTO `department` VALUES (134,'portugalTeam','EQUIPO PORTUGAL',65,66,6264,0,0,0,2,0,43,'/1/43/','pt_equipo',1,'portugal@verdnatura.es',0,0,0,0,NULL,NULL,'3500',NULL);
INSERT INTO `department` VALUES (135,'routers','ENRUTADORES',106,107,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (136,'heavyVehicles','VEHICULOS PESADOS',108,109,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (137,'sorter','SORTER',110,111,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (139,'spainTeam4','EQUIPO ESPA脩A 4',67,68,3803,0,0,0,2,0,43,'/1/43/','es4_equipo',0,'es4@verdnatura.es',0,0,0,0,NULL,NULL,'5400',NULL);
+INSERT INTO `department` VALUES (139,'spainTeam4','EQUIPO ESPA脩A 4',67,68,3803,0,0,0,2,0,43,'/1/43/','es4_equipo',1,'es4@verdnatura.es',0,0,0,0,NULL,NULL,'5400',NULL);
INSERT INTO `department` VALUES (140,'hollandTeam','EQUIPO HOLANDA',69,70,NULL,0,0,0,2,0,43,'/1/43/','nl_equipo',1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (141,NULL,'PREVIA',35,36,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (146,NULL,'VERDNACOLOMBIA',3,4,NULL,72,0,0,2,0,22,'/1/22/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
@@ -2575,6 +2610,7 @@ INSERT INTO `state` VALUES (37,'Previa Revisado',3,0,'PREVIOUS_CONTROLLED',2,29,
INSERT INTO `state` VALUES (38,'Prep C谩mara',6,2,'COOLER_PREPARATION',7,14,0,0,0,2,0,0,2,0,'warning');
INSERT INTO `state` VALUES (41,'Prep Parcial',6,2,'PARTIAL_PREPARATION',7,14,0,0,0,2,0,0,2,0,'warning');
INSERT INTO `state` VALUES (42,'Entregado en parte',13,3,'PARTIAL_DELIVERED',NULL,16,0,1,0,0,0,0,0,0,NULL);
+INSERT INTO `state` VALUES (43,'Preparaci贸n por caja',6,2,'BOX_PICKING',7,42,0,0,0,2,0,0,2,0,'warning');
INSERT INTO `ticketUpdateAction` VALUES (1,'Cambiar los precios en el ticket','renewPrices');
INSERT INTO `ticketUpdateAction` VALUES (2,'Convertir en man谩','mana');
diff --git a/db/dump/.dump/privileges.sql b/db/dump/.dump/privileges.sql
index 1af4b446a..96d417ec5 100644
--- a/db/dump/.dump/privileges.sql
+++ b/db/dump/.dump/privileges.sql
@@ -929,16 +929,14 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','tillConfig',
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','till','juan@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionAssi','till','alexm@%','0000-00-00 00:00:00','Select,Insert,Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','vehicleState','alexm@%','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','adminOfficer','vehicleInvoiceIn','alexm@%','0000-00-00 00:00:00','Insert,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','production','sectorCollectionSaleGroup','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','vehicleEvent','alexm@%','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','vehicleDms','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logistic','vehicle','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','vehicle','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','Agencias','alexm@%','0000-00-00 00:00:00','Insert,Update','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','adminOfficer','vehicleDms','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','production','expeditionStateType','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','ticketState','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','vehicleInvoiceIn','alexm@%','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financialBoss','vehicleNotes','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','adminOfficer','vehicleState','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','volumeConfig','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','coolerBoss','ticketTrackingState','alexm@%','0000-00-00 00:00:00','Select,Insert,Update','');
@@ -1460,6 +1458,12 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','hedera','salesAssistant','orderCon
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','itemEntryOut','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','itemEntryIn','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','itemShelvingSale','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logistic','packaging','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyerBoss','rate','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','vehicleDms','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','vehicleInvoiceIn','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','vehicleNotes','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionBoss','saleGroup','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete','');
/*!40000 ALTER TABLE `tables_priv` ENABLE KEYS */;
/*!40000 ALTER TABLE `columns_priv` DISABLE KEYS */;
diff --git a/db/dump/.dump/structure.sql b/db/dump/.dump/structure.sql
index 1f04c8e78..81441e19f 100644
--- a/db/dump/.dump/structure.sql
+++ b/db/dump/.dump/structure.sql
@@ -2290,23 +2290,6 @@ CREATE TABLE `Greuge_comercial_recobro` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
---
--- Table structure for table `Greuges_comercial_detail`
---
-
-DROP TABLE IF EXISTS `Greuges_comercial_detail`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Greuges_comercial_detail` (
- `Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `Id_Trabajador` int(10) unsigned NOT NULL,
- `Comentario` varchar(45) NOT NULL,
- `Importe` decimal(10,2) NOT NULL,
- `Fecha` datetime DEFAULT NULL,
- PRIMARY KEY (`Id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci ROW_FORMAT=COMPACT;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Table structure for table `Ticket_Portes`
--
@@ -12457,10 +12440,11 @@ DROP TABLE IF EXISTS `tpvMerchantEnable`;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tpvMerchantEnable` (
`merchantFk` int(10) unsigned NOT NULL DEFAULT 0,
- `companyFk` smallint(6) unsigned NOT NULL,
- PRIMARY KEY (`merchantFk`,`companyFk`),
+ `companyFk` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`merchantFk`),
UNIQUE KEY `company_id` (`companyFk`),
- CONSTRAINT `tpvMerchantEnable_ibfk_1` FOREIGN KEY (`merchantFk`, `companyFk`) REFERENCES `tpvMerchant` (`id`, `companyFk`) ON DELETE CASCADE ON UPDATE CASCADE
+ CONSTRAINT `tpvMerchantEnable_company_FK` FOREIGN KEY (`companyFk`) REFERENCES `vn`.`company` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `tpvMerchantEnable_tpvMerchant_FK` FOREIGN KEY (`merchantFk`) REFERENCES `tpvMerchant` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Virtual TPV enabled providers';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -19323,6 +19307,7 @@ CREATE TABLE `buffer` (
`hasStrapper` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'tiene una flejadora acoplada',
`typeDefaultFk` int(11) NOT NULL DEFAULT 1 COMMENT 'estado por defecto',
`motors` int(11) NOT NULL DEFAULT 1 COMMENT 'n煤mero de fotoc茅lulas que corresponden con sectores de motor independientes',
+ `editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `code_UNIQUE` (`code`),
KEY `buffer_FK` (`stateFk`),
@@ -19390,6 +19375,34 @@ CREATE TABLE `bufferGroup` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Agrupaci贸n de buffers que sirven de salida para las mismas rutas';
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `bufferLog`
+--
+
+DROP TABLE IF EXISTS `bufferLog`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `bufferLog` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `originFk` int(11) DEFAULT NULL,
+ `userFk` int(10) unsigned DEFAULT NULL,
+ `action` set('insert','update','delete','select') NOT NULL,
+ `creationDate` timestamp NULL DEFAULT current_timestamp(),
+ `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+ `changedModel` enum('Buffer','Config') NOT NULL DEFAULT 'Buffer',
+ `oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
+ `newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
+ `changedModelId` int(11) NOT NULL,
+ `changedModelValue` varchar(45) DEFAULT NULL,
+ `summaryId` varchar(30) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `logBufferUserFk` (`userFk`),
+ KEY `bufferLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
+ KEY `bufferLog_originFk` (`originFk`,`creationDate`),
+ CONSTRAINT `bufferUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `bufferPool`
--
@@ -19497,6 +19510,7 @@ CREATE TABLE `config` (
`isBalanced` tinyint(1) NOT NULL DEFAULT 1,
`testMode` tinyint(1) NOT NULL DEFAULT 0,
`isAllowedUnloading` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Permite que se pueda cambiar el mode de los buffers a UNLOADING',
+ `editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `config_check` CHECK (`id` = 1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
@@ -19677,7 +19691,6 @@ CREATE TABLE `moving` (
`created` timestamp NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`),
UNIQUE KEY `moving_UN` (`expeditionFk`),
- KEY `moving_fk1_idx` (`expeditionFk`),
KEY `moving_fk2_idx` (`bufferFromFk`),
KEY `moving_fk3_idx` (`bufferToFk`),
KEY `moving_FK` (`stateFk`),
@@ -19854,18 +19867,14 @@ DELIMITER ;;
/*!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 = utf8mb3 */ ;;
-/*!50003 SET character_set_results = utf8mb3 */ ;;
-/*!50003 SET collation_connection = utf8mb3_general_ci */ ;;
+/*!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' */ ;;
/*!50003 SET @saved_time_zone = @@time_zone */ ;;
/*!50003 SET time_zone = 'SYSTEM' */ ;;
-/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `moving_clean` ON SCHEDULE EVERY 5 MINUTE STARTS '2022-01-21 00:00:00' ON COMPLETION PRESERVE ENABLE COMMENT 'Llama a srt.moving_clean para que elimine y notifique de registr' DO BEGIN
-
- CALL srt.moving_clean();
-
-END */ ;;
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `moving_clean` ON SCHEDULE EVERY 15 MINUTE STARTS '2022-01-21 00:00:00' ON COMPLETION PRESERVE ENABLE COMMENT 'Llama a srt.moving_clean para que elimine y notifique de registr' DO CALL srt.moving_clean() */ ;;
/*!50003 SET time_zone = @saved_time_zone */ ;;
/*!50003 SET sql_mode = @saved_sql_mode */ ;;
/*!50003 SET character_set_client = @saved_cs_client */ ;;
@@ -22228,62 +22237,70 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `moving_clean`()
BEGIN
/**
* Elimina movimientos por inactividad
- *
*/
DECLARE vExpeditionFk INT;
- DECLARE vBufferToFk INT;
DECLARE vBufferFromFk INT;
- DECLARE done BOOL DEFAULT FALSE;
-
- DECLARE cur CURSOR FOR
- SELECT m.expeditionFk, m.bufferToFk, m.bufferFromFk
- FROM srt.moving m
- JOIN srt.config c
- JOIN (SELECT bufferFk, SUM(isActive) hasBox
- FROM srt.photocell
- GROUP BY bufferFk) sub ON sub.bufferFk = m.bufferFromFk
- WHERE m.created < TIMESTAMPADD(MINUTE, - c.movingMaxLife , util.VN_NOW())
+ DECLARE vStateOutFk INT
+ DEFAULT (SELECT id FROM expeditionState WHERE `description` = 'OUT');
+ DECLARE vDone BOOL;
+ DECLARE vSorter CURSOR FOR
+ SELECT m.expeditionFk, m.bufferFromFk
+ FROM moving m
+ JOIN (
+ SELECT bufferFk, SUM(isActive) hasBox
+ FROM photocell
+ GROUP BY bufferFk
+ ) sub ON sub.bufferFk = m.bufferFromFk
+ WHERE m.created < (util.VN_NOW() - INTERVAL (SELECT movingMaxLife FROM config) MINUTE)
AND NOT sub.hasBox;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
- OPEN cur;
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
- bucle: LOOP
+ OPEN vSorter;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vSorter INTO vExpeditionFk, vBufferFromFk;
- FETCH cur INTO vExpeditionFk, vBufferToFk, vBufferFromFk;
-
- IF done THEN
- LEAVE bucle;
+ IF vDone THEN
+ LEAVE l;
END IF;
- DELETE FROM srt.moving
+ START TRANSACTION;
+
+ SELECT id
+ FROM moving
+ WHERE expeditionFk = vExpeditionFk
+ FOR UPDATE;
+
+ DELETE FROM moving
WHERE expeditionFk = vExpeditionFk;
- UPDATE srt.expedition e
- JOIN srt.expeditionState es ON es.description = 'OUT'
- SET
- bufferFk = NULL,
+ SELECT id
+ FROM expedition
+ WHERE id = vExpeditionFk
+ OR (bufferFk = vBufferFromFk AND `position` > 0)
+ FOR UPDATE;
+
+ UPDATE expedition
+ SET bufferFk = NULL,
`position` = NULL,
- stateFk = es.id
- WHERE e.id = vExpeditionFk;
+ stateFk = vStateOutFk
+ WHERE id = vExpeditionFk;
- UPDATE srt.expedition e
- SET e.`position` = e.`position` - 1
- WHERE e.bufferFk = vBufferFromFk
- AND e.`position` > 0;
-
- CALL vn.mail_insert(
- 'pako@verdnatura.es, carles@verdnatura.es',
- NULL,
- CONCAT('Moving_clean. Expedition: ', vExpeditionFk, ' estaba parada'),
- CONCAT('Expedition: ', vExpeditionFk,' vBufferToFk: ', vBufferToFk)
- );
-
- END LOOP bucle;
-
- CLOSE cur;
+ UPDATE expedition
+ SET `position` = `position` - 1
+ WHERE bufferFk = vBufferFromFk
+ AND `position` > 0;
+ COMMIT;
+ END LOOP l;
+ CLOSE vSorter;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -26234,7 +26251,9 @@ DROP TABLE IF EXISTS `accountDetailType`;
CREATE TABLE `accountDetailType` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`description` varchar(255) DEFAULT NULL,
- PRIMARY KEY (`id`)
+ `code` varchar(45) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -31761,6 +31780,7 @@ CREATE TABLE `host` (
`routeDaysBefore` smallint(6) DEFAULT 2,
`routeDaysAfter` smallint(6) DEFAULT 1,
`updated` timestamp NULL DEFAULT current_timestamp(),
+ `editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `host_UN` (`code`),
KEY `configHost_FK_3` (`companyFk`),
@@ -32014,10 +32034,10 @@ CREATE TABLE `invoiceCorrection` (
KEY `invoiceCorrection_ibfk_1_idx` (`cplusRectificationTypeFk`),
KEY `cplusInvoiceTyoeFk_idx` (`siiTypeInvoiceOutFk`),
KEY `invoiceCorrectionTypeFk_idx` (`invoiceCorrectionTypeFk`),
- CONSTRAINT `corrected_fk` FOREIGN KEY (`correctedFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `correcting_fk` FOREIGN KEY (`correctingFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `cplusRectificationType_FK` FOREIGN KEY (`cplusRectificationTypeFk`) REFERENCES `cplusRectificationType` (`id`) ON UPDATE CASCADE,
CONSTRAINT `invoiceCorrectionType_FK` FOREIGN KEY (`invoiceCorrectionTypeFk`) REFERENCES `invoiceCorrectionType` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `invoiceCorrection_invoiceOut_FK` FOREIGN KEY (`correctingFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `invoiceCorrection_invoiceOut_FK_1` FOREIGN KEY (`correctedFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `siiTypeInvoiceOut_FK` FOREIGN KEY (`siiTypeInvoiceOutFk`) REFERENCES `siiTypeInvoiceOut` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Relacion entre las facturas rectificativas y las rectificadas.';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -32381,8 +32401,8 @@ CREATE TABLE `invoiceOut` (
`cplusTaxBreakFk` int(10) unsigned NOT NULL DEFAULT 1,
`cplusSubjectOpFk` int(10) unsigned NOT NULL DEFAULT 1,
`siiTrascendencyInvoiceOutFk` int(10) unsigned NOT NULL DEFAULT 1,
- PRIMARY KEY (`id`,`ref`),
- UNIQUE KEY `Id_Factura` (`ref`),
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `invoiceOut_unique` (`ref`),
KEY `Id_Banco` (`bankFk`),
KEY `Id_Cliente` (`clientFk`),
KEY `empresa_id` (`companyFk`),
@@ -32434,8 +32454,8 @@ CREATE TABLE `invoiceOutExpense` (
PRIMARY KEY (`id`),
KEY `invoiceOutExpence_FK_1_idx` (`invoiceOutFk`),
KEY `invoiceOutExpence_expenceFk_idx` (`expenseFk`),
- CONSTRAINT `invoiceOutExpence_FK_1` FOREIGN KEY (`invoiceOutFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `invoiceOutExpence_expenceFk` FOREIGN KEY (`expenseFk`) REFERENCES `expense` (`id`) ON UPDATE CASCADE
+ CONSTRAINT `invoiceOutExpence_expenceFk` FOREIGN KEY (`expenseFk`) REFERENCES `expense` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `invoiceOutExpense_invoiceOut_FK` FOREIGN KEY (`invoiceOutFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Desglosa la base imponible de una factura en funcion del tipo de gasto/venta';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -32455,8 +32475,9 @@ CREATE TABLE `invoiceOutSerial` (
`cplusInvoiceType477Fk` int(10) unsigned DEFAULT 1,
`footNotes` longtext DEFAULT NULL,
`isRefEditable` tinyint(4) NOT NULL DEFAULT 0,
- `type` enum('global','quick') DEFAULT NULL,
+ `type` enum('global','quick','multiple') DEFAULT NULL,
PRIMARY KEY (`code`),
+ UNIQUE KEY `invoiceOutSerial_taxAreaFk_IDX` (`taxAreaFk`,`type`) USING BTREE,
KEY `taxAreaFk_idx` (`taxAreaFk`),
CONSTRAINT `invoiceOutSeriaTaxArea` FOREIGN KEY (`taxAreaFk`) REFERENCES `taxArea` (`code`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
@@ -32480,8 +32501,8 @@ CREATE TABLE `invoiceOutTax` (
UNIQUE KEY `invoiceOutTax_Resctriccion` (`invoiceOutFk`,`pgcFk`),
KEY `invoiceOutFk_idx` (`invoiceOutFk`),
KEY `pgcFk` (`pgcFk`),
- CONSTRAINT `invoiceOutFk` FOREIGN KEY (`invoiceOutFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `invoiceOutTax_ibfk_1` FOREIGN KEY (`pgcFk`) REFERENCES `pgc` (`code`) ON UPDATE CASCADE
+ CONSTRAINT `invoiceOutTax_ibfk_1` FOREIGN KEY (`pgcFk`) REFERENCES `pgc` (`code`) ON UPDATE CASCADE,
+ CONSTRAINT `invoiceOutTax_invoiceOut_FK` FOREIGN KEY (`invoiceOutFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -32607,6 +32628,7 @@ CREATE TABLE `item` (
KEY `item_lastUsed_IDX` (`lastUsed`) USING BTREE,
KEY `item_expenceFk_idx` (`expenseFk`),
KEY `item_fk_editor` (`editorFk`),
+ KEY `item_itemPackingType_FK` (`itemPackingTypeFk`),
CONSTRAINT `item_FK` FOREIGN KEY (`genericFk`) REFERENCES `item` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `item_FK_1` FOREIGN KEY (`typeFk`) REFERENCES `itemType` (`id`),
CONSTRAINT `item_expenceFk` FOREIGN KEY (`expenseFk`) REFERENCES `expense` (`id`) ON UPDATE CASCADE,
@@ -32614,6 +32636,7 @@ CREATE TABLE `item` (
CONSTRAINT `item_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
CONSTRAINT `item_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `origin` (`id`) ON UPDATE CASCADE,
CONSTRAINT `item_ibfk_2` FOREIGN KEY (`intrastatFk`) REFERENCES `intrastat` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `item_itemPackingType_FK` FOREIGN KEY (`itemPackingTypeFk`) REFERENCES `itemPackingType` (`code`) ON UPDATE CASCADE,
CONSTRAINT `itemsupplyResponseFk` FOREIGN KEY (`supplyResponseFk`) REFERENCES `edi`.`supplyResponse` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `producer_id` FOREIGN KEY (`producerFk`) REFERENCES `producer` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
@@ -33996,8 +34019,9 @@ DROP TABLE IF EXISTS `mandateType`;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `mandateType` (
`id` smallint(5) NOT NULL AUTO_INCREMENT,
- `name` varchar(45) NOT NULL,
- PRIMARY KEY (`id`)
+ `code` varchar(45) NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -34459,8 +34483,9 @@ CREATE TABLE `operator` (
`warehouseFk` smallint(6) unsigned NOT NULL DEFAULT 60,
`sectorFk` int(11) DEFAULT NULL,
`labelerFk` int(10) unsigned DEFAULT NULL,
- `linesLimit` int(11) DEFAULT 20 COMMENT 'L铆mite de lineas en una colecci贸n para la asignaci贸n de pedidos',
+ `linesLimit` int(10) unsigned DEFAULT 20 COMMENT 'L铆mite de lineas en una colecci贸n para la asignaci贸n de pedidos',
`volumeLimit` decimal(10,6) DEFAULT 0.500000 COMMENT 'L铆mite de volumen en una colecci贸n para la asignaci贸n de pedidos',
+ `sizeLimit` int(10) unsigned DEFAULT NULL COMMENT 'L铆mite de altura en una colecci贸n para la asignaci贸n de pedidos',
`isOnReservationMode` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`workerFk`),
KEY `operator_FK` (`workerFk`),
@@ -34558,6 +34583,21 @@ SET character_set_client = utf8;
1 AS `name` */;
SET character_set_client = @saved_cs_client;
+--
+-- Table structure for table `ormConfig`
+--
+
+DROP TABLE IF EXISTS `ormConfig`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ormConfig` (
+ `id` int(11) NOT NULL,
+ `selectLimit` int(5) NOT NULL,
+ PRIMARY KEY (`id`),
+ CONSTRAINT `ormConfig_check` CHECK (`id` = 1)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `osTicketConfig`
--
@@ -36114,6 +36154,22 @@ CREATE TABLE `punchState` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Table for storing punches that have cars with errors';
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `quadMindsApiConfig`
+--
+
+DROP TABLE IF EXISTS `quadMindsApiConfig`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `quadMindsApiConfig` (
+ `id` int(10) unsigned NOT NULL,
+ `url` varchar(255) DEFAULT NULL,
+ `key` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ CONSTRAINT `quadMindsConfig_check` CHECK (`id` = 1)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `quality`
--
@@ -36458,11 +36514,18 @@ CREATE TABLE `roadmap` (
`kmEnd` mediumint(9) DEFAULT NULL,
`started` datetime DEFAULT NULL,
`finished` datetime DEFAULT NULL,
+ `m3` int(10) unsigned DEFAULT NULL,
+ `driver2Fk` int(10) unsigned DEFAULT NULL,
+ `driver1Fk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `userFk` (`userFk`),
KEY `roadmap_supplierFk` (`supplierFk`),
+ KEY `roadmap_worker_FK` (`driver1Fk`),
+ KEY `roadmap_worker_FK_2` (`driver2Fk`),
CONSTRAINT `roadmap_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `roadmap_supplierFk` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE
+ CONSTRAINT `roadmap_supplierFk` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `roadmap_worker_FK` FOREIGN KEY (`driver1Fk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `roadmap_worker_FK_2` FOREIGN KEY (`driver2Fk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Troncales diarios que se contratan';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -37046,14 +37109,17 @@ CREATE TABLE `saleGroup` (
`sectorFk` int(11) DEFAULT NULL,
`ticketFk` int(11) DEFAULT NULL,
`editorFk` int(10) unsigned DEFAULT NULL,
+ `stateFk` tinyint(3) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `saleGroup_FK` (`ticketFk`),
KEY `saleGroup_userFK` (`userFk`),
KEY `saleGroup_parkingFK` (`parkingFk`),
KEY `saleGroup_sectorFK` (`sectorFk`),
+ KEY `saleGroup_state_FK` (`stateFk`),
CONSTRAINT `saleGroup_FK` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `saleGroup_parkingFK` FOREIGN KEY (`parkingFk`) REFERENCES `parking` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `saleGroup_sectorFK` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `saleGroup_state_FK` FOREIGN KEY (`stateFk`) REFERENCES `state` (`id`) ON UPDATE CASCADE,
CONSTRAINT `saleGroup_userFK` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='agrupa lineas de venta';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -38864,7 +38930,6 @@ CREATE TABLE `ticket` (
KEY `ticket_fk_editor` (`editorFk`),
KEY `ticket_cmrFk` (`cmrFk`),
CONSTRAINT `ticketCompany_Fk` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `ticket_FK` FOREIGN KEY (`refFk`) REFERENCES `invoiceOut` (`ref`) ON UPDATE CASCADE,
CONSTRAINT `ticket_cmrFk` FOREIGN KEY (`cmrFk`) REFERENCES `cmr` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `ticket_customer_id` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE,
CONSTRAINT `ticket_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
@@ -38872,6 +38937,7 @@ CREATE TABLE `ticket` (
CONSTRAINT `ticket_ibfk_6` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON UPDATE CASCADE,
CONSTRAINT `ticket_ibfk_8` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`),
CONSTRAINT `ticket_ibfk_9` FOREIGN KEY (`routeFk`) REFERENCES `route` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
+ CONSTRAINT `ticket_invoiceOut_FK` FOREIGN KEY (`refFk`) REFERENCES `invoiceOut` (`ref`) ON UPDATE CASCADE,
CONSTRAINT `tickets_zone_fk` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -44423,73 +44489,33 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` FUNCTION `invoiceSerial`(vClientFk INT, vCompanyFk INT, vType CHAR(1)) RETURNS char(1) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
+CREATE DEFINER=`root`@`localhost` FUNCTION `invoiceSerial`(vClientFk INT, vCompanyFk INT, vType CHAR(15)) RETURNS char(2) CHARSET utf8mb3 COLLATE utf8mb3_general_ci
DETERMINISTIC
BEGIN
/**
- * Obtiene la serie de de una factura
+ * Obtiene la serie de una factura
* dependiendo del area del cliente.
- *
+ *
* @param vClientFk Id del cliente
* @param vCompanyFk Id de la empresa
- * @param vType Tipo de factura ["R", "M", "G"]
- * @return Serie de la factura
+ * @param vType Tipo de factura ['global','multiple','quick']
+ * @return vSerie de la factura
*/
- DECLARE vTaxArea VARCHAR(25);
- DECLARE vSerie CHAR(1);
+ DECLARE vTaxArea VARCHAR(25) COLLATE utf8mb3_general_ci;
+ DECLARE vSerie CHAR(2);
IF (SELECT hasInvoiceSimplified FROM client WHERE id = vClientFk) THEN
RETURN 'S';
END IF;
- SELECT clientTaxArea(vClientFk, vCompanyFk) INTO vTaxArea;
- SELECT invoiceSerialArea(vType,vTaxArea) INTO vSerie;
- RETURN vSerie;
-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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP FUNCTION IF EXISTS `invoiceSerialArea` */;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` FUNCTION `invoiceSerialArea`(vType CHAR(1), vTaxArea VARCHAR(25)) RETURNS char(1) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci
- DETERMINISTIC
-BEGIN
- DECLARE vSerie CHAR(1);
+ SELECT addressTaxArea(defaultAddressFk, vCompanyFk) INTO vTaxArea
+ FROM client
+ WHERE id = vClientFk;
+
+ SELECT code INTO vSerie
+ FROM invoiceOutSerial
+ WHERE `type` = vType AND taxAreaFk = vTaxArea;
- IF vType = 'R' THEN
- SELECT
- CASE vTaxArea
- WHEN 'CEE' THEN 'H'
- WHEN 'WORLD' THEN 'E'
- ELSE 'T'
- END INTO vSerie;
- -- Factura multiple
- ELSEIF vType = 'M' THEN
- SELECT
- CASE vTaxArea
- WHEN 'CEE' THEN 'H'
- WHEN 'WORLD' THEN 'E'
- ELSE 'M'
- END INTO vSerie;
- -- Factura global
- ELSEIF vType = 'G' THEN
- SELECT
- CASE vTaxArea
- WHEN 'CEE' THEN 'V'
- WHEN 'WORLD' THEN 'X'
- ELSE 'A'
- END INTO vSerie;
- END IF;
RETURN vSerie;
END ;;
DELIMITER ;
@@ -46174,14 +46200,21 @@ BEGIN
* @param vSelf Id ticket
* @return BOOL
*/
- DECLARE vIsTooLittle TINYINT(1);
-
+ DECLARE vIsTooLittle BOOL;
+
+ WITH ticketData AS (
+ SELECT addressFk, DATE(shipped) dated
+ FROM vn.ticket
+ WHERE id = vSelf
+ )
SELECT (SUM(IFNULL(sv.litros, 0)) < vc.minTicketVolume
- AND IFNULL(t.totalWithoutVat, 0) < vc.minTicketValue) INTO vIsTooLittle
- FROM ticket t
- LEFT JOIN saleVolume sv ON sv.ticketFk = t.id
- JOIN volumeConfig vc
- WHERE t.id = vSelf;
+ AND SUM(IFNULL(t.totalWithoutVat, 0)) < vc.minTicketValue) INTO vIsTooLittle
+ FROM ticketData td
+ JOIN vn.ticket t ON t.addressFk = td.addressFk
+ LEFT JOIN vn.saleVolume sv ON sv.ticketFk = t.id
+ JOIN vn.volumeConfig vc
+ WHERE t.shipped BETWEEN td.dated AND util.dayEnd(td.dated)
+ AND ticket_isProblemCalcNeeded(t.id);
RETURN vIsTooLittle;
END ;;
@@ -52524,10 +52557,11 @@ BEGIN
DECLARE vWarehouseFk INT;
DECLARE vWagons INT;
DECLARE vTrainFk INT;
- DECLARE vLinesLimit INT DEFAULT NULL;
+ DECLARE vLinesLimit INT;
DECLARE vTicketLines INT;
- DECLARE vVolumeLimit DECIMAL DEFAULT NULL;
+ DECLARE vVolumeLimit DECIMAL;
DECLARE vTicketVolume DECIMAL;
+ DECLARE vSizeLimit INT;
DECLARE vMaxTickets INT;
DECLARE vStateFk VARCHAR(45);
DECLARE vFirstTicketFk INT;
@@ -52592,6 +52626,7 @@ BEGIN
o.trainFk,
o.linesLimit,
o.volumeLimit,
+ o.sizeLimit,
pc.collection_new_lockname
INTO vMaxTickets,
vHasUniqueCollectionTime,
@@ -52603,6 +52638,7 @@ BEGIN
vTrainFk,
vLinesLimit,
vVolumeLimit,
+ vSizeLimit,
vLockName
FROM productionConfig pc
JOIN worker w ON w.id = vUserFk
@@ -52687,6 +52723,14 @@ BEGIN
JOIN state s ON s.id = pb.state
JOIN agencyMode am ON am.id = pb.agencyModeFk
JOIN agency a ON a.id = am.agencyFk
+ LEFT JOIN (
+ SELECT pb.ticketFk, MAX(i.`size`) maxSize
+ FROM tmp.productionBuffer pb
+ JOIN ticket t ON t.id = pb.ticketfk
+ JOIN sale s ON s.ticketFk = t.id
+ JOIN item i ON i.id = s.itemFk
+ GROUP BY pb.ticketFk
+ ) sub ON sub.ticketFk = pb.ticketFk
JOIN productionConfig pc
WHERE pb.shipped <> util.VN_CURDATE()
OR (pb.ubicacion IS NULL AND a.isOwn)
@@ -52698,8 +52742,9 @@ BEGIN
OR (NOT pb.V AND vItemPackingTypeFk = 'V')
OR (pc.isPreviousPreparationRequired AND pb.previousWithoutParking)
OR LENGTH(pb.problem) > 0
- OR (pb.lines >= vLinesLimit AND vLinesLimit IS NOT NULL)
- OR (pb.m3 >= vVolumeLimit AND vVolumeLimit IS NOT NULL);
+ OR pb.lines > vLinesLimit
+ OR pb.m3 > vVolumeLimit
+ OR sub.maxSize > vSizeLimit;
END IF;
-- Es importante que el primer ticket se coja en todos los casos
@@ -59182,7 +59227,7 @@ BEGIN
AND (vCorrectingSerial = vSerial OR NOT hasAnyNegativeBase())
THEN
- -- el trigger a帽ade el siguiente Id_Factura correspondiente a la vSerial
+ -- el trigger a帽ade el siguiente ref correspondiente a la vSerial
INSERT INTO invoiceOut(
ref,
serial,
@@ -62222,28 +62267,26 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_transfer`(
)
BEGIN
/**
- * Transfiere producto de una ubicaci贸n a otra, fusionando si coincide el
- * packing y la fecha.
+ * Transfiere producto de una ubicaci贸n a otra
+ * fusionando si coincide el packing y la fecha.
*
* @param vItemShelvingFk Identificador de itemShelving
* @param vShelvingFk Identificador de shelving
*/
- DECLARE vNewItemShelvingFk INT DEFAULT 0;
+ DECLARE vNewItemShelvingFk INT;
- SELECT MAX(ish.id)
- INTO vNewItemShelvingFk
+ SELECT MAX(ish.id) INTO vNewItemShelvingFk
FROM itemShelving ish
JOIN (
- SELECT
- itemFk,
- packing,
- created,
- buyFk
+ SELECT itemFk,
+ packing,
+ created,
+ buyFk
FROM itemShelving
WHERE id = vItemShelvingFk
) ish2 ON ish2.itemFk = ish.itemFk
AND ish2.packing = ish.packing
- AND date(ish2.created) = date(ish.created)
+ AND DATE(ish2.created) = DATE(ish.created)
AND ish2.buyFk = ish.buyFk
WHERE ish.shelvingFk = vShelvingFk COLLATE utf8_unicode_ci;
@@ -62256,11 +62299,17 @@ BEGIN
DELETE FROM itemShelving
WHERE id = vItemShelvingFk;
ELSE
- UPDATE itemShelving
- SET shelvingFk = vShelvingFk
- WHERE id = vItemShelvingFk;
+ IF (SELECT EXISTS(SELECT id FROM shelving
+ WHERE code = vShelvingFk COLLATE utf8_unicode_ci)) THEN
+
+ UPDATE itemShelving
+ SET shelvingFk = vShelvingFk
+ WHERE id = vItemShelvingFk;
+ ELSE
+ CALL util.throw('The shelving not exists');
+ END IF;
END IF;
- SELECT true;
+ SELECT TRUE;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -63950,7 +63999,7 @@ BEGIN
SELECT * FROM sales
UNION ALL
SELECT * FROM orders
- ORDER BY shipped DESC,
+ ORDER BY shipped,
(inventorySupplierFk = entityId) DESC,
alertLevel DESC,
isTicket,
@@ -67026,11 +67075,6 @@ proc: BEGIN
DECLARE vEndingDate DATETIME;
DECLARE vIsTodayRelative BOOLEAN;
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- RESIGNAL;
- END;
-
SELECT util.dayEnd(util.VN_CURDATE()) + INTERVAL LEAST(vScopeDays, maxProductionScopeDays) DAY
INTO vEndingDate
FROM productionConfig;
@@ -67284,7 +67328,6 @@ proc: BEGIN
DROP TEMPORARY TABLE
tmp.productionTicket,
tmp.ticket,
- tmp.risk,
tmp.ticket_problems,
tmp.ticketWithPrevia,
tItemShelvingStock,
@@ -69809,154 +69852,98 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_getProblems`(IN vIsTodayRelative tinyint(1))
+CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_getProblems`(
+ vIsTodayRelative tinyint(1)
+)
BEGIN
/**
* Calcula los problemas de cada venta para un conjunto de tickets.
*
* @param vIsTodayRelative Indica si se calcula el disponible como si todo saliera hoy
- * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Identificadores de los tickets a calcular
+ * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Tickets a calcular
* @return tmp.sale_problems
*/
- DECLARE vWarehouseFk INT;
+ DECLARE vWarehouseFk INT;
DECLARE vDate DATE;
- DECLARE vAvailableCache INT;
+ DECLARE vAvailableCache INT;
DECLARE vVisibleCache INT;
DECLARE vDone BOOL;
- DECLARE vRequiredComponent INT;
-
- DECLARE vCursor CURSOR FOR
- SELECT DISTINCT tt.warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), DATE(tt.shipped))
- FROM tmp.sale_getProblems tt
- WHERE DATE(tt.shipped) BETWEEN util.VN_CURDATE()
- AND util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY;
+ DECLARE vCursor CURSOR FOR
+ SELECT DISTINCT warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), DATE(shipped))
+ FROM tmp.sale_getProblems
+ WHERE shipped BETWEEN util.VN_CURDATE()
+ AND util.dayEnd(util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
DELETE tt.*
FROM tmp.sale_getProblems tt
JOIN ticketObservation tto ON tto.ticketFk = tt.ticketFk
- JOIN observationType ot ON ot.id = tto.observationTypeFk
- WHERE ot.code = 'administrative'
+ JOIN observationType ot ON ot.id = tto.observationTypeFk
+ WHERE ot.code = 'administrative'
AND tto.description = 'Miriam';
- CREATE OR REPLACE TEMPORARY TABLE tmp.sale_problems (
- ticketFk INT(11),
- saleFk INT(11),
- isFreezed INTEGER(1) DEFAULT 0,
- risk DECIMAL(10,1) DEFAULT 0,
- hasHighRisk TINYINT(1) DEFAULT 0,
- hasTicketRequest INTEGER(1) DEFAULT 0,
- itemShortage VARCHAR(255),
- isTaxDataChecked INTEGER(1) DEFAULT 1,
- itemDelay VARCHAR(255),
- itemLost VARCHAR(255),
- hasComponentLack INTEGER(1),
- hasRounding VARCHAR(255),
- isTooLittle BOOL DEFAULT FALSE,
- isVip BOOL DEFAULT FALSE,
- PRIMARY KEY (ticketFk, saleFk)
- ) ENGINE = MEMORY;
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale_problems (
+ ticketFk INT(11),
+ saleFk INT(11),
+ isFreezed INTEGER(1) DEFAULT 0,
+ risk DECIMAL(10,1) DEFAULT 0,
+ hasRisk TINYINT(1) DEFAULT 0,
+ hasHighRisk TINYINT(1) DEFAULT 0,
+ hasTicketRequest INTEGER(1) DEFAULT 0,
+ itemShortage VARCHAR(255),
+ isTaxDataChecked INTEGER(1) DEFAULT 1,
+ itemDelay VARCHAR(255),
+ itemLost VARCHAR(255),
+ hasComponentLack INTEGER(1),
+ hasRounding VARCHAR(255),
+ isTooLittle BOOL DEFAULT FALSE,
+ isVip BOOL DEFAULT FALSE,
+ PRIMARY KEY (ticketFk, saleFk)
+ ) ENGINE = MEMORY;
- CREATE OR REPLACE TEMPORARY TABLE tmp.ticket_list
- (PRIMARY KEY (ticketFk))
- ENGINE = MEMORY
- SELECT ticketFk, clientFk
- FROM tmp.sale_getProblems;
+ INSERT INTO tmp.sale_problems(ticketFk,
+ saleFk,
+ isFreezed,
+ risk,
+ hasRisk,
+ hasHighRisk,
+ hasTicketRequest,
+ isTaxDataChecked,
+ hasComponentLack,
+ hasRounding,
+ isTooLittle)
+ SELECT sgp.ticketFk,
+ s.id,
+ IF(FIND_IN_SET('isFreezed', t.problem), TRUE, FALSE) isFreezed,
+ t.risk,
+ IF(FIND_IN_SET('hasRisk', t.problem), TRUE, FALSE) hasRisk,
+ IF(FIND_IN_SET('hasHighRisk', t.problem), TRUE, FALSE) hasHighRisk,
+ IF(FIND_IN_SET('hasTicketRequest', t.problem), TRUE, FALSE) hasTicketRequest,
+ IF(FIND_IN_SET('isTaxDataChecked', t.problem), FALSE, TRUE) isTaxDataChecked,
+ IF(FIND_IN_SET('hasComponentLack', s.problem), TRUE, FALSE) hasComponentLack,
+ IF(FIND_IN_SET('hasRounding', s.problem),
+ LEFT(GROUP_CONCAT('RE: ', i.id, ' ', IFNULL(i.longName,'') SEPARATOR ', '), 250),
+ NULL
+ ) hasRounding,
+ IF(FIND_IN_SET('isTooLittle', t.problem)
+ AND util.VN_NOW() < (util.VN_CURDATE() + INTERVAL HOUR(zc.`hour`) HOUR) + INTERVAL MINUTE(zc.`hour`) MINUTE,
+ TRUE, FALSE) isTooLittle
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
+ LEFT JOIN sale s ON s.ticketFk = t.id
+ LEFT JOIN item i ON i.id = s.itemFk
+ LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk
+ AND zc.dated = util.VN_CURDATE()
+ WHERE s.problem <> '' OR t.problem <> '' OR t.risk
+ GROUP BY t.id, s.id;
- SELECT COUNT(*) INTO vRequiredComponent
- FROM component
- WHERE isRequired;
-
- -- Too Little
- INSERT INTO tmp.sale_problems(ticketFk, isTooLittle)
- SELECT tp.ticketFk, TRUE
- FROM tmp.sale_getProblems tp
- JOIN ticket t ON t.id = tp.ticketFk
- JOIN (
- SELECT t.addressFk,
- SUM(ROUND(`ic`.`cm3delivery` * `s`.`quantity` / 1000, 0)) litros,
- t.totalWithoutVat
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
- JOIN sale s ON s.ticketFk = t.id
- AND s.quantity > 0
- JOIN itemCost ic ON ic.itemFk = s.itemFk
- AND ic.warehouseFk = t.warehouseFk
- JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk
- AND zc.dated = util.VN_CURDATE()
- JOIN agencyMode am ON am.id = t.agencyModeFk
- JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
- WHERE util.VN_NOW() < (util.VN_CURDATE() + INTERVAL HOUR(zc.`hour`) HOUR) + INTERVAL MINUTE(zc.`hour`) MINUTE
- AND dm.code IN ('AGENCY','DELIVERY','PICKUP')
- AND t.shipped BETWEEN util.VN_CURDATE() AND util.midnight()
- GROUP BY t.addressFk
- ) sub ON sub.addressFk = t.addressFk
- JOIN volumeConfig vc
- WHERE sub.litros < vc.minTicketVolume
- AND sub.totalWithoutVat < vc.minTicketValue;
-
- -- VIP
INSERT INTO tmp.sale_problems(ticketFk, isVip)
- SELECT DISTINCT tl.ticketFk, TRUE
- FROM tmp.ticket_list tl
- JOIN client c ON c.id = tl.clientFk
+ SELECT sgp.ticketFk, TRUE
+ FROM tmp.sale_getProblems sgp
+ JOIN client c ON c.id = sgp.clientFk
WHERE c.businessTypeFk = 'VIP'
- ON DUPLICATE KEY UPDATE isVip = TRUE;
-
- -- Faltan componentes
- INSERT INTO tmp.sale_problems(ticketFk, hasComponentLack, saleFk)
- SELECT t.id, COUNT(c.id) < vRequiredComponent hasComponentLack, s.id
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
- JOIN sale s ON s.ticketFk = t.id
- JOIN agencyMode am ON am.id = t.agencyModeFk
- JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
- LEFT JOIN saleComponent sc ON sc.saleFk = s.id
- LEFT JOIN component c ON c.id = sc.componentFk
- AND c.isRequired
- WHERE dm.code IN ('AGENCY','DELIVERY','PICKUP')
- AND s.quantity > 0
- GROUP BY s.id
- HAVING hasComponentLack;
-
- -- Cliente congelado
- INSERT INTO tmp.sale_problems(ticketFk, isFreezed)
- SELECT DISTINCT tl.ticketFk, TRUE
- FROM tmp.ticket_list tl
- JOIN client c ON c.id = tl.clientFk
- WHERE c.isFreezed
- ON DUPLICATE KEY UPDATE isFreezed = c.isFreezed;
-
- -- Credit exceeded
- CREATE OR REPLACE TEMPORARY TABLE tmp.clientGetDebt
- (PRIMARY KEY (clientFk))
- ENGINE = MEMORY
- SELECT DISTINCT clientFk
- FROM tmp.ticket_list;
-
- CALL client_getDebt(util.VN_CURDATE());
-
- INSERT INTO tmp.sale_problems(ticketFk, risk, hasHighRisk)
- SELECT DISTINCT tl.ticketFk, r.risk, ((r.risk - cc.riskTolerance) > c.credit + 10)
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
- JOIN agencyMode a ON t.agencyModeFk = a.id
- JOIN tmp.risk r ON r.clientFk = t.clientFk
- JOIN client c ON c.id = t.clientFk
- JOIN clientConfig cc
- WHERE r.risk > c.credit + 10
- AND NOT a.isRiskFree
- ON DUPLICATE KEY UPDATE
- risk = r.risk, hasHighRisk = ((r.risk - cc.riskTolerance) > c.credit + 10);
-
- -- Antiguo COD 100, son peticiones de compra sin terminar
- INSERT INTO tmp.sale_problems(ticketFk, hasTicketRequest)
- SELECT DISTINCT tl.ticketFk, TRUE
- FROM tmp.ticket_list tl
- JOIN ticketRequest tr ON tr.ticketFk = tl.ticketFk
- WHERE tr.isOK IS NULL
- ON DUPLICATE KEY UPDATE hasTicketRequest = TRUE;
+ ON DUPLICATE KEY UPDATE isVIP = TRUE;
CREATE OR REPLACE TEMPORARY TABLE tItemShelvingStock_byWarehouse
(INDEX (itemFk, warehouseFk))
@@ -69968,10 +69955,9 @@ BEGIN
JOIN shelving sh ON sh.code = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
JOIN sector s ON s.id = p.sectorFk
- GROUP BY ish.itemFk,
- s.warehouseFk;
+ GROUP BY ish.itemFk, s.warehouseFk;
- -- Disponible, Faltas, Inventario y Retrasos
+ -- Disponible, faltas, inventario y retrasos
OPEN vCursor;
l: LOOP
SET vDone = FALSE;
@@ -69990,14 +69976,14 @@ BEGIN
INSERT INTO tmp.sale_problems(ticketFk, itemShortage, saleFk)
SELECT ticketFk, problem, saleFk
FROM (
- SELECT tl.ticketFk,
- LEFT(CONCAT('F: ',GROUP_CONCAT(i.id, ' ', i.longName, ' ')),250) problem,
- s.id AS saleFk
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
+ SELECT sgp.ticketFk,
+ LEFT(CONCAT('F: ', GROUP_CONCAT(i.id, ' ', i.longName, ' ')), 250) problem,
+ s.id saleFk
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
JOIN sale s ON s.ticketFk = t.id
JOIN item i ON i.id = s.itemFk
- JOIN itemType it on it.id = i.typeFk
+ JOIN itemType it ON it.id = i.typeFk
JOIN itemCategory ic ON ic.id = it.categoryFk
LEFT JOIN cache.visible v ON v.item_id = i.id
AND v.calc_id = vVisibleCache
@@ -70005,8 +69991,8 @@ BEGIN
AND av.calc_id = vAvailableCache
LEFT JOIN tItemShelvingStock_byWarehouse issw ON issw.itemFk = i.id
AND issw.warehouseFk = t.warehouseFk
- WHERE IFNULL(v.visible,0) < s.quantity
- AND IFNULL(av.available ,0) < s.quantity
+ WHERE IFNULL(v.visible, 0) < s.quantity
+ AND IFNULL(av.available, 0) < s.quantity
AND IFNULL(issw.visible, 0) < s.quantity
AND NOT s.isPicked
AND NOT s.reserved
@@ -70015,27 +70001,27 @@ BEGIN
AND NOT i.generic
AND util.VN_CURDATE() = vDate
AND t.warehouseFk = vWarehouseFk
- GROUP BY tl.ticketFk) sub
+ GROUP BY sgp.ticketFk) sub
ON DUPLICATE KEY UPDATE itemShortage = sub.problem, saleFk = sub.saleFk;
-- Inventario: Visible suficiente, pero ubicado menor a la cantidad vendida
INSERT INTO tmp.sale_problems(ticketFk, itemLost, saleFk)
SELECT ticketFk, problem, saleFk
FROM (
- SELECT tl.ticketFk,
+ SELECT sgp.ticketFk,
LEFT(GROUP_CONCAT('I: ', i.id, ' ', i.longName, ' '), 250) problem,
s.id saleFk
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
JOIN sale s ON s.ticketFk = t.id
JOIN item i ON i.id = s.itemFk
- JOIN itemType it on it.id = i.typeFk
+ JOIN itemType it ON it.id = i.typeFk
JOIN itemCategory ic ON ic.id = it.categoryFk
LEFT JOIN cache.visible v ON v.item_id = s.itemFk
AND v.calc_id = vVisibleCache
LEFT JOIN tItemShelvingStock_byWarehouse issw ON issw.itemFk = i.id
AND issw.warehouseFk = t.warehouseFk
- WHERE IFNULL(v.visible,0) >= s.quantity
+ WHERE IFNULL(v.visible, 0) >= s.quantity
AND IFNULL(issw.visible, 0) < s.quantity
AND s.quantity > 0
AND NOT s.isPicked
@@ -70045,22 +70031,22 @@ BEGIN
AND NOT i.generic
AND util.VN_CURDATE() = vDate
AND t.warehouseFk = vWarehouseFk
- GROUP BY tl.ticketFk
+ GROUP BY sgp.ticketFk
) sub
- ON DUPLICATE KEY UPDATE itemDelay = sub.problem, saleFk = sub.saleFk;
+ ON DUPLICATE KEY UPDATE itemLost = sub.problem, saleFk = sub.saleFk;
-- Retraso: Disponible suficiente, pero no visible ni ubicado
INSERT INTO tmp.sale_problems(ticketFk, itemDelay, saleFk)
SELECT ticketFk, problem, saleFk
FROM (
- SELECT tl.ticketFk,
+ SELECT sgp.ticketFk,
LEFT(GROUP_CONCAT('R: ', i.id, ' ', i.longName, ' '), 250) problem,
s.id saleFk
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
JOIN sale s ON s.ticketFk = t.id
JOIN item i ON i.id = s.itemFk
- JOIN itemType it on it.id = i.typeFk
+ JOIN itemType it ON it.id = i.typeFk
JOIN itemCategory ic ON ic.id = it.categoryFk
LEFT JOIN cache.visible v ON v.item_id = s.itemFk
AND v.calc_id = vVisibleCache
@@ -70079,43 +70065,28 @@ BEGIN
AND NOT i.generic
AND util.VN_CURDATE() = vDate
AND t.warehouseFk = vWarehouseFk
- GROUP BY tl.ticketFk
+ GROUP BY sgp.ticketFk
) sub
ON DUPLICATE KEY UPDATE itemDelay = sub.problem, saleFk = sub.saleFk;
-
- -- Redondeo: Cantidad pedida incorrecta en al grouping de la 煤ltima compra
- CALL buy_getUltimate(NULL, vWarehouseFk, vDate);
- INSERT INTO tmp.sale_problems(ticketFk, hasRounding, saleFk)
- SELECT ticketFk, problem ,saleFk
- FROM (
- SELECT tl.ticketFk,
- s.id saleFk,
- LEFT(GROUP_CONCAT('RE: ',i.id, ' ', IFNULL(i.longName,'') SEPARATOR ', '), 250) problem
- FROM tmp.ticket_list tl
- JOIN ticket t ON t.id = tl.ticketFk
- AND t.warehouseFk = vWarehouseFk
- JOIN sale s ON s.ticketFk = tl.ticketFk
- JOIN item i ON i.id = s.itemFk
- JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk
- JOIN buy b ON b.id = bu.buyFk
- WHERE MOD(s.quantity, b.`grouping`)
- GROUP BY tl.ticketFk
- )sub
- ON DUPLICATE KEY UPDATE hasRounding = sub.problem, saleFk = sub.saleFk;
END LOOP;
CLOSE vCursor;
-
- INSERT INTO tmp.sale_problems(ticketFk, isTaxDataChecked)
- SELECT DISTINCT tl.ticketFk, FALSE
- FROM tmp.ticket_list tl
- JOIN client c ON c.id = tl.clientFk
- WHERE NOT c.isTaxDataChecked
- ON DUPLICATE KEY UPDATE isTaxDataChecked = FALSE;
- DROP TEMPORARY TABLE
- tmp.clientGetDebt,
- tmp.ticket_list,
- tItemShelvingStock_byWarehouse;
+ INSERT INTO tmp.sale_problems(ticketFk, hasRounding, saleFk)
+ SELECT ticketFk, problem, saleFk
+ FROM (
+ SELECT sgp.ticketFk,
+ s.id saleFk,
+ LEFT(GROUP_CONCAT('RE: ', i.id, ' ', IFNULL(i.longName,'') SEPARATOR ', '), 250) problem
+ FROM tmp.sale_getProblems sgp
+ JOIN ticket t ON t.id = sgp.ticketFk
+ JOIN sale s ON s.ticketFk = sgp.ticketFk
+ JOIN item i ON i.id = s.itemFk
+ WHERE FIND_IN_SET('hasRounding', s.problem)
+ GROUP BY sgp.ticketFk
+ ) sub
+ ON DUPLICATE KEY UPDATE hasRounding = sub.problem, saleFk = sub.saleFk;
+
+ DROP TEMPORARY TABLE tItemShelvingStock_byWarehouse;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -70140,8 +70111,7 @@ BEGIN
*
* @return Problems result
*/
- DROP TEMPORARY TABLE IF EXISTS tmp.sale_getProblems;
- CREATE TEMPORARY TABLE tmp.sale_getProblems
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems
(INDEX (ticketFk))
ENGINE = MEMORY
SELECT t.id ticketFk, t.clientFk, t.warehouseFk, t.shipped
@@ -70659,6 +70629,94 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `sale_setProblemRoundingByBuy` */;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_setProblemRoundingByBuy`(
+ vBuyFk INT
+)
+BEGIN
+/**
+ * Update rounding problem for all sales related to a buy.
+ *
+ * @param vBuyFk Buy id
+ */
+ DECLARE vItemFk INT;
+ DECLARE vWarehouseFk INT;
+ DECLARE vMaxDated DATE;
+ DECLARE vMinDated DATE;
+ DECLARE vLanding DATE;
+ DECLARE vLastBuy INT;
+ DECLARE vCurrentBuy INT;
+ DECLARE vGrouping INT;
+
+ SELECT b.itemFk, t.warehouseInFk
+ INTO vItemFk, vWarehouseFk
+ FROM buy b
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE b.id = vBuyFk;
+
+ IF vItemFk AND vWarehouseFk THEN
+ SELECT DATE(MAX(t.shipped)) + INTERVAL 1 DAY, DATE(MIN(t.shipped))
+ INTO vMaxDated, vMinDated
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ WHERE t.shipped >= util.VN_CURDATE()
+ AND s.itemFk = vItemFk
+ AND s.quantity > 0;
+
+ CALL buy_getUltimate(vItemFk, vWarehouseFk, vMinDated);
+
+ SELECT bu.buyFk, b.grouping INTO vLastBuy, vGrouping
+ FROM tmp.buyUltimate bu
+ JOIN buy b ON b.id = bu.buyFk;
+
+ DROP TEMPORARY TABLE tmp.buyUltimate;
+
+ SET vLanding = vMaxDated;
+
+ WHILE vCurrentBuy <> vLastBuy OR vLanding > vMinDated DO
+ SET vMaxDated = vLanding - INTERVAL 1 DAY;
+
+ CALL buy_getUltimate(vItemFk, vWarehouseFk, vMaxDated);
+
+ SELECT buyFk, landing
+ INTO vCurrentBuy, vLanding
+ FROM tmp.buyUltimate;
+
+ DROP TEMPORARY TABLE tmp.buyUltimate;
+ END WHILE;
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ (INDEX(saleFk, isProblemCalcNeeded))
+ ENGINE = MEMORY
+ SELECT s.id saleFk,
+ MOD(s.quantity, vGrouping) hasProblem,
+ ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ WHERE s.itemFk = vItemFk
+ AND s.quantity > 0
+ AND t.shipped BETWEEN vMinDated AND util.dayEnd(vMaxDated);
+
+ CALL sale_setProblem('hasRounding');
+
+ DROP TEMPORARY TABLE tmp.sale;
+ END IF;
+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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `sectorCollectionSaleGroup_add` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -74410,7 +74468,7 @@ DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_close`()
BEGIN
/**
- * Realiza el cierre de todos los
+ * Realiza el cierre de todos los
* tickets de la tabla tmp.ticket_close.
*
* @table tmp.ticket_close(ticketFk) Identificadores de los tickets a cerrar
@@ -74428,7 +74486,7 @@ BEGIN
DECLARE cur CURSOR FOR
SELECT ticketFk FROM tmp.ticket_close;
-
+
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN
RESIGNAL;
@@ -74438,7 +74496,7 @@ BEGIN
proc: LOOP
SET vDone = FALSE;
-
+
FETCH cur INTO vCurTicketFk;
IF vDone THEN
@@ -74455,12 +74513,12 @@ BEGIN
c.hasToInvoice
INTO vClientFk,
vIsTaxDataChecked,
- vCompanyFk,
+ vCompanyFk,
vShipped,
vHasDailyInvoice,
vWithPackage,
vHasToInvoice
- FROM ticket t
+ FROM ticket t
JOIN `client` c ON c.id = t.clientFk
JOIN province p ON p.id = c.provinceFk
LEFT JOIN autonomy a ON a.id = p.autonomyFk
@@ -74470,7 +74528,7 @@ BEGIN
INSERT INTO ticketPackaging (ticketFk, packagingFk, quantity)
(SELECT vCurTicketFk, p.id, COUNT(*)
- FROM expedition e
+ FROM expedition e
JOIN packaging p ON p.id = e.packagingFk
JOIN ticket t ON t.id = e.ticketFk
LEFT JOIN agencyMode am ON am.id = t.agencyModeFk
@@ -74481,15 +74539,15 @@ BEGIN
GROUP BY p.itemFk);
-- No retornables o no catalogados
- INSERT INTO sale (itemFk, ticketFk, concept, quantity, price, isPriceFixed)
+ INSERT INTO sale (itemFk, ticketFk, concept, quantity, price, isPriceFixed)
(SELECT e.freightItemFk, vCurTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.freightItemFk, vClientFk), 1
- FROM expedition e
+ FROM expedition e
JOIN item i ON i.id = e.freightItemFk
LEFT JOIN packaging p ON p.itemFk = i.id
WHERE e.ticketFk = vCurTicketFk AND IFNULL(p.isPackageReturnable, 0) = 0
AND getSpecialPrice(e.freightItemFk, vClientFk) > 0
GROUP BY e.freightItemFk);
-
+
IF(vHasDailyInvoice) AND vHasToInvoice THEN
-- Facturacion rapida
@@ -74497,10 +74555,10 @@ BEGIN
-- Facturar si est谩 contabilizado
IF vIsTaxDataChecked THEN
CALL invoiceOut_newFromClient(
- vClientFk,
- (SELECT invoiceSerial(vClientFk, vCompanyFk, 'M')),
- vShipped,
- vCompanyFk,
+ vClientFk,
+ (SELECT invoiceSerial(vClientFk, vCompanyFk, 'multiple')),
+ vShipped,
+ vCompanyFk,
NULL,
NULL,
vNewInvoiceId);
@@ -75215,7 +75273,9 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_getProblems`(IN vIsTodayRelative tinyint(1))
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_getProblems`(
+ vIsTodayRelative tinyint(1)
+)
BEGIN
/**
* Calcula los problemas para un conjunto de tickets.
@@ -75232,6 +75292,7 @@ BEGIN
SELECT ticketFk,
MAX(isFreezed) isFreezed,
MAX(risk) risk,
+ MAX(hasRisk) hasRisk,
MAX(hasHighRisk) hasHighRisk,
MAX(hasTicketRequest) hasTicketRequest,
MAX(itemShortage) itemShortage,
@@ -75246,19 +75307,19 @@ BEGIN
FROM tmp.sale_problems
GROUP BY ticketFk;
- UPDATE tmp.ticket_problems tp
- SET tp.totalProblems = (
- (tp.isFreezed) +
- IF(tp.risk,TRUE, FALSE) +
- (tp.hasTicketRequest) +
- (tp.isTaxDataChecked = 0) +
- (tp.hasComponentLack) +
- (tp.itemDelay) +
- (tp.isTooLittle) +
- (tp.itemLost) +
- (tp.hasRounding) +
- (tp.itemShortage) +
- (tp.isVip)
+ UPDATE tmp.ticket_problems
+ SET totalProblems = (
+ (isFreezed) +
+ (hasRisk) +
+ (hasTicketRequest) +
+ (!isTaxDataChecked) +
+ (hasComponentLack) +
+ (itemDelay IS NOT NULL) +
+ (isTooLittle) +
+ (itemLost IS NOT NULL) +
+ (hasRounding IS NOT NULL) +
+ (itemShortage IS NOT NULL) +
+ (isVip)
);
DROP TEMPORARY TABLE tmp.sale_problems;
@@ -75895,16 +75956,28 @@ BEGIN
DECLARE vTicketFk INT;
DECLARE cTickets CURSOR FOR
- SELECT id FROM ticket
- WHERE refFk IS NULL
- AND ((vScope = 'client' AND clientFk = vId)
- OR (vScope = 'address' AND addressFk = vId));
+ SELECT DISTINCT t.id
+ FROM ticket t
+ LEFT JOIN tItems ti ON ti.id = t.id
+ WHERE t.refFk IS NULL
+ AND ((vScope = 'client' AND t.clientFk = vId)
+ OR (vScope = 'address' AND t.addressFk = vId)
+ OR (vScope = 'item' AND ti.id)
+ );
- DECLARE CONTINUE HANDLER FOR NOT FOUND
- SET vDone = TRUE;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
+
+ CREATE OR REPLACE TEMPORARY TABLE tItems
+ (PRIMARY KEY (id))
+ ENGINE = MEMORY
+ SELECT DISTINCT t.id
+ FROM ticket t
+ JOIN sale s ON s.ticketFk = t.id
+ JOIN itemTaxCountry itc ON itc.itemFk = s.itemFk
+ WHERE t.refFk IS NULL
+ AND (vScope = 'item' AND itc.itemFk = vId);
OPEN cTickets;
-
myLoop: LOOP
SET vDone = FALSE;
FETCH cTickets INTO vTicketFk;
@@ -75915,8 +75988,9 @@ BEGIN
CALL ticket_recalc(vTicketFk, NULL);
END LOOP;
-
CLOSE cTickets;
+
+ DROP TEMPORARY TABLE tItems;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -76458,18 +76532,28 @@ BEGIN
*
* @param vSelf Id del ticket
*/
-
+ DECLARE vTicketIsTooLittle BOOL;
+
+ SELECT ticket_isTooLittle(vSelf) INTO vTicketIsTooLittle;
+
CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
(INDEX(ticketFk, isProblemCalcNeeded))
ENGINE = MEMORY
- SELECT vSelf ticketFk,
- ticket_isTooLittle(vSelf) hasProblem,
- ticket_isProblemCalcNeeded(vSelf) isProblemCalcNeeded;
-
+ WITH ticketData AS (
+ SELECT addressFk, DATE(shipped) dated
+ FROM vn.ticket
+ WHERE id = vSelf
+ )
+ SELECT t.id ticketFk,
+ vTicketIsTooLittle hasProblem,
+ ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
+ FROM vn.ticket t
+ JOIN ticketData td ON td.addressFk = t.addressFk
+ WHERE t.shipped BETWEEN td.dated AND util.dayEnd(td.dated);
+
CALL ticket_setProblem('isTooLittle');
DROP TEMPORARY TABLE tmp.ticket;
-
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -90739,7 +90823,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `mandato_tipo` AS select `m`.`id` AS `idmandato_tipo`,`m`.`name` AS `Nombre` from `vn`.`mandateType` `m` */;
+/*!50001 VIEW `mandato_tipo` AS select `m`.`id` AS `idmandato_tipo`,`m`.`code` AS `Nombre` from `vn`.`mandateType` `m` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -91419,4 +91503,4 @@ USE `vn2008`;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2024-08-20 7:45:07
+-- Dump completed on 2024-09-04 7:00:41
diff --git a/db/dump/.dump/triggers.sql b/db/dump/.dump/triggers.sql
index a968277b9..70ef63cf4 100644
--- a/db/dump/.dump/triggers.sql
+++ b/db/dump/.dump/triggers.sql
@@ -1502,6 +1502,134 @@ USE `srt`;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `srt`.`buffer_beforeInsert`
+ BEFORE INSERT ON `buffer`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = 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 = 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 ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `srt`.`buffer_beforeUpdate`
+ BEFORE UPDATE ON `buffer`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = 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 = 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 ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `srt`.`buffer_afterDelete`
+ AFTER DELETE ON `buffer`
+ FOR EACH ROW
+BEGIN
+ INSERT INTO buffer
+ SET `action` = 'delete',
+ `changedModel` = 'Buffer',
+ `changedModelId` = OLD.id,
+ `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 = 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 ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `srt`.`config_beforeInsert`
+ BEFORE INSERT ON `config`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = 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 = 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 ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `srt`.`config_beforeUpdate`
+ BEFORE UPDATE ON `config`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = 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 = 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 ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `srt`.`config_afterDelete`
+ AFTER DELETE ON `config`
+ FOR EACH ROW
+BEGIN
+ INSERT INTO config
+ SET `action` = 'delete',
+ `changedModel` = 'Config',
+ `changedModelId` = OLD.id,
+ `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 = 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 ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `srt`.`expedition_beforeUpdate`
BEFORE UPDATE ON `expedition`
FOR EACH ROW
@@ -5419,11 +5547,32 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`host_beforeInsert`
+ BEFORE INSERT ON `host`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = 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 = 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 ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`host_beforeUpdate`
BEFORE UPDATE ON `host`
FOR EACH ROW
BEGIN
SET new.updated = util.VN_NOW();
+ SET NEW.editorFk = account.myUser_getId();
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -7793,6 +7942,54 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`roadmap_beforeInsert`
+ BEFORE INSERT ON `roadmap`
+ FOR EACH ROW
+BEGIN
+ IF NEW.driver1Fk IS NOT NULL THEN
+ SET NEW.driverName = (SELECT firstName FROM worker WHERE id = NEW.driver1Fk);
+ ELSE
+ SET NEW.driverName = NULL;
+ END IF;
+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 = 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 ;;
+/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`roadmap_beforeUpdate`
+ BEFORE UPDATE ON `roadmap`
+ FOR EACH ROW
+BEGIN
+ IF NEW.driver1Fk IS NOT NULL THEN
+ SET NEW.driverName = (SELECT firstName FROM worker WHERE id = NEW.driver1Fk);
+ ELSE
+ SET NEW.driverName = NULL;
+ END IF;
+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 = 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 ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`expeditionTruck_beforeInsert`
BEFORE INSERT ON `roadmapStop` FOR EACH ROW
BEGIN
@@ -11212,4 +11409,4 @@ USE `vn2008`;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2024-08-20 7:45:23
+-- Dump completed on 2024-09-04 7:01:01
diff --git a/db/routines/vn/procedures/sale_getProblems.sql b/db/routines/vn/procedures/sale_getProblems.sql
index 6f65a3722..8df28dbc0 100644
--- a/db/routines/vn/procedures/sale_getProblems.sql
+++ b/db/routines/vn/procedures/sale_getProblems.sql
@@ -35,6 +35,7 @@ BEGIN
saleFk INT(11),
isFreezed INTEGER(1) DEFAULT 0,
risk DECIMAL(10,1) DEFAULT 0,
+ hasRisk TINYINT(1) DEFAULT 0,
hasHighRisk TINYINT(1) DEFAULT 0,
hasTicketRequest INTEGER(1) DEFAULT 0,
itemShortage VARCHAR(255),
@@ -52,6 +53,7 @@ BEGIN
saleFk,
isFreezed,
risk,
+ hasRisk,
hasHighRisk,
hasTicketRequest,
isTaxDataChecked,
@@ -62,6 +64,7 @@ BEGIN
s.id,
IF(FIND_IN_SET('isFreezed', t.problem), TRUE, FALSE) isFreezed,
t.risk,
+ IF(FIND_IN_SET('hasRisk', t.problem), TRUE, FALSE) hasRisk,
IF(FIND_IN_SET('hasHighRisk', t.problem), TRUE, FALSE) hasHighRisk,
IF(FIND_IN_SET('hasTicketRequest', t.problem), TRUE, FALSE) hasTicketRequest,
IF(FIND_IN_SET('isTaxDataChecked', t.problem), FALSE, TRUE) isTaxDataChecked,
@@ -70,11 +73,15 @@ BEGIN
LEFT(GROUP_CONCAT('RE: ', i.id, ' ', IFNULL(i.longName,'') SEPARATOR ', '), 250),
NULL
) hasRounding,
- IF(FIND_IN_SET('isTooLittle', t.problem), TRUE, FALSE) isTooLittle
+ IF(FIND_IN_SET('isTooLittle', t.problem)
+ AND util.VN_NOW() < (util.VN_CURDATE() + INTERVAL HOUR(zc.`hour`) HOUR) + INTERVAL MINUTE(zc.`hour`) MINUTE,
+ TRUE, FALSE) isTooLittle
FROM tmp.sale_getProblems sgp
JOIN ticket t ON t.id = sgp.ticketFk
LEFT JOIN sale s ON s.ticketFk = t.id
LEFT JOIN item i ON i.id = s.itemFk
+ LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk
+ AND zc.dated = util.VN_CURDATE()
WHERE s.problem <> '' OR t.problem <> '' OR t.risk
GROUP BY t.id, s.id;
diff --git a/db/routines/vn/procedures/sale_setProblemRoundingByBuy.sql b/db/routines/vn/procedures/sale_setProblemRoundingByBuy.sql
new file mode 100644
index 000000000..b0e286d25
--- /dev/null
+++ b/db/routines/vn/procedures/sale_setProblemRoundingByBuy.sql
@@ -0,0 +1,75 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_setProblemRoundingByBuy`(
+ vBuyFk INT
+)
+BEGIN
+/**
+ * Update rounding problem for all sales related to a buy.
+ *
+ * @param vBuyFk Buy id
+ */
+ DECLARE vItemFk INT;
+ DECLARE vWarehouseFk INT;
+ DECLARE vMaxDated DATE;
+ DECLARE vMinDated DATE;
+ DECLARE vLanding DATE;
+ DECLARE vLastBuy INT;
+ DECLARE vCurrentBuy INT;
+ DECLARE vGrouping INT;
+
+ SELECT b.itemFk, t.warehouseInFk
+ INTO vItemFk, vWarehouseFk
+ FROM buy b
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE b.id = vBuyFk;
+
+ IF vItemFk AND vWarehouseFk THEN
+ SELECT DATE(MAX(t.shipped)) + INTERVAL 1 DAY, DATE(MIN(t.shipped))
+ INTO vMaxDated, vMinDated
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ WHERE t.shipped >= util.VN_CURDATE()
+ AND s.itemFk = vItemFk
+ AND s.quantity > 0;
+
+ CALL buy_getUltimate(vItemFk, vWarehouseFk, vMinDated);
+
+ SELECT bu.buyFk, b.grouping INTO vLastBuy, vGrouping
+ FROM tmp.buyUltimate bu
+ JOIN buy b ON b.id = bu.buyFk;
+
+ DROP TEMPORARY TABLE tmp.buyUltimate;
+
+ SET vLanding = vMaxDated;
+
+ WHILE vCurrentBuy <> vLastBuy OR vLanding > vMinDated DO
+ SET vMaxDated = vLanding - INTERVAL 1 DAY;
+
+ CALL buy_getUltimate(vItemFk, vWarehouseFk, vMaxDated);
+
+ SELECT buyFk, landing
+ INTO vCurrentBuy, vLanding
+ FROM tmp.buyUltimate;
+
+ DROP TEMPORARY TABLE tmp.buyUltimate;
+ END WHILE;
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ (INDEX(saleFk, isProblemCalcNeeded))
+ ENGINE = MEMORY
+ SELECT s.id saleFk,
+ MOD(s.quantity, vGrouping) hasProblem,
+ ticket_isProblemCalcNeeded(t.id) isProblemCalcNeeded
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ WHERE s.itemFk = vItemFk
+ AND s.quantity > 0
+ AND t.shipped BETWEEN vMinDated AND util.dayEnd(vMaxDated);
+
+ CALL sale_setProblem('hasRounding');
+
+ DROP TEMPORARY TABLE tmp.sale;
+ END IF;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql
index e9becab2a..f83351456 100644
--- a/db/routines/vn/procedures/ticket_getProblems.sql
+++ b/db/routines/vn/procedures/ticket_getProblems.sql
@@ -18,6 +18,7 @@ BEGIN
SELECT ticketFk,
MAX(isFreezed) isFreezed,
MAX(risk) risk,
+ MAX(hasRisk) hasRisk,
MAX(hasHighRisk) hasHighRisk,
MAX(hasTicketRequest) hasTicketRequest,
MAX(itemShortage) itemShortage,
@@ -32,19 +33,19 @@ BEGIN
FROM tmp.sale_problems
GROUP BY ticketFk;
- UPDATE tmp.ticket_problems tp
- SET tp.totalProblems = (
- (tp.isFreezed) +
- IF(tp.risk,TRUE, FALSE) +
- (tp.hasTicketRequest) +
- (tp.isTaxDataChecked = 0) +
- (tp.hasComponentLack) +
- (tp.itemDelay) +
- (tp.isTooLittle) +
- (tp.itemLost) +
- (tp.hasRounding) +
- (tp.itemShortage) +
- (tp.isVip)
+ UPDATE tmp.ticket_problems
+ SET totalProblems = (
+ (isFreezed) +
+ (hasRisk) +
+ (hasTicketRequest) +
+ (!isTaxDataChecked) +
+ (hasComponentLack) +
+ (itemDelay IS NOT NULL) +
+ (isTooLittle) +
+ (itemLost IS NOT NULL) +
+ (hasRounding IS NOT NULL) +
+ (itemShortage IS NOT NULL) +
+ (isVip)
);
DROP TEMPORARY TABLE tmp.sale_problems;
diff --git a/loopback/common/models/vn-model.js b/loopback/common/models/vn-model.js
index a11bed11d..6fcb6f0e3 100644
--- a/loopback/common/models/vn-model.js
+++ b/loopback/common/models/vn-model.js
@@ -27,25 +27,25 @@ module.exports = function(Self) {
};
});
- this.beforeRemote('**', async ctx => {
- if (!this.hasFilter(ctx)) return;
+ // this.beforeRemote('**', async ctx => {
+ // if (!this.hasFilter(ctx)) return;
- const defaultLimit = this.app.orm.selectLimit;
- const filter = ctx.args.filter || {limit: defaultLimit};
+ // const defaultLimit = this.app.orm.selectLimit;
+ // const filter = ctx.args.filter || {limit: defaultLimit};
- if (filter.limit > defaultLimit) {
- filter.limit = defaultLimit;
- ctx.args.filter = filter;
- }
- });
+ // if (filter.limit > defaultLimit) {
+ // filter.limit = defaultLimit;
+ // ctx.args.filter = filter;
+ // }
+ // });
- this.afterRemote('**', async ctx => {
- if (!this.hasFilter(ctx)) return;
+ // this.afterRemote('**', async ctx => {
+ // if (!this.hasFilter(ctx)) return;
- const {result} = ctx;
- const length = Array.isArray(result) ? result.length : result ? 1 : 0;
- if (length >= this.app.orm.selectLimit) throw new UserError('Too many records');
- });
+ // const {result} = ctx;
+ // const length = Array.isArray(result) ? result.length : result ? 1 : 0;
+ // if (length >= this.app.orm.selectLimit) throw new UserError('Too many records');
+ // });
// Register field ACL validation
/*
diff --git a/loopback/server/boot/orm.js b/loopback/server/boot/orm.js
index 8bbd969e1..ccd9d4eca 100644
--- a/loopback/server/boot/orm.js
+++ b/loopback/server/boot/orm.js
@@ -1,6 +1,6 @@
-module.exports = async function(app) {
- if (!app.orm) {
- const ormConfig = await app.models.OrmConfig.findOne();
- app.orm = ormConfig;
- }
-};
+// module.exports = async function(app) {
+// if (!app.orm) {
+// const ormConfig = await app.models.OrmConfig.findOne();
+// app.orm = ormConfig;
+// }
+// };
diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js
index 33b37d8a4..8ef51a0d1 100644
--- a/modules/monitor/back/methods/sales-monitor/salesFilter.js
+++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js
@@ -238,51 +238,8 @@ module.exports = Self => {
stmts.push(`SET SESSION optimizer_search_depth = @_optimizer_search_depth`);
- // Get client debt balance
- stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt');
- stmts.push(`
- CREATE TEMPORARY TABLE tmp.clientGetDebt
- (PRIMARY KEY (clientFk))
- ENGINE = MEMORY
- SELECT DISTINCT clientFk FROM tmp.filter`);
-
- stmt = new ParameterizedSQL('CALL client_getDebt(?)', [args.to]);
- stmts.push(stmt);
- stmts.push('DROP TEMPORARY TABLE tmp.clientGetDebt');
-
- stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.tickets');
stmt = new ParameterizedSQL(`
- CREATE TEMPORARY TABLE tmp.tickets
- (PRIMARY KEY (id))
- ENGINE = MEMORY
- SELECT f.*, r.risk AS debt
- FROM tmp.filter f
- LEFT JOIN tmp.risk r ON f.clientFk = r.clientFk`);
- stmts.push(stmt);
-
- // Sum risk to future
- stmts.push(`SET @client:= 0`);
- stmts.push('SET @risk := 0');
- stmts.push(`
- UPDATE tmp.tickets
- SET debt = IF(@client <> @client:= clientFk,
- -totalWithVat + @risk:= - debt + totalWithVat,
- -totalWithVat + @risk:= @risk + totalWithVat
- )
- ORDER BY clientFk, shipped DESC
- `);
-
- // Remove positive risks
- stmts.push(`
- UPDATE tmp.tickets t
- SET debt = 0
- WHERE t.debt + t.credit >= 0
- `);
-
- stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.sale_getProblems');
-
- stmt = new ParameterizedSQL(`
- CREATE TEMPORARY TABLE tmp.sale_getProblems
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems
(INDEX (ticketFk))
ENGINE = MEMORY
SELECT f.id ticketFk, f.clientFk, f.warehouseFk, f.shipped
@@ -294,36 +251,30 @@ module.exports = Self => {
stmts.push('CALL ticket_getProblems(FALSE)');
- stmts.push(`
- INSERT INTO tmp.ticket_problems (ticketFk, risk, totalProblems)
- SELECT t.id, t.debt + t.credit AS risk, 1
- FROM tmp.tickets t
- WHERE (t.debt + t.credit) < 0
- ON DUPLICATE KEY UPDATE
- risk = t.debt + t.credit, totalProblems = totalProblems + 1
- `);
-
- stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.sale_getWarnings');
-
stmt = new ParameterizedSQL(`
- CREATE TEMPORARY TABLE tmp.sale_getWarnings
- (INDEX (ticketFk, agencyModeFk))
- ENGINE = MEMORY
- SELECT f.id ticketFk, f.agencyModeFk
- FROM tmp.filter f`);
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getWarnings
+ (INDEX (ticketFk, agencyModeFk))
+ ENGINE = MEMORY
+ SELECT f.id ticketFk, f.agencyModeFk
+ FROM tmp.filter f
+ `);
stmts.push(stmt);
stmts.push('CALL ticket_getWarnings()');
stmt = new ParameterizedSQL(`
- SELECT t.*,
- tp.*,
- ((tp.risk) + cc.riskTolerance < 0) AS hasHighRisk,
- tw.*
- FROM tmp.tickets t
- LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = t.id
- LEFT JOIN tmp.ticket_warnings tw ON tw.ticketFk = t.id
- JOIN clientConfig cc`);
+ UPDATE tmp.ticket_problems
+ SET risk = IF(hasRisk, risk, 0)
+ `);
+ stmts.push(stmt);
+
+ stmt = new ParameterizedSQL(`
+ SELECT *
+ FROM tmp.filter f
+ LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = f.id
+ LEFT JOIN tmp.ticket_warnings tw ON tw.ticketFk = f.id
+ `);
+ stmts.push(stmt);
const hasProblems = args.problems;
if (hasProblems != undefined && (!args.from && !args.to))
@@ -359,23 +310,23 @@ module.exports = Self => {
switch (param) {
case 'search':
return /^\d+$/.test(value)
- ? {'t.id': {inq: value}}
- : {'t.nickname': {like: `%${value}%`}};
+ ? {'f.id': {inq: value}}
+ : {'f.nickname': {like: `%${value}%`}};
case 'nickname':
- return {'t.nickname': {like: `%${value}%`}};
+ return {'f.nickname': {like: `%${value}%`}};
case 'refFk':
- return {'t.refFk': value};
+ return {'f.refFk': value};
case 'provinceFk':
- return {'t.provinceFk': value};
+ return {'f.provinceFk': value};
case 'stateFk':
- return {'t.stateFk': value};
+ return {'f.stateFk': value};
case 'alertLevel':
- return {'t.alertLevel': value};
+ return {'f.alertLevel': value};
case 'pending':
if (value) {
- return {'t.alertLevelCode': {inq: [
+ return {'f.alertLevelCode': {inq: [
'FIXING',
'FREE',
'NOT_READY',
@@ -385,7 +336,7 @@ module.exports = Self => {
'WAITING_FOR_PAYMENT'
]}};
} else {
- return {'t.alertLevelCode': {inq: [
+ return {'f.alertLevelCode': {inq: [
'ON_PREPARATION',
'ON_CHECKING',
'CHECKED',
@@ -409,7 +360,7 @@ module.exports = Self => {
}
case 'agencyModeFk':
case 'warehouseFk':
- param = `t.${param}`;
+ param = `f.${param}`;
return {[param]: value};
}
});
@@ -422,14 +373,14 @@ module.exports = Self => {
stmt.merge(conn.makeLimit(filter));
const ticketsIndex = stmts.push(stmt) - 1;
- stmts.push(
- `DROP TEMPORARY TABLE
+ stmts.push(`
+ DROP TEMPORARY TABLE
tmp.filter,
tmp.ticket_problems,
tmp.sale_getProblems,
tmp.sale_getWarnings,
- tmp.ticket_warnings,
- tmp.risk`);
+ tmp.ticket_warnings
+ `);
const sql = ParameterizedSQL.join(stmts, ';');
const result = await conn.executeStmt(sql, myOptions);
diff --git a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js
index c3da7f08b..9460addfa 100644
--- a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js
+++ b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js
@@ -39,7 +39,7 @@ describe('SalesMonitor salesFilter()', () => {
const filter = {};
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
- expect(result.length).toBeGreaterThan(11);
+ expect(result.length).toBeGreaterThan(10);
await tx.rollback();
} catch (e) {
@@ -68,7 +68,7 @@ describe('SalesMonitor salesFilter()', () => {
const filter = {};
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
- expect(result.length).toEqual(0);
+ expect(result.length).toEqual(4);
await tx.rollback();
} catch (e) {
@@ -218,8 +218,8 @@ describe('SalesMonitor salesFilter()', () => {
const firstTicket = result.shift();
const secondTicket = result.shift();
- expect(firstTicket.totalProblems).toEqual(1);
- expect(secondTicket.totalProblems).toEqual(1);
+ expect(firstTicket.totalProblems).toEqual(3);
+ expect(secondTicket.totalProblems).toEqual(3);
await tx.rollback();
} catch (e) {
diff --git a/modules/ticket/back/methods/ticket/filter.js b/modules/ticket/back/methods/ticket/filter.js
index 3e8b732af..2209c8df4 100644
--- a/modules/ticket/back/methods/ticket/filter.js
+++ b/modules/ticket/back/methods/ticket/filter.js
@@ -306,6 +306,12 @@ module.exports = Self => {
stmts.push(stmt);
stmts.push('CALL ticket_getProblems(FALSE)');
+ stmt = new ParameterizedSQL(`
+ UPDATE tmp.ticket_problems
+ SET risk = IF(hasRisk, risk, 0)
+ `);
+ stmts.push(stmt);
+
stmt = new ParameterizedSQL(`
SELECT f.*, tp.*
FROM tmp.filter f
diff --git a/modules/ticket/back/methods/ticket/getTicketsFuture.js b/modules/ticket/back/methods/ticket/getTicketsFuture.js
index 0fd21ea74..9f455ec03 100644
--- a/modules/ticket/back/methods/ticket/getTicketsFuture.js
+++ b/modules/ticket/back/methods/ticket/getTicketsFuture.js
@@ -158,10 +158,16 @@ module.exports = Self => {
stmts.push(stmt);
stmts.push('CALL ticket_getProblems(FALSE)');
+ stmt = new ParameterizedSQL(`
+ UPDATE tmp.ticket_problems
+ SET risk = IF(hasRisk, risk, 0)
+ `);
+ stmts.push(stmt);
+
stmt = new ParameterizedSQL(`
SELECT f.*, tp.*
- FROM tmp.filter f
- LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = f.id
+ FROM tmp.filter f
+ LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = f.id
`);
if (args.problems != undefined && (!args.originDated && !args.futureDated))
diff --git a/modules/ticket/back/models/ticket.json b/modules/ticket/back/models/ticket.json
index d8a3206c6..3f073806e 100644
--- a/modules/ticket/back/models/ticket.json
+++ b/modules/ticket/back/models/ticket.json
@@ -69,6 +69,9 @@
},
"cmrFk": {
"type": "number"
+ },
+ "problem": {
+ "type": "string"
}
},
"relations": {
diff --git a/modules/ticket/front/descriptor/index.html b/modules/ticket/front/descriptor/index.html
index 75bcd2801..32a30833b 100644
--- a/modules/ticket/front/descriptor/index.html
+++ b/modules/ticket/front/descriptor/index.html
@@ -58,7 +58,7 @@
+ ng-if="$ctrl.ticket.problem.includes('hasRisk')">