/// <summary> /// method used to get funded deductible movement types from the Metadata. /// </summary> /// <param name="entities">Metadata Entity value</param> /// <param name="productVersion">long value</param> /// <param name="attachedPolicyRef">string value</param> /// <param name="fundedDeductiblePolicies">Dictionary collection</param> /// <param name="pcd">Product Claim Definition Type</param> /// <param name="recoveryReserveMovementType">string value</param> /// <param name="reserveMovementType">string value</param> /// <param name="isRecoveryReserve">bool value</param> /// <param name="movementTypes">Dictionary collection - Passed by reference</param> /// <returns>Dictionary collection</returns> private static Dictionary<string, string> GetFundedDeductibleMovementTypes(MetadataEntities entities, long productVersion, string attachedPolicyRef, Dictionary<string, string> fundedDeductiblePolicies, ProductClaimDefinition pcd, string recoveryReserveMovementType, string reserveMovementType, bool isRecoveryReserve, ref Dictionary<string, string> movementTypes) { if (_Logger.IsInfoEnabled) { _Logger.Info("ClaimTransferDataCollection.GetFundedDeductibleMovementTypes"); } // For each of the five Deductible codes, check if we are adding to the list of Dedctible moment type codes. AddDeductibleMovemnentTypeCodes(ClaimConstants.DED_DEDUCTIBLE01, pcd.InsurerFundedDeductible01MovementTypeCode, attachedPolicyRef, fundedDeductiblePolicies, recoveryReserveMovementType, reserveMovementType, isRecoveryReserve, ref movementTypes); AddDeductibleMovemnentTypeCodes(ClaimConstants.DED_DEDUCTIBLE02, pcd.InsurerFundedDeductible02MovementTypeCode, attachedPolicyRef, fundedDeductiblePolicies, recoveryReserveMovementType, reserveMovementType, isRecoveryReserve, ref movementTypes); AddDeductibleMovemnentTypeCodes(ClaimConstants.DED_DEDUCTIBLE03, pcd.InsurerFundedDeductible03MovementTypeCode, attachedPolicyRef, fundedDeductiblePolicies, recoveryReserveMovementType, reserveMovementType, isRecoveryReserve, ref movementTypes); AddDeductibleMovemnentTypeCodes(ClaimConstants.DED_DEDUCTIBLE04, pcd.InsurerFundedDeductible04MovementTypeCode, attachedPolicyRef, fundedDeductiblePolicies, recoveryReserveMovementType, reserveMovementType, isRecoveryReserve, ref movementTypes); AddDeductibleMovemnentTypeCodes(ClaimConstants.DED_DEDUCTIBLE05, pcd.InsurerFundedDeductible05MovementTypeCode, attachedPolicyRef, fundedDeductiblePolicies, recoveryReserveMovementType, reserveMovementType, isRecoveryReserve, ref movementTypes); return movementTypes; }
/// <summary> /// method used to get funded deductible movement types. /// </summary> /// <param name="entities">Metadata Entity</param> /// <param name="productVersion">long value</param> /// <param name="riskProductCode">string value</param> /// <param name="attachedPolicyRef">string value</param> /// <param name="fundedDeductiblePolicies">Dictionary collection</param> /// <param name="cth">Claim Transaction Header</param> /// <returns>Dictionary collection</returns> private static Dictionary<string, string> GetFundedDeductibleMovementTypes(MetadataEntities entities, long productVersion, string riskProductCode, string attachedPolicyRef, Dictionary<string, string> fundedDeductiblePolicies, XiapClaim.ClaimTransactionHeader cth) { string reserveMovementType; var movementTypes = new Dictionary<string, string>(); // Get the claim definition from the Product Version passed in. ProductClaimDefinition pcd = (from claimDefinition in entities.ProductClaimDefinition where claimDefinition.ProductVersionID == productVersion select claimDefinition).FirstOrDefault(); // Add funded deductible movement types for Reserve, Payment and RecoveryReceipt, if this isn't a Recovery Reserve Claim Transaction Header if (cth.ClaimTransactionSource != (short)StaticValues.ClaimTransactionSource.RecoveryReserve) { GetFundedDeductibleMovementTypes(entities, productVersion, attachedPolicyRef, fundedDeductiblePolicies, pcd, null, null, false, ref movementTypes); } // Add funded deductible movement types for recovery reserve if the CTH is a RecoveryReserve or Recovery Receipt if (cth.ClaimTransactionSource == (short)StaticValues.ClaimTransactionSource.RecoveryReserve || cth.ClaimTransactionSource == (short)StaticValues.ClaimTransactionSource.RecoveryReceipt) { // Cycle through all Claim Transaction Groups foreach (XiapClaim.ClaimTransactionGroup ctg in cth.ClaimTransactionGroups) { // Cycle through each Claim Transaction Detail on each group foreach (XiapClaim.ClaimTransactionDetail ctd in ctg.ClaimTransactionDetails) { // For any Recovery Reserve type amounts if (ctd.AmountType == (short)StaticValues.AmountType.RecoveryReserve) { // Retrieve funded deductible reserve movement type on the basis of recovery reserve movement type ClaimsBusinessLogicHelper.TryGetReserveMovementType(ctd.MovementType, riskProductCode, out reserveMovementType); // Add to the list of types if we get a value. if (!string.IsNullOrWhiteSpace(reserveMovementType)) { GetFundedDeductibleMovementTypes(entities, productVersion, attachedPolicyRef, fundedDeductiblePolicies, pcd, ctd.MovementType, reserveMovementType, true, ref movementTypes); } } } } } return movementTypes; }