/// <summary> /// Load historical reserves/payments/recovery reserves/recovery receipts for the specified claim detail /// </summary> /// <param name="transactionSource">transaction source</param> /// <param name="productClaimDefinition">claim product</param> /// <param name="claimDetail">claim detail</param> /// <param name="reserves">resulting reserves</param> /// <param name="payments">resulting payments and recovery receipts</param> /// <param name="recoveryReserves">resulting recovery reserves</param> private static void LoadFinancialAmounts(StaticValues.ClaimTransactionSource transactionSource, ProductClaimDefinition productClaimDefinition, ClaimDetail claimDetail, ClaimTransactionHeader claimtransactionheader, out IEnumerable<ClaimFinancialAmount> reserves, out IEnumerable<ClaimFinancialAmount> payments, out IEnumerable<ClaimFinancialAmount> recoveryReserves) { var inProgressData = ObjectFactory.Resolve<IInProgressFinancialAmountData>(); var historicalData = ObjectFactory.Resolve<IHistoricalFinancialAmountData>(); var claimDetailArg = new ClaimDetailArgument(AmountDataSource.Both, claimDetail, null); var reserveCalculation = new TotalClaimDetailReserveFinancialCalculation(inProgressData, historicalData); var paymentCalcuation = new TotalClaimDetailPaymentFinancialCalculation(inProgressData, historicalData); var recoveryReceiptCalculation = new TotalClaimDetailReceiptFinancialCalculation(inProgressData, historicalData); var recoveryRerserveCalculation = new TotalClaimDetailRecoveryReserveFinancialCalculation(inProgressData, historicalData); bool includeEstimated = productClaimDefinition.RecoveryIncurredAmountDerivationMethod == (short)StaticValues.RecoveryIncurredAmountDerivationMethod.ReceiptsRecoveryReservesincludingEstimated; bool includeRecoveryEstimated = productClaimDefinition.RecoveryIncurredAmountDerivationMethod == (short)StaticValues.RecoveryIncurredAmountDerivationMethod.ReceiptsRecoveryReservesincludingEstimated; reserves = reserveCalculation.ReadLatestClaimDetailReserves(claimDetailArg, includeEstimated); payments = paymentCalcuation.ReadClaimDetailPayments(claimDetailArg); payments = payments.Concat(recoveryReceiptCalculation.ReadClaimDetailReceipt(claimDetailArg)); recoveryReserves = recoveryRerserveCalculation.ReadLatestClaimDetailRecoveryReserves(claimDetailArg, includeRecoveryEstimated); var excludedMovementTypes = ClaimsBusinessLogicHelper.GetExcludedMovementTypesFromAutomaticDeductibleCalculations(); reserves = FilterExcludedMovementTypes(reserves, excludedMovementTypes); recoveryReserves = FilterExcludedMovementTypes(recoveryReserves, excludedMovementTypes); payments = FilterExcludedMovementTypes(payments, excludedMovementTypes); reserves = CreateAmountsForCalculation(reserves); recoveryReserves = CreateAmountsForCalculation(recoveryReserves); payments = CreateAmountsForCalculation(payments); }
/// <summary> /// Check if the user can Manually Authorise the payment /// </summary> /// <param name="user"> System User</param> /// <param name="checkLog"> Collection of ClaimFinancialAuthorityLimitCheckResult </param> /// <param name="product"> Product Version </param> /// <param name="check"> Claim Financial Authority Check Type</param> /// <param name="claimDetail"> Claim Detail </param> /// <param name="claimTransactionHeader"> Claim Transaction Header </param> /// <returns> Bool True / False </returns> protected bool CanPerformManualCheck(User user, List<ClaimFinancialAuthorityLimitCheckResult> checkLog, ProductVersion product, StaticValues.ClaimFinancialAuthorityCheckType check, ClaimDetail claimDetail, ClaimTransactionHeader claimTransactionHeader) { FinancialAuthorityCheckComponents components = new FinancialAuthorityCheckComponents(claimTransactionHeader.ClaimHeader, claimDetail, claimTransactionHeader); var claimDetailArgs = new ClaimDetailArgument(AmountDataSource.Historical, claimDetail, claimTransactionHeader); var result = ClaimFinancialAuthorityCheckUtil.PerformUserLimitCheck(user.UserID, product, StaticValues.ClaimFinancialAuthorityLimitType.LimitForManualAuthorisation, check, claimDetailArgs, components, null); checkLog.Add(result); return result == ClaimFinancialAuthorityLimitCheckResult.NullValue || result.IsAuthorised; }