diff --git a/CHANGELOG.md b/CHANGELOG.md
index acb5d74574..0573a67904 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [2340.01] - 2023-10-05
+
+### Added
+### Changed
+
+### Fixed
+
## [2338.01] - 2023-09-21
### Added
diff --git a/back/methods/edi/updateData.js b/back/methods/edi/updateData.js
index 10c81a7958..6bebad1e4d 100644
--- a/back/methods/edi/updateData.js
+++ b/back/methods/edi/updateData.js
@@ -139,7 +139,7 @@ module.exports = Self => {
ftpClient.exec((err, response) => {
if (err || response.error) {
console.debug(`Error downloading checksum file... ${response.error}`);
- return reject(err);
+ return reject(response.error || err);
}
resolve(response);
diff --git a/back/model-config.json b/back/model-config.json
index b88956deef..ebc0e321b0 100644
--- a/back/model-config.json
+++ b/back/model-config.json
@@ -15,6 +15,9 @@
},
"Bank": {
"dataSource": "vn"
+ },
+ "Buyer": {
+ "dataSource": "vn"
},
"Campaign": {
"dataSource": "vn"
diff --git a/back/models/buyer.json b/back/models/buyer.json
new file mode 100644
index 0000000000..a17d3b5389
--- /dev/null
+++ b/back/models/buyer.json
@@ -0,0 +1,28 @@
+{
+ "name": "Buyer",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "buyer"
+ }
+ },
+ "properties": {
+ "userFk": {
+ "type": "number",
+ "required": true,
+ "id": true
+ },
+ "nickname": {
+ "type": "string",
+ "required": true
+ }
+ },
+ "acls": [
+ {
+ "accessType": "READ",
+ "principalType": "ROLE",
+ "principalId": "employee",
+ "permission": "ALLOW"
+ }
+ ]
+}
diff --git a/db/changes/233601/00-createClaimReader.sql b/db/changes/233601/00-createClaimReader.sql
index 666bf232e3..e913c0ed91 100644
--- a/db/changes/233601/00-createClaimReader.sql
+++ b/db/changes/233601/00-createClaimReader.sql
@@ -1,4 +1,4 @@
-INSERT INTO `account`.`role` (`id`, `name`, `description`, `hasLogin`)
+INSERT INTO `account`.`role` (`name`, `description`, `hasLogin`)
VALUES ('claimViewer','Trabajadores que consulta las reclamaciones ',1);
INSERT INTO `account`.`roleInherit` (`role`,`inheritsFrom`)
@@ -10,7 +10,7 @@ INSERT INTO `account`.`roleInherit` (`role`,`inheritsFrom`)
'buyer',
'deliveryBoss',
'handmadeBoss'
- )
+ );
DELETE FROM `salix`.`ACL`
WHERE `model`= 'claim'
@@ -28,5 +28,4 @@ INSERT INTO `salix`.`ACL` (`model`,`property`,`accessType`,`permission`,`princip
INSERT INTO `salix`.`ACL` (`model`,`property`,`accessType`,`permission`,`principalType`,`principalid`)
VALUES ('Claim','findById','READ','ALLOW','ROLE','claimViewer');
INSERT INTO `salix`.`ACL` (`model`,`property`,`accessType`,`permission`,`principalType`,`principalid`)
- VALUES ('Claim','getSummary','READ','ALLOW','ROLE','claimViewer');
-
+ VALUES ('Claim','getSummary','READ','ALLOW','ROLE','claimViewer');
\ No newline at end of file
diff --git a/db/changes/233601/00-firstScript.sql b/db/changes/233801/00-firstScript.sql
similarity index 100%
rename from db/changes/233601/00-firstScript.sql
rename to db/changes/233801/00-firstScript.sql
diff --git a/db/changes/233801/00-item_setVisibleDiscard.sql b/db/changes/233801/00-item_setVisibleDiscard.sql
new file mode 100644
index 0000000000..6ee66a947c
--- /dev/null
+++ b/db/changes/233801/00-item_setVisibleDiscard.sql
@@ -0,0 +1,62 @@
+
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_setVisibleDiscard`(
+ vItemFk INT,
+ vWarehouseFk INT,
+ vQuantity INT,
+ vAddressFk INT)
+
+BEGIN
+ DECLARE vTicketFk INT;
+ DECLARE vClientFk INT;
+ DECLARE vCompanyVnlFk INT;
+ DECLARE vCalc INT;
+
+ SELECT barcodeToItem(vItemFk) INTO vItemFk;
+
+ SELECT DEFAULT(companyFk) INTO vCompanyVnlFk
+ FROM vn.ticket LIMIT 1;
+
+ SELECT a.clientFk INTO vClientFk
+ FROM address a
+ WHERE a.id = vAddressFk;
+
+ SELECT t.id INTO vTicketFk
+ FROM ticket t
+ JOIN address a ON a.id = t.addressFk
+ WHERE t.warehouseFk = vWarehouseFk
+ AND a.id = vAddressFk
+ AND DATE(t.shipped) = util.VN_CURDATE();
+
+ CALL cache.visible_refresh(vCalc, TRUE, vWarehouseFk);
+
+ IF vTicketFk IS NULL THEN
+ CALL ticket_add(
+ vClientFk,
+ util.VN_CURDATE(),
+ vWarehouseFk,
+ vCompanyVnlFk,
+ vAddressFk,
+ NULL,
+ NULL,
+ util.VN_CURDATE(),
+ account.myUser_getId(),
+ FALSE,
+ vTicketFk);
+ END IF;
+
+ INSERT INTO sale(ticketFk, itemFk, concept, quantity)
+ SELECT vTicketFk,
+ vItemFk,
+ CONCAT(longName,' ', getWorkerCode(), ' ', LEFT(CAST(util.VN_NOW() AS TIME),5)),
+ vQuantity
+ FROM item
+ WHERE id = vItemFk;
+
+ UPDATE cache.visible
+ SET visible = visible - vQuantity
+ WHERE calc_id = vCalc
+ AND item_id = vItemFk;
+END$$
+DELIMITER ;
+
diff --git a/db/changes/233801/00-ticketConfig.sql b/db/changes/233801/00-ticketConfig.sql
new file mode 100644
index 0000000000..5429878b4e
--- /dev/null
+++ b/db/changes/233801/00-ticketConfig.sql
@@ -0,0 +1,7 @@
+
+ INSERT INTO `salix`.`ACL` (model, property, accessType, permission, principalType, principalId)
+ VALUES('Item', 'setVisibleDiscard', 'WRITE', 'ALLOW', 'ROLE', 'employee');
+
+ INSERT INTO `salix`.`ACL` (model, property, accessType, permission, principalType, principalId)
+ VALUES('Address', 'getAddress', 'READ', 'ALLOW', 'ROLE', 'employee');
+
diff --git a/db/changes/233401/01-deviceLog_acl.sql b/db/changes/233801/01-deviceLog_acl.sql
similarity index 100%
rename from db/changes/233401/01-deviceLog_acl.sql
rename to db/changes/233801/01-deviceLog_acl.sql
diff --git a/db/changes/234001/.gitkeep b/db/changes/234001/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql
index 9187e2871e..36400b0d74 100644
--- a/db/dump/fixtures.sql
+++ b/db/dump/fixtures.sql
@@ -358,20 +358,20 @@ INSERT INTO `vn`.`contactChannel`(`id`, `name`)
(4, 'GCN Channel'),
(5, 'The Newspaper');
-INSERT INTO `vn`.`client`(`id`,`name`,`fi`,`socialName`,`contact`,`street`,`city`,`postcode`,`phone`,`mobile`,`isRelevant`,`email`,`iban`,`dueDay`,`accountingAccount`,`isEqualizated`,`provinceFk`,`hasToInvoice`,`credit`,`countryFk`,`isActive`,`gestdocFk`,`quality`,`payMethodFk`,`created`,`isToBeMailed`,`contactChannelFk`,`hasSepaVnl`,`hasCoreVnl`,`hasCoreVnh`,`riskCalculated`,`clientTypeFk`, `hasToInvoiceByAddress`,`isTaxDataChecked`,`isFreezed`,`creditInsurance`,`isCreatedAsServed`,`hasInvoiceSimplified`,`salesPersonFk`,`isVies`,`eypbc`, `businessTypeFk`)
+INSERT INTO `vn`.`client`(`id`,`name`,`fi`,`socialName`,`contact`,`street`,`city`,`postcode`,`phone`,`mobile`,`isRelevant`,`email`,`iban`,`dueDay`,`accountingAccount`,`isEqualizated`,`provinceFk`,`hasToInvoice`,`credit`,`countryFk`,`isActive`,`gestdocFk`,`quality`,`payMethodFk`,`created`,`isToBeMailed`,`contactChannelFk`,`hasSepaVnl`,`hasCoreVnl`,`hasCoreVnh`,`riskCalculated`,`clientTypeFk`, `hasToInvoiceByAddress`,`isTaxDataChecked`,`isFreezed`,`creditInsurance`,`isCreatedAsServed`,`hasInvoiceSimplified`,`salesPersonFk`,`isVies`,`eypbc`, `businessTypeFk`,`typeFk`)
VALUES
- (1101, 'Bruce Wayne', '84612325V', 'BATMAN', 'Alfred', '1007 MOUNTAIN DRIVE, GOTHAM', 'Gotham', 46460, 1111111111, 222222222, 1, 'BruceWayne@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'),
- (1102, 'Petter Parker', '87945234L', 'SPIDER MAN', 'Aunt May', '20 INGRAM STREET, QUEENS, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'PetterParker@mydomain.com', NULL, 0, 1234567890, 0, 2, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'),
- (1103, 'Clark Kent', '06815934E', 'SUPER MAN', 'lois lane', '344 CLINTON STREET, APARTAMENT 3-D', 'Gotham', 46460, 1111111111, 222222222, 1, 'ClarkKent@mydomain.com', NULL, 0, 1234567890, 0, 3, 1, 0, 19, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'),
- (1104, 'Tony Stark', '06089160W', 'IRON MAN', 'Pepper Potts', '10880 MALIBU POINT, 90265', 'Gotham', 46460, 1111111111, 222222222, 1, 'TonyStark@mydomain.com', NULL, 0, 1234567890, 0, 2, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'),
- (1105, 'Max Eisenhardt', '251628698', 'MAGNETO', 'Rogue', 'UNKNOWN WHEREABOUTS', 'Gotham', 46460, 1111111111, 222222222, 1, 'MaxEisenhardt@mydomain.com', NULL, 0, 1234567890, 0, 3, 1, 300, 8, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, NULL, 0, 0, 18, 0, 1, 'florist'),
- (1106, 'DavidCharlesHaller', '53136686Q', 'LEGION', 'Charles Xavier', 'CITY OF NEW YORK, NEW YORK, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'DavidCharlesHaller@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 0, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, NULL, 0, 0, 19, 0, 1, 'florist'),
- (1107, 'Hank Pym', '09854837G', 'ANT MAN', 'Hawk', 'ANTHILL, SAN FRANCISCO, CALIFORNIA', 'Gotham', 46460, 1111111111, 222222222, 1, 'HankPym@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, 0, NULL, 0, 0, 19, 0, 1, 'florist'),
- (1108, 'Charles Xavier', '22641921P', 'PROFESSOR X', 'Beast', '3800 VICTORY PKWY, CINCINNATI, OH 45207, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'CharlesXavier@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, NULL, 0, 0, 19, 0, 1, 'florist'),
- (1109, 'Bruce Banner', '16104829E', 'HULK', 'Black widow', 'SOMEWHERE IN NEW YORK', 'Gotham', 46460, 1111111111, 222222222, 1, 'BruceBanner@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, 0, NULL, 0, 0, 9, 0, 1, 'florist'),
- (1110, 'Jessica Jones', '58282869H', 'JESSICA JONES', 'Luke Cage', 'NYCC 2015 POSTER', 'Gotham', 46460, 1111111111, 222222222, 1, 'JessicaJones@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, 0, NULL, 0, 0, NULL, 0, 1, 'florist'),
- (1111, 'Missing', NULL, 'MISSING MAN', 'Anton', 'THE SPACE, UNIVERSE FAR AWAY', 'Gotham', 46460, 1111111111, 222222222, 1, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 4, 0, 1, 0, NULL, 1, 0, NULL, 0, 1, 'others'),
- (1112, 'Trash', NULL, 'GARBAGE MAN', 'Unknown name', 'NEW YORK CITY, UNDERGROUND', 'Gotham', 46460, 1111111111, 222222222, 1, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 4, 0, 1, 0, NULL, 1, 0, NULL, 0, 1, 'others');
+ (1101, 'Bruce Wayne', '84612325V', 'BATMAN', 'Alfred', '1007 MOUNTAIN DRIVE, GOTHAM', 'Gotham', 46460, 1111111111, 222222222, 1, 'BruceWayne@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist','loses'),
+ (1102, 'Petter Parker', '87945234L', 'SPIDER MAN', 'Aunt May', '20 INGRAM STREET, QUEENS, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'PetterParker@mydomain.com', NULL, 0, 1234567890, 0, 2, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist','normal'),
+ (1103, 'Clark Kent', '06815934E', 'SUPER MAN', 'lois lane', '344 CLINTON STREET, APARTAMENT 3-D', 'Gotham', 46460, 1111111111, 222222222, 1, 'ClarkKent@mydomain.com', NULL, 0, 1234567890, 0, 3, 1, 0, 19, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist','normal'),
+ (1104, 'Tony Stark', '06089160W', 'IRON MAN', 'Pepper Potts', '10880 MALIBU POINT, 90265', 'Gotham', 46460, 1111111111, 222222222, 1, 'TonyStark@mydomain.com', NULL, 0, 1234567890, 0, 2, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist','normal'),
+ (1105, 'Max Eisenhardt', '251628698', 'MAGNETO', 'Rogue', 'UNKNOWN WHEREABOUTS', 'Gotham', 46460, 1111111111, 222222222, 1, 'MaxEisenhardt@mydomain.com', NULL, 0, 1234567890, 0, 3, 1, 300, 8, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, NULL, 0, 0, 18, 0, 1, 'florist','normal'),
+ (1106, 'DavidCharlesHaller', '53136686Q', 'LEGION', 'Charles Xavier', 'CITY OF NEW YORK, NEW YORK, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'DavidCharlesHaller@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 0, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, NULL, 0, 0, 19, 0, 1, 'florist','normal'),
+ (1107, 'Hank Pym', '09854837G', 'ANT MAN', 'Hawk', 'ANTHILL, SAN FRANCISCO, CALIFORNIA', 'Gotham', 46460, 1111111111, 222222222, 1, 'HankPym@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, 0, NULL, 0, 0, 19, 0, 1, 'florist','normal'),
+ (1108, 'Charles Xavier', '22641921P', 'PROFESSOR X', 'Beast', '3800 VICTORY PKWY, CINCINNATI, OH 45207, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'CharlesXavier@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, NULL, 0, 0, 19, 0, 1, 'florist','normal'),
+ (1109, 'Bruce Banner', '16104829E', 'HULK', 'Black widow', 'SOMEWHERE IN NEW YORK', 'Gotham', 46460, 1111111111, 222222222, 1, 'BruceBanner@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, 0, NULL, 0, 0, 9, 0, 1, 'florist','normal'),
+ (1110, 'Jessica Jones', '58282869H', 'JESSICA JONES', 'Luke Cage', 'NYCC 2015 POSTER', 'Gotham', 46460, 1111111111, 222222222, 1, 'JessicaJones@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, 0, NULL, 0, 0, NULL, 0, 1, 'florist','normal'),
+ (1111, 'Missing', NULL, 'MISSING MAN', 'Anton', 'THE SPACE, UNIVERSE FAR AWAY', 'Gotham', 46460, 1111111111, 222222222, 1, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 4, 0, 1, 0, NULL, 1, 0, NULL, 0, 1, 'others','normal'),
+ (1112, 'Trash', NULL, 'GARBAGE MAN', 'Unknown name', 'NEW YORK CITY, UNDERGROUND', 'Gotham', 46460, 1111111111, 222222222, 1, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 4, 0, 1, 0, NULL, 1, 0, NULL, 0, 1, 'others','normal');
INSERT INTO `vn`.`client`(`id`, `name`, `fi`, `socialName`, `contact`, `street`, `city`, `postcode`, `isRelevant`, `email`, `iban`,`dueDay`,`accountingAccount`, `isEqualizated`, `provinceFk`, `hasToInvoice`, `credit`, `countryFk`, `isActive`, `gestdocFk`, `quality`, `payMethodFk`,`created`, `isTaxDataChecked`)
SELECT id, name, CONCAT(RPAD(CONCAT(id,9),8,id),'A'), CONCAT(name, 'Social'), CONCAT(name, 'Contact'), CONCAT(name, 'Street'), 'GOTHAM', 46460, 1, CONCAT(name,'@mydomain.com'), NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5, util.VN_CURDATE(), 1
@@ -1013,7 +1013,7 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric
(4, 4, 1, 'Melee weapon heavy shield 100cm', 20, 1.69, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)),
(5, 1, 2, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)),
(6, 1, 3, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH)),
- (7, 2, 11, 'Melee weapon combat fist 15cm', 15, 7.44, 0, 0, 0, util.VN_CURDATE()),
+ (7, 2, 11, 'Melee weapon combat fist 15cm', 15, 7.74, 0, 0, 0, util.VN_CURDATE()),
(8, 4, 11, 'Melee weapon heavy shield 100cm', 10, 1.79, 0, 0, 0, util.VN_CURDATE()),
(9, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE()),
(10, 2, 16, 'Melee weapon combat fist 15cm', 10, 7.09, 0, 0, 0, util.VN_CURDATE()),
@@ -2973,4 +2973,4 @@ INSERT INTO vn.XDiario (id, ASIEN, FECHA, SUBCTA, CONTRA, CONCEPTO, EURODEBE, EU
(3, 1.0, util.VN_CURDATE(), '4770000010', '4300001104', 'Inmovilizado pendiente : n/fra T3333333 Tony Stark', NULL, 0.81, 8.07, 'T', '3333333', 10.00, NULL, NULL, NULL, NULL, NULL, '', '2', '', 1, 1, '06089160W', 'IRON MAN', 1, 1, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, 1, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1),
(4, 2.0, util.VN_CURDATE(), '4300001104', NULL, 'n/fra T4444444', 8.88, NULL, NULL, NULL, '0', NULL, 0.00, NULL, NULL, NULL, NULL, NULL, '2', NULL, 1, 2, 'I.F.', 'Nombre Importador', 1, 0, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0),
(5, 2.0, util.VN_CURDATE(), '2000000000', '4300001104', 'n/fra T4444444 Tony Stark', NULL, 8.07, NULL, NULL, '0', NULL, 0.00, NULL, NULL, NULL, NULL, NULL, '2', NULL, 1, 2, 'I.F.', 'Nombre Importador', 1, 0, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0),
- (6, 2.0, util.VN_CURDATE(), '4770000010', '4300001104', 'Inmovilizado pendiente : n/fra T4444444 Tony Stark', NULL, 0.81, 8.07, 'T', '4444444', 10.00, NULL, NULL, NULL, NULL, NULL, '', '2', '', 1, 1, '06089160W', 'IRON MAN', 1, 1, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, 1, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0);
\ No newline at end of file
+ (6, 2.0, util.VN_CURDATE(), '4770000010', '4300001104', 'Inmovilizado pendiente : n/fra T4444444 Tony Stark', NULL, 0.81, 8.07, 'T', '4444444', 10.00, NULL, NULL, NULL, NULL, NULL, '', '2', '', 1, 1, '06089160W', 'IRON MAN', 1, 1, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, 1, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0);
diff --git a/db/tests/vn/item_getBalance.spec.js b/db/tests/vn/item_getBalance.spec.js
index 2e24d5ce7d..74e1e6659f 100644
--- a/db/tests/vn/item_getBalance.spec.js
+++ b/db/tests/vn/item_getBalance.spec.js
@@ -6,13 +6,13 @@ describe('item_getBalance()', () => {
let stmts = [];
let params = {
- warehouseFk: 1,
- itemFk: 1
+ itemFk: 1,
+ warehouseFk: 1
};
const conn = await app.models.Item.dataSource.connector;
- stmts.push(new ParameterizedSQL('CALL vn.item_getBalance(?, ?)', [
+ stmts.push(new ParameterizedSQL('CALL vn.item_getBalance(?, ?, NULL)', [
params.warehouseFk,
params.itemFk
]));
diff --git a/db/tests/vn/logAddWithUser.spec.js b/db/tests/vn/logAddWithUser.spec.js
deleted file mode 100644
index 8711769d00..0000000000
--- a/db/tests/vn/logAddWithUser.spec.js
+++ /dev/null
@@ -1,42 +0,0 @@
-const app = require('vn-loopback/server/server');
-const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
-
-describe('logAddWithUser()', () => {
- it('should log any action taken by the user in a table ending in Log', async() => {
- let stmts = [];
- let stmt;
-
- stmts.push('START TRANSACTION');
-
- let params = {
- ticketFk: 1,
- userId: 9,
- actionCode: 'update',
- targetEntity: 'ticket',
- description: 'we are testing stuff'
- };
-
- stmt = new ParameterizedSQL('CALL vn.logAddWithUser(?, ?, ?, ?, ?)', [
- params.ticketFk,
- params.userId,
- params.actionCode,
- params.targetEntity,
- params.description
- ]);
- stmts.push(stmt);
-
- stmt = new ParameterizedSQL('SELECT * FROM vn.ticketLog WHERE description = ?', [
- params.description
- ]);
- let ticketLogIndex = stmts.push(stmt) - 1;
-
- stmts.push('ROLLBACK');
-
- let sql = ParameterizedSQL.join(stmts, ';');
- let result = await app.models.Ticket.rawStmt(sql);
-
- savedDescription = result[ticketLogIndex][0].description;
-
- expect(savedDescription).toEqual(params.description);
- });
-});
diff --git a/db/tests/vn/timeControl_calculateByUser.spec.js b/db/tests/vn/timeControl_calculateByUser.spec.js
index 73e00ec3ae..0b385d2c9f 100644
--- a/db/tests/vn/timeControl_calculateByUser.spec.js
+++ b/db/tests/vn/timeControl_calculateByUser.spec.js
@@ -14,14 +14,6 @@ describe('timeControl_calculateByUser()', () => {
let stmts = [];
let stmt;
- stmts.push('START TRANSACTION');
-
- stmts.push(`
- DROP TEMPORARY TABLE IF EXISTS
- tmp.timeControlCalculate,
- tmp.timeBusinessCalculate
- `);
-
let params = {
workerID: 1106,
start: start,
@@ -37,17 +29,15 @@ describe('timeControl_calculateByUser()', () => {
let tableIndex = stmts.push('SELECT * FROM tmp.timeControlCalculate') - 1;
- stmts.push('ROLLBACK');
-
let sql = ParameterizedSQL.join(stmts, ';');
let result = await app.models.Ticket.rawStmt(sql);
let [timeControlCalculateTable] = result[tableIndex];
- expect(timeControlCalculateTable.timeWorkSeconds).toEqual(29400);
+ expect(timeControlCalculateTable.timeWorkSeconds).toEqual(28200);
});
-
- it(`should return the worked hours between last sunday and monday`, async() => {
+ // #2261
+ xit(`should return the worked hours between last sunday and monday`, async() => {
let lastSunday = Date.vnNew();
let daysSinceSunday = lastSunday.getDay();
if (daysSinceSunday === 0) // this means today is sunday but you need the previous sunday :)
@@ -65,13 +55,7 @@ describe('timeControl_calculateByUser()', () => {
stmts.push('START TRANSACTION');
- stmts.push(`
- DROP TEMPORARY TABLE IF EXISTS
- tmp.timeControlCalculate,
- tmp.timeBusinessCalculate
- `);
-
- const workerID = 1107;
+ const workerID = 1108;
stmt = new ParameterizedSQL(`
INSERT INTO vn.workerTimeControl(userFk, timed, manual, direction)
diff --git a/db/tests/vn/zone_getFromGeo.spec.js b/db/tests/vn/zone_getFromGeo.spec.js
index 0dccf92cc6..74b6e00ccb 100644
--- a/db/tests/vn/zone_getFromGeo.spec.js
+++ b/db/tests/vn/zone_getFromGeo.spec.js
@@ -7,7 +7,7 @@ describe('zone zone_getFromGeo()', () => {
let stmt;
stmts.push('START TRANSACTION');
- let geoFk = 17;
+ let geoFk = 16;
stmt = new ParameterizedSQL('CALL zone_getFromGeo(?)', [
geoFk,
diff --git a/e2e/paths/05-ticket/06_basic_data_steps.spec.js b/e2e/paths/05-ticket/06_basic_data_steps.spec.js
index 55aec45fb0..77f0e0459c 100644
--- a/e2e/paths/05-ticket/06_basic_data_steps.spec.js
+++ b/e2e/paths/05-ticket/06_basic_data_steps.spec.js
@@ -75,7 +75,7 @@ describe('Ticket Edit basic data path', () => {
const result = await page
.waitToGetProperty(selectors.ticketBasicData.stepTwoTotalPriceDif, 'innerText');
- expect(result).toContain('-€232.75');
+ expect(result).toContain('-€228.25');
});
it(`should select a new reason for the changes made then click on finalize`, async() => {
diff --git a/loopback/locale/es.json b/loopback/locale/es.json
index 73a3920d2d..756ce301a9 100644
--- a/loopback/locale/es.json
+++ b/loopback/locale/es.json
@@ -316,5 +316,6 @@
"The ticket doesn't exist.": "No existe el ticket.",
"Social name should be uppercase": "La razón social debe ir en mayúscula",
"Street should be uppercase": "La dirección fiscal debe ir en mayúscula",
+ "The response is not a PDF": "La respuesta no es un PDF",
"Ticket without Route": "Ticket sin ruta"
}
diff --git a/modules/client/back/methods/address/getAddress.js b/modules/client/back/methods/address/getAddress.js
new file mode 100644
index 0000000000..a62a0ec6ff
--- /dev/null
+++ b/modules/client/back/methods/address/getAddress.js
@@ -0,0 +1,24 @@
+module.exports = Self => {
+ Self.remoteMethod('getAddress', {
+ description: 'Get all activated address with loses client activated',
+ accessType: 'READ',
+ accepts: [],
+ returns: {
+ type: ['object'],
+ root: true
+ },
+ http: {
+ path: `/getAddress`,
+ verb: 'GET'
+ }
+ });
+ Self.getAddress = async() => {
+ let getAddressQuery = `
+ SELECT a.id, a.nickname
+ FROM vn.address a
+ JOIN vn.client c ON a.clientFk = c.id AND c.isActive <> FALSE
+ WHERE c.typeFk = 'loses' AND a.isActive <> FALSE;`;
+
+ return result = await Self.rawSql(getAddressQuery);
+ };
+};
diff --git a/modules/client/back/methods/address/specs/getAddress.spec.js b/modules/client/back/methods/address/specs/getAddress.spec.js
new file mode 100644
index 0000000000..a86e1007c2
--- /dev/null
+++ b/modules/client/back/methods/address/specs/getAddress.spec.js
@@ -0,0 +1,9 @@
+const {models} = require('vn-loopback/server/server');
+
+describe('getAddress()', () => {
+ it('return list of activated address with loses client activated', async() => {
+ let response = await models.Address.getAddress();
+
+ expect(response.length).toEqual(2);
+ });
+});
diff --git a/modules/client/back/methods/client/filter.js b/modules/client/back/methods/client/filter.js
index 3bf29501b7..eaf4ecf308 100644
--- a/modules/client/back/methods/client/filter.js
+++ b/modules/client/back/methods/client/filter.js
@@ -80,10 +80,15 @@ module.exports = Self => {
Object.assign(myOptions, options);
if (args.zoneFk) {
- query = `CALL vn.zone_getPostalCode(?)`;
- const [geos] = await Self.rawSql(query, [args.zoneFk]);
- for (let geo of geos)
- postalCode.push(geo.name);
+ let stmts = [];
+ stmts.push(new ParameterizedSQL('CALL vn.zone_getPostalCode(?)', [args.zoneFk]));
+ stmts.push(`SELECT name FROM tmp.zoneNodes`);
+ stmts.push(`DROP TEMPORARY TABLE tmp.zoneNodes`);
+ const sql = ParameterizedSQL.join(stmts, ';');
+ const [results] = await conn.executeStmt(sql);
+
+ for (let result of results)
+ postalCode.push(result.name);
}
const where = buildFilter(ctx.args, (param, value) => {
diff --git a/modules/client/back/models/address.js b/modules/client/back/models/address.js
index 3a1157add0..4a93b5d5c1 100644
--- a/modules/client/back/models/address.js
+++ b/modules/client/back/models/address.js
@@ -3,6 +3,8 @@ let getFinalState = require('vn-loopback/util/hook').getFinalState;
let isMultiple = require('vn-loopback/util/hook').isMultiple;
module.exports = Self => {
+ require('../methods/address/getAddress')(Self);
+
Self.validateAsync('isEqualizated', cannotHaveET, {
message: 'Cannot check Equalization Tax in this NIF/CIF'
});
diff --git a/modules/client/front/summary/index.html b/modules/client/front/summary/index.html
index 15a55ec8c9..c622913bb9 100644
--- a/modules/client/front/summary/index.html
+++ b/modules/client/front/summary/index.html
@@ -255,7 +255,7 @@
value="{{$ctrl.summary.averageInvoiced.invoiced | currency: 'EUR':2}}">
+ value="{{$ctrl.claimingRate($ctrl.summary.claimsRatio.claimingRate / 100) | percentage}}">
diff --git a/modules/item/back/methods/item/setVisibleDiscard.js b/modules/item/back/methods/item/setVisibleDiscard.js
new file mode 100644
index 0000000000..bcdda1ced6
--- /dev/null
+++ b/modules/item/back/methods/item/setVisibleDiscard.js
@@ -0,0 +1,37 @@
+module.exports = Self => {
+ Self.remoteMethodCtx('setVisibleDiscard', {
+ description: 'Change visible for item',
+ accessType: 'WRITE',
+ accepts: [{
+ arg: 'itemFk',
+ type: 'Number',
+ required: false,
+ description: 'The item id'
+ }, {
+ arg: 'warehouseFk',
+ type: 'Number',
+ required: true,
+ description: 'The warehouse of item'
+ }, {
+ arg: 'quantity',
+ type: 'Number',
+ required: true,
+ description: 'The quantity to modify'
+ },
+ {
+ arg: 'addressFk',
+ type: 'Number',
+ required: true,
+ description: 'The address id'
+ }],
+ http: {
+ path: `/setVisibleDiscard`,
+ verb: 'POST'
+ }
+ });
+
+ Self.setVisibleDiscard = async(ctx, itemFk, warehouseFk, quantity, addressFk) => {
+ const query = `CALL vn.item_setVisibleDiscard(?, ?, ?, ?)`;
+ await Self.rawSql(query, [itemFk, warehouseFk, quantity, addressFk]);
+ };
+};
diff --git a/modules/item/back/models/item.js b/modules/item/back/models/item.js
index 61c5c2588c..eac1ecb7d5 100644
--- a/modules/item/back/models/item.js
+++ b/modules/item/back/models/item.js
@@ -16,6 +16,7 @@ module.exports = Self => {
require('../methods/item/createIntrastat')(Self);
require('../methods/item/buyerWasteEmail')(Self);
require('../methods/item/labelPdf')(Self);
+ require('../methods/item/setVisibleDiscard')(Self);
Self.validatesPresenceOf('originFk', {message: 'Cannot be blank'});
diff --git a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js
index 4e0fb85b78..c3da7f08bc 100644
--- a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js
+++ b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js
@@ -39,7 +39,7 @@ describe('SalesMonitor salesFilter()', () => {
const filter = {};
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
- expect(result.length).toBeGreaterThan(15);
+ expect(result.length).toBeGreaterThan(11);
await tx.rollback();
} catch (e) {
@@ -151,7 +151,7 @@ describe('SalesMonitor salesFilter()', () => {
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
const firstRow = result[0];
- expect(result.length).toEqual(12);
+ expect(result.length).toEqual(15);
expect(firstRow.alertLevel).not.toEqual(0);
await tx.rollback();
diff --git a/modules/route/back/methods/route/downloadCmrsZip.js b/modules/route/back/methods/route/downloadCmrsZip.js
new file mode 100644
index 0000000000..532e019b6f
--- /dev/null
+++ b/modules/route/back/methods/route/downloadCmrsZip.js
@@ -0,0 +1,71 @@
+const JSZip = require('jszip');
+const axios = require('axios');
+const UserError = require('vn-loopback/util/user-error');
+
+module.exports = Self => {
+ Self.remoteMethodCtx('downloadCmrsZip', {
+ description: 'Download a zip file with multiple cmrs pdfs',
+ accessType: 'READ',
+ accepts: [
+ {
+ arg: 'ids',
+ type: 'string',
+ description: 'The cmrs ids',
+ }
+ ],
+ returns: [
+ {
+ arg: 'body',
+ type: 'file',
+ root: true
+ }, {
+ arg: 'Content-Type',
+ type: 'string',
+ http: {target: 'header'}
+ }, {
+ arg: 'Content-Disposition',
+ type: 'string',
+ http: {target: 'header'}
+ }
+ ],
+ http: {
+ path: '/downloadCmrsZip',
+ verb: 'GET'
+ }
+ });
+
+ Self.downloadCmrsZip = async function(ctx, ids, options) {
+ const models = Self.app.models;
+ const myOptions = {};
+ const token = ctx.req.accessToken;
+ const zip = new JSZip();
+
+ if (typeof options == 'object')
+ Object.assign(myOptions, options);
+
+ const zipConfig = await models.ZipConfig.findOne(null, myOptions);
+ let totalSize = 0;
+ ids = ids.split(',');
+ try {
+ for (let id of ids) {
+ if (zipConfig && totalSize > zipConfig.maxSize) throw new UserError('Files are too large');
+ const response = await axios.get(
+ `${ctx.req.headers.referer}api/Routes/${id}/cmr?access_token=${token.id}`, {
+ ...myOptions,
+ responseType: 'arraybuffer',
+ });
+
+ if (response.headers['content-type'] !== 'application/pdf')
+ throw new UserError(`The response is not a PDF`);
+
+ zip.file(`${id}.pdf`, response.data, { binary: true });
+ }
+
+ const zipStream = zip.generateNodeStream({ streamFiles: true });
+
+ return [zipStream, 'application/zip', `filename="cmrs.zip"`];
+ } catch (e) {
+ throw e;
+ }
+ };
+};
diff --git a/modules/route/back/methods/route/getExternalCmrs.js b/modules/route/back/methods/route/getExternalCmrs.js
index 7b3772c9e2..4750e53a1e 100644
--- a/modules/route/back/methods/route/getExternalCmrs.js
+++ b/modules/route/back/methods/route/getExternalCmrs.js
@@ -22,6 +22,11 @@ module.exports = Self => {
type: 'integer',
description: 'The worker id',
},
+ {
+ arg: 'routeFk',
+ type: 'integer',
+ description: 'The route id',
+ },
{
arg: 'country',
type: 'string',
@@ -57,6 +62,7 @@ module.exports = Self => {
filter,
cmrFk,
ticketFk,
+ routeFk,
country,
clientFk,
hasCmrDms,
@@ -66,6 +72,7 @@ module.exports = Self => {
const params = {
cmrFk,
ticketFk,
+ routeFk,
country,
clientFk,
hasCmrDms,
@@ -89,37 +96,38 @@ module.exports = Self => {
let stmts = [];
const stmt = new ParameterizedSQL(`
- SELECT *
- FROM (
- SELECT t.cmrFk,
- t.id ticketFk,
- co.country,
- t.clientFk,
- IF(sub.id, TRUE, FALSE) hasCmrDms,
- DATE(t.shipped) shipped
- FROM ticket t
- JOIN ticketState ts ON ts.ticketFk = t.id
- JOIN state s ON s.id = ts.stateFk
- JOIN alertLevel al ON al.id = s.alertLevel
- JOIN client c ON c.id = t.clientFk
- JOIN address a ON a.id = t.addressFk
- JOIN province p ON p.id = a.provinceFk
- JOIN country co ON co.id = p.countryFk
- JOIN agencyMode am ON am.id = t.agencyModeFk
- JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
- JOIN warehouse w ON w.id = t.warehouseFk
- LEFT JOIN (
- SELECT td.ticketFk, d.id
- FROM ticketDms td
- JOIN dms d ON d.id = td.dmsFk
- JOIN dmsType dt ON dt.id = d.dmsTypeFk
- WHERE dt.name = 'cmr'
- ) sub ON sub.ticketFk = t.id
- WHERE co.code <> 'ES'
- AND am.name <> 'ABONO'
- AND w.code = 'ALG'
- AND dm.code = 'DELIVERY'
- AND t.cmrFk
+ SELECT *
+ FROM (
+ SELECT t.cmrFk,
+ t.id ticketFk,
+ t.routeFk,
+ co.country,
+ t.clientFk,
+ IF(sub.id, TRUE, FALSE) hasCmrDms,
+ DATE(t.shipped) shipped
+ FROM ticket t
+ JOIN ticketState ts ON ts.ticketFk = t.id
+ JOIN state s ON s.id = ts.stateFk
+ JOIN alertLevel al ON al.id = s.alertLevel
+ JOIN client c ON c.id = t.clientFk
+ JOIN address a ON a.id = t.addressFk
+ JOIN province p ON p.id = a.provinceFk
+ JOIN country co ON co.id = p.countryFk
+ JOIN agencyMode am ON am.id = t.agencyModeFk
+ JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
+ JOIN warehouse w ON w.id = t.warehouseFk
+ LEFT JOIN (
+ SELECT td.ticketFk, d.id
+ FROM ticketDms td
+ JOIN dms d ON d.id = td.dmsFk
+ JOIN dmsType dt ON dt.id = d.dmsTypeFk
+ WHERE dt.name = 'cmr'
+ ) sub ON sub.ticketFk = t.id
+ WHERE co.code <> 'ES'
+ AND am.name <> 'ABONO'
+ AND w.code = 'ALG'
+ AND dm.code = 'DELIVERY'
+ AND t.cmrFk
) sub
`);
diff --git a/modules/route/back/models/route.js b/modules/route/back/models/route.js
index 7e61acf25f..65fa43ab54 100644
--- a/modules/route/back/models/route.js
+++ b/modules/route/back/models/route.js
@@ -16,6 +16,7 @@ module.exports = Self => {
require('../methods/route/downloadZip')(Self);
require('../methods/route/cmr')(Self);
require('../methods/route/getExternalCmrs')(Self);
+ require('../methods/route/downloadCmrsZip')(Self);
Self.validate('kmStart', validateDistance, {
message: 'Distance must be lesser than 1000'
diff --git a/modules/ticket/back/methods/sale/specs/updatePrice.spec.js b/modules/ticket/back/methods/sale/specs/updatePrice.spec.js
index 133be8de36..9d1403df09 100644
--- a/modules/ticket/back/methods/sale/specs/updatePrice.spec.js
+++ b/modules/ticket/back/methods/sale/specs/updatePrice.spec.js
@@ -108,7 +108,7 @@ describe('sale updatePrice()', () => {
}}, options);
expect(updatedSale.price).toBe(price);
- expect(createdSaleComponent.value).toEqual(-2.04);
+ expect(createdSaleComponent.value).toEqual(-2.34);
const updatedSalesPersonMana = await models.WorkerMana.findById(18, null, options);
diff --git a/modules/ticket/back/methods/ticket/specs/filter.spec.js b/modules/ticket/back/methods/ticket/specs/filter.spec.js
index 510446cab0..2e5730980b 100644
--- a/modules/ticket/back/methods/ticket/specs/filter.spec.js
+++ b/modules/ticket/back/methods/ticket/specs/filter.spec.js
@@ -68,7 +68,7 @@ describe('ticket filter()', () => {
const filter = {};
const result = await models.Ticket.filter(ctx, filter, options);
- expect(result.length).toEqual(6);
+ expect(result.length).toEqual(9);
await tx.rollback();
} catch (e) {
@@ -154,7 +154,7 @@ describe('ticket filter()', () => {
const secondRow = result[1];
const thirdRow = result[2];
- expect(result.length).toBeGreaterThan(15);
+ expect(result.length).toBeGreaterThan(11);
expect(firstRow.state).toEqual('Entregado');
expect(secondRow.state).toEqual('Entregado');
expect(thirdRow.state).toEqual('Entregado');
diff --git a/package.json b/package.json
index 44a651af4e..d250071a66 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "salix-back",
- "version": "23.38.01",
+ "version": "23.40.01",
"author": "Verdnatura Levante SL",
"description": "Salix backend",
"license": "GPL-3.0",
diff --git a/print/templates/email/printer-setup/locale/es.yml b/print/templates/email/printer-setup/locale/es.yml
index b96d6d5f41..39e83b1a88 100644
--- a/print/templates/email/printer-setup/locale/es.yml
+++ b/print/templates/email/printer-setup/locale/es.yml
@@ -8,8 +8,8 @@ description:
https://www.youtube.com/watch?v=qhb0kgQF3o8. También
necesitarás el GoLabel, el programa para imprimir las cintas.
- downloadFrom: Puedes descargarlo desde este enlace https://godex.s3-accelerate.amazonaws.com/_6f5glRrVhQAEBGhdUsqJA.file?v01
+ downloadFrom: Puedes descargarlo desde este enlace https://cdn.verdnatura.es/public/GoLabel.zip
downloadDriver: En este enlace puedes descargar el driver de la impresora https://es.seagullscientific.com/support/downloads/drivers/godex/download/
sections:
@@ -40,4 +40,4 @@ help: Cualquier duda que te surja, no dudes en consultarla, ¡estamos pa
atenderte!
salesPersonName: Soy tu comercial y mi nombre es
salesPersonPhone: Teléfono y whatsapp
-salesPersonEmail: Dirección de e-mail
\ No newline at end of file
+salesPersonEmail: Dirección de e-mail