Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 4223-claim_observations
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
This commit is contained in:
commit
6370471bd5
|
@ -200,6 +200,31 @@ module.exports = Self => {
|
||||||
const toTable = table.toTable;
|
const toTable = table.toTable;
|
||||||
const baseName = table.fileName;
|
const baseName = table.fileName;
|
||||||
|
|
||||||
|
const firstEntry = entries[0];
|
||||||
|
const entryName = firstEntry.entryName;
|
||||||
|
const startIndex = (entryName.length - 10);
|
||||||
|
const endIndex = (entryName.length - 4);
|
||||||
|
const dateString = entryName.substring(startIndex, endIndex);
|
||||||
|
|
||||||
|
const lastUpdated = new Date();
|
||||||
|
|
||||||
|
let updated = null;
|
||||||
|
if (file.updated) {
|
||||||
|
updated = new Date(file.updated);
|
||||||
|
updated.setHours(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Format string date to a date object
|
||||||
|
lastUpdated.setFullYear(`20${dateString.substring(4, 6)}`);
|
||||||
|
lastUpdated.setMonth(parseInt(dateString.substring(2, 4)) - 1);
|
||||||
|
lastUpdated.setDate(dateString.substring(0, 2));
|
||||||
|
lastUpdated.setHours(0, 0, 0, 0);
|
||||||
|
|
||||||
|
if (updated && lastUpdated <= updated) {
|
||||||
|
console.debug(`Table ${toTable} already updated, skipping...`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const tx = await Self.beginTransaction({});
|
const tx = await Self.beginTransaction({});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
CREATE TABLE `vn`.`mdbBranch` (
|
CREATE TABLE IF NOT EXISTS `vn`.`mdbBranch` (
|
||||||
`name` VARCHAR(255),
|
`name` VARCHAR(255),
|
||||||
PRIMARY KEY(`name`)
|
PRIMARY KEY(`name`)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE `vn`.`mdbVersion` (
|
CREATE TABLE IF NOT EXISTS `vn`.`mdbVersion` (
|
||||||
`app` VARCHAR(255) NOT NULL,
|
`app` VARCHAR(255) NOT NULL,
|
||||||
`branchFk` VARCHAR(255) NOT NULL,
|
`branchFk` VARCHAR(255) NOT NULL,
|
||||||
`version` INT,
|
`version` INT,
|
||||||
CONSTRAINT `mdbVersion_branchFk` FOREIGN KEY (`branchFk`) REFERENCES `vn`.`mdbBranch` (`name`) ON DELETE CASCADE ON UPDATE CASCADE
|
CONSTRAINT `mdbVersion_branchFk` FOREIGN KEY (`branchFk`) REFERENCES `vn`.`mdbBranch` (`name`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
);
|
);
|
||||||
|
|
||||||
INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`)
|
INSERT IGNORE INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`)
|
||||||
VALUES('MdbVersion', '*', '*', 'ALLOW', 'ROLE', 'developer');
|
VALUES(318, 'MdbVersion', '*', '*', 'ALLOW', 'ROLE', 'developer');
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
alter table `vn`.`client`
|
||||||
|
add hasIncoterms tinyint(1) default 0 not null comment 'Received incoterms authorization from client';
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
INSERT INTO `vn`.`sample` (code, description, isVisible, hasCompany, hasPreview, datepickerEnabled)
|
||||||
|
VALUES ('incoterms-authorization', 'Autorización de incoterms', 1, 1, 1, 0);
|
|
@ -137,7 +137,7 @@ INSERT INTO `vn`.`country`(`id`, `country`, `isUeeMember`, `code`, `currencyFk`,
|
||||||
INSERT INTO `vn`.`warehouseAlias`(`id`, `name`)
|
INSERT INTO `vn`.`warehouseAlias`(`id`, `name`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 'Main Warehouse'),
|
(1, 'Main Warehouse'),
|
||||||
(2, 'Silla');
|
(2, 'Gotham');
|
||||||
|
|
||||||
INSERT INTO `vn`.`warehouse`(`id`, `name`, `code`, `isComparative`, `isInventory`, `hasAvailable`, `isManaged`, `hasStowaway`, `hasDms`, `hasComission`, `aliasFk`, `countryFk`, `hasProduction`)
|
INSERT INTO `vn`.`warehouse`(`id`, `name`, `code`, `isComparative`, `isInventory`, `hasAvailable`, `isManaged`, `hasStowaway`, `hasDms`, `hasComission`, `aliasFk`, `countryFk`, `hasProduction`)
|
||||||
VALUES
|
VALUES
|
||||||
|
@ -199,8 +199,8 @@ INSERT INTO `vn`.`agency`(`id`, `name`, `warehouseFk`, `isVolumetric`, `bankFk`,
|
||||||
(4, 'Entanglement' , 1, 0, 1, 1),
|
(4, 'Entanglement' , 1, 0, 1, 1),
|
||||||
(5, 'Quantum break device' , 1, 0, 1, 1),
|
(5, 'Quantum break device' , 1, 0, 1, 1),
|
||||||
(6, 'Walking' , 1, 0, 1, 1),
|
(6, 'Walking' , 1, 0, 1, 1),
|
||||||
(7, 'Silla247' , 1, 0, 1, 1),
|
(7, 'Gotham247' , 1, 0, 1, 1),
|
||||||
(8, 'Silla247Expensive' , 1, 0, 1, 1),
|
(8, 'Gotham247Expensive' , 1, 0, 1, 1),
|
||||||
(9, 'Refund' , 1, 0, 1, 1),
|
(9, 'Refund' , 1, 0, 1, 1),
|
||||||
(10, 'Other agency' , 1, 0, 1, 1);
|
(10, 'Other agency' , 1, 0, 1, 1);
|
||||||
|
|
||||||
|
@ -210,8 +210,8 @@ UPDATE `vn`.`agencyMode` SET `id` = 3 WHERE `name` = 'Teleportation device';
|
||||||
UPDATE `vn`.`agencyMode` SET `id` = 4 WHERE `name` = 'Entanglement';
|
UPDATE `vn`.`agencyMode` SET `id` = 4 WHERE `name` = 'Entanglement';
|
||||||
UPDATE `vn`.`agencyMode` SET `id` = 5 WHERE `name` = 'Quantum break device';
|
UPDATE `vn`.`agencyMode` SET `id` = 5 WHERE `name` = 'Quantum break device';
|
||||||
UPDATE `vn`.`agencyMode` SET `id` = 6 WHERE `name` = 'Walking';
|
UPDATE `vn`.`agencyMode` SET `id` = 6 WHERE `name` = 'Walking';
|
||||||
UPDATE `vn`.`agencyMode` SET `id` = 7 WHERE `name` = 'Silla247';
|
UPDATE `vn`.`agencyMode` SET `id` = 7 WHERE `name` = 'Gotham247';
|
||||||
UPDATE `vn`.`agencyMode` SET `id` = 8 WHERE `name` = 'Silla247Expensive';
|
UPDATE `vn`.`agencyMode` SET `id` = 8 WHERE `name` = 'Gotham247Expensive';
|
||||||
UPDATE `vn`.`agencyMode` SET `id` = 23 WHERE `name` = 'Refund';
|
UPDATE `vn`.`agencyMode` SET `id` = 23 WHERE `name` = 'Refund';
|
||||||
UPDATE `vn`.`agencyMode` SET `id` = 10 WHERE `name` = 'Other agency';
|
UPDATE `vn`.`agencyMode` SET `id` = 10 WHERE `name` = 'Other agency';
|
||||||
|
|
||||||
|
@ -263,7 +263,7 @@ INSERT INTO `vn`.`province`(`id`, `name`, `countryFk`, `autonomyFk`, `warehouseF
|
||||||
INSERT INTO `vn`.`town`(`id`, `name`, `provinceFk`)
|
INSERT INTO `vn`.`town`(`id`, `name`, `provinceFk`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 'Valencia', 1),
|
(1, 'Valencia', 1),
|
||||||
(2, 'Silla', 1),
|
(2, 'Gotham', 1),
|
||||||
(3, 'Algemesi', 1),
|
(3, 'Algemesi', 1),
|
||||||
(4, 'Alzira', 1),
|
(4, 'Alzira', 1),
|
||||||
(5, 'Quito', 5);
|
(5, 'Quito', 5);
|
||||||
|
@ -297,21 +297,21 @@ INSERT INTO `vn`.`contactChannel`(`id`, `name`)
|
||||||
|
|
||||||
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`,`mailAddress`,`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`,`mailAddress`,`hasToInvoiceByAddress`,`isTaxDataChecked`,`isFreezed`,`creditInsurance`,`isCreatedAsServed`,`hasInvoiceSimplified`,`salesPersonFk`,`isVies`,`eypbc`, `businessTypeFk`)
|
||||||
VALUES
|
VALUES
|
||||||
(1101, 'Bruce Wayne', '84612325V', 'Batman', 'Alfred', '1007 Mountain Drive, Gotham', 'Silla', 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, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'),
|
(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, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'),
|
||||||
(1102, 'Petter Parker', '87945234L', 'Spider man', 'Aunt May', '20 Ingram Street, Queens, USA', 'Silla', 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, 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, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'),
|
||||||
(1103, 'Clark Kent', '06815934E', 'Super man', 'lois lane', '344 Clinton Street, Apartament 3-D', 'Silla', 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, 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, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'),
|
||||||
(1104, 'Tony Stark', '06089160W', 'Iron man', 'Pepper Potts', '10880 Malibu Point, 90265', 'Silla', 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, 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, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'),
|
||||||
(1105, 'Max Eisenhardt', '251628698', 'Magneto', 'Rogue', 'Unknown Whereabouts', 'Silla', 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, 1, 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, 1, NULL, 0, 0, 18, 0, 1, 'florist'),
|
||||||
(1106, 'DavidCharlesHaller', '53136686Q', 'Legion', 'Charles Xavier', 'City of New York, New York, USA', 'Silla', 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, 1, 0, NULL, 0, 0, 19, 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, 1, 0, NULL, 0, 0, 19, 0, 1, 'florist'),
|
||||||
(1107, 'Hank Pym', '09854837G', 'Ant man', 'Hawk', 'Anthill, San Francisco, California', 'Silla', 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, 1, 0, 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, 1, 0, 0, NULL, 0, 0, 19, 0, 1, 'florist'),
|
||||||
(1108, 'Charles Xavier', '22641921P', 'Professor X', 'Beast', '3800 Victory Pkwy, Cincinnati, OH 45207, USA', 'Silla', 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, 1, 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, 1, NULL, 0, 0, 19, 0, 1, 'florist'),
|
||||||
(1109, 'Bruce Banner', '16104829E', 'Hulk', 'Black widow', 'Somewhere in New York', 'Silla', 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, 1, 0, 0, NULL, 0, 0, 9, 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, 1, 0, 0, NULL, 0, 0, 9, 0, 1, 'florist'),
|
||||||
(1110, 'Jessica Jones', '58282869H', 'Jessica Jones', 'Luke Cage', 'NYCC 2015 Poster', 'Silla', 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, 1, 0, 0, NULL, 0, 0, NULL, 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, 1, 0, 0, NULL, 0, 0, NULL, 0, 1, 'florist'),
|
||||||
(1111, 'Missing', NULL, 'Missing man', 'Anton', 'The space, Universe far away', 'Silla', 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, 1, 0, 1, 0, NULL, 1, 0, NULL, 0, 1, NULL),
|
(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, 1, 0, 1, 0, NULL, 1, 0, NULL, 0, 1, NULL),
|
||||||
(1112, 'Trash', NULL, 'Garbage man', 'Unknown name', 'New York city, Underground', 'Silla', 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, 1, 0, 1, 0, NULL, 1, 0, NULL, 0, 1, NULL);
|
(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, 1, 0, 1, 0, NULL, 1, 0, NULL, 0, 1, NULL);
|
||||||
|
|
||||||
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`)
|
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'), 'SILLA', 46460, 1, CONCAT(name,'@mydomain.com'), NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5, util.VN_CURDATE(), 1
|
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
|
||||||
FROM `account`.`role` `r`
|
FROM `account`.`role` `r`
|
||||||
WHERE `r`.`hasLogin` = 1;
|
WHERE `r`.`hasLogin` = 1;
|
||||||
|
|
||||||
|
@ -328,51 +328,51 @@ INSERT INTO `vn`.`clientConfig`(`riskTolerance`, `maxCreditRows`)
|
||||||
|
|
||||||
INSERT INTO `vn`.`address`(`id`, `nickname`, `street`, `city`, `postalCode`, `provinceFk`, `phone`, `mobile`, `isActive`, `clientFk`, `agencyModeFk`, `longitude`, `latitude`, `isEqualizated`, `isDefaultAddress`)
|
INSERT INTO `vn`.`address`(`id`, `nickname`, `street`, `city`, `postalCode`, `provinceFk`, `phone`, `mobile`, `isActive`, `clientFk`, `agencyModeFk`, `longitude`, `latitude`, `isEqualizated`, `isDefaultAddress`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 'Bruce Wayne', '1007 Mountain Drive, Gotham', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1101, 2, NULL, NULL, 0, 1),
|
(1, 'Bruce Wayne', '1007 Mountain Drive, Gotham', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1101, 2, NULL, NULL, 0, 1),
|
||||||
(2, 'Petter Parker', '20 Ingram Street', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 1),
|
(2, 'Petter Parker', '20 Ingram Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 1),
|
||||||
(3, 'Clark Kent', '344 Clinton Street', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1103, 2, NULL, NULL, 0, 1),
|
(3, 'Clark Kent', '344 Clinton Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, NULL, NULL, 0, 1),
|
||||||
(4, 'Tony Stark', '10880 Malibu Point', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1104, 2, NULL, NULL, 0, 1),
|
(4, 'Tony Stark', '10880 Malibu Point', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1104, 2, NULL, NULL, 0, 1),
|
||||||
(5, 'Max Eisenhardt', 'Unknown Whereabouts', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 1),
|
(5, 'Max Eisenhardt', 'Unknown Whereabouts', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 1),
|
||||||
(6, 'DavidCharlesHaller', 'Evil hideout', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 1),
|
(6, 'DavidCharlesHaller', 'Evil hideout', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 1),
|
||||||
(7, 'Hank Pym', 'Anthill', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 1),
|
(7, 'Hank Pym', 'Anthill', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 1),
|
||||||
(8, 'Charles Xavier', '3800 Victory Pkwy, Cincinnati, OH 45207, USA', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1108, 2, NULL, NULL, 0, 1),
|
(8, 'Charles Xavier', '3800 Victory Pkwy, Cincinnati, OH 45207, USA', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1108, 2, NULL, NULL, 0, 1),
|
||||||
(9, 'Bruce Banner', 'Somewhere in New York', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 1),
|
(9, 'Bruce Banner', 'Somewhere in New York', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 1),
|
||||||
(10, 'Jessica Jones', 'NYCC 2015 Poster', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1110, 2, NULL, NULL, 0, 1),
|
(10, 'Jessica Jones', 'NYCC 2015 Poster', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1110, 2, NULL, NULL, 0, 1),
|
||||||
(11, 'Missing', 'The space', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1111, 10, NULL, NULL, 0, 1),
|
(11, 'Missing', 'The space', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1111, 10, NULL, NULL, 0, 1),
|
||||||
(12, 'Trash', 'New York city', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1112, 10, NULL, NULL, 0, 1),
|
(12, 'Trash', 'New York city', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1112, 10, NULL, NULL, 0, 1),
|
||||||
(101, 'Somewhere in Thailand', 'address 01', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(101, 'Somewhere in Thailand', 'address 01', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(102, 'Somewhere in Poland', 'address 02', 'Silla', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0),
|
(102, 'Somewhere in Poland', 'address 02', 'Gotham', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(103, 'Somewhere in Japan', 'address 03', 'Silla', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0),
|
(103, 'Somewhere in Japan', 'address 03', 'Gotham', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(104, 'Somewhere in Spain', 'address 04', 'Silla', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0),
|
(104, 'Somewhere in Spain', 'address 04', 'Gotham', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(105, 'Somewhere in Potugal', 'address 05', 'Silla', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0),
|
(105, 'Somewhere in Potugal', 'address 05', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(106, 'Somewhere in UK', 'address 06', 'Silla', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0),
|
(106, 'Somewhere in UK', 'address 06', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(107, 'Somewhere in Valencia', 'address 07', 'Silla', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0),
|
(107, 'Somewhere in Valencia', 'address 07', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(108, 'Somewhere in Silla', 'address 08', 'Silla', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0),
|
(108, 'Somewhere in Gotham', 'address 08', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(109, 'Somewhere in London', 'address 09', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(109, 'Somewhere in London', 'address 09', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(110, 'Somewhere in Algemesi', 'address 10', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(110, 'Somewhere in Algemesi', 'address 10', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(111, 'Somewhere in Carlet', 'address 11', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(111, 'Somewhere in Carlet', 'address 11', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(112, 'Somewhere in Campanar', 'address 12', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(112, 'Somewhere in Campanar', 'address 12', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(113, 'Somewhere in Malilla', 'address 13', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(113, 'Somewhere in Malilla', 'address 13', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(114, 'Somewhere in France', 'address 14', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(114, 'Somewhere in France', 'address 14', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(115, 'Somewhere in Birmingham', 'address 15', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(115, 'Somewhere in Birmingham', 'address 15', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(116, 'Somewhere in Scotland', 'address 16', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(116, 'Somewhere in Scotland', 'address 16', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(117, 'Somewhere in util.VN_NOWhere', 'address 17', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(117, 'Somewhere in nowhere', 'address 17', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(118, 'Somewhere over the rainbow', 'address 18', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(118, 'Somewhere over the rainbow', 'address 18', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(119, 'Somewhere in Alberic', 'address 19', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(119, 'Somewhere in Alberic', 'address 19', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(120, 'Somewhere in Montortal', 'address 20', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
(120, 'Somewhere in Montortal', 'address 20', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0),
|
||||||
(121, 'the bat cave', 'address 21', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1101, 2, NULL, NULL, 0, 0),
|
(121, 'the bat cave', 'address 21', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1101, 2, NULL, NULL, 0, 0),
|
||||||
(122, 'NY roofs', 'address 22', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 0),
|
(122, 'NY roofs', 'address 22', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 0),
|
||||||
(123, 'The phone box', 'address 23', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1103, 2, NULL, NULL, 0, 0),
|
(123, 'The phone box', 'address 23', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, NULL, NULL, 0, 0),
|
||||||
(124, 'Stark tower Silla', 'address 24', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1104, 2, NULL, NULL, 0, 0),
|
(124, 'Stark tower Gotham', 'address 24', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1104, 2, NULL, NULL, 0, 0),
|
||||||
(125, 'The plastic cell', 'address 25', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 0),
|
(125, 'The plastic cell', 'address 25', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 0),
|
||||||
(126, 'Many places', 'address 26', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 0),
|
(126, 'Many places', 'address 26', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 0),
|
||||||
(127, 'Your pocket', 'address 27', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 0),
|
(127, 'Your pocket', 'address 27', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 0),
|
||||||
(128, 'Cerebro', 'address 28', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1108, 2, NULL, NULL, 0, 0),
|
(128, 'Cerebro', 'address 28', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1108, 2, NULL, NULL, 0, 0),
|
||||||
(129, 'Luke Cages Bar', 'address 29', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1110, 2, NULL, NULL, 0, 0),
|
(129, 'Luke Cages Bar', 'address 29', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1110, 2, NULL, NULL, 0, 0),
|
||||||
(130, 'Non valid address', 'address 30', 'Silla', 46460, 1, 1111111111, 222222222, 0, 1101, 2, NULL, NULL, 0, 0);
|
(130, 'Non valid address', 'address 30', 'Gotham', 46460, 1, 1111111111, 222222222, 0, 1101, 2, NULL, NULL, 0, 0);
|
||||||
|
|
||||||
INSERT INTO `vn`.`address`( `nickname`, `street`, `city`, `postalCode`, `provinceFk`, `isActive`, `clientFk`, `agencyModeFk`, `isDefaultAddress`)
|
INSERT INTO `vn`.`address`( `nickname`, `street`, `city`, `postalCode`, `provinceFk`, `isActive`, `clientFk`, `agencyModeFk`, `isDefaultAddress`)
|
||||||
SELECT name, CONCAT(name, 'Street'), 'SILLA', 46460, 1, 1, id, 2, 1
|
SELECT name, CONCAT(name, 'Street'), 'GOTHAM', 46460, 1, 1, id, 2, 1
|
||||||
FROM `account`.`role` `r`
|
FROM `account`.`role` `r`
|
||||||
WHERE `r`.`hasLogin` = 1;
|
WHERE `r`.`hasLogin` = 1;
|
||||||
|
|
||||||
|
@ -692,7 +692,7 @@ INSERT INTO `vn`.`stowaway`(`id`, `shipFk`, `created`)
|
||||||
|
|
||||||
INSERT INTO `vn`.`deliveryPoint` (`id`, `name`, `ubication`)
|
INSERT INTO `vn`.`deliveryPoint` (`id`, `name`, `ubication`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 'Silla','46460 Av Espioca 100-Silla');
|
(1, 'Gotham','1007 Mountain Drive, Gotham');
|
||||||
|
|
||||||
INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk`, `warehouseFk`, `description`, `m3`, `isActive`, `deliveryPointFk`)
|
INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk`, `warehouseFk`, `description`, `m3`, `isActive`, `deliveryPointFk`)
|
||||||
VALUES
|
VALUES
|
||||||
|
@ -1328,8 +1328,8 @@ INSERT INTO `vn`.`supplierAddress`(`id`, `supplierFk`, `nickname`, `street`, `pr
|
||||||
INSERT INTO `vn`.`supplier`(`id`, `name`, `nickname`,`account`,`countryFk`,`nif`, `commission`, `created`, `isActive`, `street`, `city`, `provinceFk`, `postCode`, `payMethodFk`, `payDemFk`, `payDay`, `taxTypeSageFk`, `withholdingSageFk`, `transactionTypeSageFk`, `workerFk`, `supplierActivityFk`, `isPayMethodChecked`, `healthRegister`)
|
INSERT INTO `vn`.`supplier`(`id`, `name`, `nickname`,`account`,`countryFk`,`nif`, `commission`, `created`, `isActive`, `street`, `city`, `provinceFk`, `postCode`, `payMethodFk`, `payDemFk`, `payDay`, `taxTypeSageFk`, `withholdingSageFk`, `transactionTypeSageFk`, `workerFk`, `supplierActivityFk`, `isPayMethodChecked`, `healthRegister`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 'Plants SL', 'Plants nick', 4100000001, 1, '06089160W', 0, util.VN_CURDATE(), 1, 'supplier address 1', 'PONTEVEDRA', 1, 15214, 1, 1, 15, 4, 1, 1, 18, 'flowerPlants', 1, '400664487V'),
|
(1, 'Plants SL', 'Plants nick', 4100000001, 1, '06089160W', 0, util.VN_CURDATE(), 1, 'supplier address 1', 'PONTEVEDRA', 1, 15214, 1, 1, 15, 4, 1, 1, 18, 'flowerPlants', 1, '400664487V'),
|
||||||
(2, 'Farmer King', 'The farmer', 4000020002, 1, '87945234L', 0, util.VN_CURDATE(), 1, 'supplier address 2', 'SILLA', 2, 43022, 1, 2, 10, 93, 2, 8, 18, 'animals', 1, '400664487V'),
|
(2, 'Farmer King', 'The farmer', 4000020002, 1, '87945234L', 0, util.VN_CURDATE(), 1, 'supplier address 2', 'GOTHAM', 2, 43022, 1, 2, 10, 93, 2, 8, 18, 'animals', 1, '400664487V'),
|
||||||
(442, 'Verdnatura Levante SL', 'Verdnatura', 5115000442, 1, '06815934E', 0, util.VN_CURDATE(), 1, 'supplier address 3', 'SILLA', 1, 43022, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V');
|
(442, 'Verdnatura Levante SL', 'Verdnatura', 5115000442, 1, '06815934E', 0, util.VN_CURDATE(), 1, 'supplier address 3', 'GOTHAM', 1, 43022, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V');
|
||||||
|
|
||||||
INSERT INTO `vn`.`supplierContact`(`id`, `supplierFk`, `phone`, `mobile`, `email`, `observation`, `name`)
|
INSERT INTO `vn`.`supplierContact`(`id`, `supplierFk`, `phone`, `mobile`, `email`, `observation`, `name`)
|
||||||
VALUES
|
VALUES
|
||||||
|
@ -1899,6 +1899,10 @@ INSERT INTO `postgresql`.`business` (`client_id`, `provider_id`, `date_start`, `
|
||||||
FROM `postgresql`.`profile` `p`
|
FROM `postgresql`.`profile` `p`
|
||||||
WHERE `p`.`profile_id` = 1109;
|
WHERE `p`.`profile_id` = 1109;
|
||||||
|
|
||||||
|
UPDATE `postgresql`.`business`
|
||||||
|
SET `payedHolidays`= 8
|
||||||
|
WHERE `business_id`= 1106;
|
||||||
|
|
||||||
INSERT INTO `postgresql`.`business_labour` (`business_id`, `notes`, `department_id`, `professional_category_id`, `incentivo`, `calendar_labour_type_id`, `porhoras`, `labour_agreement_id`, `workcenter_id`)
|
INSERT INTO `postgresql`.`business_labour` (`business_id`, `notes`, `department_id`, `professional_category_id`, `incentivo`, `calendar_labour_type_id`, `porhoras`, `labour_agreement_id`, `workcenter_id`)
|
||||||
VALUES
|
VALUES
|
||||||
(1111, NULL, 23, 1, 0.0, 1, 1, 1, 1);
|
(1111, NULL, 23, 1, 0.0, 1, 1, 1, 1);
|
||||||
|
@ -1926,7 +1930,7 @@ INSERT INTO `postgresql`.`profile_media`(`profile_media_id`, `profile_id`, `medi
|
||||||
|
|
||||||
INSERT INTO `vn`.`workCenter` (`id`, `name`, `warehouseFk`)
|
INSERT INTO `vn`.`workCenter` (`id`, `name`, `warehouseFk`)
|
||||||
VALUES
|
VALUES
|
||||||
('1', 'Silla', '1'),
|
('1', 'Gotham', '1'),
|
||||||
('5', 'Madrid', '5');
|
('5', 'Madrid', '5');
|
||||||
|
|
||||||
INSERT INTO `vn`.`workCenterHoliday` (`workCenterFk`, `days`, `year`)
|
INSERT INTO `vn`.`workCenterHoliday` (`workCenterFk`, `days`, `year`)
|
||||||
|
|
|
@ -276,6 +276,7 @@ export default {
|
||||||
clientWebAccess: {
|
clientWebAccess: {
|
||||||
enableWebAccessCheckbox: 'vn-check[label="Enable web access"]',
|
enableWebAccessCheckbox: 'vn-check[label="Enable web access"]',
|
||||||
userName: 'vn-client-web-access vn-textfield[ng-model="$ctrl.account.name"]',
|
userName: 'vn-client-web-access vn-textfield[ng-model="$ctrl.account.name"]',
|
||||||
|
email: 'vn-client-web-access vn-textfield[ng-model="$ctrl.account.email"]',
|
||||||
saveButton: 'button[type=submit]'
|
saveButton: 'button[type=submit]'
|
||||||
},
|
},
|
||||||
clientNotes: {
|
clientNotes: {
|
||||||
|
@ -543,7 +544,8 @@ export default {
|
||||||
searchResultDate: 'vn-ticket-summary [label=Landed] span',
|
searchResultDate: 'vn-ticket-summary [label=Landed] span',
|
||||||
topbarSearch: 'vn-searchbar',
|
topbarSearch: 'vn-searchbar',
|
||||||
moreMenu: 'vn-ticket-index vn-icon-button[icon=more_vert]',
|
moreMenu: 'vn-ticket-index vn-icon-button[icon=more_vert]',
|
||||||
sixthWeeklyTicket: 'vn-ticket-weekly-index vn-table vn-tr:nth-child(6)',
|
fourthWeeklyTicket: 'vn-ticket-weekly-index vn-table vn-tbody vn-tr:nth-child(4)',
|
||||||
|
fiveWeeklyTicket: 'vn-ticket-weekly-index vn-table vn-tbody vn-tr:nth-child(5)',
|
||||||
weeklyTicket: 'vn-ticket-weekly-index vn-table > div > vn-tbody > vn-tr',
|
weeklyTicket: 'vn-ticket-weekly-index vn-table > div > vn-tbody > vn-tr',
|
||||||
firstWeeklyTicketDeleteIcon: 'vn-ticket-weekly-index vn-tr:nth-child(1) vn-icon-button[icon="delete"]',
|
firstWeeklyTicketDeleteIcon: 'vn-ticket-weekly-index vn-tr:nth-child(1) vn-icon-button[icon="delete"]',
|
||||||
firstWeeklyTicketAgency: 'vn-ticket-weekly-index vn-tr:nth-child(1) [ng-model="weekly.agencyModeFk"]',
|
firstWeeklyTicketAgency: 'vn-ticket-weekly-index vn-tr:nth-child(1) [ng-model="weekly.agencyModeFk"]',
|
||||||
|
|
|
@ -276,7 +276,7 @@ describe('Client Edit fiscalData path', () => {
|
||||||
// confirm invoice by address checkbox gets checked if the EQtax differs between addresses step 2
|
// confirm invoice by address checkbox gets checked if the EQtax differs between addresses step 2
|
||||||
it(`should click on the 1st edit icon to access the address details and uncheck EQtax checkbox`, async() => {
|
it(`should click on the 1st edit icon to access the address details and uncheck EQtax checkbox`, async() => {
|
||||||
await page.waitToClick(selectors.clientAddresses.firstEditAddress);
|
await page.waitToClick(selectors.clientAddresses.firstEditAddress);
|
||||||
await page.waitForTextInField(selectors.clientAddresses.city, 'Silla');
|
await page.waitForTextInField(selectors.clientAddresses.city, 'Gotham');
|
||||||
await page.waitToClick(selectors.clientAddresses.equalizationTaxCheckbox);
|
await page.waitToClick(selectors.clientAddresses.equalizationTaxCheckbox);
|
||||||
await page.waitToClick(selectors.clientAddresses.saveButton);
|
await page.waitToClick(selectors.clientAddresses.saveButton);
|
||||||
const message = await page.waitForSnackbar();
|
const message = await page.waitForSnackbar();
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
/* eslint max-len: ["error", { "code": 150 }]*/
|
||||||
import selectors from '../../helpers/selectors';
|
import selectors from '../../helpers/selectors';
|
||||||
import getBrowser from '../../helpers/puppeteer';
|
import getBrowser from '../../helpers/puppeteer';
|
||||||
|
|
||||||
|
@ -8,7 +9,7 @@ describe('Client Edit web access path', () => {
|
||||||
browser = await getBrowser();
|
browser = await getBrowser();
|
||||||
page = browser.page;
|
page = browser.page;
|
||||||
await page.loginAndModule('employee', 'client');
|
await page.loginAndModule('employee', 'client');
|
||||||
await page.accessToSearchResult('1105');
|
await page.accessToSearchResult('max');
|
||||||
await page.accessToSection('client.card.webAccess');
|
await page.accessToSection('client.card.webAccess');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -33,6 +34,15 @@ describe('Client Edit web access path', () => {
|
||||||
expect(message.text).toContain('Data saved!');
|
expect(message.text).toContain('Data saved!');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it(`should update the email`, async() => {
|
||||||
|
await page.clearInput(selectors.clientWebAccess.email);
|
||||||
|
await page.write(selectors.clientWebAccess.email, 'legion@marvel.com');
|
||||||
|
await page.waitToClick(selectors.clientWebAccess.saveButton);
|
||||||
|
const message = await page.waitForSnackbar();
|
||||||
|
|
||||||
|
expect(message.text).toContain('Data saved!');
|
||||||
|
});
|
||||||
|
|
||||||
it('should reload the section and confirm web access is now unchecked', async() => {
|
it('should reload the section and confirm web access is now unchecked', async() => {
|
||||||
await page.reloadSection('client.card.webAccess');
|
await page.reloadSection('client.card.webAccess');
|
||||||
const result = await page.checkboxState(selectors.clientWebAccess.enableWebAccessCheckbox);
|
const result = await page.checkboxState(selectors.clientWebAccess.enableWebAccessCheckbox);
|
||||||
|
@ -46,6 +56,12 @@ describe('Client Edit web access path', () => {
|
||||||
expect(result).toEqual('Legion');
|
expect(result).toEqual('Legion');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should confirm web access email have been updated', async() => {
|
||||||
|
const result = await page.waitToGetProperty(selectors.clientWebAccess.email, 'value');
|
||||||
|
|
||||||
|
expect(result).toEqual('legion@marvel.com');
|
||||||
|
});
|
||||||
|
|
||||||
it(`should navigate to the log section`, async() => {
|
it(`should navigate to the log section`, async() => {
|
||||||
await page.accessToSection('client.card.log');
|
await page.accessToSection('client.card.log');
|
||||||
});
|
});
|
||||||
|
|
|
@ -42,7 +42,7 @@ describe('Ticket Edit basic data path', () => {
|
||||||
expect(disabled).toBeFalsy();
|
expect(disabled).toBeFalsy();
|
||||||
});
|
});
|
||||||
|
|
||||||
it(`should check the zone is for Silla247`, async() => {
|
it(`should check the zone is for Gotham247`, async() => {
|
||||||
let zone = await page
|
let zone = await page
|
||||||
.waitToGetProperty(selectors.ticketBasicData.zone, 'value');
|
.waitToGetProperty(selectors.ticketBasicData.zone, 'value');
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ describe('Ticket Edit basic data path', () => {
|
||||||
let zone = await page
|
let zone = await page
|
||||||
.waitToGetProperty(selectors.ticketBasicData.agency, 'value');
|
.waitToGetProperty(selectors.ticketBasicData.agency, 'value');
|
||||||
|
|
||||||
expect(zone).toContain('Silla247Expensive');
|
expect(zone).toContain('Gotham247Expensive');
|
||||||
});
|
});
|
||||||
|
|
||||||
it(`should click next`, async() => {
|
it(`should click next`, async() => {
|
||||||
|
@ -92,7 +92,7 @@ describe('Ticket Edit basic data path', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it(`should split ticket without negatives`, async() => {
|
it(`should split ticket without negatives`, async() => {
|
||||||
const newAgency = 'Silla247';
|
const newAgency = 'Gotham247';
|
||||||
const newDate = new Date();
|
const newDate = new Date();
|
||||||
newDate.setDate(newDate.getDate() - 1);
|
newDate.setDate(newDate.getDate() - 1);
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ describe('Ticket descriptor path', () => {
|
||||||
|
|
||||||
it('should confirm the ticket 11 was added to thursday', async() => {
|
it('should confirm the ticket 11 was added to thursday', async() => {
|
||||||
await page.accessToSection('ticket.weekly.index');
|
await page.accessToSection('ticket.weekly.index');
|
||||||
const result = await page.waitToGetProperty(selectors.ticketsIndex.sixthWeeklyTicket, 'value');
|
const result = await page.waitToGetProperty(selectors.ticketsIndex.fourthWeeklyTicket, 'value');
|
||||||
|
|
||||||
expect(result).toEqual('Thursday');
|
expect(result).toEqual('Thursday');
|
||||||
});
|
});
|
||||||
|
@ -80,7 +80,7 @@ describe('Ticket descriptor path', () => {
|
||||||
|
|
||||||
it('should confirm the ticket 11 was added on saturday', async() => {
|
it('should confirm the ticket 11 was added on saturday', async() => {
|
||||||
await page.accessToSection('ticket.weekly.index');
|
await page.accessToSection('ticket.weekly.index');
|
||||||
const result = await page.waitToGetProperty(selectors.ticketsIndex.sixthWeeklyTicket, 'value');
|
const result = await page.waitToGetProperty(selectors.ticketsIndex.fiveWeeklyTicket, 'value');
|
||||||
|
|
||||||
expect(result).toEqual('Saturday');
|
expect(result).toEqual('Saturday');
|
||||||
});
|
});
|
||||||
|
@ -108,7 +108,7 @@ describe('Ticket descriptor path', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should update the agency then remove it afterwards', async() => {
|
it('should update the agency then remove it afterwards', async() => {
|
||||||
await page.autocompleteSearch(selectors.ticketsIndex.firstWeeklyTicketAgency, 'Silla247');
|
await page.autocompleteSearch(selectors.ticketsIndex.firstWeeklyTicketAgency, 'Gotham247');
|
||||||
let message = await page.waitForSnackbar();
|
let message = await page.waitForSnackbar();
|
||||||
|
|
||||||
expect(message.text).toContain('Data saved!');
|
expect(message.text).toContain('Data saved!');
|
||||||
|
|
|
@ -27,7 +27,7 @@ describe('Ticket create path', () => {
|
||||||
await page.autocompleteSearch(selectors.createTicketView.client, 'Clark Kent');
|
await page.autocompleteSearch(selectors.createTicketView.client, 'Clark Kent');
|
||||||
await page.pickDate(selectors.createTicketView.deliveryDate, nextMonth);
|
await page.pickDate(selectors.createTicketView.deliveryDate, nextMonth);
|
||||||
await page.autocompleteSearch(selectors.createTicketView.warehouse, 'Warehouse Two');
|
await page.autocompleteSearch(selectors.createTicketView.warehouse, 'Warehouse Two');
|
||||||
await page.autocompleteSearch(selectors.createTicketView.agency, 'Silla247');
|
await page.autocompleteSearch(selectors.createTicketView.agency, 'Gotham247');
|
||||||
await page.waitToClick(selectors.createTicketView.createButton);
|
await page.waitToClick(selectors.createTicketView.createButton);
|
||||||
const message = await page.waitForSnackbar();
|
const message = await page.waitForSnackbar();
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ describe('Ticket create path', () => {
|
||||||
await page.autocompleteSearch(selectors.createTicketView.client, 'Clark Kent');
|
await page.autocompleteSearch(selectors.createTicketView.client, 'Clark Kent');
|
||||||
await page.pickDate(selectors.createTicketView.deliveryDate, nextMonth);
|
await page.pickDate(selectors.createTicketView.deliveryDate, nextMonth);
|
||||||
await page.autocompleteSearch(selectors.createTicketView.warehouse, 'Warehouse One');
|
await page.autocompleteSearch(selectors.createTicketView.warehouse, 'Warehouse One');
|
||||||
await page.autocompleteSearch(selectors.createTicketView.agency, 'Silla247');
|
await page.autocompleteSearch(selectors.createTicketView.agency, 'Gotham247');
|
||||||
await page.waitToClick(selectors.createTicketView.createButton);
|
await page.waitToClick(selectors.createTicketView.createButton);
|
||||||
const message = await page.waitForSnackbar();
|
const message = await page.waitForSnackbar();
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ describe('Order summary path', () => {
|
||||||
it('should check the summary contains the order consignee', async() => {
|
it('should check the summary contains the order consignee', async() => {
|
||||||
const result = await page.waitToGetProperty(selectors.orderSummary.consignee, 'innerText');
|
const result = await page.waitToGetProperty(selectors.orderSummary.consignee, 'innerText');
|
||||||
|
|
||||||
expect(result).toEqual('address 26 - Silla (Province one)');
|
expect(result).toEqual('address 26 - Gotham (Province one)');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should check the summary contains the order subtotal', async() => {
|
it('should check the summary contains the order subtotal', async() => {
|
||||||
|
|
|
@ -10,6 +10,7 @@ export default class App {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.loaderStatus = 0;
|
this.loaderStatus = 0;
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
|
this.versionInterval = setInterval(this.getVersion.bind(this), 300000);
|
||||||
}
|
}
|
||||||
|
|
||||||
showMessage(message) {
|
showMessage(message) {
|
||||||
|
@ -38,6 +39,21 @@ export default class App {
|
||||||
if (this.loaderStatus === 0)
|
if (this.loaderStatus === 0)
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getVersion() {
|
||||||
|
this.logger.$http.get('Applications/status');
|
||||||
|
}
|
||||||
|
|
||||||
|
setVersion(newVersion) {
|
||||||
|
if (newVersion) {
|
||||||
|
const currentVersion = localStorage.getItem('salix-version');
|
||||||
|
if (newVersion != currentVersion) {
|
||||||
|
this.hasNewVersion = true;
|
||||||
|
clearInterval(this.versionInterval);
|
||||||
|
}
|
||||||
|
localStorage.setItem('salix-version', newVersion);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ngModule.service('vnApp', App);
|
ngModule.service('vnApp', App);
|
||||||
|
|
|
@ -30,14 +30,17 @@ function interceptor($q, vnApp, vnToken, $translate) {
|
||||||
},
|
},
|
||||||
response(response) {
|
response(response) {
|
||||||
vnApp.popLoader();
|
vnApp.popLoader();
|
||||||
|
const newVersion = response.headers('salix-version');
|
||||||
|
vnApp.setVersion(newVersion);
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
},
|
},
|
||||||
responseError(rejection) {
|
responseError(rejection) {
|
||||||
vnApp.popLoader();
|
vnApp.popLoader();
|
||||||
let err = new HttpError(rejection.statusText);
|
const err = new HttpError(rejection.statusText);
|
||||||
Object.assign(err, rejection);
|
Object.assign(err, rejection);
|
||||||
return $q.reject(err);
|
return $q.reject(err);
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
ngModule.factory('vnInterceptor', interceptor);
|
ngModule.factory('vnInterceptor', interceptor);
|
||||||
|
|
|
@ -19,6 +19,14 @@
|
||||||
</div>
|
</div>
|
||||||
<vn-slot name="topbar"></vn-slot>
|
<vn-slot name="topbar"></vn-slot>
|
||||||
<div class="side end">
|
<div class="side end">
|
||||||
|
<vn-icon-button
|
||||||
|
id="refresh"
|
||||||
|
icon="refresh"
|
||||||
|
ng-if="$ctrl.vnApp.hasNewVersion"
|
||||||
|
ng-click="$ctrl.refresh()"
|
||||||
|
class="refresh"
|
||||||
|
translate-attr="{title: 'There is a new version, click here to reload'}">
|
||||||
|
</vn-icon-button>
|
||||||
<vn-icon-button
|
<vn-icon-button
|
||||||
id="apps"
|
id="apps"
|
||||||
icon="apps"
|
icon="apps"
|
||||||
|
@ -39,7 +47,6 @@
|
||||||
translate-attr="{title: 'Account'}"
|
translate-attr="{title: 'Account'}"
|
||||||
on-error-src/>
|
on-error-src/>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<vn-menu vn-id="apps-menu">
|
<vn-menu vn-id="apps-menu">
|
||||||
<vn-list class="modules-menu">
|
<vn-list class="modules-menu">
|
||||||
|
|
|
@ -26,6 +26,10 @@ export class Layout extends Component {
|
||||||
const token = this.vnToken.token;
|
const token = this.vnToken.token;
|
||||||
return `/api/Images/user/160x160/${userId}/download?access_token=${token}`;
|
return `/api/Images/user/160x160/${userId}/download?access_token=${token}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
refresh() {
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Layout.$inject = ['$element', '$scope', 'vnModules'];
|
Layout.$inject = ['$element', '$scope', 'vnModules'];
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,9 @@ vn-layout {
|
||||||
font-size: 1.05rem;
|
font-size: 1.05rem;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
.vn-icon-button.refresh {
|
||||||
|
color: $color-alert;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
& > vn-side-menu > .menu {
|
& > vn-side-menu > .menu {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
@ -17,6 +17,7 @@ Go to module summary: Ir a la vista previa del módulo
|
||||||
Show summary: Mostrar vista previa
|
Show summary: Mostrar vista previa
|
||||||
What is new: Novedades de la versión
|
What is new: Novedades de la versión
|
||||||
Settings: Ajustes
|
Settings: Ajustes
|
||||||
|
There is a new version, click here to reload: Hay una nueva versión, pulse aquí para recargar
|
||||||
|
|
||||||
# Actions
|
# Actions
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,8 @@
|
||||||
"loopback#token": {}
|
"loopback#token": {}
|
||||||
},
|
},
|
||||||
"auth:after": {
|
"auth:after": {
|
||||||
"./middleware/current-user": {}
|
"./middleware/current-user": {},
|
||||||
|
"./middleware/salix-version": {}
|
||||||
},
|
},
|
||||||
"parse": {
|
"parse": {
|
||||||
"body-parser#json":{}
|
"body-parser#json":{}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
const packageJson = require('../../../package.json');
|
||||||
|
|
||||||
|
module.exports = function(options) {
|
||||||
|
return function(req, res, next) {
|
||||||
|
res.set('Salix-Version', packageJson.version);
|
||||||
|
next();
|
||||||
|
};
|
||||||
|
};
|
|
@ -62,7 +62,7 @@ module.exports = function(Self) {
|
||||||
{
|
{
|
||||||
relation: 'account',
|
relation: 'account',
|
||||||
scope: {
|
scope: {
|
||||||
fields: ['id', 'name', 'active']
|
fields: ['id', 'name', 'email', 'active']
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
const { models } = require('vn-loopback/server/server');
|
const {models} = require('vn-loopback/server/server');
|
||||||
|
|
||||||
describe('client extendedListFilter()', () => {
|
describe('client extendedListFilter()', () => {
|
||||||
it('should return the clients matching the filter with a limit of 20 rows', async() => {
|
it('should return the clients matching the filter with a limit of 20 rows', async() => {
|
||||||
|
@ -99,7 +99,7 @@ describe('client extendedListFilter()', () => {
|
||||||
|
|
||||||
const randomIndex = Math.floor(Math.random() * result.length);
|
const randomIndex = Math.floor(Math.random() * result.length);
|
||||||
const randomResultClient = result[randomIndex];
|
const randomResultClient = result[randomIndex];
|
||||||
|
|
||||||
expect(result.length).toBeGreaterThanOrEqual(5);
|
expect(result.length).toBeGreaterThanOrEqual(5);
|
||||||
expect(randomResultClient.salesPersonFk).toEqual(salesPersonId);
|
expect(randomResultClient.salesPersonFk).toEqual(salesPersonId);
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ describe('client extendedListFilter()', () => {
|
||||||
const result = await models.Client.extendedListFilter(ctx, filter, options);
|
const result = await models.Client.extendedListFilter(ctx, filter, options);
|
||||||
|
|
||||||
const firstClient = result[0];
|
const firstClient = result[0];
|
||||||
|
|
||||||
expect(result.length).toEqual(1);
|
expect(result.length).toEqual(1);
|
||||||
expect(firstClient.name).toEqual('Max Eisenhardt');
|
expect(firstClient.name).toEqual('Max Eisenhardt');
|
||||||
|
|
||||||
|
@ -138,15 +138,15 @@ describe('client extendedListFilter()', () => {
|
||||||
try {
|
try {
|
||||||
const options = {transaction: tx};
|
const options = {transaction: tx};
|
||||||
|
|
||||||
const ctx = {req: {accessToken: {userId: 1}}, args: {city: 'Silla'}};
|
const ctx = {req: {accessToken: {userId: 1}}, args: {city: 'Gotham'}};
|
||||||
const filter = {};
|
const filter = {};
|
||||||
const result = await models.Client.extendedListFilter(ctx, filter, options);
|
const result = await models.Client.extendedListFilter(ctx, filter, options);
|
||||||
|
|
||||||
const randomIndex = Math.floor(Math.random() * result.length);
|
const randomIndex = Math.floor(Math.random() * result.length);
|
||||||
const randomResultClient = result[randomIndex];
|
const randomResultClient = result[randomIndex];
|
||||||
|
|
||||||
expect(result.length).toBeGreaterThanOrEqual(20);
|
expect(result.length).toBeGreaterThanOrEqual(20);
|
||||||
expect(randomResultClient.city.toLowerCase()).toEqual('silla');
|
expect(randomResultClient.city.toLowerCase()).toEqual('gotham');
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -167,7 +167,7 @@ describe('client extendedListFilter()', () => {
|
||||||
|
|
||||||
const randomIndex = Math.floor(Math.random() * result.length);
|
const randomIndex = Math.floor(Math.random() * result.length);
|
||||||
const randomResultClient = result[randomIndex];
|
const randomResultClient = result[randomIndex];
|
||||||
|
|
||||||
expect(result.length).toBeGreaterThanOrEqual(20);
|
expect(result.length).toBeGreaterThanOrEqual(20);
|
||||||
expect(randomResultClient.postcode).toEqual('46460');
|
expect(randomResultClient.postcode).toEqual('46460');
|
||||||
|
|
||||||
|
|
|
@ -95,6 +95,10 @@ module.exports = Self => {
|
||||||
{
|
{
|
||||||
arg: 'despiteOfClient',
|
arg: 'despiteOfClient',
|
||||||
type: 'number'
|
type: 'number'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arg: 'hasIncoterms',
|
||||||
|
type: 'boolean'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
returns: {
|
returns: {
|
||||||
|
|
|
@ -13,6 +13,11 @@ module.exports = Self => {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
description: 'the user name'
|
description: 'the user name'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
arg: 'email',
|
||||||
|
type: 'string',
|
||||||
|
description: 'the user email'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
arg: 'active',
|
arg: 'active',
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
|
|
|
@ -32,10 +32,10 @@
|
||||||
"model": "Sample",
|
"model": "Sample",
|
||||||
"foreignKey": "typeFk"
|
"foreignKey": "typeFk"
|
||||||
},
|
},
|
||||||
"worker": {
|
"user": {
|
||||||
"type": "belongsTo",
|
"type": "belongsTo",
|
||||||
"model": "Worker",
|
"model": "Account",
|
||||||
"foreignKey": "workerFk"
|
"foreignKey": "userFk"
|
||||||
},
|
},
|
||||||
"account": {
|
"account": {
|
||||||
"type": "belongsTo",
|
"type": "belongsTo",
|
||||||
|
|
|
@ -98,6 +98,9 @@
|
||||||
"hasCoreVnh": {
|
"hasCoreVnh": {
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
|
"hasIncoterms": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
"isTaxDataChecked":{
|
"isTaxDataChecked":{
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
|
|
|
@ -185,6 +185,14 @@
|
||||||
vn-acl="salesAssistant">
|
vn-acl="salesAssistant">
|
||||||
</vn-check>
|
</vn-check>
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
|
<vn-horizontal>
|
||||||
|
<vn-check
|
||||||
|
vn-one
|
||||||
|
label="Incoterms authorization"
|
||||||
|
ng-model="$ctrl.client.hasIncoterms"
|
||||||
|
vn-acl="administrative">
|
||||||
|
</vn-check>
|
||||||
|
</vn-horizontal>
|
||||||
</vn-card>
|
</vn-card>
|
||||||
<vn-button-bar>
|
<vn-button-bar>
|
||||||
<vn-submit
|
<vn-submit
|
||||||
|
|
|
@ -9,4 +9,5 @@ Found a client with this phone or email: El cliente con id <a href="#!/client/{{
|
||||||
Sage tax type: Tipo de impuesto Sage
|
Sage tax type: Tipo de impuesto Sage
|
||||||
Sage transaction type: Tipo de transacción Sage
|
Sage transaction type: Tipo de transacción Sage
|
||||||
Previous client: Cliente anterior
|
Previous client: Cliente anterior
|
||||||
In case of a company succession, specify the grantor company: En el caso de que haya habido una sucesión de empresa, indicar la empresa cedente
|
In case of a company succession, specify the grantor company: En el caso de que haya habido una sucesión de empresa, indicar la empresa cedente
|
||||||
|
Incoterms authorization: Autorización incoterms
|
|
@ -30,9 +30,9 @@
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td>
|
<vn-td>
|
||||||
<span
|
<span
|
||||||
ng-click="workerDescriptor.show($event, sample.worker.id)"
|
ng-click="workerDescriptor.show($event, sample.user.id)"
|
||||||
class="link">
|
ng-class="{'link': sample.user}">
|
||||||
{{::sample.worker.user.name}}
|
{{::sample.user.name || 'System' | translate}}
|
||||||
</span>
|
</span>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td>{{::sample.company.code}}</vn-td>
|
<vn-td>{{::sample.company.code}}</vn-td>
|
||||||
|
|
|
@ -12,15 +12,9 @@ class Controller extends Section {
|
||||||
fields: ['code', 'description']
|
fields: ['code', 'description']
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
relation: 'worker',
|
relation: 'user',
|
||||||
scope: {
|
scope: {
|
||||||
fields: ['userFk'],
|
fields: ['id', 'name']
|
||||||
include: {
|
|
||||||
relation: 'user',
|
|
||||||
scope: {
|
|
||||||
fields: ['name']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
relation: 'company',
|
relation: 'company',
|
||||||
|
|
|
@ -5,6 +5,11 @@
|
||||||
data="$ctrl.account"
|
data="$ctrl.account"
|
||||||
form="form">
|
form="form">
|
||||||
</vn-watcher>
|
</vn-watcher>
|
||||||
|
<vn-crud-model
|
||||||
|
auto-load="true"
|
||||||
|
url="UserPasswords"
|
||||||
|
data="$ctrl.passRequirements">
|
||||||
|
</vn-crud-model>
|
||||||
<form name="form" ng-submit="$ctrl.onSubmit()" class="vn-w-md">
|
<form name="form" ng-submit="$ctrl.onSubmit()" class="vn-w-md">
|
||||||
<vn-card class="vn-pa-lg">
|
<vn-card class="vn-pa-lg">
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
|
@ -28,6 +33,17 @@
|
||||||
rule>
|
rule>
|
||||||
</vn-textfield>
|
</vn-textfield>
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
|
<vn-horizontal>
|
||||||
|
<vn-textfield
|
||||||
|
vn-id="email"
|
||||||
|
disabled="watcher.orgData.active != $ctrl.account.active"
|
||||||
|
vn-one
|
||||||
|
label="Recovery email"
|
||||||
|
ng-model="$ctrl.account.email"
|
||||||
|
info="This email is used for user to regain access their account."
|
||||||
|
rule>
|
||||||
|
</vn-textfield>
|
||||||
|
</vn-horizontal>
|
||||||
</vn-card>
|
</vn-card>
|
||||||
<vn-button-bar>
|
<vn-button-bar>
|
||||||
<vn-submit
|
<vn-submit
|
||||||
|
@ -55,6 +71,7 @@
|
||||||
<vn-textfield
|
<vn-textfield
|
||||||
type="password"
|
type="password"
|
||||||
label="New password"
|
label="New password"
|
||||||
|
info="{{'Password requirements' | translate:$ctrl.passRequirements[0]}}"
|
||||||
ng-model="$ctrl.newPassword">
|
ng-model="$ctrl.newPassword">
|
||||||
</vn-textfield>
|
</vn-textfield>
|
||||||
<vn-textfield
|
<vn-textfield
|
||||||
|
|
|
@ -63,6 +63,7 @@ export default class Controller extends Section {
|
||||||
onSubmit() {
|
onSubmit() {
|
||||||
const data = {
|
const data = {
|
||||||
name: this.account.name,
|
name: this.account.name,
|
||||||
|
email: this.account.email,
|
||||||
active: this.account.active
|
active: this.account.active
|
||||||
};
|
};
|
||||||
this.$http.patch(`Clients/${this.client.id}/updateUser`, data).then(() => {
|
this.$http.patch(`Clients/${this.client.id}/updateUser`, data).then(() => {
|
||||||
|
|
|
@ -4,4 +4,6 @@ New password: Nueva contraseña
|
||||||
Repeat password: Repetir contraseña
|
Repeat password: Repetir contraseña
|
||||||
Change password: Cambiar contraseña
|
Change password: Cambiar contraseña
|
||||||
Passwords don't match: Las contraseñas no coinciden
|
Passwords don't match: Las contraseñas no coinciden
|
||||||
You must enter a new password: Debes introducir una nueva contraseña
|
You must enter a new password: Debes introducir una nueva contraseña
|
||||||
|
Recovery email: Correo de recuperación
|
||||||
|
This email is used for user to regain access their account.: Este correo electrónico se usa para que el usuario recupere el acceso a su cuenta.
|
|
@ -2,7 +2,7 @@
|
||||||
vn-id="model"
|
vn-id="model"
|
||||||
url="InvoiceOuts/filter"
|
url="InvoiceOuts/filter"
|
||||||
limit="20"
|
limit="20"
|
||||||
order="issued DESC">
|
order="issued DESC, id DESC">
|
||||||
</vn-crud-model>
|
</vn-crud-model>
|
||||||
<vn-portal slot="topbar">
|
<vn-portal slot="topbar">
|
||||||
<vn-searchbar
|
<vn-searchbar
|
||||||
|
|
|
@ -2,7 +2,7 @@ const app = require('vn-loopback/server/server');
|
||||||
|
|
||||||
describe('route getDeliveryPoint()', () => {
|
describe('route getDeliveryPoint()', () => {
|
||||||
const routeId = 1;
|
const routeId = 1;
|
||||||
const deliveryPointAddress = '46460 Av Espioca 100-Silla';
|
const deliveryPointAddress = '1007 Mountain Drive, Gotham';
|
||||||
|
|
||||||
it('should get the delivery point addres of a route with assigned vehicle', async() => {
|
it('should get the delivery point addres of a route with assigned vehicle', async() => {
|
||||||
let route = await app.models.Route.findById(routeId);
|
let route = await app.models.Route.findById(routeId);
|
||||||
|
|
|
@ -56,7 +56,7 @@ module.exports = Self => {
|
||||||
salesIds.push(null);
|
salesIds.push(null);
|
||||||
|
|
||||||
const servicesIds = [];
|
const servicesIds = [];
|
||||||
if (services) {
|
if (services && services.length) {
|
||||||
for (let service of services)
|
for (let service of services)
|
||||||
servicesIds.push(service.id);
|
servicesIds.push(service.id);
|
||||||
} else
|
} else
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
disabled="!$ctrl.clientId"
|
disabled="!$ctrl.clientId"
|
||||||
url="{{ $ctrl.clientId ? 'Clients/'+ $ctrl.clientId +'/addresses' : null }}"
|
url="{{ $ctrl.clientId ? 'Clients/'+ $ctrl.clientId +'/addresses' : null }}"
|
||||||
fields="['nickname', 'street', 'city']"
|
fields="['nickname', 'street', 'city']"
|
||||||
|
where="{isActive: true}"
|
||||||
ng-model="$ctrl.addressId"
|
ng-model="$ctrl.addressId"
|
||||||
show-field="nickname"
|
show-field="nickname"
|
||||||
value-field="id"
|
value-field="id"
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
filter="::$ctrl.filter"
|
filter="::$ctrl.filter"
|
||||||
limit="20"
|
limit="20"
|
||||||
data="weeklies"
|
data="weeklies"
|
||||||
order="ticketFk"
|
order="weekDay, ticketFk"
|
||||||
primary-key="ticketFk"
|
primary-key="ticketFk"
|
||||||
auto-load="true">
|
auto-load="true">
|
||||||
</vn-crud-model>
|
</vn-crud-model>
|
||||||
|
|
|
@ -57,25 +57,9 @@ module.exports = Self => {
|
||||||
ended.setDate(0);
|
ended.setDate(0);
|
||||||
ended.setHours(23, 59, 59, 59);
|
ended.setHours(23, 59, 59, 59);
|
||||||
|
|
||||||
const filter = {
|
const filter = {where: {businessFk: args.businessFk}};
|
||||||
where: {
|
const contract = await models.WorkerLabour.findOne(filter, myOptions);
|
||||||
and: [
|
const payedHolidays = contract.payedHolidays;
|
||||||
{workerFk: id},
|
|
||||||
{
|
|
||||||
or: [
|
|
||||||
{started: {between: [started, ended]}},
|
|
||||||
{ended: {between: [started, ended]}},
|
|
||||||
{and: [{started: {lt: started}}, {ended: {gt: ended}}]},
|
|
||||||
{and: [{started: {lt: started}}, {ended: null}]}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const contracts = await models.WorkerLabour.find(filter, myOptions);
|
|
||||||
let [firstContract] = contracts;
|
|
||||||
const payedHolidays = firstContract.payedHolidays;
|
|
||||||
|
|
||||||
let queryIndex;
|
let queryIndex;
|
||||||
const year = started.getFullYear();
|
const year = started.getFullYear();
|
||||||
|
|
|
@ -27,4 +27,15 @@ describe('Worker holidays()', () => {
|
||||||
expect(result.totalHolidays).toEqual(27.5);
|
expect(result.totalHolidays).toEqual(27.5);
|
||||||
expect(result.holidaysEnjoyed).toEqual(5);
|
expect(result.holidaysEnjoyed).toEqual(5);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should now get the payed holidays calendar for a worker', async() => {
|
||||||
|
const now = new Date();
|
||||||
|
const year = now.getFullYear();
|
||||||
|
|
||||||
|
ctx.args = {businessFk: businessId, year: year};
|
||||||
|
|
||||||
|
const result = await app.models.Worker.holidays(ctx, workerId);
|
||||||
|
|
||||||
|
expect(result.payedHolidays).toEqual(8);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "salix-back",
|
"name": "salix-back",
|
||||||
"version": "1.0.0",
|
"version": "6.8.0",
|
||||||
"author": "Verdnatura Levante SL",
|
"author": "Verdnatura Levante SL",
|
||||||
"description": "Salix backend",
|
"description": "Salix backend",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
|
|
|
@ -15,6 +15,7 @@ module.exports = async function(request, response, next) {
|
||||||
SELECT
|
SELECT
|
||||||
t.id,
|
t.id,
|
||||||
t.clientFk,
|
t.clientFk,
|
||||||
|
t.companyFk,
|
||||||
c.name clientName,
|
c.name clientName,
|
||||||
c.email recipient,
|
c.email recipient,
|
||||||
c.salesPersonFk,
|
c.salesPersonFk,
|
||||||
|
|
|
@ -23,6 +23,7 @@ module.exports = async function(request, response, next) {
|
||||||
SELECT
|
SELECT
|
||||||
t.id,
|
t.id,
|
||||||
t.clientFk,
|
t.clientFk,
|
||||||
|
t.companyFk,
|
||||||
c.name clientName,
|
c.name clientName,
|
||||||
c.email recipient,
|
c.email recipient,
|
||||||
c.salesPersonFk,
|
c.salesPersonFk,
|
||||||
|
|
|
@ -17,6 +17,7 @@ module.exports = async function(request, response, next) {
|
||||||
SELECT
|
SELECT
|
||||||
t.id,
|
t.id,
|
||||||
t.clientFk,
|
t.clientFk,
|
||||||
|
t.companyFk,
|
||||||
c.name clientName,
|
c.name clientName,
|
||||||
c.email recipient,
|
c.email recipient,
|
||||||
c.salesPersonFk,
|
c.salesPersonFk,
|
||||||
|
|
|
@ -16,6 +16,7 @@ module.exports = async function(request, response, next) {
|
||||||
SELECT
|
SELECT
|
||||||
t.id,
|
t.id,
|
||||||
t.clientFk,
|
t.clientFk,
|
||||||
|
t.companyFk,
|
||||||
c.name clientName,
|
c.name clientName,
|
||||||
c.email recipient,
|
c.email recipient,
|
||||||
c.salesPersonFk,
|
c.salesPersonFk,
|
||||||
|
|
|
@ -89,6 +89,37 @@ module.exports = {
|
||||||
const email = new Email('delivery-note-link', args);
|
const email = new Email('delivery-note-link', args);
|
||||||
await email.send();
|
await email.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Incoterms authorization
|
||||||
|
const {firstOrder} = await db.findOne(`
|
||||||
|
SELECT COUNT(*) as firstOrder
|
||||||
|
FROM ticket t
|
||||||
|
JOIN client c ON c.id = t.clientFk
|
||||||
|
WHERE t.clientFk = ?
|
||||||
|
AND NOT t.isDeleted
|
||||||
|
AND c.isVies
|
||||||
|
`, [ticket.clientFk]);
|
||||||
|
|
||||||
|
if (firstOrder == 1) {
|
||||||
|
const args = Object.assign({
|
||||||
|
ticketId: ticket.id,
|
||||||
|
recipientId: ticket.clientFk,
|
||||||
|
recipient: ticket.recipient,
|
||||||
|
replyTo: ticket.salesPersonEmail
|
||||||
|
}, reqArgs);
|
||||||
|
|
||||||
|
const email = new Email('incoterms-authorization', args);
|
||||||
|
await email.send();
|
||||||
|
|
||||||
|
const sample = await db.findOne(
|
||||||
|
`SELECT id
|
||||||
|
FROM sample
|
||||||
|
WHERE code = 'incoterms-authorization'`);
|
||||||
|
|
||||||
|
await db.rawSql(`
|
||||||
|
INSERT INTO clientSample (clientFk, typeFk, companyFk) VALUES(?, ?, ?)
|
||||||
|
`, [ticket.clientFk, sample.id, ticket.companyFk])
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Domain not found
|
// Domain not found
|
||||||
if (error.responseCode == 450)
|
if (error.responseCode == 450)
|
||||||
|
@ -136,7 +167,8 @@ module.exports = {
|
||||||
|
|
||||||
const body = `No se ha podido enviar el albarán <strong>${ticket.id}</strong>
|
const body = `No se ha podido enviar el albarán <strong>${ticket.id}</strong>
|
||||||
al cliente <strong>${ticket.clientFk} - ${ticket.clientName}</strong>
|
al cliente <strong>${ticket.clientFk} - ${ticket.clientName}</strong>
|
||||||
porque la dirección de email <strong>"${ticket.recipient}"</strong> no es correcta o no está disponible.<br/><br/>
|
porque la dirección de email <strong>"${ticket.recipient}"</strong> no es correcta
|
||||||
|
o no está disponible.<br/><br/>
|
||||||
Para evitar que se repita este error, se ha eliminado la dirección de email de la ficha del cliente.
|
Para evitar que se repita este error, se ha eliminado la dirección de email de la ficha del cliente.
|
||||||
Actualiza la dirección de email con una correcta.`;
|
Actualiza la dirección de email con una correcta.`;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
const Stylesheet = require(`${appPath}/core/stylesheet`);
|
||||||
|
|
||||||
|
module.exports = new Stylesheet([
|
||||||
|
`${appPath}/common/css/spacing.css`,
|
||||||
|
`${appPath}/common/css/misc.css`,
|
||||||
|
`${appPath}/common/css/layout.css`,
|
||||||
|
`${appPath}/common/css/email.css`])
|
||||||
|
.mergeStyles();
|
|
@ -0,0 +1,6 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"filename": "incoterms-authorization.pdf",
|
||||||
|
"component": "incoterms-authorization"
|
||||||
|
}
|
||||||
|
]
|
|
@ -0,0 +1,57 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html v-bind:lang="$i18n.locale">
|
||||||
|
<head>
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<meta name="format-detection" content="telephone=no">
|
||||||
|
<title>{{ $t('subject') }}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table class="grid">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!-- Empty block -->
|
||||||
|
<div class="grid-row">
|
||||||
|
<div class="grid-block empty"></div>
|
||||||
|
</div>
|
||||||
|
<!-- Header block -->
|
||||||
|
<div class="grid-row">
|
||||||
|
<div class="grid-block">
|
||||||
|
<email-header v-bind="$props"></email-header>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Block -->
|
||||||
|
<div class="grid-row">
|
||||||
|
<div class="grid-block vn-pa-ml">
|
||||||
|
<h1>{{ $t('title') }}</h1>
|
||||||
|
<p>{{$t('description.dear')}},</p>
|
||||||
|
<p>{{$t('description.instructions')}}</p>
|
||||||
|
<p>{{$t('description.conclusion')}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Attachments block -->
|
||||||
|
<div class="grid-row" v-if="isPreview">
|
||||||
|
<div class="grid-block vn-pa-ml">
|
||||||
|
<attachment v-for="attachment in attachments"
|
||||||
|
v-bind:key="attachment.filename"
|
||||||
|
v-bind:attachment="attachment"
|
||||||
|
v-bind:args="$props">
|
||||||
|
</attachment>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Footer block -->
|
||||||
|
<div class="grid-row">
|
||||||
|
<div class="grid-block">
|
||||||
|
<email-footer v-bind="$props"></email-footer>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Empty block -->
|
||||||
|
<div class="grid-row">
|
||||||
|
<div class="grid-block empty"></div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,27 @@
|
||||||
|
const Component = require(`${appPath}/core/component`);
|
||||||
|
const emailHeader = new Component('email-header');
|
||||||
|
const emailFooter = new Component('email-footer');
|
||||||
|
const attachment = new Component('attachment');
|
||||||
|
const attachments = require('./attachments.json');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'incoterms-authorization',
|
||||||
|
data() {
|
||||||
|
return {attachments};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
'email-header': emailHeader.build(),
|
||||||
|
'email-footer': emailFooter.build(),
|
||||||
|
'attachment': attachment.build()
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
recipientId: {
|
||||||
|
type: [Number, String],
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
companyId: {
|
||||||
|
type: [Number, String],
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,6 @@
|
||||||
|
subject: Autorización incoterms
|
||||||
|
title: Autorización incoterms
|
||||||
|
description:
|
||||||
|
dear: Estimado cliente
|
||||||
|
instructions: A continuación le adjuntamos la autorización incoterms que deberá entregar rellenada y firmada.
|
||||||
|
conclusion: ¡Gracias por su atención!
|
|
@ -0,0 +1,6 @@
|
||||||
|
subject: Autorisation Incoterm
|
||||||
|
title: Autorisation Incoterm
|
||||||
|
description:
|
||||||
|
dear: Chers clients
|
||||||
|
instructions: Veuillez trouver ci-joint l'autorisation des INCOTERMS, une fois le document rempli doit être signé et renvoyé par e-mail.
|
||||||
|
conclusion: Dans l'attente de votre réponse, nous vous prions d'agréer, Madame, Monsieur, nos salutations distinguées.
|
|
@ -0,0 +1,6 @@
|
||||||
|
subject: Autorização do Incoterm
|
||||||
|
title: Autorização do Incoterm
|
||||||
|
description:
|
||||||
|
dear: Estimado cliente
|
||||||
|
instructions: Abaixo anexamos a autorização dos incoterms que deves preencher e reenviar-nos.
|
||||||
|
conclusion: Obrigado pela atenção.
|
|
@ -23,7 +23,7 @@
|
||||||
<!-- Block -->
|
<!-- Block -->
|
||||||
<div class="grid-row">
|
<div class="grid-row">
|
||||||
<div class="grid-block vn-pa-ml">
|
<div class="grid-block vn-pa-ml">
|
||||||
<h1>{{ $t('title') }} {{$i18n.locale}}</h1>
|
<h1>{{ $t('title') }}</h1>
|
||||||
<p>{{ $t('sections.introduction.title') }},</p>
|
<p>{{ $t('sections.introduction.title') }},</p>
|
||||||
<p>{{ $t('sections.introduction.description') }}</p>
|
<p>{{ $t('sections.introduction.description') }}</p>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
subject: Aviso inicial por saldo devedor
|
||||||
|
title: Aviso inicial por saldo devedor
|
||||||
|
sections:
|
||||||
|
introduction:
|
||||||
|
title: Estimado cliente
|
||||||
|
description: Através do presente escrito comunicamos-lhe que, segundo os nossos dados contáveis,
|
||||||
|
a sua conta tem um saldo pendente de liquidar.
|
||||||
|
checkExtract: Solicitamos-lhe que comprove que o extrato anexado corresponde com os dados que dispõe.
|
||||||
|
O nosso departamento de administração aclarará qualquer dúvida que possa ter,
|
||||||
|
e igualmente lhe facilitará qualquer documento que solicite.
|
||||||
|
checkValidData: Se ao comprovar os dados aportados, resultam corretos, rogamos que proceda com a regularizar a situação
|
||||||
|
payMethod: Se não deseja acudir pessoalmente às nossas oficinas, pode realizar o pagamento mediante
|
||||||
|
transferência bancaria à conta que figura ao pé do comunicado, a indicar o seu número de cliente,
|
||||||
|
ou bem pode realizar o pagamento através do nosso sítio web.
|
||||||
|
conclusion: De antemão agradecemos-lhe a sua amável colaboração.
|
||||||
|
transferAccount: Dados para transferência bancária
|
|
@ -1,12 +0,0 @@
|
||||||
SELECT
|
|
||||||
t.id,
|
|
||||||
t.clientFk,
|
|
||||||
cty.country,
|
|
||||||
w.name AS warehouse
|
|
||||||
FROM ticket t
|
|
||||||
JOIN warehouse w ON w.id = t.warehouseFk
|
|
||||||
JOIN address a ON a.id = t.addressFk
|
|
||||||
JOIN province p ON p.id = a.provinceFk
|
|
||||||
JOIN autonomy au ON au.id = p.autonomyFk
|
|
||||||
JOIN country cty ON cty.id = au.countryFk
|
|
||||||
WHERE t.id = ?
|
|
|
@ -2,13 +2,8 @@
|
||||||
font-size: 1.2em
|
font-size: 1.2em
|
||||||
}
|
}
|
||||||
|
|
||||||
.signature .dummy-signature {
|
.signature {
|
||||||
width: 400px;
|
margin-top: 100px
|
||||||
height: 190px;
|
|
||||||
display: block;
|
|
||||||
content: '';
|
|
||||||
overflow: hidden;
|
|
||||||
clear:both
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.signature img {
|
.signature img {
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
|
@ -23,9 +23,10 @@
|
||||||
<p
|
<p
|
||||||
v-for="(declaration, $index) in $t('declarations')"
|
v-for="(declaration, $index) in $t('declarations')"
|
||||||
v-html="$t('declarations[' + $index + ']', {
|
v-html="$t('declarations[' + $index + ']', {
|
||||||
|
companyName: company.name,
|
||||||
|
companyCity: company.city,
|
||||||
socialName: client.socialName,
|
socialName: client.socialName,
|
||||||
destinationCountry: ticket.country,
|
destinationCountry: client.country
|
||||||
destinationWarehouse: ticket.warehouse
|
|
||||||
})">
|
})">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -53,13 +54,13 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="size50 signature centered">
|
<div class="size50 signature centered">
|
||||||
<p>{{$t('signature')}}</p>
|
<p>{{ company.name }}</p>
|
||||||
<img v-bind:src="getReportSrc('signature.png')">
|
<img v-bind:src="getReportSrc('signature.png')">
|
||||||
<p>
|
<p>
|
||||||
<div>Juan Vicente Ferrer Roig</div>
|
<div>{{company.manager}}</div>
|
||||||
<div>Director</div>
|
<div>{{$t('manager')}}</div>
|
||||||
<p>{{$t('issued', [
|
<p>{{$t('issued', [
|
||||||
'Algemesí',
|
company.city,
|
||||||
issued.getDate(),
|
issued.getDate(),
|
||||||
$t('months')[issued.getMonth()],
|
$t('months')[issued.getMonth()],
|
||||||
issued.getFullYear()])
|
issued.getFullYear()])
|
||||||
|
@ -68,22 +69,6 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="signature">
|
|
||||||
<p>{{$t('issued', [
|
|
||||||
'Algemesí',
|
|
||||||
invoice.issued.getDate(),
|
|
||||||
$t('months')[invoice.issued.getMonth()],
|
|
||||||
invoice.issued.getFullYear()])
|
|
||||||
}}
|
|
||||||
</p>
|
|
||||||
<p><em>({{$t('signature')}})</em></p>
|
|
||||||
<img v-bind:src="getReportSrc('signature.png')">
|
|
||||||
<p>
|
|
||||||
<div>{{$t('signer.name')}}: JUAN VICENTE FERRER ROIG</div>
|
|
||||||
<div>{{$t('signer.ID')}}: 73943586N</div>
|
|
||||||
<div>{{$t('signer.position')}}: ADMINISTRADOR</div>
|
|
||||||
</p>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Footer block -->
|
<!-- Footer block -->
|
|
@ -3,13 +3,12 @@ const reportHeader = new Component('report-header');
|
||||||
const reportFooter = new Component('report-footer');
|
const reportFooter = new Component('report-footer');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: 'cmr-authorization',
|
name: 'incoterms-authorization',
|
||||||
async serverPrefetch() {
|
async serverPrefetch() {
|
||||||
this.ticket = await this.findOneFromDef('ticket', [this.ticketId]);
|
this.client = await this.findOneFromDef('client', [this.recipientId]);
|
||||||
if (!this.ticket)
|
this.company = await this.findOneFromDef('company', [this.companyId]);
|
||||||
|
if (!this.client)
|
||||||
throw new Error('Something went wrong');
|
throw new Error('Something went wrong');
|
||||||
|
|
||||||
this.client = await this.findOneFromDef('client', [this.ticket.clientFk]);
|
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
issued: function() {
|
issued: function() {
|
||||||
|
@ -21,7 +20,11 @@ module.exports = {
|
||||||
'report-footer': reportFooter.build()
|
'report-footer': reportFooter.build()
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
ticketId: {
|
recipientId: {
|
||||||
|
type: [Number, String],
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
companyId: {
|
||||||
type: [Number, String],
|
type: [Number, String],
|
||||||
required: true
|
required: true
|
||||||
}
|
}
|
|
@ -1,32 +1,32 @@
|
||||||
reportName: autorizacion-cmr
|
reportName: autorizacion-incoterms
|
||||||
description: '<em>{socialName}</em> una sociedad debidamente constituida con responsabilidad <em>limitada</em>
|
description: '<em>{socialName}</em> una sociedad debidamente constituida con responsabilidad <em>limitada</em>
|
||||||
y registrada conforme al derecho de sociedades de {country} y aquí representada por
|
y registrada conforme al derecho de sociedades de {country} y aquí representada por
|
||||||
<span>___________________</span>. {socialName}, con domicilio en {address},
|
<span>___________________</span>. {socialName}, con domicilio en {address},
|
||||||
CIF <em>{fiscalID}</em>. En adelante denominada {name}.'
|
CIF <em>{fiscalID}</em>. En adelante denominada {name}.'
|
||||||
issued: 'En {0}, a {1} de {2} de {3}'
|
issued: 'En {0}, a {1} de {2} de {3}'
|
||||||
client: 'Client {0}'
|
client: 'Cliente {0}'
|
||||||
declaration: '<em>{socialName}</em> declara por la presente que:'
|
declaration: '<em>{socialName}</em> declara por la presente que:'
|
||||||
declarations:
|
declarations:
|
||||||
- 'Todas las compras realizadas por {socialName} con Verdnatura Levante, S.L. se
|
- 'Todas las compras realizadas por {socialName} con {companyName} se
|
||||||
entregan, Ex Works (Incoterms), en el almacén de Verdnatura Levante, S.L. situado en
|
entregan, Ex Works (Incoterms), en el almacén de {companyName} situado en
|
||||||
{destinationWarehouse}.'
|
{companyCity}.'
|
||||||
- '{socialName} reconoce que es importante para Verdnatura Levante, S.L. tener
|
- '{socialName} reconoce que es importante para {companyName} tener
|
||||||
comprobante de la entrega intracomunitaria de la mercancía a {destinationCountry} para
|
comprobante de la entrega intracomunitaria de la mercancía a {destinationCountry} para
|
||||||
poder facturar con 0% de IVA.'
|
poder facturar con 0% de IVA.'
|
||||||
- 'Por tanto, al firmar este acuerdo, {socialName} declara que todos los bienes que
|
- 'Por tanto, al firmar este acuerdo, {socialName} declara que todos los bienes que
|
||||||
se compren a Verdnatura Levante, S.L. serán entregados a {destinationCountry}.'
|
se compren a {companyName} serán entregados a {destinationCountry}.'
|
||||||
- 'Además, {socialName} deberá, a primera solicitud de Verdnatura Levante, S.L.,
|
- 'Además, {socialName} deberá, a primera solicitud de {companyName},
|
||||||
proporcionar una prueba de que todos los productos comprados a Verdnatura Levante, S.L. han
|
proporcionar una prueba de que todos los productos comprados a {companyName} han
|
||||||
sido entregados en {destinationCountry}.'
|
sido entregados en {destinationCountry}.'
|
||||||
- 'Además de lo anterior, Verdnatura Levante, S.L. proporcionará a {socialName}
|
- 'Además de lo anterior, {companyName} proporcionará a {socialName}
|
||||||
un resumen mensual en el que se incluyen todas las facturas (y las entregas correspondientes).
|
un resumen mensual en el que se incluyen todas las facturas (y las entregas correspondientes).
|
||||||
{socialName} firmará y devolverá el resumen mensual a Verdnatura Levante,
|
{socialName} firmará y devolverá el resumen mensual a {companyName},
|
||||||
S.L. dentro de los 5 días posteriores a la recepción del resumen.'
|
S.L. dentro de los 5 días posteriores a la recepción del resumen.'
|
||||||
signature: Verdnatura Levante, S.L.
|
|
||||||
signer:
|
signer:
|
||||||
representative: Representante
|
representative: Representante
|
||||||
representativeRole: Cargo del representante
|
representativeRole: Cargo del representante
|
||||||
signed: Fecha de firma
|
signed: Fecha de firma
|
||||||
|
manager: Gerente
|
||||||
months:
|
months:
|
||||||
- 'Enero'
|
- 'Enero'
|
||||||
- 'Febrero'
|
- 'Febrero'
|
|
@ -0,0 +1,38 @@
|
||||||
|
reportName: autorizacion-incoterms
|
||||||
|
description: '<em>{socialName}</em> une société dûment constituée à responsabilité <em>limitée</em>
|
||||||
|
et enregistrée en vertu du droit des sociétés de {country} et représentée aux présentes par
|
||||||
|
<span>___________________</span>. {socialName}, ayant son siège social {address},
|
||||||
|
CIF <em>{fiscalID}</em>. Ci-après dénommé {name}.'
|
||||||
|
issued: 'A {0}, le {1} {2} {3}'
|
||||||
|
client: 'Client {0}'
|
||||||
|
declaration: '<em>{socialName}</em> déclare par la présente que:'
|
||||||
|
declarations:
|
||||||
|
- "Tous les achats réalisés par {socialName} avec {companyName}
|
||||||
|
sont livrés, Ex Works (Incoterms), sur l'entrepôt de {companyName} situé à {companyCity}."
|
||||||
|
- "{socialName} reconnaît qu'il est important pou {companyName} d'avoir
|
||||||
|
la preuve de la livraison intracommunautaire des biens à {destinationCountry} afin de pouvoir facturer à 0% de TVA."
|
||||||
|
- 'Par conséquent, en signant cet accord, {socialName} déclare que tous les biens achetés à {companyName} seront livrés à {destinationCountry}.'
|
||||||
|
- 'En outre, {socialName} doit, à la première demande de {companyName},
|
||||||
|
fournir la preuve que tous les biens achetés à {companyName} ont été livrés à {destinationCountry}.'
|
||||||
|
- 'En plus de ce qui précède, {companyName} fournira à {socialName}
|
||||||
|
un résumé mensuel comprenant toutes les factures (et les livraisons correspondantes).
|
||||||
|
{socialName} signera et retournera le résumé mensuel à {companyName},
|
||||||
|
dans les 5 jours suivant la réception du résumé.'
|
||||||
|
signer:
|
||||||
|
representative: Représentant
|
||||||
|
representativeRole: Position du représentant
|
||||||
|
signed: Date de la signature
|
||||||
|
manager: Gérente
|
||||||
|
months:
|
||||||
|
- 'Janvier'
|
||||||
|
- 'Fevrier'
|
||||||
|
- 'Mars'
|
||||||
|
- 'Avril'
|
||||||
|
- 'Mai'
|
||||||
|
- 'Juin'
|
||||||
|
- 'Juillet'
|
||||||
|
- 'Août'
|
||||||
|
- 'Septembre'
|
||||||
|
- 'Octobre'
|
||||||
|
- 'Novembre'
|
||||||
|
- 'Decembre'
|
|
@ -0,0 +1,42 @@
|
||||||
|
reportName: autorizacion-incoterms
|
||||||
|
description: '<em>{socialName}</em> uma sociedade devidamente constituída com responsabilidade <em>limitada e registada</em>
|
||||||
|
conforme ao direito de sociedades da {country} e aqui representada por
|
||||||
|
<span>___________________</span>. {socialName}, com domicílio em {address},
|
||||||
|
CIF <em>{fiscalID}</em>. Em adiante denominada {name}.'
|
||||||
|
issued: 'Em {0}, em {1} de {2} de {3}'
|
||||||
|
client: 'Cliente {0}'
|
||||||
|
declaration: '<em>{socialName}</em> declara através da presente que:'
|
||||||
|
declarations:
|
||||||
|
- 'Todas as compras realizadas por {socialName} a {companyName} se entregam,
|
||||||
|
Ex Works (Incoterms), no armazém da {companyName} situado em
|
||||||
|
{companyCity}.'
|
||||||
|
- '{socialName} reconhece ser importante para {companyName}
|
||||||
|
ter o comprovante da entrega intracomunitária da mercadoria a {destinationCountry}
|
||||||
|
para poder faturar com 0% de IVA.'
|
||||||
|
- 'Portanto, ao assinar este acordo, {socialName} declara que todos os bens
|
||||||
|
que se comprem na {companyName} serão entregues na {destinationCountry}.'
|
||||||
|
- 'Além disto, {socialName} deverá, na primeira solicitude da {companyName},
|
||||||
|
proporcionar uma prova de que todos os produtos comprados na {companyName}
|
||||||
|
foram entregues na {destinationCountry}.'
|
||||||
|
- 'Além do anterio, {companyName} proporcionará a {socialName}
|
||||||
|
um resumo mensal onde se incluem todas as faturas (e as entregas correspondentes).
|
||||||
|
{socialName} assinará e devolverá o resumo mensal à {companyName},
|
||||||
|
dentro dos 5 dias posteriores à receção do resumo.'
|
||||||
|
signer:
|
||||||
|
representative: Representante
|
||||||
|
representativeRole: Cargo de representante
|
||||||
|
signed: Data da assinatura
|
||||||
|
manager: Gerente
|
||||||
|
months:
|
||||||
|
- 'Janeiro'
|
||||||
|
- 'Fevereiro'
|
||||||
|
- 'Marchar'
|
||||||
|
- 'abril'
|
||||||
|
- 'Poderia'
|
||||||
|
- 'Junho'
|
||||||
|
- 'Julho'
|
||||||
|
- 'Agosto'
|
||||||
|
- 'Setembro'
|
||||||
|
- 'Outubro'
|
||||||
|
- 'Novembro'
|
||||||
|
- 'Dezembro'
|
|
@ -0,0 +1,8 @@
|
||||||
|
SELECT
|
||||||
|
s.name,
|
||||||
|
s.city,
|
||||||
|
cl.name AS manager
|
||||||
|
FROM company c
|
||||||
|
JOIN supplier s ON s.id = c.id
|
||||||
|
JOIN client cl ON cl.id = c.workerManagerFk
|
||||||
|
WHERE c.id = ?
|
Loading…
Reference in New Issue