// // 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); }
// 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; }
public bool IsWithSolicitors(ICaseFlowAccountCommon caseFlowDto) { return(caseFlowDto.Company == SolicitorsCompanyCode); }
bool IsDiscountAccepted(ICaseFlowAccountCommon caseFlowAccountDto) { return((caseFlowAccountDto.OutstandingBalance != caseFlowAccountDto.DiscountedBalance) && caseFlowAccountDto.HasArrangement); }