#1096 back validaciones crear ticket

This commit is contained in:
Gerard 2019-02-06 16:37:59 +01:00
parent ffea839250
commit 171716806a
9 changed files with 109 additions and 44 deletions

View File

@ -24,7 +24,6 @@ class Controller {
this.$state.go('zone.index'); this.$state.go('zone.index');
}); });
} }
console.log('res', response);
} }
} }

View File

@ -38,6 +38,9 @@
"CreditInsurance": { "CreditInsurance": {
"dataSource": "vn" "dataSource": "vn"
}, },
"ClientType": {
"dataSource": "vn"
},
"Defaulter": { "Defaulter": {
"dataSource": "vn" "dataSource": "vn"
}, },

View File

@ -0,0 +1,24 @@
{
"name": "ClientType",
"base": "VnModel",
"options": {
"mysql": {
"table": "clientType"
}
},
"properties": {
"id": {
"type": "Number",
"id": true
},
"code": {
"type": "String"
},
"type": {
"type": "String"
},
"isCreatedAsServed": {
"type": "Number"
}
}
}

View File

@ -151,7 +151,7 @@
"type": { "type": {
"type": "belongsTo", "type": "belongsTo",
"model": "ClientType", "model": "ClientType",
"foreignKey": "typeFk" "foreignKey": "clientTypeFk"
}, },
"addresses": { "addresses": {
"type": "hasMany", "type": "hasMany",
@ -178,20 +178,20 @@
"model": "BankEntity", "model": "BankEntity",
"foreignKey": "bankEntityFk" "foreignKey": "bankEntityFk"
}, },
"defaulters": { "defaulters": {
"type": "hasMany", "type": "hasMany",
"model": "Defaulter", "model": "Defaulter",
"foreignKey": "clientFk" "foreignKey": "clientFk"
}, },
"clientRisks": { "clientRisks": {
"type": "hasMany", "type": "hasMany",
"model": "ClientRisk", "model": "ClientRisk",
"foreignKey": "clientFk" "foreignKey": "clientFk"
}, },
"claimsRatio": { "claimsRatio": {
"type": "hasMany", "type": "hasMany",
"model": "ClaimRatio", "model": "ClaimRatio",
"foreignKey": "clientFk" "foreignKey": "clientFk"
} }
} }
} }

View File

@ -20,7 +20,22 @@ module.exports = Self => {
}); });
Self.isEditable = async orderId => { Self.isEditable = async orderId => {
let exists = await Self.app.models.Order.findOne({where: {id: orderId}, fields: ['isConfirmed']}); let exists = await Self.app.models.Order.findOne({
where: {id: orderId},
fields: ['isConfirmed', 'clientFk'],
include: [
{relation: 'client',
scope: {
include: {
relation: 'type'
}
}
}
]
});
if (exists && exists.client().type().code !== 'normal')
return true;
if (!exists || exists.isConfirmed === 1) if (!exists || exists.isConfirmed === 1)
return false; return false;

View File

@ -24,15 +24,23 @@ module.exports = Self => {
where: {id: params.addressFk}, where: {id: params.addressFk},
fields: ['clientFk'], fields: ['clientFk'],
include: [ include: [
{relation: 'client'} {relation: 'client',
scope: {
include: {
relation: 'type'
}
}
}
] ]
}); });
if (address.client().isFreezed) if (address.client().type().code === 'normal') {
throw new UserError(`You can't create an order for a frozen client`); if (address.client().isFreezed)
throw new UserError(`You can't create an order for a frozen client`);
if (!address.client().isActive) if (!address.client().isActive)
throw new UserError(`You can't create an order for a inactive client`); throw new UserError(`You can't create an order for a inactive client`);
}
query = `CALL vn.orderListCreate(?, ?, ?, ?);`; query = `CALL vn.orderListCreate(?, ?, ?, ?);`;
[result] = await Self.rawSql(query, [ [result] = await Self.rawSql(query, [

View File

@ -1,7 +1,7 @@
const app = require('vn-loopback/server/server'); const app = require('vn-loopback/server/server');
describe('sale moveToTicket()', () => { describe('sale moveToTicket()', () => {
it('should throw an error if the ticket is not editable', async () => { it('should throw an error if the ticket is not editable', async() => {
let error; let error;
let params = {actualTicketFk: 10}; let params = {actualTicketFk: 10};
@ -15,7 +15,7 @@ describe('sale moveToTicket()', () => {
expect(error).toBeDefined(); expect(error).toBeDefined();
}); });
it('should throw an error if the receiving ticket is not editable', async () => { it('should throw an error if the receiving ticket is not editable', async() => {
let error; let error;
let params = {actualTicketFk: 1, newTicketFk: 10}; let params = {actualTicketFk: 1, newTicketFk: 10};
@ -29,7 +29,7 @@ describe('sale moveToTicket()', () => {
expect(error).toBeDefined(); expect(error).toBeDefined();
}); });
it('should transfer the sales from one ticket to another', async () => { it('should transfer the sales from one ticket to another', async() => {
let senderTicketSales = await app.models.Ticket.getSales(11); let senderTicketSales = await app.models.Ticket.getSales(11);
let receiverTicketSales = await app.models.Ticket.getSales(13); let receiverTicketSales = await app.models.Ticket.getSales(13);
@ -53,7 +53,7 @@ describe('sale moveToTicket()', () => {
expect(receiverTicketSales.length).toEqual(2); expect(receiverTicketSales.length).toEqual(2);
}); });
it('should transfers back the sales', async () => { it('should transfers back the sales', async() => {
let senderTicketSales = await app.models.Ticket.getSales(13); let senderTicketSales = await app.models.Ticket.getSales(13);
let receiverTicketSales = await app.models.Ticket.getSales(11); let receiverTicketSales = await app.models.Ticket.getSales(11);

View File

@ -20,9 +20,25 @@ module.exports = Self => {
}); });
Self.isEditable = async ticketFk => { Self.isEditable = async ticketFk => {
let state = await Self.app.models.TicketState.findOne({where: {ticketFk: ticketFk}}); let state = await Self.app.models.TicketState.findOne({
where: {ticketFk: ticketFk}
});
let alertLevel = state ? state.alertLevel : null; let alertLevel = state ? state.alertLevel : null;
let exists = await Self.app.models.Ticket.findOne({where: {id: ticketFk}, fields: 'isDeleted'}); let exists = await Self.app.models.Ticket.findOne({
where: {id: ticketFk},
fields: ['isDeleted', 'clientFk'],
include: [{
relation: 'client',
scope: {
include: {
relation: 'type'
}
}
}]
});
if (exists && exists.client().type().code !== 'normal')
return true;
if (!exists || exists.isDeleted == 1 || (alertLevel && alertLevel > 0)) if (!exists || exists.isDeleted == 1 || (alertLevel && alertLevel > 0))
return false; return false;

View File

@ -26,27 +26,27 @@ module.exports = Self => {
where: {id: params.addressFk}, where: {id: params.addressFk},
fields: ['clientFk'], fields: ['clientFk'],
include: [ include: [
{relation: 'client'} {relation: 'client',
scope: {
include: {
relation: 'type'
}
}
}
] ]
}); });
if (!address) {if (!address)
throw new UserError(`This address doesn't exist`); throw new UserError(`This address doesn't exist`);}
if (address.client().isFreezed) if (address.client().type().code === 'normal') {
throw new UserError(`You can't create a ticket for a frozen client`); if (address.client().isFreezed)
throw new UserError(`You can't create a ticket for a frozen client`);
if (!address.client().isActive) if (!address.client().isActive)
throw new UserError(`You can't create a ticket for a inactive client`); throw new UserError(`You can't create a ticket for a inactive client`);
let clientFk = address.clientFk; let clientFk = address.clientFk;
let agency;
if (params.agencyModeFk)
agency = await Self.app.models.AgencyMode.findById(params.agencyModeFk);
else
agency = {code: null};
if (agency.name != 'ABONO') {
let query = `SELECT vn.clientGetDebt(?, CURDATE()) AS debt`; let query = `SELECT vn.clientGetDebt(?, CURDATE()) AS debt`;
let clientDebt = await Self.rawSql(query, [clientFk]); let clientDebt = await Self.rawSql(query, [clientFk]);