/// <summary> /// Load historical reserves/payments/recovery reserves/recovery receipts for the specified claim /// </summary> /// <param name="transactionSource">transaction source</param> /// <param name="productClaimDefinition">claim product</param> /// <param name="claimDetailProductMap">claim details used for filtering</param> /// <param name="claimHeader">claim header</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, IDictionary<string, ProductClaimDetail> claimDetailProductMap, ClaimHeader claimHeader, 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 claimHeaderArg = new ClaimHeaderArgument(AmountDataSource.Both, claimHeader, claimtransactionheader); var validClaimDetails = claimDetailProductMap .Where(a => a.Value.ClaimDetailAutomaticDeductibleProcessingMethod == (short)StaticValues.ClaimDetailAutomaticDeductibleProcessingMethod.FromClaimHeader) .Select(a => a.Key); var reserveCalculation = new TotalClaimReserveFinancialCalculation(inProgressData, historicalData); var paymentCalcuation = new TotalClaimPaymentFinancialCalculation(inProgressData, historicalData); var recoveryReceiptCalculation = new TotalClaimReceiptFinancialCalculation(inProgressData, historicalData); var recoveryRerserveCalculation = new TotalClaimRecoveryReserveFinancialCalculation(inProgressData, historicalData); bool includeEstimated = productClaimDefinition.IncurredAmountDerivationMethod == (short)StaticValues.IncurredAmountDerivationMethod.PaymentsReservesincludingEstimated; bool includeRecoveryEstimated = productClaimDefinition.RecoveryIncurredAmountDerivationMethod == (short)StaticValues.RecoveryIncurredAmountDerivationMethod.ReceiptsRecoveryReservesincludingEstimated; reserves = reserveCalculation.ReadLatestClaimReserves(claimHeaderArg, includeEstimated).Where(a => validClaimDetails.Contains(a.ClaimDetailReference)); payments = paymentCalcuation.ReadClaimPayments(claimHeaderArg).Where(a => validClaimDetails.Contains(a.ClaimDetailReference)); payments = payments.Concat(recoveryReceiptCalculation.ReadClaimReceipts(claimHeaderArg).Where(a => validClaimDetails.Contains(a.ClaimDetailReference))); recoveryReserves = recoveryRerserveCalculation.ReadLatestClaimRecoveryReserves(claimHeaderArg, includeRecoveryEstimated).Where(a => validClaimDetails.Contains(a.ClaimDetailReference)); 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">Syatem 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="header"> Claim mHeader</param> /// <param name="claimTransactionHeader"> Claim Transaction Header </param> /// <returns> True / False</returns> protected bool CanPerformManualCheck(User user, List<ClaimFinancialAuthorityLimitCheckResult> checkLog, ProductVersion product, StaticValues.ClaimFinancialAuthorityCheckType check, ClaimHeader header, ClaimTransactionHeader claimTransactionHeader) { FinancialAuthorityCheckComponents components = new FinancialAuthorityCheckComponents(claimTransactionHeader.ClaimHeader, null, claimTransactionHeader); var claimArgs = new ClaimHeaderArgument(AmountDataSource.Historical, header, claimTransactionHeader); var result = ClaimFinancialAuthorityCheckUtil.PerformUserLimitCheck(user.UserID, product, StaticValues.ClaimFinancialAuthorityLimitType.LimitForManualAuthorisation, check, claimArgs, components,null); checkLog.Add(result); return result == ClaimFinancialAuthorityLimitCheckResult.NullValue || result.IsAuthorised; }