From f300c5d047018ef615c2f2a082ff168b0d029fc5 Mon Sep 17 00:00:00 2001 From: jgallego Date: Wed, 4 Sep 2019 12:17:33 +0200 Subject: [PATCH] Bug/Test #1679 claim.action falla el boton import --- .../importToNewRefundTicket.js | 96 ++++--------------- 1 file changed, 18 insertions(+), 78 deletions(-) diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js index 45a9ec0d60..cd64c86e36 100644 --- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js +++ b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js @@ -1,3 +1,5 @@ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; + module.exports = Self => { Self.remoteMethodCtx('importToNewRefundTicket', { description: 'Imports lines from claimBeginning to a new ticket with specific shipped, landed dates, agency and company', @@ -62,54 +64,23 @@ module.exports = Self => { const worker = await models.Worker.findOne({ where: {userFk: userId} }, options); - - const obsevationType = await models.ObservationType.findOne({ - where: {description: 'comercial'} - }, options); - - const agency = await models.AgencyMode.findOne({ - where: {code: 'refund'} - }, options); - - const state = await models.State.findOne({ - where: {code: 'DELIVERED'} - }, options); - - const claim = await models.Claim.findOne(filter, options); - const today = new Date(); + let stmts = []; + let stmt; - const newRefundTicket = await models.Ticket.new(ctx, { - clientFk: claim.ticket().clientFk, - shipped: today, - landed: today, - warehouseFk: claim.ticket().warehouseFk, - companyFk: claim.ticket().companyFk, - addressFk: claim.ticket().addressFk, - agencyModeFk: agency.id, - userId: userId - }, options); + stmt = new ParameterizedSQL('CALL vn.refund(?, @result)', [ + claim.ticketFk + ]); - await saveObservation({ - description: `Reclama ticket: ${claim.ticketFk}`, - ticketFk: newRefundTicket.id, - observationTypeFk: obsevationType.id - }, options); - - await models.TicketTracking.create({ - ticketFk: newRefundTicket.id, - stateFk: state.id, - workerFk: worker.id - }, options); - - const salesToRefund = await models.ClaimBeginning.find(salesFilter, options); - const createdSales = await addSalesToTicket(salesToRefund, newRefundTicket.id, options); - await insertIntoClaimEnd(createdSales, id, worker.id, options); - - await Self.rawSql('CALL vn.ticketCalculateClon(?, ?)', [ - newRefundTicket.id, claim.ticketFk - ], options); + stmts.push(stmt); + let ticketIndex = stmts.push('SELECT @result vNewRefundTicket') - 1; + let sql = ParameterizedSQL.join(stmts, ';'); + let result = await Self.rawStmt(sql, options); + let newRefundTicketId = result[ticketIndex][0].vNewRefundTicket; + const newRefundTicket = await models.Ticket.findById(newRefundTicketId, null, options); + const claimBeginnings = await models.ClaimBeginning.find(salesFilter, options); + await insertIntoClaimEnd(claimBeginnings, id, worker.id, options); await tx.commit(); return newRefundTicket; @@ -118,31 +89,11 @@ module.exports = Self => { throw e; } }; - - async function addSalesToTicket(salesToRefund, ticketId, options) { - let formatedSales = []; - salesToRefund.forEach(sale => { - let formatedSale = { - itemFk: sale.sale().itemFk, - ticketFk: ticketId, - concept: sale.sale().concept, - quantity: -Math.abs(sale.quantity), - price: sale.sale().price, - discount: sale.sale().discount, - reserved: sale.sale().reserved, - isPicked: sale.sale().isPicked, - created: sale.sale().created - }; - formatedSales.push(formatedSale); - }); - return await Self.app.models.Sale.create(formatedSales, options); - } - - async function insertIntoClaimEnd(createdSales, claimId, workerId, options) { + async function insertIntoClaimEnd(claimBeginnings, claimId, workerId, options) { const formatedSales = []; - createdSales.forEach(sale => { + claimBeginnings.forEach(claimBeginning => { let formatedSale = { - saleFk: sale.id, + saleFk: claimBeginning.saleFk, claimFk: claimId, workerFk: workerId }; @@ -150,15 +101,4 @@ module.exports = Self => { }); await Self.app.models.ClaimEnd.create(formatedSales, options); } - - async function saveObservation(observation, options) { - const query = `INSERT INTO vn.ticketObservation (ticketFk, observationTypeFk, description) VALUES(?, ?, ?) - ON DUPLICATE KEY - UPDATE description = CONCAT(vn.ticketObservation.description, VALUES(description),' ')`; - await Self.rawSql(query, [ - observation.ticketFk, - observation.observationTypeFk, - observation.description - ], options); - } };