Refactor total and line discount calculation according to new design
This commit is contained in:
		
							
								
								
									
										47
									
								
								resources/assets/js/views/common/documents.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										47
									
								
								resources/assets/js/views/common/documents.js
									
									
									
									
										vendored
									
									
								
							@@ -65,14 +65,14 @@ const app = new Vue({
 | 
			
		||||
 | 
			
		||||
    methods: {
 | 
			
		||||
        onCalculateTotal() {
 | 
			
		||||
            let global_discount = this.discount;
 | 
			
		||||
            let global_discount = this.form.discount;
 | 
			
		||||
            let discount_total = 0;
 | 
			
		||||
            let line_item_discount_total = 0;
 | 
			
		||||
            let taxes = document_taxes;
 | 
			
		||||
            let sub_total = 0;
 | 
			
		||||
            let totals_taxes = [];
 | 
			
		||||
            let grand_total = 0;
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
            // items calculate
 | 
			
		||||
            this.items.forEach(function(item, index) {
 | 
			
		||||
                let item_discount = 0;
 | 
			
		||||
@@ -188,16 +188,16 @@ const app = new Vue({
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    // calculate sub, tax, discount all items.
 | 
			
		||||
                // set item total
 | 
			
		||||
                if (item.discount) {
 | 
			
		||||
                    item.grand_total = item_discounted_total;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // calculate sub, tax, discount all items.
 | 
			
		||||
                line_item_discount_total += line_discount_amount;
 | 
			
		||||
                sub_total += item.total;
 | 
			
		||||
                grand_total += item.grand_total;
 | 
			
		||||
 | 
			
		||||
                // set item total
 | 
			
		||||
                if (item.discount) {
 | 
			
		||||
                    item.total = item_discounted_total;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                this.form.items[index].name = item.name;
 | 
			
		||||
                this.form.items[index].description = item.description;
 | 
			
		||||
                this.form.items[index].quantity = item.quantity;
 | 
			
		||||
@@ -207,15 +207,13 @@ const app = new Vue({
 | 
			
		||||
            }, this);
 | 
			
		||||
 | 
			
		||||
            // Apply discount to total
 | 
			
		||||
            /*
 | 
			
		||||
            if (discount_in_totals) {
 | 
			
		||||
                discount_total = sub_total * (discount_in_totals / 100);
 | 
			
		||||
            if (global_discount) {
 | 
			
		||||
                discount_total = sub_total * (global_discount / 100);
 | 
			
		||||
 | 
			
		||||
                this.totals.discount = discount_total;
 | 
			
		||||
 | 
			
		||||
                sub_total = sub_total - (sub_total * (discount_in_totals / 100));
 | 
			
		||||
                grand_total = sub_total - (sub_total * (global_discount / 100));
 | 
			
		||||
            }
 | 
			
		||||
            */
 | 
			
		||||
 | 
			
		||||
            this.totals.item_discount = line_item_discount_total;
 | 
			
		||||
            this.totals.sub = sub_total;
 | 
			
		||||
@@ -333,10 +331,27 @@ const app = new Vue({
 | 
			
		||||
            this.onCalculateTotal();
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        onAddDiscount(item_index) {
 | 
			
		||||
        onAddLineDiscount(item_index) {
 | 
			
		||||
            this.items[item_index].add_discount = true;
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        onAddTotalDiscount() {
 | 
			
		||||
            let discount = document.getElementById('pre-discount').value;
 | 
			
		||||
 | 
			
		||||
            if (discount < 0) {
 | 
			
		||||
                discount = 0;
 | 
			
		||||
            } else if (discount > 100) {
 | 
			
		||||
                discount = 100;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            document.getElementById('pre-discount').value = discount;
 | 
			
		||||
 | 
			
		||||
            this.form.discount = discount;
 | 
			
		||||
            this.discount = false;
 | 
			
		||||
 | 
			
		||||
            this.onCalculateTotal();
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        onDeleteDiscount(item_index) {
 | 
			
		||||
            this.items[item_index].add_discount = false;
 | 
			
		||||
        },
 | 
			
		||||
@@ -503,9 +518,9 @@ const app = new Vue({
 | 
			
		||||
                            this.taxes[tax_id].push(item.id);
 | 
			
		||||
                        } else {
 | 
			
		||||
                            this.taxes.push(tax_id);
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
                            this.taxes[tax_id] = [];
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
                            this.taxes[tax_id].push(item.id);
 | 
			
		||||
                        }
 | 
			
		||||
                    }, this);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user