import ngModule from '../module'; import Component from 'core/lib/component'; export default class Controller extends Component { onSubmit() { const orgData = this.$.watcher.orgData; delete this.client.despiteOfClient; if (!orgData.isTaxDataChecked && this.client.isTaxDataChecked) this.checkExistingClient(); else this.save(); } checkExistingClient() { const filterObj = { where: { and: [ {or: [{email: this.client.email}, {phone: this.client.phone}]}, {id: {neq: this.client.id}} ] } }; const $t = this.$translate.instant; const filter = encodeURIComponent(JSON.stringify(filterObj)); const query = `Clients/findOne?filter=${filter}`; this.$http.get(query).then(res => { if (res.data.id) { const params = {clientId: res.data.id}; const question = $t('Found a client with this phone or email', params, null, null, 'sanitizeParameters'); this.client.despiteOfClient = params.clientId; this.$.confirmDuplicatedClient.question = question; this.$.confirmDuplicatedClient.show(); } }); } checkEtChanges(orgData) { const equalizatedHasChanged = orgData.isEqualizated != this.client.isEqualizated; const hasToInvoiceByAddress = orgData.hasToInvoiceByAddress || this.client.hasToInvoiceByAddress; if (equalizatedHasChanged && hasToInvoiceByAddress) this.$.propagateIsEqualizated.show(); else if (equalizatedHasChanged) return this.onAcceptEt(); return this.$q.resolve(); } onAcceptEt() { const query = `Clients/${this.client.id}/addressesPropagateRe`; return this.$http.patch(query, {isEqualizated: this.client.isEqualizated}).then( () => this.vnApp.showMessage(this.$translate.instant('Equivalent tax spreaded')) ); } onAcceptDuplication() { this.save(); return true; } save() { const orgData = this.$.watcher.orgData; const clonedOrgData = JSON.parse(JSON.stringify(orgData)); return this.$.watcher.submit().then( () => this.checkEtChanges(clonedOrgData)); } onChangeEqualizated(value) { const orgData = this.$.watcher.orgData; if (value === true) this.client.hasToInvoiceByAddress = false; else if (orgData.hasToInvoiceByAddress) this.client.hasToInvoiceByAddress = true; this.$.$apply(); } get province() { return this._province; } // Province auto complete set province(selection) { const oldValue = this._province; this._province = selection; if (!selection || !oldValue) return; const country = selection.country; this.client.countryFk = country.id; } get town() { return this._town; } // Town auto complete set town(selection) { const oldValue = this._town; this._town = selection; if (!selection || !oldValue) return; const province = selection.province; const country = province.country; const postcodes = selection.postcodes; this.client.provinceFk = province.id; this.client.countryFk = country.id; if (postcodes.length === 1) this.client.postcode = postcodes[0].code; } get postcode() { return this._postcode; } // Postcode auto complete set postcode(selection) { const oldValue = this._postcode; this._postcode = selection; console.log(selection); if (!selection || !oldValue) return; const town = selection.town; const province = town.province; const country = province.country; console.log(province.id); this.client.city = town.name; this.client.provinceFk = province.id; this.client.countryFk = country.id; } } ngModule.component('vnClientFiscalData', { template: require('./index.html'), controller: Controller, require: {card: '^vnClientCard'}, bindings: { client: '<' } });