private PaymentModel ToPaymentModel( ProviderPayment paymentInfo, long ukprn, FundingSourceType fundingSource, decimal amount, long jobId, long?employerAccountId) { var learner = testSession.GetLearner(ukprn, paymentInfo.LearnerId); var standardCode = paymentInfo.StandardCode; if (!standardCode.HasValue) { var aim = learner.Aims.FirstOrDefault(a => { var aimStartDate = a.StartDate.ToDate(); var aimStartPeriod = new CollectionPeriodBuilder().WithDate(aimStartDate).Build(); var aimDuration = string.IsNullOrEmpty(a.ActualDuration) ? a.PlannedDuration : a.ActualDuration; var aimEndPeriod = AimPeriodMatcher.GetEndPeriodForAim(aimStartPeriod, aimDuration); var aimFinishedInPreviousPeriod = aimEndPeriod.FinishesBefore(currentCollectionPeriod); if (!aimFinishedInPreviousPeriod) { return(true); } if (a.CompletionStatus == CompletionStatus.Withdrawn && amount >= 0M) { return(false); } return(a.AimReference == "ZPROG001" && (a.CompletionStatus == CompletionStatus.Completed || a.CompletionStatus == CompletionStatus.Withdrawn)); }); standardCode = aim?.StandardCode ?? 0; } return(new PaymentModel { CollectionPeriod = new CollectionPeriodBuilder().WithSpecDate(paymentInfo.CollectionPeriod).Build(), Ukprn = ukprn, DeliveryPeriod = new DeliveryPeriodBuilder().WithSpecDate(paymentInfo.DeliveryPeriod).Build(), TransactionType = paymentInfo.TransactionType, ContractType = contractType, Amount = amount, FundingSource = fundingSource, LearnerReferenceNumber = learner.LearnRefNumber, JobId = jobId, AccountId = employerAccountId, LearningAimStandardCode = standardCode.Value }); }
private static void AddBookingProcessData(BookingProcess bp, DateTime?date) { DateTime date1 = bp.OfferInfo.CheckIn; if (date != null) { TimeSpan days = date1.Subtract((DateTime)date); int difference = days.Days; DateTime bookingdate = (DateTime)date; if (difference > 60) { List <PaymentTerm> list = new List <PaymentTerm>(); PaymentTerm paymentTerm1 = new PaymentTerm(); paymentTerm1.Date = bookingdate.AddDays(7); paymentTerm1.Percent = 30; paymentTerm1.Eur = bp.PriceValueByBooking * 30 / 100; PaymentTerm paymentTerm2 = new PaymentTerm(); paymentTerm2.Date = bp.OfferInfo.CheckIn.AddDays(-42); paymentTerm2.Percent = 70; paymentTerm2.Eur = bp.PriceValueByBooking * 70 / 100; list.Add(paymentTerm1); list.Add(paymentTerm2); bp.PaymentTerms = list; List <TravelApplicantPayment> travelapplicantpayments = new List <TravelApplicantPayment>(); TravelApplicantPayment payment1 = new TravelApplicantPayment(); payment1.Date = bookingdate.AddDays(7); payment1.Value = bp.PriceValueByBooking * 30 / 100; TravelApplicantPayment payment2 = new TravelApplicantPayment(); payment2.Date = bp.OfferInfo.CheckIn.AddDays(-42); payment2.Value = bp.PriceValueByBooking * 70 / 100; travelapplicantpayments.Add(payment1); travelapplicantpayments.Add(payment2); bp.Payments = travelapplicantpayments; } } List <ProviderPayment> providerpayments = new List <ProviderPayment>(); ProviderPayment Payment = new ProviderPayment(); Payment.Date = bp.OfferInfo.CheckIn.AddDays(-30); Payment.Value = bp.PriceValueByBooking * 80 / 100; providerpayments.Add(Payment); bp.PaymentsForProvider = providerpayments; }