मैं पीओएस सिस्टम पर काम कर रहा हूं। यहां मुझे प्रत्येक आइटम के लिए विशिष्ट रूप से कुल गणना करने की आवश्यकता है। मैंने राशि की गणना करने के लिए एक ऑनकेप फ़ंक्शन लिखा है। यह एक पंक्ति के लिए एकदम सही काम कर रहा है। अगर मैंने दूसरे उत्पाद के लिए अतिरिक्त छूट 2 को संशोधित किया है तो यह पहली पंक्ति को प्रभावित करता है।

स्क्रीनशॉट: यहां छवि विवरण दर्ज करें

एचटीएमएल:

<table class="table table-striped table-hover" id="item_table">
   <thead id="thead">
      <tr class="bg-primary">
         <th>#</th>
         <th>Product Name</th>
         <th>Quantity</th>
         <th>Unit Price</th>
         <th>Discount</th>
         <th>Discount 2</th>
         <th>Amount</th>
         <th><i class="fa fa-close"></i></th>
      </tr>
   </thead>
   <tbody id="item_list">
      <tr>
         <td><?php echo $n; ?></td>
         <td><?php echo $product_name; ?></td>
         <td><input type="number" class="form-control" name="quantity[]" id="quantity" value="1" min="1" step="1"></td>
         <td id="sprice"><?php echo $selling_price; ?></td>
         <td id="discount"><?php echo $discount_rate; ?>%</td>
         <td><input type="text" class="form-control" name="discount2" id="discount2"></td>
         <td id="total"><?php echo number_format($total,2,'.', ''); ?></td>
         <td><span><i class="fa fa-trash"></i></span></td>
      </tr>
   </tbody>
</table>

यहां पीएचपी कोड पहली बार तालिका में पंक्ति सम्मिलित करता है। इसमें कोई समस्या नहीं है। यह एक रिकॉर्ड के साथ काम कर रहा है।

जावास्क्रिप्ट:

//Product Row Calculation
function calculateItemPrice() {
    var sprice = $("#item_table #sprice").text();
    var quantity = $("#item_table #item_list #quantity").val();
    var discount = $("#item_table #discount").text().slice(0, -1);
    var discount2 = $("#item_table #item_list #discount2").val();

    $('tr').each(function() {
        var totalDiscount = ((sprice * quantity) * discount / 100);
        var price = ((((sprice * quantity) - totalDiscount)) - discount2);
        var total = parseFloat(price).toFixed(2);

        $("#total").html(total);
    });
}

$("#item_table").on("keyup", "#quantity", function() {
    calculateItemPrice();
});

$("#item_table").on("keyup", "#discount2", function() {
    calculateItemPrice();
});
3
Coder LK 15 फरवरी 2020, 22:48
2
आप पूरे कोड में आईडी का उपयोग कर रहे हैं, आईडी अद्वितीय हैं और दूसरी बार काम नहीं करेंगे
 – 
DEEPAK
16 फरवरी 2020, 01:25
स्टैकओवरफ्लो में आपका स्वागत है :) यदि आपका प्रश्न php के बारे में नहीं है, तो मैं आपकी HTML तालिका का एक प्रस्तुत DOM संस्करण पसंद करता हूँ। यह अजीब है! क्या यह एक PHP लूप है जिसे आप यहां छुपा रहे हैं?
 – 
Bilel
16 फरवरी 2020, 04:55
हां डीबी से डेटा लाने के लिए इस्तेमाल किया जाने वाला एक PHP लूप है। मैं इसे छुपा रहा हूं। मेरा ऑनकीप कार्य मात्रा और छूट 2 दोनों क्षेत्रों के लिए ठीक काम करता है। समस्या यह है कि अगर मैं दूसरा उत्पाद जोड़ता हूं तो प्रत्येक पंक्ति की विशिष्ट रूप से गणना नहीं कर सकता है
 – 
Coder LK
16 फरवरी 2020, 08:26

2 जवाब

इस तरह प्रयास करें:

//Product Row Calculation
    function calculateItemPrice(sprice,quantity,discount,discount2){
        var totalDiscount = ((sprice * quantity) * discount/100);
        var price = ((((sprice * quantity) - totalDiscount))- discount2);
        var total = parseFloat(price).toFixed(2);

        //alert("Hi");
        return total;
    }

    $("#item_table").on("keyup","#discount2 , #quantity", function() {
        var sprice = $(this).closest('tr').find("#sprice").text();
        var quantity = $(this).closest('tr').find("#quantity").val();
        var discount = $(this).closest('tr').find("#discount").text().slice(0,-1);
        var discount2 = $(this).closest('tr').find("#discount2").val();

        total2 = calculateItemPrice(sprice,quantity,discount,discount2);
        $(this).closest('tr').find('#total').html(total2);
        //alert(discount2);
    });
0
Aashif Ahamed 16 फरवरी 2020, 14:47

id के बजाय class का प्रयोग करें। आप इसका उपयोग करके भी कुल योग की गणना कर सकते हैं।

$(function(){ 
    $('body').on("keyup change", ".quantity, .discount2", function() {
        var tr        = $(this).parent().parent();

        var sprice    = tr.find(".sprice").text();
        var quantity  = tr.find(".quantity").val();
        var discount  = tr.find(".discount").text().slice(0, -1);
        var discount2 = tr.find(".discount2").val();

        // calculate total 
        var totalDiscount = ((sprice * quantity) * discount / 100);
        var price = ((((sprice * quantity) - totalDiscount)) - discount2);
        var total = parseFloat(price).toFixed(2);
        tr.find(".total").html(total);

        // calculate grand total
        var grandTotal = 0.00;
        $('tr > .total').each(function(i, v){
            grandTotal = (parseFloat(grandTotal)+parseFloat($(this).text())).toFixed(2);
        });

        console.log('Grand Total: ', grandTotal);
    }); 
});
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table class="table table-striped table-hover" id="item_table" border="1">
   <thead id="thead">
      <tr class="bg-primary">
         <th>#</th>
         <th>Product Name</th>
         <th>Quantity</th>
         <th>Unit Price</th>
         <th>Discount</th>
         <th>Discount 2</th>
         <th>Amount</th>
         <th><i class="fa fa-close"></i></th>
      </tr>
   </thead>
   <tbody id="item_list">
      <tr>
         <td>1</td>
         <td>Test 1</td>
         <td><input type="number" class="form-control quantity" name="quantity[]" value="1" min="1" step="1"></td>
         <td class="sprice">10</td>
         <td class="discount">2%</td>
         <td><input type="text" class="form-control discount2" name="discount2"></td>
         <td class="total">10</td>
         <td><span><i class="fa fa-trash"></i></span></td>
      </tr>
      <tr>
         <td>2</td>
         <td>Test 2</td>
         <td><input type="number" class="form-control quantity" name="quantity[]" value="1" min="1" step="1"></td>
         <td class="sprice">20</td>
         <td class="discount">5%</td>
         <td><input type="text" class="form-control discount2" name="discount2"></td>
         <td class="total">20</td>
         <td><span><i class="fa fa-trash"></i></span></td>
      </tr>
   </tbody>
</table>
0
souravmsh 16 फरवरी 2020, 17:40