#6321 - Negative tickets #1945

Open
jsegarra wants to merge 93 commits from 6321_negative_tickets into dev
102 changed files with 2525 additions and 2700 deletions
Showing only changes of commit e30c66313f - Show all commits

View File

@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- (Worker -> time-control) Corrección de errores
- (InvoiceOut -> Crear factura) Cuando falla al crear una factura, se devuelve un error
- (Worker -> Ver albarán) Ya no aparece la página en blanco
## [24.18.01] - 2024-05-07

View File

@ -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','10977','7a021c9ac6f804cc120542b65d7461283d516569','2024-04-18 09:13:43','11000');
INSERT INTO `version` VALUES ('vn-database','11018','878ee9e3039dd06ad456fa475f0d646d8bae3d4b','2024-05-07 07:34:42','11032');
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);
@ -688,6 +688,9 @@ INSERT INTO `versionLog` VALUES ('vn-database','10890','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','10891','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-03-07 08:12:58',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10892','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-04 07:34:53',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10893','00-sage.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-04 07:34:53',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10895','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:53',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10895','01-secondScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:56',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10895','02-thirdScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10896','01-financialProductType.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-03-07 08:12:58',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10896','02-flight.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-03-07 08:12:58',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10896','03-gastos_resumen.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-03-07 08:13:00',NULL,NULL);
@ -737,11 +740,13 @@ INSERT INTO `versionLog` VALUES ('vn-database','10940','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','10941','00-restoreVn2008Jerarquia.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-03-07 09:36:57',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10942','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-03-07 10:24:45',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10943','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-03-07 10:29:57',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10944','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10946','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-03-08 07:56:17',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10948','00-addReconciliationConfig.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-18 07:40:52',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10948','02-grantPrivileges.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-18 07:40:52',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10948','03-modifyColumn.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-18 07:40:52',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10949','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-18 07:40:52',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10950','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10953','00-account.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-04 07:34:54',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10953','01-bs.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-04 07:34:54',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10953','02-edi.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-04 07:34:54',NULL,NULL);
@ -768,7 +773,19 @@ INSERT INTO `versionLog` VALUES ('vn-database','10975','00-action.sql','jenkins@
INSERT INTO `versionLog` VALUES ('vn-database','10975','01-expeditionFk.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-03 12:04:52',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10976','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-18 07:40:57',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10977','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-18 07:40:57',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10984','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10988','00-pbx_prefix.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-04-11 17:00:16',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10990','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10994','00-modifyAcls.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10996','00-dropOrderRecalc.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10996','01-dropTicketRecalc.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10996','02-dropTravelRecalc.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10997','00-groupingMode.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:34:21',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11003','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:34:21',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11007','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:34:21',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11016','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-27 13:16:09',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11018','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:34:21',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11021','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-30 09:07:56',NULL,NULL);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
@ -1311,7 +1328,6 @@ INSERT INTO `ACL` VALUES (211,'TravelLog','*','READ','ALLOW','ROLE','buyer');
INSERT INTO `ACL` VALUES (212,'Thermograph','*','*','ALLOW','ROLE','buyer');
INSERT INTO `ACL` VALUES (213,'TravelThermograph','*','WRITE','ALLOW','ROLE','buyer');
INSERT INTO `ACL` VALUES (214,'Entry','*','*','ALLOW','ROLE','buyer');
INSERT INTO `ACL` VALUES (215,'TicketWeekly','*','WRITE','ALLOW','ROLE','buyer');
INSERT INTO `ACL` VALUES (216,'TravelThermograph','*','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (218,'Intrastat','*','*','ALLOW','ROLE','buyer');
INSERT INTO `ACL` VALUES (221,'UserConfig','getUserConfig','READ','ALLOW','ROLE','account');
@ -1667,9 +1683,9 @@ INSERT INTO `ACL` VALUES (610,'Ticket','deliveryNoteCsv','READ','ALLOW','ROLE','
INSERT INTO `ACL` VALUES (611,'State','find','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (612,'State','findById','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (613,'State','findOne','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (614,'Worker','find','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (615,'Worker','findById','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (616,'Worker','findOne','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (614,'Worker','find','READ','ALLOW','ROLE','hr');
INSERT INTO `ACL` VALUES (615,'Worker','findById','READ','ALLOW','ROLE','hr');
INSERT INTO `ACL` VALUES (616,'Worker','findOne','READ','ALLOW','ROLE','hr');
INSERT INTO `ACL` VALUES (617,'Worker','filter','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (618,'Worker','getWorkedHours','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (619,'Worker','active','READ','ALLOW','ROLE','employee');
@ -1842,6 +1858,10 @@ INSERT INTO `ACL` VALUES (822,'SupplierDms','*','*','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (823,'MailAlias','*','*','ALLOW','ROLE','developerBoss');
INSERT INTO `ACL` VALUES (824,'ItemShelving','hasItemOlder','READ','ALLOW','ROLE','production');
INSERT INTO `ACL` VALUES (825,'Application','getEnumValues','*','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (826,'Ticket','editZone','WRITE','ALLOW','ROLE','salesAssistant');
INSERT INTO `ACL` VALUES (827,'TicketWeekly','deleteById','WRITE','ALLOW','ROLE','buyerBoss');
INSERT INTO `ACL` VALUES (828,'TicketWeekly','upsert','WRITE','ALLOW','ROLE','buyer');
INSERT INTO `ACL` VALUES (829,'Worker','__get__summary','READ','ALLOW','ROLE','employee');
INSERT INTO `fieldAcl` VALUES (1,'Client','name','update','employee');
INSERT INTO `fieldAcl` VALUES (2,'Client','contact','update','employee');
@ -2160,7 +2180,7 @@ INSERT INTO `continent` VALUES (3,'África','AF');
INSERT INTO `continent` VALUES (4,'Europa','EU');
INSERT INTO `continent` VALUES (5,'Oceanía','OC');
INSERT INTO `department` VALUES (1,'VN','VERDNATURA',1,110,763,0,0,0,0,26,NULL,'/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (1,'VN','VERDNATURA',1,118,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,3,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (23,'CMA','CAMARA',13,14,NULL,72,1,1,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (31,'it','INFORMATICA',4,5,NULL,72,0,0,1,0,1,'/1/','informatica-cau',1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
@ -2171,50 +2191,54 @@ INSERT INTO `department` VALUES (37,'PROD','PRODUCCION',12,35,NULL,72,1,1,1,11,1
INSERT INTO `department` VALUES (38,'picking','SACADO',15,16,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',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 (41,'administration','ADMINISTRACION',36,37,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',38,69,NULL,0,0,0,1,15,1,'/1/',NULL,1,'',1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (44,'management','GERENCIA',70,71,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',72,73,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (46,'delivery','REPARTO',74,75,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',76,77,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',78,79,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',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 (43,'VT','VENTAS',38,77,NULL,0,0,0,1,19,1,'/1/',NULL,1,'',1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (44,'management','GERENCIA',78,79,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',80,81,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (46,'delivery','REPARTO',82,83,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',84,85,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',86,87,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',88,89,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',39,40,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',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 (54,NULL,'ORNAMENTALES',90,91,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',19,20,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',21,22,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',84,87,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',88,89,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (58,'CMP','CAMPOS',92,95,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',96,97,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',41,42,NULL,72,0,0,2,0,43,'/1/43/',NULL,1,NULL,1,1,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (61,NULL,'VNH',90,93,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',94,95,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (61,NULL,'VNH',98,101,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',102,103,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',23,24,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',96,97,NULL,74,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (69,NULL,'VERDNABARNA',104,105,NULL,74,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (80,'vallesTeam','EQUIPO J VALLES',43,44,4250,72,0,0,2,0,43,'/1/43/','jvp_equipo',1,'equipojvalles@verdnatura.es',0,0,0,0,NULL,NULL,'5300',NULL);
INSERT INTO `department` VALUES (86,NULL,'LIMPIEZA',98,99,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',100,101,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',91,92,NULL,0,0,0,2,0,61,'/1/61/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (86,NULL,'LIMPIEZA',106,107,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',108,109,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',99,100,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',25,26,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (92,NULL,'EQUIPO SILVERIO',45,46,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,'brocalTeam','EQUIPO J BROCAL',47,48,3797,0,0,0,2,0,43,'/1/43/','jes_equipo',0,'equipojbrocal@verdnatura.es',0,0,0,0,NULL,NULL,'5100',NULL);
INSERT INTO `department` VALUES (95,'zambranoTeam','EQUIPO C ZAMBRANO',49,50,4667,0,0,0,2,0,43,'/1/43/','czg_equipo',0,'equipoczambrano@verdnatura.es',0,0,0,0,NULL,NULL,'5000',NULL);
INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPAÑA 1',49,50,24065,0,0,0,2,0,43,'/1/43/','es1_equipo',0,'españa1@verdnatura.es',0,0,0,0,NULL,NULL,'5000',NULL);
INSERT INTO `department` VALUES (96,NULL,'EQUIPO C LOPEZ',51,52,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',53,54,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',55,56,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',102,103,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (124,NULL,'CONTROL INTERNO',110,111,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (125,'miriamMarTeam','EQUIPO MIRIAM MAR',57,58,1118,0,0,0,2,0,43,'/1/43/','mir_equipo',0,'equipomirgir@verdnatura.es',0,0,0,0,NULL,NULL,'5200',NULL);
INSERT INTO `department` VALUES (126,NULL,'PRESERVADO',27,28,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',29,30,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',31,32,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',85,86,NULL,0,0,0,2,0,58,'/1/58/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',93,94,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',59,60,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',61,62,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',63,64,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',104,105,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',106,107,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',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 (135,'routers','ENRUTADORES',112,113,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',114,115,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',116,117,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (139,'soriaTeam','EQUIPO J SORIA ',65,66,3803,0,0,0,2,0,43,'/1/43/','jss_equipo',1,'equipojsoria@verdnatura.es',0,0,0,0,NULL,NULL,'5400',NULL);
INSERT INTO `department` VALUES (140,'hollandTeam','EQUIPO HOLANDA',67,68,NULL,0,0,0,2,0,43,'/1/43/','nl_equipo',1,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (140,'hollandTeam','EQUIPO HOLANDA',67,68,NULL,0,0,0,2,0,43,'/1/43/','nl_equipo',1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (141,NULL,'PREVIA',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 (142,NULL,'EQUIPO ESPAÑA 2',69,70,3797,0,0,0,2,0,43,'/1/43/','jes_equipo',0,'equipojbrocal@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (143,NULL,'EQUIPO ESPAÑA 3',71,72,4379,0,0,0,2,0,43,'/1/43/','mir_equipo',0,'equipomirgir@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (144,NULL,'EQUIPO ESPAÑA 4',73,74,3803,0,0,0,2,0,43,'/1/43/','jss_equipo',0,'equipojsoria@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (145,NULL,'EQUIPO ESPAÑA 5',75,76,4250,0,0,0,2,0,43,'/1/43/','jvp_equipo',0,'equipojvalles@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `docuware` VALUES (1,'deliveryNote','Albaranes cliente','find','find','N__ALBAR_N',NULL);
INSERT INTO `docuware` VALUES (2,'deliveryNote','Albaranes cliente','store','Archivar','N__ALBAR_N',NULL);

View File

@ -92,7 +92,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','guest','tagL10n','root@pc-jua
INSERT IGNORE INTO `tables_priv` VALUES ('','hedera','guest','config','root@pc-juan.dyn.verdnatura.es','2022-08-03 23:44:43','','Select');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','guest','originL10n','root@pc-juan.dyn.verdnatura.es','2022-08-03 23:44:43','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','guest','origin','root@pc-juan.dyn.verdnatura.es','2022-08-03 23:44:43','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','entryEditor','entry','guillermo@10.5.1.4','0000-00-00 00:00:00','Insert,Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','entryEditor','entry','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert','Update');
INSERT IGNORE INTO `tables_priv` VALUES ('','hedera','guest','social','root@pc-juan.dyn.verdnatura.es','2022-08-03 23:44:43','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','hedera','guest','image','root@pc-juan.dyn.verdnatura.es','2022-08-03 23:44:43','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','guest','tblContadores','root@pc-juan.dyn.verdnatura.es','2022-08-03 23:44:43','','Select');
@ -1248,7 +1248,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryAssistant','Recib
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryAssistant','Rutas','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryAssistant','Movimientos','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryAssistant','state','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','route','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Insert,Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','route','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','routeComplement','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','deliveryMethod','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryAssistant','Tickets','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Update','');
@ -1388,6 +1388,13 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','supplierFreight','jen
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','payrollWorker','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','payrollWorkCenter','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','payrollComponent','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','professionalCategory','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','production','ticketObservation','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','deliveryNoteState','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','deliveryNote','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','invoiceOutExpense','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','delivery','carlosap@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','entry','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update','');
/*!40000 ALTER TABLE `tables_priv` ENABLE KEYS */;
/*!40000 ALTER TABLE `columns_priv` DISABLE KEYS */;
@ -1623,6 +1630,36 @@ INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','ticket','cmrFk','
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','ticket','editorFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','config','truckLength','0000-00-00 00:00:00','Select');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','production','item','isBoxPickingMode','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','id','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','supplierFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','dated','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','invoiceNumber','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','isExcludedFromAvailable','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','isConfirmed','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','isOrdered','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','isRaid','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','commission','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','created','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','evaNotes','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','travelFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','currencyFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','companyFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','gestDocFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','invoiceInFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','loadPriority','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','kop','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','sub','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','pro','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','auction','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','invoiceAmount','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','buyerFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','typeFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','reference','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','observationEditorFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','clonedFrom','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','editorFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','lockerUserFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','entryEditor','entry','locked','0000-00-00 00:00:00','Update');
/*!40000 ALTER TABLE `columns_priv` ENABLE KEYS */;
/*!40000 ALTER TABLE `procs_priv` DISABLE KEYS */;
@ -1741,9 +1778,8 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','hasanynegativ
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','marketingBoss','hasanynegativebase','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','hassomenegativebase','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','administrative','accountshorttostandard','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn2008','logistic','raidupdate','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','grafana','lastdayofweek','FUNCTION','juan@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn2008','artificialBoss','raidupdate','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financial','creditInsurance_GetRisk','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','marketingBoss','invoicefromclient','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','invoicefromclient','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','invoicefromticket','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
@ -1843,7 +1879,6 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','packinglistswitch',
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','previoussticker_get','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','productioncontrol','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','productionsectorlist','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financialBoss','riskallclients','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','routemonitor_calculate','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','account','developer','user_haspriv','FUNCTION','jgallego@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','salegroup_add','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
@ -2022,6 +2057,8 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','entry_getTransfer','PR
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','intrastat_estimateNet','FUNCTION','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','artificialBoss','confection_controlSource','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financial','remittance_calc','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','developer','connection_kill','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financial','client_getRisk','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
/*!40000 ALTER TABLE `procs_priv` ENABLE KEYS */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
@ -2056,7 +2093,7 @@ INSERT IGNORE INTO `global_priv` VALUES ('','deliveryBoss','{\"access\":0,\"ver
INSERT IGNORE INTO `global_priv` VALUES ('','developer','{\"access\": 5909905728, \"is_role\": true, \"version_id\": 101106}');
INSERT IGNORE INTO `global_priv` VALUES ('','developerBoss','{\"access\":33554432,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','employee','{\"access\": 0, \"is_role\": true, \"version_id\": 101106}');
INSERT IGNORE INTO `global_priv` VALUES ('','entryEditor','{\"access\":0,\"version_id\":100707,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','entryEditor','{\"access\":0,\"version_id\":101106,\"is_role\":true}');
INSERT IGNORE INTO `global_priv` VALUES ('','ext','{\"access\": 0, \"is_role\": true, \"version_id\": 100707}');
INSERT IGNORE INTO `global_priv` VALUES ('','financial','{\"access\": 0, \"version_id\": 101106, \"is_role\": true}');
INSERT IGNORE INTO `global_priv` VALUES ('','financialBoss','{\"access\": 0, \"version_id\": 101106, \"is_role\": true}');

File diff suppressed because it is too large Load Diff

View File

@ -995,27 +995,19 @@ 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 `hedera`.`order_afterUpdate`
AFTER UPDATE ON `order`
FOR EACH ROW
BEGIN
CALL stock.log_add('order', NEW.id, OLD.id);
IF !(OLD.address_id <=> NEW.address_id)
OR !(OLD.company_id <=> NEW.company_id)
OR !(OLD.customer_id <=> NEW.customer_id) THEN
CALL order_requestRecalc(NEW.id);
END IF;
IF !(OLD.address_id <=> NEW.address_id) AND NEW.address_id = 2850 THEN
-- Fallo que se actualiza no se sabe como tickets en este cliente
CALL vn.mail_insert(
'jgallego@verdnatura.es',
'noreply@verdnatura.es',
'Actualizada order al address 2850',
CONCAT(account.myUser_getName(), ' ha creado la order ',NEW.id)
);
END IF;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`order_afterUpdate`
AFTER UPDATE ON `order`
FOR EACH ROW
BEGIN
IF !(OLD.address_id <=> NEW.address_id) AND NEW.address_id = 2850 THEN
-- Fallo que se actualiza no se sabe como tickets en este cliente
CALL vn.mail_insert(
'jgallego@verdnatura.es',
'noreply@verdnatura.es',
'Actualizada order al address 2850',
CONCAT(account.myUser_getName(), ' ha creado la order ',NEW.id)
);
END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@ -1071,70 +1063,6 @@ DELIMITER ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 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 `hedera`.`orderRow_afterInsert`
AFTER INSERT ON `orderRow`
FOR EACH ROW
BEGIN
CALL stock.log_add('orderRow', NEW.id, NULL);
CALL order_requestRecalc(NEW.orderFk);
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 `hedera`.`orderRow_afterUpdate`
AFTER UPDATE ON `orderRow`
FOR EACH ROW
BEGIN
CALL stock.log_add('orderRow', NEW.id, OLD.id);
CALL order_requestRecalc(OLD.orderFk);
CALL order_requestRecalc(NEW.orderFk);
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 `hedera`.`orderRow_afterDelete`
AFTER DELETE ON `orderRow`
FOR EACH ROW
BEGIN
CALL stock.log_add('orderRow', NULL, OLD.id);
CALL order_requestRecalc(OLD.orderFk);
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 */ ;
--
-- Current Database: `pbx`
@ -1398,12 +1326,6 @@ DELIMITER ;
USE `psico`;
--
-- Current Database: `rfid`
--
USE `rfid`;
--
-- Current Database: `sage`
--
@ -1519,12 +1441,12 @@ DELIMITER ;;
FOR EACH ROW
BEGIN
SET NEW.isPicked = NEW.isPicked OR NEW.dated < util.VN_CURDATE();
CALL visible_log(
CALL visible_log(
NEW.isPicked,
NEW.warehouseFk,
NEW.itemFk,
NEW.quantity
NEW.warehouseFk,
NEW.itemFk,
NEW.quantity
);
END */;;
DELIMITER ;
@ -1554,11 +1476,11 @@ BEGIN
DELETE FROM inboundPick
WHERE inboundFk = OLD.id;
CALL visible_log(
CALL visible_log(
OLD.isPicked,
OLD.warehouseFk,
OLD.itemFk,
-OLD.quantity
OLD.warehouseFk,
OLD.itemFk,
-OLD.quantity
);
END */;;
DELIMITER ;
@ -1581,12 +1503,12 @@ DELIMITER ;;
BEGIN
SET NEW.lack = NEW.quantity;
SET NEW.isPicked = NEW.isPicked OR NEW.dated < util.VN_CURDATE();
CALL visible_log(
CALL visible_log(
NEW.isPicked,
NEW.warehouseFk,
NEW.itemFk,
-NEW.quantity
NEW.warehouseFk,
NEW.itemFk,
-NEW.quantity
);
END */;;
DELIMITER ;
@ -1616,11 +1538,11 @@ BEGIN
DELETE FROM inboundPick
WHERE outboundFk = OLD.id;
CALL visible_log(
CALL visible_log(
OLD.isPicked,
OLD.warehouseFk,
OLD.itemFk,
OLD.quantity
OLD.warehouseFk,
OLD.itemFk,
OLD.quantity
);
END */;;
DELIMITER ;
@ -1745,15 +1667,15 @@ DELIMITER ;;
BEFORE INSERT ON `accountReconciliation`
FOR EACH ROW
SET NEW.calculatedCode = REPLACE(
REPLACE(
REPLACE(
REPLACE(
CONCAT(NEW.supplierAccountFk,NEW.operationDated,NEW.amount,NEW.concept,NEW.debitCredit)
,' ','')
,":",'')
,'-','')
,'.','') */;;
SET NEW.calculatedCode = REGEXP_REPLACE(
CONCAT(NEW.supplierAccountFk,
NEW.operationDated,
NEW.amount,
NEW.concept,
CAST(NEW.debitCredit AS UNSIGNED)
),
'[ :\\-.]', ''
) */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
@ -1867,37 +1789,33 @@ DELIMITER ;;
BEGIN
-- Recargos de equivalencia distintos implican facturacion por consignatario
IF NEW.isEqualizated != OLD.isEqualizated THEN
IF
IF
(SELECT COUNT(*) FROM
(
SELECT DISTINCT (isEqualizated = FALSE) as Equ
FROM address
FROM address
WHERE clientFk = NEW.clientFk
) t1
) > 1
THEN
UPDATE client
THEN
UPDATE client
SET hasToInvoiceByAddress = TRUE
WHERE id = NEW.clientFk;
END IF;
END IF;
IF NEW.isDefaultAddress AND NEW.isActive = FALSE THEN
CALL util.throw ('Cannot desactivate the default address');
END IF;
IF NOT (NEW.isEqualizated <=> OLD.isEqualizated) THEN
INSERT IGNORE INTO ticketRecalc (ticketFk)
SELECT id FROM ticket t
WHERE t.addressFk = NEW.id
AND t.refFk IS NULL;
END IF;
IF (NEW.clientFk <> OLD.clientFk OR NEW.isActive <> OLD.isActive OR NOT (NEW.provinceFk <=> OLD.provinceFk))
AND (SELECT client_hasDifferentCountries(NEW.clientFk)) THEN
UPDATE client
IF (NEW.clientFk <> OLD.clientFk
OR NEW.isActive <> OLD.isActive
OR NOT (NEW.provinceFk <=> OLD.provinceFk))
AND (SELECT client_hasDifferentCountries(NEW.clientFk)) THEN
UPDATE client
SET hasToInvoiceByAddress = TRUE
WHERE id = NEW.clientFk;
END IF;
END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@ -2292,7 +2210,7 @@ trig: BEGIN
DECLARE vWarehouse INT;
DECLARE vLanding DATE;
DECLARE vGrouping INT;
DECLARE vGroupingMode TINYINT;
DECLARE vGroupingMode VARCHAR(255);
DECLARE vGenericFk INT;
DECLARE vGenericInDate BOOL;
DECLARE vBuyerFk INT;
@ -2398,8 +2316,6 @@ trig: BEGIN
LEAVE trig;
END IF;
CALL stock.log_add('buy', NEW.id, NULL);
CALL buy_afterUpsert(NEW.id);
END */;;
DELIMITER ;
@ -2508,11 +2424,11 @@ 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 = 'NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`buy_afterUpdate`
AFTER UPDATE ON `buy`
@ -2527,14 +2443,6 @@ trig: BEGIN
LEAVE trig;
END IF;
IF !(NEW.id <=> OLD.id)
OR !(NEW.entryFk <=> OLD.entryFk)
OR !(NEW.itemFk <=> OLD.itemFk)
OR !(NEW.quantity <=> OLD.quantity)
OR !(NEW.created <=> OLD.created) THEN
CALL stock.log_add('buy', NEW.id, OLD.id);
END IF;
CALL buy_afterUpsert(NEW.id);
SELECT w.isBuyerToBeEmailed, t.landed
@ -2610,20 +2518,15 @@ DELIMITER ;;
AFTER DELETE ON `buy`
FOR EACH ROW
trig: BEGIN
DECLARE vValues VARCHAR(255);
IF @isModeInventory OR @isTriggerDisabled THEN
LEAVE trig;
END IF;
CALL stock.log_add('buy', NULL, OLD.id);
INSERT INTO entryLog
SET `action` = 'delete',
`changedModel` = 'Buy',
`changedModelId` = OLD.id,
`userFk` = account.myUser_getId();
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@ -3302,20 +3205,13 @@ DELIMITER ;;
FOR EACH ROW
BEGIN
IF !(NEW.defaultAddressFk <=> OLD.defaultAddressFk) THEN
UPDATE `address` SET isDefaultAddress = 0
UPDATE `address` SET isDefaultAddress = FALSE
WHERE clientFk = NEW.id;
UPDATE `address` SET isDefaultAddress = 1
WHERE id = NEW.defaultAddressFk;
UPDATE `address` SET isDefaultAddress = TRUE
WHERE id = NEW.defaultAddressFk;
END IF;
IF NOT (NEW.provinceFk <=> OLD.provinceFk) OR NOT (NEW.isVies <=> OLD.isVies) THEN
INSERT IGNORE INTO ticketRecalc (ticketFk)
SELECT id FROM ticket t
WHERE t.clientFk = NEW.id
AND t.refFk IS NULL;
END IF;
IF NOT NEW.isActive THEN
UPDATE account.`user`
SET active = FALSE
@ -4674,26 +4570,6 @@ 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`.`entry_afterInsert`
AFTER INSERT ON `entry`
FOR EACH ROW
BEGIN
CALL travel_requestRecalc(NEW.travelFk);
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`.`entry_beforeUpdate`
BEFORE UPDATE ON `entry`
FOR EACH ROW
@ -4769,24 +4645,12 @@ DELIMITER ;;
AFTER UPDATE ON `entry`
FOR EACH ROW
BEGIN
IF NOT(NEW.id <=> OLD.id)
OR NOT(NEW.travelFk <=> OLD.travelFk)
OR NOT(NEW.isRaid <=> OLD.isRaid) THEN
CALL stock.log_add('entry', NEW.id, OLD.id);
END IF;
IF NOT (NEW.travelFk <=> OLD.travelFk) THEN
CALL travel_requestRecalc(OLD.travelFk);
CALL travel_requestRecalc(NEW.travelFk);
END IF;
IF NOT (NEW.travelFk <=> OLD.travelFk) THEN
CREATE OR REPLACE TEMPORARY TABLE tmp.buysToCheck
SELECT b.id
FROM buy b
WHERE b.entryFk = NEW.id;
CALL buy_checkItem();
END IF;
END */;;
@ -4834,8 +4698,6 @@ BEGIN
`changedModel` = 'Entry',
`changedModelId` = OLD.id,
`userFk` = account.myUser_getId();
CALL travel_requestRecalc(OLD.travelFk);
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@ -5433,6 +5295,10 @@ DELIMITER ;;
BEGIN
DECLARE vWithholdingSageFk INT;
IF NEW.isBooked = OLD.isBooked THEN
CALL invoiceIn_checkBooked(OLD.id);
END IF;
IF NOT (NEW.supplierRef <=> OLD.supplierRef) AND NOT util.checkPrintableChars(NEW.supplierRef) THEN
CALL util.throw('The invoiceIn reference contains invalid characters');
END IF;
@ -5475,7 +5341,6 @@ DELIMITER ;;
AFTER UPDATE ON `invoiceIn`
FOR EACH ROW
BEGIN
IF NEW.issued != OLD.issued
OR NEW.currencyFk != OLD.currencyFk THEN
@ -5510,6 +5375,26 @@ 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`.`invoiceIn_beforeDelete`
BEFORE DELETE ON `invoiceIn`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.id);
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`.`invoiceIn_afterDelete`
AFTER DELETE ON `invoiceIn`
FOR EACH ROW
@ -5534,12 +5419,74 @@ 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`.`invoiceInCorrection_beforeInsert`
BEFORE INSERT ON `invoiceInCorrection`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(NEW.correctingFk);
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`.`invoiceInCorrection_beforeUpdate`
BEFORE UPDATE ON `invoiceInCorrection`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.correctingFk);
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`.`invoiceInCorrection_beforeDelete`
BEFORE DELETE ON `invoiceInCorrection`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.correctingFk);
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`.`invoiceInDueDay_beforeInsert`
BEFORE INSERT ON `invoiceInDueDay`
FOR EACH ROW
BEGIN
DECLARE vIsNotified BOOLEAN;
CALL invoiceIn_checkBooked(NEW.invoiceInFk);
SET NEW.editorFk = account.myUser_getId();
SELECT isNotified INTO vIsNotified
@ -5582,6 +5529,7 @@ DELIMITER ;;
BEGIN
DECLARE vIsNotified BOOLEAN;
CALL invoiceIn_checkBooked(OLD.invoiceInFk);
SET NEW.editorFk = account.myUser_getId();
SELECT isNotified INTO vIsNotified
@ -5618,6 +5566,26 @@ 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`.`invoiceInDueDay_beforeDelete`
BEFORE DELETE ON `invoiceInDueDay`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.invoiceInFk);
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`.`invoiceInDueDay_afterDelete`
AFTER DELETE ON `invoiceInDueDay`
FOR EACH ROW
@ -5642,6 +5610,66 @@ 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`.`invoiceInIntrastat_beforeInsert`
BEFORE INSERT ON `invoiceInIntrastat`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(NEW.invoiceInFk);
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`.`invoiceInIntrastat_beforeUpdate`
BEFORE UPDATE ON `invoiceInIntrastat`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.invoiceInFk);
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`.`invoiceInIntrastat_beforeDelete`
BEFORE DELETE ON `invoiceInIntrastat`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.invoiceInFk);
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`.`invoiceInTax_beforeInsert`
BEFORE INSERT ON `invoiceInTax`
FOR EACH ROW
@ -5667,6 +5695,8 @@ DELIMITER ;;
BEFORE UPDATE ON `invoiceInTax`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.invoiceInFk);
IF NOT (NEW.invoiceInFk <=> OLD.invoiceInFk) THEN
CALL invoiceInTax_afterUpsert(NEW.invoiceInFk);
END IF;
@ -5687,6 +5717,26 @@ 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`.`invoiceInTax_beforeDelete`
BEFORE DELETE ON `invoiceInTax`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.invoiceInFk);
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`.`invoiceInTax_afterDelete`
AFTER DELETE ON `invoiceInTax`
FOR EACH ROW
@ -7827,11 +7877,7 @@ BEGIN
CALL util.throw('Cannot insert a service item into a ticket');
END IF;
CALL stock.log_add('sale', NEW.id, NULL);
CALL ticket_requestRecalc(NEW.ticketFk);
IF NEW.quantity > 0 THEN
UPDATE vn.collection c
JOIN vn.ticketCollection tc ON tc.collectionFk = c.id
AND tc.ticketFk = NEW.ticketFk
@ -7907,24 +7953,6 @@ BEGIN
DECLARE vIsToSendMail BOOL;
DECLARE vUserRole VARCHAR(255);
IF !(NEW.id <=> OLD.id)
OR !(NEW.ticketFk <=> OLD.ticketFk)
OR !(NEW.itemFk <=> OLD.itemFk)
OR !(NEW.quantity <=> OLD.quantity)
OR !(NEW.created <=> OLD.created)
OR !(NEW.isPicked <=> OLD.isPicked) THEN
CALL stock.log_add('sale', NEW.id, OLD.id);
END IF;
IF !(NEW.price <=> OLD.price)
OR !(NEW.ticketFk <=> OLD.ticketFk)
OR !(NEW.itemFk <=> OLD.itemFk)
OR !(NEW.quantity <=> OLD.quantity)
OR !(NEW.discount <=> OLD.discount) THEN
CALL ticket_requestRecalc(NEW.ticketFk);
CALL ticket_requestRecalc(OLD.ticketFk);
END IF;
IF !(OLD.ticketFk <=> NEW.ticketFk) THEN
UPDATE ticketRequest SET ticketFk = NEW.ticketFk
WHERE saleFk = NEW.id;
@ -8046,9 +8074,6 @@ BEGIN
`changedModelId` = OLD.id,
`userFk` = account.myUser_getId();
CALL stock.log_add('sale', NULL, OLD.id);
CALL ticket_requestRecalc(OLD.ticketFk);
SELECT account.myUser_getName() INTO vUserRole;
SELECT account.user_getMysqlRole(vUserRole) INTO vUserRole;
@ -9077,25 +9102,11 @@ DELIMITER ;;
AFTER UPDATE ON `ticket`
FOR EACH ROW
BEGIN
IF !(NEW.id <=> OLD.id)
OR !(NEW.warehouseFk <=> OLD.warehouseFk)
OR !(NEW.shipped <=> OLD.shipped) THEN
CALL stock.log_add('ticket', NEW.id, OLD.id);
END IF;
IF !(NEW.clientFk <=> OLD.clientFk)
OR !(NEW.addressFk <=> OLD.addressFk)
OR !(NEW.companyFk <=> OLD.companyFk) THEN
CALL ticket_requestRecalc(NEW.id);
END IF;
IF NEW.routeFk <> OLD.routeFk THEN
UPDATE expedition
UPDATE expedition
SET hasNewRoute = TRUE
WHERE ticketFk = NEW.id;
END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@ -9366,8 +9377,6 @@ DELIMITER ;;
FOR EACH ROW
BEGIN
SET NEW.editorFk = account.myUser_getId();
SET NEW.workerFk = account.myUser_getId();
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@ -9623,28 +9632,6 @@ 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`.`ticketService_afterInsert`
AFTER INSERT ON `ticketService`
FOR EACH ROW
BEGIN
CALL ticket_requestRecalc(NEW.ticketFk);
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`.`ticketService_beforeUpdate`
BEFORE UPDATE ON `ticketService`
FOR EACH ROW
@ -9665,31 +9652,6 @@ 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`.`ticketService_afterUpdate`
AFTER UPDATE ON `ticketService`
FOR EACH ROW
BEGIN
IF !(NEW.price <=> OLD.price)
OR !(NEW.ticketFk <=> OLD.ticketFk)
OR !(NEW.quantity <=> OLD.quantity) THEN
CALL ticket_requestRecalc(NEW.ticketFk);
CALL ticket_requestRecalc(OLD.ticketFk);
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`.`ticketService_afterDelete`
AFTER DELETE ON `ticketService`
FOR EACH ROW
@ -9699,9 +9661,6 @@ BEGIN
`changedModel` = 'TicketService',
`changedModelId` = OLD.id,
`userFk` = account.myUser_getId();
CALL ticket_requestRecalc(OLD.ticketFk);
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@ -10142,10 +10101,8 @@ DELIMITER ;;
AFTER UPDATE ON `travel`
FOR EACH ROW
BEGIN
CALL stock.log_add('travel', NEW.id, OLD.id);
IF NOT(NEW.shipped <=> OLD.shipped) THEN
UPDATE entry
UPDATE entry
SET commission = entry_getCommission(travelFk, currencyFk,supplierFk)
WHERE travelFk = NEW.id;
END IF;
@ -10154,11 +10111,11 @@ BEGIN
IF (SELECT hasWeightVolumetric FROM agencyMode WHERE id = NEW.agencyModeFk) THEN
CREATE OR REPLACE TEMPORARY TABLE tmp.buysToCheck
SELECT b.id
FROM entry e
FROM entry e
JOIN buy b ON b.entryFk = e.id
JOIN item i ON i.id = b.itemFk
WHERE e.travelFk = NEW.id;
CALL buy_checkItem();
END IF;
END IF;
@ -10997,4 +10954,4 @@ USE `vn2008`;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2024-04-18 7:16:17
-- Dump completed on 2024-05-07 5:48:41

View File

@ -5,97 +5,90 @@ BEGIN
DECLARE vFromDated DATE;
DECLARE vForDeleteDated DATE;
DECLARE vManaId INT;
DECLARE vManaAutoId INT;
DECLARE vClaimManaId INT;
DECLARE vManaBankId INT;
DECLARE vManaGreugeTypeId INT;
DECLARE vManaFromDays INT;
DECLARE vManaToDays INT;
DECLARE vManaAutoId INT;
DECLARE vClaimManaId INT;
DECLARE vManaBankId INT;
DECLARE vManaGreugeTypeId INT;
DECLARE vManaFromDays INT;
DECLARE vManaToDays INT;
SELECT id INTO vManaId
FROM vn.component WHERE code = 'mana';
SELECT id INTO vManaId
FROM vn.component WHERE code = 'mana';
SELECT id INTO vManaAutoId
SELECT id INTO vManaAutoId
FROM vn.component WHERE code = 'autoMana';
SELECT id INTO vClaimManaId
FROM vn.component WHERE code = 'manaClaim';
SELECT id INTO vManaBankId
SELECT id INTO vManaBankId
FROM vn.accounting WHERE code = 'mana';
SELECT id INTO vManaGreugeTypeId
SELECT id INTO vManaGreugeTypeId
FROM vn.greugeType WHERE code = 'mana';
SELECT manaFromDays, manaToDays
INTO vManaFromDays, vManaToDays
FROM vn.salespersonConfig;
SELECT manaFromDays, manaToDays
INTO vManaFromDays, vManaToDays
FROM vn.salespersonConfig;
SELECT MAX(dated)
INTO vFromDated
FROM vn.clientManaCache;
SELECT MAX(dated) INTO vFromDated
FROM vn.clientManaCache;
DELETE
FROM vn.clientManaCache
WHERE dated = vFromDated;
SELECT MAX(dated)
INTO vFromDated
FROM vn.clientManaCache;
IF ISNULL(vFromDated) THEN
SELECT manaDateFrom
INTO vFromDated
FROM vn.salespersonConfig;
END IF;
DELETE FROM vn.clientManaCache
WHERE dated = vFromDated;
SELECT MAX(dated) INTO vFromDated
FROM vn.clientManaCache;
IF vFromDated IS NULL THEN
SELECT manaDateFrom
INTO vFromDated
FROM vn.salespersonConfig;
END IF;
WHILE vFromDated + INTERVAL vManaToDays DAY < util.VN_CURDATE() DO
SELECT
vFromDated + INTERVAL vManaToDays DAY,
vFromDated - INTERVAL vManaFromDays DAY
INTO
vToDated,
vForDeleteDated;
DELETE FROM vn.clientManaCache
WHERE dated <= vForDeleteDated;
WHILE vFromDated + INTERVAL vManaToDays DAY < util.VN_CURDATE() DO
SELECT vFromDated + INTERVAL vManaToDays DAY,
vFromDated - INTERVAL vManaFromDays DAY
INTO vToDated,
vForDeleteDated;
DELETE FROM vn.clientManaCache
WHERE dated <= vForDeleteDated;
INSERT INTO vn.clientManaCache(clientFk, mana, dated)
SELECT
Id_Cliente,
SUM(mana),
vToDated
FROM
(
SELECT a.clientFk Id_Cliente, s.quantity * sc.value as mana
FROM vn.ticket t
JOIN vn.address a ON a.id = t.addressFk
JOIN vn.sale s on s.ticketFk = t.id
JOIN vn.saleComponent sc on sc.saleFk = s.id
WHERE sc.componentFk IN (vManaAutoId, vManaId, vClaimManaId)
AND t.shipped > vFromDated
AND date(t.shipped) <= vToDated
UNION ALL
SELECT clientFk, - amountPaid
FROM vn.receipt
WHERE bankFk = vManaBankId
AND payed > vFromDated
AND payed <= vToDated
UNION ALL
SELECT clientFk, amount
FROM vn.greuge
WHERE greugeTypeFk = vManaGreugeTypeId
AND shipped > vFromDated
AND shipped <= vToDated
UNION ALL
SELECT clientFk, mana
FROM vn.clientManaCache
WHERE dated = vFromDated
) sub
GROUP BY Id_Cliente
HAVING Id_Cliente;
INSERT INTO vn.clientManaCache(clientFk, mana, dated)
SELECT Id_Cliente,
SUM(mana),
vToDated
FROM (
SELECT a.clientFk Id_Cliente, s.quantity * sc.value mana
FROM vn.ticket t
JOIN vn.address a ON a.id = t.addressFk
JOIN vn.sale s ON s.ticketFk = t.id
JOIN vn.saleComponent sc ON sc.saleFk = s.id
WHERE sc.componentFk IN (vManaAutoId, vManaId, vClaimManaId)
AND t.shipped > vFromDated
AND DATE(t.shipped) <= vToDated
UNION ALL
SELECT clientFk, - amountPaid
FROM vn.receipt
WHERE bankFk = vManaBankId
AND payed > vFromDated
AND payed <= vToDated
UNION ALL
SELECT clientFk, amount
FROM vn.greuge
WHERE greugeTypeFk = vManaGreugeTypeId
AND shipped > vFromDated
AND shipped <= vToDated
UNION ALL
SELECT clientFk, mana
FROM vn.clientManaCache
WHERE dated = vFromDated
) sub
GROUP BY Id_Cliente
HAVING Id_Cliente;
SET vFromDated = vToDated;
END WHILE;
SET vFromDated = vToDated;
END WHILE;
END$$
DELIMITER ;

View File

@ -0,0 +1,72 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`sale_add`(
IN vStarted DATE,
IN vEnded DATE)
BEGIN
/**
* Añade las ventas que se realizaron entre 2 fechas a la tabla bs.sale
*
* @param vStarted Fecha de inicio
* @param vEnded Fecha de fin
*
*/
DECLARE vLoopDate DATE;
DECLARE vLoopDateTime DATETIME;
IF vStarted < (util.VN_CURDATE() - INTERVAL 5 YEAR) OR vStarted > vEnded THEN
CALL util.throw('Wrong date');
END IF;
SET vLoopDate = vStarted;
DELETE FROM sale
WHERE dated BETWEEN vStarted AND vEnded;
WHILE vLoopDate <= vEnded DO
SET vLoopDateTime = util.dayEnd(vLoopDate);
REPLACE sale(
saleFk,
amount,
surcharge,
dated,
typeFk,
clientFk,
companyFk,
margin
)WITH calculatedSales AS(
SELECT s.id saleFk,
SUM(IF(ct.isBase, s.quantity * sc.value, 0)) amount,
SUM(IF(ct.isBase, 0, s.quantity * sc.value)) surcharge,
s.total pvp,
DATE(t.shipped) dated,
i.typeFk,
t.clientFk,
t.companyFk,
SUM(IF(ct.isMargin, s.quantity * sc.value, 0 )) marginComponents
FROM vn.ticket t
STRAIGHT_JOIN vn.sale s ON s.ticketFk = t.id
JOIN vn.item i ON i.id = s.itemFk
JOIN vn.itemType it ON it.id = i.typeFk
JOIN vn.itemCategory ic ON ic.id = it.categoryFk
JOIN vn.saleComponent sc ON sc.saleFk = s.id
JOIN vn.component c ON c.id = sc.componentFk
JOIN vn.componentType ct ON ct.id = c.typeFk
WHERE t.shipped BETWEEN vLoopDate AND vLoopDateTime
AND s.quantity <> 0
AND ic.merchandise
GROUP BY s.id
)SELECT saleFk,
amount,
surcharge,
dated,
typeFk,
clientFk,
companyFk,
marginComponents + amount + surcharge - pvp
FROM calculatedSales;
SET vLoopDate = vLoopDate + INTERVAL 1 DAY;
END WHILE;
END$$
DELIMITER ;

View File

@ -1,13 +1,12 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`ventas_add_launcher`()
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`sales_addLauncher`()
BEGIN
/**
* Añade las ventas a la tabla bs.sale que se realizaron desde hace un mes hasta hoy
*
*/
DECLARE vCurDate DATE DEFAULT util.VN_CURDATE();
CALL ventas_add(vCurDate - INTERVAL 1 MONTH, vCurDate);
CALL sale_add(vCurDate - INTERVAL 1 MONTH, vCurDate);
END$$
DELIMITER ;

View File

@ -1,78 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`ventas_add`(
IN vStarted DATETIME,
IN vEnded DATETIME)
BEGIN
/**
* Añade las ventas que se realizaron entre
* vStarted y vEnded
*
* @param vStarted Fecha de inicio
* @param vEnded Fecha de finalizacion
*
**/
DECLARE vStartingDate DATETIME;
DECLARE vEndingDate DATETIME;
IF vStarted < TIMESTAMPADD(YEAR,-5,util.VN_CURDATE())
OR vEnded < TIMESTAMPADD(YEAR,-5,util.VN_CURDATE()) THEN
CALL util.throw('fechaDemasiadoAntigua');
END IF;
SET vEnded = util.dayEnd(vEnded);
SET vStartingDate = vStarted ;
SET vEndingDate = util.dayEnd(vStartingDate);
DELETE
FROM sale
WHERE dated BETWEEN vStartingDate AND vEnded;
WHILE vEndingDate <= vEnded DO
REPLACE ventas(Id_Movimiento, importe, recargo, fecha, tipo_id, Id_Cliente, empresa_id)
SELECT saleFk,
SUM(IF(ct.isBase, s.quantity * sc.value, 0)) importe,
SUM(IF(ct.isBase, 0, s.quantity * sc.value)) recargo,
vStartingDate,
i.typeFk,
a.clientFk,
t.companyFk
FROM vn.saleComponent sc
JOIN vn.component c ON c.id = sc.componentFk
JOIN vn.componentType ct ON ct.id = c.typeFk
JOIN vn.sale s ON s.id = sc.saleFk
JOIN vn.item i ON i.id = s.itemFk
JOIN vn.itemType it ON it.id = i.typeFk
JOIN vn.itemCategory ic ON ic.id = it.categoryFk
JOIN vn.ticket t ON t.id = s.ticketFk
JOIN vn.address a ON a.id = t.addressFk
JOIN vn.client cl ON cl.id = a.clientFk
WHERE t.shipped BETWEEN vStartingDate AND vEndingDate
AND s.quantity <> 0
AND s.discount <> 100
AND ic.merchandise
GROUP BY sc.saleFk
HAVING IFNULL(importe,0) <> 0 OR IFNULL(recargo,0) <> 0;
UPDATE sale s
JOIN (
SELECT s.id,
SUM(s.quantity * sc.value ) margen,
s.quantity * s.price * (100 - s.discount ) / 100 pvp
FROM vn.sale s
JOIN vn.ticket t ON t.id = s.ticketFk
JOIN vn.saleComponent sc ON sc.saleFk = s.id
JOIN vn.component c ON c.id = sc.componentFk
JOIN vn.componentType ct ON ct.id = c.typeFk
WHERE t.shipped BETWEEN vStartingDate AND vEndingDate
AND ct.isMargin = TRUE
GROUP BY s.id) sub ON sub.id = s.saleFk
SET s.margin = sub.margen + s.amount + s.surcharge - sub.pvp;
SET vStartingDate = TIMESTAMPADD(DAY,1, vStartingDate);
SET vEndingDate = util.dayEnd(vStartingDate);
END WHILE;
END$$
DELIMITER ;

View File

@ -259,7 +259,7 @@ BEGIN
JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk
AND tcs.warehouseFk = tcc.warehouseFk
WHERE IFNULL(tcs.classRate, 1) = 1
AND NOT tcc.groupingMode = 'packing'
AND (tcc.groupingMode = 'grouping' OR tcc.groupingMode IS NULL)
AND (tcc.packing > tcc.`grouping` OR tcc.groupingMode IS NULL)
GROUP BY tcs.warehouseFk, tcs.itemFk;

View File

@ -131,7 +131,8 @@ BEGIN
DELETE e
FROM entry e
JOIN tEntryToDelete tmp ON tmp.id = e.id;
JOIN tEntryToDelete tmp ON tmp.id = e.id
WHERE NOT e.isBooked;
-- borrar de route registros menores a 4 años
CREATE OR REPLACE TEMPORARY TABLE tRouteToDelete

View File

@ -52,6 +52,10 @@ BEGIN
SELECT LAST_INSERT_ID() INTO vSaleFk;
UPDATE sale
SET originalQuantity = 0
WHERE id = vSaleFk;
CALL sale_calculateComponent(vSaleFk, NULL);
END$$
DELIMITER ;

View File

@ -28,11 +28,10 @@ BEGIN
JOIN entry e ON e.invoiceInFk = ii.id
JOIN duaEntry de ON de.entryFk = e.id
JOIN dua d ON d.id = de.duaFk
SET ii.isBooked = TRUE,
ii.booked = IFNULL(ii.booked,d.booked),
ii.operated = IFNULL(ii.operated,d.operated),
ii.issued = IFNULL(ii.issued,d.issued),
ii.bookEntried = IFNULL(ii.bookEntried,d.bookEntried),
SET ii.booked = IFNULL(ii.booked, d.booked),
ii.operated = IFNULL(ii.operated, d.operated),
ii.issued = IFNULL(ii.issued, d.issued),
ii.bookEntried = IFNULL(ii.bookEntried, d.bookEntried),
e.isBooked = TRUE,
e.isConfirmed = TRUE
WHERE d.id = vDuaFk;
@ -71,5 +70,9 @@ BEGIN
SET ASIEN = vASIEN
WHERE id = vDuaFk;
UPDATE invoiceIn ii
JOIN duaInvoiceIn dii ON dii.invoiceInFk = ii.id
SET ii.isBooked = TRUE
WHERE dii.duaFk = vDuaFk;
END$$
DELIMITER ;

View File

@ -1,101 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`fv_pca`()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE vTicketFk INT;
DECLARE vSaleFk INT;
DECLARE vClonTicket INT DEFAULT 0;
DECLARE cur1 CURSOR FOR
SELECT s.ticketFk, s.id
FROM vn.sale s
JOIN vn.ticket t ON t.id = s.ticketFk
JOIN vn.item i ON i.id = s.itemFk
JOIN vn.itemType it ON it.id = i.typeFk
WHERE t.shipped BETWEEN '2020-10-18' AND '2020-10-31'
AND it.code IN ('ANT','ANS','ORQ','TRO')
and t.warehouseFk = 1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur1;
FETCH cur1 INTO vTicketFk, vSaleFk;
WHILE done = 0 DO
SELECT t.id INTO vClonTicket
FROM vn.ticket t
JOIN (SELECT addressFk, shipped FROM vn.ticket WHERE id = vTicketFk) sub USING(addressFk, shipped)
WHERE t.warehouseFk = 44
LIMIT 1;
SELECT vTicketFk, vClonTicket;
IF vClonTicket = 0 THEN
INSERT INTO ticket (
clientFk,
shipped,
addressFk,
agencyModeFk,
nickname,
warehouseFk,
companyFk,
landed,
zoneFk,
zonePrice,
zoneBonus,
routeFk
)
SELECT
clientFk,
shipped,
addressFk,
agencyModeFk,
nickname,
44,
companyFk,
landed,
zoneFk,
zonePrice,
zoneBonus,
routeFk
FROM ticket
WHERE id = vTicketFk;
SET vClonTicket = LAST_INSERT_ID();
SELECT 'lstID', vClonTicket;
/*
INSERT INTO ticketObservation(ticketFk, observationTypeFk, description)
SELECT vTicketFk, ao.observationTypeFk, ao.description
FROM addressObservation ao
JOIN ticket t ON t.addressFk = ao.addressFk
WHERE t.id = vClonTicket;
*/
INSERT INTO ticketLog
SET originFk = vTicketFk, userFk = account.myUser_getId(), `action` = 'insert',
description = CONCAT('Ha creado el ticket:', ' ', vClonTicket, ' clonando el ', vTicketFk);
END IF;
UPDATE vn.sale
SET ticketFk = vClonTicket
WHERE id = vSaleFk;
SET vClonTicket = 0;
SET done = 0;
FETCH cur1 INTO vTicketFk, vSaleFk;
END WHILE;
CLOSE cur1;
END$$
DELIMITER ;

View File

@ -21,7 +21,7 @@ BEGIN
SELECT id
FROM warehouse
WHERE isInventory;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
@ -38,18 +38,18 @@ BEGIN
INTO vMaxRecentInventories,
vWarehouseOutFkInventory,
vAgencyModeFkInventory
FROM inventoryConfig
FROM inventoryConfig
LIMIT 1;
IF vDateLastInventory IS NULL
IF vDateLastInventory IS NULL
OR vInventorySupplierFk IS NULL
OR vMaxRecentInventories IS NULL
OR vInventoryDate IS NULL
OR vMaxRecentInventories IS NULL
OR vInventoryDate IS NULL
OR vWarehouseOutFkInventory IS NULL
OR vAgencyModeFkInventory IS NULL THEN
CALL util.throw('Some config parameters are not set');
END IF;
START TRANSACTION;
OPEN cWarehouses;
@ -77,7 +77,7 @@ BEGIN
LIMIT 1;
IF vTravelFk IS NULL THEN
INSERT INTO travel
INSERT INTO travel
SET warehouseOutFk = vWarehouseOutFkInventory,
warehouseInFk = vWarehouseFk,
shipped = vInventoryDate,
@ -94,15 +94,16 @@ BEGIN
SELECT id INTO vEntryFk
FROM entry
WHERE supplierFk = vInventorySupplierFk
AND travelFk = vTravelFk;
AND travelFk = vTravelFk
AND typeFk = 'inventory';
IF vEntryFk IS NULL THEN
INSERT INTO entry
INSERT INTO entry
SET supplierFk = vInventorySupplierFk,
isConfirmed = TRUE,
isOrdered = TRUE,
travelFk = vTravelFk;
travelFk = vTravelFk,
typeFk = 'inventory';
SELECT LAST_INSERT_ID() INTO vEntryFk;
ELSE
DELETE FROM buy WHERE entryFk = vEntryFk;
@ -224,15 +225,15 @@ BEGIN
JOIN tInventory i2 ON i2.itemFk = i.id
SET i.lastUsed = NOW()
WHERE i2.quantity;
DROP TEMPORARY TABLE tInventory;
END LOOP;
CLOSE cWarehouses;
UPDATE config SET inventoried = vInventoryDate;
CREATE OR REPLACE TEMPORARY TABLE tEntryToDelete
(INDEX(entryId)) ENGINE = MEMORY
SELECT e.id entryId,
@ -252,7 +253,7 @@ BEGIN
WHERE e.supplierFk = vInventorySupplierFk
AND t.shipped IN (sub.shipped);
DELETE e
DELETE e
FROM `entry` e
JOIN tEntryToDelete tmp ON tmp.entryId = e.id;

View File

@ -10,8 +10,6 @@ BEGIN
DECLARE vLines INT;
DECLARE vHasDistinctTransactions INT;
CALL invoiceIn_checkBooked(vInvoiceInFk);
SELECT taxRowLimit INTO vTaxRowLimit FROM invoiceInConfig;
SELECT COUNT(*) INTO vLines

View File

@ -5,8 +5,6 @@ BEGIN
DECLARE vDated DATE;
DECLARE vExpenseFk VARCHAR(10);
CALL invoiceIn_checkBooked(vInvoiceInFk);
SELECT MAX(rr.dated) INTO vDated
FROM referenceRate rr
JOIN invoiceIn ii ON ii.id = vInvoiceInFk

View File

@ -1,7 +1,7 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_add`(IN vShelvingFk VARCHAR(8), IN vBarcode VARCHAR(22), IN vQuantity INT, IN vPackagingFk VARCHAR(10), IN vGrouping INT, IN vPacking INT, IN vWarehouseFk INT)
BEGIN
/**
* Añade registro o lo actualiza si ya existe.
@ -13,34 +13,24 @@ BEGIN
* @param vGrouping el grouping del producto en itemShelving, NULL para coger el de la ultima compra
* @param vPacking el packing del producto, NULL para coger el de la ultima compra
* @param vWarehouseFk indica el sector
*
*
**/
DECLARE vItemFk INT;
SELECT barcodeToItem(vBarcode) INTO vItemFk;
SET vPacking = COALESCE(vPacking, GREATEST(vn.itemPacking(vBarcode,vWarehouseFk), 1));
SET vQuantity = vQuantity * vPacking;
IF (SELECT COUNT(*) FROM shelving WHERE code = vShelvingFk COLLATE utf8_unicode_ci) = 0 THEN
INSERT IGNORE INTO parking(code) VALUES(vShelvingFk);
INSERT INTO shelving(code, parkingFk)
SELECT vShelvingFk, id
FROM parking
WHERE `code` = vShelvingFk COLLATE utf8_unicode_ci;
END IF;
IF (SELECT COUNT(*) FROM itemShelving
WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk
AND itemFk = vItemFk
IF (SELECT COUNT(*) FROM itemShelving
WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk
AND itemFk = vItemFk
AND packing = vPacking) = 1 THEN
UPDATE itemShelving
SET visible = visible+vQuantity
WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk AND itemFk = vItemFk AND packing = vPacking;
WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk AND itemFk = vItemFk AND packing = vPacking;
ELSE
CALL cache.last_buy_refresh(FALSE);

View File

@ -179,7 +179,7 @@ BEGIN
LEFT JOIN alertLevel a ON a.id = t.alertLevel;
ELSE
SELECT SUM(`in`) - SUM(`out`) INTO @a
SELECT IFNULL(SUM(IFNULL(`in`, 0)) - SUM(IFNULL(`out`, 0)), 0) INTO @a
FROM tItemDiary
WHERE shipped < vDate;

View File

@ -26,7 +26,7 @@ BEGIN
FROM workerTimeControl
WHERE userFk = vWorkerFk
AND direction = 'middle'
AND timed BETWEEN vLastIn AND util.VN_NOW();
AND timed BETWEEN vLastIn AND vTimed;
DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControlDirection;
CREATE TEMPORARY TABLE tmp.workerTimeControlDirection

View File

@ -6,9 +6,19 @@ BEGIN
DECLARE vIsVirtual BOOL;
DECLARE vPrintedCount INT;
DECLARE vHasDistinctWarehouses BOOL;
DECLARE vTotalBuy INT;
IF NEW.isBooked = OLD.isBooked THEN
CALL entry_checkBooked(OLD.id);
ELSE
IF NEW.isBooked THEN
SELECT COUNT(*) INTO vTotalBuy
FROM buy
WHERE entryFk = NEW.id;
IF NOT vTotalBuy THEN
CALL util.throw('Entry must have lines to be marked booked');
END IF;
END IF;
END IF;
SET NEW.editorFk = account.myUser_getId();
@ -16,7 +26,7 @@ BEGIN
IF NOT (NEW.travelFk <=> OLD.travelFk) THEN
IF NEW.travelFk IS NOT NULL AND NOT travel_hasUniqueAwb(NEW.travelFk) THEN
CALL util.throw('The travel is incorrect, there is a different AWB in the associated entries');
CALL util.throw('The travel is incorrect, there is a different AWB in the associated entries');
END IF;
SELECT COUNT(*) > 0 INTO vIsVirtual

View File

@ -1,8 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInCorrection_beforeDelete`
BEFORE DELETE ON `invoiceInCorrection`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.correctingFk);
END$$
DELIMITER ;

View File

@ -1,8 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInCorrection_beforeInsert`
BEFORE INSERT ON `invoiceInCorrection`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(NEW.correctingFk);
END$$
DELIMITER ;

View File

@ -1,8 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInCorrection_beforeUpdate`
BEFORE UPDATE ON `invoiceInCorrection`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.correctingFk);
END$$
DELIMITER ;

View File

@ -1,8 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInDueDay_beforeDelete`
BEFORE DELETE ON `invoiceInDueDay`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.invoiceInFk);
END$$
DELIMITER ;

View File

@ -5,8 +5,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInDueDay_befor
BEGIN
DECLARE vIsNotified BOOLEAN;
CALL invoiceIn_checkBooked(NEW.invoiceInFk);
SET NEW.editorFk = account.myUser_getId();
SELECT isNotified INTO vIsNotified

View File

@ -5,7 +5,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInDueDay_befor
BEGIN
DECLARE vIsNotified BOOLEAN;
CALL invoiceIn_checkBooked(OLD.invoiceInFk);
SET NEW.editorFk = account.myUser_getId();
SELECT isNotified INTO vIsNotified

View File

@ -1,8 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInIntrastat_beforeDelete`
BEFORE DELETE ON `invoiceInIntrastat`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.invoiceInFk);
END$$
DELIMITER ;

View File

@ -1,8 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInIntrastat_beforeInsert`
BEFORE INSERT ON `invoiceInIntrastat`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(NEW.invoiceInFk);
END$$
DELIMITER ;

View File

@ -1,8 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInIntrastat_beforeUpdate`
BEFORE UPDATE ON `invoiceInIntrastat`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.invoiceInFk);
END$$
DELIMITER ;

View File

@ -1,8 +0,0 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInTax_beforeDelete`
BEFORE DELETE ON `invoiceInTax`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.invoiceInFk);
END$$
DELIMITER ;

View File

@ -3,8 +3,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInTax_beforeUp
BEFORE UPDATE ON `invoiceInTax`
FOR EACH ROW
BEGIN
CALL invoiceIn_checkBooked(OLD.invoiceInFk);
IF NOT (NEW.invoiceInFk <=> OLD.invoiceInFk) THEN
CALL invoiceInTax_afterUpsert(NEW.invoiceInFk);
END IF;

View File

@ -5,10 +5,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceIn_beforeUpdat
BEGIN
DECLARE vWithholdingSageFk INT;
IF NEW.isBooked = OLD.isBooked THEN
CALL invoiceIn_checkBooked(OLD.id);
END IF;
IF NOT (NEW.supplierRef <=> OLD.supplierRef) AND NOT util.checkPrintableChars(NEW.supplierRef) THEN
CALL util.throw('The invoiceIn reference contains invalid characters');
END IF;

View File

@ -0,0 +1,2 @@
ALTER TABLE vn.productionConfig MODIFY COLUMN id INT(10) UNSIGNED FIRST;
ALTER TABLE vn.productionConfig ADD scannableCodeType enum('qr','barcode') DEFAULT 'barcode' NOT NULL;

View File

@ -0,0 +1,7 @@
ALTER TABLE vn.parking
ADD CONSTRAINT chkParkingCodeFormat CHECK (CHAR_LENGTH(code) > 4 AND code LIKE '%-%');
ALTER TABLE vn.parking MODIFY COLUMN sectorFk int(11) NOT NULL;
ALTER TABLE vn.shelving
ADD CONSTRAINT chkShelvingCodeFormat CHECK (CHAR_LENGTH(code) <= 4 AND code NOT LIKE '%-%');

View File

@ -0,0 +1 @@
ALTER TABLE vn.entryType ADD isInformal TINYINT DEFAULT 0 NOT NULL;

View File

@ -0,0 +1,3 @@
UPDATE vn.entryType
SET description='Interna', code='internal'
WHERE code='supplies'

View File

@ -0,0 +1,3 @@
UPDATE vn.entryType
SET isInformal = TRUE
WHERE code IN ('inventory', 'life', 'regularization', 'internal')

View File

@ -0,0 +1,2 @@
-- Place your SQL code here
ALTER TABLE vn.productionConfig ADD defaultSectorFk INT UNSIGNED DEFAULT 37 NOT NULL COMMENT 'Default sector';

View File

@ -0,0 +1,10 @@
-- Place your SQL code here
ALTER TABLE vn.absenceType ADD isFestiveEligible BOOL DEFAULT 1 NOT NULL COMMENT 'Para marcar un tipo de absence';
UPDATE vn.absenceType
SET isFestiveEligible = 0
WHERE code = 'holiday';
UPDATE vn.absenceType
SET isFestiveEligible=0
WHERE code = 'halfHoliday';

View File

@ -0,0 +1,4 @@
UPDATE bs.nightTask
SET `procedure` = 'sales_addLauncher'
WHERE `procedure` = 'ventas_add_launcher';

View File

@ -0,0 +1,9 @@
DELETE FROM salix.ACL
WHERE model = 'Worker'
AND property = '__get__summary'
AND principalId = 'employee';
UPDATE salix.ACL SET principalId = 'employee'
WHERE model = 'Worker'
AND property IN ('find','findById','findOne')
AND principalId = 'hr';

View File

@ -2,6 +2,7 @@ import selectors from '../../helpers/selectors.js';
import getBrowser from '../../helpers/puppeteer';
describe('Worker summary path', () => {
const workerId = 3;
let browser;
let page;
beforeAll(async() => {
@ -9,7 +10,7 @@ describe('Worker summary path', () => {
page = browser.page;
await page.loginAndModule('employee', 'worker');
const httpDataResponse = page.waitForResponse(response => {
return response.status() === 200 && response.url().includes(`Workers/summary`);
return response.status() === 200 && response.url().includes(`Workers/${workerId}`);
});
await page.accessToSearchResult('agencyNick');
await httpDataResponse;

View File

@ -8,7 +8,7 @@ describe('Ticket descriptor path', () => {
beforeAll(async() => {
browser = await getBrowser();
page = browser.page;
await page.loginAndModule('buyer', 'ticket');
await page.loginAndModule('buyerBoss', 'ticket');
await page.accessToSection('ticket.weekly.index');
});

View File

@ -226,4 +226,4 @@
"This password can only be changed by the user themselves": "This password can only be changed by the user themselves",
"They're not your subordinate": "They're not your subordinate",
"InvoiceIn is already booked": "InvoiceIn is already booked"
}
}

View File

@ -277,7 +277,7 @@
"Collection does not exist": "La colección no existe",
"Cannot obtain exclusive lock": "No se puede obtener un bloqueo exclusivo",
"Insert a date range": "Inserte un rango de fechas",
"Added observation": "{{user}} añadió esta observacion: {{text}}",
"Added observation": "{{user}} añadió esta observacion: {{text}} {{defaulterId}} ({{{defaulterUrl}}})",
"Comment added to client": "Observación añadida al cliente {{clientFk}}",
"Invalid auth code": "Código de verificación incorrecto",
"Invalid or expired verification code": "Código de verificación incorrecto o expirado",

360
loopback/locale/fr.json Normal file
View File

@ -0,0 +1,360 @@
{
"Phone format is invalid": "O formato do telefone é inválido",
"You are not allowed to change the credit": "Você não tem permissão para alterar o crédito",
"Unable to mark the equivalence surcharge": "Não é possível marcar a sobretaxa de equivalência",
"The default consignee can not be unchecked": "Não é possível desmarcar o destinatário padrão",
"Unable to default a disabled consignee": "Não é possível definir um destinatário desativado como padrão",
"Can't be blank": "Não pode ficar em branco",
"Invalid TIN": "NIF/CIF inválido",
"TIN must be unique": "O NIF/CIF deve ser único",
"A client with that Web User name already exists": "Já existe um cliente com esse nome de usuário da web",
"Is invalid": "É inválido",
"Quantity cannot be zero": "A quantidade não pode ser zero",
"Enter an integer different to zero": "Digite um inteiro diferente de zero",
"Package cannot be blank": "A embalagem não pode ficar em branco",
"The company name must be unique": "O nome da empresa deve ser único",
"Invalid email": "E-mail inválido",
"The IBAN does not have the correct format": "O IBAN não tem o formato correto",
"That payment method requires an IBAN": "Este método de pagamento requer um IBAN",
"That payment method requires a BIC": "Este método de pagamento requer um BIC",
"State cannot be blank": "O estado não pode ficar em branco",
"Worker cannot be blank": "O trabalhador não pode ficar em branco",
"Cannot change the payment method if no salesperson": "Não é possível alterar o método de pagamento se não houver vendedor",
"can't be blank": "Não pode ficar em branco",
"Observation type must be unique": "O tipo de observação deve ser único",
"The credit must be an integer greater than or equal to zero": "O crédito deve ser um inteiro maior ou igual a zero",
"The grade must be similar to the last one": "A nota deve ser semelhante à última",
"Only manager can change the credit": "Apenas o gerente pode alterar o crédito deste cliente",
"Name cannot be blank": "O nome não pode ficar em branco",
"Phone cannot be blank": "O telefone não pode ficar em branco",
"Period cannot be blank": "O período não pode ficar em branco",
"Choose a company": "Escolha uma empresa",
"Se debe rellenar el campo de texto": "O campo de texto deve ser preenchido",
"Description should have maximum of 45 characters": "A descrição deve ter no máximo 45 caracteres",
"Cannot be blank": "Não pode ficar em branco",
"The grade must be an integer greater than or equal to zero": "A nota deve ser um inteiro maior ou igual a zero",
"Sample type cannot be blank": "O tipo de amostra não pode ficar em branco",
"Description cannot be blank": "A descrição não pode ficar em branco",
"The price of the item changed": "O preço do item mudou",
"The value should not be greater than 100%": "O valor não deve ser maior que 100%",
"The value should be a number": "O valor deve ser um número",
"This order is not editable": "Esta ordem não é editável",
"You can't create an order for a frozen client": "Você não pode criar uma ordem para um cliente congelado",
"You can't create an order for a client that has a debt": "Você não pode criar uma ordem para um cliente que tem uma dívida",
"is not a valid date": "não é uma data válida",
"Barcode must be unique": "O código de barras deve ser único",
"The warehouse can't be repeated": "O armazém não pode ser repetido",
"The tag or priority can't be repeated for an item": "A tag ou prioridade não podem ser repetidas para um item",
"The observation type can't be repeated": "O tipo de observação não pode ser repetido",
"A claim with that sale already exists": "Já existe uma reclamação com essa venda",
"You don't have enough privileges to change that field": "Você não tem privilégios suficientes para alterar esse campo",
"Warehouse cannot be blank": "O armazém não pode ficar em branco",
"Agency cannot be blank": "A agência não pode ficar em branco",
"Not enough privileges to edit a client with verified data": "Não há privilégios suficientes para editar um cliente com dados verificados",
"This address doesn't exist": "Este endereço não existe",
"You must delete the claim id %d first": "Você deve excluir primeiro a reclamação %d",
"You don't have enough privileges": "Você não tem privilégios suficientes",
"Cannot check Equalization Tax in this NIF/CIF": "Não é possível verificar o Imposto de Equalização neste NIF/CIF",
"You can't make changes on the basic data of an confirmed order or with rows": "Você não pode fazer alterações nos dados básicos de um pedido confirmado ou com linhas",
"INVALID_USER_NAME": "Le nom d'utilisateur ne doit contenir que des lettres minuscules ou, à partir du deuxième caractère, des chiffres ou des tirets bas, l'utilisation de la lettre ñ n'est pas autorisée",
"You can't create a ticket for a frozen client": "Vous ne pouvez pas créer un ticket pour un client gelé",
"You can't create a ticket for an inactive client": "Vous ne pouvez pas créer un ticket pour un client inactif",
"Tag value cannot be blank": "La valeur du tag ne peut pas être vide",
"ORDER_EMPTY": "Panier vide",
"You don't have enough privileges to do that": "Vous n'avez pas les privilèges nécessaires pour faire cela",
"NO SE PUEDE DESACTIVAR EL CONSIGNAT": "LE CONSIGNATAIRE NE PEUT PAS ÊTRE DÉSACTIVÉ",
"Error. El NIF/CIF está repetido": "Erreur. Le NIF/CIF est répété",
"Street cannot be empty": "L'adresse ne peut pas être vide",
"City cannot be empty": "La ville ne peut pas être vide",
"Code cannot be blank": "Le code ne peut pas être vide",
"You cannot remove this department": "Vous ne pouvez pas supprimer ce département",
"The extension must be unique": "L'extension doit être unique",
"The secret can't be blank": "Le mot de passe ne peut pas être vide",
"We weren't able to send this SMS": "Nous n'avons pas pu envoyer ce SMS",
"This client can't be invoiced": "Ce client ne peut pas être facturé",
"You must provide the correction information to generate a corrective invoice": "Vous devez fournir les informations de correction pour générer une facture corrective",
"This ticket can't be invoiced": "Ce ticket ne peut pas être facturé",
"You cannot add or modify services to an invoiced ticket": "Vous ne pouvez pas ajouter ou modifier des services à un ticket facturé",
"This ticket can not be modified": "Ce ticket ne peut pas être modifié",
"The introduced hour already exists": "Cette heure a déjà été introduite",
"INFINITE_LOOP": "Il existe une dépendance entre deux chefs",
"The sales of the receiver ticket can't be modified": "Les lignes du ticket auquel vous envoyez ne peuvent pas être modifiées",
"NO_AGENCY_AVAILABLE": "Il n'y a pas de zone de livraison disponible avec ces paramètres",
"ERROR_PAST_SHIPMENT": "Vous ne pouvez pas sélectionner une date d'envoi dans le passé",
"The current ticket can't be modified": "Le ticket actuel ne peut pas être modifié",
"The current claim can't be modified": "La réclamation actuelle ne peut pas être modifiée",
"The sales of this ticket can't be modified": "Les lignes de ce ticket ne peuvent pas être modifiées",
"The sales do not exists": "Les lignes sélectionnées n'existent pas",
"Please select at least one sale": "Veuillez sélectionner au moins une ligne",
"All sales must belong to the same ticket": "Toutes les lignes doivent appartenir au même ticket",
"NO_ZONE_FOR_THIS_PARAMETERS": "Il n'y a pas de zone configurée pour ce jour",
"This item doesn't exists": "Cet article n'existe pas",
"NOT_ZONE_WITH_THIS_PARAMETERS": "Il n'y a pas de zone configurée pour ce jour",
"Extension format is invalid": "Le format de l'extension est invalide",
"Invalid parameters to create a new ticket": "Paramètres invalides pour créer un nouveau ticket",
"This item is not available": "Cet article n'est pas disponible",
"This postcode already exists": "Ce code postal existe déjà",
"Concept cannot be blank": "Le concept ne peut pas être vide",
"File doesn't exists": "Le fichier n'existe pas",
"You don't have privileges to change the zone": "Vous n'avez pas les privilèges pour changer la zone ou pour ces paramètres, il y a plus d'une option de livraison, parlez avec les agences",
"This ticket is already on weekly tickets": "Ce ticket est déjà sur les tickets hebdomadaires",
"Ticket id cannot be blank": "L'id du ticket ne peut pas être vide",
"Weekday cannot be blank": "Le jour de la semaine ne peut pas être vide",
"You can't delete a confirmed order": "Vous ne pouvez pas supprimer une commande confirmée",
"The social name has an invalid format": "Le nom fiscal a un format incorrect",
"Invalid quantity": "Quantité invalide",
"This postal code is not valid": "Ce code postal n'est pas valide",
"is invalid": "est invalide",
"The postcode doesn't exist. Please enter a correct one": "Le code postal n'existe pas. Veuillez entrer un code correct",
"The department name can't be repeated": "Le nom du département ne peut pas être répété",
"This phone already exists": "Ce téléphone existe déjà",
"You cannot move a parent to its own sons": "Vous ne pouvez pas déplacer un élément parent à un de ses fils",
"You can't create a claim for a removed ticket": "Vous ne pouvez pas créer une réclamation pour un ticket supprimé",
"You cannot delete a ticket that part of it is being prepared": "Vous ne pouvez pas supprimer un ticket dont une partie est en préparation",
"You must delete all the buy requests first": "Vous devez supprimer toutes les demandes d'achat en premier",
"You should specify a date": "Vous devez spécifier une date",
"You should specify at least a start or end date": "Vous devez spécifier au moins une date de début ou de fin",
"Start date should be lower than end date": "La date de début doit être inférieure à la date de fin",
"You should mark at least one week day": "Vous devez marquer au moins un jour de la semaine",
"Swift / BIC can't be empty": "Swift / BIC ne peut pas être vide",
"Customs agent is required for a non UEE member": "Un agent des douanes est requis pour les clients non membres de l'UEE",
"Incoterms is required for a non UEE member": "Les incoterms sont requis pour les clients non membres de l'UEE",
"Deleted sales from ticket": "J'ai supprimé les lignes suivantes du ticket [{{ticketId}}]({{{ticketUrl}}}): {{{deletions}}}",
"Added sale to ticket": "J'ai ajouté la ligne suivante au ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}",
"Changed sale discount": "J'ai changé le rabais des lignes suivantes du ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Created claim": "J'ai créé la réclamation [{{claimId}}]({{{claimUrl}}}) des lignes suivantes du ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Changed sale price": "J'ai changé le prix de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* du ticket [{{ticketId}}]({{{ticketUrl}}})",
"Changed sale quantity": "J'ai changé la quantité de {{itemId}} {{concept}} de {{oldQuantity}} ➔ {{newQuantity}} du ticket [{{ticketId}}]({{{ticketUrl}}})",
"State": "État",
"regular": "normal",
"reserved": "réservé",
"Changed sale reserved state": "J'ai changé l'état réservé des lignes suivantes du ticket[{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Bought units from buy request": "{{quantity}} unités ont été achetées de [{{itemId}} {{concept}}]({{{urlItem}}}) pour le ticket id [{{ticketId}}]({{{url}}})",
"Deny buy request": "La demande d'achat pour le ticket id {{ticketId}} a été rejetée. Raison : {{observation}}",
"MESSAGE_INSURANCE_CHANGE": "J'ai changé le crédit assuré du client [{{clientName}} ({{clientId}})]({{{url}}}) a *{{credit}} €*",
"Changed client paymethod": "J'ai changé la méthode de paiement du client [{{clientName}} ({{clientId}})]({{{url}}})",
"Sent units from ticket": "Envoi *{{quantity}}* unités de [{{concept}} ({{itemId}})]({{{itemUrl}}}) a *\"{{nickname}}\"* provenant du ticket id [{{ticketId}}]({{{ticketUrl}}})",
"Change quantity": "{{concept}} change de {{oldQuantity}} à {{newQuantity}}",
"Claim will be picked": "Le produit de la réclamation [({{claimId}})]({{{claimUrl}}}) du client *{{clientName}}*, avec le type de ramassage *{{claimPickup}}* sera récupéré",
"Claim state has changed to": "L'état de la réclamation [({{claimId}})]({{{claimUrl}}}) du client *{{clientName}}* a été changé à *{{newState}}*",
"Client checked as validated despite of duplication": "Le client a été vérifié malgré l'existence du client id {{clientId}}",
"ORDER_ROW_UNAVAILABLE": "Il n'y a pas de disponibilité pour ce produit",
"Distance must be lesser than 4000": "La distance doit être inférieure à 4000",
"This ticket is deleted": "Ce ticket est supprimé",
"Unable to clone this travel": "Il n'a pas été possible de cloner ce voyage",
"This thermograph id already exists": "L'id du thermographe existe déjà",
"Choose a date range or days forward": "Sélectionnez une plage de dates ou des jours à venir",
"ORDER_ALREADY_CONFIRMED": "COMMANDE DÉJÀ CONFIRMÉE",
"Invalid password": "Mot de passe invalide",
"Password does not meet requirements": "Le mot de passe ne répond pas aux exigences",
"Role already assigned": "Rôle déjà attribué",
"Invalid role name": "Nom de rôle invalide",
"Role name must be written in camelCase": "Le nom du rôle doit être écrit en camelCase",
"Email already exists": "L'email existe déjà",
"User already exists": "L'utilisateur existe déjà",
"Absence change notification on the labour calendar": "Notification de changement d'absence sur le calendrier de travail",
"Record of hours week": "Enregistrement des heures semaine {{week}} année {{year}}",
"Created absence": "L'employé <strong>{{author}}</strong> a ajouté une absence de type '{{absenceType}}' à <a href='{{{workerUrl}}}'> <strong>{{employee}}</strong></a> pour le jour {{dated}}.",
"Deleted absence": "L'employé <strong>{{author}}</strong> a supprimé une absence de type '{{absenceType}}' à <a href='{{{workerUrl}}}'> <strong>{{employee}}</strong></a> du jour {{dated}}.",
"I have deleted the ticket id": "J'ai supprimé le ticket id [{{id}}]({{{url}}})",
"I have restored the ticket id": "J'ai restauré le ticket id [{{id}}]({{{url}}})",
"You can only restore a ticket within the first hour after deletion": "Vous pouvez uniquement restaurer un ticket dans la première heure après sa suppression",
"Changed this data from the ticket": "J'ai modifié ces données du ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"agencyModeFk": "Agence",
"clientFk": "Client",
"zoneFk": "Zone",
"warehouseFk": "Entrepôt",
"shipped": "Date d'envoi",
"landed": "Date de livraison",
"addressFk": "Consignataire",
"companyFk": "Entreprise",
"agency": "Agence",
"delivery": "Livraison",
"The social name cannot be empty": "La raison sociale ne peut pas être vide",
"The nif cannot be empty": "Le NIF ne peut pas être vide",
"You need to fill sage information before you check verified data": "Vous devez remplir les informations de sage avant de vérifier les données",
"ASSIGN_ZONE_FIRST": "Assignez une zone d'abord",
"Amount cannot be zero": "Le montant ne peut pas être zéro",
"Company has to be official": "L'entreprise doit être officielle",
"You can not select this payment method without a registered bankery account": "Vous ne pouvez pas utiliser cette méthode de paiement sans avoir enregistré un compte bancaire",
"Action not allowed on the test environment": "Cette action n'est pas autorisée dans l'environnement de test",
"The selected ticket is not suitable for this route": "Le ticket sélectionné n'est pas adapté à cet itinéraire",
"New ticket request has been created with price": "Une nouvelle demande de ticket '{{description}}' a été créée pour le jour {{shipped}}, avec une quantité de {{quantity}} et un prix de {{price}} €",
"New ticket request has been created": "Une nouvelle demande de ticket '{{description}}' a été créée pour le jour {{shipped}}, avec une quantité de {{quantity}}",
"Swift / BIC cannot be empty": "Swift / BIC ne peut pas être vide",
"This BIC already exist.": "Ce BIC existe déjà.",
"That item doesn't exists": "Cet article n'existe pas",
"There's a new urgent ticket:": "Il y a un nouveau ticket urgent :",
"Invalid account": "Compte invalide",
"Compensation account is empty": "Le compte de compensation est vide",
"This genus already exist": "Ce genre existe déjà",
"This specie already exist": "Cette espèce existe déjà",
"Client assignment has changed": "J'ai changé le commercial ~*\"<{{previousWorkerName}}>\"*~ pour *\"<{{currentWorkerName}}>\"* du client [{{clientName}} ({{clientId}})]({{{url}}})",
"None": "Aucun",
"The contract was not active during the selected date": "Le contrat n'était pas actif pendant la date sélectionnée",
"Cannot add more than one '1/2 day vacation'": "Vous ne pouvez pas ajouter plus d'un 'Vacances 1/2 jour'",
"This document already exists on this ticket": "Ce document existe déjà dans ce ticket",
"Some of the selected tickets are not billable": "Certains des tickets sélectionnés ne sont pas facturables",
"You can't invoice tickets from multiple clients": "Vous ne pouvez pas facturer des tickets de plusieurs clients",
"nickname": "surnom",
"INACTIVE_PROVIDER": "Fournisseur inactif",
"This client is not invoiceable": "Ce client n'est pas facturable",
"serial non editable": "Cette série ne permet pas d'assigner la référence",
"Max shipped required": "La date limite est requise",
"Can't invoice to future": "Vous ne pouvez pas facturer pour l'avenir",
"Can't invoice to past": "Vous ne pouvez pas facturer pour le passé",
"This ticket is already invoiced": "Ce ticket est déjà facturé",
"A ticket with an amount of zero can't be invoiced": "Un ticket avec un montant de zéro ne peut pas être facturé",
"A ticket with a negative base can't be invoiced": "Un ticket avec une base négative ne peut pas être facturé",
"Global invoicing failed": "[Facturation globale] Certains clients n'ont pas pu être facturés",
"Wasn't able to invoice the following clients": "Les clients suivants n'ont pas pu être facturés",
"Can't verify data unless the client has a business type": "Vous ne pouvez pas vérifier les données d'un client qui n'a pas de type d'entreprise",
"You don't have enough privileges to set this credit amount": "Vous n'avez pas suffisamment de privilèges pour établir ce montant de crédit",
"You can't change the credit set to zero from a financialBoss": "Vous ne pouvez pas modifier le crédit établi à zéro par un chef financier",
"Amounts do not match": "Les montants ne correspondent pas",
"The PDF document does not exist": "Le document PDF n'existe pas. Essayez de le régénérer depuis l'option 'Regénérer PDF facture'",
"The type of business must be filled in basic data": "Le type d'entreprise doit être rempli dans les données de base",
"You can't create a claim from a ticket delivered more than seven days ago": "Vous ne pouvez pas créer une réclamation pour un ticket livré il y a plus de sept jours",
"The worker has hours recorded that day": "Le travailleur a des heures enregistrées ce jour-là",
"The worker has a marked absence that day": "Le travailleur a une absence marquée ce jour-là",
"You can not modify is pay method checked": "Vous ne pouvez pas modifier le champ méthode de paiement validé",
"The account size must be exactly 10 characters": "La taille du compte doit être exactement de 10 caractères",
"Can't transfer claimed sales": "Vous ne pouvez pas transférer des lignes réclamées",
"You don't have privileges to create refund": "Vous n'avez pas les privilèges pour créer un abonnement",
"The item is required": "L'article est requis",
"The agency is already assigned to another autonomous": "L'agence est déjà assignée à un autre autonome",
"date in the future": "Date dans le futur",
"reference duplicated": "Référence dupliquée",
"This ticket is already a refund": "Ce ticket est déjà un abonnement",
"isWithoutNegatives": "Sans négatifs",
"routeFk": "routeFk",
"Can't change the password of another worker": "Vous ne pouvez pas changer le mot de passe d'un autre travailleur",
"No hay un contrato en vigor": "Il n'y a pas de contrat en vigueur",
"No se permite fichar a futuro": "Il n'est pas permis de pointer pour l'avenir",
"No está permitido trabajar": "Il n'est pas permis de travailler",
"Fichadas impares": "Pointages impairs",
"Descanso diario 12h.": "Repos quotidien de 12h.",
"Descanso semanal 36h. / 72h.": "Repos hebdomadaire de 36h / 72h.",
"Dirección incorrecta": "Adresse incorrecte",
"Modifiable user details only by an administrator": "Détails de l'utilisateur modifiables uniquement par un administrateur",
"Modifiable password only via recovery or by an administrator": "Mot de passe modifiable uniquement via la récupération ou par un administrateur",
"Not enough privileges to edit a client": "Vous n'avez pas suffisamment de privilèges pour éditer un client",
"This route does not exists": "Cette route n'existe pas",
"Claim pickup order sent": "Ordre de ramassage de la réclamation envoyé [{{claimId}}]({{{claimUrl}}}) au client *{{clientName}}*",
"You don't have grant privilege": "Vous n'avez pas le privilège de donner des privilèges",
"You don't own the role and you can't assign it to another user": "Vous n'êtes pas le propriétaire du rôle et vous ne pouvez pas l'assigner à un autre utilisateur",
"Ticket merged": "Ticket [{{originId}}]({{{originFullPath}}}) ({{{originDated}}}) fusionné avec [{{destinationId}}]({{{destinationFullPath}}}) ({{{destinationDated}}})",
"Already has this status": "A déjà cet état",
"There aren't records for this week": "Il n'y a pas d'enregistrements pour cette semaine",
"Empty data source": "Source de données vide",
"App locked": "Application verrouillée par l'utilisateur {{userId}}",
"Email verify": "Vérification de courriel",
"Landing cannot be lesser than shipment": "L'arrivée ne peut pas être inférieure à l'expédition",
"Receipt's bank was not found": "La banque du reçu n'a pas été trouvée",
"This receipt was not compensated": "Ce reçu n'a pas été compensé",
"Client's email was not found": "L'email du client n'a pas été trouvé",
"Negative basis": "Base négative",
"This worker code already exists": "Ce code de travailleur existe déjà",
"This personal mail already exists": "Ce courriel personnel existe déjà",
"This worker already exists": "Ce travailleur existe déjà",
"App name does not exist": "Le nom de l'application n'est pas valide",
"Try again": "Réessayez",
"Aplicación bloqueada por el usuario 9": "Application bloquée par l'utilisateur 9",
"Failed to upload delivery note": "Échec du téléchargement du bon de livraison {{id}}",
"The DOCUWARE PDF document does not exists": "Le document PDF Docuware n'existe pas",
"It is not possible to modify tracked sales": "Il n'est pas possible de modifier des lignes de commande qui ont commencé à être préparées",
"It is not possible to modify sales that their articles are from Floramondo": "Il n'est pas possible de modifier des lignes de commande dont les articles proviennent de Floramondo",
"It is not possible to modify cloned sales": "Il n'est pas possible de modifier des lignes de commande clonées",
"A supplier with the same name already exists. Change the country.": "Un fournisseur avec le même nom existe déjà. Changez le pays.",
"There is no assigned email for this client": "Il n'y a pas d'email assigné pour ce client",
"Exists an invoice with a future date": "Il existe une facture avec une date future",
"Invoice date can't be less than max date": "La date de la facture ne peut pas être inférieure à la date limite",
"Warehouse inventory not set": "L'inventaire de l'entrepôt n'est pas établi",
"This locker has already been assigned": "Ce casier a déjà été assigné",
"Tickets with associated refunds": "Vous ne pouvez pas supprimer des tickets avec des remboursements associés. Ce ticket est associé au remboursement Nº %d",
"Not exist this branch": "La branche n'existe pas",
"This ticket cannot be signed because it has not been boxed": "Ce ticket ne peut pas être signé car il n'a pas été emballé",
"Collection does not exist": "La collection n'existe pas",
"Cannot obtain exclusive lock": "Impossible d'obtenir un verrou exclusif",
"Insert a date range": "Insérez une plage de dates",
"Added observation": "{{user}} a ajouté cette observation : {{text}}",
"Comment added to client": "Observation ajoutée au client {{clientFk}}",
"Invalid auth code": "Code de vérification incorrect",
"Invalid or expired verification code": "Code de vérification incorrect ou expiré",
"Cannot create a new claimBeginning from a different ticket": "Vous ne pouvez pas créer une ligne de réclamation d'un ticket différent de l'origine",
"company": "Compagnie",
"country": "Pays",
"clientId": "Id client",
"clientSocialName": "Client",
"amount": "Montant",
"taxableBase": "Base",
"ticketFk": "Id ticket",
"isActive": "Actif",
"hasToInvoice": "Facturer",
"isTaxDataChecked": "Données vérifiées",
"comercialId": "Id commercial",
"comercialName": "Commercial",
"Pass expired": "Le mot de passe a expiré, changez-le depuis Salix",
"Invalid NIF for VIES": "NIF invalide pour VIES",
"Ticket does not exist": "Ce ticket n'existe pas",
"Ticket is already signed": "Ce ticket a déjà été signé",
"Authentication failed": "Échec de l'authentification",
"You can't use the same password": "Vous ne pouvez pas utiliser le même mot de passe",
"You can only add negative amounts in refund tickets": "Vous ne pouvez ajouter que des montants négatifs dans les tickets de remboursement",
"Fecha fuera de rango": "Date hors plage",
"Error while generating PDF": "Erreur lors de la génération du PDF",
"Error when sending mail to client": "Erreur lors de l'envoi du courrier au client",
"Mail not sent": "Une erreur est survenue lors de l'envoi de la facture au client [{{clientId}}]({{{clientUrl}}}), veuillez vérifier l'adresse électronique",
"The renew period has not been exceeded": "La période de renouvellement n'a pas été dépassée",
"Valid priorities": "Priorités valides : %d",
"hasAnyNegativeBase": "Base négative pour les tickets : {{ticketsIds}}",
"hasAnyPositiveBase": "Base positives pour les tickets : {{ticketsIds}}",
"You cannot assign an alias that you are not assigned to": "Vous ne pouvez pas attribuer un alias que vous n'avez pas reçu",
"This ticket cannot be left empty.": "Ce ticket ne peut pas être laissé vide. %s",
"The company has not informed the supplier account for bank transfers": "L'entreprise n'a pas informé le compte du fournisseur pour les transferts bancaires",
"You cannot assign/remove an alias that you are not assigned to": "Vous ne pouvez pas attribuer/supprimer un alias que vous n'avez pas reçu",
"This invoice has a linked vehicle.": "Cette facture a un véhicule lié",
"You don't have enough privileges.": "Vous n'avez pas suffisamment de privilèges.",
"This ticket is locked": "Ce ticket est bloqué.",
"This ticket is not editable.": "Ce ticket n'est pas modifiable.",
"The ticket doesn't exist.": "Le ticket n'existe pas.",
"Social name should be uppercase": "La raison sociale doit être en majuscules",
"Street should be uppercase": "L'adresse fiscale doit être en majuscules",
"Ticket without Route": "Ticket sans itinéraire",
"Select a different client": "Sélectionnez un client différent",
"Fill all the fields": "Remplissez tous les champs",
"The response is not a PDF": "La réponse n'est pas un PDF",
"Booking completed": "Réservation terminée",
"The ticket is in preparation": "Le ticket [{{ticketId}}]({{{ticketUrl}}}) du commercial {{salesPersonId}} est en préparation",
"The notification subscription of this worker cant be modified": "L'abonnement à la notification de ce travailleur ne peut pas être modifié",
"User disabled": "Utilisateur désactivé",
"The amount cannot be less than the minimum": "La quantité ne peut pas être inférieure à la quantité minimale",
"quantityLessThanMin": "La quantité ne peut pas être inférieure à la quantité minimale",
"Cannot past travels with entries": "Vous ne pouvez pas passer des envois avec des entrées",
"It was not able to remove the next expeditions:": "Il n'a pas été possible de supprimer les expéditions suivantes : {{expeditions}}",
"This claim has been updated": "La réclamation avec l'Id : {{claimId}}, a été mise à jour",
"This user does not have an assigned tablet": "Cet utilisateur n'a pas de tablette assignée",
"Field are invalid": "Le champ '{{tag}}' n'est pas valide",
"Incorrect pin": "Pin incorrect.",
"You already have the mailAlias": "Vous avez déjà cet alias de courrier",
"The alias cant be modified": "Cet alias de courrier ne peut pas être modifié",
"No tickets to invoice": "Pas de tickets à facturer",
"this warehouse has not dms": "L'entrepôt n'accepte pas les documents",
"This ticket already has a cmr saved": "Ce ticket a déjà un cmr enregistré",
"Name should be uppercase": "Le nom doit être en majuscules",
"Bank entity must be specified": "L'entité bancaire doit être spécifiée",
"An email is necessary": "Un email est nécessaire",
"You cannot update these fields": "Vous ne pouvez pas mettre à jour ces champs",
"CountryFK cannot be empty": "Le pays ne peut pas être vide",
"Cmr file does not exist": "Le fichier cmr n'existe pas",
"You are not allowed to modify the alias": "Vous n'êtes pas autorisé à modifier l'alias",
"The address of the customer must have information about Incoterms and Customs Agent": "L'adresse du client doit contenir des informations sur les Incoterms et l'agent des douanes",
"The line could not be marked": "La ligne ne peut pas être marquée",
"This password can only be changed by the user themselves": "Ce mot de passe ne peut être modifié que par l'utilisateur lui-même",
"They're not your subordinate": "Ce n'est pas votre subordonné.",
"No results found": "Aucun résultat trouvé",
"InvoiceIn is already booked": "La facture reçue est déjà comptabilisée",
"This workCenter is already assigned to this agency": "Ce centre de travail est déjà assigné à cette agence",
"Select ticket or client": "Choisissez un ticket ou un client",
"It was not able to create the invoice": "Il n'a pas été possible de créer la facture"
}

360
loopback/locale/pt.json Normal file
View File

@ -0,0 +1,360 @@
{
"Phone format is invalid": "O formato do telefone não é válido",
"You are not allowed to change the credit": "Você não tem permissão para alterar o crédito",
"Unable to mark the equivalence surcharge": "Não é possível marcar a sobretaxa de equivalência",
"The default consignee can not be unchecked": "Não é possível desmarcar o destinatário padrão",
"Unable to default a disabled consignee": "Não é possível definir como padrão um destinatário desativado",
"Can't be blank": "Não pode estar em branco",
"Invalid TIN": "NIF/CIF inválido",
"TIN must be unique": "O NIF/CIF deve ser único",
"A client with that Web User name already exists": "Já existe um cliente com esse nome de usuário da web",
"Is invalid": "É inválido",
"Quantity cannot be zero": "A quantidade não pode ser zero",
"Enter an integer different to zero": "Digite um inteiro diferente de zero",
"Package cannot be blank": "A embalagem não pode estar em branco",
"The company name must be unique": "O nome da empresa deve ser único",
"Invalid email": "Email inválido",
"The IBAN does not have the correct format": "O IBAN não tem o formato correto",
"That payment method requires an IBAN": "Esse método de pagamento requer um IBAN",
"That payment method requires a BIC": "Esse método de pagamento requer um BIC",
"State cannot be blank": "O estado não pode estar em branco",
"Worker cannot be blank": "O trabalhador não pode estar em branco",
"Cannot change the payment method if no salesperson": "Não é possível alterar o método de pagamento se não houver vendedor",
"can't be blank": "não pode estar em branco",
"Observation type must be unique": "O tipo de observação deve ser único",
"The credit must be an integer greater than or equal to zero": "O crédito deve ser um número inteiro maior ou igual a zero",
"The grade must be similar to the last one": "A nota deve ser semelhante à última",
"Only manager can change the credit": "Apenas o gerente pode alterar o crédito deste cliente",
"Name cannot be blank": "O nome não pode estar em branco",
"Phone cannot be blank": "O telefone não pode estar em branco",
"Period cannot be blank": "O período não pode estar em branco",
"Choose a company": "Escolha uma empresa",
"Se debe rellenar el campo de texto": "Você deve preencher o campo de texto",
"Description should have maximum of 45 characters": "A descrição deve ter no máximo 45 caracteres",
"Cannot be blank": "Não pode estar em branco",
"The grade must be an integer greater than or equal to zero": "A nota deve ser um número inteiro maior ou igual a zero",
"Sample type cannot be blank": "O tipo de amostra não pode estar em branco",
"Description cannot be blank": "A descrição não pode estar em branco",
"The price of the item changed": "O preço do item mudou",
"The value should not be greater than 100%": "O valor não deve ser maior que 100%",
"The value should be a number": "O valor deve ser um número",
"This order is not editable": "Esta ordem não é editável",
"You can't create an order for a frozen client": "Você não pode criar um pedido para um cliente congelado",
"You can't create an order for a client that has a debt": "Você não pode criar um pedido para um cliente com dívida",
"is not a valid date": "não é uma data válida",
"Barcode must be unique": "O código de barras deve ser único",
"The warehouse can't be repeated": "O armazém não pode ser repetido",
"The tag or priority can't be repeated for an item": "A tag ou prioridade não pode ser repetida para um item",
"The observation type can't be repeated": "O tipo de observação não pode ser repetido",
"A claim with that sale already exists": "Já existe uma reclamação com essa venda",
"You don't have enough privileges to change that field": "Você não tem privilégios suficientes para alterar esse campo",
"Warehouse cannot be blank": "O armazém não pode estar em branco",
"Agency cannot be blank": "A agência não pode estar em branco",
"Not enough privileges to edit a client with verified data": "Não há privilégios suficientes para editar um cliente com dados verificados",
"This address doesn't exist": "Este endereço não existe",
"You must delete the claim id %d first": "Você deve excluir a reclamação %d primeiro",
"You don't have enough privileges": "Você não tem privilégios suficientes",
"Cannot check Equalization Tax in this NIF/CIF": "Não é possível verificar o Imposto de Equalização neste NIF/CIF",
"You can't make changes on the basic data of an confirmed order or with rows": "Você não pode fazer alterações nos dados básicos de um pedido confirmado ou com linhas",
"INVALID_USER_NAME": "O nome de usuário só pode conter letras minúsculas ou, a partir do segundo caractere, números ou sublinhados, o uso da letra ñ não é permitido",
"You can't create a ticket for a frozen client": "Você não pode criar um ticket para um cliente congelado",
"You can't create a ticket for an inactive client": "Você não pode criar um ticket para um cliente inativo",
"Tag value cannot be blank": "O valor da tag não pode estar em branco",
"ORDER_EMPTY": "Cesta vazia",
"You don't have enough privileges to do that": "Você não tem privilégios suficientes para fazer isso",
"NO SE PUEDE DESACTIVAR EL CONSIGNAT": "NÃO É POSSÍVEL DESATIVAR O CONSIGNATÁRIO",
"Error. El NIF/CIF está repetido": "Erro. O NIF/CIF está repetido",
"Street cannot be empty": "A rua não pode estar vazia",
"City cannot be empty": "A cidade não pode estar vazia",
"Code cannot be blank": "O código não pode estar em branco",
"You cannot remove this department": "Você não pode remover este departamento",
"The extension must be unique": "A extensão deve ser única",
"The secret can't be blank": "O segredo não pode estar em branco",
"We weren't able to send this SMS": "Não conseguimos enviar este SMS",
"This client can't be invoiced": "Este cliente não pode ser faturado",
"You must provide the correction information to generate a corrective invoice": "Você deve fornecer as informações de correção para gerar uma fatura corretiva",
"This ticket can't be invoiced": "Este ticket não pode ser faturado",
"You cannot add or modify services to an invoiced ticket": "Você não pode adicionar ou modificar serviços a um ticket faturado",
"This ticket can not be modified": "Este ticket não pode ser modificado",
"The introduced hour already exists": "A hora introduzida já existe",
"INFINITE_LOOP": "Loop infinito",
"The sales of the receiver ticket can't be modified": "As vendas do ticket receptor não podem ser modificadas",
"NO_AGENCY_AVAILABLE": "Nenhuma agência disponível",
"ERROR_PAST_SHIPMENT": "Erro. Data de envio no passado",
"The current ticket can't be modified": "O ticket atual não pode ser modificado",
"The current claim can't be modified": "A reclamação atual não pode ser modificada",
"The sales of this ticket can't be modified": "As vendas deste ticket não podem ser modificadas",
"The sales do not exists": "As vendas não existem",
"Please select at least one sale": "Por favor, selecione pelo menos uma venda",
"All sales must belong to the same ticket": "Todas as vendas devem pertencer ao mesmo ticket",
"NO_ZONE_FOR_THIS_PARAMETERS": "Nenhuma zona para estes parâmetros",
"This item doesn't exists": "Este item não existe",
"NOT_ZONE_WITH_THIS_PARAMETERS": "Nenhuma zona para estes parâmetros",
"Extension format is invalid": "O formato da extensão é inválido",
"Invalid parameters to create a new ticket": "Parâmetros inválidos para criar um novo ticket",
"This item is not available": "Este item não está disponível",
"This postcode already exists": "Este código postal já existe",
"Concept cannot be blank": "O conceito não pode estar em branco",
"File doesn't exists": "O arquivo não existe",
"You don't have privileges to change the zone": "Você não tem privilégios para alterar a zona",
"This ticket is already on weekly tickets": "Este ticket já está em tickets semanais",
"Ticket id cannot be blank": "O id do ticket não pode ficar em branco",
"Weekday cannot be blank": "O dia da semana não pode ficar em branco",
"You can't delete a confirmed order": "Você não pode excluir um pedido confirmado",
"The social name has an invalid format": "O nome social tem um formato inválido",
"Invalid quantity": "Quantidade inválida",
"This postal code is not valid": "Este código postal não é válido",
"is invalid": "é inválido",
"The postcode doesn't exist. Please enter a correct one": "O código postal não existe. Por favor, insira um correto",
"The department name can't be repeated": "O nome do departamento não pode ser repetido",
"This phone already exists": "Este telefone já existe",
"You cannot move a parent to its own sons": "Você não pode mover um pai para seus próprios filhos",
"You can't create a claim for a removed ticket": "Você não pode criar uma reclamação para um ticket removido",
"You cannot delete a ticket that part of it is being prepared": "Você não pode excluir um ticket que parte dele está sendo preparada",
"You must delete all the buy requests first": "Você deve excluir todas as solicitações de compra primeiro",
"You should specify a date": "Você deve especificar uma data",
"You should specify at least a start or end date": "Você deve especificar pelo menos uma data de início ou fim",
"Start date should be lower than end date": "A data de início deve ser anterior à data de término",
"You should mark at least one week day": "Você deve marcar pelo menos um dia da semana",
"Swift / BIC can't be empty": "Swift / BIC não pode ficar vazio",
"Customs agent is required for a non UEE member": "O agente alfandegário é necessário para um cliente não UEE",
"Incoterms is required for a non UEE member": "Incoterms são necessários para um cliente não UEE",
"Deleted sales from ticket": "Vendas excluídas do ticket [{{ticketId}}]({{{ticketUrl}}}): {{{deletions}}}",
"Added sale to ticket": "Venda adicionada ao ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}",
"Changed sale discount": "Desconto da venda alterado no ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Created claim": "Reclamação criada [{{claimId}}]({{{claimUrl}}}) no ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Changed sale price": "Preço da venda alterado para [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* no ticket [{{ticketId}}]({{{ticketUrl}}})",
"Changed sale quantity": "Quantidade da venda alterada para [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}* no ticket [{{ticketId}}]({{{ticketUrl}}})",
"State": "Estado",
"regular": "normal",
"reserved": "reservado",
"Changed sale reserved state": "Estado de reserva da venda alterado no ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Bought units from buy request": "Unidades compradas da solicitação de compra [{{itemId}} {{concept}}]({{{urlItem}}}) para o ticket id [{{ticketId}}]({{{url}}})",
"Deny buy request": "Solicitação de compra negada para o ticket id [{{ticketId}}]({{{url}}}). Motivo: {{observation}}",
"MESSAGE_INSURANCE_CHANGE": "Crédito segurado do cliente [{{clientName}} ({{clientId}})]({{{url}}}) alterado para *{{credit}} €*",
"Changed client paymethod": "Forma de pagamento do cliente [{{clientName}} ({{clientId}}) alterada",
"Sent units from ticket": "*{{quantity}}* Unidades enviadas de [{{concept}} ({{itemId}})]({{{itemUrl}}}) a *\"{{nickname}}\"* provenientes del ticket id [{{ticketId}}]({{{ticketUrl}}})",
"Change quantity": "{{concept}} mudou de {{oldQuantity}} para {{newQuantity}}",
"Claim will be picked": "Reclamação será recolhida [({{claimId}})]({{{claimUrl}}}) do cliente *{{clientName}}*, com tipo de coleta *{{claimPickup}}*",
"Claim state has changed to": "Estado da reclamação alterado para {{newState}} ({{claimId}}) do cliente {{clientName}}",
"Client checked as validated despite of duplication": "Cliente verificado apesar da duplicação do id {{clientId}}",
"ORDER_ROW_UNAVAILABLE": "Esta linha de pedido não está disponível",
"Distance must be lesser than 4000": "A distância deve ser menor que 4000",
"This ticket is deleted": "Este ticket foi excluído",
"Unable to clone this travel": "Não foi possível clonar esta viagem",
"This thermograph id already exists": "Esta id de termógrafo já existe",
"Choose a date range or days forward": "Escolha um intervalo de datas ou dias adiante",
"ORDER_ALREADY_CONFIRMED": "PEDIDO JÁ CONFIRMADO",
"Invalid password": "Senha inválida",
"Password does not meet requirements": "Senha não atende aos requisitos",
"Role already assigned": "Função já atribuída",
"Invalid role name": "Nome da função inválido",
"Role name must be written in camelCase": "O nome da função deve ser escrito em camelCase",
"Email already exists": "O e-mail já existe",
"User already exists": "O usuário já existe",
"Absence change notification on the labour calendar": "Notificação de mudança de ausência no calendário trabalhista",
"Record of hours week": "Registro de horas semana {{week}} ano {{year}} ",
"Created absence": "O funcionário <strong>{{author}}</strong> adicionou uma ausência do tipo '{{absenceType}}' para <a href='{{{workerUrl}}}'><strong>{{employee}}</strong></a> no dia {{dated}}.",
"Deleted absence": "O funcionário <strong>{{author}}</strong> excluiu uma ausência do tipo '{{absenceType}}' de <a href='{{{workerUrl}}}'><strong>{{employee}}</strong></a> no dia {{dated}}.",
"I have deleted the ticket id": "Eu excluí o id do ticket [{{id}}]({{{url}}})",
"I have restored the ticket id": "Eu restaurei o id do ticket [{{id}}]({{{url}}})",
"You can only restore a ticket within the first hour after deletion": "Você só pode restaurar um ticket dentro da primeira hora após a exclusão",
"Changed this data from the ticket": "Estes dados do ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"agencyModeFk": "Agência",
"clientFk": "Cliente",
"zoneFk": "Zona",
"warehouseFk": "Armazém",
"shipped": "Enviado",
"landed": "Entregue",
"addressFk": "Destinatário",
"companyFk": "Empresa",
"agency": "Agência",
"delivery": "Entrega",
"The social name cannot be empty": "O nome social não pode estar vazio",
"The nif cannot be empty": "O NIF não pode estar vazio",
"You need to fill sage information before you check verified data": "Você precisa preencher as informações do sage antes de verificar os dados verificados",
"ASSIGN_ZONE_FIRST": "Atribua uma zona primeiro",
"Amount cannot be zero": "O valor não pode ser zero",
"Company has to be official": "A empresa deve ser oficial",
"You can not select this payment method without a registered bankery account": "Você não pode selecionar este método de pagamento sem uma conta bancária registrada",
"Action not allowed on the test environment": "Ação não permitida no ambiente de teste",
"The selected ticket is not suitable for this route": "O ticket selecionado não é adequado para esta rota",
"New ticket request has been created with price": "Nova solicitação de ticket criada para o dia {{shipped}}, com uma quantidade de {{quantity}} e um preço de {{price}} €",
"New ticket request has been created": "Nova solicitação de ticket criada para o dia {{shipped}}, com uma quantidade de {{quantity}}",
"Swift / BIC cannot be empty": "Swift / BIC não pode ficar vazio",
"This BIC already exist.": "Este BIC já existe.",
"That item doesn't exists": "Esse item não existe",
"There's a new urgent ticket:": "Há um novo ticket urgente:",
"Invalid account": "Conta inválida",
"Compensation account is empty": "A conta de compensação está vazia",
"This genus already exist": "Este gênero já existe",
"This specie already exist": "Esta espécie já existe",
"Client assignment has changed": "A atribuição do cliente foi alterada de ~*\"<{{previousWorkerName}}>\"*~ por *\"<{{currentWorkerName}}>\"* del cliente [{{clientName}} ({{clientId}})]({{{url}}})",
"None": "Nenhum",
"The contract was not active during the selected date": "O contrato não estava ativo durante a data selecionada",
"Cannot add more than one '1/2 day vacation'": "Não é possível adicionar mais de um 'meio dia de férias'",
"This document already exists on this ticket": "Este documento já existe neste ticket",
"Some of the selected tickets are not billable": "Alguns dos tickets selecionados não são faturáveis",
"You can't invoice tickets from multiple clients": "Você não pode faturar tickets de múltiplos clientes",
"nickname": "apelido",
"INACTIVE_PROVIDER": "Fornecedor inativo",
"This client is not invoiceable": "Este cliente não é faturável",
"serial non editable": "Este série não é editável",
"Max shipped required": "A data limite é requerida",
"Can't invoice to future": "Não é possível faturar para o futuro",
"Can't invoice to past": "Não é possível faturar para o passado",
"This ticket is already invoiced": "Este ticket já está faturado",
"A ticket with an amount of zero can't be invoiced": "Um ticket com um valor zero não pode ser faturado",
"A ticket with a negative base can't be invoiced": "Um ticket com uma base negativa não pode ser faturado",
"Global invoicing failed": "[Faturamento global] Não foi possível faturar alguns clientes",
"Wasn't able to invoice the following clients": "Não foi possível faturar os seguintes clientes",
"Can't verify data unless the client has a business type": "Não é possível verificar os dados a menos que o cliente tenha um tipo de negócio",
"You don't have enough privileges to set this credit amount": "Você não tem privilégios suficientes para definir este valor de crédito",
"You can't change the credit set to zero from a financialBoss": "Você não pode alterar o crédito definido como zero de um financeiro chefe",
"Amounts do not match": "Os valores não correspondem",
"The PDF document does not exist": "O documento PDF não existe. Tente regenerá-lo na opção 'Regenerar PDF da fatura'",
"The type of business must be filled in basic data": "O tipo de negócio deve ser preenchido nos dados básicos",
"You can't create a claim from a ticket delivered more than seven days ago": "Você não pode criar uma reclamação de um ticket entregue há mais de sete dias",
"The worker has hours recorded that day": "O trabalhador tem horas registradas nesse dia",
"The worker has a marked absence that day": "O trabalhador tem uma ausência marcada nesse dia",
"You can not modify is pay method checked": "Você não pode modificar o método de pagamento verificado",
"The account size must be exactly 10 characters": "O tamanho da conta deve ser exatamente de 10 caracteres",
"Can't transfer claimed sales": "Não é possível transferir vendas reclamadas",
"You don't have privileges to create refund": "Você não tem privilégios para criar um reembolso",
"The item is required": "O item é necessário",
"The agency is already assigned to another autonomous": "A agência já está atribuída a outro autônomo",
"date in the future": "Data no futuro",
"reference duplicated": "Referência duplicada",
"This ticket is already a refund": "Este ticket já é um reembolso",
"isWithoutNegatives": "Sem negativos",
"routeFk": "routeFk",
"Can't change the password of another worker": "Não é possível alterar a senha de outro trabalhador",
"No hay un contrato en vigor": "Não há um contrato em vigor",
"No se permite fichar a futuro": "Não é permitido marcar o ponto no futuro",
"No está permitido trabajar": "Não está permitido trabalhar",
"Fichadas impares": "Fichadas ímpares",
"Descanso diario 12h.": "Descanso diário 12h.",
"Descanso semanal 36h. / 72h.": "Descanso semanal 36h. / 72h.",
"Dirección incorrecta": "Endereço incorreto",
"Modifiable user details only by an administrator": "Detalhes do usuário modificáveis apenas por um administrador",
"Modifiable password only via recovery or by an administrator": "Senha modificável apenas via recuperação ou por um administrador",
"Not enough privileges to edit a client": "Não há privilégios suficientes para editar um cliente",
"This route does not exists": "Esta rota não existe",
"Claim pickup order sent": "Ordem de retirada de reclamação enviada [{{claimId}}]({{{claimUrl}}}) o cliente *{{clientName}}*",
"You don't have grant privilege": "Você não tem privilégio de concessão",
"You don't own the role and you can't assign it to another user": "Você não é proprietário do papel e não pode atribuí-lo a outro usuário",
"Ticket merged": "Ticket [{{originId}}]({{{originFullPath}}}) ({{{originDated}}}) mesclado com [{{destinationId}}]({{{destinationFullPath}}}) ({{{destinationDated}}})",
"Already has this status": "Já tem este status",
"There aren't records for this week": "Não há registros para esta semana",
"Empty data source": "Fonte de dados vazia",
"App locked": "Aplicativo bloqueado pelo usuário {{userId}}",
"Email verify": "Verificação de e-mail",
"Landing cannot be lesser than shipment": "O pouso não pode ser menor que o envio",
"Receipt's bank was not found": "Banco do recibo não encontrado",
"This receipt was not compensated": "Este recibo não foi compensado",
"Client's email was not found": "E-mail do cliente não encontrado",
"Negative basis": "Base negativa",
"This worker code already exists": "Este código de trabalhador já existe",
"This personal mail already exists": "Este e-mail pessoal já existe",
"This worker already exists": "Este trabalhador já existe",
"App name does not exist": "O nome do aplicativo não existe",
"Try again": "Tente novamente",
"Aplicación bloqueada por el usuario 9": "Aplicação bloqueada pelo usuário 9",
"Failed to upload delivery note": "Falha ao carregar nota de entrega {{id}}",
"The DOCUWARE PDF document does not exists": "O documento PDF DOCUWARE não existe",
"It is not possible to modify tracked sales": "Não é possível modificar vendas rastreadas",
"It is not possible to modify sales that their articles are from Floramondo": "Não é possível modificar vendas cujos artigos são da Floramondo",
"It is not possible to modify cloned sales": "Não é possível modificar vendas clonadas",
"A supplier with the same name already exists. Change the country.": "Já existe um fornecedor com o mesmo nome. Mude o país.",
"There is no assigned email for this client": "Não há e-mail atribuído para este cliente",
"Exists an invoice with a future date": "Existe uma fatura com data futura",
"Invoice date can't be less than max date": "A data da fatura não pode ser menor que a data máxima",
"Warehouse inventory not set": "Inventário do armazém não configurado",
"This locker has already been assigned": "Este armário já foi atribuído",
"Tickets with associated refunds": "Tickets com reembolsos associados",
"Not exist this branch": "Esta filial não existe",
"This ticket cannot be signed because it has not been boxed": "Este ticket não pode ser assinado porque não foi encaixotado",
"Collection does not exist": "Coleção não existe",
"Cannot obtain exclusive lock": "Não é possível obter um bloqueio exclusivo",
"Insert a date range": "Insira um intervalo de datas",
"Added observation": "{{user}} adicionou esta observação: {{text}}",
"Comment added to client": "Comentário adicionado ao cliente {{clientFk}}",
"Invalid auth code": "Código de autenticação inválido",
"Invalid or expired verification code": "Código de verificação inválido ou expirado",
"Cannot create a new claimBeginning from a different ticket": "Não é possível criar um novo reclamação a partir de um ticket diferente",
"company": "Empresa",
"country": "País",
"clientId": "Id do cliente",
"clientSocialName": "Cliente",
"amount": "Quantidade",
"taxableBase": "Base tributável",
"ticketFk": "Id do ticket",
"isActive": "Está ativo",
"hasToInvoice": "Tem que faturar",
"isTaxDataChecked": "Dados fiscais verificados",
"comercialId": "Id do comercial",
"comercialName": "Comercial",
"Pass expired": "A senha expirou, altere-a pelo Salix",
"Invalid NIF for VIES": "NIF inválido para VIES",
"Ticket does not exist": "Este ticket não existe",
"Ticket is already signed": "Este ticket já está assinado",
"Authentication failed": "Autenticação falhou",
"You can't use the same password": "Você não pode usar a mesma senha",
"You can only add negative amounts in refund tickets": "Você só pode adicionar quantidades negativas em tickets de reembolso",
"Fecha fuera de rango": "Data fora do intervalo",
"Error while generating PDF": "Erro ao gerar PDF",
"Error when sending mail to client": "Erro ao enviar e-mail para o cliente",
"Mail not sent": "E-mail não enviado cliente [{{clientId}}]({{{clientUrl}}})",
"The renew period has not been exceeded": "O período de renovação não foi excedido",
"Valid priorities": "Prioridades válidas",
"hasAnyNegativeBase": "Base negativa para os tickets",
"hasAnyPositiveBase": "Bases positivas para os tickets",
"You cannot assign an alias that you are not assigned to": "Você não pode atribuir um alias que não está atribuído a você",
"This ticket cannot be left empty.": "Este ticket não pode ficar vazio.",
"The company has not informed the supplier account for bank transfers": "A empresa não informou a conta do fornecedor para transferências bancárias",
"You cannot assign/remove an alias that you are not assigned to": "Você não pode atribuir/remover um alias que não está atribuído a você",
"This invoice has a linked vehicle.": "Esta fatura tem um veículo vinculado",
"You don't have enough privileges.": "Você não tem privilégios suficientes.",
"This ticket is locked": "Este ticket está bloqueado.",
"This ticket is not editable.": "Este ticket não é editável.",
"The ticket doesn't exist.": "O ticket não existe.",
"Social name should be uppercase": "O nome social deve estar em maiúsculas",
"Street should be uppercase": "A rua deve estar em maiúsculas",
"Ticket without Route": "Ticket sem rota",
"Select a different client": "Selecione um cliente diferente",
"Fill all the fields": "Preencha todos os campos",
"The response is not a PDF": "A resposta não é um PDF",
"Booking completed": "Reserva concluída",
"The ticket is in preparation": "O ticket está em preparação [{{ticketId}}]({{{ticketUrl}}}) comercial {{salesPersonId}}",
"The notification subscription of this worker cant be modified": "A inscrição de notificação deste trabalhador não pode ser modificada",
"User disabled": "Usuário desativado",
"The amount cannot be less than the minimum": "O valor não pode ser menor que o mínimo",
"quantityLessThanMin": "Quantidade menor que o mínimo",
"Cannot past travels with entries": "Não é possível passar viagens com entradas",
"It was not able to remove the next expeditions:": "Não foi possível remover as próximas expedições:",
"This claim has been updated": "Esta reclamação foi atualizada",
"This user does not have an assigned tablet": "Este usuário não tem um tablet atribuído",
"Field are invalid": "Campos inválidos",
"Incorrect pin": "PIN incorreto.",
"You already have the mailAlias": "Você já tem o alias de e-mail",
"The alias cant be modified": "O alias não pode ser modificado",
"No tickets to invoice": "Não há tickets para faturar",
"this warehouse has not dms": "Este armazém não tem DMS",
"This ticket already has a cmr saved": "Este ticket já tem um CMR salvo",
"Name should be uppercase": "O nome deve estar em maiúsculas",
"Bank entity must be specified": "A entidade bancária deve ser especificada",
"An email is necessary": "Um e-mail é necessário",
"You cannot update these fields": "Você não pode atualizar estes campos",
"CountryFK cannot be empty": "CountryFK não pode estar vazio",
"Cmr file does not exist": "O arquivo CMR não existe",
"You are not allowed to modify the alias": "Você não tem permissão para modificar o alias",
"The address of the customer must have information about Incoterms and Customs Agent": "O endereço do cliente deve ter informações sobre Incoterms e Agente Aduaneiro",
"The line could not be marked": "A linha não pôde ser marcada",
"This password can only be changed by the user themselves": "Esta senha só pode ser alterada pelo próprio usuário",
"They're not your subordinate": "Eles não são seus subordinados.",
"No results found": "Nenhum resultado encontrado",
"InvoiceIn is already booked": "InvoiceIn já está reservado",
"This workCenter is already assigned to this agency": "Este centro de trabalho já está atribuído a esta agência",
"Select ticket or client": "Selecione um ticket ou cliente",
"It was not able to create the invoice": "Não foi possível criar a fatura"
}

View File

@ -29,6 +29,7 @@ module.exports = Self => {
const $t = ctx.req.__; // $translate
const myOptions = {};
const userId = ctx.req.accessToken.userId;
const url = await Self.app.models.Url.getUrl();
if (typeof options == 'object')
Object.assign(myOptions, options);
@ -38,7 +39,9 @@ module.exports = Self => {
const body = $t('Added observation', {
user: user.name,
text: observation
text: observation,
defaulterId: defaulter.clientFk,
defaulterUrl: `${url}client/${defaulter.clientFk}/summary`
});
await models.Mail.create({

View File

@ -10,6 +10,9 @@
"id": {
"type": "number",
"id": true
},
"workcenterFk" : {
"type": "number"
}
},
"relations": {
@ -24,4 +27,4 @@
"foreignKey": "departmentFk"
}
}
}
}

View File

@ -77,8 +77,7 @@
tabindex="-1">
</vn-fetched-tags>
</vn-td>
<vn-td number>{{::sale.quantity | dashIfEmpty}}</vn-td>
</vn-tr>
<vn-td number>{{::sale.quantity | dashIfEmpty}}</vn-td>
</vn-tbody>
</vn-table>
</vn-card>

View File

@ -1,18 +1,17 @@
const { models } = require('vn-loopback/server/server');
const {models} = require('vn-loopback/server/server');
const LoopBackContext = require('loopback-context');
// #6276
describe('ItemShelving upsertItem()', () => {
const warehouseFk = 1;
let ctx;
let options;
let tx;
beforeEach(async () => {
beforeEach(async() => {
ctx = {
req: {
accessToken: { userId: 9 },
headers: { origin: 'http://localhost' }
accessToken: {userId: 9},
headers: {origin: 'http://localhost'}
},
args: {}
};
@ -21,35 +20,35 @@ describe('ItemShelving upsertItem()', () => {
active: ctx.req
});
options = { transaction: tx };
options = {transaction: tx};
tx = await models.ItemShelving.beginTransaction({});
options.transaction = tx;
});
afterEach(async () => {
afterEach(async() => {
await tx.rollback();
});
it('should add two new records', async () => {
const shelvingFk = 'ZPP';
it('should add two new records', async() => {
const shelvingFk = 'GVC';
const items = [1, 1, 1, 2];
await models.ItemShelving.upsertItem(ctx, shelvingFk, items, warehouseFk, options);
const itemShelvings = await models.ItemShelving.find({ where: { shelvingFk } }, options);
const itemShelvings = await models.ItemShelving.find({where: {shelvingFk}}, options);
expect(itemShelvings.length).toEqual(2);
});
it('should update the visible items', async () => {
it('should update the visible items', async() => {
const shelvingFk = 'GVC';
const items = [2, 2];
const { visible: visibleItemsBefore } = await models.ItemShelving.findOne({
where: { shelvingFk, itemFk: items[0] }
const {visible: visibleItemsBefore} = await models.ItemShelving.findOne({
where: {shelvingFk, itemFk: items[0]}
}, options);
await models.ItemShelving.upsertItem(ctx, shelvingFk, items, warehouseFk, options);
const { visible: visibleItemsAfter } = await models.ItemShelving.findOne({
where: { shelvingFk, itemFk: items[0] }
const {visible: visibleItemsAfter} = await models.ItemShelving.findOne({
where: {shelvingFk, itemFk: items[0]}
}, options);
expect(visibleItemsAfter).toEqual(visibleItemsBefore + 2);

View File

@ -27,8 +27,11 @@ module.exports = Self => {
const where = filter.where;
const query = 'CALL vn.item_getBalance(?, ?, ?)';
if (where?.date) {
where.date = new Date(where.date);
where.date.setHours(0, 0, 0, 0);
}
const [diary] = await Self.rawSql(query, [where.itemFk, where.warehouseFk, where.date], myOptions);
for (const entry of diary)
if (entry.clientType === 'loses') entry.highlighted = true;

View File

@ -1,52 +0,0 @@
<mg-ajax path="Shelvings/{{patch.params.id}}" options="vnPatch"></mg-ajax>
<vn-watcher
vn-id="watcher"
data="$ctrl.shelving"
form="form"
save="patch">
</vn-watcher>
<form name="form" ng-submit="watcher.submit()" class="vn-w-md">
<vn-card class="vn-pa-lg">
<vn-vertical>
<vn-horizontal>
<vn-textfield
label="Code"
ng-model="$ctrl.shelving.code"
rule
vn-focus>
</vn-textfield>
<vn-autocomplete
vn-one
url="Parkings"
label="Parking"
show-field="code"
value-field="id"
ng-model="$ctrl.shelving.parkingFk">
</vn-autocomplete>
</vn-horizontal>
<vn-horizontal>
<vn-input-number vn-one
label="Priority"
ng-model="$ctrl.shelving.priority"
rule>
</vn-input-number>
<vn-check
label="Recyclable"
ng-model="$ctrl.shelving.isRecyclable">
</vn-check>
</vn-horizontal>
</vn-vertical>
</vn-card>
<vn-button-bar>
<vn-submit
disabled="!watcher.dataChanged()"
label="Save">
</vn-submit>
<vn-button
class="cancel"
label="Undo changes"
disabled="!watcher.dataChanged()"
ng-click="watcher.loadOriginalData()">
</vn-button>
</vn-button-bar>
</form>

View File

@ -1,10 +0,0 @@
import ngModule from '../module';
import Section from 'salix/components/section';
ngModule.vnComponent('vnShelvingBasicData', {
template: require('./index.html'),
controller: Section,
bindings: {
shelving: '<'
}
});

View File

@ -1,8 +0,0 @@
<vn-portal slot="menu">
<vn-shelving-descriptor
shelving="$ctrl.shelving"
on-change="$ctrl.reload()">
</vn-shelving-descriptor>
<vn-left-menu source="card"></vn-left-menu>
</vn-portal>
<ui-view></ui-view>

View File

@ -1,29 +0,0 @@
import ngModule from '../module';
import ModuleCard from 'salix/components/module-card';
class Controller extends ModuleCard {
reload() {
const filter = {
include: [
{relation: 'worker',
scope: {
fields: ['id'],
include: {
relation: 'user',
scope: {
fields: ['nickname']
}
}
}},
{relation: 'parking'}
]
};
this.$http.get(`Shelvings/${this.$params.id}`, {filter})
.then(res => this.shelving = res.data);
}
}
ngModule.vnComponent('vnShelvingCard', {
template: require('./index.html'),
controller: Controller
});

View File

@ -1,26 +0,0 @@
import './index';
describe('component vnShelvingCard', () => {
let controller;
let $httpBackend;
const data = {id: 1, code: 'AAA'};
beforeEach(ngModule('shelving'));
beforeEach(inject(($componentController, _$httpBackend_, $stateParams) => {
$httpBackend = _$httpBackend_;
let $element = angular.element('<div></div>');
controller = $componentController('vnShelvingCard', {$element});
$stateParams.id = data.id;
$httpBackend.whenRoute('GET', 'Shelvings/:id').respond(data);
}));
it('should reload the controller data', () => {
controller.reload();
$httpBackend.flush();
expect(controller.shelving).toEqual(data);
});
});

View File

@ -1,51 +0,0 @@
<vn-watcher
vn-id="watcher"
url="Shelvings"
data="$ctrl.shelving"
insert-mode="true"
form="form">
</vn-watcher>
<form name="form" vn-http-submit="$ctrl.onSubmit()" class="vn-w-md">
<vn-card class="vn-pa-lg">
<vn-vertical>
<vn-horizontal>
<vn-textfield
label="Code"
ng-model="$ctrl.shelving.code"
rule
vn-focus>
</vn-textfield>
<vn-autocomplete
vn-one
url="Parkings"
label="Parking"
show-field="code"
value-field="id"
ng-model="$ctrl.shelving.parkingFk">
</vn-autocomplete>
</vn-horizontal>
<vn-horizontal>
<vn-input-number vn-one
label="Priority"
ng-model="$ctrl.shelving.priority"
rule>
</vn-input-number>
<vn-check
label="Recyclable"
ng-model="$ctrl.shelving.isRecyclable">
</vn-check>
</vn-horizontal>
</vn-vertical>
</vn-card>
<vn-button-bar>
<vn-submit
disabled="!watcher.dataChanged()"
label="Create">
</vn-submit>
<vn-button
class="cancel"
label="Cancel"
ui-sref="shelving.index">
</vn-button>
</vn-button-bar>
</form>

View File

@ -1,15 +0,0 @@
import ngModule from '../module';
import Section from 'salix/components/section';
export default class Controller extends Section {
onSubmit() {
return this.$.watcher.submit().then(res =>
this.$state.go('shelving.card.basicData', {id: res.data.id})
);
}
}
ngModule.vnComponent('vnShelvingCreate', {
template: require('./index.html'),
controller: Controller
});

View File

@ -1,38 +0,0 @@
import './index';
describe('Shelving', () => {
describe('Component vnShelvingCreate', () => {
let $scope;
let $state;
let controller;
beforeEach(ngModule('shelving'));
beforeEach(inject(($componentController, $rootScope, _$state_) => {
$scope = $rootScope.$new();
$state = _$state_;
$scope.watcher = {
submit: () => {
return {
then: callback => {
callback({data: {id: 1}});
}
};
}
};
const $element = angular.element('<vn-shelving-create></vn-shelving-create>');
controller = $componentController('vnShelvingCreate', {$element, $scope});
controller.$params = {};
}));
describe('onSubmit()', () => {
it(`should redirect to basic data by calling the $state.go function`, () => {
jest.spyOn(controller.$state, 'go');
controller.onSubmit();
expect(controller.$state.go).toHaveBeenCalledWith('shelving.card.basicData', {id: 1});
});
});
});
});

View File

@ -1,45 +0,0 @@
<vn-descriptor-content
module="shelving"
description="$ctrl.shelving.code"
summary="$ctrl.$.summary">
<slot-menu>
<vn-item
ng-click="deleteShelving.show()"
name="deleteShelving"
translate>
Delete shelving
</vn-item>
</slot-menu>
<slot-body>
<div class="attributes">
<vn-label-value
label="Code"
value="{{$ctrl.shelving.code}}">
</vn-label-value>
<vn-label-value
label="Parking"
value="{{$ctrl.shelving.parking.code}}">
</vn-label-value>
<vn-label-value
label="Worker">
<span
ng-click="workerDescriptor.show($event, $ctrl.shelving.userFk)"
class="link">
{{::$ctrl.shelving.worker.user.nickname}}
</span>
</vn-label-value>
</div>
</slot-body>
</vn-descriptor-content>
<vn-confirm
vn-id="deleteShelving"
on-accept="$ctrl.onDelete()"
question="Are you sure you want to continue?"
message="Shelving will be removed">
</vn-confirm>
<vn-popup vn-id="summary">
<vn-shelving-summary shelving="$ctrl.shelving"></vn-shelving-summary>
</vn-popup>
<vn-worker-descriptor-popover
vn-id="workerDescriptor">
</vn-worker-descriptor-popover>

View File

@ -1,26 +0,0 @@
import ngModule from '../module';
import Descriptor from 'salix/components/descriptor';
class Controller extends Descriptor {
get shelving() {
return this.entity;
}
set shelving(value) {
this.entity = value;
}
onDelete() {
return this.$http.delete(`Shelvings/${this.shelving.id}`)
.then(() => this.$state.go('shelving.index'))
.then(() => this.vnApp.showSuccess(this.$t('Shelving removed')));
}
}
ngModule.vnComponent('vnShelvingDescriptor', {
template: require('./index.html'),
controller: Controller,
bindings: {
shelving: '<'
}
});

View File

@ -1,29 +0,0 @@
import './index.js';
describe('component vnShelvingDescriptor', () => {
let $httpBackend;
let controller;
const shelving = {id: 1, code: 'AA6'};
beforeEach(ngModule('shelving'));
beforeEach(inject(($componentController, _$httpBackend_, _$httpParamSerializer_) => {
$httpBackend = _$httpBackend_;
controller = $componentController('vnShelvingDescriptor', {$element: null}, {shelving});
jest.spyOn(controller.vnApp, 'showSuccess');
}));
describe('onDelete()', () => {
it('should delete entity and go to index', () => {
controller.$state.go = jest.fn();
$httpBackend.expectDELETE('Shelvings/1').respond();
controller.onDelete();
$httpBackend.flush();
expect(controller.$state.go).toHaveBeenCalledWith('shelving.index');
expect(controller.vnApp.showSuccess).toHaveBeenCalled();
});
});
});

View File

@ -1,3 +0,0 @@
Delete shelving: Eliminar carro
Shelving will be removed: El carro será eliminado
Shelving removed: Carro eliminado

View File

@ -1,11 +1,3 @@
export * from './module';
import './basic-data';
import './card';
import './create';
import './descriptor';
import './index/';
import './main';
import './search-panel';
import './summary';
import './log';

View File

@ -1,47 +0,0 @@
<vn-auto-search
model="model">
</vn-auto-search>
<vn-data-viewer
model="model"
class="vn-w-sm">
<vn-card>
<div class="vn-list separated">
<a
ng-repeat="shelving in model.data track by shelving.id"
ui-sref="shelving.card.summary(::{id: shelving.id})"
translate-attr="{title: 'View shelving'}"
class="vn-item search-result">
<vn-item-section>
<h6>{{::shelving.code}}</h6>
<vn-label-value label="Parking"
value="{{::shelving.parking.code}}">
</vn-label-value>
<vn-label-value label="Priority"
value="{{::shelving.priority}}">
</vn-label-value>
</vn-item-section>
<vn-item-section side>
<vn-icon-button
vn-click-stop="$ctrl.preview(shelving)"
vn-tooltip="Preview"
icon="preview">
</vn-icon-button>
</vn-item-section>
</a>
</div>
</vn-card>
</vn-data-viewer>
<vn-popup vn-id="summary">
<vn-shelving-summary
shelving="$ctrl.selectedShelving">
</vn-shelving-summary>
</vn-popup>
<a
ui-sref="shelving.create"
vn-tooltip="New shelving"
vn-bind="+"
vn-acl-action="remove"
fixed-bottom-right>
<vn-float-button icon="add"></vn-float-button>
</a>

View File

@ -1,14 +0,0 @@
import ngModule from '../module';
import Section from 'salix/components/section';
export default class Controller extends Section {
preview(shelving) {
this.selectedShelving = shelving;
this.$.summary.show();
}
}
ngModule.vnComponent('vnShelvingIndex', {
template: require('./index.html'),
controller: Controller
});

View File

@ -1,39 +0,0 @@
import './index.js';
describe('Component vnShelvingIndex', () => {
let controller;
let $window;
let shelvings = [{
id: 1,
code: 'AAA'
}, {
id: 2,
code: 'AA1'
}, {
id: 3,
code: 'AA2'
}];
beforeEach(ngModule('shelving'));
beforeEach(inject(($componentController, _$window_) => {
$window = _$window_;
const $element = angular.element('<vn-shelving-index></vn-shelving-index>');
controller = $componentController('vnShelvingIndex', {$element});
}));
describe('preview()', () => {
it('should show the dialog summary', () => {
controller.$.summary = {show: () => {}};
jest.spyOn(controller.$.summary, 'show');
let event = new MouseEvent('click', {
view: $window,
bubbles: true,
cancelable: true
});
controller.preview(event, shelvings[0]);
expect(controller.$.summary.show).toHaveBeenCalledWith();
});
});
});

View File

@ -1,2 +0,0 @@
Parking: Parking
Priority: Prioridad

View File

@ -1 +0,0 @@
<vn-log url="ShelvingLogs" origin-id="$ctrl.$params.id"></vn-log>

View File

@ -1,7 +0,0 @@
import ngModule from '../module';
import Section from 'salix/components/section';
ngModule.vnComponent('vnShelvingLog', {
template: require('./index.html'),
controller: Section,
});

View File

@ -1 +0,0 @@
Changed by: Cambiado por

View File

@ -1,19 +0,0 @@
<vn-crud-model
vn-id="model"
url="Shelvings"
filter="$ctrl.filter"
limit="20">
</vn-crud-model>
<vn-portal slot="topbar">
<vn-searchbar
vn-focus
panel="vn-shelving-search-panel"
info="Search shelving by code, parking or worker"
model="model"
expr-builder="$ctrl.exprBuilder(param, value)">
</vn-searchbar>
</vn-portal>
<vn-portal slot="menu">
<vn-left-menu></vn-left-menu>
</vn-portal>
<ui-view></ui-view>

View File

@ -4,22 +4,10 @@ import ModuleMain from 'salix/components/module-main';
export default class Shelving extends ModuleMain {
constructor($element, $) {
super($element, $);
this.filter = {
include: [
{relation: 'parking'}
],
};
}
exprBuilder(param, value) {
switch (param) {
case 'search':
return {code: {like: `%${value}%`}};
case 'parkingFk':
case 'userFk':
case 'isRecyclable':
return {[param]: value};
}
async $onInit() {
this.$state.go('home');
window.location.href = await this.vnApp.getUrl(`shelving/`);
}
}

View File

@ -1,19 +0,0 @@
import './index';
describe('component vnShelving', () => {
let controller;
beforeEach(ngModule('shelving'));
beforeEach(inject($componentController => {
controller = $componentController('vnShelving', {$element: null});
}));
describe('exprBuilder()', () => {
it('should search by code', () => {
let expr = controller.exprBuilder('search', 'UXN');
expect(expr).toEqual({code: {like: '%UXN%'}},);
});
});
});

View File

@ -26,42 +26,6 @@
"state": "shelving.index",
"component": "vn-shelving-index",
"description": "Shelvings"
},
{
"url": "/create",
"state": "shelving.create",
"component": "vn-shelving-create",
"description": "New shelving"
},
{
"url": "/:id",
"state": "shelving.card",
"abstract": true,
"component": "vn-shelving-card"
},
{
"url": "/summary",
"state": "shelving.card.summary",
"component": "vn-shelving-summary",
"description": "Summary",
"params": {
"shelving": "$ctrl.shelving"
}
},
{
"url": "/basic-data",
"state": "shelving.card.basicData",
"component": "vn-shelving-basic-data",
"description": "Basic data",
"params": {
"shelving": "$ctrl.shelving"
}
},
{
"url" : "/log",
"state": "shelving.card.log",
"component": "vn-shelving-log",
"description": "Log"
}
]
}

View File

@ -1,43 +0,0 @@
<div class="search-panel">
<form ng-submit="$ctrl.onSearch()">
<vn-horizontal>
<vn-textfield
vn-one
label="General search"
ng-model="filter.search"
info="Search shelvings by code"
vn-focus>
</vn-textfield>
</vn-horizontal>
<vn-horizontal>
<vn-autocomplete
vn-one
url="Parkings"
label="Parking"
show-field="code"
value-field="id"
ng-model="filter.parkingFk">
</vn-autocomplete>
<vn-autocomplete
vn-one
url="Workers"
label="Worker"
search-function="{or: [{id: $search}, {firstName: {like: $search}}]}"
show-field="firstName"
value-field="id"
ng-model="filter.userFk">
</vn-autocomplete>
</vn-horizontal>
<vn-horizontal>
<vn-check
vn-one
label="Recyclable"
ng-model="filter.isRecyclable"
triple-state="true">
</vn-check>
</vn-horizontal>
<vn-horizontal class="vn-mt-lg">
<vn-submit label="Search"></vn-submit>
</vn-horizontal>
</form>
</div>

View File

@ -1,7 +0,0 @@
import ngModule from '../module';
import SearchPanel from 'core/components/searchbar/search-panel';
ngModule.vnComponent('vnShelvingSearchPanel', {
template: require('./index.html'),
controller: SearchPanel
});

View File

@ -1 +0,0 @@
Search shelvings by code: Busca carros por código

View File

@ -1,51 +0,0 @@
<vn-card class="summary">
<h5>
<a ng-if="::$ctrl.summary.code"
vn-tooltip="Go to the shelving"
ui-sref="shelving.card.summary({id: {{::$ctrl.summary.code}}})"
name="goToSummary">
<vn-icon-button icon="launch"></vn-icon-button>
</a>
<span>{{::$ctrl.summary.code}}</span>
</h5>
<vn-horizontal>
<vn-one>
<h4>
<a
ui-sref="shelving.card.basicData({id: $ctrl.summary.id})"
target="_self">
<span translate vn-tooltip="Go to">Basic data</span>
</a>
</h4>
<vn-vertical>
<vn-label-value
label="Code"
value="{{::$ctrl.summary.code}}">
</vn-label-value>
<vn-label-value
label="Parking"
value="{{::$ctrl.summary.parking.code}}">
</vn-label-value>
<vn-label-value
label="Priority"
value="{{::$ctrl.summary.priority}}">
</vn-label-value>
<vn-label-value label="Worker">
<span
ng-click="workerDescriptor.show($event, $ctrl.summary.worker.user.id)"
class="link">
{{$ctrl.summary.worker.user.nickname}}
</span>
</vn-label-value>
<vn-check
label="Recyclable"
ng-model="$ctrl.summary.isRecyclable"
disabled="true">
</vn-check>
</vn-vertical>
</vn-one>
</vn-horizontal>
</vn-card>
<vn-worker-descriptor-popover
vn-id="workerDescriptor">
</vn-worker-descriptor-popover>

View File

@ -1,41 +0,0 @@
import ngModule from '../module';
import Summary from 'salix/components/summary';
import './style.scss';
class Controller extends Summary {
set shelving(value) {
this._shelving = value;
this.summary = null;
if (!value) return;
const filter = {
include: [
{relation: 'worker',
scope: {
fields: ['id'],
include: {
relation: 'user',
scope: {
fields: ['nickname']
}
}
}},
{relation: 'parking'}
]
};
this.$http.get(`Shelvings/${value.id}`, {filter})
.then(res => this.summary = res.data);
}
get shelving() {
return this._shelving;
}
}
ngModule.vnComponent('vnShelvingSummary', {
template: require('./index.html'),
controller: Controller,
bindings: {
shelving: '<'
}
});

View File

@ -1,5 +0,0 @@
Code: Código
Parking: Parking
Priority: Prioridad
Worker: Trabajador
Recyclable: Reciclable

View File

@ -1,7 +0,0 @@
@import "variables";
vn-client-summary {
.alert span {
color: $color-alert
}
}

View File

@ -52,18 +52,16 @@ describe('Operator', () => {
});
it('should not sent notification when is already notified by another worker', async() => {
try {
await models.NotificationQueue.create({
authorFk: 2,
notificationFk: notificationName,
params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 2}),
created: '2001-01-01 12:30:00',
status: sentStatus
});
await models.Operator.updateAll({id: 1}, {labelerFk: labeler, sectorFk: sectorId});
} catch (e) {
expect(e.message).toEqual('Previous notification sended with the same parameters');
}
const {id} = await models.NotificationQueue.create({
authorFk: 2,
notificationFk: notificationName,
params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 2}),
created: '2001-01-01 11:30:00',
status: sentStatus
});
const notificationQueue = await updateOperatorAndFindNotification();
expect(notificationQueue.id).toEqual(id);
});
it('should send a notification when the previous one has distinct params', async() => {

View File

@ -98,6 +98,22 @@ module.exports = Self => {
if (isHalfHoliday && hasHalfHoliday)
throw new UserError(`Cannot add more than one '1/2 day vacation'`);
const isFestive = absenceType.isFestiveEligible;
const workCenter = await models.Business.findOne({
where: {id: args.businessFk}
},);
const [holiday] = await models.CalendarHoliday.find({
where: {
dated: args.dated,
workCenterFk: workCenter.workCenterFk
}
});
if (holiday && isFestive)
throw new UserError(`Cannot add holidays on this day`);
const absence = await models.Calendar.create({
businessFk: labour.businessFk,
dayOffTypeFk: args.absenceTypeId,

View File

@ -104,6 +104,35 @@ describe('Worker createAbsence()', () => {
expect(error.message).toEqual(`Cannot add more than one '1/2 day vacation'`);
});
it(`should throw an error when adding a "Holiday" absence if there's a festivity`, async() => {
const ctx = {
req: {accessToken: {userId: 9}},
args: {
id: 3,
businessFk: 3,
absenceTypeId: 1,
dated: '2001-12-08T23:00:00.000Z'
}
};
const workerId = 1;
const tx = await app.models.Calendar.beginTransaction({});
let error;
try {
const options = {transaction: tx};
await app.models.Worker.createAbsence(ctx, workerId, options);
await tx.rollback();
} catch (e) {
await tx.rollback();
error = e;
}
expect(error.message).toEqual(`Cannot add holidays on this day`);
});
it(`should throw an error when adding a absence if the worker has hours recorded that day and not is a half absence`, async() => {
const ctx = {
req: {accessToken: {userId: 19}},

View File

@ -22,7 +22,10 @@
},
"holidayEntitlementRate": {
"type": "number"
}
},
"isFestiveEligible": {
"type": "boolean"
}
},
"acls": [
{
@ -32,4 +35,4 @@
"permission": "ALLOW"
}
]
}
}

View File

@ -18,7 +18,7 @@ module.exports = Self => {
const {backupPrinterNotificationDelay} = await models.ProductionConfig.findOne();
if (backupPrinterNotificationDelay) {
const notifications = await models.NotificationQueue.find(
{where: {created: {gte: Date.vnNow() - (backupPrinterNotificationDelay * 1000) + (3600 * 1000)},
{where: {created: {gte: new Date(Date.vnNow() - (backupPrinterNotificationDelay * 1000))},
notificationFk: notificationName,
status: 'sent'
}
@ -30,8 +30,7 @@ module.exports = Self => {
return Object.keys(criteria).every(key => criteria[key] === paramsObj?.[key]);
});
if (filteredNotifications.length >= 1)
throw new Error('Previous notification sended with the same parameters');
if (filteredNotifications.length >= 1) return;
}
await models.NotificationQueue.create({

View File

@ -59,6 +59,9 @@
},
"isF11Allowed": {
"type" : "boolean"
},
"isFreelance": {
"type" : "boolean"
}
},
"relations": {
@ -92,86 +95,5 @@
"model": "WorkerTeamCollegues",
"foreignKey": "workerFk"
}
},
"scopes":{
"summary": {
"include": [
{
"relation": "user",
"scope": {
"fields": ["email", "name", "nickname", "roleFk", "emailVerified"],
"include": [
{
"relation": "role",
"scope": {
"fields": ["name"]
}
},
{
"relation": "emailUser",
"scope": {
"fields": ["email"]
}
}
]
}
}, {
"relation": "department",
"scope": {
"include": {
"relation": "department"
}
}
}, {
"relation": "boss"
}, {
"relation": "client",
"scope": {
"fields": [
"id",
"name",
"fi",
"socialName",
"contact",
"street",
"city",
"postcode",
"email",
"mobile",
"isActive",
"credit",
"creditInsurance",
"iban",
"dueDay",
"isEqualizated",
"isFreezed",
"hasToInvoiceByAddress",
"hasToInvoice",
"isToBeMailed",
"hasSepaVnl",
"hasLcr",
"hasCoreVnl",
"hasCoreVnh",
"hasIncoterms",
"isTaxDataChecked",
"quality",
"isVies",
"isRelevant",
"accountingAccount",
"created",
"sageTaxTypeFk",
"sageTransactionTypeFk",
"businessTypeFk",
"salesPersonFk",
"hasElectronicInvoice",
"rating",
"recommendedCredit"
]
}
}, {
"relation": "sip"
}
]
}
}
}

View File

@ -4,13 +4,37 @@ import ModuleCard from 'salix/components/module-card';
class Controller extends ModuleCard {
reload() {
const filter = {
where: {
id: this.$params.id}
include: [
{
relation: 'user',
scope: {
fields: ['name', 'emailVerified'],
include: {
relation: 'emailUser',
scope: {
fields: ['email']
}
}
}
}, {
relation: 'sip',
scope: {
fields: ['extension', 'secret']
}
}, {
relation: 'department',
scope: {
include: {
relation: 'department'
}
}
}
]
};
return Promise.all([
this.$http.get(`Workers/summary`, {filter})
.then(res => this.worker = res.data[0]),
this.$http.get(`Workers/${this.$params.id}`, {filter})
.then(res => this.worker = res.data),
this.$http.get(`Workers/${this.$params.id}/activeContract`)
.then(res => this.hasWorkCenter = res.data?.workCenterFk)
]);

View File

@ -37,11 +37,41 @@ class Controller extends Descriptor {
loadData() {
const filter = {
where: {id: this.id},
include: [
{
relation: 'user',
scope: {
fields: ['name', 'emailVerified'],
include: {
relation: 'emailUser',
scope: {
fields: ['email']
}
}
}
}, {
relation: 'client',
scope: {
fields: ['fi']
}
}, {
relation: 'sip',
scope: {
fields: ['extension']
}
}, {
relation: 'department',
scope: {
include: {
relation: 'department'
}
}
}
]
};
return this.getData(`Workers/summary`, {filter})
.then(res => this.entity = res.data[0]);
return this.getData(`Workers/${this.id}`, {filter})
.then(res => this.entity = res.data);
}
getPassRequirements() {

View File

@ -14,14 +14,14 @@ describe('vnWorkerDescriptor', () => {
describe('loadData()', () => {
it(`should perform a get query to store the worker data into the controller`, () => {
const id = 1;
const response = ['foo'];
const response = 'foo';
$httpBackend.whenGET('UserConfigs/getUserConfig').respond({});
$httpBackend.expectRoute('GET', `Workers/summary`).respond(response);
$httpBackend.expectRoute('GET', `Workers/${id}`).respond(response);
controller.id = id;
$httpBackend.flush();
expect([controller.worker]).toEqual(response);
expect(controller.worker).toEqual(response);
});
});

View File

@ -10,14 +10,53 @@ class Controller extends Summary {
this.$.worker = null;
if (!value) return;
const query = `Workers/${value.id}`;
const filter = {
where: {
id: value.id
}
include: [
{
relation: 'user',
scope: {
fields: ['name', 'roleFk'],
include: [{
relation: 'role',
scope: {
fields: ['name']
}
},
{
relation: 'emailUser',
scope: {
fields: ['email']
}
}]
}
},
{
relation: 'client',
scope: {fields: ['fi', 'phone']}
},
{
relation: 'boss',
scope: {fields: ['id', 'name']}
},
{
relation: 'sip',
scope: {fields: ['extension']}
},
{
relation: 'department',
scope: {
include: {
relation: 'department',
scope: {fields: ['id', 'code', 'name']}
}
}
}
]
};
this.$http.get(`Workers/summary`, {filter}).then(res => {
this.$.worker = res.data[0];
this.$http.get(query, {params: {filter}}).then(res => {
this.$.worker = res.data;
});
}

View File

@ -1,6 +1,6 @@
{
"name": "salix-back",
"version": "24.20.0",
"version": "24.22.0",
"author": "Verdnatura Levante SL",
"description": "Salix backend",
"license": "GPL-3.0",

View File

@ -32,9 +32,12 @@ html {
#bold {
font-weight: bold;
}
#barcode{
.barcode{
width: 370px;
}
.qr{
max-height: 137px;
}
#shipped {
font-weight: bold;
width: 50px;

View File

@ -8,11 +8,15 @@
<td id="ticketFk">
{{labelData.clientFk ? `${labelData.ticketFk} « ${labelData.clientFk}` : labelData.ticketFk}}
</td>
<td colspan="2" id="shipped">{{labelData.shipped || '---'}}</td>
<td colspan="2" id="shipped">{{dashIfEmpty(labelData.shipped)}}</td>
</tr>
<tr>
<td rowspan="3"><div v-html="getBarcode(labelData.ticketFk)" id="barcode"></div></td>
<td id="outline" class="ellipsize">{{labelData.workerCode || '---'}}</td>
<tr v-if="labelData?.qrData">
<td rowspan="3"><img :src="labelData.qrData" class="qr"/></td>
<td id="outline" class="ellipsize">{{dashIfEmpty(labelData.workerCode)}}</td>
</tr>
<tr v-else>
<td rowspan="3"><div v-html="getBarcode(labelData.ticketFk)" class="basrcode"></div></td>
<td id="outline" class="ellipsize">{{dashIfEmpty(labelData.workerCode)}}</td>
</tr>
<tr>
<td id="outline" class="ellipsize">{{labelData.labelCount || 0}}</td>
@ -21,11 +25,11 @@
<td id="outline" class="ellipsize">{{labelData.code == 'V' ? (labelData.size || 0) + 'cm' : (labelData.volume || 0) + 'm³'}}</td>
</tr>
<tr>
<td><div id="agencyDescripton" class="ellipsize">{{getAgencyDescripton(labelData)}}</div></td>
<td><div id="agencyDescripton" class="ellipsize">{{dashIfEmpty(getAgencyDescription(labelData))}}</div></td>
<td id="bold">{{labelData.lineCount || 0}}</td>
</tr>
<tr>
<td id="nickname" class="ellipsize">{{labelData.nickName ? labelData.nickName.toUpperCase() : '---'}}</td>
<td id="nickname" class="ellipsize">{{dashIfEmpty(labelData?.nickName.toUpperCase()) }}</td>
<td id="bold">{{labelData.shippedHour || labelData.zoneHour}}</td>
</tr>
</tbody>

View File

@ -1,6 +1,7 @@
const jsBarcode = require('jsbarcode');
const {DOMImplementation, XMLSerializer} = require('xmldom');
const vnReport = require('../../../core/mixins/vn-report.js');
const {toDataURL} = require('qrcode');
const jsBarcode = require('jsbarcode');
module.exports = {
name: 'collection-label',
@ -27,10 +28,28 @@ module.exports = {
} else
ticketIds = [this.id];
this.labelsData = await this.rawSqlFromDef('labelsData', [ticketIds]);
const labels = await this.rawSqlFromDef('labelsData', [ticketIds]);
const [{scannableCodeType}] = await this.rawSqlFromDef('barcodeType');
if (scannableCodeType === 'qr') {
for (const labelData of labels)
labelData.qrData = await this.getQr(labelData?.ticketFk, labelData?.workerFk);
}
this.labelsData = labels;
this.checkMainEntity(this.labelsData);
},
methods: {
async getQr(ticketFk, workerFk = null) {
const QRdata = JSON.stringify({
company: 'vnl',
user: workerFk,
created: Date.vnNew(),
table: 'ticket',
id: ticketFk
});
return toDataURL(QRdata, {margin: 0});
},
getBarcode(id) {
const xmlSerializer = new XMLSerializer();
const document = new DOMImplementation().createDocument('http://www.w3.org/1999/xhtml', 'html', null);
@ -52,18 +71,16 @@ module.exports = {
if (labelData.code == 'V')
value = value + `${labelData.wagon}-${labelData.level}`;
else
value = value + `${labelData.color.substring(0, 4)}`;
value = value + `${labelData.color?.substring(0, 4)}`;
} else
value = '-'.repeat(19);
return value;
},
getAgencyDescripton(labelData) {
getAgencyDescription(labelData) {
let value;
if (labelData.agencyDescription)
value = labelData.agencyDescription.toUpperCase().substring(0, 11);
else
value = '---';
if (labelData.routeFk) {
let routeFk = labelData.routeFk.toString();
@ -72,5 +89,8 @@ module.exports = {
return value;
},
dashIfEmpty(value) {
return value || '---';
}
},
};

View File

@ -0,0 +1,3 @@
SELECT scannableCodeType
FROM productionConfig
LIMIT 1

Some files were not shown because too many files have changed in this diff Show More