check discount calculation

This commit is contained in:
phyusin
2018-02-28 13:55:24 +06:30
parent a17a240a2e
commit 32340c52e6

View File

@@ -31,6 +31,7 @@
</div> </div>
<div id="order-detail-slimscroll" data-height="160"> <div id="order-detail-slimscroll" data-height="160">
<div class="card-text dining"> <div class="card-text dining">
<span id="discount_itemsErr" style="color:red;"></span>
<table class="table table-default" id="order-items-table"> <table class="table table-default" id="order-items-table">
<thead> <thead>
<tr> <tr>
@@ -117,6 +118,7 @@
<div class="col-md-12"> <div class="col-md-12">
<div class="form-group"> <div class="form-group">
<input type="text" id="discount-amount" name="discount-amount" value="<%= @sale_data.total_discount rescue 0 %>" class="form-control" /> <input type="text" id="discount-amount" name="discount-amount" value="<%= @sale_data.total_discount rescue 0 %>" class="form-control" />
<span id="discount-amountErr" style="color:red;"></span>
</div> </div>
<br> <br>
<div class="form-group"> <div class="form-group">
@@ -254,12 +256,9 @@ var cashier_type = "<%= @cashier_type %>";
var original_value=0; var original_value=0;
original_value = $('#discount-amount').val(); original_value = $('#discount-amount').val();
var input_type = $(this).attr("data-type"); var input_type = $(this).attr("data-type");
var grand_total = $('#order-grand-total').text();
console.log(grand_total);
switch (input_type) { switch (input_type) {
case 'num': case 'num':
var input_value = $(this).attr("data-value"); var input_value = $(this).attr("data-value");
console.log(input_value);
if (original_value == "0.0"){ if (original_value == "0.0"){
$('#discount-amount').val(input_value); $('#discount-amount').val(input_value);
} }
@@ -332,24 +331,40 @@ var cashier_type = "<%= @cashier_type %>";
$("#net").on('click', function(e){ $("#net").on('click', function(e){
e.preventDefault(); e.preventDefault();
var sale_id = $('#sale-id').text(); var sale_id = $('#sale-id').text();
var discount_value = parseFloat($('#discount-amount').val()); var discount_value = $('#discount-amount').val();
var sub_total = parseFloat($('#order-sub-total').text());
var ajax_url = "/origami/" + sale_id + "/discount"; var ajax_url = "/origami/" + sale_id + "/discount";
if(discount_value!=""){
if(discount_value > 0){
if(parseFloat(discount_value) > sub_total){
$("#discount-amount").val("");
$("#discount-amountErr").html("Discount is greater than sub total!");
}else{
$("#discount-amountErr").html("");
// Selected Items
var sale_items = get_selected_sale_items();
// Selected Items // Selected Account
var sale_items = get_selected_sale_items(); var account_types = get_selected_account_types();
// Selected Account if(sale_items.length == 0 && account_types.length == 0){
var account_types = get_selected_account_types(); calculate_overall_discount(0, discount_value);
}
else {
calculate_item_discount(0, discount_value, sale_items, account_types);
}
if(sale_items.length == 0 && account_types.length == 0){ // Remove Selection
calculate_overall_discount(0, discount_value); selection_remove();
}
}else{
$("#discount-amountErr").html("Discount must be greater than 0!");
}
}else{
$("#discount-amountErr").html("can't be blank");
} }
else {
calculate_item_discount(0, discount_value, sale_items, account_types);
}
// Remove Selection
selection_remove();
}); });
// Calculate Percentage Discount for Payment // Calculate Percentage Discount for Payment
@@ -360,8 +375,7 @@ var cashier_type = "<%= @cashier_type %>";
var ajax_url = "/origami/" + sale_id + "/discount"; var ajax_url = "/origami/" + sale_id + "/discount";
// Selected Items // Selected Items
var sale_items = get_selected_sale_items(); var sale_items = get_selected_sale_items();
// Selected Account // Selected Account
var account_types = get_selected_account_types(); var account_types = get_selected_account_types();
@@ -435,7 +449,6 @@ var cashier_type = "<%= @cashier_type %>";
// Selected Items // Selected Items
var sale_items = get_selected_sale_items(); var sale_items = get_selected_sale_items();
console.log(sale_items.length);
if(sale_items.length == 0){ if(sale_items.length == 0){
//swal("Information!", "You have no selected item!"); //swal("Information!", "You have no selected item!");
swal ( "Oops" , "You have no selected item!" , "error" ); swal ( "Oops" , "You have no selected item!" , "error" );
@@ -669,113 +682,150 @@ function calculate_item_discount(type, amount, sale_items, account_types){
var dis_amount = 0; var dis_amount = 0;
var sub_total = 0; var sub_total = 0;
var total_discount = 0; var total_discount = 0;
var arrItemName = "";
$("#discount_itemsErr").html("");
$("#discount-amountErr").html("");
// For Net Pay // For Net Pay
if(type == 0){ if(origin_sub_total > 0){
dis_amount = (0 - amount); if(type == 0){
if(sale_items.length > 0){ dis_amount = (0 - amount);
for(var i=0;i < sale_items.length;i++){
// if(account_types.length > 0){
// for(var j=0; j < account_types.length; j++){
// if(sale_items[i].account_id == account_types[j].id){
// // Discount Items
// var discount_item_row = item_row_template(type, sale_items[i], dis_amount, amount);
// $("#order-items-table tbody").append(discount_item_row);
// total_discount = total_discount + amount;
// }
// }
// }
// else {
var discount_item_row = item_row_template(type,sale_items[i], dis_amount, amount);
$("#order-items-table tbody").append(discount_item_row);
total_discount = total_discount + amount;
// }
}
}
// No Needs For Auto Selected
// if(account_types.length > 0){
// var item_rows=get_item_rows();
// if(item_rows.length > 0){
// for(var k=0; k < item_rows.length; k++){
// for(var j=0; j < account_types.length; j++){
// if(item_rows[k].account_id == account_types[j].id){
// // Discount Items
// var discount_item_row = item_row_template(type, item_rows[k], dis_amount, amount);
// $("#order-items-table tbody").append(discount_item_row);
// total_discount = total_discount + amount;
// }
// }
// }
// }
// else {
// alert("No Items!");
// }
// }
sub_total = origin_sub_total - total_discount;
}
// For Percentage Pay
if(type == 1){
if(amount > 100 ){
swal({
title:"Oops!",
text:'Percentage Value over 100!',
type: "error",
confirmButtonText: 'OK',
confirmButtonColor:"red"
});
}
else{
// Check sale items exists
if(sale_items.length > 0){ if(sale_items.length > 0){
for(var i=0;i < sale_items.length;i++){ for(var i=0;i < sale_items.length;i++){
// if(account_types.length > 0){ // if(account_types.length > 0){
// for(var j=0; j < account_types.length; j++){ // for(var j=0; j < account_types.length; j++){
// if(sale_items[i].account_id == account_types[j].id){ // if(sale_items[i].account_id == account_types[j].id){
// // Discount Items // // Discount Items
// dis_amount = 0 - ((sale_items[i].price * amount)/100); // var discount_item_row = item_row_template(type, sale_items[i], dis_amount, amount);
// var discount_item_row = item_row_template(type,sale_items[i], dis_amount, amount);
// $("#order-items-table tbody").append(discount_item_row); // $("#order-items-table tbody").append(discount_item_row);
// total_discount = total_discount + dis_amount; // total_discount = total_discount + amount;
// } // }
// } // }
// } // }
// else { // else {
dis_amount = 0 - ((sale_items[i].price * amount)/100); if(parseFloat(amount) > parseFloat(sale_items[i].price)){
var discount_item_row = item_row_template(type,sale_items[i], dis_amount, amount); arrItemName += ", " + sale_items[i].name;
$("#order-items-table tbody").append(discount_item_row); }else{
total_discount = total_discount + dis_amount; var discount_item_row = item_row_template(type,sale_items[i], dis_amount, amount);
total_discount = parseFloat(total_discount) + parseFloat(amount);
if(parseFloat(origin_sub_total) >= parseFloat(total_discount)){
$("#order-items-table tbody").append(discount_item_row);
}else{
total_discount = parseFloat(total_discount) - parseFloat(amount);
$("#discount-amountErr").html("Discount is greater than sub total!");
}
}
// } // }
} }
sub_total = origin_sub_total + total_discount;
} }
if(arrItemName!=""){
arrItemName = arrItemName.substr(2);
if(arrItemName.match(/,/g || []) != null){
if(arrItemName.match(/,/g || []).length >= 1){
$("#discount_itemsErr").html("Discount is greater than "+arrItemName+" prices");
}
}else{
$("#discount_itemsErr").html("Discount is greater than "+arrItemName+" price");
}
}
// No Needs For Auto Selected
// if(account_types.length > 0){
// var item_rows=get_item_rows();
// if(item_rows.length > 0){
// for(var k=0; k < item_rows.length; k++){
// for(var j=0; j < account_types.length; j++){
// if(item_rows[k].account_id == account_types[j].id){
// // Discount Items
// var discount_item_row = item_row_template(type, item_rows[k], dis_amount, amount);
// $("#order-items-table tbody").append(discount_item_row);
// total_discount = total_discount + amount;
// }
// }
// }
// }
// else {
// alert("No Items!");
// }
// }
sub_total = parseFloat(origin_sub_total) - parseFloat(total_discount);
} }
// No Needs For Auto Selected
// Check account types exists // For Percentage Pay
// if(account_types.length > 0){ if(type == 1){
// var item_rows=get_item_rows(); if(amount > 100 ){
// console.log(account_types); swal({
// if(item_rows.length > 0){ title:"Oops!",
// for(var k=0; k < item_rows.length; k++){ text:'Percentage Value over 100!',
// for(var j=0; j < account_types.length; j++){ type: "error",
// if(item_rows[k].account_id == account_types[j].id){ confirmButtonText: 'OK',
// // Discount Items confirmButtonColor:"red"
// dis_amount = 0 - ((item_rows[k].price * amount)/100); });
// var discount_item_row = item_row_template(type, item_rows[k], dis_amount, amount); }
// $("#order-items-table tbody").append(discount_item_row); else{
// total_discount = total_discount + dis_amount; // Check sale items exists
// } if(sale_items.length > 0){
// } for(var i=0;i < sale_items.length;i++){
// } // if(account_types.length > 0){
// } // for(var j=0; j < account_types.length; j++){
// else { // if(sale_items[i].account_id == account_types[j].id){
// alert("No Items!"); // // Discount Items
// } // dis_amount = 0 - ((sale_items[i].price * amount)/100);
// } // var discount_item_row = item_row_template(type,sale_items[i], dis_amount, amount);
// $("#order-items-table tbody").append(discount_item_row);
// total_discount = total_discount + dis_amount;
// }
// }
// }
// else {
dis_amount = 0 - ((sale_items[i].price * amount)/100);
var discount_item_row = item_row_template(type,sale_items[i], dis_amount, amount);
total_discount = total_discount + dis_amount;
if(parseFloat(origin_sub_total) >= parseFloat(total_discount)){
$("#order-items-table tbody").append(discount_item_row);
}else{
total_discount = total_discount - dis_amount;
$("#discount-amountErr").html("Discount is greater than sub total!");
}
// }
}
sub_total = parseFloat(origin_sub_total) + parseFloat(total_discount);
}
}
// No Needs For Auto Selected
// Check account types exists
// if(account_types.length > 0){
// var item_rows=get_item_rows();
// console.log(account_types);
// if(item_rows.length > 0){
// for(var k=0; k < item_rows.length; k++){
// for(var j=0; j < account_types.length; j++){
// if(item_rows[k].account_id == account_types[j].id){
// // Discount Items
// dis_amount = 0 - ((item_rows[k].price * amount)/100);
// var discount_item_row = item_row_template(type, item_rows[k], dis_amount, amount);
// $("#order-items-table tbody").append(discount_item_row);
// total_discount = total_discount + dis_amount;
// }
// }
// }
// }
// else {
// alert("No Items!");
// }
// }
}
$("#order-sub-total").text(parseFloat(sub_total).toFixed(2));
}else{
$("#discount-amountErr").html("Discount is greater than sub total!");
} }
$("#order-sub-total").text(sub_total);
} }
function item_row_template(type, item, discount_amount, amount){ function item_row_template(type, item, discount_amount, amount){