const {Email} = require('vn-print'); const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { Self.remoteMethodCtx('balanceCompensationEmail', { description: 'Sends the debit balances compensation email with an attached PDF', accessType: 'WRITE', accepts: [ { arg: 'id', type: 'Number', required: true, description: 'The receipt id', http: {source: 'path'} } ], returns: { type: ['object'], root: true }, http: { path: '/:id/balance-compensation-email', verb: 'POST' } }); Self.balanceCompensationEmail = async(ctx, id) => { const models = Self.app.models; const receipt = await models.Receipt.findById(id, {fields: ['clientFk', 'bankFk']}); const bank = await models.Accounting.findById(receipt.bankFk); if (!bank) throw new UserError(`Receipt's bank was not found`); const accountingType = await models.AccountingType.findById(bank.accountingTypeFk); if (!(accountingType && accountingType.code == 'compensation')) throw new UserError(`This receipt was not compensated`); const client = await models.Client.findById(receipt.clientFk, {fields: ['email']}); if (!client.email) throw new UserError(`Client's email was not found`); else { const email = new Email('balance-compensation', { lang: ctx.req.getLocale(), recipient: client.email + ',administracion@verdnatura.es', id }); return email.send(); } }; };