Conflicto rama dev
This commit is contained in:
parent
495e3b7c5e
commit
8fa1599102
|
@ -1,61 +0,0 @@
|
|||
module.exports = function(Address) {
|
||||
Address.validate('default',isEnabled,{message: 'No se puede poner predeterminado un consignatario desactivado'});
|
||||
function isEnabled(err) {
|
||||
if (!this.enabled && this.default) err();
|
||||
}
|
||||
|
||||
Address.beforeRemote('create',function(ctx, modelInstance, next){
|
||||
var data = ctx.req.body;
|
||||
create(data, next);
|
||||
});
|
||||
|
||||
function create(data, next){
|
||||
if(data.default){
|
||||
removeAllDefault(data.client);
|
||||
}
|
||||
next();
|
||||
}
|
||||
|
||||
Address.beforeRemote('prototype.updateAttributes',function(ctx, modelInstance, next){
|
||||
var data = ctx.req.body;
|
||||
data.id = ctx.req.params.id;
|
||||
getAddress(ctx, data, next);
|
||||
});
|
||||
|
||||
function getAddress(ctx, data, next){
|
||||
var address = Address.findOne( {where: { id: data.id}}, function (err, address){
|
||||
if(address)
|
||||
callbackGetAddress(ctx, data, address, next)
|
||||
});
|
||||
}
|
||||
|
||||
function callbackGetAddress(ctx, data, address, next){
|
||||
if (data.default){
|
||||
removeAllDefault(address.client);
|
||||
next();
|
||||
}
|
||||
else if (address.default && !data.default)
|
||||
next(generateErrorDefaultAddress());
|
||||
else
|
||||
next();
|
||||
}
|
||||
|
||||
function getData(ctx){
|
||||
if (ctx.data)
|
||||
return ctx.data;
|
||||
else
|
||||
return ctx.instance;
|
||||
}
|
||||
|
||||
function removeAllDefault(cl){
|
||||
Address.update({client: cl}, {default: false});
|
||||
}
|
||||
|
||||
function generateErrorDefaultAddress(){
|
||||
var error = new Error();
|
||||
error.message = "No se puede desmarcar el consignatario predeterminado";
|
||||
error.status = 500;
|
||||
return error;
|
||||
}
|
||||
};
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
{
|
||||
"name": "Address",
|
||||
"base": "PersistedModel",
|
||||
"validateUpsert": true,
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "Number",
|
||||
"id": true,
|
||||
"description": "Identifier"
|
||||
},
|
||||
"clientFk": {
|
||||
"type": "Number"
|
||||
},
|
||||
"consignee": {
|
||||
"type": "string",
|
||||
"required": true
|
||||
},
|
||||
"street": {
|
||||
"type": "string",
|
||||
"required": true
|
||||
},
|
||||
"city": {
|
||||
"type": "string",
|
||||
"required": true
|
||||
},
|
||||
"postcode": {
|
||||
"type": "string"
|
||||
},
|
||||
"provinceFk": {
|
||||
"type": "Number"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string"
|
||||
},
|
||||
"mobile": {
|
||||
"type": "string"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"default": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"defaultAgencyFk": {
|
||||
"type": "Number"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "Number"
|
||||
},
|
||||
"latitude": {
|
||||
"type": "Number"
|
||||
}
|
||||
},
|
||||
"validations": [],
|
||||
"relations": {
|
||||
"countryFk": {
|
||||
"type": "hasOne",
|
||||
"model": "Country",
|
||||
"foreignKey": "id"
|
||||
},
|
||||
"clientFk": {
|
||||
"type": "hasOne",
|
||||
"model": "Client",
|
||||
"foreignKey": "id"
|
||||
},
|
||||
"defaultAgencyFk": {
|
||||
"type": "hasOne",
|
||||
"model": "Agency",
|
||||
"foreignKey": "id"
|
||||
}
|
||||
},
|
||||
"acls": [
|
||||
{
|
||||
"accessType": "*",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$everyone",
|
||||
"permission": "ALLOW"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,145 +0,0 @@
|
|||
|
||||
module.exports = function(Client) {
|
||||
// Validations
|
||||
|
||||
Client.validatesUniquenessOf('name', {message: 'El nombre debe ser único'});
|
||||
Client.validatesUniquenessOf('fi', {message: 'El NIF/CIF debe ser único'});
|
||||
Client.validatesPresenceOf('socialName', {message: 'Debe especificarse la razón social'});
|
||||
Client.validatesFormatOf('postcode', {allowNull: true, with: /^\d+$/, message: 'El código postal solo debe contener números'});
|
||||
Client.validatesLengthOf('postcode', {allowNull: true, min: 3, max: 10});
|
||||
Client.validatesFormatOf('email', {allowNull: true, with: /^[\w|\.|\-]+@\w[\w|\.|\-]*\w$/, message: 'Correo electrónico inválido'});
|
||||
|
||||
Client.validate('payMethod', hasCC, {message: 'Introduzca el iban del cliente'});
|
||||
function hasCC(err) {
|
||||
if (this.payMethod == 2 && !this.iban) err();
|
||||
};
|
||||
|
||||
Client.validate('payMethod', hasSalesMan, {message: 'No se puede cambiar la forma de pago si no hay comercial asignado'});
|
||||
function hasSalesMan(err) {
|
||||
if(this.payMethod && !this.salesPerson) err();
|
||||
};
|
||||
|
||||
// Hooks
|
||||
|
||||
Client.observe('before save', function(ctx, next) {
|
||||
if(ctx.instance) {
|
||||
if (!ctx.instance.dueDay){
|
||||
ctx.instance.dueDay = 5;
|
||||
}
|
||||
next();
|
||||
}
|
||||
else {
|
||||
Client.findById(ctx.where.id,
|
||||
function(err, item) {
|
||||
if (!err) {
|
||||
if (item.payMethod != ctx.data.payMethod && item.dueDay == ctx.data.dueDay) {
|
||||
ctx.data.dueDay = 5;
|
||||
}
|
||||
}
|
||||
next();
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
// Methods
|
||||
|
||||
Client.remoteMethod('activate', {
|
||||
description: 'Activate or deactive client',
|
||||
accepts: {
|
||||
arg: 'id',
|
||||
type: 'number',
|
||||
required: true,
|
||||
description: 'Model id',
|
||||
http: {source: 'path'}
|
||||
},
|
||||
returns: {
|
||||
arg: 'active',
|
||||
type: 'boolean'
|
||||
},
|
||||
http: {
|
||||
verb: 'put',
|
||||
path: '/:id/activate'
|
||||
}
|
||||
});
|
||||
|
||||
Client.activate = function(id, cb) {
|
||||
console.log(id);
|
||||
Client.findById(id, function(err, client) {
|
||||
if(!err) {
|
||||
Client.update({id: client.id}, {active: !client.active});
|
||||
cb(null, !client.active);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// Basic filter
|
||||
|
||||
Client.installMethod('filter', filterClients);
|
||||
function filterClients(p) {
|
||||
return {
|
||||
where: {
|
||||
id: p.id,
|
||||
name: {regexp: p.name},
|
||||
cif: p.cif,
|
||||
socialName: {regexp: p.socialName},
|
||||
city: {regexp: p.city},
|
||||
postcode: p.postcode,
|
||||
email: {regexp: p.email},
|
||||
phone: p.phone
|
||||
},
|
||||
skip: (p.page - 1) * p.size,
|
||||
limit: p.size
|
||||
};
|
||||
}
|
||||
|
||||
// Client addresses
|
||||
|
||||
Client.remoteMethod('addressesList', {
|
||||
description: 'List items using a filter',
|
||||
accessType: 'READ',
|
||||
accepts: [
|
||||
{
|
||||
arg: 'id',
|
||||
type: 'string',
|
||||
required: true,
|
||||
description: 'Model id',
|
||||
http: {source: 'path'}
|
||||
},
|
||||
{
|
||||
arg: 'filter',
|
||||
type: 'object',
|
||||
required: true,
|
||||
description: 'Filter defining where',
|
||||
http: function(ctx) {
|
||||
return ctx.req.query;
|
||||
}
|
||||
}
|
||||
],
|
||||
returns: {
|
||||
arg: 'data',
|
||||
type: ['Address'],
|
||||
root: true
|
||||
},
|
||||
http: {
|
||||
path: `/:id/addressesList`,
|
||||
verb: 'get'
|
||||
}
|
||||
});
|
||||
|
||||
Client.addressesList = function(id, p, cb) {
|
||||
let filter = {
|
||||
where: {
|
||||
clientFk: id,
|
||||
},
|
||||
skip: (p.page - 1) * p.size,
|
||||
limit: p.size
|
||||
};
|
||||
|
||||
Client.app.models.Address.find(filter, function(err, instances) {
|
||||
if(!err) {
|
||||
cb(null, instances);
|
||||
}
|
||||
})
|
||||
};
|
||||
};
|
|
@ -1,163 +0,0 @@
|
|||
{
|
||||
"name": "Client",
|
||||
"base": "MyModel",
|
||||
"scopes": {
|
||||
"test": {
|
||||
"where": {
|
||||
"name": "Verdnatura"
|
||||
}
|
||||
}
|
||||
},
|
||||
"validateUpsert": true,
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "Number",
|
||||
"id": true,
|
||||
"description": "Identifier"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"required": true
|
||||
},
|
||||
"fi": {
|
||||
"type": "string",
|
||||
"description": "Fiscal indetifier"
|
||||
},
|
||||
"socialName": {
|
||||
"type": "string"
|
||||
},
|
||||
"creationTime": {
|
||||
"type": "string"
|
||||
},
|
||||
"contact": {
|
||||
"type": "string"
|
||||
},
|
||||
"street": {
|
||||
"type": "string"
|
||||
},
|
||||
"city": {
|
||||
"type": "string"
|
||||
},
|
||||
"postcode": {
|
||||
"type": "string"
|
||||
},
|
||||
"provinceFk": {
|
||||
"type": "Number"
|
||||
},
|
||||
"countryFk": {
|
||||
"type": "Number"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string"
|
||||
},
|
||||
"mobile": {
|
||||
"type": "string"
|
||||
},
|
||||
"fax": {
|
||||
"type": "string"
|
||||
},
|
||||
"active": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"credit": {
|
||||
"type": "Number"
|
||||
},
|
||||
"creditInsurance": {
|
||||
"type": "Number"
|
||||
},
|
||||
"iban": {
|
||||
"type": "string"
|
||||
},
|
||||
"dueDay": {
|
||||
"type": "Number"
|
||||
},
|
||||
"equalizationTax": {
|
||||
"type": "boolean",
|
||||
"description": "The client has equalization tax"
|
||||
},
|
||||
"hasToInvoice": {
|
||||
"type": "boolean",
|
||||
"description": "Global invoicing enabled for the client"
|
||||
},
|
||||
"invoiceByEmail": {
|
||||
"type": "boolean",
|
||||
"description": "Send invoices by email"
|
||||
},
|
||||
"payMethodFk": {
|
||||
"type": "Number"
|
||||
},
|
||||
"salesPersonFk": {
|
||||
"type": "Number"
|
||||
},
|
||||
"contactChannelFk": {
|
||||
"type": "Number"
|
||||
},
|
||||
"sepaVnl": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"coreVnl": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"coreVnh": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"eypbc": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"quality": {
|
||||
"type": "Number"
|
||||
},
|
||||
"vies": {
|
||||
"type": "Number"
|
||||
},
|
||||
"isRelevant": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"typeFk": {
|
||||
"type": "Number"
|
||||
},
|
||||
"accountingAccount": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"validations": [],
|
||||
"relations": {
|
||||
"accountFk": {
|
||||
"type": "hasOne",
|
||||
"model": "Account",
|
||||
"foreignKey": "id"
|
||||
},
|
||||
"payMethodFk": {
|
||||
"type": "hasOne",
|
||||
"model": "PayMethod",
|
||||
"foreignKey": "id"
|
||||
},
|
||||
"salesPersonFk": {
|
||||
"type": "hasOne",
|
||||
"model": "Employee",
|
||||
"foreignKey": "id"
|
||||
},
|
||||
"addressesFk": {
|
||||
"type": "hasMany",
|
||||
"model": "Address",
|
||||
"foreignKey": "clientFk"
|
||||
},
|
||||
"chanelFK":{
|
||||
"type": "hasOne",
|
||||
"model": "Chanel",
|
||||
"foreignKey": "chanelFK"
|
||||
}
|
||||
},
|
||||
"acls": [
|
||||
{
|
||||
"accessType": "*",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$everyone",
|
||||
"permission": "ALLOW"
|
||||
}
|
||||
],
|
||||
"methods": {}
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
{
|
||||
"name": "Country",
|
||||
"base": "PersistedModel",
|
||||
"validateUpsert": true,
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "Number",
|
||||
"id": true,
|
||||
"description": "Identifier"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"required": true
|
||||
},
|
||||
"inCee": {
|
||||
"type": "Number"
|
||||
},
|
||||
"code": {
|
||||
"type": "string"
|
||||
},
|
||||
"currencyFk": {
|
||||
"type": "Number"
|
||||
},
|
||||
"realCountryFk": {
|
||||
"type": "Number"
|
||||
}
|
||||
},
|
||||
"acls": [
|
||||
{
|
||||
"accessType": "*",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$everyone",
|
||||
"permission": "ALLOW"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
{
|
||||
"name": "Employee",
|
||||
"base": "PersistedModel",
|
||||
"validateUpsert": true,
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "Number",
|
||||
"id": true,
|
||||
"description": "Identifier"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"required": true
|
||||
},
|
||||
"userFk": {
|
||||
"type": "Number",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"acls": [
|
||||
{
|
||||
"accessType": "*",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$everyone",
|
||||
"permission": "ALLOW"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
{
|
||||
"name": "Province",
|
||||
"base": "PersistedModel",
|
||||
"validateUpsert": true,
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "Number",
|
||||
"id": true,
|
||||
"description": "Identifier"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"required": true
|
||||
},
|
||||
"countryFk": {
|
||||
"type": "Number"
|
||||
},
|
||||
"warehouseFk": {
|
||||
"type": "Number"
|
||||
},
|
||||
"zoneFk": {
|
||||
"type": "Number"
|
||||
}
|
||||
},
|
||||
"relations": {
|
||||
"countryFk": {
|
||||
"type": "hasOne",
|
||||
"model": "Country",
|
||||
"foreignKey": "id"
|
||||
}
|
||||
},
|
||||
"acls": [
|
||||
{
|
||||
"accessType": "*",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$everyone",
|
||||
"permission": "ALLOW"
|
||||
}
|
||||
]
|
||||
}
|
Binary file not shown.
Loading…
Reference in New Issue