From 1d47690bb49515d8d3871a550b917bc6837d3e61 Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 17 Sep 2024 08:31:58 +0200 Subject: [PATCH 1/7] feat: refs #7884 added new filter field --- modules/entry/back/methods/entry/filter.js | 22 +++++++++++++--- .../back/methods/entry/specs/filter.spec.js | 25 +++++++++++++++++-- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js index 776544bc6..60b58864b 100644 --- a/modules/entry/back/methods/entry/filter.js +++ b/modules/entry/back/methods/entry/filter.js @@ -106,10 +106,15 @@ module.exports = Self => { description: `The to shipped date filter` }, { - arg: 'days', + arg: 'daysOnward', type: 'number', description: `N days interval` }, + { + arg: 'daysAgo', + type: 'number', + description: `N days ago interval` + }, { arg: 'invoiceAmount', type: 'number', @@ -216,15 +221,26 @@ module.exports = Self => { JOIN vn.currency cu ON cu.id = e.currencyFk` ); - if (ctx.args.days) { + if (ctx.args.daysOnward) { stmt.merge({ sql: ` AND t.shipped <= util.VN_CURDATE() + INTERVAL ? DAY AND t.shipped >= util.VN_CURDATE() `, - params: [ctx.args.days] + params: [ctx.args.daysOnward] }); } + + if (ctx.args.daysAgo) { + stmt.merge({ + sql: ` + AND t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY + AND t.shipped < util.VN_CURDATE() + `, + params: [ctx.args.daysAgo] + }); + } + stmt.merge(conn.makeSuffix(filter)); const itemsIndex = stmts.push(stmt) - 1; diff --git a/modules/entry/back/methods/entry/specs/filter.spec.js b/modules/entry/back/methods/entry/specs/filter.spec.js index c7156062a..105838858 100644 --- a/modules/entry/back/methods/entry/specs/filter.spec.js +++ b/modules/entry/back/methods/entry/specs/filter.spec.js @@ -49,13 +49,13 @@ describe('Entry filter()', () => { }); describe('should return the entry matching the supplier', () => { - it('when userId is supplier ', async() => { + it('when userId is supplier and searching days onward', async() => { const tx = await models.Entry.beginTransaction({}); const options = {transaction: tx}; try { const ctx = { - args: {days: 6}, + args: {daysOnward: 6}, req: {accessToken: {userId: 1102}} }; @@ -70,6 +70,27 @@ describe('Entry filter()', () => { } }); + it('when userId is supplier and searching days ago', async() => { + const tx = await models.Entry.beginTransaction({}); + const options = {transaction: tx}; + + try { + const ctx = { + args: {daysAgo: 31}, + req: {accessToken: {userId: 1102}} + }; + + const result = await models.Entry.filter(ctx, options); + + expect(result.length).toEqual(6); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + it('when userId is supplier fetching other supplier', async() => { const tx = await models.Entry.beginTransaction({}); const options = {transaction: tx}; From 71362baa661af6d998c0d6d2d18c35a101c5190e Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 17 Sep 2024 12:42:47 +0200 Subject: [PATCH 2/7] feat: refs #7884 added filter when daysOnward and daysAgo have value and refactor ifs block --- modules/entry/back/methods/entry/filter.js | 39 +++++++++++++--------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js index 60b58864b..35bf9677d 100644 --- a/modules/entry/back/methods/entry/filter.js +++ b/modules/entry/back/methods/entry/filter.js @@ -221,24 +221,33 @@ module.exports = Self => { JOIN vn.currency cu ON cu.id = e.currencyFk` ); - if (ctx.args.daysOnward) { - stmt.merge({ - sql: ` - AND t.shipped <= util.VN_CURDATE() + INTERVAL ? DAY - AND t.shipped >= util.VN_CURDATE() - `, - params: [ctx.args.daysOnward] - }); - } + const {daysAgo, daysOnward} = ctx.args; - if (ctx.args.daysAgo) { - stmt.merge({ - sql: ` + if (daysAgo || daysOnward) { + let sql = ''; + const params = []; + + if (daysAgo && daysOnward) { + sql = ` + AND t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY + AND t.shipped <= util.VN_CURDATE() + INTERVAL ? DAY + `; + params.push(daysAgo, daysOnward); + } else if (daysAgo) { + sql = ` AND t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY AND t.shipped < util.VN_CURDATE() - `, - params: [ctx.args.daysAgo] - }); + `; + params.push(daysAgo); + } else if (daysOnward) { + sql = ` + AND t.shipped <= util.VN_CURDATE() + INTERVAL ? DAY + AND t.shipped >= util.VN_CURDATE() + `; + params.push(daysOnward); + } + + stmt.merge({sql, params}); } stmt.merge(conn.makeSuffix(filter)); From c680c4a05933bc8ca1e40f114f62ccd242bd4851 Mon Sep 17 00:00:00 2001 From: Jon Date: Mon, 30 Sep 2024 12:07:55 +0200 Subject: [PATCH 3/7] refactor: refs #7884 modified sql --- modules/entry/back/methods/entry/filter.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js index 35bf9677d..a781659c8 100644 --- a/modules/entry/back/methods/entry/filter.js +++ b/modules/entry/back/methods/entry/filter.js @@ -229,19 +229,19 @@ module.exports = Self => { if (daysAgo && daysOnward) { sql = ` - AND t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY + WHERE t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY AND t.shipped <= util.VN_CURDATE() + INTERVAL ? DAY `; params.push(daysAgo, daysOnward); } else if (daysAgo) { sql = ` - AND t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY + WHERE t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY AND t.shipped < util.VN_CURDATE() `; params.push(daysAgo); } else if (daysOnward) { sql = ` - AND t.shipped <= util.VN_CURDATE() + INTERVAL ? DAY + WHERE t.shipped <= util.VN_CURDATE() + INTERVAL ? DAY AND t.shipped >= util.VN_CURDATE() `; params.push(daysOnward); From c4f26094d570186d79fef4e8b6aa21639374fbe5 Mon Sep 17 00:00:00 2001 From: Jon Date: Mon, 30 Sep 2024 12:46:41 +0200 Subject: [PATCH 4/7] fix: refs #7884 fixed filter --- modules/entry/back/methods/entry/filter.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js index a781659c8..35bf9677d 100644 --- a/modules/entry/back/methods/entry/filter.js +++ b/modules/entry/back/methods/entry/filter.js @@ -229,19 +229,19 @@ module.exports = Self => { if (daysAgo && daysOnward) { sql = ` - WHERE t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY + AND t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY AND t.shipped <= util.VN_CURDATE() + INTERVAL ? DAY `; params.push(daysAgo, daysOnward); } else if (daysAgo) { sql = ` - WHERE t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY + AND t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY AND t.shipped < util.VN_CURDATE() `; params.push(daysAgo); } else if (daysOnward) { sql = ` - WHERE t.shipped <= util.VN_CURDATE() + INTERVAL ? DAY + AND t.shipped <= util.VN_CURDATE() + INTERVAL ? DAY AND t.shipped >= util.VN_CURDATE() `; params.push(daysOnward); From 435fec03da8395c15c48ced9afb25708ecd82714 Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 1 Oct 2024 15:05:02 +0200 Subject: [PATCH 5/7] refactor: refs #7404 deprecated stockBuyed --- db/routines/vn/procedures/clean.sql | 2 +- .../vn/procedures/stockBuyedByWorker.sql | 74 ------------------- db/routines/vn/procedures/stockBuyed_add.sql | 70 ------------------ .../11272-azureLilium/00-firstScript.sql | 4 + 4 files changed, 5 insertions(+), 145 deletions(-) delete mode 100644 db/routines/vn/procedures/stockBuyedByWorker.sql delete mode 100644 db/routines/vn/procedures/stockBuyed_add.sql create mode 100644 db/versions/11272-azureLilium/00-firstScript.sql diff --git a/db/routines/vn/procedures/clean.sql b/db/routines/vn/procedures/clean.sql index a8ca68e5f..4a1f526fc 100644 --- a/db/routines/vn/procedures/clean.sql +++ b/db/routines/vn/procedures/clean.sql @@ -59,7 +59,7 @@ BEGIN DELETE b FROM buy b JOIN entryConfig e ON e.defaultEntry = b.entryFk WHERE b.created < v2Months; - DELETE FROM stockBuyed WHERE creationDate < v2Months; + DELETE FROM stockBought WHERE dated < v2Months; DELETE FROM printQueue WHERE statusCode = 'printed' AND created < v2Months; -- Equipos duplicados DELETE w.* diff --git a/db/routines/vn/procedures/stockBuyedByWorker.sql b/db/routines/vn/procedures/stockBuyedByWorker.sql deleted file mode 100644 index 13bda0133..000000000 --- a/db/routines/vn/procedures/stockBuyedByWorker.sql +++ /dev/null @@ -1,74 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`stockBuyedByWorker`( - vDated DATE, - vWorker INT -) -BEGIN -/** - * Inserta el volumen de compra de un comprador - * en stockBuyed de acuerdo con la fecha. - * - * @param vDated Fecha de compra - * @param vWorker Id de trabajador - */ - CREATE OR REPLACE TEMPORARY TABLE tStockBuyed - (INDEX (userFk)) - ENGINE = MEMORY - SELECT requested, reserved, userFk - FROM stockBuyed - WHERE dated = vDated - AND userFk = vWorker; - - DELETE FROM stockBuyed - WHERE dated = vDated - AND userFk = vWorker; - - CALL item_calculateStock(vDated); - - INSERT INTO stockBuyed(userFk, buyed, `dated`, reserved, requested, description) - SELECT it.workerFk, - SUM((ti.quantity / b.packing) * buy_getVolume(b.id)) / vc.palletM3 / 1000000, - vDated, - sb.reserved, - sb.requested, - u.name - FROM itemType it - JOIN item i ON i.typeFk = it.id - LEFT JOIN tmp.item ti ON ti.itemFk = i.id - JOIN itemCategory ic ON ic.id = it.categoryFk - JOIN warehouse wh ON wh.code = 'VNH' - JOIN tmp.buyUltimate bu ON bu.itemFk = i.id - AND bu.warehouseFk = wh.id - JOIN buy b ON b.id = bu.buyFk - JOIN volumeConfig vc - JOIN account.`user` u ON u.id = it.workerFk - LEFT JOIN tStockBuyed sb ON sb.userFk = it.workerFk - WHERE ic.display - AND it.workerFk = vWorker; - - SELECT b.entryFk Id_Entrada, - i.id Id_Article, - i.name Article, - ti.quantity Cantidad, - (ac.conversionCoefficient * (ti.quantity / b.packing) * buy_getVolume(b.id)) - / (vc.trolleyM3 * 1000000) buyed, - b.packagingFk id_cubo, - b.packing - FROM tmp.item ti - JOIN item i ON i.id = ti.itemFk - JOIN itemType it ON i.typeFk = it.id - JOIN itemCategory ic ON ic.id = it.categoryFk - JOIN worker w ON w.id = it.workerFk - JOIN auctionConfig ac - JOIN tmp.buyUltimate bu ON bu.itemFk = i.id - AND bu.warehouseFk = ac.warehouseFk - JOIN buy b ON b.id = bu.buyFk - JOIN volumeConfig vc - WHERE ic.display - AND w.id = vWorker; - - DROP TEMPORARY TABLE tmp.buyUltimate, - tmp.item, - tStockBuyed; -END$$ -DELIMITER ; diff --git a/db/routines/vn/procedures/stockBuyed_add.sql b/db/routines/vn/procedures/stockBuyed_add.sql deleted file mode 100644 index aab85e7fa..000000000 --- a/db/routines/vn/procedures/stockBuyed_add.sql +++ /dev/null @@ -1,70 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`stockBuyed_add`( - vDated DATE -) -BEGIN -/** - * Inserta el volumen de compra por comprador - * en stockBuyed de acuerdo con la fecha. - * - * @param vDated Fecha de compra - */ - CREATE OR REPLACE TEMPORARY TABLE tStockBuyed - (INDEX (userFk)) - ENGINE = MEMORY - SELECT requested, reserved, userFk - FROM stockBuyed - WHERE dated = vDated; - - DELETE FROM stockBuyed WHERE dated = vDated; - - CALL item_calculateStock(vDated); - - INSERT INTO stockBuyed(userFk, buyed, `dated`, description) - SELECT it.workerFk, - SUM((ti.quantity / b.packing) * buy_getVolume(b.id)) / vc.palletM3 / 1000000, - vDated, - u.name - FROM itemType it - JOIN item i ON i.typeFk = it.id - LEFT JOIN tmp.item ti ON ti.itemFk = i.id - JOIN itemCategory ic ON ic.id = it.categoryFk - JOIN warehouse wh ON wh.code = 'VNH' - JOIN tmp.buyUltimate bu ON bu.itemFk = i.id AND bu.warehouseFk = wh.id - JOIN buy b ON b.id = bu.buyFk - JOIN volumeConfig vc - JOIN account.`user` u ON u.id = it.workerFk - JOIN workerDepartment wd ON wd.workerFk = u.id - JOIN department d ON d.id = wd.departmentFk - WHERE ic.display - AND d.code IN ('shopping', 'logistic', 'franceTeam') - GROUP BY it.workerFk; - - INSERT INTO stockBuyed(buyed, dated, description) - SELECT SUM(ic.cm3 * ito.quantity / vc.palletM3 / 1000000), - vDated, - IF(c.code = 'ES', p.name, c.name) destiny - FROM itemTicketOut ito - JOIN ticket t ON t.id = ito.ticketFk - JOIN `address` a ON a.id = t.addressFk - JOIN province p ON p.id = a.provinceFk - JOIN country c ON c.id = p.countryFk - JOIN warehouse wh ON wh.id = t.warehouseFk - JOIN itemCost ic ON ic.itemFk = ito.itemFk - AND ic.warehouseFk = t.warehouseFk - JOIN volumeConfig vc - WHERE ito.shipped BETWEEN vDated AND util.dayend(vDated) - AND wh.code = 'VNH' - GROUP BY destiny; - - UPDATE stockBuyed s - JOIN tStockBuyed ts ON ts.userFk = s.userFk - SET s.requested = ts.requested, - s.reserved = ts.reserved - WHERE s.dated = vDated; - - DROP TEMPORARY TABLE tmp.buyUltimate, - tmp.item, - tStockBuyed; -END$$ -DELIMITER ; diff --git a/db/versions/11272-azureLilium/00-firstScript.sql b/db/versions/11272-azureLilium/00-firstScript.sql new file mode 100644 index 000000000..0194ece18 --- /dev/null +++ b/db/versions/11272-azureLilium/00-firstScript.sql @@ -0,0 +1,4 @@ +-- Place your SQL code here +RENAME TABLE vn.stockBuyed TO vn.stockBuyed__; +ALTER TABLE vn.stockBuyed__ +COMMENT='@deprecated 2024-10-01 rename and refactor to stockBought'; From b7b5334a99faefda26d190b28449d4ed313b2413 Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 1 Oct 2024 15:08:42 +0200 Subject: [PATCH 6/7] refactor: refs #7884 modified filter --- modules/entry/back/methods/entry/filter.js | 35 +++++++++------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js index 35bf9677d..f4703245c 100644 --- a/modules/entry/back/methods/entry/filter.js +++ b/modules/entry/back/methods/entry/filter.js @@ -221,36 +221,29 @@ module.exports = Self => { JOIN vn.currency cu ON cu.id = e.currencyFk` ); + stmt.merge(conn.makeWhere(filter.where)); + const {daysAgo, daysOnward} = ctx.args; - - if (daysAgo || daysOnward) { - let sql = ''; + if (daysOnward || daysAgo) { const params = []; + let today = 'util.VN_CURDATE()'; + let from = today; + let to = today; - if (daysAgo && daysOnward) { - sql = ` - AND t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY - AND t.shipped <= util.VN_CURDATE() + INTERVAL ? DAY - `; - params.push(daysAgo, daysOnward); - } else if (daysAgo) { - sql = ` - AND t.shipped >= util.VN_CURDATE() - INTERVAL ? DAY - AND t.shipped < util.VN_CURDATE() - `; + if (daysAgo) { + from += ' - INTERVAL ? DAY'; params.push(daysAgo); - } else if (daysOnward) { - sql = ` - AND t.shipped <= util.VN_CURDATE() + INTERVAL ? DAY - AND t.shipped >= util.VN_CURDATE() - `; + } + if (daysOnward) { + to += ' + INTERVAL ? DAY'; params.push(daysOnward); } - stmt.merge({sql, params}); + const whereDays = (filter.where ? 'AND' : 'WHERE') + ` t.shipped BETWEEN ${from} AND ${to}`; + stmt.merge({sql: whereDays, params}); } - stmt.merge(conn.makeSuffix(filter)); + stmt.merge(conn.makePagination(filter)); const itemsIndex = stmts.push(stmt) - 1; const sql = ParameterizedSQL.join(stmts, ';'); From 40512ca67ee97b37e1cd7ddf5f202eb26cb655be Mon Sep 17 00:00:00 2001 From: jgallego Date: Tue, 1 Oct 2024 15:49:51 +0200 Subject: [PATCH 7/7] feat: existingRefund without ticketRefunds --- modules/ticket/back/methods/sale/clone.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/modules/ticket/back/methods/sale/clone.js b/modules/ticket/back/methods/sale/clone.js index 24346f3ba..0b658a69e 100644 --- a/modules/ticket/back/methods/sale/clone.js +++ b/modules/ticket/back/methods/sale/clone.js @@ -142,12 +142,19 @@ module.exports = Self => { ctx.args.addressId = ticket.addressFk; const newTicket = await models.Ticket.new(ctx, myOptions); - - await models.TicketRefund.create({ - originalTicketFk: ticketId, - refundTicketFk: newTicket.id - }, myOptions); - + const existingRefund = await models.TicketRefund.findOne({ + where: { + originalTicketFk: ticketId, + refundTicketFk: newTicket.id + }, + myOptions + }); + if (!existingRefund) { + await models.TicketRefund.create({ + originalTicketFk: ticketId, + refundTicketFk: newTicket.id + }, myOptions); + } return newTicket; } };