refactor: refs #6496 Deleted clean vn2008 #2104

Merged
guillermo merged 5 commits from 6496-cleanVn2008 into dev 2024-03-04 10:58:07 +00:00
6 changed files with 78 additions and 40 deletions
Showing only changes of commit d0d2a16303 - Show all commits

View File

@ -19,6 +19,7 @@ module.exports = Self => {
FROM ticketTracking tt FROM ticketTracking tt
WHERE tt.userFk = ? WHERE tt.userFk = ?
GROUP BY ticketFk GROUP BY ticketFk
ORDER BY created DESC
LIMIT 5;`; LIMIT 5;`;
return await Self.rawSql(query, [userId]); return await Self.rawSql(query, [userId]);
}; };

View File

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

View File

@ -3,7 +3,7 @@ html {
margin: 10px; margin: 10px;
font-size: 22px; font-size: 22px;
} }
.mainTable, .specialTable, .categoryTable { .mainTable, .specialTable, .categoryTable, .observationTable {
width: 100%; width: 100%;
border-collapse: collapse; border-collapse: collapse;
font-size: inherit; font-size: inherit;
@ -98,4 +98,19 @@ img {
#merchandiseLabels td { #merchandiseLabels td {
padding-bottom: 11px; padding-bottom: 11px;
max-width: 300px; max-width: 300px;
}
.observationTable tr td {
border: none;
padding: 5px;
}
#qrSection {
text-align: center;
width: 30%;
}
#truckPlateQr {
width: 125px;
margin-bottom: 10px;
} }

View File

@ -30,8 +30,11 @@
<span id="label">16. Transportista / Transporteur / Carrier</span> <span id="label">16. Transportista / Transporteur / Carrier</span>
<hr> <hr>
<b>{{data.carrierName}}</b><br> <b>{{data.carrierName}}</b><br>
{{data.carrierStreet}}<br> {{data.carrierStreet}} {{data.carrierPostalCode}}
{{data.carrierPostalCode}} {{data.carrierCity}} {{(data.carrierCountry) ? `(${data.carrierCountry})` : null}} {{data.carrierCity}} {{(data.carrierCountry)
? `(${data.carrierCountry})`
: null}}<br>
<b>CIF:</b> {{data.carrierCif}}
</td> </td>
</tr> </tr>
<tr> <tr>
@ -71,8 +74,19 @@
Carrier's reservations and observations Carrier's reservations and observations
</span> </span>
<hr> <hr>
<b>{{data.truckPlate}}</b><br> <table class="observationTable">
{{data.observations}} <tr>
<td>
{{data.observations}}
</td>
<td id="qrSection">
<img id="truckPlateQr" v-bind:src="truckPlateQr"/>
<br>
<b>{{data.truckPlate}}</b>
</td>
</tr>
</table>
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@ -2,44 +2,51 @@ const config = require(`vn-print/core/config`);
const vnReport = require('../../../core/mixins/vn-report.js'); const vnReport = require('../../../core/mixins/vn-report.js');
const md5 = require('md5'); const md5 = require('md5');
const fs = require('fs-extra'); const fs = require('fs-extra');
const qrcode = require('qrcode');
const prefixBase64 = 'data:image/png;base64,'; const prefixBase64 = 'data:image/png;base64,';
module.exports = { module.exports = {
name: 'cmr', name: 'cmr',
mixins: [vnReport], mixins: [vnReport],
async serverPrefetch() { async serverPrefetch() {
this.data = await this.findOneFromDef('data', [this.id]); this.data = await this.findOneFromDef('data', [this.id]);
if (this.data.ticketFk) { if (this.data.ticketFk) {
this.merchandises = await this.rawSqlFromDef('merchandise', [this.data.ticketFk]); this.merchandises = await this.rawSqlFromDef('merchandise', [this.data.ticketFk]);
this.signature = await this.findOneFromDef('signature', [this.data.ticketFk]); this.signature = await this.findOneFromDef('signature', [this.data.ticketFk]);
} else } else
this.merchandises = null; this.merchandises = null;
this.senderStamp = (this.data.senderStamp) this.senderStamp = (this.data.senderStamp)
? `${prefixBase64} ${this.data.senderStamp.toString('base64')}` ? `${prefixBase64} ${this.data.senderStamp.toString('base64')}`
: null; : null;
this.deliveryStamp = (this.data.deliveryStamp) this.deliveryStamp = (this.data.deliveryStamp)
? `${prefixBase64} ${this.data.deliveryStamp.toString('base64')}` ? `${prefixBase64} ${this.data.deliveryStamp.toString('base64')}`
: null; : null;
}, this.truckPlateQr = await this.getQR(this.data.truckPlate);
props: { },
id: { props: {
type: Number, id: {
required: true, type: Number,
description: 'The cmr id' required: true,
}, description: 'The cmr id'
}, },
computed: { },
signPath() { computed: {
if (!this.signature) return; signPath() {
if (!this.signature) return;
const signatureName = this.signature.signature const signatureName = this.signature.signature;
const hash = md5(signatureName.toString()).substring(0, 3); const hash = md5(signatureName.toString()).substring(0, 3);
const file = `${config.storage.root}/${hash}/${signatureName}.png`; const file = `${config.storage.root}/${hash}/${signatureName}.png`;
if (!fs.existsSync(file)) return null; 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});
},
}
};

View File

@ -10,6 +10,7 @@ SELECT c.id cmrFk,
c.merchandiseDetail, c.merchandiseDetail,
c.ead, c.ead,
s.name carrierName, s.name carrierName,
s.nif carrierCif,
s.street carrierStreet, s.street carrierStreet,
s.postCode carrierPostCode, s.postCode carrierPostCode,
s.city carrierCity, s.city carrierCity,