refactor(ticket): advanceable code

This commit is contained in:
Alex Moreno 2022-01-18 12:48:39 +01:00
parent b8355320f2
commit 8e1c3e107c
3 changed files with 9 additions and 14 deletions
db/changes/10410-january
modules/ticket/back/methods/ticket

View File

@ -2,7 +2,7 @@ DROP PROCEDURE IF EXISTS `vn`.`ticket_getAdvanceable`;
DELIMITER $$ DELIMITER $$
$$ $$
CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`ticket_getAdvanceable`(vTicketFk INT, vDatedNew DATETIME) CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`ticket_getAdvanceable`(vTicketFk INT, vDatedNew DATETIME, vWarehouseFk INT)
BEGIN BEGIN
/** /**
* Cálcula el stock avanzable para los artículos de un ticket * Cálcula el stock avanzable para los artículos de un ticket
@ -11,10 +11,9 @@ BEGIN
* @param vDatedNew -> Nueva fecha * @param vDatedNew -> Nueva fecha
* @return Sales con Avanzable * @return Sales con Avanzable
*/ */
DECLARE vWarehouseFk INT;
DECLARE vDatedOld DATETIME; DECLARE vDatedOld DATETIME;
SELECT t.warehouseFk, t.shipped INTO vWarehouseFk, vDatedOld SELECT t.shipped INTO vDatedOld
FROM ticket t FROM ticket t
WHERE t.id = vTicketFk; WHERE t.id = vTicketFk;

View File

@ -132,17 +132,13 @@ module.exports = Self => {
throw new UserError(error); throw new UserError(error);
} }
} }
if (args.isWithoutNegatives) { if (args.isWithoutNegatives) {
const query = `CALL ticket_getAdvanceable(?,?)`; const query = `CALL ticket_getAdvanceable(?,?,?)`;
const params = [args.id, args.shipped]; const params = [args.id, args.shipped, args.warehouseFk];
const [salesAdvanceable] = await Self.rawSql(query, params, myOptions); const [salesAdvanceable] = await Self.rawSql(query, params, myOptions);
let salesNewTicket = []; const salesNewTicket = salesAdvanceable.filter(sale => (sale.advanceable ?? 0) >= sale.quantity);
salesAdvanceable.forEach(sale => {
if (sale.advanceable >= sale.quantity)
salesNewTicket.push(sale);
});
if (salesNewTicket.length) { if (salesNewTicket.length) {
const newTicket = await models.Ticket.transferSales(ctx, args.id, null, salesNewTicket, myOptions); const newTicket = await models.Ticket.transferSales(ctx, args.id, null, salesNewTicket, myOptions);
args.id = newTicket.id; args.id = newTicket.id;

View File

@ -111,13 +111,13 @@ module.exports = Self => {
}; };
// Get items advanceable // Get items advanceable
let query = `CALL ticket_getAdvanceable(?,?)`; let query = `CALL ticket_getAdvanceable(?,?,?)`;
let params = [args.id, args.shipped]; let params = [args.id, args.shipped, args.warehouseId];
const [salesAdvanceable] = await Self.rawSql(query, params, myOptions); const [salesAdvanceable] = await Self.rawSql(query, params, myOptions);
const itemAdvanceable = new Map(); const itemAdvanceable = new Map();
for (sale of salesAdvanceable) for (sale of salesAdvanceable)
itemAdvanceable.set(sale.id, sale.advanceable); itemAdvanceable.set(sale.id, sale.advanceable ?? 0);
// Sale price component, one per sale // Sale price component, one per sale
query = `CALL vn.ticket_priceDifference(?, ?, ?, ?, ?)`; query = `CALL vn.ticket_priceDifference(?, ?, ?, ?, ?)`;