feat: update date
gitea/salix/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Javier Segarra 2025-02-23 10:02:11 +01:00
parent c8253aa0ff
commit 176475a7a7
2 changed files with 14 additions and 8 deletions

View File

@ -39,9 +39,13 @@ describe('Split', () => {
it('should split tickets with count 2 and success', async() => {
const data =
{ticketFk: 14, sales: [33]};
const result = await models.Ticket.split(ctx, data, options);
const result = await models.Ticket.split(ctx, data, Date.vnNew(), options);
const newTicket = await models.Ticket.findById(result.newTicket, null, options);
expect(newTicket).toBeDefined();
expect(data.ticketFk).toEqual(result.ticket);
expect(data.ticketFk).toEqual(result.ticket);
expect(data.ticketFk).not.toEqual(result.newTicket);
expect('split').toEqual(result.status);
});
});

View File

@ -10,7 +10,7 @@ module.exports = Self => {
http: {source: 'body'}
},
{
arg: 'date',
arg: 'landed',
type: 'date',
required: true,
}
@ -25,8 +25,7 @@ module.exports = Self => {
}
});
Self.split = async(ctx, ticket, options) => {
const {ticketFk} = ticket;
Self.split = async(ctx, {ticketFk, sales}, landed, options) => {
const models = Self.app.models;
const myOptions = {};
let tx;
@ -51,18 +50,21 @@ module.exports = Self => {
[ticketFk], myOptions);
if (vNewTicket === 0) return result;
const sales = await models.Sale.find({
where: {id: {inq: ticket.sales}}
const salesToUpdate = await models.Sale.find({
where: {id: {inq: sales}}
}, myOptions);
const updateIsPicked = sales.map(({sid}) => Self.rawSql(`
const updateIsPicked = salesToUpdate.map(({sid}) => Self.rawSql(`
UPDATE vn.sale SET isPicked = (id = ?) WHERE ticketFk = ?`,
[sid, ticketFk], myOptions));
await Promise.all(updateIsPicked);
await Self.transferSales(ctx, ticketFk, vNewTicket, sales, myOptions);
await Self.transferSales(ctx, ticketFk, vNewTicket, salesToUpdate, myOptions);
await Self.rawSql(`CALL vn.ticket_setState(?, ?)`, [ticketFk, 'FIXING'], myOptions);
const newTicket = await models.Ticket.findById(vNewTicket, null, myOptions);
await newTicket.updateAttributes({landed}, myOptions);
if (tx) await tx.commit();
return {ticket: ticketFk, newTicket: vNewTicket, status: 'split'};
} catch (e) {