$(document).ready(function () {
    $("body").off('click').on("click", '.remove', remove);
    $("body").on("click change", ".party", gsttr);
    $("body").on("keyup change blur focus", ".qty, .rate,.gstrate,.roundoff,#party", calDetail);
    $("body").on("blur", '.discamt', autoaddrow);
    // $("body").on("change", ".cmbparty", getoms);
    $("body").on("keyup blur", ".hsncode", Getdescrip);
    // $("body").on("keyup blur change", ".descrip1,.descrip2", GetHSN);
    $("body").on("keyup blur", ".ms", fillDescrip1);
    $("body").on("keyup blur", ".ms", fillDescrip2);
    $("body").on("change", "#party", getOms);


    function getOms() {
        var party = $('#party').val();
        $.post('getcustgst.php', {party: party}, function (data) {

            if (data == 1) {
                $('.oms').prop('checked', true);
            } else {
                $('.oms').prop('checked', false);
            }
        });
    }

    function fillDescrip1() {
        var ms = $('.ms').val();
        $.post('getmsdescrip.php', {ms: ms}, function (data) {
            $(".datadescrip1").html(data);
        });
    }
    function fillDescrip2() {
        var ms = $('.ms').val();
        $.post('getmsdescriptwo.php', {ms: ms}, function (data) {
            $(".datadescrip2").html(data);
        });
    }


    function Getdescrip() {
        var ms = $('.ms').val();
        var tr = $(this).closest("tr"),
                hsncode = tr.find('.hsncode').val();

        $.post('getDescription.php', {hsncode: hsncode, ms: ms}, function (data) {

            tr.find('.descrip1').val(data.descrip1).trigger('change');
            tr.find('.descrip2').val(data.descrip2).trigger('change');
        }, 'json');
    }


    function autoaddrow() {
        if ($(this).closest('tr').is(":last-child")) {
            AddRows();
        }
    }


    function gsttr() {
        $('.tbody').find('tr').each(function () {
            var row = $(this),
                    cgstrate = row.find('.cgstrate').val(),
                    igstrate = row.find('.igstrate').val(),
                    igstamt = row.find('.igstamt').val(),
                    cgstamt = row.find('.cgstamt').val();
            if ($('.oms').prop("checked") == true) {
                if (igstrate == 0) {
                    var nigstrt = cgstrate * 2,
                            nigstamt = cgstamt * 2;
                    row.find('.igstrate').val(nigstrt);
                    row.find('.igstamt').val(nigstamt);
                    row.find('.cgstrate').val(0);
                    row.find('.cgstamt').val(0);
                    row.find('.sgstrate').val(0);
                    row.find('.sgstamt').val(0);
                }
            } else {
                if (cgstrate == 0) {
                    var ncgstrt = igstrate / 2,
                            ncgstamt = igstamt / 2;
                    row.find('.cgstrate').val(ncgstrt);
                    row.find('.cgstamt').val(ncgstamt);
                    row.find('.sgstrate').val(ncgstrt);
                    row.find('.sgstamt').val(ncgstamt);
                    row.find('.igstrate').val(0);
                    row.find('.igstamt').val(0);
                }
            }
        });
    }


    function calDetail() {
        var gstamt = 0,
                subtot = 0,
                total = 0,
                vat = 0,
                cgst0 = 0,
                cgst5 = 0,
                cgst12 = 0,
                cgst18 = 0,
                cgst28 = 0,
                tot0 = 0,
                tot0a = 0,
                tot5 = 0,
                tot12 = 0,
                tot18 = 0,
                tot28 = 0,
                igst0 = 0,
                igst1 = 0,
                igst5 = 0,
                igst12 = 0,
                igst18 = 0,
                igst28 = 0,
                tot1a = 0,
                tot5a = 0,
                tot12a = 0,
                tot18a = 0,
                tot28a = 0,
                tota = 0,
                cgst0a = 0,
                cgst5a = 0,
                cgst12a = 0,
                cgst18a = 0,
                cgst28a = 0,
                igst0a = 0,
                igst5a = 0,
                igst12a = 0,
                igst18a = 0,
                igst28a = 0,
                totgst0 = 0,
                totgst5 = 0,
                totgst12 = 0,
                totgst18 = 0,
                totgst28 = 0,
                totbillamt = 0;

        $('.tbody').find('tr').each(function () {
            var tr = $(this),
                    cartqty = tr.find(".cartqty").val(),
                    qty = tr.find(".qty").val(),
                    totqty = cartqty * qty,
                    rate = tr.find(".rate").val(),
                    sqft = tr.find(".sqft").val(),
                    calby = tr.find(".calby").val(),
                    amount = 0,
                    discperc = tr.find(".discperc").val(),
                    discamt = 0,
                    vatperc = tr.find(".vatperc").val(),
                    gstrate = tr.find(".gstrate").val();

            if (calby == "S") {
                amount = (rate * sqft).toFixed(2);
            } else {
                amount = (rate * qty).toFixed(2);

            }

            if (discperc > 0) {
                discamt = ((discperc * amount) / 100).toFixed(2);
            } else {
                discamt = tr.find(".discamt").val();
            }
            subtot = amount - discamt;
            if (vatperc > 0) {
                vat = ((vatperc * subtot) / 100).toFixed(2);
            } else {
                vat = 0;
            }
            tr.find(".subtot").val(subtot);

            if (gstrate > 0) {
                gstamt = ((gstrate * subtot) / 100).toFixed(2);
            } else {
                gstamt = tr.find(".gstamt").val();
            }


            var igst = gstrate,
                    cgst = (gstrate / 2).toFixed(2),
                    sgst = (gstrate / 2).toFixed(2),
                    igstamt = gstamt,
                    cgstamt = (gstamt / 2).toFixed(2),
                    sgstamt = (gstamt / 2).toFixed(2);



            if ($(".oms").prop("checked")) {
                tr.find(".igstrate").val(igst);
                tr.find(".igstamt").val(igstamt);
                tr.find(".sgstrate").val(0);
                tr.find(".cgstrate").val(0);
                tr.find(".sgstamt").val(0);
                tr.find(".cgstamt").val(0);
            } else {
                tr.find(".cgstrate").val(cgst);
                tr.find(".sgstrate").val(sgst);
                tr.find(".cgstamt").val(cgstamt);
                tr.find(".sgstamt").val(sgstamt);
                tr.find(".igstrate").val(0);
                tr.find(".igstamt").val(0);
            }

            var irate = tr.find('.igstrate').val(),
                    crate = tr.find('.cgstrate').val(),
                    newtax = parseFloat(subtot);



            if ($('.oms').prop("checked") == true) {
                if (irate == 0) {
                    tot0a = parseFloat(newtax);
                    tot0 += parseFloat(tot0a);
                }
                if (irate == 5) {
                    tot5a = parseFloat(newtax);
                    tot5 += parseFloat(tot5a);
                }
                if (irate == 12) {
                    tot12a = parseFloat(newtax);
                    tot12 += parseFloat(tot12a);
                }
                if (irate == 18) {
                    tot18a = parseFloat(newtax);
                    tot18 += parseFloat(tot18a);
                }
                if (irate == 28) {
                    tot28a = parseFloat(newtax);
                    tot28 += parseFloat(tot28a);
                }

            } else {

                if (crate == 0) {
                    tot0a = parseFloat(newtax);
                    tot0 += parseFloat(tot0a);
                }
                if (crate == 2.5) {
                    tot5a = parseFloat(newtax);
                    tot5 += parseFloat(tot5a);
                }

                if (crate == 6) {
                    tot12a = parseFloat(newtax);
                    tot12 += parseFloat(tot12a);
                }

                if (crate == 9) {
                    tot18a = parseFloat(newtax);
                    tot18 += parseFloat(tot18a);
                }
                if (crate == 14) {
                    tot28a = parseFloat(newtax);
                    tot28 += parseFloat(tot28a);
                }
            }

            var cgstamnt = tr.find(".cgstamt").val(),
                    iamt = tr.find(".igstamt").val();


            if (crate <= 0) {
                cgst0a = parseFloat(cgstamnt);
                cgst0 += parseFloat(cgst0a);
                igst0a = 0;
            } else if (crate < 3) {
                cgst5a = parseFloat(cgstamnt);
                cgst5 += parseFloat(cgst5a);
                igst5a = 0;

//                    tot5a = 0;
            } else if (crate < 7) {
                cgst12a = parseFloat(cgstamnt);
                cgst12 += parseFloat(cgst12a);
                igst12a = 0;
//                    tot12a = parseFloat(newtax);
//                    tot12 += parseFloat(tot12a);
//                    tot12a = 0;
            } else if (crate < 10) {
                cgst18a = parseFloat(cgstamnt);
                cgst18 += parseFloat(cgst18a);
                igst18a = 0;
//                    tot18a = parseFloat(newtax);
//                    tot18 += parseFloat(tot18a);
//                    tot18a = 0;
            } else if (crate < 15) {
                cgst28a = parseFloat(cgstamnt);
                cgst28 += parseFloat(cgst28a);
                igst28a = 0;
//                    tot28a = parseFloat(newtax);
//                    tot28 += parseFloat(tot28a);
//                    tot28a = 0;
            }

            if (irate <= 0) {
                igst0a = parseFloat(iamt);
                igst0 += parseFloat(igst0a);
                cgst0a = 0;
//                    tot5a = parseFloat(newtax);
//                    tot5 += parseFloat(tot5a);
//                    tot5a = 0;
            } else if (irate < 7) {
                igst5a = parseFloat(iamt);
                igst5 += parseFloat(igst5a);
                cgst5a = 0;
//                    tot5a = parseFloat(newtax);
//                    tot5 += parseFloat(tot5a);
//                    tot5a = 0;
            } else if (irate < 13) {
                igst12a = parseFloat(iamt);
                igst12 += parseFloat(igst12a);
                cgst12a = 0;
//                    tot12a = parseFloat(newtax);
//                    tot12 += parseFloat(tot12a);
//                    tot12a = 0;

            } else if (irate < 19) {
                igst18a = parseFloat(iamt);
                igst18 += parseFloat(igst18a);
                cgst18a = 0;
//                    tot18a = parseFloat(newtax);
//                    tot18 += parseFloat(tot18a);
//                    tot18a = 0;

            } else if (irate < 29) {
                igst28a = parseFloat(iamt);
                igst28 += parseFloat(igst28a);
                cgst28a = 0;
//                    tot28a = parseFloat(newtax);
//                    tot28 += parseFloat(tot28a);
//                    tot28a = 0;
            }

            total = parseFloat(subtot) + parseFloat(gstamt);

            tr.find(".totqty").val(totqty);
            tr.find(".amount").val(amount);
            tr.find(".discamt").val(discamt);
            tr.find(".gstamt").val(gstamt);
            tr.find(".vat").val(vat);
            tr.find(".total").val(total);

        });


        $(".tottaxble0").val(tot0.toFixed(2));
        $(".tottaxble5").val(tot5.toFixed(2));
        $(".tottaxble12").val(tot12.toFixed(2));
        $(".tottaxble18").val(tot18.toFixed(2));
        $(".tottaxble28").val(tot28.toFixed(2));
        totgst5 = (parseFloat(cgst5) + parseFloat(cgst5) + parseFloat(igst5)).toFixed(2);
        totgst12 = (parseFloat(cgst12) + parseFloat(cgst12) + parseFloat(igst12)).toFixed(2);
        totgst18 = (parseFloat(cgst18) + parseFloat(cgst18) + parseFloat(igst18)).toFixed(2);
        totgst28 = (parseFloat(cgst28) + parseFloat(cgst28) + parseFloat(igst28)).toFixed(2);

        $('.cgst0').val(cgst0.toFixed(2));
        $('.sgst0').val(cgst0.toFixed(2));
        $('.igst0').val(igst0.toFixed(2));
        $('.cgst5').val(cgst5.toFixed(2));
        $('.sgst5').val(cgst5.toFixed(2));
        $('.igst5').val(igst5.toFixed(2));
        $('.cgst12').val(cgst12.toFixed(2));
        $('.sgst12').val(cgst12.toFixed(2));
        $('.igst12').val(igst12.toFixed(2));
        $('.cgst18').val(cgst18.toFixed(2));
        $('.sgst18').val(cgst18.toFixed(2));
        $('.igst18').val(igst18.toFixed(2));
        $('.cgst28').val(cgst28.toFixed(2));
        $('.sgst28').val(cgst28.toFixed(2));
        $('.igst28').val(igst28.toFixed(2));
        $('.totgst0').val(totgst0.toFixed(2));
        $('.totgst5').val(totgst5);
        $('.totgst12').val(totgst12);
        $('.totgst18').val(totgst18);
        $('.totgst28').val(totgst28);

        var totamt = 0,
                totdisc = 0,
                totvat = 0,
                tottotal = 0,
                totbal = 0,
                totalqty = 0,
                totadv = 0;
        $(".qty").each(function () {
            if (!isNaN(this.value) && this.value.length != 0) {
                totalqty += parseFloat(this.value);
            }
        });
        $(".totalqty").val(totalqty);

        $(".amount").each(function () {
            if (!isNaN(this.value) && this.value.length != 0) {
                totamt += parseFloat(this.value);
            }
        });
        $(".discamt").each(function () {
            if (!isNaN(this.value) && this.value.lenght != 0) {
                totdisc += parseFloat(this.value);
            }
        });

        $(".amount").each(function () {
            if (!isNaN(this.value) && this.value.lenght != 0) {
                tottotal += parseFloat(this.value);
            }
        });
        $(".totdisc").val(totdisc);
        $(".totamt").val(totamt);

        var taxable = totamt - totdisc;

        $(".taxableamt").val(taxable);

        var billamt = (parseFloat(taxable) + parseFloat(totgst0) + parseFloat(totgst5) + parseFloat(totgst12) + parseFloat(totgst18) + parseFloat(totgst28)).toFixed(2);

        var roundoff = Math.round(parseFloat(billamt)) - parseFloat(billamt);
        $(".roundoff").val(roundoff.toFixed(2));
//        var totbillamt = Math.round((parseFloat(billamt) + parseFloat(roundoff))).toFixed(2);
        totbillamt = Math.round(parseFloat(billamt)).toFixed(2);

        $(".totbillamt").val(totbillamt);
    }


    $('#addnew').click(function () {
        AddRows();
    });

    function remove() {
        $(this).closest("tr").remove();
        calDetail();

    }

    function AddRows() {
        var ctr = $('#items').val();
        var prodtype = $('.prodtype').val();
        var ms = $('.ms').val();
        var hide_check = "";
        if ($("#del_all").prop("checked")) {
            hide_check = 0;
        } else {
            hide_check = 1;
        }

        var focusFld = ".focusFld_" + ctr;
        $.post('billentry_add.php', {ctr: ctr, hide: hide_check, prodtype: prodtype, ms: ms}, function (data) {
            $(data).appendTo('.tbody');
            ctr++;
            $('#items').val(ctr);
            $(focusFld).focus();
        });
    }



});