Source code for ace.centralize.models.policy

"""
    Policy models for Centralize

    Models for coverages, premiums, ratings, payment agreements, and policies.

    Based on the Policy/Application GraphQL schema (PolicyCreateParamsInput,
    PolicyUpdateParamsInput, CoverageCreateParamsInput, etc.)
"""
from datetime import date
from typing import List, Optional

from ace.centralize.models.base import ModelBase


# ================================================== COVERAGES =========================================================

[docs] class CoverageBenefitParamsInput(ModelBase): """Maps to CoverageBenefitParamsInput in GraphQL schema."""
[docs] def __init__( self, benefit_percentage: Optional[float] = None, benefit_period_id: Optional[int] = None, current_benefit_amount: Optional[float] = None, current_benefit_currency_id: Optional[int] = None, elimination_period_id: Optional[int] = None, expiry_date: Optional[str] = None, initial_benefit_amount: Optional[float] = None, initial_benefit_currency_id: Optional[int] = None, lives_type_id: Optional[int] = None, renewal_date: Optional[date] = None ): if benefit_percentage is not None: self.benefitPercentage = benefit_percentage if benefit_period_id is not None: self.benefitPeriodId = benefit_period_id if current_benefit_amount is not None: self.currentBenefitAmount = current_benefit_amount if current_benefit_currency_id is not None: self.currentBenefitCurrencyId = current_benefit_currency_id if elimination_period_id is not None: self.eliminationPeriodId = elimination_period_id if expiry_date is not None: self.expiryDate = expiry_date if initial_benefit_amount is not None: self.initialBenefitAmount = initial_benefit_amount if initial_benefit_currency_id is not None: self.initialBenefitCurrencyId = initial_benefit_currency_id if lives_type_id is not None: self.livesTypeId = lives_type_id if renewal_date is not None: self.renewalDate = renewal_date
# Backward-compatible alias CreateCoverageBenefitObject = CoverageBenefitParamsInput
[docs] class CoverageLifeParamsInput(ModelBase): """Maps to CoverageLifeParamsInput in GraphQL schema."""
[docs] def __init__( self, conversion_date: Optional[date] = None, current_amount: Optional[float] = None, death_benefit_option_type_id: Optional[int] = None, duration_design: Optional[int] = None, expiry_date: Optional[date] = None, initial_amount: Optional[float] = None, lives_type_id: Optional[int] = None, renewal_date: Optional[date] = None, ): if conversion_date is not None: self.conversionDate = conversion_date if current_amount is not None: self.currentAmount = current_amount if death_benefit_option_type_id is not None: self.deathBenefitOptionTypeId = death_benefit_option_type_id if duration_design is not None: self.durationDesign = duration_design if expiry_date is not None: self.expiryDate = expiry_date if initial_amount is not None: self.initialAmount = initial_amount if lives_type_id is not None: self.livesTypeId = lives_type_id if renewal_date is not None: self.renewalDate = renewal_date
# Backward-compatible alias CreateCoverageLifeObject = CoverageLifeParamsInput
[docs] class RatingParamsInput(ModelBase): """Maps to RatingParamsInput in GraphQL schema."""
[docs] def __init__( self, employment_class_id: Optional[int] = None, issue_age: Optional[int] = None, issue_gender_id: Optional[int] = None, occupation: Optional[str] = None, tobacco_premium_basis_id: Optional[int] = None, underwriting_class_id: Optional[int] = None ): if employment_class_id is not None: self.employmentClassId = employment_class_id if issue_age is not None: self.issueAge = issue_age if issue_gender_id is not None: self.issueGenderId = issue_gender_id if occupation is not None: self.occupation = occupation if tobacco_premium_basis_id is not None: self.tobaccoPremiumBasisId = tobacco_premium_basis_id if underwriting_class_id is not None: self.underwritingClassId = underwriting_class_id
# Backward-compatible alias CreateRatingObject = RatingParamsInput
[docs] class SubstandardRatingCreateParamsInput(ModelBase): """Maps to SubstandardRatingCreateParamsInput in GraphQL schema."""
[docs] def __init__( self, effective_date: Optional[date] = None, expiration_date: Optional[date] = None, flat_extra_amount: Optional[float] = None, flat_extra_basis_id: Optional[int] = None, participant_role_id: Optional[int] = None, table_rating_id: Optional[int] = None ): if effective_date is not None: self.effectiveDate = effective_date if expiration_date is not None: self.expirationDate = expiration_date if flat_extra_amount is not None: self.flatExtraAmount = flat_extra_amount if flat_extra_basis_id is not None: self.flatExtraBasisId = flat_extra_basis_id if participant_role_id is not None: self.participantRoleId = participant_role_id if table_rating_id is not None: self.tableRatingId = table_rating_id
# Backward-compatible alias CreateSubStandardRatingObject = SubstandardRatingCreateParamsInput
[docs] class SubstandardRatingUpdateParamsInput(ModelBase): """Maps to SubstandardRatingUpdateParamsInput in GraphQL schema."""
[docs] def __init__( self, id: int, effective_date: Optional[date] = None, expiration_date: Optional[date] = None, flat_extra_amount: Optional[float] = None, flat_extra_basis_id: Optional[int] = None, participant_role_id: Optional[int] = None, table_rating_id: Optional[int] = None ): self.id = id if effective_date is not None: self.effectiveDate = effective_date if expiration_date is not None: self.expirationDate = expiration_date if flat_extra_amount is not None: self.flatExtraAmount = flat_extra_amount if flat_extra_basis_id is not None: self.flatExtraBasisId = flat_extra_basis_id if participant_role_id is not None: self.participantRoleId = participant_role_id if table_rating_id is not None: self.tableRatingId = table_rating_id
# Backward-compatible alias UpdateSubStandardRatingObject = SubstandardRatingUpdateParamsInput
[docs] class PremiumCreateParamsInput(ModelBase): """Maps to PremiumCreateParamsInput in GraphQL schema."""
[docs] def __init__( self, premium_amount: float, premium_type_id: int, effective_date: Optional[date] = None, expiration_date: Optional[date] = None ): self.premiumAmount = premium_amount self.premiumTypeId = premium_type_id if effective_date is not None: self.effectiveDate = effective_date if expiration_date is not None: self.expirationDate = expiration_date
# Backward-compatible alias CreatePremiumObject = PremiumCreateParamsInput
[docs] class PremiumUpdateParamsInput(ModelBase): """Maps to PremiumUpdateParamsInput in GraphQL schema."""
[docs] def __init__( self, premium_id: int, premium_type_id: Optional[int] = None, premium_amount: Optional[float] = None, effective_date: Optional[date] = None, expiration_date: Optional[date] = None ): self.id = premium_id if premium_type_id is not None: self.premiumTypeId = premium_type_id if premium_amount is not None: self.premiumAmount = premium_amount if effective_date is not None: self.effectiveDate = effective_date if expiration_date is not None: self.expirationDate = expiration_date
# Backward-compatible alias UpdatePremiumObject = PremiumUpdateParamsInput
[docs] class CoverageCreateParamsInput(ModelBase): """Maps to CoverageCreateParamsInput in GraphQL schema."""
[docs] def __init__( self, coverage_product_id: int, annual_premium: Optional[float] = None, coverage_benefit: Optional[CoverageBenefitParamsInput] = None, coverage_guid: Optional[str] = None, coverage_life: Optional[CoverageLifeParamsInput] = None, coverage_number: Optional[str] = None, current_amount: Optional[float] = None, duration_design: Optional[int] = None, effective_date: Optional[date] = None, expiry_date: Optional[date] = None, index: Optional[int] = None, link_guid: Optional[str] = None, lives_type_id: Optional[int] = None, modal_premium: Optional[float] = None, parent_coverage_id: Optional[int] = None, parent_guid: Optional[str] = None, premiums: Optional[List[PremiumCreateParamsInput]] = None, product_code: Optional[str] = None, rating: Optional[RatingParamsInput] = None, sub_standard_ratings: Optional[List[SubstandardRatingCreateParamsInput]] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None, ): self.coverageProductId = coverage_product_id if annual_premium is not None: self.annualPremium = annual_premium if coverage_benefit is not None: self.coverageBenefit = coverage_benefit if coverage_guid is not None: self.coverageGUID = coverage_guid if coverage_life is not None: self.coverageLife = coverage_life if coverage_number is not None: self.coverageNumber = coverage_number if current_amount is not None: self.currentAmount = current_amount if duration_design is not None: self.durationDesign = duration_design if effective_date is not None: self.effectiveDate = effective_date if expiry_date is not None: self.expiryDate = expiry_date if index is not None: self.index = index if link_guid is not None: self.linkGUID = link_guid if lives_type_id is not None: self.livesTypeId = lives_type_id if modal_premium is not None: self.modalPremium = modal_premium if parent_coverage_id is not None: self.parentCoverageId = parent_coverage_id if parent_guid is not None: self.parentGUID = parent_guid if premiums is not None: self.premiums = premiums if product_code is not None: self.productCode = product_code if rating is not None: self.rating = rating if sub_standard_ratings is not None: self.substandardRatings = sub_standard_ratings if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id
# Backward-compatible alias CreateCoverageObject = CoverageCreateParamsInput
[docs] class CoverageUpdateParamsInput(ModelBase): """Maps to CoverageUpdateParamsInput in GraphQL schema."""
[docs] def __init__( self, coverage_id: int, annual_premium: Optional[float] = None, coverage_benefit: Optional[CoverageBenefitParamsInput] = None, coverage_life: Optional[CoverageLifeParamsInput] = None, coverage_number: Optional[str] = None, coverage_product_id: Optional[int] = None, current_amount: Optional[float] = None, duration_design: Optional[int] = None, effective_date: Optional[date] = None, expiry_date: Optional[date] = None, index: Optional[int] = None, lives_type_id: Optional[int] = None, modal_premium: Optional[float] = None, parent_coverage_id: Optional[int] = None, premiums_to_add: Optional[List[PremiumCreateParamsInput]] = None, premiums_to_delete: Optional[List[int]] = None, premiums_to_update: Optional[List[PremiumUpdateParamsInput]] = None, product_code: Optional[str] = None, rating: Optional[RatingParamsInput] = None, substandard_ratings_to_add: Optional[List[SubstandardRatingCreateParamsInput]] = None, substandard_ratings_to_delete: Optional[List[int]] = None, substandard_ratings_to_update: Optional[List[SubstandardRatingUpdateParamsInput]] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None, ): self.id = coverage_id if annual_premium is not None: self.annualPremium = annual_premium if coverage_benefit is not None: self.coverageBenefit = coverage_benefit if coverage_life is not None: self.coverageLife = coverage_life if coverage_number is not None: self.coverageNumber = coverage_number if coverage_product_id is not None: self.coverageProductId = coverage_product_id if current_amount is not None: self.currentAmount = current_amount if duration_design is not None: self.durationDesign = duration_design if effective_date is not None: self.effectiveDate = effective_date if expiry_date is not None: self.expiryDate = expiry_date if index is not None: self.index = index if lives_type_id is not None: self.livesTypeId = lives_type_id if modal_premium is not None: self.modalPremium = modal_premium if parent_coverage_id is not None: self.parentCoverageId = parent_coverage_id if premiums_to_add is not None: self.premiumsToAdd = premiums_to_add if premiums_to_delete is not None: self.premiumsToDelete = premiums_to_delete if premiums_to_update is not None: self.premiumsToUpdate = premiums_to_update if product_code is not None: self.productCode = product_code if rating is not None: self.rating = rating if substandard_ratings_to_add is not None: self.substandardRatingsToAdd = substandard_ratings_to_add if substandard_ratings_to_delete is not None: self.substandardRatingsToDelete = substandard_ratings_to_delete if substandard_ratings_to_update is not None: self.substandardRatingsToUpdate = substandard_ratings_to_update if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id
# Backward-compatible alias UpdateCoverageObject = CoverageUpdateParamsInput
[docs] class TerminateCoverageObject(ModelBase): """Convenience model for terminating a coverage (not a direct schema type)."""
[docs] def __init__( self, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None, coverage_id: int = 0 ): self.id = coverage_id self.terminationDate = termination_date self.terminationReasonId = termination_reason_id
# =============================================== PAYMENT AGREEMENT ====================================================
[docs] class PaymentAgreementCreateParamsInput(ModelBase): """Maps to PaymentAgreementCreateParamsInput in GraphQL schema."""
[docs] def __init__( self, payment_method_id: int, payment_mode_id: int, day_of_month: Optional[int] = None ): self.paymentMethodId = payment_method_id self.paymentModeId = payment_mode_id if day_of_month is not None: self.dayOfMonth = day_of_month
# Backward-compatible alias CreatePaymentAgreementObject = PaymentAgreementCreateParamsInput
[docs] class PaymentAgreementUpdateParamsInput(ModelBase): """Maps to PaymentAgreementUpdateParamsInput in GraphQL schema."""
[docs] def __init__( self, day_of_month: Optional[int] = None, payment_method_id: Optional[int] = None, payment_mode_id: Optional[int] = None ): if day_of_month is not None: self.dayOfMonth = day_of_month if payment_method_id is not None: self.paymentMethodId = payment_method_id if payment_mode_id is not None: self.paymentModeId = payment_mode_id
# Backward-compatible alias UpdatePaymentAgreementObject = PaymentAgreementUpdateParamsInput # ===================================================== POLICY =========================================================
[docs] class PolicyPaymentUpdateParamsInput(ModelBase): """Maps to PolicyPaymentUpdateParamsInput in GraphQL schema."""
[docs] def __init__( self, billed_to_date: Optional[date] = None, grace_amount: Optional[float] = None, grace_period_end_date: Optional[date] = None, next_billed_amount: Optional[float] = None, paid_to_date: Optional[date] = None, premium_paid_end_date: Optional[date] = None, premium_paid_status_id: Optional[int] = None ): if billed_to_date is not None: self.billedToDate = billed_to_date if grace_amount is not None: self.graceAmount = grace_amount if grace_period_end_date is not None: self.gracePeriodEndDate = grace_period_end_date if next_billed_amount is not None: self.nextBilledAmount = next_billed_amount if paid_to_date is not None: self.paidToDate = paid_to_date if premium_paid_end_date is not None: self.premiumPaidEndDate = premium_paid_end_date if premium_paid_status_id is not None: self.premiumPaidStatusId = premium_paid_status_id
# Backward-compatible alias UpdatePolicyPaymentObject = PolicyPaymentUpdateParamsInput
[docs] class PolicyCreateParamsInput(ModelBase): """Maps to PolicyCreateParamsInput in GraphQL schema."""
[docs] def __init__( self, product_id: int, coverages: Optional[List[CoverageCreateParamsInput]] = None, effective_date: Optional[date] = None, issue_date: Optional[date] = None, jurisdiction_id: Optional[int] = None, maturity_date: Optional[date] = None, policy_number: Optional[str] = None, premiums: Optional[List[PremiumCreateParamsInput]] = None, premium_payment_agreement: Optional[PaymentAgreementCreateParamsInput] = None, product_code: Optional[str] = None, referral_source_id: Optional[int] = None, renewal_date: Optional[date] = None, sub_status_id: Optional[int] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None, # Deprecated fields (use premiums list instead) annual_premium: Optional[float] = None, fee_amount: Optional[float] = None, modal_premium: Optional[float] = None, ): self.productId = product_id if coverages is not None: self.coverages = coverages if effective_date is not None: self.effectiveDate = effective_date if issue_date is not None: self.issueDate = issue_date if jurisdiction_id is not None: self.jurisdictionId = jurisdiction_id if maturity_date is not None: self.maturityDate = maturity_date if policy_number is not None: self.policyNumber = policy_number if premiums is not None: self.premiums = premiums if premium_payment_agreement is not None: self.premiumPaymentAgreement = premium_payment_agreement if product_code is not None: self.productCode = product_code if referral_source_id is not None: self.referralSourceId = referral_source_id if renewal_date is not None: self.renewalDate = renewal_date if sub_status_id is not None: self.subStatusId = sub_status_id if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id # Deprecated if annual_premium is not None: self.annualPremium = annual_premium if fee_amount is not None: self.feeAmount = fee_amount if modal_premium is not None: self.modalPremium = modal_premium
# Backward-compatible alias CreatePolicyObject = PolicyCreateParamsInput
[docs] class PolicyUpdateParamsInput(ModelBase): """Maps to PolicyUpdateParamsInput in GraphQL schema."""
[docs] def __init__( self, policy_id: int, coverages_to_add: Optional[List[CoverageCreateParamsInput]] = None, coverages_to_delete: Optional[List[int]] = None, coverages_to_update: Optional[List[CoverageUpdateParamsInput]] = None, effective_date: Optional[date] = None, issue_date: Optional[date] = None, jurisdiction_id: Optional[int] = None, maturity_date: Optional[date] = None, payment: Optional[PolicyPaymentUpdateParamsInput] = None, policy_number: Optional[str] = None, premium_payment_agreement: Optional[PaymentAgreementUpdateParamsInput] = None, premiums_to_add: Optional[List[PremiumCreateParamsInput]] = None, premiums_to_delete: Optional[List[int]] = None, premiums_to_update: Optional[List[PremiumUpdateParamsInput]] = None, product_code: Optional[str] = None, product_id: Optional[int] = None, referral_source_id: Optional[int] = None, renewal_date: Optional[date] = None, sub_status_id: Optional[int] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None, # Deprecated fields (use premiums list instead) annual_premium: Optional[float] = None, fee_amount: Optional[float] = None, modal_premium: Optional[float] = None, ): self.id = policy_id if coverages_to_add is not None: self.coveragesToAdd = coverages_to_add if coverages_to_delete is not None: self.coveragesToDelete = coverages_to_delete if coverages_to_update is not None: self.coveragesToUpdate = coverages_to_update if effective_date is not None: self.effectiveDate = effective_date if issue_date is not None: self.issueDate = issue_date if jurisdiction_id is not None: self.jurisdictionId = jurisdiction_id if maturity_date is not None: self.maturityDate = maturity_date if payment is not None: self.payment = payment if policy_number is not None: self.policyNumber = policy_number if premium_payment_agreement is not None: self.premiumPaymentAgreement = premium_payment_agreement if premiums_to_add is not None: self.premiumsToAdd = premiums_to_add if premiums_to_delete is not None: self.premiumsToDelete = premiums_to_delete if premiums_to_update is not None: self.premiumsToUpdate = premiums_to_update if product_code is not None: self.productCode = product_code if product_id is not None: self.productId = product_id if referral_source_id is not None: self.referralSourceId = referral_source_id if renewal_date is not None: self.renewalDate = renewal_date if sub_status_id is not None: self.subStatusId = sub_status_id if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id # Deprecated if annual_premium is not None: self.annualPremium = annual_premium if fee_amount is not None: self.feeAmount = fee_amount if modal_premium is not None: self.modalPremium = modal_premium
# Backward-compatible alias UpdatePolicyObject = PolicyUpdateParamsInput
[docs] class TerminatePolicyObject(ModelBase): """Convenience model for terminating a policy (not a direct schema type)."""
[docs] def __init__( self, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None, policy_id: int = 0, coverages: Optional[List[TerminateCoverageObject]] = None ): self.id = policy_id self.terminationDate = termination_date self.terminationReasonId = termination_reason_id self.coveragesToUpdate = coverages