コード例 #1
0
 private static PaymentSequence CreatNewSequence(PeriodYear year, PaymentSequence paymentSequence)
 {
     return(new PaymentSequence
     {
         SequenceNo = paymentSequence.SequenceNo,
         SequenceDescription = paymentSequence.SequenceDescription,
         Year = year.Year
     });
 }
コード例 #2
0
ファイル: PaymentViewModel.cs プロジェクト: bamusasoft/fpm
        /// <summary>
        /// Check whether Selected Sequece is not already paid.
        /// </summary>
        /// <param name="periodYear"></param>
        /// <returns>True is already withdrawled otherwise false.</returns>
        private bool SequenceAlreadyPaid(PaymentSequence selectedSequence)
        {
            if (selectedSequence == null)
            {
                return(false);
            }
            var payments = _repository.Where(p => p.Year == selectedSequence.PeriodYear.Year);

            return(payments.Any(p => p.PaymentSequence.Id == selectedSequence.Id));
        }
コード例 #3
0
 protected override void Initialize()
 {
     _currnetModel = new PaymentSequence();
     int tempSeq = GenerateSequenceNo();
     if (tempSeq > 12)
     {
         string msg = "";//Properties.Resources.PaymentSeqView_ExceedingSeqNo;
         //Helper.ShowMessage(msg);
         return;
     }
     SequenceNo = tempSeq;
     SequenceDescription = PaymentWord + PaymentSeqMap[SequenceNo];
 }
コード例 #4
0
        private void SeqeunceSelectionChnaged(PeriodYear paymentYear, PaymentSequence paymentSequence)
        {
            if (paymentSequence == null)
            {
                return;
            }

            _payment = _paymentRepository.Single
                       (
                pay => pay.PeriodYear.Year == paymentYear.Year
                &&
                pay.PaymentSequence.Id == paymentSequence.Id
                       );

            _paymentDetail =
                _detailRepository.Single
                (
                    det => det.FamilyMember.Code == _selectedMember.Code
                    &&
                    det.Payment.PaymentNo == _payment.PaymentNo
                );

            LoansHistory =
                _loanPaymentsRepository.Where
                (
                    hist => hist.PaymentTransaction.TransNo == _paymentDetail.TransNo
                ).ToList();

            MemberLoans.Clear();

            foreach (LoanPayment loanPayment in LoansHistory)
            {
                var memLoan = new MemberLoan
                              (
                    loanPayment.DocNo, loanPayment.Loan.LoanNo, loanPayment.AmountPaid,
                    loanPayment.Loan.Description, loanPayment.Loan.Remarks
                              );
                MemberLoans.Add(memLoan);
            }

            MemberShares  = _paymentDetail.ShareNumbers;
            PaymentAmount = _payment.Amount;
            PaymentTotal  = (MemberShares * PaymentAmount);
            LoansTotal    = MemberLoans.Sum(x => x.LoanAmount);
            NetPayment    = _paymentDetail.NetPayments;
            if (_payment.Posted)
            {
                CanEdit = false;
            }
            SetState(ViewState.Saved);
        }
コード例 #5
0
        private void AddSequence()
        {
            var s       = new PaymentSequence();
            int tempSeq = GenerateSequenceNo();

            if (tempSeq > 12)
            {
                string msg = Properties.Resources.PaymentSeqView_ExceedingSeqNo;
                Helper.ShowMessage(msg);
                return;
            }

            s.SequenceNo          = tempSeq;
            s.SequenceDescription = PaymentWord + PaymentSeqMap[s.SequenceNo];
            YearSequences.Add(s);
            RaisePropertyChanged("YearSequences");
        }
コード例 #6
0
ファイル: PostLoansViewModel.cs プロジェクト: bamusasoft/fpm
        private ObservableCollection <PostLoan> CreatePostedLoans(PeriodYear future, PaymentSequence sequence)
        {
            ObservableCollection <PostLoan> posLoansList = new ObservableCollection <PostLoan>();

            foreach (var loan in CurrentLoans)
            {
                if (loan.Selected)
                {
                    PostLoan pl = new PostLoan(loan.Selected, loan.MemberCode, loan.MemberName,
                                               loan.LoanTypeId, loan.LoanTypeDescription,
                                               future.Year, future.Year, sequence.Id, sequence.SequenceDescription,
                                               loan.LoanAmount);
                    posLoansList.Add(pl);
                }
            }
            return(posLoansList);
        }
コード例 #7
0
        private void AddSequence()
        {
            var s       = new PaymentSequence();
            var tempSeq = GenerateSequenceNo();

            if (tempSeq > 12)
            {
                var msg = ""; //Properties.Resources.PaymentSeqView_ExceedingSeqNo;
                Helper.ShowMessage(msg);
                return;
            }

            s.SequenceNo          = tempSeq;
            s.SequenceDescription = PAYMENT_WORD + PaymentSeqMap[s.SequenceNo];
            YearSequences.Add(s);
            OnPropertyChanged(nameof(YearSequences));
        }
コード例 #8
0
 private void AddToPaymentSequences(PaymentSequence sequence)
 {
     _unitOfWork.PaymentSequences.Add(sequence);
 }
コード例 #9
0
        private async Task CreatePaymentDetails(Payment payment)
        {
            if (payment == null)
            {
                throw new ArgumentNullException("payment");
            }
            await Task.Run(() =>
            {
                bool isFirstLine = true;
                RepositoryBase <FamilyMember> familyMemberRepos = _unitOfWork.FamilyMembers;
                RepositoryBase <PaymentSequence> sequRepos      = _unitOfWork.PaymentSequences;
                RepositoryBase <PeriodSetting> periodRepos      = _unitOfWork.PeriodSettings;
                RepositoryBase <PaymentStatus> payStatusRepos   = _unitOfWork.PaymentStatuses;
                RepositoryBase <PaymentStatus> paymRepos        = _unitOfWork.PaymentStatuses;
                PaymentSequence paySequ   = payment.PaymentSequence;
                PeriodSetting currentYear = payment.PeriodSetting;
                RepositoryBase <PaymentTransaction> detailsRepos = _unitOfWork.PaymentTransactions;

                int counter = 0;
                //Start:
                _uiLoansHistory.Clear();
                List <FamilyMember> eligibleMembers = GetEligibleMembers();
                //List<LoansHistory> tempLoansHistory = new List<LoansHistory>();

                foreach (FamilyMember familyMember in eligibleMembers)
                {
                    isFirstLine = true;
                    decimal memberLoansPayment = 0.0M;
                    PaymentTransaction detail  = CreateMemberDetail(payment, familyMember);

                    #region "Old"

                    //detail.DetailNo = Guid.NewGuid();
                    //detail.PaymentNo = payment.PaymentNo;
                    //detail.FamilyMember = familyMember;
                    //detail.ShareNumbers = familyMember.Shares;

                    #endregion

                    List <Loan> memberLoans = GetMemberLoans(payment, familyMember);
                    foreach (Loan loan in memberLoans)
                    {
                        #region "Old"

                        //var order = GetLoanOrder(payment, loan);
                        //if (order == null) throw new InvalidOperationException("You must register payment orders for all types of loans");
                        //paymentAmountDue = PayMemberLoans(detail, tempLoansHistory, familyMember, paymentAmountDue, loan, order);

                        #endregion

                        memberLoansPayment += PayLoan(loan, detail);
                    }
                    detail.AmountDue   = memberLoansPayment;
                    detail.NetPayments = detail.NetPayments - detail.AmountDue;
                    //((payment.Amount * detail.ShareNumbers) - detail.AmountDue);
                    detailsRepos.Add(detail);
                    var progMeta = new Tuple <double, double, string>(counter, eligibleMembers.Count,
                                                                      familyMember.FullName);
                    ShowData(detail, isFirstLine, progMeta);

                    #region "Old algorithm "

                    //if (holderLoans.Count == 0)
                    //{
                    //    //******* Warning: Get an official confirmation for this policy.********//

                    //    // If no loans found; either this ShareHolder has no loans completely,
                    //    //or has no loans for just this payment.
                    //    //and in the latter, we will retrive all INPAYING loans.

                    //    holderLoans = loansRepos.Query
                    //        (
                    //          x => x.ShareHolder.Code == sharHolder.Code &&
                    //          x.StatusId == 2
                    //        ).ToList();
                    //}

                    //decimal paymentAmountDue = 0.0M;
                    //if (holderLoans.Count() > 0) //If no loans, terminate.
                    //{
                    //    //Get the payment orders of this payment.
                    //    var paymentOrders = ordersRepos.Query(x => x.Payment.PaymentNo == payment.PaymentNo);

                    //    foreach (var loan in holderLoans)
                    //    {
                    //        decimal tempAmountDue = 0.0M;
                    //        //Get the admin order regrad this specific loan.
                    //        var order = paymentOrders.Where(x => x.LoanType.Code == loan.LoanType.Code).SingleOrDefault();

                    //        if (order != null)
                    //        {
                    //            tempAmountDue = (loan.Amount * order.EarnPercent) / 100;
                    //            paymentAmountDue += (loan.Amount * order.EarnPercent) / 100;
                    //        }
                    //        else
                    //        {
                    //            tempAmountDue = loan.Amount;
                    //            paymentAmountDue += loan.Amount;
                    //        }
                    //        loan.Paid = tempAmountDue;
                    //        loan.Balance = loan.Amount - loan.Paid;

                    //    }
                    //    //amountDue = holderLoans.Sum(x => x.Amount);
                    //}

                    #endregion

                    counter++;
                }
                PaymentStatus status  = payStatusRepos.GetById(2);                   //Under Review Status.
                payment.PaymentStatus = status;
            }
                           );
        }
コード例 #10
0
 public void WriteModelValues(PaymentSequence model)
 {
     if (model == null) throw new ArgumentNullException("model");
     model.SequenceNo = SequenceNo;
     model.SequenceDescription = SequenceDescription;
 }