private void WriteModelValues(PeriodSetting model) { if (model == null) { throw new ArgumentNullException("model"); } model.YearPart = ExtractYearPart(); //model.Id = model.YearPart; model.StartDate = StartDate; model.EndDate = EndDate; model.PeriodStatus = SelectedStatus; //if (_modelState == ModelState.New) //{ foreach (PaymentSequence seq in YearSequences) { bool exisitSeq = seq.Id != 0; //==0 means it has not been sent to database. if (!exisitSeq) { model.PaymentSequences.Add(seq); } } //} //else //{ // foreach (PaymentSequence seq in YearSequences) // { // bool exisitSeq = model.PaymentSequences.Any(ps => ps.Id == 0); // model.PaymentSequences.Add(seq); // } //} }
private void ReadModelValues(PeriodSetting model) { if (model == null) { throw new ArgumentNullException("model"); } YearPart = model.YearPart; StartDate = model.StartDate; EndDate = model.EndDate; SelectedStatus = model.PeriodStatus; _sequenceNo = model.PaymentSequences.Count(); foreach (PaymentSequence seq in model.PaymentSequences) { YearSequences.Add(seq); } if (SelectedStatus != null && SelectedStatus.Id == 1) { ClosedStatus = SelectedStatus.Description; } else { ClosedStatus = null; } RaisePropertyChanged(""); }
private void Initialize() { _currnetModel = new PeriodSetting(); RulesViolations = new List <RuleViolation>(); YearSequences = new ObservableCollection <PaymentSequence>(); ReadModelValues(_currnetModel); SetState(ModelState.New); }
private void LoadYearPayments(PeriodSetting selectedYear) { IQueryable <PaymentSequence> result = _unitOfWork.Payments.Query(x => x.PeriodSetting.Id == selectedYear.Id).Select(x => x.PaymentSequence); if (!result.Any()) { string msg = Properties.Resources.MemberPaymentView_NoPaymentSequ; Helper.ShowMessage(msg); return; } PaymentSequences = new ObservableCollection <PaymentSequence>(result); }
public IActionResult SetPicturePeriod([FromBody] PeriodSetting setting) { var authenticatedUser = GetAuthenticatedUserNetname(); var hasUpdatedPeriodSetting = _adminRepo.SetYearUpdatePicturePeriod(setting); _logRepo.LoggerAsync(authenticatedUser, hasUpdatedPeriodSetting ? Log.Action.ModifiedPictureUpdatePeriod : Log.Action.CreatePictureUpdatePeriod, null); return(Ok()); }
private ObservableCollection <LoanType> LoadLoanTypes(PeriodSetting year) { ObservableCollection <LoanType> ltList = new ObservableCollection <LoanType>(); var result = _loansRepository.Query(x => x.PeriodSetting.Id == year.Id) .Select(s => s.LoanType) .GroupBy(g => g.Code) .Select(p => p.FirstOrDefault()); foreach (var item in result) { ltList.Add(item); } return(ltList); }
private PeriodSetting GetCurrentYear() { PeriodSetting currnet = null; try { var c = _unitOfWork.PeriodSettings.Query(x => x.PeriodStatus.Id == OpenStatus.Id).Single(); currnet = c; } catch (InvalidOperationException) { //Sowallo as we sure nothing happend other than that there are no open year. } return(currnet); }
private void Search() { if (string.IsNullOrEmpty(SearchField)) { return; } IQueryable <PeriodSetting> result = _repository.Query(setting => setting.YearPart == SearchField); if (result == null || result.Count() != 1) { return; } _currnetModel = result.First(); ReadModelValues(_currnetModel); SetState(ModelState.Saved); }
private ObservableCollection <PostLoan> CreatePostedLoans(PeriodSetting 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.YearPart, future.YearPart, sequence.Id, sequence.SequenceDescription, loan.LoanAmount); posLoansList.Add(pl); } } return(posLoansList); }
/// <summary> /// 取得節次列表 /// </summary> /// <param name="strPeriodList"></param> /// <returns></returns> public static List<PeriodSetting> GetPeriodList(string strPeriodList) { //1 8:10 9:00 //2 9:10 10:00 //3 10:10 11:00 //4 11:10 12:00 //5 13:10 14:00 //6 14:10 15:00 //7 15:10 16:00 //8 16:10 17:00 List<PeriodSetting> Periods = new List<PeriodSetting>(); if (!string.IsNullOrWhiteSpace(strPeriodList)) { XElement elmPeriodList = XElement.Load(new StringReader(strPeriodList)); foreach (XElement elmPeriod in elmPeriodList.Elements("Period")) { PeriodSetting Period = new PeriodSetting(elmPeriod); Periods.Add(Period); } } else { Periods.Add(new PeriodSetting(1, 8,10,50)); Periods.Add(new PeriodSetting(2, 9, 10, 50)); Periods.Add(new PeriodSetting(3, 10, 10, 50)); Periods.Add(new PeriodSetting(4, 11, 10, 50)); Periods.Add(new PeriodSetting(5, 13, 10, 50)); Periods.Add(new PeriodSetting(6, 14, 10, 50)); Periods.Add(new PeriodSetting(7, 15, 10, 50)); Periods.Add(new PeriodSetting(8, 16, 10, 50)); } return Periods; }
ObservableCollection <PaymentSequence> GetSequences(PeriodSetting year) { var yearSeqeunces = _unitOfWork.PaymentSequences.Query(ps => ps.PeriodSetting.Id == year.Id); return(new ObservableCollection <PaymentSequence>(yearSeqeunces)); }
private void LoadStatment(int memberCode, PeriodSetting year) { _internalStatementDetails = new HashSet <MemberStatmentDetail>(); List <MemberStatmentDetail> msdList = new List <MemberStatmentDetail>(); string statementYear = null; int searchedMemberCode = 0; string searchedMemberName = null; decimal netTotals = 0.0M; var yearPayments = _unitOfWork.Payments.Query(x => x.PeriodSetting.Id == year.Id); int fieldsCounter = 0; foreach (var yearPayment in yearPayments) { if (fieldsCounter == 0) //Assgin once { statementYear = yearPayment.PeriodSetting.YearPart; } var pymentDetails = _unitOfWork.PaymentTransactions.Query ( x => x.Payment.PaymentNo == yearPayment.PaymentNo && x.FamilyMember.Code == memberCode ); foreach (var payDetail in pymentDetails) { if (fieldsCounter == 0) //Assgin once { searchedMemberCode = payDetail.MemberCode; searchedMemberName = payDetail.FamilyMember.FullName; fieldsCounter++; } //Get loans paying history for this payment detail. var loanHistory = _unitOfWork.LoanPayments.Query( x => x.PaymentTransaction.TransNo == payDetail.TransNo && x.FamilyMember.Code == payDetail.FamilyMember.Code).ToList(); int loansHisotoryCount = loanHistory.Count(); switch (loansHisotoryCount) { case 0: AddNoLoansHeaderRow(yearPayment, payDetail); netTotals += payDetail.NetPayments; continue; case 1: AddOneLoanRow(yearPayment, payDetail, loanHistory); netTotals += payDetail.NetPayments; continue; default: AddManyLoansRow(yearPayment, payDetail, loanHistory); netTotals += payDetail.NetPayments; break; } } } Statment = new MemberStatmentReport( statementYear, searchedMemberCode, searchedMemberName, netTotals, _internalStatementDetails); }
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; } ); }