88 lines
2.5 KiB
JavaScript
88 lines
2.5 KiB
JavaScript
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) {
|
|
const data = JSON.parse(raw);
|
|
const [invoice] = data.invoices;
|
|
|
|
this.$.$applyAsync(() => {
|
|
this.import.observation = invoice.tx_awb;
|
|
|
|
const boxes = invoice.boxes;
|
|
const buys = [];
|
|
for (let box of boxes) {
|
|
const boxVolume = box.nu_length * box.nu_width * box.nu_height;
|
|
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),
|
|
volume: boxVolume
|
|
});
|
|
}
|
|
}
|
|
|
|
const boxesId = boxes.map(box => box.id_box);
|
|
this.import.ref = boxesId.join(', ');
|
|
|
|
this.fetchBuys(buys);
|
|
});
|
|
}
|
|
|
|
fetchBuys(buys) {
|
|
const params = {buys};
|
|
const query = `Entries/${this.entry.id}/importBuysPreview`;
|
|
this.$http.get(query, {params}).then(res => {
|
|
this.import.buys = res.data;
|
|
});
|
|
}
|
|
|
|
onSubmit() {
|
|
const params = this.import;
|
|
const query = `Entries/${this.entry.id}/importBuys`;
|
|
return this.$http.post(query, params)
|
|
.then(() => this.vnApp.showSuccess(this.$t('Data saved!')))
|
|
.then(() => this.$state.go('entry.card.buy.index'));
|
|
}
|
|
|
|
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: '<'
|
|
}
|
|
});
|