public ActionResult RemittanceNoIncreement(HORemit model)
        {
            try
            {
                model.BranchCode = Session["BranchCode"].ToString();
                var    remitNo     = _hoRemitService.All().Where(x => x.BranchCode == model.BranchCode).LastOrDefault();
                int    rtNo        = Convert.ToInt32(remitNo.RemitNo);
                string RemitNoNo   = (rtNo + 1).ToString();
                string HORemitNoNo = "";
                if (RemitNoNo.Length > 7)
                {
                    HORemitNoNo = RemitNoNo.ToString();
                }
                else
                {
                    HORemitNoNo = "0" + RemitNoNo.ToString();
                }

                return(Json(HORemitNoNo, JsonRequestBehavior.AllowGet));
            }
            catch (Exception)
            {
                return(Json("0", JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult UpdateHOR(HORemit hoRemit)
        {
            RBACUser rUser = new RBACUser(Session["UserName"].ToString());

            if (!rUser.HasPermission("Remittance_Update"))
            {
                return(Json("U", JsonRequestBehavior.AllowGet));
            }
            List <BankOperationVModel> CashOPVM = new List <BankOperationVModel>();
            var gset = _gsetService.All().LastOrDefault();

            try
            {
                hoRemit.BranchCode = Session["BranchCode"].ToString();
                hoRemit.FinYear    = Session["FinYear"].ToString();
                hoRemit.bankAccode = Session["BankAccode"].ToString();


                using (var transaction = new TransactionScope())
                {
                    try
                    {
                        _hoRemitService.Update(hoRemit);
                        _hoRemitService.Save();

                        //Delete to provition
                        // var entryNo = Convert.ToInt64(hoRemit.VoucherNo.Substring(2, 8)).ToString().PadLeft(8, '0');
                        var entryNo = hoRemit.RemitNo;
                        LoadDropDown.journalVoucherRemoval("RT", entryNo, hoRemit.VoucherNo, hoRemit.FinYear);

                        //Insert to provision
                        LoadDropDown.journalVoucherSave("RT", "I", hoRemit.RemitNo, hoRemit.VoucherNo, hoRemit.FinYear, "01", hoRemit.BranchCode, hoRemit.RemitDate, gset.GCA_HO, Session["UserName"].ToString());
                        TransactionLogService.SaveTransactionLog(_transactionLogService, "HORemittance", "Update", hoRemit.RemitNo, User.Identity.Name);
                        CashOPVM = GetAllRemittances(hoRemit.RemitDate, hoRemit.BranchCode, hoRemit.bankAccode);
                        transaction.Complete();
                    }
                    catch (Exception)
                    {
                        transaction.Dispose();
                    }
                }
                return(Json(CashOPVM, JsonRequestBehavior.AllowGet));
            }
            catch (Exception)
            {
                return(Json("0", JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult SaveHOR(HORemit hoRemit)
        {
            RBACUser rUser = new RBACUser(Session["UserName"].ToString());

            if (!rUser.HasPermission("Remittance_Insert"))
            {
                return(Json("X", JsonRequestBehavior.AllowGet));
            }
            List <BankOperationVModel> CashOPVM = new List <BankOperationVModel>();
            var gset = _gsetService.All().LastOrDefault();

            try
            {
                var IfExit = _hoRemitService.All().Where(x => x.RemitNo == hoRemit.RemitNo).FirstOrDefault();
                if (IfExit == null)
                {
                    hoRemit.BranchCode = Session["BranchCode"].ToString();
                    hoRemit.FinYear    = Session["FinYear"].ToString();
                    hoRemit.bankAccode = Session["BankAccode"].ToString();


                    var openBal  = GetOpenBal(hoRemit.RemitDate);
                    var rcecBal  = GetAllRemittances(hoRemit.RemitDate, hoRemit.BranchCode, hoRemit.bankAccode).Sum(x => x.Amount);
                    var payTotal = GetAllPayment(hoRemit.RemitDate, hoRemit.BranchCode, hoRemit.bankAccode).Sum(x => x.Amount);
                    var closBal  = openBal + rcecBal - payTotal;


                    BankOperation bankOperation  = new BankOperation(hoRemit.RemitDate, openBal, hoRemit.Amount, 0.0, closBal, hoRemit.BranchCode, hoRemit.FinYear, false, hoRemit.bankAccode);
                    var           isAlreadySaved = _bankOperationService.All().ToList().FirstOrDefault(x => x.TrDate.ToString("MM-dd-yyyy") == hoRemit.RemitDate.ToString("MM-dd-yyyy") && x.BranchCode == hoRemit.BranchCode && x.bankAccode == hoRemit.bankAccode);

                    if (isAlreadySaved == null)
                    {
                        using (var transaction = new TransactionScope())
                        {
                            try
                            {
                                _bankOperationService.Add(bankOperation);
                                _bankOperationService.Save();
                                _hoRemitService.Add(hoRemit);
                                _hoRemitService.Save();
                                LoadDropDown.journalVoucherSave("RT", "I", hoRemit.RemitNo, hoRemit.VoucherNo, hoRemit.FinYear, "01", hoRemit.BranchCode, hoRemit.RemitDate, gset.GCA_HO, Session["UserName"].ToString());
                                TransactionLogService.SaveTransactionLog(_transactionLogService, "HORemittance", "Save", hoRemit.RemitNo, User.Identity.Name);
                                CashOPVM = GetAllRemittances(hoRemit.RemitDate, hoRemit.BranchCode, hoRemit.bankAccode);
                                transaction.Complete();
                            }
                            catch (Exception)
                            {
                                transaction.Dispose();
                                return(Json("0", JsonRequestBehavior.AllowGet));
                            }
                        }

                        return(Json(CashOPVM, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        var rcecBals = GetAllRemittances(hoRemit.RemitDate, hoRemit.BranchCode, hoRemit.bankAccode).Sum(x => x.Amount);
                        isAlreadySaved.RecTotal = rcecBals + hoRemit.Amount;
                        isAlreadySaved.CloseBal = isAlreadySaved.OpenBal + isAlreadySaved.RecTotal - isAlreadySaved.PayTotal;
                        using (var transaction = new TransactionScope())
                        {
                            try
                            {
                                _bankOperationService.Update(isAlreadySaved);
                                _bankOperationService.Save();
                                _hoRemitService.Add(hoRemit);
                                _hoRemitService.Save();
                                LoadDropDown.journalVoucherSave("RT", "I", hoRemit.RemitNo, hoRemit.VoucherNo, hoRemit.FinYear, "01", hoRemit.BranchCode, hoRemit.RemitDate, gset.GCA_HO, Session["UserName"].ToString());
                                var sysSet = _sysSetService.All().FirstOrDefault();
                                if (sysSet.CashRule == "O")
                                {
                                    LoadDropDown.BankRecalculate(hoRemit.RemitDate, Convert.ToDecimal(hoRemit.Amount), Session["ProjCode"].ToString(), hoRemit.BranchCode, hoRemit.FinYear, hoRemit.bankAccode);
                                }
                                TransactionLogService.SaveTransactionLog(_transactionLogService, "HORemittance", "Save", hoRemit.RemitNo, User.Identity.Name);
                                CashOPVM = GetAllRemittances(hoRemit.RemitDate, hoRemit.BranchCode, hoRemit.bankAccode);
                                transaction.Complete();
                            }
                            catch (Exception)
                            {
                                transaction.Dispose();
                                return(Json("0", JsonRequestBehavior.AllowGet));
                            }
                        }

                        return(Json(CashOPVM, JsonRequestBehavior.AllowGet));
                    }
                }
                else
                {
                    return(Json("1", JsonRequestBehavior.AllowGet));
                }
            }

            catch (Exception)
            {
                return(Json("0", JsonRequestBehavior.AllowGet));
            }
        }