refs #6174 feat: update back to separate invoice and pdf
gitea/salix/pipeline/head There was a failure building this commit
Details
gitea/salix/pipeline/head There was a failure building this commit
Details
This commit is contained in:
parent
831d358e41
commit
21ce57d217
|
@ -0,0 +1,30 @@
|
||||||
|
|
||||||
|
module.exports = Self => {
|
||||||
|
Self.remoteMethodCtx('makePdfList', {
|
||||||
|
description: 'Handle a list of invoices to generate PDF and send it to client',
|
||||||
|
accessType: 'WRITE',
|
||||||
|
accepts: [
|
||||||
|
{
|
||||||
|
arg: 'ids',
|
||||||
|
type: ['number'],
|
||||||
|
description: 'The invoice id',
|
||||||
|
required: true,
|
||||||
|
http: {source: 'path'}
|
||||||
|
}, {
|
||||||
|
arg: 'printerFk',
|
||||||
|
type: 'number',
|
||||||
|
description: 'The printer to print'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
http: {
|
||||||
|
path: '/:id/makePdfList',
|
||||||
|
verb: 'POST'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Self.makePdfList = async function(ctx, ids, printerFk, options) {
|
||||||
|
ids.forEach(async id => {
|
||||||
|
await Self.makePdfAndNotify(ctx, id, printerFk, options);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
|
@ -50,7 +50,6 @@ module.exports = Self => {
|
||||||
Self.transferInvoice = async(ctx, options) => {
|
Self.transferInvoice = async(ctx, options) => {
|
||||||
const models = Self.app.models;
|
const models = Self.app.models;
|
||||||
const myOptions = {userId: ctx.req.accessToken.userId};
|
const myOptions = {userId: ctx.req.accessToken.userId};
|
||||||
let makePdf = false;
|
|
||||||
const {id, refFk, newClientFk, cplusRectificationTypeFk, siiTypeInvoiceOutFk, invoiceCorrectionTypeFk} = ctx.args;
|
const {id, refFk, newClientFk, cplusRectificationTypeFk, siiTypeInvoiceOutFk, invoiceCorrectionTypeFk} = ctx.args;
|
||||||
let tx;
|
let tx;
|
||||||
if (typeof options == 'object')
|
if (typeof options == 'object')
|
||||||
|
@ -64,7 +63,6 @@ module.exports = Self => {
|
||||||
if (!myOptions.transaction) {
|
if (!myOptions.transaction) {
|
||||||
tx = await Self.beginTransaction({});
|
tx = await Self.beginTransaction({});
|
||||||
myOptions.transaction = tx;
|
myOptions.transaction = tx;
|
||||||
makePdf = true;
|
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const filterRef = {where: {refFk: refFk}};
|
const filterRef = {where: {refFk: refFk}};
|
||||||
|
@ -88,16 +86,18 @@ module.exports = Self => {
|
||||||
clonedTicketIds.push(clonedTicket.id);
|
clonedTicketIds.push(clonedTicket.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
const invoiceCorrection =
|
const invoiceCorrection = {
|
||||||
{correctedFk: id, cplusRectificationTypeFk, siiTypeInvoiceOutFk, invoiceCorrectionTypeFk};
|
correctedFk: id,
|
||||||
|
cplusRectificationTypeFk,
|
||||||
|
siiTypeInvoiceOutFk,
|
||||||
|
invoiceCorrectionTypeFk
|
||||||
|
};
|
||||||
const refundTicketIds = refundTickets.map(ticket => ticket.id);
|
const refundTicketIds = refundTickets.map(ticket => ticket.id);
|
||||||
|
|
||||||
await models.Ticket.invoiceTickets(ctx, refundTicketIds, invoiceCorrection, myOptions);
|
await models.Ticket.invoiceTickets(ctx, refundTicketIds, invoiceCorrection, myOptions);
|
||||||
const [invoiceId] = await models.Ticket.invoiceTickets(ctx, clonedTicketIds, null, myOptions);
|
|
||||||
|
|
||||||
tx && await tx.commit();
|
const [invoiceId] = await models.Ticket.invoiceTicketsAndPdf(ctx, clonedTicketIds, null, myOptions);
|
||||||
|
|
||||||
makePdf && await models.InvoiceOut.makePdfAndNotify(ctx, invoiceId, null);
|
|
||||||
return invoiceId;
|
return invoiceId;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (tx) await tx.rollback();
|
if (tx) await tx.rollback();
|
||||||
|
|
|
@ -13,6 +13,7 @@ module.exports = Self => {
|
||||||
require('../methods/invoiceOut/createManualInvoice')(Self);
|
require('../methods/invoiceOut/createManualInvoice')(Self);
|
||||||
require('../methods/invoiceOut/clientsToInvoice')(Self);
|
require('../methods/invoiceOut/clientsToInvoice')(Self);
|
||||||
require('../methods/invoiceOut/invoiceClient')(Self);
|
require('../methods/invoiceOut/invoiceClient')(Self);
|
||||||
|
require('../methods/invoiceOut/makePdfList')(Self);
|
||||||
require('../methods/invoiceOut/makePdfAndNotify')(Self);
|
require('../methods/invoiceOut/makePdfAndNotify')(Self);
|
||||||
require('../methods/invoiceOut/refund')(Self);
|
require('../methods/invoiceOut/refund')(Self);
|
||||||
require('../methods/invoiceOut/invoiceEmail')(Self);
|
require('../methods/invoiceOut/invoiceEmail')(Self);
|
||||||
|
|
|
@ -32,7 +32,6 @@ module.exports = function(Self) {
|
||||||
const models = Self.app.models;
|
const models = Self.app.models;
|
||||||
const date = Date.vnNew();
|
const date = Date.vnNew();
|
||||||
date.setHours(0, 0, 0, 0);
|
date.setHours(0, 0, 0, 0);
|
||||||
let makePdf = false;
|
|
||||||
|
|
||||||
const myOptions = {userId: ctx.req.accessToken.userId};
|
const myOptions = {userId: ctx.req.accessToken.userId};
|
||||||
let tx;
|
let tx;
|
||||||
|
@ -43,7 +42,6 @@ module.exports = function(Self) {
|
||||||
if (!myOptions.transaction) {
|
if (!myOptions.transaction) {
|
||||||
tx = await Self.beginTransaction({});
|
tx = await Self.beginTransaction({});
|
||||||
myOptions.transaction = tx;
|
myOptions.transaction = tx;
|
||||||
makePdf = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let invoicesIds = [];
|
let invoicesIds = [];
|
||||||
|
@ -78,15 +76,11 @@ module.exports = function(Self) {
|
||||||
for (const ticketIds of ticketsByAddress)
|
for (const ticketIds of ticketsByAddress)
|
||||||
invoicesIds.push(await createInvoice(ctx, companyId, ticketIds, invoiceCorrection, myOptions));
|
invoicesIds.push(await createInvoice(ctx, companyId, ticketIds, invoiceCorrection, myOptions));
|
||||||
|
|
||||||
if (tx) await tx.commit();
|
tx && await tx.commit();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (tx) await tx.rollback();
|
if (tx) await tx.rollback();
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
if (makePdf) {
|
|
||||||
for (const invoiceId of invoicesIds)
|
|
||||||
await models.InvoiceOut.makePdfAndNotify(ctx, invoiceId, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
return invoicesIds;
|
return invoicesIds;
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
|
||||||
|
module.exports = function(Self) {
|
||||||
|
Self.remoteMethodCtx('invoiceTicketsAndPdf', {
|
||||||
|
description: 'Make out an invoice from one or more tickets',
|
||||||
|
accessType: 'WRITE',
|
||||||
|
accepts: [
|
||||||
|
{
|
||||||
|
arg: 'ticketsIds',
|
||||||
|
description: 'The tickets id',
|
||||||
|
type: ['number'],
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arg: 'invoiceCorrection',
|
||||||
|
description: 'The invoice correction',
|
||||||
|
type: 'object',
|
||||||
|
}
|
||||||
|
|
||||||
|
],
|
||||||
|
returns: {
|
||||||
|
type: ['object'],
|
||||||
|
root: true
|
||||||
|
},
|
||||||
|
http: {
|
||||||
|
path: `/invoiceTicketsAndPdf`,
|
||||||
|
verb: 'POST'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Self.invoiceTicketsAndPdf = async(ctx, ticketsIds, invoiceCorrection, options) => {
|
||||||
|
let invoiceIds = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
invoiceIds = await Self.invoiceTickets(ctx, ticketsIds, invoiceCorrection, options);
|
||||||
|
if (!invoiceIds) return [];
|
||||||
|
if (!options.transaction)
|
||||||
|
await Self.app.models.InvoiceOut.makePdfList(ctx, invoiceIds, null, options);
|
||||||
|
return invoiceIds;
|
||||||
|
} catch (error) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
@ -102,7 +102,7 @@ describe('ticket invoiceTickets()', () => {
|
||||||
const options = {transaction: tx};
|
const options = {transaction: tx};
|
||||||
|
|
||||||
const ticketsIds = [11];
|
const ticketsIds = [11];
|
||||||
const invoicesIds = await models.Ticket.invoiceTickets(ctx, ticketsIds, null, options);
|
const invoicesIds = await models.Ticket.invoiceTicketsAndPdf(ctx, ticketsIds, null, options);
|
||||||
|
|
||||||
expect(invoicesIds.length).toBeGreaterThan(0);
|
expect(invoicesIds.length).toBeGreaterThan(0);
|
||||||
|
|
||||||
|
|
|
@ -42,5 +42,6 @@ module.exports = function(Self) {
|
||||||
require('../methods/ticket/expeditionPalletLabel')(Self);
|
require('../methods/ticket/expeditionPalletLabel')(Self);
|
||||||
require('../methods/ticket/saveSign')(Self);
|
require('../methods/ticket/saveSign')(Self);
|
||||||
require('../methods/ticket/invoiceTickets')(Self);
|
require('../methods/ticket/invoiceTickets')(Self);
|
||||||
|
require('../methods/ticket/invoiceTicketsAndPdf')(Self);
|
||||||
require('../methods/ticket/docuwareDownload')(Self);
|
require('../methods/ticket/docuwareDownload')(Self);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue