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