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