refs #5858 feat: approach to print bad field in model
gitea/salix/pipeline/head There was a failure building this commit
Details
gitea/salix/pipeline/head There was a failure building this commit
Details
This commit is contained in:
parent
bddb787075
commit
273db31c05
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"postalcode": "Código postal",
|
||||
"Phone format is invalid": "El formato del teléfono no es correcto",
|
||||
"You are not allowed to change the credit": "No tienes privilegios para modificar el crédito",
|
||||
"Unable to mark the equivalence surcharge": "No se puede marcar el recargo de equivalencia",
|
||||
|
@ -327,5 +328,28 @@
|
|||
"The notification subscription of this worker cant be modified": "La subscripción a la notificación de este trabajador no puede ser modificada",
|
||||
"User disabled": "Usuario desactivado",
|
||||
"The amount cannot be less than the minimum": "La cantidad no puede ser menor que la cantidad mínima",
|
||||
"quantityLessThanMin": "La cantidad no puede ser menor que la cantidad mínima"
|
||||
}
|
||||
"quantityLessThanMin": "La cantidad no puede ser menor que la cantidad mínima",
|
||||
"provinceFk must be unique": "provinceFk must be unique",
|
||||
"fi cannot be empty": "fi cannot be empty",
|
||||
"countryFk cannot be empty": "countryFk cannot be empty",
|
||||
"Model is not valid": "El campo \" {{key}}\" no es válido",
|
||||
"postcode": "Código postal",
|
||||
"fi": "NIF/CIF",
|
||||
"socialName": "Razón social",
|
||||
"street":"Dirección fiscal",
|
||||
"city":"Población",
|
||||
"countryFk":"País",
|
||||
"provinceFk":"Provincia",
|
||||
"sageTaxTypeFk":"Tipo de impuesto Sage",
|
||||
"sageTransactionTypeFk":"Tipo de transacción Sage",
|
||||
"transferorFk":"",
|
||||
"hasToInvoiceByAddress":"",
|
||||
"isFreezed":"",
|
||||
"isVies":"",
|
||||
"isToBeMailed":"",
|
||||
"isEqualizated":"",
|
||||
"isTaxDataVerified":"",
|
||||
"despiteOfClient":"",
|
||||
"hasIncoterms":"",
|
||||
"hasElectronicInvoice":""
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
const isNotNull = value => value !== null && value !== undefined && value !== '';
|
||||
const validatorBodyModel = (model, body) => {
|
||||
let isValid = true;
|
||||
let tag = null;
|
||||
Object.entries(body).forEach(([key, value]) => {
|
||||
if (!isValid) return;
|
||||
const bodyArg = model.find(m => m.arg === key);
|
||||
if (!bodyArg) throw new Error('Property is not defined in this model');
|
||||
const {type} = bodyArg;
|
||||
tag = key;
|
||||
if (tag !== 'any') {
|
||||
isValid = isNotNull(value);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case 'number':
|
||||
isValid = /^[0-9]*$/.test(value);
|
||||
break;
|
||||
|
||||
case 'boolean':
|
||||
isValid = value instanceof Boolean;
|
||||
break;
|
||||
|
||||
case 'date':
|
||||
isValid = (new Date(date) !== 'Invalid Date') && !isNaN(new Date(date));
|
||||
break;
|
||||
|
||||
case 'string':
|
||||
isValid = typeof value == 'string';
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
return {isValid, tag};
|
||||
};
|
||||
|
||||
module.exports = validatorBodyModel;
|
|
@ -1,4 +1,95 @@
|
|||
let UserError = require('vn-loopback/util/user-error');
|
||||
const validatorBodyModel = require('./body_model_validator');
|
||||
const BODY_MODEL = [
|
||||
{
|
||||
arg: 'socialName',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
arg: 'fi',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
arg: 'street',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
arg: 'postcode',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
arg: 'city',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
arg: 'countryFk',
|
||||
type: 'number'
|
||||
},
|
||||
{
|
||||
arg: 'provinceFk',
|
||||
type: 'number'
|
||||
},
|
||||
{
|
||||
arg: 'sageTaxTypeFk',
|
||||
type: 'any'
|
||||
},
|
||||
{
|
||||
arg: 'sageTransactionTypeFk',
|
||||
type: 'any'
|
||||
},
|
||||
{
|
||||
arg: 'transferorFk',
|
||||
type: 'any'
|
||||
},
|
||||
{
|
||||
arg: 'hasToInvoiceByAddress',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'hasToInvoice',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isActive',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isFreezed',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isVies',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isToBeMailed',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isEqualizated',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isTaxDataVerified',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isTaxDataChecked',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'despiteOfClient',
|
||||
type: 'number'
|
||||
},
|
||||
{
|
||||
arg: 'hasIncoterms',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'hasElectronicInvoice',
|
||||
type: 'boolean'
|
||||
}
|
||||
];
|
||||
|
||||
module.exports = Self => {
|
||||
Self.remoteMethod('updateFiscalData', {
|
||||
|
@ -17,92 +108,9 @@ module.exports = Self => {
|
|||
http: {source: 'path'}
|
||||
},
|
||||
{
|
||||
arg: 'socialName',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
arg: 'fi',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
arg: 'street',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
arg: 'postcode',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
arg: 'city',
|
||||
type: 'string'
|
||||
},
|
||||
{
|
||||
arg: 'countryFk',
|
||||
type: 'number'
|
||||
},
|
||||
{
|
||||
arg: 'provinceFk',
|
||||
type: 'number'
|
||||
},
|
||||
{
|
||||
arg: 'sageTaxTypeFk',
|
||||
type: 'any'
|
||||
},
|
||||
{
|
||||
arg: 'sageTransactionTypeFk',
|
||||
type: 'any'
|
||||
},
|
||||
{
|
||||
arg: 'transferorFk',
|
||||
type: 'any'
|
||||
},
|
||||
{
|
||||
arg: 'hasToInvoiceByAddress',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'hasToInvoice',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isActive',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isFreezed',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isVies',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isToBeMailed',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isEqualizated',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isTaxDataVerified',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'isTaxDataChecked',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'despiteOfClient',
|
||||
type: 'number'
|
||||
},
|
||||
{
|
||||
arg: 'hasIncoterms',
|
||||
type: 'boolean'
|
||||
},
|
||||
{
|
||||
arg: 'hasElectronicInvoice',
|
||||
type: 'boolean'
|
||||
arg: 'data',
|
||||
type: 'object',
|
||||
http: {source: 'body'}
|
||||
}
|
||||
],
|
||||
returns: {
|
||||
|
@ -148,8 +156,22 @@ module.exports = Self => {
|
|||
// Remove unwanted properties
|
||||
delete args.ctx;
|
||||
delete args.id;
|
||||
const {isValid, tag} = validatorBodyModel(BODY_MODEL, args.data);
|
||||
if (!isValid) {
|
||||
const key = $t(`${tag}`);
|
||||
throw new Error($t('Model is not valid', {key})
|
||||
);
|
||||
}
|
||||
// const isValid = client.isValid(async function(valid) {
|
||||
// if (!valid) {
|
||||
// cb(new ValidationError(client), client);
|
||||
// return;
|
||||
// }
|
||||
|
||||
const updatedClient = await client.updateAttributes(args, myOptions);
|
||||
// // triggerSave();
|
||||
// }, args.data, myOptions);
|
||||
// client.isValid(client.constructor.validations, client.data, {});
|
||||
const updatedClient = await client.updateAttributes(args.data, myOptions);
|
||||
|
||||
if (tx) await tx.commit();
|
||||
|
||||
|
|
|
@ -10,18 +10,26 @@ module.exports = Self => {
|
|||
require('./client-methods')(Self);
|
||||
|
||||
// Validations
|
||||
|
||||
// Self.isValid(function(valid) {
|
||||
// if (!valid)
|
||||
// console.error(valid); // hash of errors {attr: [errmessage, errmessage, ...], attr: ...}
|
||||
// });
|
||||
Self.validatesPresenceOf('street', {
|
||||
message: 'Street cannot be empty'
|
||||
});
|
||||
|
||||
Self.validatesPresenceOf('city', {
|
||||
message: 'City cannot be empty'
|
||||
});
|
||||
|
||||
Self.validatesUniquenessOf('fi', {
|
||||
message: 'TIN must be unique'
|
||||
});
|
||||
Self.validatesPresenceOf('fi', {
|
||||
message: 'fi cannot be empty'
|
||||
});
|
||||
Self.validatesPresenceOf('provinceFk', {
|
||||
message: 'fi cannot be empty'
|
||||
});
|
||||
Self.validatesPresenceOf('countryFk', {
|
||||
message: 'countryFk cannot be empty'
|
||||
});
|
||||
|
||||
Self.validatesFormatOf('email', {
|
||||
message: 'Invalid email',
|
||||
|
|
Loading…
Reference in New Issue