#7663 setWeight #2817
|
@ -0,0 +1,9 @@
|
|||
-- Place your SQL code here
|
||||
INSERT INTO salix.ACL
|
||||
SET model = 'Ticket',
|
||||
property = 'setWeight',
|
||||
accessType = 'WRITE',
|
||||
permission = 'ALLOW',
|
||||
principalType = 'ROLE',
|
||||
principalId = 'salesPerson';
|
||||
|
|
@ -368,5 +368,6 @@
|
|||
"Payment method is required": "El método de pago es obligatorio",
|
||||
"Cannot send mail": "Não é possível enviar o email",
|
||||
"CONSTRAINT `supplierAccountTooShort` failed for `vn`.`supplier`": "La cuenta debe tener exactamente 10 dígitos",
|
||||
"The sale not exists in the item shelving": "La venta no existe en la estantería del artículo"
|
||||
"The sale not exists in the item shelving": "La venta no existe en la estantería del artículo",
|
||||
"Weight already set": "El peso ya está establecido"
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
const UserError = require('vn-loopback/util/user-error');
|
||||
|
||||
module.exports = Self => {
|
||||
Self.remoteMethodCtx('setWeight', {
|
||||
description: 'Sets weight of a ticket',
|
||||
accessType: 'WRITE',
|
||||
accepts: [{
|
||||
arg: 'id',
|
||||
type: 'number',
|
||||
required: true,
|
||||
description: 'The ticket id',
|
||||
http: {source: 'path'}
|
||||
}, {
|
||||
arg: 'weight',
|
||||
type: 'number',
|
||||
required: true,
|
||||
description: 'The weight value',
|
||||
}],
|
||||
http: {
|
||||
path: `/:id/setWeight`,
|
||||
verb: 'POST'
|
||||
}
|
||||
});
|
||||
|
||||
Self.setWeight = async(ctx, ticketId, weight, invoiceable, options) => {
|
||||
const models = Self.app.models;
|
||||
const userId = ctx.req.accessToken.userId;
|
||||
const myOptions = {userId};
|
||||
let tx;
|
||||
|
||||
if (typeof options == 'object') Object.assign(myOptions, options);
|
||||
|
||||
if (!myOptions.transaction) {
|
||||
tx = await Self.beginTransaction({});
|
||||
myOptions.transaction = tx;
|
||||
}
|
||||
|
||||
try {
|
||||
if (ticket.weight) throw new UserError('Weight already set');
|
||||
|
||||
const canEdit = await models.ACL.checkAccessAcl(ctx, 'Ticket', 'updateAttributes');
|
||||
const ticket = await Self.findById(ticketId, null, myOptions);
|
||||
const client = await models.Client.findById(ticket.clientFk, {
|
||||
include: {relation: 'salesPersonUser'}},
|
||||
alexm marked this conversation as resolved
|
||||
myOptions);
|
||||
|
||||
if (!canEdit) {
|
||||
const salesPersonUser = client.salesPersonUser();
|
||||
const workerDepartments = await models.WorkerDepartment.find({
|
||||
include: {relation: 'department'},
|
||||
where: {workerFk: {inq: [userId, salesPersonUser.id]}}
|
||||
}, myOptions);
|
||||
|
||||
if (workerDepartments[0].departmentFk != workerDepartments[1].departmentFk)
|
||||
throw new UserError('You don\'t have enough privileges');
|
||||
}
|
||||
|
||||
await ticket.updateAttribute('weight', weight, myOptions);
|
||||
|
||||
const packedState = await models.State.findOne({where: {code: 'PACKED'}}, myOptions);
|
||||
const ticketState = await models.TicketState.findOne({where: {ticketFk: ticketId}}, myOptions);
|
||||
|
||||
jorgep marked this conversation as resolved
Outdated
alexm
commented
Yo daria un error mas especifico diciendo que no pueden pq no son del mismo equipo Yo daria un error mas especifico diciendo que no pueden pq no son del mismo equipo
|
||||
const [{taxArea}] = await Self.rawSql('SELECT clientTaxArea(?,?) taxArea',
|
||||
[ticket.clientFk, ticket.warehouseFk], myOptions);
|
||||
|
||||
if (ticketState.alertLevel >= packedState.alertLevel && taxArea == 'WORLD' && client.hasDailyInvoice)
|
||||
await Self.invoiceTicketsAndPdf(ctx, [ticketId], null, myOptions);
|
||||
|
||||
if (tx) await tx.commit();
|
||||
} catch (e) {
|
||||
if (tx) await tx.rollback();
|
||||
throw e;
|
||||
}
|
||||
};
|
||||
};
|
|
@ -47,4 +47,5 @@ module.exports = function(Self) {
|
|||
require('../methods/ticket/docuwareDownload')(Self);
|
||||
require('../methods/ticket/myLastModified')(Self);
|
||||
require('../methods/ticket/clone')(Self);
|
||||
require('../methods/ticket/setWeight')(Self);
|
||||
};
|
||||
|
|
|
@ -3,4 +3,5 @@ Address mobile: Móv. consignatario
|
|||
Client phone: Tel. cliente
|
||||
Client mobile: Móv. cliente
|
||||
Go to the ticket: Ir al ticket
|
||||
Change state: Cambiar estado
|
||||
Change state: Cambiar estado
|
||||
Weight: Peso
|
Loading…
Reference in New Issue
Esta comprobación la han pedido?
Sí, me dijo que solo se debe de poder establecer el peso del ticket si no tiene.