salix/modules/ticket/back/models/sale.js

58 lines
2.2 KiB
JavaScript
Raw Normal View History

const UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
2018-08-30 09:02:50 +00:00
require('../methods/sale/getClaimableFromTicket')(Self);
require('../methods/sale/reserve')(Self);
require('../methods/sale/deleteSales')(Self);
require('../methods/sale/updatePrice')(Self);
require('../methods/sale/updateQuantity')(Self);
2019-09-06 09:43:15 +00:00
require('../methods/sale/updateConcept')(Self);
2019-11-21 11:00:56 +00:00
require('../methods/sale/recalculatePrice')(Self);
require('../methods/sale/refund')(Self);
require('../methods/sale/canEdit')(Self);
require('../methods/sale/usesMana')(Self);
Self.validatesPresenceOf('concept', {
message: `Concept cannot be blank`
});
Self.observe('before save', async ctx => {
const models = Self.app.models;
const changes = ctx.data || ctx.instance;
const instance = ctx.currentInstance;
console.log(ctx?.req?.accessToken, instance, changes);
const newQuantity = changes?.quantity;
if (newQuantity === null) return;
const canEditQuantity = await models.ACL.checkAccessAcl(ctx, 'Sale', 'canForceQuantity', 'WRITE');
if (canEditQuantity) return;
const ticketId = changes?.ticketFk || instance?.ticketFk;
const itemId = changes?.itemFk || instance?.itemFk;
const ticketRefund = await models.TicketRefund.findOne({
where: {refundTicketFk: ticketId},
fields: ['id']}
, ctx.options);
const item = await models.Item.findOne({
where: {id: itemId},
fields: ['minQuantity']}
, ctx.options);
if (newQuantity < item.minQuantity && !ticketRefund)
throw new UserError('The amount cannot be less than the minimum');
if (newQuantity < 0 && !ticketRefund)
throw new UserError('You can only add negative amounts in refund tickets');
const oldQuantity = instance?.quantity;
if (oldQuantity === null) return;
const isRoleAdvanced = await models.ACL.checkAccessAcl(ctx, 'Ticket', 'isRoleAdvanced', '*');
if (newQuantity > oldQuantity && !isRoleAdvanced)
throw new UserError('The new quantity should be smaller than the old one');
});
2018-04-10 05:48:04 +00:00
};