salix/modules/ticket/back/methods/sale/updateQuantity.js

47 lines
1.3 KiB
JavaScript

let UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
Self.remoteMethodCtx('updateQuantity', {
description: 'Changes the quantity of a sale',
accessType: 'WRITE',
accepts: [{
arg: 'id',
type: 'number',
required: true,
description: 'sale ID',
http: {source: 'path'}
}, {
arg: 'quantity',
type: 'number',
required: true,
description: 'newQuantity'
}],
returns: {
type: 'string',
root: true
},
http: {
path: `/:id/updateQuantity`,
verb: 'post'
}
});
Self.updateQuantity = async(ctx, id, quantity) => {
const models = Self.app.models;
const canEditSale = await models.Sale.canEdit(ctx, [id]);
if (!canEditSale)
throw new UserError(`Sale(s) blocked, please contact production`);
if (isNaN(quantity))
throw new UserError(`The value should be a number`);
let currentLine = await models.Sale.findOne({where: {id: id}});
if (quantity > currentLine.quantity)
throw new UserError('The new quantity should be smaller than the old one');
return await currentLine.updateAttributes({quantity: quantity});
};
};