public IEnumerable <tbl_InvestmentCodes> InvestmentsCodes(Esoft_WebEntities db)
        {
            var returnList = new List <tbl_InvestmentCodes>();
            var data       = db.tbl_InvestmentCodes.OrderBy(p => p.InvestmentCode).ToList();

            foreach (var item in data)
            {
                item.InvestmentName = item.InvestmentCode.Trim() + ": " + item.InvestmentName.Trim();
                returnList.Add(item);
            }
            return(returnList.ToList());
        }
        public List <tbl_accounttypes> SavingsAccountTypes(Esoft_WebEntities db)
        {
            var returnList = new List <tbl_accounttypes>();

            var data = db.tbl_accounttypes.OrderBy(p => p.act_code).ToList();

            foreach (var item in data)
            {
                item.category = item.act_code.Trim() + ": " + item.category.Trim();
                returnList.Add(item);
            }
            return(returnList.ToList());
        }
        public IEnumerable <tbl_LoanCodes> GetLoanCodes(Esoft_WebEntities db, bool combineName = true)
        {
            var returnList = new List <tbl_LoanCodes>();
            var data       = db.tbl_LoanCodes.OrderBy(p => p.LoanCode).ToList();

            foreach (var item in data)
            {
                if (combineName)
                {
                    item.LoanName = item.LoanCode.Trim() + ": " + item.LoanName.Trim();
                }
                returnList.Add(item);
            }
            return(returnList.ToList());
        }
Пример #4
0
        // Post Teller Product Repayments
        public bool PostProductRepayment(TellerProductRepaymentsView custDetails, List <RepaymentView> repayments, string tellerLoginCode, string deviceInfo)
        {
            bool transactionPosted = false;

            string tellerAccount = GetTellerGlAccount(tellerLoginCode);

            double transactionAmount = repayments.Where(x => x.CustomerNo == custDetails.CustomerNo).Sum(x => x.Amount);

            Validate_Teller_Transaction("PRODUCTREPAYMENTS", tellerAccount, transactionAmount);

            if (repayments == null || repayments.Count == 0 || repayments.Sum(x => x.Amount) == 0)
            {
                _validationDictionary.AddError("customerDetails.CustomerNo", " Nothing To Post ");
            }

            string   m_transactionid = ValueConverters.RandomString(10);
            DateTime trdatenow       = DateTime.Now;

            string trdescpt     = "Product Repayments Cash Deposit From Mobile App";
            string glaccount_db = tellerAccount;
            string glaccount_cr = string.Empty;
            string docid        = "MAPP";
            string referenceNo  = transactionsEngine.Generate_PostReference(docid);
            bool   post_comm_to_customerBranch = true;// transactionsEngine.Get_Other_Settings("POST_TELLER_LOAN_INCOME_TO_CUSTOMER_BRANCH");
            string defaultBranch = "99";
            List <PostTransactionsViewModel> translist = new List <PostTransactionsViewModel>();

            InvestmentsCodesManager investMgr       = new InvestmentsCodesManager();
            LoanProductsManager     loanProductsMgr = new LoanProductsManager();


            Esoft_WebEntities db = new Esoft_WebEntities();

            List <CustomerBalances> customerBalances = new List <CustomerBalances>();

            customerBalances = customerManager.GetCustomerBalances(custDetails.CustomerNo, DateTime.Now, customerBalances);

            string income_branch = defaultBranch;

            if (post_comm_to_customerBranch)
            {
                income_branch = db.tbl_Customer.FirstOrDefault(x => x.CustomerNo == custDetails.CustomerNo).Branch;
            }
            var investmentCodes = investMgr.InvestmentsCodes(db).ToList();
            var loanCodes       = loanProductsMgr.GetLoanCodes(db).ToList();

            foreach (var repayment in repayments.Where(x => x.CustomerNo == custDetails.CustomerNo))
            {
                switch (repayment.Ledger)
                {
                case "SAVINGS":
                    trdescpt = String.Format("Cash Deposits Mobile App: {0}", referenceNo);

                    CustomerAccountsView customerDetails = customerAccountsManager.GetAccountByAccountNumber(repayment.ProductCode);

                    glaccount_cr = customerDetails.GlMemSav;

                    transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, repayment.ProductCode, trdatenow, trdescpt,
                                                                    docid, referenceNo, repayment.Amount, 0, income_branch, glaccount_db, glaccount_cr, tellerAccount, tellerLoginCode);

                    transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, repayment.ProductCode, trdatenow, trdescpt,
                                                                    docid, referenceNo, 0, repayment.Amount, income_branch, glaccount_cr, glaccount_db, tellerAccount, tellerLoginCode);

                    transactionsEngine.Generate_Savings_Transactions(translist, m_transactionid, repayment.ProductCode, trdatenow, trdescpt, docid, referenceNo,
                                                                     repayment.Amount, 0, income_branch, glaccount_cr, glaccount_db, repayment.CustomerNo, glaccount_cr, string.Empty, tellerLoginCode);

                    LogMobileTrail(new MobileOperatorTrail()
                    {
                        ReferenceNo     = referenceNo,
                        Ledger          = "S",
                        CustomerNo      = custDetails.CustomerNo,
                        AccountNo       = repayment.ProductCode,
                        TransactionDate = trdatenow,
                        Description     = trdescpt,
                        Amount          = ValueConverters.ConvertDoubleToDecimal(repayment.Amount),
                        DeviceInfo      = deviceInfo ?? String.Empty,
                        LoginCode       = tellerLoginCode,
                    });

                    break;

                case "INVESTMENTS":
                    trdescpt = String.Format("Cash Deposits Mobile App: {0}", referenceNo);

                    glaccount_cr = investmentCodes.FirstOrDefault(x => x.InvestmentCode == repayment.ProductCode).PrincipalAccount.ToString();

                    transactionsEngine.Generate_Shares_Transactions(translist, m_transactionid, repayment.CustomerNo, trdatenow, trdescpt, docid, referenceNo, 0, repayment.Amount,
                                                                    income_branch, glaccount_db, glaccount_cr, repayment.ProductCode, tellerLoginCode);

                    transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, repayment.CustomerNo, trdatenow, trdescpt, docid, referenceNo,
                                                                    0, repayment.Amount, income_branch, glaccount_cr, tellerAccount, repayment.CustomerNo, tellerLoginCode);

                    // final Debit to Teller Account
                    transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, custDetails.CustomerNo, trdatenow, trdescpt, docid, referenceNo,
                                                                    repayment.Amount, 0, income_branch, tellerAccount, glaccount_cr, custDetails.CustomerNo, tellerLoginCode);


                    LogMobileTrail(new MobileOperatorTrail()
                    {
                        ReferenceNo     = referenceNo,
                        Ledger          = "I",
                        CustomerNo      = custDetails.CustomerNo,
                        AccountNo       = repayment.ProductCode,
                        TransactionDate = trdatenow,
                        Description     = trdescpt,
                        Amount          = ValueConverters.ConvertDoubleToDecimal(repayment.Amount),
                        DeviceInfo      = deviceInfo ?? String.Empty,
                        LoginCode       = tellerLoginCode,
                    });

                    break;

                case "LOANS":
                    trdescpt = String.Format("Loan Repayment Mobile App: {0}", referenceNo);
                    var loanProduct = loanCodes.FirstOrDefault(x => x.LoanCode == repayment.ProductCode);
                    loanProductsMgr.Distribute_LoanRepayment(repayment, customerBalances, loanProduct, true);
                    glaccount_cr = loanProduct.PrincipalAccount;

                    loanProductsMgr.GenerateLoanRepaymentStatements(transactionsEngine, translist, m_transactionid, repayment, loanProduct, trdatenow, trdescpt, docid, referenceNo, 0, 0,
                                                                    income_branch, tellerAccount, "1", "", false, tellerLoginCode, db);

                    // final Debit to Teller Account
                    transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, custDetails.CustomerNo, trdatenow, trdescpt, docid, referenceNo,
                                                                    repayment.Amount, 0, income_branch, tellerAccount, glaccount_cr, custDetails.CustomerNo, tellerLoginCode);


                    LogMobileTrail(new MobileOperatorTrail()
                    {
                        ReferenceNo     = referenceNo,
                        Ledger          = "L",
                        CustomerNo      = custDetails.CustomerNo,
                        AccountNo       = repayment.ProductCode,
                        TransactionDate = trdatenow,
                        Description     = trdescpt,
                        Amount          = ValueConverters.ConvertDoubleToDecimal(repayment.Amount),
                        DeviceInfo      = deviceInfo ?? String.Empty,
                        LoginCode       = tellerLoginCode,
                    });

                    break;

                default:
                    break;
                }
            }



            string result = transactionsEngine.Post_Transactions(translist, m_transactionid, false, false);

            if (result == "Transactions Was Updated Successfully ")
            {
                transactionPosted = true;
            }
            else
            {
                _validationDictionary.AddError("", result);
            }

            return(transactionPosted);
        }
Пример #5
0
 public TellerManager()
 {
     db = new Esoft_WebEntities();
 }
Пример #6
0
 public CustomerController()
 {
     mainDb = new Esoft_WebEntities();
     customerAccountsManager = new CustomerAccountsManager();
 }
 public AtmCardsManager()
 {
     mainDb = new Esoft_WebEntities();
     customerAccountsManager = new CustomerAccountsManager();
 }
 public SavingsProductManager()
 {
     mainDb = new Esoft_WebEntities();
 }
 public CompanyManager()
 {
     mainDb = new Esoft_WebEntities();
 }
 public TellerController()
 {
     mainDb        = new Esoft_WebEntities();
     tellerManager = new TellerManager(new ModelStateWrapper(this.ModelState));
 }
        public List <PostTransactionsViewModel> GenerateLoanRepaymentStatements(PostTransactions transactionsEngine, List <PostTransactionsViewModel> translist,
                                                                                string m_transactionid, RepaymentView repview, tbl_LoanCodes loanproduct, DateTime m_TransactionDate, string m_Narration,
                                                                                string m_Docid, string m_ReferenceNo, double m_DebitAmount,
                                                                                double m_CreditAmount, string m_BranchCode, string m_GlDebit, string transaction_groupid, string m_LoanReferenceNo,
                                                                                bool raiseDebit, string tellerLoginCode, Esoft_WebEntities maindb = null, bool checkOffPosting = false)
        {
            string income_Account = string.Empty, accrued_Account = string.Empty;

            if (repview.LoanPrincipal > 0)
            {
                transactionsEngine.Generate_Loans_Transactions(translist, m_transactionid, repview.CustomerNo, m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo,
                                                               0, repview.LoanPrincipal, m_BranchCode, m_GlDebit, loanproduct.PrincipalAccount, repview.ProductCode, 1, transaction_groupid, m_LoanReferenceNo, tellerLoginCode, maindb);

                transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, (checkOffPosting ? repview.ProductCode : repview.CustomerNo), m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo, 0,
                                                                repview.LoanPrincipal, m_BranchCode, loanproduct.PrincipalAccount, m_GlDebit, repview.CustomerNo, tellerLoginCode);
                if (checkOffPosting)
                {
                    transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, (checkOffPosting ? repview.ProductCode : repview.CustomerNo), m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo, repview.LoanPrincipal, 0,
                                                                    m_BranchCode, m_GlDebit, loanproduct.PrincipalAccount, repview.CustomerNo, tellerLoginCode);
                }
            }
            if (repview.LoanInt > 0)
            {
                transactionsEngine.Generate_Loans_Transactions(translist, m_transactionid, repview.CustomerNo, m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo,
                                                               0, repview.LoanInt, m_BranchCode, m_GlDebit, loanproduct.InterestControlAccount, repview.ProductCode, 2, transaction_groupid, m_LoanReferenceNo, tellerLoginCode, maindb);

                transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, (checkOffPosting ? repview.ProductCode : repview.CustomerNo), m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo, 0,
                                                                repview.LoanInt, m_BranchCode, loanproduct.InterestControlAccount, m_GlDebit, repview.CustomerNo, tellerLoginCode);

                if (checkOffPosting)
                {
                    transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, (checkOffPosting ? repview.ProductCode : repview.CustomerNo), m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo, repview.LoanInt,
                                                                    0, m_BranchCode, m_GlDebit, loanproduct.InterestControlAccount, repview.CustomerNo, tellerLoginCode);
                }
                income_Account  = loanproduct.InterestIncomeAccount;
                accrued_Account = loanproduct.InterestAccruedAccount;

                RaiseIncomeContraEntries(transactionsEngine, translist, m_TransactionDate, m_transactionid, repview.CustomerNo, m_Narration, m_Docid, m_ReferenceNo,
                                         repview.LoanInt, accrued_Account, income_Account, m_BranchCode, tellerLoginCode, repview.ProductCode, checkOffPosting);
            }
            if (repview.LoanIns > 0)
            {
                transactionsEngine.Generate_Loans_Transactions(translist, m_transactionid, repview.CustomerNo, m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo,
                                                               0, repview.LoanIns, m_BranchCode, m_GlDebit, loanproduct.InsuranceControlAccount, repview.ProductCode, 3, transaction_groupid, m_LoanReferenceNo, tellerLoginCode, maindb);

                transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, (checkOffPosting ? repview.ProductCode : repview.CustomerNo), m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo, 0,
                                                                repview.LoanIns, m_BranchCode, loanproduct.InsuranceControlAccount, m_GlDebit, repview.CustomerNo, tellerLoginCode);
                if (checkOffPosting)
                {
                    transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, (checkOffPosting ? repview.ProductCode : repview.CustomerNo), m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo, repview.LoanIns,
                                                                    0, m_BranchCode, m_GlDebit, loanproduct.InsuranceControlAccount, repview.CustomerNo, tellerLoginCode);
                }
                income_Account  = loanproduct.InsuranceIncomeAccount;
                accrued_Account = loanproduct.InsuranceAccruedAccount;
                RaiseIncomeContraEntries(transactionsEngine, translist, m_TransactionDate, m_transactionid, repview.CustomerNo, m_Narration, m_Docid, m_ReferenceNo,
                                         repview.LoanIns, accrued_Account, income_Account, m_BranchCode, tellerLoginCode, repview.ProductCode, checkOffPosting);
            }
            if (repview.LoanApp > 0)
            {
                transactionsEngine.Generate_Loans_Transactions(translist, m_transactionid, repview.CustomerNo, m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo,
                                                               0, repview.LoanApp, m_BranchCode, m_GlDebit, loanproduct.AppraisalFeeControlAccount, repview.ProductCode, 4, transaction_groupid, m_LoanReferenceNo, tellerLoginCode, maindb);

                transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, (checkOffPosting ? repview.ProductCode : repview.CustomerNo), m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo, 0,
                                                                repview.LoanApp, m_BranchCode, loanproduct.AppraisalFeeControlAccount, m_GlDebit, repview.CustomerNo, tellerLoginCode);
                if (checkOffPosting)
                {
                    transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, (checkOffPosting ? repview.ProductCode : repview.CustomerNo), m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo, repview.LoanApp,
                                                                    0, m_BranchCode, m_GlDebit, loanproduct.AppraisalFeeControlAccount, repview.CustomerNo, tellerLoginCode);
                }

                income_Account  = loanproduct.AppraisalFeeIncomeAccount;
                accrued_Account = loanproduct.AppraisalFeeAccruedAccount;
                RaiseIncomeContraEntries(transactionsEngine, translist, m_TransactionDate, m_transactionid, repview.CustomerNo, m_Narration, m_Docid, m_ReferenceNo,
                                         repview.LoanApp, accrued_Account, income_Account, m_BranchCode, tellerLoginCode, repview.ProductCode, checkOffPosting);
            }
            if (repview.LoanPen > 0)
            {
                transactionsEngine.Generate_Loans_Transactions(translist, m_transactionid, repview.CustomerNo, m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo,
                                                               0, repview.LoanPen, m_BranchCode, m_GlDebit, loanproduct.PenaltyControlAccount, repview.ProductCode, 4, transaction_groupid, m_LoanReferenceNo, tellerLoginCode, maindb);

                transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, (checkOffPosting ? repview.ProductCode : repview.CustomerNo), m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo, 0,
                                                                repview.LoanPen, m_BranchCode, loanproduct.PenaltyControlAccount, m_GlDebit, repview.CustomerNo, tellerLoginCode);
                if (checkOffPosting)
                {
                    transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, (checkOffPosting ? repview.ProductCode : repview.CustomerNo), m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo, repview.LoanPen,
                                                                    0, m_BranchCode, m_GlDebit, loanproduct.PenaltyControlAccount, repview.CustomerNo, tellerLoginCode);
                }

                income_Account  = loanproduct.PenaltyIncomeAccount;
                accrued_Account = loanproduct.PenaltyAccruedAccount;
                RaiseIncomeContraEntries(transactionsEngine, translist, m_TransactionDate, m_transactionid, repview.CustomerNo, m_Narration, m_Docid, m_ReferenceNo,
                                         repview.LoanPen, accrued_Account, income_Account, m_BranchCode, tellerLoginCode, repview.ProductCode, checkOffPosting);
            }
            if (repview.loan_Levy > 0)
            {
                transactionsEngine.Generate_Loans_Transactions(translist, m_transactionid, (checkOffPosting ? repview.ProductCode : repview.CustomerNo), m_TransactionDate, "Levy " + m_Narration, m_Docid, m_ReferenceNo,
                                                               repview.loan_Levy, repview.loan_Levy, m_BranchCode, m_GlDebit, loanproduct.CashPayment_GlAccount, repview.ProductCode, 1, transaction_groupid, m_LoanReferenceNo, tellerLoginCode, maindb);

                transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, repview.CustomerNo, m_TransactionDate, "Levy " + m_Narration, m_Docid, m_ReferenceNo, 0,
                                                                repview.loan_Levy, m_BranchCode, loanproduct.CashPayment_GlAccount, m_GlDebit, repview.CustomerNo, tellerLoginCode);
            }
            if (raiseDebit == true && checkOffPosting == false)
            {
                repview.Amount = ValueConverters.ConvertNullToDouble(repview.loan_Levy) + ValueConverters.ConvertNullToDouble(repview.LoanApp) + ValueConverters.ConvertNullToDouble(repview.LoanIns) +
                                 ValueConverters.ConvertNullToDouble(repview.LoanPen) + ValueConverters.ConvertNullToDouble(repview.LoanInt) + ValueConverters.ConvertNullToDouble(repview.LoanPrincipal);

                transactionsEngine.Generate_Ledger_Transactions(translist, m_transactionid, (checkOffPosting ? repview.ProductCode : repview.CustomerNo), m_TransactionDate, m_Narration, m_Docid, m_ReferenceNo, repview.Amount,
                                                                0, m_BranchCode, m_GlDebit, "Product-Rep", repview.CustomerNo, tellerLoginCode);
            }
            else /* Raise Final Debit in Calling Module*/ } {