128 lines
3.3 KiB
JavaScript
128 lines
3.3 KiB
JavaScript
import ngModule from '../module';
|
|
import Section from 'salix/components/section';
|
|
|
|
export default class Controller extends Section {
|
|
constructor($element, $) {
|
|
super($element, $);
|
|
this.worker = {companyFk: this.vnConfig.user.companyFk};
|
|
}
|
|
|
|
onSubmit() {
|
|
return this.$.watcher.submit().then(json => {
|
|
this.$state.go('worker.card.basicData', {id: json.data.id});
|
|
});
|
|
}
|
|
|
|
autofillBic() {
|
|
if (!this.worker || !this.worker.iban) return;
|
|
|
|
let bankEntityId = parseInt(this.worker.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.worker.bankEntityFk = response.data[0].id;
|
|
else if (!hasData)
|
|
this.worker.bankEntityFk = null;
|
|
});
|
|
}
|
|
|
|
generateCodeUser() {
|
|
if (!this.worker.firstName || !this.worker.lastNames) return;
|
|
|
|
const totalName = this.worker.firstName.concat(' ' + this.worker.lastNames).toLowerCase();
|
|
const totalNameArray = totalName.split(' ');
|
|
let newCode = '';
|
|
|
|
for (let part of totalNameArray)
|
|
newCode += part.charAt(0);
|
|
|
|
this.worker.code = newCode.toUpperCase().slice(0, 3);
|
|
this.worker.name = totalNameArray[0] + newCode.slice(1);
|
|
|
|
if (!this.worker.companyFk)
|
|
this.worker.companyFk = this.vnConfig.user.companyFk;
|
|
}
|
|
|
|
get province() {
|
|
return this._province;
|
|
}
|
|
|
|
// Province auto complete
|
|
set province(selection) {
|
|
this._province = selection;
|
|
|
|
if (!selection) return;
|
|
|
|
const country = selection.country;
|
|
|
|
if (!this.worker.countryFk)
|
|
this.worker.countryFk = country.id;
|
|
}
|
|
|
|
get town() {
|
|
return this._town;
|
|
}
|
|
|
|
// Town auto complete
|
|
set town(selection) {
|
|
this._town = selection;
|
|
|
|
if (!selection) return;
|
|
|
|
const province = selection.province;
|
|
const country = province.country;
|
|
const postcodes = selection.postcodes;
|
|
|
|
if (!this.worker.provinceFk)
|
|
this.worker.provinceFk = province.id;
|
|
|
|
if (!this.worker.countryFk)
|
|
this.worker.countryFk = country.id;
|
|
|
|
if (postcodes.length === 1)
|
|
this.worker.postcode = postcodes[0].code;
|
|
}
|
|
|
|
get postcode() {
|
|
return this._postcode;
|
|
}
|
|
|
|
// Postcode auto complete
|
|
set postcode(selection) {
|
|
this._postcode = selection;
|
|
|
|
if (!selection) return;
|
|
|
|
const town = selection.town;
|
|
const province = town.province;
|
|
const country = province.country;
|
|
|
|
if (!this.worker.city)
|
|
this.worker.city = town.name;
|
|
|
|
if (!this.worker.provinceFk)
|
|
this.worker.provinceFk = province.id;
|
|
|
|
if (!this.worker.countryFk)
|
|
this.worker.countryFk = country.id;
|
|
}
|
|
|
|
onResponse(response) {
|
|
this.worker.postcode = response.code;
|
|
this.worker.city = response.city;
|
|
this.worker.provinceFk = response.provinceFk;
|
|
}
|
|
}
|
|
|
|
Controller.$inject = ['$element', '$scope'];
|
|
|
|
ngModule.vnComponent('vnWorkerCreate', {
|
|
template: require('./index.html'),
|
|
controller: Controller
|
|
});
|