salix/services/client/common/models/Client.js

63 lines
1.9 KiB
JavaScript

module.exports = function(Client) {
// Methods
require('../scopes/client/card.js')(Client);
require('../scopes/client/activate.js')(Client);
require('../scopes/client/addresses.js')(Client);
require('../scopes/client/filter.js')(Client);
require('../scopes/client/before-save.js')(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', {
message: 'El código postal solo debe contener números',
allowNull: true,
with: /^\d+$/
});
Client.validatesFormatOf('email', {
message: 'Correo electrónico inválido',
allowNull: true,
with: /^[\w|\.|\-]+@\w[\w|\.|\-]*\w$/
});
Client.validatesLengthOf('postcode', {
allowNull: true,
min: 3, max: 10
});
Client.validatesLengthOf('iban', {
allowNull: true,
allowBlank: true,
max: 23
});
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();
}
Client.validateAsync('payMethodFk', hasIban, {
message: 'El método de pago seleccionado requiere que se especifique el IBAN'
});
function hasIban(err, done) {
let iban = this.iban;
let PayMethod = Client.app.models.PayMethod;
PayMethod.findById(this.payMethodFk, function (_, instance) {
if (instance && instance.ibanRequired && !iban)
err();
done();
});
}
};