Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 6276-createNewWarehouse
gitea/salix/pipeline/pr-dev This commit looks good
Details
gitea/salix/pipeline/pr-dev This commit looks good
Details
This commit is contained in:
commit
7d8d31022b
|
@ -71,6 +71,7 @@ pipeline {
|
|||
stage('Back') {
|
||||
steps {
|
||||
sh 'pnpm install --prefer-offline'
|
||||
sh 'pnpx puppeteer browsers install chrome'
|
||||
}
|
||||
}
|
||||
stage('Print') {
|
||||
|
|
|
@ -1356,8 +1356,6 @@ INSERT INTO `ACL` VALUES (385,'Route','driverRoutePdf','READ','ALLOW','ROLE','em
|
|||
INSERT INTO `ACL` VALUES (386,'Route','driverRouteEmail','WRITE','ALLOW','ROLE','employee');
|
||||
INSERT INTO `ACL` VALUES (387,'Ticket','deliveryNotePdf','READ','ALLOW','ROLE','customer');
|
||||
INSERT INTO `ACL` VALUES (388,'Supplier','newSupplier','WRITE','ALLOW','ROLE','administrative');
|
||||
INSERT INTO `ACL` VALUES (389,'ClaimRma','*','READ','ALLOW','ROLE','claimManager');
|
||||
INSERT INTO `ACL` VALUES (390,'ClaimRma','*','WRITE','ALLOW','ROLE','claimManager');
|
||||
INSERT INTO `ACL` VALUES (391,'Notification','*','WRITE','ALLOW','ROLE','system');
|
||||
INSERT INTO `ACL` VALUES (392,'Boxing','*','*','ALLOW','ROLE','employee');
|
||||
INSERT INTO `ACL` VALUES (393,'Url','*','READ','ALLOW','ROLE','employee');
|
||||
|
|
|
@ -564,13 +564,13 @@ INSERT INTO `vn`.`supplierActivity`(`code`, `name`)
|
|||
|
||||
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
|
||||
(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', 'GOTHAM', 2, 43022, 1, 2, 10, 93, 2, 8, 18, 'animals', 1, '400664487V'),
|
||||
(1, 'PLANTS SL', 'Plants nick', 4100000001, 1, '06089160W', 0, util.VN_CURDATE(), 1, 'supplier address 1', 'GOTHAM', 1, 46000, 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', 'GOTHAM', 2, 46000, 1, 2, 10, 93, 2, 8, 18, 'animals', 1, '400664487V'),
|
||||
(69, 'PACKAGING', 'Packaging nick', 4100000069, 1, '94935005K', 0, util.VN_CURDATE(), 1, 'supplier address 5', 'ASGARD', 3, 46600, 1, 1, 15, 4, 1, 1, 18, 'flowerPlants', 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'),
|
||||
(442, 'VERDNATURA LEVANTE SL', 'Verdnatura', 5115000442, 1, '06815934E', 0, util.VN_CURDATE(), 1, 'supplier address 3', 'GOTHAM', 1, 46000, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V'),
|
||||
(567, 'HOLLAND', 'Holland nick', 4000020567, 1, '14364089Z', 0, util.VN_CURDATE(), 1, 'supplier address 6', 'ASGARD', 3, 46600, 1, 2, 10, 93, 2, 8, 18, 'animals', 1, '400664487V'),
|
||||
(791, 'BROS SL', 'Bros nick', 5115000791, 1, '37718083S', 0, util.VN_CURDATE(), 1, 'supplier address 7', 'ASGARD', 3, 46600, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V'),
|
||||
(1381, 'ORNAMENTALES', 'Ornamentales', 7185001381, 1, '07972486L', 0, util.VN_CURDATE(), 1, 'supplier address 4', 'GOTHAM', 1, 43022, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V');
|
||||
(1381, 'ORNAMENTALES', 'Ornamentales', 7185001381, 1, '07972486L', 0, util.VN_CURDATE(), 1, 'supplier address 4', 'GOTHAM', 1, 46000, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V');
|
||||
|
||||
INSERT INTO `vn`.`supplierAddress`(`id`, `supplierFk`, `nickname`, `street`, `provinceFk`, `postalCode`, `city`, `phone`, `mobile`)
|
||||
VALUES
|
||||
|
@ -1827,12 +1827,12 @@ INSERT INTO `vn`.`claimState`(`id`, `code`, `description`, `roleFk`, `priority`,
|
|||
( 6, 'mana', 'Mana', 72, 4, 0),
|
||||
( 7, 'lack', 'Faltas', 72, 2, 0);
|
||||
|
||||
INSERT INTO `vn`.`claim`(`id`, `ticketCreated`, `claimStateFk`, `clientFk`, `workerFk`, `responsibility`, `isChargedToMana`, `created`, `packages`, `rma`, `ticketFk`)
|
||||
INSERT INTO `vn`.`claim`(`id`, `ticketCreated`, `claimStateFk`, `clientFk`, `workerFk`, `responsibility`, `isChargedToMana`, `created`, `packages`, `ticketFk`)
|
||||
VALUES
|
||||
(1, util.VN_CURDATE(), 1, 1101, 18, 3, 0, util.VN_CURDATE(), 0, '02676A049183', 11),
|
||||
(2, util.VN_CURDATE(), 2, 1101, 18, 3, 0, util.VN_CURDATE(), 1, NULL, 16),
|
||||
(3, util.VN_CURDATE(), 3, 1101, 18, 1, 1, util.VN_CURDATE(), 5, NULL, 7),
|
||||
(4, util.VN_CURDATE(), 3, 1104, 18, 5, 0, util.VN_CURDATE(), 10, NULL, 8);
|
||||
(1, util.VN_CURDATE(), 1, 1101, 18, 3, 0, util.VN_CURDATE(), 0, 11),
|
||||
(2, util.VN_CURDATE(), 2, 1101, 18, 3, 0, util.VN_CURDATE(), 1, 16),
|
||||
(3, util.VN_CURDATE(), 3, 1101, 18, 1, 1, util.VN_CURDATE(), 5, 7),
|
||||
(4, util.VN_CURDATE(), 3, 1104, 18, 5, 0, util.VN_CURDATE(), 10, 8);
|
||||
|
||||
INSERT INTO `vn`.`claimObservation` (`claimFk`, `workerFk`, `text`, `created`)
|
||||
VALUES
|
||||
|
@ -1881,14 +1881,6 @@ INSERT INTO `vn`.`claimRatio`(`clientFk`, `yearSale`, `claimAmount`, `claimingRa
|
|||
(1103, 2000, 0.00, 0.00, 0.02, 1.00),
|
||||
(1104, 2500, 150.00, 0.02, 0.10, 1.00);
|
||||
|
||||
INSERT INTO vn.claimRma (`id`, `code`, `created`, `workerFk`)
|
||||
VALUES
|
||||
(1, '02676A049183', DEFAULT, 1106),
|
||||
(2, '02676A049183', DEFAULT, 1106),
|
||||
(3, '02676A049183', DEFAULT, 1107),
|
||||
(4, '02676A049183', DEFAULT, 1107),
|
||||
(5, '01837B023653', DEFAULT, 1106);
|
||||
|
||||
INSERT INTO `vn`.`claimLog` (`originFk`, userFk, `action`, changedModel, oldInstance, newInstance, changedModelId, `description`)
|
||||
VALUES
|
||||
(1, 18, 'update', 'Claim', '{"hasToPickUp":false}', '{"hasToPickUp":true}', 1, NULL),
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
-- Place your SQL code here
|
||||
RENAME TABLE IF EXISTS vn.claimRma TO vn.claimRma__;
|
||||
ALTER TABLE IF EXISTS vn.claimRma__ COMMENT='kkeada el 2024-02-26 por Pablo';
|
||||
ALTER TABLE vn.claim CHANGE IF EXISTS rma rma__ varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL;
|
|
@ -1,4 +1,4 @@
|
|||
Are you sure exit without saving?: ¿Seguro que quieres salir sin guardar?
|
||||
Unsaved changes will be lost: Los cambios que no hayas guardado se perderán
|
||||
No changes to save: No hay cambios que guardar
|
||||
Some fields are invalid: Algunos campos no son válidos
|
||||
Some fields are invalid: Algunos campos no son válidos
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
// For a detailed explanation regarding each configuration property, visit:
|
||||
// https://jestjs.io/docs/en/configuration.html
|
||||
/* eslint max-len: ["error", { "code": 150 }]*/
|
||||
const cpus = require('os').cpus().length;
|
||||
const maxCpus = Math.floor(cpus * 0.45);
|
||||
|
||||
module.exports = {
|
||||
name: 'front end',
|
||||
|
@ -12,6 +14,7 @@ module.exports = {
|
|||
setupFilesAfterEnv: [
|
||||
'./front/jest-setup.js'
|
||||
],
|
||||
maxWorkers: maxCpus,
|
||||
testMatch: [
|
||||
'**/front/**/*.spec.js',
|
||||
'**/print/**/*.spec.js',
|
||||
|
|
|
@ -333,9 +333,11 @@
|
|||
"It was not able to remove the next expeditions:": "No se pudo eliminar las siguientes expediciones: {{expeditions}}",
|
||||
"This claim has been updated": "La reclamación con Id: {{claimId}}, ha sido actualizada",
|
||||
"This user does not have an assigned tablet": "Este usuario no tiene tablet asignada",
|
||||
"Incorrect pin": "Pin incorrecto",
|
||||
"Field are invalid": "El campo '{{tag}}' no es válido",
|
||||
"Incorrect pin": "Pin incorrecto.",
|
||||
"You already have the mailAlias": "Ya tienes este alias de correo",
|
||||
"The alias cant be modified": "Este alias de correo no puede ser modificado",
|
||||
"No tickets to invoice": "No hay tickets para facturar",
|
||||
"this warehouse has not dms": "El Almacén no acepta documentos",
|
||||
"This ticket already has a cmr saved": "Este ticket ya tiene un cmr guardado",
|
||||
"Name should be uppercase": "El nombre debe ir en mayúscula",
|
||||
|
@ -344,6 +346,5 @@
|
|||
"You cannot update these fields": "No puedes actualizar estos campos",
|
||||
"CountryFK cannot be empty": "El país no puede estar vacío",
|
||||
"Cmr file does not exist": "El archivo del cmr no existe",
|
||||
"You are not allowed to modify the alias": "No estás autorizado a modificar el alias",
|
||||
"No tickets to invoice": "No hay tickets para facturar"
|
||||
"You are not allowed to modify the alias": "No estás autorizado a modificar el alias"
|
||||
}
|
||||
|
|
|
@ -43,8 +43,5 @@
|
|||
},
|
||||
"ClaimObservation": {
|
||||
"dataSource": "vn"
|
||||
},
|
||||
"ClaimRma": {
|
||||
"dataSource": "vn"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
const LoopBackContext = require('loopback-context');
|
||||
|
||||
module.exports = Self => {
|
||||
Self.observe('before save', async function(ctx) {
|
||||
const changes = ctx.data || ctx.instance;
|
||||
const loopBackContext = LoopBackContext.getCurrentContext();
|
||||
changes.workerFk = loopBackContext.active.accessToken.userId;
|
||||
});
|
||||
};
|
|
@ -1,30 +0,0 @@
|
|||
{
|
||||
"name": "ClaimRma",
|
||||
"base": "VnModel",
|
||||
"options": {
|
||||
"mysql": {
|
||||
"table": "claimRma"
|
||||
}
|
||||
},
|
||||
"properties": {
|
||||
"id": {
|
||||
"id": true,
|
||||
"type": "number",
|
||||
"description": "Identifier"
|
||||
},
|
||||
"code": {
|
||||
"type": "string",
|
||||
"required": true
|
||||
},
|
||||
"created": {
|
||||
"type": "date"
|
||||
}
|
||||
},
|
||||
"relations": {
|
||||
"worker": {
|
||||
"type": "belongsTo",
|
||||
"model": "Worker",
|
||||
"foreignKey": "workerFk"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -45,9 +45,6 @@
|
|||
},
|
||||
"packages": {
|
||||
"type": "number"
|
||||
},
|
||||
"rma": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"relations": {
|
||||
|
@ -56,12 +53,6 @@
|
|||
"model": "ClaimState",
|
||||
"foreignKey": "claimStateFk"
|
||||
},
|
||||
"rmas": {
|
||||
"type": "hasMany",
|
||||
"model": "ClaimRma",
|
||||
"foreignKey": "code",
|
||||
"primaryKey": "rma"
|
||||
},
|
||||
"client": {
|
||||
"type": "belongsTo",
|
||||
"model": "Client",
|
||||
|
|
|
@ -26,23 +26,23 @@ module.exports = Self => {
|
|||
},
|
||||
{
|
||||
arg: 'street',
|
||||
type: 'string'
|
||||
type: 'any'
|
||||
},
|
||||
{
|
||||
arg: 'postcode',
|
||||
type: 'string'
|
||||
type: 'any'
|
||||
},
|
||||
{
|
||||
arg: 'city',
|
||||
type: 'string'
|
||||
type: 'any'
|
||||
},
|
||||
{
|
||||
arg: 'countryFk',
|
||||
type: 'number'
|
||||
type: 'any'
|
||||
},
|
||||
{
|
||||
arg: 'provinceFk',
|
||||
type: 'number'
|
||||
type: 'any'
|
||||
},
|
||||
{
|
||||
arg: 'sageTaxTypeFk',
|
||||
|
@ -94,7 +94,7 @@ module.exports = Self => {
|
|||
},
|
||||
{
|
||||
arg: 'despiteOfClient',
|
||||
type: 'number'
|
||||
type: 'any'
|
||||
},
|
||||
{
|
||||
arg: 'hasIncoterms',
|
||||
|
|
|
@ -26,7 +26,8 @@ describe('Supplier newSupplier()', () => {
|
|||
const options = {transaction: tx};
|
||||
ctx.args = {
|
||||
name: 'NEWSUPPLIER',
|
||||
nif: '12345678Z'
|
||||
nif: '12345678Z',
|
||||
city: 'Gotham'
|
||||
};
|
||||
|
||||
const result = await models.Supplier.newSupplier(ctx, options);
|
||||
|
|
|
@ -19,7 +19,7 @@ module.exports = Self => {
|
|||
type: 'any'
|
||||
}, {
|
||||
arg: 'phone',
|
||||
type: 'string'
|
||||
type: 'any'
|
||||
}, {
|
||||
arg: 'sageTaxTypeFk',
|
||||
type: 'any'
|
||||
|
@ -46,10 +46,10 @@ module.exports = Self => {
|
|||
type: 'any'
|
||||
}, {
|
||||
arg: 'supplierActivityFk',
|
||||
type: 'string'
|
||||
type: 'any'
|
||||
}, {
|
||||
arg: 'healthRegister',
|
||||
type: 'string'
|
||||
type: 'any'
|
||||
}, {
|
||||
arg: 'isVies',
|
||||
type: 'boolean'
|
||||
|
|
|
@ -129,10 +129,13 @@ describe('loopback model Supplier', () => {
|
|||
const options = {transaction: tx};
|
||||
|
||||
try {
|
||||
const newSupplier = await models.Supplier.create({name: 'ALFRED PENNYWORTH'}, options);
|
||||
const fetchedSupplier = await models.Supplier.findById(newSupplier.id, null, options);
|
||||
const newSupplier = {
|
||||
name: 'ALFRED PENNYWORTH', nif: '87805752D', city: 'Gotham'
|
||||
};
|
||||
const supplierCreated = await models.Supplier.create(newSupplier, options);
|
||||
const fetchedSupplier = await models.Supplier.findById(supplierCreated.id, null, options);
|
||||
|
||||
expect(Number(fetchedSupplier.account)).toEqual(4100000000 + newSupplier.id);
|
||||
expect(Number(fetchedSupplier.account)).toEqual(4100000000 + supplierCreated.id);
|
||||
await tx.rollback();
|
||||
} catch (e) {
|
||||
await tx.rollback();
|
||||
|
|
|
@ -17,17 +17,13 @@ module.exports = Self => {
|
|||
message: 'The social name cannot be empty'
|
||||
});
|
||||
|
||||
if (this.city) {
|
||||
Self.validatesPresenceOf('city', {
|
||||
message: 'City cannot be empty'
|
||||
});
|
||||
}
|
||||
Self.validatesPresenceOf('city', {
|
||||
message: 'City cannot be empty'
|
||||
});
|
||||
|
||||
if (this.nif) {
|
||||
Self.validatesPresenceOf('nif', {
|
||||
message: 'The nif cannot be empty'
|
||||
});
|
||||
}
|
||||
Self.validatesPresenceOf('nif', {
|
||||
message: 'The nif cannot be empty'
|
||||
});
|
||||
|
||||
Self.validatesUniquenessOf('nif', {
|
||||
message: 'TIN must be unique'
|
||||
|
|
|
@ -19,6 +19,7 @@ module.exports = Self => {
|
|||
FROM ticketTracking tt
|
||||
WHERE tt.userFk = ?
|
||||
GROUP BY ticketFk
|
||||
ORDER BY created DESC
|
||||
LIMIT 5;`;
|
||||
return await Self.rawSql(query, [userId]);
|
||||
};
|
||||
|
|
|
@ -179,7 +179,6 @@ localFixtures:
|
|||
- claimLog
|
||||
- claimObservation
|
||||
- claimRatio
|
||||
- claimRma
|
||||
- claimState
|
||||
- client
|
||||
- clientConfig
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "salix-back",
|
||||
"version": "24.10.0",
|
||||
"version": "24.12.0",
|
||||
"author": "Verdnatura Levante SL",
|
||||
"description": "Salix backend",
|
||||
"license": "GPL-3.0",
|
||||
|
|
|
@ -3786,7 +3786,7 @@ packages:
|
|||
resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==}
|
||||
dependencies:
|
||||
base64-js: 1.5.1
|
||||
ieee754: 1.1.13
|
||||
ieee754: 1.2.1
|
||||
isarray: 1.0.0
|
||||
dev: false
|
||||
|
||||
|
@ -7288,8 +7288,8 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/http-proxy-agent@7.0.0:
|
||||
resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==}
|
||||
/http-proxy-agent@7.0.2:
|
||||
resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
|
||||
engines: {node: '>= 14'}
|
||||
dependencies:
|
||||
agent-base: 7.1.0
|
||||
|
@ -7367,8 +7367,8 @@ packages:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
/https-proxy-agent@7.0.2:
|
||||
resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==}
|
||||
/https-proxy-agent@7.0.4:
|
||||
resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==}
|
||||
engines: {node: '>= 14'}
|
||||
dependencies:
|
||||
agent-base: 7.1.0
|
||||
|
@ -9780,6 +9780,7 @@ packages:
|
|||
|
||||
/mkdirp-classic@0.5.3:
|
||||
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
|
||||
/mkdirp@0.3.0:
|
||||
|
@ -10692,8 +10693,8 @@ packages:
|
|||
agent-base: 7.1.0
|
||||
debug: 4.3.4(supports-color@6.1.0)
|
||||
get-uri: 6.0.2
|
||||
http-proxy-agent: 7.0.0
|
||||
https-proxy-agent: 7.0.2
|
||||
http-proxy-agent: 7.0.2
|
||||
https-proxy-agent: 7.0.4
|
||||
pac-resolver: 7.0.0
|
||||
socks-proxy-agent: 8.0.2
|
||||
transitivePeerDependencies:
|
||||
|
@ -11155,8 +11156,8 @@ packages:
|
|||
dependencies:
|
||||
agent-base: 7.1.0
|
||||
debug: 4.3.4(supports-color@6.1.0)
|
||||
http-proxy-agent: 7.0.0
|
||||
https-proxy-agent: 7.0.2
|
||||
http-proxy-agent: 7.0.2
|
||||
https-proxy-agent: 7.0.4
|
||||
lru-cache: 7.18.3
|
||||
pac-proxy-agent: 7.0.1
|
||||
proxy-from-env: 1.1.0
|
||||
|
@ -11288,6 +11289,7 @@ packages:
|
|||
|
||||
/queue-tick@1.0.1:
|
||||
resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
|
||||
/quick-lru@4.0.1:
|
||||
|
|
|
@ -3,7 +3,7 @@ html {
|
|||
margin: 10px;
|
||||
font-size: 22px;
|
||||
}
|
||||
.mainTable, .specialTable, .categoryTable {
|
||||
.mainTable, .specialTable, .categoryTable, .observationTable {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: inherit;
|
||||
|
@ -98,4 +98,19 @@ img {
|
|||
#merchandiseLabels td {
|
||||
padding-bottom: 11px;
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
.observationTable tr td {
|
||||
border: none;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#qrSection {
|
||||
text-align: center;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
#truckPlateQr {
|
||||
width: 125px;
|
||||
margin-bottom: 10px;
|
||||
}
|
|
@ -30,8 +30,11 @@
|
|||
<span id="label">16. Transportista / Transporteur / Carrier</span>
|
||||
<hr>
|
||||
<b>{{data.carrierName}}</b><br>
|
||||
{{data.carrierStreet}}<br>
|
||||
{{data.carrierPostalCode}} {{data.carrierCity}} {{(data.carrierCountry) ? `(${data.carrierCountry})` : null}}
|
||||
{{data.carrierStreet}} {{data.carrierPostalCode}}
|
||||
{{data.carrierCity}} {{(data.carrierCountry)
|
||||
? `(${data.carrierCountry})`
|
||||
: null}}<br>
|
||||
<b>CIF:</b> {{data.carrierCif}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -71,8 +74,19 @@
|
|||
Carrier's reservations and observations
|
||||
</span>
|
||||
<hr>
|
||||
<b>{{data.truckPlate}}</b><br>
|
||||
{{data.observations}}
|
||||
<table class="observationTable">
|
||||
<tr>
|
||||
<td>
|
||||
{{data.observations}}
|
||||
</td>
|
||||
<td id="qrSection">
|
||||
<img id="truckPlateQr" v-bind:src="truckPlateQr"/>
|
||||
<br>
|
||||
<b>{{data.truckPlate}}</b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -2,44 +2,51 @@ const config = require(`vn-print/core/config`);
|
|||
const vnReport = require('../../../core/mixins/vn-report.js');
|
||||
const md5 = require('md5');
|
||||
const fs = require('fs-extra');
|
||||
const qrcode = require('qrcode');
|
||||
|
||||
const prefixBase64 = 'data:image/png;base64,';
|
||||
|
||||
module.exports = {
|
||||
name: 'cmr',
|
||||
mixins: [vnReport],
|
||||
async serverPrefetch() {
|
||||
this.data = await this.findOneFromDef('data', [this.id]);
|
||||
if (this.data.ticketFk) {
|
||||
this.merchandises = await this.rawSqlFromDef('merchandise', [this.data.ticketFk]);
|
||||
this.signature = await this.findOneFromDef('signature', [this.data.ticketFk]);
|
||||
} else
|
||||
this.merchandises = null;
|
||||
name: 'cmr',
|
||||
mixins: [vnReport],
|
||||
async serverPrefetch() {
|
||||
this.data = await this.findOneFromDef('data', [this.id]);
|
||||
if (this.data.ticketFk) {
|
||||
this.merchandises = await this.rawSqlFromDef('merchandise', [this.data.ticketFk]);
|
||||
this.signature = await this.findOneFromDef('signature', [this.data.ticketFk]);
|
||||
} else
|
||||
this.merchandises = null;
|
||||
|
||||
this.senderStamp = (this.data.senderStamp)
|
||||
? `${prefixBase64} ${this.data.senderStamp.toString('base64')}`
|
||||
: null;
|
||||
this.deliveryStamp = (this.data.deliveryStamp)
|
||||
? `${prefixBase64} ${this.data.deliveryStamp.toString('base64')}`
|
||||
: null;
|
||||
},
|
||||
props: {
|
||||
id: {
|
||||
type: Number,
|
||||
required: true,
|
||||
description: 'The cmr id'
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
signPath() {
|
||||
if (!this.signature) return;
|
||||
this.senderStamp = (this.data.senderStamp)
|
||||
? `${prefixBase64} ${this.data.senderStamp.toString('base64')}`
|
||||
: null;
|
||||
this.deliveryStamp = (this.data.deliveryStamp)
|
||||
? `${prefixBase64} ${this.data.deliveryStamp.toString('base64')}`
|
||||
: null;
|
||||
this.truckPlateQr = await this.getQR(this.data.truckPlate);
|
||||
},
|
||||
props: {
|
||||
id: {
|
||||
type: Number,
|
||||
required: true,
|
||||
description: 'The cmr id'
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
signPath() {
|
||||
if (!this.signature) return;
|
||||
|
||||
const signatureName = this.signature.signature
|
||||
const hash = md5(signatureName.toString()).substring(0, 3);
|
||||
const file = `${config.storage.root}/${hash}/${signatureName}.png`;
|
||||
if (!fs.existsSync(file)) return null;
|
||||
const signatureName = this.signature.signature;
|
||||
const hash = md5(signatureName.toString()).substring(0, 3);
|
||||
const file = `${config.storage.root}/${hash}/${signatureName}.png`;
|
||||
if (!fs.existsSync(file)) return null;
|
||||
|
||||
return `${prefixBase64} ${Buffer.from(fs.readFileSync(file), 'utf8').toString('base64')}`;
|
||||
},
|
||||
}
|
||||
};
|
||||
return `${prefixBase64} ${Buffer.from(fs.readFileSync(file), 'utf8').toString('base64')}`;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
getQR(id) {
|
||||
return qrcode.toDataURL(String(id), {margin: 0});
|
||||
},
|
||||
}
|
||||
};
|
||||
|
|
|
@ -10,6 +10,7 @@ SELECT c.id cmrFk,
|
|||
c.merchandiseDetail,
|
||||
c.ead,
|
||||
s.name carrierName,
|
||||
s.nif carrierCif,
|
||||
s.street carrierStreet,
|
||||
s.postCode carrierPostCode,
|
||||
s.city carrierCity,
|
||||
|
|
Loading…
Reference in New Issue