87 lines
2.2 KiB
JavaScript
87 lines
2.2 KiB
JavaScript
import ngModule from '../module';
|
|
import Section from 'salix/components/section';
|
|
|
|
export default class Controller extends Section {
|
|
get client() {
|
|
return this._client;
|
|
}
|
|
|
|
set client(value) {
|
|
this._client = value;
|
|
|
|
if (!value) return;
|
|
|
|
if (!value.bankEntityFk)
|
|
this.autofillBic();
|
|
}
|
|
|
|
onSubmit() {
|
|
let shouldNotify = false;
|
|
|
|
if (this.hasPaymethodChanges())
|
|
shouldNotify = true;
|
|
|
|
this.$.watcher.submit().then(() => {
|
|
if (shouldNotify)
|
|
this.vnApp.showMessage(this.$t('Notification sent!'));
|
|
});
|
|
}
|
|
|
|
hasPaymethodChanges() {
|
|
let orgData = this.$.watcher.orgData;
|
|
|
|
let payMethod = orgData.payMethodFk != this.client.payMethodFk;
|
|
let iban = orgData.iban != this.client.iban;
|
|
let dueDay = orgData.dueDay != this.client.dueDay;
|
|
|
|
return payMethod || iban || dueDay;
|
|
}
|
|
|
|
onAddEntityClick(event) {
|
|
event.preventDefault();
|
|
this.newBankEntity = {
|
|
countryFk: Number.parseInt(this.client.countryFk)
|
|
};
|
|
this.$.bankEntityDialog.show();
|
|
}
|
|
|
|
onBankEntityAccept() {
|
|
return this.$http.post(`BankEntities`, this.newBankEntity)
|
|
.then(res => this.client.bankEntityFk = res.data.id);
|
|
}
|
|
|
|
get ibanCountry() {
|
|
if (!this.client || !this.client.iban) return false;
|
|
|
|
let countryCode = this.client.iban.substr(0, 2);
|
|
|
|
return countryCode;
|
|
}
|
|
|
|
autofillBic() {
|
|
if (!this.client || !this.client.iban) return;
|
|
|
|
let bankEntityId = parseInt(this.client.iban.substr(4, 4));
|
|
let filter = {where: {id: bankEntityId}};
|
|
|
|
if (this.ibanCountry != 'ES') return;
|
|
|
|
this.$http.get(`BankEntities`, {filter}).then(response => {
|
|
const hasData = response.data && response.data[0];
|
|
|
|
if (hasData)
|
|
this.client.bankEntityFk = response.data[0].id;
|
|
else if (!hasData)
|
|
this.client.bankEntityFk = null;
|
|
});
|
|
}
|
|
}
|
|
|
|
ngModule.component('vnClientBillingData', {
|
|
template: require('./index.html'),
|
|
controller: Controller,
|
|
bindings: {
|
|
client: '<'
|
|
}
|
|
});
|