//
        // Private
        //
        void PopulateCommonFields(ICaseFlowAccountCommon accountDto, MyAccountsSummaryResultDto resultDto, DateTime currentDateTime)
        {
            resultDto.OriginalCompany    = accountDto.ClientName;
            resultDto.AccountReference   = accountDto.LowellReference;
            resultDto.OutstandingBalance = accountDto.OutstandingBalance ?? 0.0M;
            resultDto.HasArrangement     = accountDto.HasArrangement;

            resultDto.DiscountedBalance = DeriveDiscountedBalance(accountDto);

            if (accountDto.HasArrangement && accountDto.OutstandingBalance > 0.0M)
            {
                resultDto.PaymentPlanMethod    = accountDto.PlanType;
                resultDto.PaymentPlanFrequency = accountDto.PlanFrequency;
                resultDto.PaymentPlanAmount    = accountDto.RegularAccountPaymentAmount;
            }

            // Note: expiry check only uses date part of current date, because the expiry is only a date
            if (accountDto.DiscountAmount != null &&
                accountDto.DiscountExpiry != null && currentDateTime.Date <= accountDto.DiscountExpiry &&
                !IsDiscountAccepted(accountDto) &&
                !_statusDeriverProcess.IsWithSolicitors(accountDto) &&
                !(accountDto.HasArrangement && accountDto.PlanType == "Direct Debit"))
            {
                resultDto.DiscountOfferAmount = accountDto.DiscountAmount;
                resultDto.DiscountOfferExpiry = accountDto.DiscountExpiry;
            }

            if (accountDto.Arrears > 0 && accountDto.HasArrangement)
            {
                resultDto.PaymentPlanArrearsAmount = accountDto.Arrears;
            }

            if (accountDto.HasArrangement &&
                (accountDto.PlanType == "Direct Debit" ||
                 accountDto.PlanType == "Debit Card" ||
                 accountDto.PlanType == "Credit Card"))
            {
                resultDto.PaymentPlanIsAutomated = true;
            }

            _statusDeriverProcess.DeriveStatusAndStatusSort(accountDto, resultDto);

            // Override 'Can Make Payment' to false, if with solicitors (worked out by status deriver)
            if (resultDto.AccountStatusIsWithSolicitors)
            {
                resultDto.CanMakePayment = false;
            }
            else
            {
                resultDto.CanMakePayment = accountDto.CanMakePayment;
            }

            resultDto.CanAmendPlan           = accountDto.CanAmendPlan;
            resultDto.DirectDebitInFlight    = accountDto.DirectDebitInFlight;
            resultDto.NextPlanPaymentDate    = accountDto.NextPlanPaymentDate;
            resultDto.AddedSinceLastLogin    = accountDto.AddedSinceLastLogin;
            resultDto.NeverAllowPlanTransfer = accountDto.NeverAllowPlanTransfer;
            resultDto.PlanPendingTransfer    = accountDto.PlanPendingTransfer;
            resultDto.PlanTransferredFrom    = accountDto.PlanTransferredFrom;
        }
        decimal?DeriveDiscountedBalance(ICaseFlowAccountCommon caseFlowAccountDto)
        {
            // If balances are equal, indicates no balance
            if (!IsDiscountAccepted(caseFlowAccountDto))
            {
                return(null);
            }

            return(caseFlowAccountDto.DiscountedBalance);
        }
Ejemplo n.º 3
0
        // Updates the result Dto (passed up to portal), using CaseFlow information
        public void DeriveStatusAndStatusSort(ICaseFlowAccountCommon caseFlowDto, MyAccountsSummaryResultDto resultDtoToBeUpdated)
        {
            // Closed
            if ((caseFlowDto.OutstandingBalance ?? 0M) <= 0M &&
                caseFlowDto.CanMakePayment == false &&
                caseFlowDto.CanSetupIndividualPlan == false)
            {
                resultDtoToBeUpdated.AccountStatus         = "Closed";
                resultDtoToBeUpdated.AccountStatusSort     = 5;
                resultDtoToBeUpdated.AccountStatusIsClosed = true;
                return;
            }

            // With Lowell Solicitors
            if (caseFlowDto.Company == SolicitorsCompanyCode)
            {
                resultDtoToBeUpdated.AccountStatus                 = "With Lowell Solicitors";
                resultDtoToBeUpdated.AccountStatusSort             = 3;
                resultDtoToBeUpdated.AccountStatusIsWithSolicitors = true;
                return;
            }

            // View Account Details Only
            if ((caseFlowDto.OutstandingBalance ?? 0M) > 0M &&
                caseFlowDto.CanMakePayment == false &&
                caseFlowDto.CanSetupIndividualPlan == false)
            {
                resultDtoToBeUpdated.AccountStatus           = "View Account Details Only";
                resultDtoToBeUpdated.AccountStatusSort       = 4;
                resultDtoToBeUpdated.AccountStatusIsViewOnly = true;
                return;
            }

            // No Payment Arrangement
            if ((caseFlowDto.OutstandingBalance ?? 0M) > 0M &&
                caseFlowDto.HasArrangement == true)
            {
                resultDtoToBeUpdated.AccountStatus     = "Plan in Place";
                resultDtoToBeUpdated.AccountStatusSort = 1;
                resultDtoToBeUpdated.CanManageAccount  = true;
                return;
            }

            // Otherwise... Must Plan in Place
            resultDtoToBeUpdated.AccountStatus     = "There are no payments set up on this account.";
            resultDtoToBeUpdated.AccountStatusSort = 2;
            resultDtoToBeUpdated.CanManageAccount  = true;
        }
Ejemplo n.º 4
0
 public bool IsWithSolicitors(ICaseFlowAccountCommon caseFlowDto)
 {
     return(caseFlowDto.Company == SolicitorsCompanyCode);
 }
 bool IsDiscountAccepted(ICaseFlowAccountCommon caseFlowAccountDto)
 {
     return((caseFlowAccountDto.OutstandingBalance != caseFlowAccountDto.DiscountedBalance) && caseFlowAccountDto.HasArrangement);
 }