Example #1
0
        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
            });
        }
Example #2
0
        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;
        }