EVOLUTION-NINJA
Edit File: ae_transaction_form.php
<?php echo view('includes/sidebar'); ?> <script src="<?php echo base_url('public/assets/js/jquery-3.6.0.min.js'); ?>"></script> <script src="<?php echo base_url('public/assets/toastr/toastr.min.js');?>"></script> <link rel="stylesheet" href="<?php echo base_url('public/assets/toastr/toastr.min.css');?>"> <section class="home-section" style="padding:15px"> <div class="home-content"> <!--<i class='bx bx-menu'></i>--> </div> <div class="row m-0"> <div class="col-sm-12"> <h1 class="crt-pjt">AE Transaction Entry</h1> </div> </div> <form id="ae-form"> <div class="createproject"> <!-- 🔹 Farmer + Product --> <div class="row projdetail"> <div class="col-sm-4"> <label class="inpfieldname">FARMER <span style="color:red;">*</span></label> <select name="customer_id" id="customer_id" class="form-control fieldsbox" required> <option value="">Select Farmer</option> <?php foreach ($customers as $c): ?> <option value="<?= $c['id'] ?>"> <?= $c['farmer_name'] ?> </option> <?php endforeach; ?> </select> </div> <!--<div class="col-sm-4">--> <!-- <label class="inpfieldname">PRODUCT <span style="color:red;">*</span></label>--> <!-- <select name="product_id" id="product_id" class="form-control fieldsbox" required>--> <!-- <option value="">Select Product</option>--> <!-- <?php foreach ($products as $p): ?>--> <!-- <option value="<?= $p['product_id'] ?>">--> <!-- <?= $p['model_name'] ?>--> <!-- </option>--> <!-- <?php endforeach; ?>--> <!-- </select>--> <!--</div>--> <div class="col-sm-4"> <label class="inpfieldname"> PRODUCT <span style="color:red;">*</span> </label> <input type="text" id="product_name" class="form-control fieldsbox" readonly> <!-- Hidden product_id --> <input type="hidden" name="product_id" id="product_id"> </div> <div class="col-sm-4"> <label class="inpfieldname">DEALER <span style="color:red;">*</span></label> <input type="text" id="dealer_name" name="dealer_name" class="form-control fieldsbox" readonly> </div> <div class="col-sm-4"> <label class="inpfieldname">RC PRICE <span style="color:red;">*</span></label> <input type="number" id="rc_price" name="rc_price" class="form-control fieldsbox" readonly> </div> <div class="col-sm-4"> <label class="inpfieldname">SUBSIDY AMOUNT <span style="color:red;">*</span></label> <input type="number" name="subsidy_amount" id="subsidy_amount" class="form-control fieldsbox" required> </div> <div class="col-sm-4"> <label class="inpfieldname">FARMER SHARE <span style="color:red;">*</span></label> <!--<input type="number" name="farmer_share" id="farmer_share" class="form-control fieldsbox">--> <input type="number" name="farmer_share" id="farmer_share" class="form-control fieldsbox" readonly> </div> </div> <!-- 🔹 Subsidy + Share --> <div class="row projdetail"> <div class="col-sm-4"> <label class="inpfieldname">AE COMMISSION <span style="color:red;">*</span></label> <input type="number" id="ae_commission" name="ae_commission" class="form-control fieldsbox" readonly> </div> <div class="col-sm-4"> <label class="inpfieldname">GST DIFFERENCE <span style="color:red;">*</span></label> <input type="number" id="gst_difference" name="gst_difference" class="form-control fieldsbox" readonly> </div> <div class="col-sm-4"> <label class="inpfieldname">BILLING PRICE <span style="color:red;">*</span></label> <input type="number" id="billing_price" name="billing_price" class="form-control fieldsbox" readonly> </div> </div> <!-- 🔹 Billing --> <!--<div class="row projdetail">--> <!-- <div class="col-sm-4">--> <!-- <label class="inpfieldname">PAYMENT STATUS</label>--> <!-- <select name="payment_status" class="form-control fieldsbox">--> <!-- <option value="pending">Pending</option>--> <!-- <option value="received">Received</option>--> <!-- <option value="settled">Settled</option>--> <!-- </select>--> <!-- </div>--> <!--</div>--> <!-- 🔹 Govt Payment --> <div class="row projdetail"> <div class="col-sm-4"> <label class="inpfieldname">SUBSIDY UTR <span style="color:red;">*</span></label> <input type="text" name="subsidy_utr" class="form-control fieldsbox" required> </div> <div class="col-sm-4"> <label class="inpfieldname">SUBSIDY DATE <span style="color:red;">*</span></label> <input type="date" name="subsidy_date" class="form-control fieldsbox" required> </div> <div class="col-sm-4"> <label class="inpfieldname">TDS <span style="color:red;">*</span></label> <input type="number" name="tds" class="form-control fieldsbox" required> </div> </div> <div class="row projdetail"> <div class="col-sm-4"> <label class="inpfieldname">GST <span style="color:red;">*</span></label> <input type="number" name="gst" class="form-control fieldsbox" required> </div> <!-- <div class="col-sm-4">--> <!-- <label class="inpfieldname">PAID TO DEALER</label>--> <!--<input type="number" id="paid_amount" name="paid_amount" class="form-control fieldsbox">--> <!-- <input type="number" id="paid_amount" name="paid_amount" placeholder="Enter amount paid to dealer" class="form-control fieldsbox">--> <!--</div>--> <!--<div class="col-sm-4">--> <!-- <label class="inpfieldname">BALANCE AMOUNT</label>--> <!-- <input type="number" id="balance_amount" name="balance_amount" class="form-control fieldsbox" readonly>--> <!--<input type="number" id="balance_amount" name="balance_amount" readonly>--> <!--</div>--> <!-- <div class="col-sm-4">--> <!-- <label class="inpfieldname">BALANCE AMOUNT</label>--> <!--<input type="number" id="balance_amount" class="form-control fieldsbox" readonly>--> <!-- <input type="number" id="balance_amount" name="balance_amount" class="form-control fieldsbox" readonly>--> <!--</div>--> </div> <!-- 🔹 Buttons --> <div class="col-sm-6 buttns-cnl mt-4"> <button type="submit" class="submit">Submit</button> <button type="button" class="cancel">Cancel</button> </div> </div> </form> </section> // <script> // $('#product_id').on('change', function () { // let product_id = $(this).val(); // $.ajax({ // url: "<?= base_url('get-product-details'); ?>", // type: "POST", // data: { product_id: product_id }, // dataType: "JSON", // success: function (res) { // if (res.status == 1) { // $('#rc_price').val(res.data.rc_price); // $('#ae_commission').val(res.data.ae_commission); // $('#gst_difference').val(res.data.gst_difference); // let billing = // res.data.rc_price - // res.data.ae_commission - // res.data.gst_difference; // $('#billing_price').val(billing); // } // } // }); // }); </script> <script> $('#ae-form').on('submit', function(e) { e.preventDefault(); $.ajax({ url: "<?= base_url('save-ae-transaction'); ?>", type: "POST", data: $(this).serialize(), dataType: "JSON", success: function(res) { console.log(res); if (res.status == 1) { toastr.success("Saved successfully"); location.reload(); } else { toastr.error("Error saving data"); } } }); }); $('#customer_id').on('change', function () { let customer_id = $(this).val(); if (!customer_id) return; // ✅ STEP 1: Get customer details first $.ajax({ url: "<?= base_url('get-customer-details'); ?>", type: "POST", data: { customer_id: customer_id }, dataType: "JSON", success: function (res) { if (res.status == 1) { // Dealer $('#dealer_name').val( res.data.dealer_name ); // Product $('#product_id').val( res.data.product_id ); $('#product_name').val( res.data.product_name ); // Eligibility checkEligibility( customer_id, res.data.dealer_name ); // Auto load price details loadProductDetails( res.data.product_id ); } } }); }); // ✅ SEPARATE FUNCTION (CLEAN + SAFE) function checkEligibility(customer_id, dealer_name) { $.ajax({ url: "<?= base_url('check-customer-eligibility'); ?>", type: "POST", data: { customer_id: customer_id, dealer_name: dealer_name }, dataType: "JSON", success: function (res) { if (res.status == 0) { toastr.error(res.message); $('#customer_id').val(''); $('#dealer_name').val(''); } } }); } // $('#product_id').on('change', function () { // let product_id = $(this).val(); // $.ajax({ // url: "<?= base_url('get-product-details'); ?>", // type: "POST", // data: { product_id: product_id }, // dataType: "JSON", // success: function (res) { // if (res.status == 1) { // let rc_price = parseFloat(res.data.rc_price); // // ✅ Basic price (remove GST 5%) // let basic_price = rc_price / 1.05; // // ✅ AE commission (3%) // let ae_commission = basic_price * 0.03; // // ✅ GST on commission (5%) // let gst_difference = ae_commission * 0.05; // // ✅ Billing price // let billing_price = rc_price - ae_commission - gst_difference; // $('#rc_price').val(rc_price.toFixed(2)); // $('#ae_commission').val(ae_commission.toFixed(2)); // $('#gst_difference').val(gst_difference.toFixed(2)); // $('#billing_price').val(billing_price.toFixed(2)); // } // } // }); // }); function loadProductDetails(product_id) { $.ajax({ url: "<?= base_url('get-product-details'); ?>", type: "POST", data: { product_id: product_id }, dataType: "JSON", success: function (res) { console.log(res); let rc_price = parseFloat( res.rc_price || res.data?.rc_price ) || 0; let basic_price = rc_price / 1.05; let ae_commission = basic_price * 0.03; let gst_difference = ae_commission * 0.05; let billing_price = rc_price - ae_commission - gst_difference; $('#rc_price').val( rc_price.toFixed(2) ); $('#ae_commission').val( ae_commission.toFixed(2) ); $('#gst_difference').val( gst_difference.toFixed(2) ); $('#billing_price').val( billing_price.toFixed(2) ); } }); } $('#paid_amount').on('input', function () { let paid = parseFloat($(this).val()) || 0; let billing = parseFloat($('#billing_price').val()) || 0; if (paid > billing) { toastr.error("Paid amount cannot exceed billing price"); $(this).val(''); $('#balance_amount').val(''); return; } let balance = billing - paid; $('#balance_amount').val(balance.toFixed(2)); }); // ✅ Auto Farmer Share Calculation $('#subsidy_amount').on('input', function () { let subsidy = parseFloat($(this).val()) || 0; let rc_price = parseFloat($('#rc_price').val()) || 0; // Formula let farmer_share = rc_price - subsidy; // Prevent negative values if (farmer_share < 0) { farmer_share = 0; } $('#farmer_share').val( farmer_share.toFixed(2) ); }); </script>