import ngModule from '../../module'; import Section from 'salix/components/section'; import './style.scss'; class Controller extends Section { constructor($element, $) { super($element, $); this.import = { file: '', invoice: null, buys: [] }; } onFileChange($event) { const input = $event.target; const file = input.files[0]; const reader = new FileReader(); reader.onload = event => this.fillData(event.target.result); reader.readAsText(file, 'UTF-8'); } fillData(raw) { this.import.file = raw; const data = JSON.parse(raw); const [invoice] = data.invoices; this.$.$applyAsync(() => { this.import.invoice = invoice.id_invoice; this.import.description = invoice.tx_awb; const boxes = invoice.boxes; const buys = []; for (let box of boxes) { for (let product of box.products) { const packing = product.nu_stems_bunch * product.nu_bunches; buys.push({ description: product.nm_product, size: product.nu_length, packing: packing, grouping: product.nu_stems_bunch, buyingValue: parseFloat(product.mny_rate_stem) }); } } this.import.buys = buys; }); } onSubmit() { const params = {buys: this.import.buys}; const query = `Entries/${this.entry.id}/import`; return this.$http.post(query, params).then(() => { this.vnApp.showSuccess(this.$t('Data saved!')); }); } itemSearchFunc($search) { return /^\d+$/.test($search) ? {id: $search} : {name: {like: '%' + $search + '%'}}; } } Controller.$inject = ['$element', '$scope']; ngModule.vnComponent('vnEntryBuyImport', { template: require('./index.html'), controller: Controller, bindings: { worker: '<' } });