var app = require('../../server/server'); module.exports = function(Self) { var models = app.models; // Methods require('../methods/client/activate.js')(Self); require('../methods/client/addresses.js')(Self); require('../methods/client/before-save.js')(Self); require('../methods/client/card.js')(Self); require('../methods/client/create.js')(Self); require('../methods/client/employee.js')(Self); require('../methods/client/filter.js')(Self); require('../methods/client/roles.js')(Self); require('../methods/client/salesperson.js')(Self); require('../methods/client/addressesPropagateRe.js')(Self); // Validations Self.validatesUniquenessOf('name', { message: 'El nombre debe ser único' }); Self.validatesUniquenessOf('fi', { message: 'El NIF/CIF debe ser único' }); Self.validatesPresenceOf('socialName', { message: 'Debe especificarse la razón social' }); Self.validatesUniquenessOf('socialName', { message: 'La razón social debe ser única' }); Self.validatesFormatOf('postcode', { message: 'El código postal solo debe contener números', allowNull: true, allowBlank: true, with: /^\d+$/ }); Self.validatesFormatOf('email', { message: 'Correo electrónico inválido', allowNull: true, allowBlank: true, with: /^[\w|\.|\-]+@\w[\w|\.|\-]*\w(,[\w|\.|\-]+@\w[\w|\.|\-]*\w)*$/ }); Self.validatesLengthOf('postcode', { allowNull: true, allowBlank: true, min: 3, max: 10 }); var validateIban = require('../validations/validateIban'); Self.validateBinded('iban', validateIban, { message: 'El iban no tiene el formato correcto' }); Self.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(); } Self.validateAsync('payMethodFk', hasIban, { message: 'El método de pago seleccionado requiere que se especifique el IBAN' }); function hasIban(err, done) { models.PayMethod.findById(this.payMethodFk, (_, instance) => { if (instance && instance.ibanRequired && !this.iban) err(); done(); }); } };