salix/services/loopback/common/methods/claim/getSummary.js

105 lines
3.0 KiB
JavaScript

module.exports = Self => {
Self.remoteMethod('getSummary', {
description: 'Updates the item taxes',
accessType: 'READ',
accepts: [{
arg: 'id',
type: 'number',
required: true,
description: 'The item id',
http: {source: 'path'}
}],
returns: {
type: 'object',
root: true
},
http: {
path: `/:id/getSummary`,
verb: 'GET'
}
});
Self.getSummary = async id => {
let promises = [];
let summary = {};
// Claim
let filter = {
where: {id: id},
include: [
{relation: 'worker', scope: {fields: ['name', 'firstName']}},
{relation: 'claimState', scope: {fields: ['id', 'description']}},
{
relation: 'client',
scope: {
fields: ['salesPersonFk', 'name'],
include: {
relation: 'salesPerson',
fields: ['firstName', 'name']
}
}
}
]
};
promises.push(Self.app.models.Claim.find(filter));
// Claim detail
filter = {
where: {claimFk: id},
include: [
{relation: 'sale',
scope: {
fields: ['concept', 'ticketFk', 'price', 'quantity', 'discount', 'itemFk'],
include: {
relation: 'ticket'
}
}
}
]
};
promises.push(Self.app.models.ClaimBeginning.find(filter));
// Claim developments
filter = {
where: {claimFk: id},
include: [
{relation: 'claimResponsible'},
{relation: 'worker'},
{relation: 'claimDestination'},
{relation: 'claimReason'},
{relation: 'claimResult'},
{relation: 'claimRedelivery'}
]
};
promises.push(Self.app.models.ClaimDevelopment.find(filter));
// Claim action
filter = {
where: {claimFk: id},
include: [
{relation: 'sale',
scope: {
fields: ['concept', 'price', 'quantity', 'discount', 'ticketFk', 'itemFk'],
include: [
{relation: 'ticket'}
]
}
},
{relation: 'claimBeggining'}
]
};
promises.push(Self.app.models.ClaimEnd.find(filter));
let res = await Promise.all(promises);
[summary.claim] = res[0];
summary.salesClaimed = res[1];
summary.developments = res[2];
summary.actions = res[3];
return summary;
};
};