const LoopBackContext = require('loopback-context'); module.exports = function(Self) { require('../methods/receipt/filter')(Self); require('../methods/receipt/balanceCompensationEmail')(Self); require('../methods/receipt/balanceCompensationPdf')(Self); require('../methods/receipt/receiptPdf')(Self); require('../methods/receipt/receiptEmail')(Self); Self.validateBinded('amountPaid', isNotZero, { message: 'Amount cannot be zero', allowNull: false, allowBlank: false }); function isNotZero(value) { return !isNaN(value) && value != 0; } Self.validateAsync('companyFk', isOfficialCompany, { message: 'Company has to be official' }); async function isOfficialCompany(err, done) { const hasCompany = await Self.app.models.Company.exists(this.companyFk); if (!hasCompany) err(); done(); } Self.observe('before save', async function(ctx) { if (ctx.isNewInstance) { const loopBackContext = LoopBackContext.getCurrentContext(); ctx.instance.workerFk = loopBackContext.active.accessToken.userId; await Self.app.models.Till.create({ workerFk: ctx.instance.workerFk, bankFk: ctx.instance.bankFk, in: ctx.instance.amountPaid, concept: ctx.instance.description, dated: ctx.instance.payed, serie: 'A', isAccountable: true, number: ctx.instance.clientFk, companyFk: ctx.instance.companyFk }); } }); };