Bug/Test #1679 claim.action falla el boton import
gitea/salix/test This commit looks good Details

This commit is contained in:
Javi Gallego 2019-09-04 12:17:33 +02:00
parent 75afe118ed
commit f300c5d047
1 changed files with 18 additions and 78 deletions

View File

@ -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);
}
};