This commit is contained in:
parent
e527780622
commit
02e38eb711
|
@ -46,7 +46,7 @@ module.exports = Self => {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const [[item]] = await Self.rawSql('CALL vn.item_getInfo(?,?)', [code, warehouseFk]);
|
const [[item]] = await Self.rawSql('CALL vn.item_getInfo(?,?)', [code, warehouseFk], myOptions);
|
||||||
|
|
||||||
if (!item?.available) throw new UserError($t('We do not have availability for the selected item'));
|
if (!item?.available) throw new UserError($t('We do not have availability for the selected item'));
|
||||||
|
|
||||||
|
|
|
@ -56,92 +56,92 @@ module.exports = Self => {
|
||||||
if (tickets.length) await sendRocketTickets(tickets);
|
if (tickets.length) await sendRocketTickets(tickets);
|
||||||
|
|
||||||
return getCollection(id, tickets, sales, placements, myOptions);
|
return getCollection(id, tickets, sales, placements, myOptions);
|
||||||
|
};
|
||||||
|
async function sendRocketTickets(tickets) {
|
||||||
|
for (let ticket of tickets) {
|
||||||
|
let observations = ticket.observaciones.split(' ');
|
||||||
|
|
||||||
async function sendRocketTickets(tickets) {
|
for (let observation of observations) {
|
||||||
for (let ticket of tickets) {
|
const salesMan = ticket.salesPersonFk;
|
||||||
let observations = ticket.observaciones.split(' ');
|
|
||||||
|
|
||||||
for (let observation of observations) {
|
if (!observation.startsWith('#') && !observation.startsWith('@')) return;
|
||||||
const salesMan = ticket.salesPersonFk;
|
|
||||||
|
|
||||||
if (!observation.startsWith('#') && !observation.startsWith('@')) return;
|
await models.Chat.send(ctx,
|
||||||
|
observation,
|
||||||
await models.Chat.send(ctx,
|
`El ticket ${ticket.ticketFk} del comercial ${salesMan} está en preparación.(mensaje creado automáticamente)`
|
||||||
observation,
|
|
||||||
`El ticket ${ticket.ticketFk} del comercial ${salesMan} está en preparación.(mensaje creado automáticamente)`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function getCollection(id, tickets, sales, placements, options) {
|
|
||||||
const collection = {
|
|
||||||
collectionFk: id,
|
|
||||||
tickets: [],
|
|
||||||
};
|
|
||||||
for (let ticket of tickets) {
|
|
||||||
const {ticketFk} = ticket;
|
|
||||||
ticket.sales = [];
|
|
||||||
|
|
||||||
const barcodes = await getBarcodes(ticketFk);
|
|
||||||
await Self.rawSql(
|
|
||||||
'CALL util.log_add(?, ?, ?, ?, ?, ?, ?, ?)',
|
|
||||||
['vn', 'ticket', 'Ticket', ticketFk, ticketFk, 'select', null, null],
|
|
||||||
options
|
|
||||||
);
|
);
|
||||||
|
|
||||||
for (let sale of sales) {
|
|
||||||
if (sale.ticketFk == ticketFk) {
|
|
||||||
sale.placements = [];
|
|
||||||
for (const salePlacement of placements) {
|
|
||||||
let placement;
|
|
||||||
if (salePlacement.saleFk == sale.saleFk && salePlacement.order) {
|
|
||||||
placement = {
|
|
||||||
saleFk: salePlacement.saleFk,
|
|
||||||
itemFk: salePlacement.itemFk,
|
|
||||||
placement: salePlacement.placement,
|
|
||||||
shelving: salePlacement.shelving,
|
|
||||||
created: salePlacement.created,
|
|
||||||
visible: salePlacement.visible,
|
|
||||||
order: salePlacement.order,
|
|
||||||
grouping: salePlacement.grouping,
|
|
||||||
priority: salePlacement.priority,
|
|
||||||
saleOrder: salePlacement.saleOrder,
|
|
||||||
isPreviousPrepared: salePlacement.isPreviousPrepared,
|
|
||||||
itemShelvingSaleFk: salePlacement.itemShelvingSaleFk,
|
|
||||||
ticketFk: salePlacement.ticketFk,
|
|
||||||
id: salePlacement.id
|
|
||||||
};
|
|
||||||
sale.placements.push(placement);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sale.barcodes = [];
|
|
||||||
for (const barcode of barcodes) {
|
|
||||||
if (barcode.movementId == sale.saleFk) {
|
|
||||||
if (barcode.code) {
|
|
||||||
sale.barcodes.push(barcode.code);
|
|
||||||
sale.barcodes.push(`0 ${barcode.code}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (barcode.id) {
|
|
||||||
sale.barcodes.push(barcode.id);
|
|
||||||
sale.barcodes.push(`0 ${barcode.id}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ticket.sales.push(sale);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
collection.tickets.push(ticket);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return collection;
|
async function getCollection(id, tickets, sales, placements, options) {
|
||||||
|
const collection = {
|
||||||
|
collectionFk: id,
|
||||||
|
tickets: [],
|
||||||
|
};
|
||||||
|
for (let ticket of tickets) {
|
||||||
|
const {ticketFk} = ticket;
|
||||||
|
ticket.sales = [];
|
||||||
|
|
||||||
|
const barcodes = await getBarcodes(ticketFk);
|
||||||
|
await Self.rawSql(
|
||||||
|
'CALL util.log_add(?, ?, ?, ?, ?, ?, ?, ?)',
|
||||||
|
['vn', 'ticket', 'Ticket', ticketFk, ticketFk, 'select', null, null],
|
||||||
|
options
|
||||||
|
);
|
||||||
|
|
||||||
|
for (let sale of sales) {
|
||||||
|
if (sale.ticketFk == ticketFk) {
|
||||||
|
sale.placements = [];
|
||||||
|
for (const salePlacement of placements) {
|
||||||
|
let placement;
|
||||||
|
if (salePlacement.saleFk == sale.saleFk && salePlacement.order) {
|
||||||
|
placement = {
|
||||||
|
saleFk: salePlacement.saleFk,
|
||||||
|
itemFk: salePlacement.itemFk,
|
||||||
|
placement: salePlacement.placement,
|
||||||
|
shelving: salePlacement.shelving,
|
||||||
|
created: salePlacement.created,
|
||||||
|
visible: salePlacement.visible,
|
||||||
|
order: salePlacement.order,
|
||||||
|
grouping: salePlacement.grouping,
|
||||||
|
priority: salePlacement.priority,
|
||||||
|
saleOrder: salePlacement.saleOrder,
|
||||||
|
isPreviousPrepared: salePlacement.isPreviousPrepared,
|
||||||
|
itemShelvingSaleFk: salePlacement.itemShelvingSaleFk,
|
||||||
|
ticketFk: salePlacement.ticketFk,
|
||||||
|
id: salePlacement.id
|
||||||
|
};
|
||||||
|
sale.placements.push(placement);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sale.barcodes = [];
|
||||||
|
for (const barcode of barcodes) {
|
||||||
|
if (barcode.movementId == sale.saleFk) {
|
||||||
|
if (barcode.code) {
|
||||||
|
sale.barcodes.push(barcode.code);
|
||||||
|
sale.barcodes.push(`0 ${barcode.code}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (barcode.id) {
|
||||||
|
sale.barcodes.push(barcode.id);
|
||||||
|
sale.barcodes.push(`0 ${barcode.id}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ticket.sales.push(sale);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
collection.tickets.push(ticket);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getBarcodes(ticketId) {
|
return collection;
|
||||||
const query =
|
}
|
||||||
|
|
||||||
|
async function getBarcodes(ticketId) {
|
||||||
|
const query =
|
||||||
`SELECT s.id movementId,
|
`SELECT s.id movementId,
|
||||||
b.code,
|
b.code,
|
||||||
c.id
|
c.id
|
||||||
|
@ -152,21 +152,20 @@ module.exports = Self => {
|
||||||
LEFT JOIN vn.travel tr ON tr.id = e.travelFk
|
LEFT JOIN vn.travel tr ON tr.id = e.travelFk
|
||||||
WHERE s.ticketFk = ?
|
WHERE s.ticketFk = ?
|
||||||
AND tr.landed >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR)`;
|
AND tr.landed >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR)`;
|
||||||
return Self.rawSql(query, [ticketId]);
|
return Self.rawSql(query, [ticketId]);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function setState(source, id, options) {
|
async function setState(source, id, options) {
|
||||||
let state;
|
let state;
|
||||||
if (source == 'PRECHECKER') state = 'PREVIOUS_CONTROL';
|
if (source == 'PRECHECKER') state = 'PREVIOUS_CONTROL';
|
||||||
else if (source == 'CHECKER') state = 'ON_CHECKING';
|
else if (source == 'CHECKER') state = 'ON_CHECKING';
|
||||||
|
|
||||||
if (state) {
|
if (state) {
|
||||||
await Self.rawSql(
|
await Self.rawSql(
|
||||||
'CALL vn.ticketStateToday_setState(?,?)',
|
'CALL vn.ticketStateToday_setState(?,?)',
|
||||||
[id, state],
|
[id, state],
|
||||||
options
|
options
|
||||||
);
|
);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -43,11 +43,14 @@ describe('collection getSalesFromTicketOrCollection()', () => {
|
||||||
it('should print a sticker', async() => {
|
it('should print a sticker', async() => {
|
||||||
const tx = await models.Collection.beginTransaction({});
|
const tx = await models.Collection.beginTransaction({});
|
||||||
const options = {transaction: tx};
|
const options = {transaction: tx};
|
||||||
|
const query = 'SELECT * FROM printQueue pq JOIN printQueueArgs pqa ON pqa.printQueueFk = pq.id';
|
||||||
try {
|
try {
|
||||||
const printQueueBefore = await models.Collection.rawSql('SELECT * FROM printQueue', [], options);
|
const printQueueBefore = await models.Collection.rawSql(
|
||||||
|
query, [], options);
|
||||||
await models.Collection.getSalesFromTicketOrCollection(ctx,
|
await models.Collection.getSalesFromTicketOrCollection(ctx,
|
||||||
collectionOrTicketFk, print, source, options);
|
collectionOrTicketFk, true, source, options);
|
||||||
const printQueueAfter = await models.Collection.rawSql('SELECT * FROM printQueue', [], options);
|
const printQueueAfter = await models.Collection.rawSql(
|
||||||
|
query, [], options);
|
||||||
|
|
||||||
expect(printQueueAfter.length).toEqual(printQueueBefore.length + 1);
|
expect(printQueueAfter.length).toEqual(printQueueBefore.length + 1);
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
|
@ -56,4 +59,24 @@ describe('collection getSalesFromTicketOrCollection()', () => {
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should getSalesFromTicketOrCollection', async() => {
|
||||||
|
const tx = await models.Collection.beginTransaction({});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const options = {transaction: tx};
|
||||||
|
await models.Ticket.updateAll({id: collectionOrTicketFk}, {shipped: '2001-01-02 00:00:00.000'}, options);
|
||||||
|
|
||||||
|
const ticketTrackingBefore = await models.TicketTracking.find(null, options);
|
||||||
|
await models.Collection.getSalesFromTicketOrCollection(ctx,
|
||||||
|
collectionOrTicketFk, false, source, options);
|
||||||
|
const ticketTrackingAfter = await models.TicketTracking.find(null, options);
|
||||||
|
|
||||||
|
expect(ticketTrackingAfter.length).toEqual(ticketTrackingBefore.length + 1);
|
||||||
|
await tx.rollback();
|
||||||
|
} catch (e) {
|
||||||
|
await tx.rollback();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -47,7 +47,8 @@ module.exports = Self => {
|
||||||
}, 0);
|
}, 0);
|
||||||
discardItems.push(item);
|
discardItems.push(item);
|
||||||
|
|
||||||
const [result] = await Self.rawSql('SELECT vn.itemPacking(?, ?) itemPacking', [item, warehouseFk]);
|
const [result] = await Self.rawSql('SELECT vn.itemPacking(?, ?) itemPacking',
|
||||||
|
[item, warehouseFk], myOptions);
|
||||||
let packing;
|
let packing;
|
||||||
|
|
||||||
if (result) packing = result.itemPacking;
|
if (result) packing = result.itemPacking;
|
||||||
|
@ -56,11 +57,7 @@ module.exports = Self => {
|
||||||
quantity = quantity * packing;
|
quantity = quantity * packing;
|
||||||
|
|
||||||
await Self.rawSql('CALL vn.itemShelving_add(?, ?, ?, NULL, NULL, ?, ?)',
|
await Self.rawSql('CALL vn.itemShelving_add(?, ?, ?, NULL, NULL, ?, ?)',
|
||||||
[shelvingFk,
|
[shelvingFk, item, quantity, packing, warehouseFk], myOptions
|
||||||
item,
|
|
||||||
quantity,
|
|
||||||
packing,
|
|
||||||
warehouseFk]
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,8 +39,8 @@ module.exports = Self => {
|
||||||
};
|
};
|
||||||
|
|
||||||
let itemShelvings = await models.ItemShelving.find(filterItemShelvings, myOptions);
|
let itemShelvings = await models.ItemShelving.find(filterItemShelvings, myOptions);
|
||||||
const [alternatives] = await models.ItemShelving.rawSql(
|
const [alternatives] = await models.ItemShelving.rawSql('CALL vn.itemShelving_getAlternatives(?)',
|
||||||
'CALL vn.itemShelving_getAlternatives(?)', [shelvingFk]
|
[shelvingFk], myOptions
|
||||||
);
|
);
|
||||||
|
|
||||||
if (itemShelvings) {
|
if (itemShelvings) {
|
||||||
|
|
|
@ -96,7 +96,7 @@ module.exports = Self => {
|
||||||
neq: null
|
neq: null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
}, myOptions);
|
||||||
}
|
}
|
||||||
if (isBuy)
|
if (isBuy)
|
||||||
await models.SaleBuy.create({saleFk, buyFk}, myOptions);
|
await models.SaleBuy.create({saleFk, buyFk}, myOptions);
|
||||||
|
|
Loading…
Reference in New Issue