public static bool Insert_PaymentTaxDetail(List <PaymentReceiptTaxDetailVM> modelDetail, string DealerCode, ref string msg)
        {
            // var code = "MCM01";
            //SysFunction Sys = new SysFunction();
            //SysFunction sys = new SysFunction();



            try
            {
                if (modelDetail != null)
                {
                    foreach (var item in modelDetail)
                    {
                        SqlParameter[] PmtRecTaxDetail_param =
                        {
                            /*0*/ new SqlParameter("@DealerCode",  DealerCode),
                            /*1*/ new SqlParameter("@ReceiptNo",   strAutoCode),
                            /*2*/ new SqlParameter("@ReceiptHead", item.ReceiptHead),
                            /*3*/ new SqlParameter("@AccountCode", item.AccountCode),
                            /*4*/ new SqlParameter("@Amount",      SysFunction.CustomCDBL(item.Amount)),
                            /*5*/ new SqlParameter("@TaxID",       item.TaxID),
                            /*6*/ new SqlParameter("@TaxPerc",     SysFunction.CustomCDBL(item.TaxPerc)),
                        };


                        if (sysfun.ExecuteSP_NonQuery("sp_W2_PaymentReceipt_TaxDetail_Insert", PmtRecTaxDetail_param, Trans) == true)
                        {
                            IsSaved = true;
                        }
                    }
                    ObjTrans.CommittTransaction(ref Trans);
                    IsSaved = true;
                }
                else
                {
                    if (Trans.Connection != null)
                    {
                        ObjTrans.CommittTransaction(ref Trans);
                    }

                    IsSaved = true;
                }
            }
            catch (Exception ex)
            {
                ObjTrans.RollBackTransaction(ref Trans);
                msg = ex.Message;
            }



            //  ObjTrans.CommittTransaction(ref Trans);

            return(IsSaved);
        }
        public static bool Insert_ProdFeature(List <ProdReceiptDetailVM> model2, string dealerCode, ref string msg)
        {
            int count = 0;

            string[] a, b;
            try
            {
                foreach (var item in model2)
                {
                    if (count >= 1 || item.BrandCode != null)
                    {
                        SqlParameter[] param3 =
                        {
                            new SqlParameter("@DealerCode", dealerCode),                      //0
                            new SqlParameter("@BookRefNo", strAutoCode),                      //1
                            new SqlParameter("@BrandCode", item.BrandCode),                   //2
                            new SqlParameter("@ProdCode", item.ProdCode.Trim()),              //3
                            new SqlParameter("@VersionCode", item.VersionCode),               //4
                            new SqlParameter("@ColorCode1", item.ColorCode),                  //5
                            new SqlParameter("@FID", item.FCode),                             //6
                            new SqlParameter("@FPrice", SysFunction.CustomCDBL(item.FPrice)), //7
                        };

                        if (sysfun.ExecuteSP_NonQuery("SP_Insert_ProdRecFeature", param3, Trans) == true)
                        {
                            IsSaved = true;
                        }
                        else
                        {
                            ObjTrans.RollBackTransaction(ref Trans);
                            IsSaved = false;
                        }
                    }
                    count++;
                }

                //ObjTrans.CommittTransaction(ref Trans);
            }
            catch (Exception ex)
            {
                ObjTrans.RollBackTransaction(ref Trans);
                msg     = ex.Message;
                IsSaved = false;
            }

            return(IsSaved);
        }
        public static bool Insert_PaymentDetail(List <PaymentReceiptDetailVM> modelDetail, string DealerCode, ref string msg)
        {
            // var code = "MCM01";
            //SysFunction Sys = new SysFunction();
            //SysFunction sys = new SysFunction();



            try
            {
                if (modelDetail != null)
                {
                    foreach (var item in modelDetail)
                    {
                        SqlParameter[] PmtRecDetail_param =
                        {
                            /*0*/ new SqlParameter("@DealerCode",  DealerCode),
                            /*1*/ new SqlParameter("@ReceiptNo",   strAutoCode),
                            /*2*/ new SqlParameter("@InvoiceType", item.InvoiceType),
                            /*3*/ new SqlParameter("@InvoiceNo",   item.InvoiceNo),
                            /*4*/ new SqlParameter("@InvoiceDate", sysfun.SaveDate(item.InvoiceDate)),
                            /*5*/ new SqlParameter("@InvAmount",   SysFunction.CustomCDBL(item.InvAmount)),
                            /*6*/ new SqlParameter("@OutStAmount", SysFunction.CustomCDBL(item.OutStAmount)),
                            /*7*/ new SqlParameter("@AdjAmount",   SysFunction.CustomCDBL(item.AdjAmount))
                        };


                        if (sysfun.ExecuteSP_NonQuery("sp_W2_PaymentReceipt_Detail_Insert", PmtRecDetail_param, Trans) == true)
                        {
                            if (item.InvoiceType == "CSI")
                            {
                                string IQuery = "Update VehicleSaleMaster set PaidAmount= isnull(PaidAmount,0) +'" + SysFunction.CustomCDBL(item.AdjAmount) + "' " +
                                                "Where DealerCode='" + DealerCode + "' and TransCode='" + item.InvoiceNo + "'";
                                sysfun.ExecuteQuery(IQuery, Trans);
                            }
                            else if (item.InvoiceType == "ASC")
                            {
                                string IQuery = "Update ReceiptMaster set PaidC= PaidC +'" + SysFunction.CustomCDBL(item.AdjAmount) + "' " +
                                                "Where DealerCode='" + DealerCode + "' and ReceiptNo='" + item.InvoiceNo + "'";
                                sysfun.ExecuteQuery(IQuery, Trans);
                            }

                            IsSaved = true;
                        }
                    }
                }
                else
                {
                    ObjTrans.CommittTransaction(ref Trans);
                    IsSaved = true;
                }
            }
            catch (Exception ex)
            {
                ObjTrans.RollBackTransaction(ref Trans);
                msg = ex.Message;
            }



            //  ObjTrans.CommittTransaction(ref Trans);

            return(IsSaved);
        }
        public static bool Insert_PaymentReceiptMaster(PaymentReceiptVM model, ref string msg)
        {
            try
            {
                if (model.ReceiptNo == "" || model.ReceiptNo == null)
                {
                    strAutoCode = sysfun.AutoGen("PaymentReceiptMaster", "ReceiptNo", DateTime.Parse(DateTime.Now.ToShortDateString()).ToString("dd/MM/yyyy"), model.DealerCode);
                }
                else
                {
                    strAutoCode = model.ReceiptNo;
                }
                SqlParameter[] PmtRecMaster_param =
                {
                    /*0*/ new SqlParameter("@DealerCode",             model.DealerCode),                                                              /*1*/ new SqlParameter("@ReceiptNo", strAutoCode),
                    /*2*/ new SqlParameter("@ReceiptDate",            sysfun.SaveDate(model.ReceiptDate)),                                            /*3*/ new SqlParameter("@InvoiceType", model.InvoiceType),
                    /*4*/ new SqlParameter("@CusCode",                model.CusCode),                                                                 /*5*/ new SqlParameter("@InsCompCode", model.InsCompCode),
                    /*6*/ new SqlParameter("@BranchCode",             model.Branch),                                                                  /*7*/ new SqlParameter("@InsCusFlag", "N"),
                    /*8*/ new SqlParameter("@Remarks",                model.Remarks),                                                                 /*9*/ new SqlParameter("@PayModeCode", model.PayModeCode),
                    /*10*/ new SqlParameter("@InsNo",                 model.InsNo),                                                                   /*11*/ new SqlParameter("@InsDate", sysfun.SaveDate(model.InsDate)),
                    /*12*/ new SqlParameter("@AmountPaid",            SysFunction.CustomCDBL(model.AmountPaid)),                                      /*13*/ new SqlParameter("@BankCode", model.BankCode),
                    /*14*/ new SqlParameter("@Branch",                model.Branch),                                                                  /*15*/ new SqlParameter("@AdvanceAmount", SqlDbType.Float),
                    /*16*/ new SqlParameter("@InvTotal",              SysFunction.CustomCDBL(model.InvTotal)),                                        /*17*/ new SqlParameter("@OutSTTotal", SysFunction.CustomCDBL(model.OutSTTotal)),
                    /*18*/ new SqlParameter("@InvAdjTotal",           SysFunction.CustomCDBL(model.InvAdjTotal)),                                     /*19*/ new SqlParameter("@DelFlag", "N"),
                    /*20*/ new SqlParameter("@UpdUser",               AuthBase.UserId),                                                               /*21*/ new SqlParameter("@UpdTerm", General.CurrentIP),
                    /*22*/ new SqlParameter("@VoucherNo",             ""),                                                                            /*23*/ new SqlParameter("@VoucherFlag", "N"),
                    /*24*/ new SqlParameter("@AdvancePaid",           SqlDbType.Decimal),                                                             /*25*/ new SqlParameter("@TransType", model.TransType),
                    /*26*/ new SqlParameter("@IsAdjustAdvance",       model.IsAdjustAdvance),
                    /*27*/ new SqlParameter("@AdvanceReceiptNo",      SqlDbType.Char,                                                                                                        8),
                    /*28*/ new SqlParameter("@AdvanceAdjustedAmount", SqlDbType.Float),
                    /*29*/ new SqlParameter("@AdvanceBalanceAmount",  SqlDbType.Float),
                    /*30*/ new SqlParameter("@DocumentNo",            "")
                };
                if (model.TransType == "Advance")
                {
                    PmtRecMaster_param[15].Value = SysFunction.CustomCDBL(model.AmountPaid);
                    PmtRecMaster_param[16].Value = "0";
                    PmtRecMaster_param[17].Value = "0";
                    PmtRecMaster_param[29].Value = SysFunction.CustomCDBL(model.AmountPaid);
                }
                strAdvBalAmt = SysFunction.CustomCDBL(sysfun.GetStringValuesAgainstCodes("ReceiptNo", model.AdvanceReceiptNo, "AdvanceBalanceAmount", "PaymentReceiptMaster", "", model.DealerCode));
                if (SysFunction.CustomCDBL(model.AdvanceAmount) > strAdvBalAmt)
                {
                    msg = "Advance Amount can not be greater then Balance amount";
                    return(false);
                }
                if (model.TransType == "Advance")
                {
                    PmtRecMaster_param[26].Value = "Y";
                    PmtRecMaster_param[27].Value = (object)DBNull.Value;
                    PmtRecMaster_param[28].Value = SysFunction.CustomCDBL("0");
                    PmtRecMaster_param[29].Value = SysFunction.CustomCDBL(model.AmountPaid);
                }
                else if (model.IsAdjustAdvance == "Y" && model.TransType != "Advance")
                {
                    PmtRecMaster_param[26].Value = "Y";
                    PmtRecMaster_param[27].Value = model.AdvanceReceiptNo;
                    PmtRecMaster_param[28].Value = SysFunction.CustomCDBL(model.AdvanceAmount);
                    PmtRecMaster_param[29].Value = strAdvBalAmt - SysFunction.CustomCDBL(model.AdvanceAmount);
                }
                else
                {
                    PmtRecMaster_param[26].Value = "N";
                    PmtRecMaster_param[27].Value = (object)DBNull.Value;
                    PmtRecMaster_param[28].Value = (object)DBNull.Value;
                    PmtRecMaster_param[29].Value = (object)DBNull.Value;
                }
                if (ObjTrans.BeginTransaction(ref Trans) == true)
                {
                    if (sysfun.ExecuteSP_NonQuery("sp_W2_PaymentReceipt_Master_Insert", PmtRecMaster_param, Trans))
                    {
                        if (model.IsAdjustAdvance == "Y")
                        {
                            SqlParameter[] UpdateAdvance_param =
                            {
                                /*0*/ new SqlParameter("@DealerCode",            model.DealerCode),
                                /*1*/ new SqlParameter("@ReceiptNo",             model.AdvanceReceiptNo),
                                /*2*/ new SqlParameter("@AdvanceReceiptNo",      strAutoCode),
                                /*3*/ new SqlParameter("@AdvanceAdjustedAmount", SysFunction.CustomCDBL(model.AdvanceAmount)),
                                /*3*/ new SqlParameter("@AdvanceBalAmount",      SqlDbType.Float)
                            };


                            UpdateAdvance_param[4].Value = SysFunction.CustomCDBL(strAdvBalAmt) - SysFunction.CustomCDBL(model.AdvanceAmount);
                            sysfun.ExecuteSP_NonQuery("[sp_PaymentReceiptMaster_UpdateOnAdvance]", UpdateAdvance_param, Trans);
                        }
                        IsSaved = true;
                    }
                }
            }
            catch (Exception ex)
            {
                ObjTrans.RollBackTransaction(ref Trans);
                msg = ex.Message;
            }

            return(IsSaved);
        }