コード例 #1
0
        private LoanDetails GenerateLoanDetails()
        {
            var loanAmount  = _cashVoucher.Debit;
            var voucherNo   = _cashVoucher.VoucherNo;
            var voucherDate = MainController.LoggedUser.TransactionDate;
            var document    = new VoucherDocument(VoucherTypes.CV, voucherNo, voucherDate);

            var salaryAdvance = Account.FindByCode(_loanProduct.ProductCode);

            var loanDetails = new LoanDetails
            {
                ReleaseNo            = ModelController.Releases.MaxReleaseNumber() + 1,
                LoanAmount           = loanAmount,
                LoanTerms            = 1,
                TermsMode            = "Month",
                GrantedDate          = document.Date,
                MaturityDate         = document.Date.AddMonths(1),
                CutOffDate           = document.Date.AddDays(7),
                Payment              = loanAmount,
                ModeOfPayment        = ModeOfPayments.Monthly,
                InterestRate         = _loanProduct.AnnualInterestRate / 12,
                InterestAmount       = loanAmount * (_loanProduct.AnnualInterestRate / 12),
                InterestAmortization = loanAmount * (_loanProduct.AnnualInterestRate / 12),
                DateReleased         = document.Date
            };

            loanDetails.SetMember(_member);
            loanDetails.SetAccount(salaryAdvance);
            loanDetails.SetDocument(document);

            return(loanDetails);
        }
コード例 #2
0
        private void btnPost_Click(object sender, EventArgs e)
        {
            var loanAmount  = _cashVoucher.Debit;
            var voucherNo   = _cashVoucher.VoucherNo;
            var voucherDate = MainController.LoggedUser.TransactionDate;
            var document    = new VoucherDocument(VoucherTypes.CV, voucherNo, voucherDate);

            // is there already a loan product for salary advance?
            if (_loanProduct == null)
            {
                MessageWindow.ShowAlertMessage("No Loan Products found for Salary Advance.");
                return;
            }

            // does user enter a valid amount?
            if (loanAmount <= 0)
            {
                MessageWindow.ShowAlertMessage("Invalid amount!");
                return;
            }

            // does the voucher number been used?
            var collection = CashVoucher.WhereDocumentNumberIs(voucherNo);

            if (collection.Count > 0)
            {
                MessageWindow.ShowAlertMessage("CV No. already in use.");
                return;
            }

            try
            {
                // what is the account for salary advance?
                var salaryAdvance = Account.FindByCode(GlobalSettings.CodeOfSalaryAdvance);

                var cashOnHandReceived = loanAmount;

                #region --- Finally add entry for the loan applied ---

                // what will be the loan details?
                var loanDetails = GenerateLoanDetails();

                _cashVoucher.SetMember(_member);
                _cashVoucher.SetAccount(salaryAdvance);
                _cashVoucher.SetDocument(document);
                _cashVoucher.Explanation = loanDetails.GenerateExplanation();
                _cashVoucher.LoanDetails = loanDetails;

                Result postResult = _cashVoucher.Create();
                if (!postResult.Success)
                {
                    CashVoucher.DeleteAll(document.Number);
                    MessageWindow.ShowAlertMessage(postResult.Message);
                    return;
                }

                #endregion

                #region --- Interest Charge ---

                var interest = new CashVoucher();
                interest.SetMember(_member);
                interest.SetAccount(Account.FindByCode(GlobalSettings.CodeOfMiscellaneousIncome));
                interest.SetDocument(document);
                interest.Credit = loanDetails.InterestAmount;
                postResult      = interest.Create();
                if (!postResult.Success)
                {
                    CashVoucher.DeleteAll(document.Number);
                    MessageWindow.ShowAlertMessage(postResult.Message);
                    return;
                }
                cashOnHandReceived -= interest.Credit;

                #endregion

                #region --- Add entries for Charges ---

                foreach (var charge in _loanProduct.LoanCharges)
                {
                    var entry = new CashVoucher();
                    entry.SetMember(_member);
                    entry.SetAccount(Account.FindByCode(charge.AccountCode));
                    entry.SetDocument(document);
                    entry.Credit = loanAmount * charge.Rate;

                    postResult = entry.Create();
                    if (postResult.Success)
                    {
                        cashOnHandReceived -= entry.Credit;
                        continue;
                    }

                    CashVoucher.DeleteAll(document.Number);
                    MessageWindow.ShowAlertMessage(postResult.Message);
                    return;
                }

                #endregion

                #region --- Add entry for Cash On Hand ---

                var net = new CashVoucher();
                net.SetMember(_member);
                net.SetAccount(Account.FindByCode(GlobalSettings.CodeOfCashOnHand));
                net.SetDocument(document);
                net.Credit        = cashOnHandReceived;
                net.Amount        = cashOnHandReceived;
                net.AmountInWords = Converter.AmountToWords(cashOnHandReceived);
                postResult        = net.Create();
                if (!postResult.Success)
                {
                    CashVoucher.DeleteAll(document.Number);
                    MessageWindow.ShowAlertMessage(postResult.Message);
                    return;
                }

                #endregion

                #region --- Voucher Log ---

                var voucherLog = new VoucherLog();
                voucherLog.Find("CV", _cashVoucher.VoucherNo);
                voucherLog.Date     = _cashVoucher.VoucherDate;
                voucherLog.Initials = MainController.LoggedUser.Initials;
                voucherLog.Save();

                #endregion

                MessageWindow.ShowNotifyMessage("Salary Advance created. Please check CV# " + voucherNo);
                DialogResult = true;
                Close();
            }
            catch (Exception exception)
            {
                MessageWindow.ShowAlertMessage(exception.Message);
            }
        }
コード例 #3
0
ファイル: LoanDetails.cs プロジェクト: mudasar/scco
 public virtual void SetDocument(VoucherDocument document)
 {
     DocumentType = document.Type.ToString();
     DocumentNo   = document.Number;
     DocumentDate = document.Date;
 }
コード例 #4
0
        private void Post()
        {
            var loanAmount  = _cashVoucher.Debit;
            var voucherNo   = _cashVoucher.VoucherNo;
            var voucherDate = MainController.LoggedUser.TransactionDate;
            var document    = new VoucherDocument(VoucherTypes.CV, voucherNo, voucherDate);

            // is there already a loan product for Go Negosyo?
            if (_loanProduct == null)
            {
                MessageWindow.ShowAlertMessage("No Loan Products found for Go Negosyo.");
                return;
            }

            // does user enter a valid amount?
            if (loanAmount <= 0)
            {
                MessageWindow.ShowAlertMessage("Invalid amount!");
                return;
            }

            // does the voucher number been used?
            var collection = CashVoucher.WhereDocumentNumberIs(voucherNo);

            if (collection.Count > 0)
            {
                MessageWindow.ShowAlertMessage("CV No. already in use.");
                return;
            }

            try
            {
                // what is the account for Go Negosyo?
                var goNegosyo = Account.FindByCode(GlobalSettings.CodeOfGoNegosyo);

                #region --- Finally add entry for the loan applied ---

                // what will be the loan details?
                var loanDetails = GenerateLoanDetails();

                _cashVoucher.SetMember(_member);
                _cashVoucher.SetAccount(goNegosyo);
                _cashVoucher.SetDocument(document);
                _cashVoucher.Explanation = loanDetails.GenerateExplanation();
                _cashVoucher.LoanDetails = loanDetails;

                Result postResult = _cashVoucher.Create();
                if (!postResult.Success)
                {
                    CashVoucher.DeleteAll(document.Number);
                    MessageWindow.ShowAlertMessage(postResult.Message);
                    return;
                }

                #endregion

                // NO CHARGES

                #region --- Add entry for Accounts Payable Merchandise ---

                var net = new CashVoucher();
                net.SetMember(_member);
                net.SetAccount(Account.FindByCode(GlobalSettings.CodeOfAccountsPayableMerchandise));
                net.SetDocument(document);
                net.Credit        = loanAmount;
                net.Amount        = loanAmount;
                net.AmountInWords = Converter.AmountToWords(loanAmount);
                postResult        = net.Create();
                if (!postResult.Success)
                {
                    CashVoucher.DeleteAll(document.Number);
                    MessageWindow.ShowAlertMessage(postResult.Message);
                    return;
                }

                #endregion

                #region --- Voucher Log ---

                var voucherLog = new VoucherLog();
                voucherLog.Find("CV", _cashVoucher.VoucherNo);
                voucherLog.Date     = _cashVoucher.VoucherDate;
                voucherLog.Initials = MainController.LoggedUser.Initials;
                voucherLog.Save();

                #endregion

                MessageWindow.ShowNotifyMessage("Go Negosyo created. Please check CV# " + voucherNo);
                DialogResult = true;
                Close();
            }
            catch (Exception exception)
            {
                MessageWindow.ShowAlertMessage(exception.Message);
            }
        }