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(); }); } };