Merge pull request 'refactor: refs #7950 Created cmr model' (!3180) from 7950-cmrModelUnify into dev
gitea/salix/pipeline/head This commit looks good Details

Reviewed-on: #3180
Reviewed-by: Javi Gallego <jgallego@verdnatura.es>
This commit is contained in:
Guillermo Bonet 2024-11-15 06:07:16 +00:00
commit 96b85701d8
14 changed files with 40 additions and 28 deletions

View File

@ -2084,7 +2084,7 @@ INSERT INTO `ACL` VALUES (756,'Route','findOne','READ','ALLOW','ROLE','employee'
INSERT INTO `ACL` VALUES (757,'Route','getRoutesByWorker','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (758,'Route','canViewAllRoute','READ','ALLOW','ROLE','deliveryAssistant',NULL);
INSERT INTO `ACL` VALUES (759,'Route','cmr','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (760,'Route','downloadCmrsZip','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (760,'Cmr','downloadZip','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (761,'Route','downloadZip','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (762,'Route','filter','READ','ALLOW','ROLE','employee',NULL);
INSERT INTO `ACL` VALUES (763,'Route','getByWorker','READ','ALLOW','ROLE','employee',NULL);

View File

@ -0,0 +1,8 @@
DELETE FROM salix.ACL
WHERE property IN ('cmrs', 'cmr', 'downloadCmrsZip')
AND model = 'Route';
INSERT INTO salix.ACL (model,property,principalId)
VALUES ('Cmr','filter','production'),
('Cmr','downloadZip','production'),
('Cmr','print','production')

View File

@ -2,7 +2,7 @@ const {Report, Email} = require('vn-print');
module.exports = Self => {
Self.printReport = async function(ctx, id, reportName) {
const args = Object.assign({}, ctx.args);
const args = Object.assign({id}, ctx.args);
const params = {lang: ctx.req.getLocale()};
delete args.ctx;

View File

@ -1,7 +1,7 @@
const JSZip = require('jszip');
module.exports = Self => {
Self.remoteMethodCtx('downloadCmrsZip', {
Self.remoteMethodCtx('downloadZip', {
description: 'Download a zip file with multiple cmrs pdfs',
accessType: 'READ',
accepts: [
@ -27,13 +27,13 @@ module.exports = Self => {
}
],
http: {
path: '/downloadCmrsZip',
path: '/downloadZip',
verb: 'GET'
},
accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.downloadCmrsZip = async function(ctx, ids, options) {
Self.downloadZip = async function(ctx, ids, options) {
const models = Self.app.models;
const myOptions = {};
const zip = new JSZip();
@ -44,7 +44,7 @@ module.exports = Self => {
const downloadAddZip = async id => {
ctx.args = ctx.args || {};
ctx.args.id = Number(id);
const [data] = await models.Route.cmr(ctx, myOptions);
const [data] = await models.Cmr.print(ctx, myOptions);
zip.file(`${id}.pdf`, data, {binary: true});
};

View File

@ -3,7 +3,7 @@ const buildFilter = require('vn-loopback/util/filter').buildFilter;
const mergeFilters = require('vn-loopback/util/filter').mergeFilters;
module.exports = Self => {
Self.remoteMethod('cmrs', {
Self.remoteMethod('filter', {
description: 'Returns an array of cmrs',
accessType: 'READ',
accepts: [
@ -57,12 +57,12 @@ module.exports = Self => {
root: true
},
http: {
path: `/cmrs`,
path: `/filter`,
verb: 'GET'
}
});
Self.cmrs = async(
Self.filter = async(
filter, cmrFk, ticketFk, routeFk, country, clientFk, hasCmrDms, shipped, warehouseFk, options
) => {
const params = {cmrFk, ticketFk, routeFk, country, clientFk, hasCmrDms, warehouseFk, shipped};

View File

@ -1,6 +1,6 @@
module.exports = Self => {
Self.remoteMethodCtx('cmr', {
description: 'Returns the cmr',
Self.remoteMethodCtx('print', {
description: 'Returns the cmr pdf',
accessType: 'READ',
accepts: [
{
@ -27,11 +27,11 @@ module.exports = Self => {
}
],
http: {
path: '/:id/cmr',
path: '/:id/print',
verb: 'GET'
},
accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.cmr = (ctx, id) => Self.printReport(ctx, id, 'cmr');
Self.print = (ctx, id) => Self.printReport(ctx, id, 'cmr');
};

View File

@ -1,6 +1,6 @@
const models = require('vn-loopback/server/server').models;
describe('route downloadCmrsZip()', () => {
describe('route downloadZip()', () => {
it('should create a zip file with the given cmr ids', async() => {
const tx = await models.Route.beginTransaction({});
const ctx = {
@ -13,7 +13,7 @@ describe('route downloadCmrsZip()', () => {
};
let cmrs = '1,2';
try {
const stream = await models.Route.downloadCmrsZip(ctx, cmrs);
const stream = await models.Cmr.downloadZip(ctx, cmrs);
expect(stream[0]).toBeDefined();
await tx.rollback();

View File

@ -5,6 +5,9 @@
"AgencyTermConfig": {
"dataSource": "vn"
},
"Cmr": {
"dataSource": "vn"
},
"DeliveryPoint": {
"dataSource": "vn"
},

View File

@ -0,0 +1,5 @@
module.exports = Self => {
require('../methods/cmr/print')(Self);
require('../methods/cmr/filter')(Self);
require('../methods/cmr/downloadZip')(Self);
};

View File

@ -14,10 +14,6 @@ module.exports = Self => {
require('../methods/route/driverRouteEmail')(Self);
require('../methods/route/sendSms')(Self);
require('../methods/route/downloadZip')(Self);
require('../methods/route/cmr')(Self);
require('../methods/route/cmrs')(Self);
require('../methods/route/downloadCmrsZip')(Self);
require('../methods/route/cmrEmail')(Self);
require('../methods/route/getExpeditionSummary')(Self);
require('../methods/route/getByWorker')(Self);
};

View File

@ -41,7 +41,7 @@ module.exports = Self => {
for (const ticketId of tickets) {
const ticket = await models.Ticket.findById(ticketId, null, myOptions);
if (ticket.cmrFk) {
if (ticket.$cmrFk) {
const hasDmsCmr = await Self.rawSql(`
SELECT d.id
FROM ticketDms td
@ -53,8 +53,7 @@ module.exports = Self => {
if (hasDmsCmr.length)
throw new UserError('This ticket already has a cmr saved');
ctx.args.id = ticket.cmrFk;
const response = await models.Route.cmr(ctx, myOptions);
const response = await models.Cmr.print(ctx, ticket.$cmrFk, myOptions);
const pdfStream = Readable.from(Buffer.from(response[0]));
const data = {
workerFk: ctx.req.accessToken.userId,

View File

@ -151,7 +151,7 @@ module.exports = Self => {
await Self.rawSql(`CALL vn.ticket_setState(?, ?)`, [ticketId, stateCode], myOptions);
if (ticket?.address()?.province()?.country()?.code != 'ES' && ticket.cmrFk) {
if (ticket?.address()?.province()?.country()?.code != 'ES' && ticket.$cmrFk) {
await models.Ticket.saveCmr(ctx, [ticketId], myOptions);
externalTickets.push(ticketId);
}
@ -161,6 +161,6 @@ module.exports = Self => {
if (tx) await tx.rollback();
throw e;
}
await models.Route.cmrEmail(ctx, externalTickets);
await models.Ticket.sendCmrEmail(ctx, externalTickets);
};
};

View File

@ -2,7 +2,7 @@ const {Email} = require('vn-print');
const UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
Self.remoteMethodCtx('cmrEmail', {
Self.remoteMethodCtx('sendCmrEmail', {
description: 'Sends the email with an cmr attached PDF',
accessType: 'WRITE',
accepts: [
@ -14,12 +14,12 @@ module.exports = Self => {
}
],
http: {
path: '/cmrEmail',
path: '/sendCmrEmail',
verb: 'POST'
}
});
Self.cmrEmail = async function(ctx, tickets, options) {
Self.sendCmrEmail = async function(ctx, tickets, options) {
const models = Self.app.models;
const myOptions = {};
let tx;
@ -70,7 +70,7 @@ module.exports = Self => {
await email.send({
overrideAttachments: true,
attachments: [{
filename: `${ticket.cmrFk}.pdf`,
filename: `${ticket.$cmrFk}.pdf`,
content: response[0]
}]
});

View File

@ -40,6 +40,7 @@ module.exports = function(Self) {
require('../methods/ticket/expeditionPalletLabel')(Self);
require('../methods/ticket/saveSign')(Self);
require('../methods/ticket/saveCmr')(Self);
require('../methods/ticket/sendCmrEmail')(Self);
require('../methods/ticket/invoiceTickets')(Self);
require('../methods/ticket/invoiceTicketsAndPdf')(Self);
require('../methods/ticket/docuwareDownload')(Self);