Source code for ace.centralize.models.agent

"""
    Agent models for Centralize

    Models for agents, contracts, agreements, licenses, E&O policies,
    overrides, decisions, and lines of authority.

    Based on the Agent GraphQL schema (AgentCreateGqlParamsInput, AgentUpdateGqlParamsInput, etc.)
"""
from datetime import date
from typing import List, Optional
from uuid import UUID

from ace.centralize.models.base import ModelBase


# ================================================== LINE OF AUTHORITY =================================================

[docs] class LineOfAuthorityCreateParamsInput(ModelBase):
[docs] def __init__( self, line_of_authority_id: int, effective_date: Optional[date] = None, expiration_date: Optional[date] = None, origination_date: Optional[date] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None ): self.lineOfAuthorityId = line_of_authority_id if effective_date is not None: self.effectiveDate = effective_date if expiration_date is not None: self.expirationDate = expiration_date if origination_date is not None: self.originationDate = origination_date if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id
[docs] class LineOfAuthorityUpdateParamsInput(ModelBase):
[docs] def __init__( self, id: int, line_of_authority_id: Optional[int] = None, effective_date: Optional[date] = None, expiration_date: Optional[date] = None, origination_date: Optional[date] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None ): self.id = id if line_of_authority_id is not None: self.lineOfAuthorityId = line_of_authority_id if effective_date is not None: self.effectiveDate = effective_date if expiration_date is not None: self.expirationDate = expiration_date if origination_date is not None: self.originationDate = origination_date if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id
# ===================================================== LICENSE ========================================================
[docs] class LicenseCreateParamsInput(ModelBase):
[docs] def __init__( self, jurisdiction_id: int, license_class_type_id: int, license_number: str, resident_of_jurisdiction: bool, effective_date: Optional[date] = None, expiration_date: Optional[date] = None, lines_of_authority: Optional[List[LineOfAuthorityCreateParamsInput]] = None, name_on_license: Optional[str] = None, origination_date: Optional[date] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None ): self.jurisdictionId = jurisdiction_id self.licenseClassTypeId = license_class_type_id self.licenseNumber = license_number self.residentOfJurisdiction = resident_of_jurisdiction if effective_date is not None: self.effectiveDate = effective_date if expiration_date is not None: self.expirationDate = expiration_date if lines_of_authority is not None: self.linesOfAuthority = lines_of_authority if name_on_license is not None: self.nameOnLicense = name_on_license if origination_date is not None: self.originationDate = origination_date if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id
[docs] class LicenseUpdateParamsInput(ModelBase):
[docs] def __init__( self, id: int, jurisdiction_id: Optional[int] = None, license_class_type_id: Optional[int] = None, license_number: Optional[str] = None, resident_of_jurisdiction: Optional[bool] = None, effective_date: Optional[date] = None, expiration_date: Optional[date] = None, lines_of_authority_to_add: Optional[List[LineOfAuthorityCreateParamsInput]] = None, lines_of_authority_to_delete: Optional[List[int]] = None, lines_of_authority_to_update: Optional[List[LineOfAuthorityUpdateParamsInput]] = None, name_on_license: Optional[str] = None, origination_date: Optional[date] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None ): self.id = id if jurisdiction_id is not None: self.jurisdictionId = jurisdiction_id if license_class_type_id is not None: self.licenseClassTypeId = license_class_type_id if license_number is not None: self.licenseNumber = license_number if resident_of_jurisdiction is not None: self.residentOfJurisdiction = resident_of_jurisdiction if effective_date is not None: self.effectiveDate = effective_date if expiration_date is not None: self.expirationDate = expiration_date if lines_of_authority_to_add is not None: self.linesOfAuthorityToAdd = lines_of_authority_to_add if lines_of_authority_to_delete is not None: self.linesOfAuthorityToDelete = lines_of_authority_to_delete if lines_of_authority_to_update is not None: self.linesOfAuthorityToUpdate = lines_of_authority_to_update if name_on_license is not None: self.nameOnLicense = name_on_license if origination_date is not None: self.originationDate = origination_date if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id
# ==================================================== EO POLICY ======================================================
[docs] class EOPolicyCreateParamsInput(ModelBase):
[docs] def __init__( self, carrier_name: Optional[str] = None, certificate_number: Optional[str] = None, effective_date: Optional[date] = None, policy_number: Optional[str] = None, renewal_date: Optional[date] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None ): if carrier_name is not None: self.carrierName = carrier_name if certificate_number is not None: self.certificateNumber = certificate_number if effective_date is not None: self.effectiveDate = effective_date if policy_number is not None: self.policyNumber = policy_number if renewal_date is not None: self.renewalDate = renewal_date if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id
[docs] class EOPolicyUpdateParamsInput(ModelBase):
[docs] def __init__( self, id: int, carrier_name: Optional[str] = None, certificate_number: Optional[str] = None, effective_date: Optional[date] = None, policy_number: Optional[str] = None, renewal_date: Optional[date] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None ): self.id = id if carrier_name is not None: self.carrierName = carrier_name if certificate_number is not None: self.certificateNumber = certificate_number if effective_date is not None: self.effectiveDate = effective_date if policy_number is not None: self.policyNumber = policy_number if renewal_date is not None: self.renewalDate = renewal_date if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id
# ==================================================== OVERRIDE =======================================================
[docs] class OverrideCreateParamsInput(ModelBase):
[docs] def __init__( self, payable_party_id: int, source_id: int, carrier_id: Optional[int] = None, line_of_business_id: Optional[int] = None, priority_order: Optional[int] = None, product_id: Optional[int] = None, product_type_id: Optional[int] = None, rate: Optional[float] = None ): self.payablePartyId = payable_party_id self.sourceId = source_id if carrier_id is not None: self.carrierId = carrier_id if line_of_business_id is not None: self.lineOfBusinessId = line_of_business_id if priority_order is not None: self.priorityOrder = priority_order if product_id is not None: self.productId = product_id if product_type_id is not None: self.productTypeId = product_type_id if rate is not None: self.rate = rate
[docs] class OverrideUpdateParamsInput(ModelBase):
[docs] def __init__( self, id: int, payable_party_id: Optional[int] = None, source_id: Optional[int] = None, carrier_id: Optional[int] = None, line_of_business_id: Optional[int] = None, priority_order: Optional[int] = None, product_id: Optional[int] = None, product_type_id: Optional[int] = None, rate: Optional[float] = None ): self.id = id if payable_party_id is not None: self.payablePartyId = payable_party_id if source_id is not None: self.sourceId = source_id if carrier_id is not None: self.carrierId = carrier_id if line_of_business_id is not None: self.lineOfBusinessId = line_of_business_id if priority_order is not None: self.priorityOrder = priority_order if product_id is not None: self.productId = product_id if product_type_id is not None: self.productTypeId = product_type_id if rate is not None: self.rate = rate
# =================================================== DECISION ========================================================
[docs] class DecisionOutputCreateParamsInput(ModelBase):
[docs] def __init__( self, amount_type_id: int, rate_value: float ): self.amountTypeId = amount_type_id self.rateValue = rate_value
[docs] class DecisionOutputUpdateParamsInput(ModelBase):
[docs] def __init__( self, amount_type_id: Optional[int] = None, rate_value: Optional[float] = None ): if amount_type_id is not None: self.amountTypeId = amount_type_id if rate_value is not None: self.rateValue = rate_value
[docs] class DecisionCreateParamsInput(ModelBase):
[docs] def __init__( self, decision_guid: Optional[str] = None, decision_output: Optional[DecisionOutputCreateParamsInput] = None, effective_date: Optional[date] = None, priority: Optional[str] = None, termination_date: Optional[date] = None, amount_type_list: Optional[List[int]] = None, line_of_business_list: Optional[List[int]] = None, product_type_list: Optional[List[int]] = None ): if decision_guid is not None: self.decisionGuid = decision_guid if decision_output is not None: self.decisionOutput = decision_output if effective_date is not None: self.effectiveDate = effective_date if priority is not None: self.priority = priority if termination_date is not None: self.terminationDate = termination_date if amount_type_list is not None: self.amountTypeList = amount_type_list if line_of_business_list is not None: self.lineOfBusinessList = line_of_business_list if product_type_list is not None: self.productTypeList = product_type_list
[docs] class DecisionUpdateParamsInput(ModelBase):
[docs] def __init__( self, id: int, decision_output: Optional[DecisionOutputUpdateParamsInput] = None, effective_date: Optional[date] = None, priority: Optional[str] = None, termination_date: Optional[date] = None, amount_type_to_add: Optional[List[int]] = None, amount_type_to_delete: Optional[List[int]] = None, line_of_business_to_add: Optional[List[int]] = None, line_of_business_to_delete: Optional[List[int]] = None, product_type_to_add: Optional[List[int]] = None, product_type_to_delete: Optional[List[int]] = None ): self.id = id if decision_output is not None: self.decisionOutput = decision_output if effective_date is not None: self.effectiveDate = effective_date if priority is not None: self.priority = priority if termination_date is not None: self.terminationDate = termination_date if amount_type_to_add is not None: self.amountTypeToAdd = amount_type_to_add if amount_type_to_delete is not None: self.amountTypeToDelete = amount_type_to_delete if line_of_business_to_add is not None: self.lineOfBusinessToAdd = line_of_business_to_add if line_of_business_to_delete is not None: self.lineOfBusinessToDelete = line_of_business_to_delete if product_type_to_add is not None: self.productTypeToAdd = product_type_to_add if product_type_to_delete is not None: self.productTypeToDelete = product_type_to_delete
[docs] class DecisionListCreateParamsInput(ModelBase):
[docs] def __init__( self, decision_type_id: int, decisions: List[DecisionCreateParamsInput] ): self.decisionTypeId = decision_type_id self.decisions = decisions
[docs] class DecisionListUpdateParamsInput(ModelBase):
[docs] def __init__( self, decision_type_id: int, decisions_to_add: Optional[List[DecisionCreateParamsInput]] = None, decisions_to_delete: Optional[List[int]] = None, decisions_to_update: Optional[List[DecisionUpdateParamsInput]] = None ): self.decisionTypeId = decision_type_id if decisions_to_add is not None: self.decisionsToAdd = decisions_to_add if decisions_to_delete is not None: self.decisionsToDelete = decisions_to_delete if decisions_to_update is not None: self.decisionsToUpdate = decisions_to_update
# =================================================== AGREEMENT =======================================================
[docs] class AgreementCreateParamsInput(ModelBase):
[docs] def __init__( self, agreement_role_id: int, commission_payable_agent_id: Optional[int] = None, commission_schedule_id: Optional[int] = None, contract_level_id: Optional[int] = None, decisions: Optional[List[DecisionListCreateParamsInput]] = None, distribution_channel_id: Optional[int] = None, effective_date: Optional[date] = None, overrides: Optional[List[OverrideCreateParamsInput]] = None, parent_contract_id: Optional[int] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None ): self.agreementRoleId = agreement_role_id if commission_payable_agent_id is not None: self.commissionPayableAgentId = commission_payable_agent_id if commission_schedule_id is not None: self.commissionScheduleId = commission_schedule_id if contract_level_id is not None: self.contractLevelId = contract_level_id if decisions is not None: self.decisions = decisions if distribution_channel_id is not None: self.distributionChannelId = distribution_channel_id if effective_date is not None: self.effectiveDate = effective_date if overrides is not None: self.overrides = overrides if parent_contract_id is not None: self.parentContractId = parent_contract_id if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id
[docs] class AgreementUpdateParamsInput(ModelBase):
[docs] def __init__( self, id: int, commission_payable_agent_id: Optional[int] = None, commission_schedule_id: Optional[int] = None, contract_level_id: Optional[int] = None, decisions: Optional[List[DecisionListUpdateParamsInput]] = None, distribution_channel_id: Optional[int] = None, effective_date: Optional[date] = None, overrides_to_add: Optional[List[OverrideCreateParamsInput]] = None, overrides_to_delete: Optional[List[int]] = None, overrides_to_update: Optional[List[OverrideUpdateParamsInput]] = None, parent_contract_id: Optional[int] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None ): self.id = id if commission_payable_agent_id is not None: self.commissionPayableAgentId = commission_payable_agent_id if commission_schedule_id is not None: self.commissionScheduleId = commission_schedule_id if contract_level_id is not None: self.contractLevelId = contract_level_id if decisions is not None: self.decisions = decisions if distribution_channel_id is not None: self.distributionChannelId = distribution_channel_id if effective_date is not None: self.effectiveDate = effective_date if overrides_to_add is not None: self.overridesToAdd = overrides_to_add if overrides_to_delete is not None: self.overridesToDelete = overrides_to_delete if overrides_to_update is not None: self.overridesToUpdate = overrides_to_update if parent_contract_id is not None: self.parentContractId = parent_contract_id if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id
# =================================================== CONTRACT ========================================================
[docs] class ContractCreateParamsInput(ModelBase):
[docs] def __init__( self, agent_contract_number: Optional[str] = None, agreements: Optional[List[AgreementCreateParamsInput]] = None, carrier_id: Optional[int] = None, contract_category_guid: Optional[str] = None, contract_guid: Optional[str] = None, effective_date: Optional[date] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None ): if agent_contract_number is not None: self.agentContractNumber = agent_contract_number if agreements is not None: self.agreements = agreements if carrier_id is not None: self.carrierId = carrier_id if contract_category_guid is not None: self.contractCategoryGuid = contract_category_guid if contract_guid is not None: self.contractGuid = contract_guid if effective_date is not None: self.effectiveDate = effective_date if termination_date is not None: self.terminationDate = termination_date if termination_reason_id is not None: self.terminationReasonId = termination_reason_id
[docs] class ContractUpdateParamsInput(ModelBase):
[docs] def __init__( self, id: int, agent_contract_number: Optional[str] = None, agreements_to_add: Optional[List[AgreementCreateParamsInput]] = None, agreements_to_delete: Optional[List[int]] = None, agreements_to_update: Optional[List[AgreementUpdateParamsInput]] = None, contract_category_guid: Optional[str] = None, effective_date: Optional[date] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None ): self.id = id if agent_contract_number is not None: self.agentContractNumber = agent_contract_number if agreements_to_add is not None: self.agreementsToAdd = agreements_to_add if agreements_to_delete is not None: self.agreementsToDelete = agreements_to_delete if agreements_to_update is not None: self.agreementsToUpdate = agreements_to_update if contract_category_guid is not None: self.contractCategoryGuid = contract_category_guid if effective_date is not None: self.effectiveDate = effective_date 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 for the old CreateAgentContractObject CreateAgentContractObject = ContractCreateParamsInput # ===================================================== AGENT =========================================================
[docs] class AgentCreateGqlParamsInput(ModelBase):
[docs] def __init__( self, agent_number: Optional[str] = None, activation_date: Optional[date] = None, agent_category_id: Optional[int] = None, contracts: Optional[List[ContractCreateParamsInput]] = None, effective_date: Optional[date] = None, eo_policies: Optional[List[EOPolicyCreateParamsInput]] = None, hiring_date: Optional[date] = None, licenses: Optional[List[LicenseCreateParamsInput]] = None, sub_status_id: Optional[int] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None, vesting_date: Optional[date] = None ): if agent_number is not None: self.agentNumber = agent_number if activation_date is not None: self.activationDate = activation_date if agent_category_id is not None: self.agentCategoryId = agent_category_id if contracts is not None: self.contracts = contracts if effective_date is not None: self.effectiveDate = effective_date if eo_policies is not None: self.eoPolicies = eo_policies if hiring_date is not None: self.hiringDate = hiring_date if licenses is not None: self.licenses = licenses 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 if vesting_date is not None: self.vestingDate = vesting_date
# Backward-compatible alias for the old CreateAgentObject CreateAgentObject = AgentCreateGqlParamsInput
[docs] class AgentUpdateGqlParamsInput(ModelBase):
[docs] def __init__( self, agent_id: int, activation_date: Optional[date] = None, agent_category_id: Optional[int] = None, agent_number: Optional[str] = None, contracts_to_add: Optional[List[ContractCreateParamsInput]] = None, contracts_to_delete: Optional[List[int]] = None, contracts_to_update: Optional[List[ContractUpdateParamsInput]] = None, effective_date: Optional[date] = None, eo_policies_to_add: Optional[List[EOPolicyCreateParamsInput]] = None, eo_policies_to_delete: Optional[List[int]] = None, eo_policies_to_update: Optional[List[EOPolicyUpdateParamsInput]] = None, hiring_date: Optional[date] = None, licenses_to_add: Optional[List[LicenseCreateParamsInput]] = None, licenses_to_delete: Optional[List[int]] = None, licenses_to_update: Optional[List[LicenseUpdateParamsInput]] = None, sub_status_id: Optional[int] = None, termination_date: Optional[date] = None, termination_reason_id: Optional[int] = None, vesting_date: Optional[date] = None ): self.id = agent_id if activation_date is not None: self.activationDate = activation_date if agent_category_id is not None: self.agentCategoryId = agent_category_id if agent_number is not None: self.agentNumber = agent_number if contracts_to_add is not None: self.contractsToAdd = contracts_to_add if contracts_to_delete is not None: self.contractsToDelete = contracts_to_delete if contracts_to_update is not None: self.contractsToUpdate = contracts_to_update if effective_date is not None: self.effectiveDate = effective_date if eo_policies_to_add is not None: self.eoPoliciesToAdd = eo_policies_to_add if eo_policies_to_delete is not None: self.eoPoliciesToDelete = eo_policies_to_delete if eo_policies_to_update is not None: self.eoPoliciesToUpdate = eo_policies_to_update if hiring_date is not None: self.hiringDate = hiring_date if licenses_to_add is not None: self.licensesToAdd = licenses_to_add if licenses_to_delete is not None: self.licensesToDelete = licenses_to_delete if licenses_to_update is not None: self.licensesToUpdate = licenses_to_update 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 if vesting_date is not None: self.vestingDate = vesting_date
# Backward-compatible alias for the old UpdateAgentObject UpdateAgentObject = AgentUpdateGqlParamsInput