spread equivalent tax in all addresses

This commit is contained in:
Dani Herrero 2017-10-04 13:32:26 +02:00
parent 245112438e
commit 0925451364
6 changed files with 112 additions and 18 deletions

View File

@ -60,3 +60,17 @@
<button response="ACCEPT" translate>Yes, notify</button> <button response="ACCEPT" translate>Yes, notify</button>
</tpl-buttons> </tpl-buttons>
</vn-dialog> </vn-dialog>
<vn-dialog
vn-id="propagate-equalizationTax"
on-response="$ctrl.returnDialogRE(response)">
<tpl-body>
<vn-vertical>
<vn-one text-center translate>You changes the equivalent tax</vn-one>
<vn-one text-center translate>Do you want to spread the change to their consignees?</vn-one>
</vn-vertical>
</tpl-body>
<tpl-buttons>
<button response="CANCEL" translate>No</button>
<button response="ACCEPT" translate>Yes, propagate</button>
</tpl-buttons>
</vn-dialog>

View File

@ -20,6 +20,7 @@ export default class Controller {
this.billData.discount = this.client.discount; this.billData.discount = this.client.discount;
this.billData.credit = this.client.credit; this.billData.credit = this.client.credit;
this.billData.creditInsurance = this.client.creditInsurance; this.billData.creditInsurance = this.client.creditInsurance;
this.equalizationTax = this.client.equalizationTax;
} }
} }
submit() { submit() {
@ -36,13 +37,41 @@ export default class Controller {
} }
} }
); );
if (!equals)
if (equals) {
this.checkREChanges();
} else {
this.$.sendMail.show(); this.$.sendMail.show();
} }
}
returnDialog(response) { returnDialog(response) {
if (response === 'ACCEPT') { if (response === 'ACCEPT') {
this.$http.post(`/mailer/manuscript/payment-update/${this.client.id}`).then( this.$http.post(`/mailer/manuscript/payment-update/${this.client.id}`).then(
() => this.vnApp.showMessage(this.translate.instant('Notification sent!')) () => {
this.vnApp.showMessage(this.translate.instant('Notification sent!'));
this.checkREChanges();
}
);
} else {
this.checkREChanges();
}
}
checkREChanges() {
let equals = this.equalizationTax == this.client.equalizationTax;
this.equalizationTax = this.client.equalizationTax;
if (!equals)
this.$.propagateEqualizationTax.show();
}
returnDialogRE(response) {
if (response === 'ACCEPT') {
this.$http.patch(`/client/api/Clients/${this.client.id}/addressesPropagateRe`, {isEqualizated: this.client.equalizationTax}).then(
res => {
if (res.data)
this.vnApp.showMessage(this.translate.instant('Equivalent tax spreaded'));
}
); );
} }
} }

View File

@ -4,5 +4,9 @@
"No": "No", "No": "No",
"Yes, notify": "Sí, notificar", "Yes, notify": "Sí, notificar",
"Notification sent!": "¡Notificación enviada!", "Notification sent!": "¡Notificación enviada!",
"Notification error": "Error al enviar notificación" "Notification error": "Error al enviar notificación",
"You changes the equivalent tax": "Has cambiado el recargo de equivalencia",
"Do you want to spread the change to their consignees?" : "¿Deseas propagar el cambio a sus consignatarios?",
"Yes, propagate": "Si, propagar",
"Equivalent tax spreaded": "Recargo de equivalencia propagado"
} }

View File

@ -0,0 +1,43 @@
module.exports = function(Client) {
Client.remoteMethod('addressesPropagateRe', {
description: 'Change property isEqualizated in all client addresses',
accessType: 'WRITE',
accepts: [
{
arg: 'id',
type: 'string',
required: true,
description: 'Client id',
http: {source: 'path'}
},
{
arg: 'data',
type: 'Object',
required: true,
description: 'data with new value',
http: {source: 'body'}
}
],
returns: {
arg: 'data',
type: 'boolean',
root: true
},
http: {
path: `/:id/addressesPropagateRe`,
verb: 'patch'
}
});
Client.addressesPropagateRe = (id, data, callback) => {
if(data.hasOwnProperty('isEqualizated')) {
Client.app.models.Address.updateAll({clientFk: id}, data, (err, info) => {
if (err)
return callback(err, null);
callback(null, true);
});
} else {
callback(null, false);
}
};
}

View File

@ -3,18 +3,21 @@ module.exports = function(Client) {
var CREDIT_CARD = 5; var CREDIT_CARD = 5;
Client.observe('before save', function(ctx, next) { Client.observe('before save', function(ctx, next) {
if (ctx.instance) { if (ctx.currentInstance) {
Object.assign(ctx.instance, doIfNullSalesPerson(ctx.instance)); let dataChange = Object.assign({}, ctx.data);
Object.assign(ctx.data, doIfNullSalesPerson(ctx.currentInstance));
if (!ctx.instance.dueDay) if (!ctx.data.dueDay)
ctx.instance.dueDay = 5; ctx.data.dueDay = 5;
if (ctx.instance.equalizationTax && !canMarkEqualizationTax(ctx.instance))
generateErrorEqualizationTax();
if (dataChange.hasOwnProperty('equalizationTax') && !canMarkEqualizationTax(ctx.data))
next(generateErrorEqualizationTax());
else
next(); next();
} else { } else {
Client.findById(ctx.where.id, (_, instance) => { Client.findById(ctx.where.id, (_, instance) => {
Object.assign(ctx.data, doIfNullSalesPerson(instance)); Object.assign(ctx.data, doIfNullSalesPerson(instance));
if (instance if (instance
@ -22,13 +25,13 @@ module.exports = function(Client) {
&& instance.dueDay == ctx.data.dueDay) && instance.dueDay == ctx.data.dueDay)
ctx.data.dueDay = 5; ctx.data.dueDay = 5;
if (instance.fi !== undefined && ctx.data.equalizationTax && !canMarkEqualizationTax(instance)) if (instance.fi && ctx.data.equalizationTax && !canMarkEqualizationTax(instance)){
next(generateErrorEqualizationTax()); next(generateErrorEqualizationTax());
} else if (instance.equalizationTax !== undefined && instance.equalizationTax && ctx.data.fi && canMarkEqualizationTax(ctx.data)){
if (instance.equalizationTax !== undefined && instance.equalizationTax && ctx.data.fi && Boolean(canMarkEqualizationTax(ctx.data)))
next(generateErrorEqualizationTax()); next(generateErrorEqualizationTax());
} else {
next(); next();
}
}); });
} }
}); });
@ -44,8 +47,8 @@ module.exports = function(Client) {
} }
function canMarkEqualizationTax(instance) { function canMarkEqualizationTax(instance) {
var firstLetter = instance.fi.toUpperCase().charAt(0); var firstLetter = (instance && instance.fi) ? instance.fi.toUpperCase().charAt(0) : '';
if (firstLetter != "A" && firstLetter != "B") if (firstLetter == "A" || firstLetter == "B")
return false; return false;
return true; return true;
} }

View File

@ -14,6 +14,7 @@ module.exports = function(Client) {
require('../methods/client/filter.js')(Client); require('../methods/client/filter.js')(Client);
require('../methods/client/roles.js')(Client); require('../methods/client/roles.js')(Client);
require('../methods/client/salesperson.js')(Client); require('../methods/client/salesperson.js')(Client);
require('../methods/client/addressesPropagateRe.js')(Client);
// Validations // Validations