inventur/js/vue.js
2018-01-11 14:57:10 +01:00

92 lines
2.6 KiB
JavaScript

Vue.filter('currency', function(money){
return accounting.formatMoney(money);
});
Vue.filter('number', function(number, precision = 2){
return accounting.formatNumber(number, precision);
});
var app = new Vue({
el: "#app",
data : {
dimensions: [
'l',
'Stk.',
'Gl.',
'Fl.',
'T.',
],
articles : [],
inventory : {
ug : [],
mob : [],
stud : []
},
bon: []
},
computed: {
sales_ug: function (){
var total_sales = this.inventory.ug.reduce(function(total, item ) {
return total + item.Sale;
}, 0);
return total_sales;
},
bon_price: function() {
var total = this.bon.reduce(function(total, item) {
return total + item.count * item.price;
}, 0);
return accounting.formatMoney(total);
},
bon_sum: function() {
var total = this.bon.reduce(function(total, item) {
return total + item.count;
}, 0);
return total;
}
},
methods: {
addArticle: function() {
this.articles.push(new Article());
},
storeArticles: function() {
this.$http.post('./backend?controller=Article&action=store', JSON.stringify(this.articles))
.then(response => {
M.toast({html: response.body});
})
},
loadArticles: function() {
this.$http.get('./data/test_articles.json')
.then(response => { return response.json();})
.then(json => {
json.forEach(element => {
this.articles.push(Article.thaw(element));
});
}).then( x => {
M.toast({ html: 'Artikel wurden geladen.'});
}).then( x => {
this.articles.forEach(a => {
ia = new InventoryArticle();
ia.article = a;
this.inventory.ug.push(ia);
this.bon.push({count: 0, name: a.name, price: a.portion.price});
});
}).then( x => {
M.updateTextFields();
});
},
resetBon: function(article) {
this.bon.forEach(function (item){
item.count = 0;
});
},
bonned: function (items) {
return items.filter(function (item) {
return item.count > 0;
});
}
},
created: function(){
this.loadArticles();
}
});