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: '<' } });