"""
Centralize GraphQL Message entities models for Centralize
This module contains all the entities classes definition and models used to create the message sent.
Those models define the messages' input parameters and structure the script need to use
"""
from datetime import date, datetime
from typing import List, Optional
from uuid import UUID
# ======================================================================================================================
# =================================================== MODELS ===========================================================
# ======================================================================================================================
# =================================================== SCHEDULER ========================================================
[docs]
class SchedulerParameter:
[docs]
def __init__(
self,
key: str,
value: str
):
self.key = key
self.value = value
[docs]
class CreateScheduledJobObject:
[docs]
def __init__(
self,
entity_id: int,
entity_type_id: str,
job_id: int,
execution_datetime: datetime,
business_event_id: Optional[int] = None,
user_id: Optional[int] = None,
payload: Optional[str] = None,
parameters: Optional[List[SchedulerParameter]] = None,
entity_type_name: Optional[str] = None,
job_name: Optional[str] = None
):
self.businessEventId = business_event_id
self.entityId = entity_id
self.entityTypeId = entity_type_id
self.entityTypeName = entity_type_name
self.executionDateTime = execution_datetime
self.jobId = job_id
self.jobName = job_name
self.parameters = parameters
self.payload = payload
self.userId = user_id
[docs]
class CreateBusinessEventObject:
[docs]
def __init__(
self,
entity_id: int,
entity_type_id: str,
event_datetime: datetime,
event_type_id: Optional[int] = None,
entity_type_name: Optional[str] = None,
event_type_name: Optional[str] = None,
parameters: Optional[List[SchedulerParameter]] = None,
creation_user_id: int = 1
):
self.creationUserId = creation_user_id
self.entityId = entity_id
self.entityTypeId = entity_type_id
self.entityTypeName = entity_type_name
self.eventDateTime = event_datetime
self.eventTypeId = event_type_id
self.eventTypeName = event_type_name
self.parameters = parameters
# ================================================== COVERAGES =========================================================
[docs]
class CreateCoverageBenefitObject:
[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
):
self.benefitPercentage = benefit_percentage
self.benefitPeriodId = benefit_period_id
self.currentBenefitAmount = current_benefit_amount
self.currentBenefitCurrencyId = current_benefit_currency_id
self.eliminationPeriodId = elimination_period_id
self.expiryDate = expiry_date
self.initialBenefitAmount = initial_benefit_amount
self.initialBenefitCurrencyId = initial_benefit_currency_id
self.livesTypeId = lives_type_id
self.renewalDate = renewal_date
[docs]
class CreateCoverageLifeObject:
[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,
):
self.conversionDate = conversion_date
self.currentAmount = current_amount
self.deathBenefitOptionTypeId = death_benefit_option_type_id
self.durationDesign = duration_design
self.expiryDate = expiry_date
self.initialAmount = initial_amount
self.livesTypeId = lives_type_id
self.renewalDate = renewal_date
[docs]
class CreateRatingObject:
[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
):
self.employmentClassId = employment_class_id
self.issueAge = issue_age
self.issueGenderId = issue_gender_id
self.occupation = occupation
self.tobaccoPremiumBasisId = tobacco_premium_basis_id
self.underwritingClassId = underwriting_class_id
[docs]
class CreateSubStandardRatingObject:
[docs]
def __init__(
self,
participant_role_id: Optional[int] = None,
table_rating_id: Optional[int] = None,
flat_extra_amount: Optional[float] = None,
falt_extra_basis_id: Optional[int] = None,
effective_date: Optional[date] = None,
expiration_date: Optional[date] = None
):
self.participantRoleId = participant_role_id
self.tableRatingId = table_rating_id
self.flatExtraAmount = flat_extra_amount
self.flatExtraBasisId = falt_extra_basis_id
self.effectiveDate = effective_date
self.expirationDate = expiration_date
[docs]
class CreatePremiumObject:
[docs]
def __init__(
self,
premium_type_id: Optional[int] = None,
premium_amount: Optional[float] = None,
effective_date: Optional[date] = None,
expiration_date: Optional[date] = None
):
self.premiumTypeId = premium_type_id
self.premiumAmount = premium_amount
self.effectiveDate = effective_date
self.expirationDate = expiration_date
[docs]
class UpdatePremiumObject:
[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
self.premiumTypeId = premium_type_id
self.premiumAmount = premium_amount
self.effectiveDate = effective_date
self.expirationDate = expiration_date
[docs]
class CreateCoverageObject:
[docs]
def __init__(
self,
coverage_product_id: int,
coverage_guid: Optional[str] = None,
parent_coverage_id: Optional[int] = None,
product_code: Optional[str] = None,
coverage_number: Optional[str] = None,
effective_date: Optional[date] = None,
index: Optional[int] = None,
termination_date: Optional[date] = None,
termination_reason_id: Optional[int] = None,
coverage_benefit: Optional[CreateCoverageBenefitObject] = None,
coverage_life: Optional[CreateCoverageLifeObject] = None,
rating: Optional[CreateRatingObject] = None,
premiums: Optional[List[CreatePremiumObject]] = None,
sub_standard_ratings: Optional[List[CreateSubStandardRatingObject]] = None,
):
self.coverageProductId = coverage_product_id
if coverage_guid:
self.coverageGUID = coverage_guid
if parent_coverage_id:
self.parentCoverageId = parent_coverage_id
if product_code:
self.productCode = product_code
if coverage_number:
self.coverageNumber = coverage_number
if effective_date:
self.effectiveDate = effective_date
if index:
self.index = index
if termination_date:
self.terminationDate = termination_date
if termination_reason_id:
self.terminationReasonId = termination_reason_id
if coverage_benefit:
self.coverageBenefit = coverage_benefit
if coverage_life:
self.coverageLife = coverage_life
if rating:
self.rating = rating
if premiums:
self.premiums = premiums
if sub_standard_ratings:
self.substandardRatings = sub_standard_ratings
[docs]
class UpdateCoverageObject:
[docs]
def __init__(
self,
parent_coverage_id: Optional[int] = None,
product_code: Optional[str] = None,
annual_premium: Optional[float] = None,
modal_premium: Optional[float] = None,
coverage_number: Optional[str] = None,
effective_date: Optional[date] = None,
termination_date: Optional[date] = None,
termination_reason_id: Optional[int] = None,
coverage_product_id: Optional[int] = None,
coverage_benefit: Optional[CreateCoverageBenefitObject] = None,
coverage_life: Optional[CreateCoverageLifeObject] = None,
rating: Optional[CreateRatingObject] = None,
index: Optional[int] = None,
premiums_to_add: Optional[List[CreatePremiumObject]] = None,
premiums_to_delete: Optional[int] = None,
premiums_to_update: Optional[List[UpdatePremiumObject]] = None,
coverage_id: int = None
):
self.id = coverage_id
if coverage_product_id:
self.coverageProductId = coverage_product_id
if parent_coverage_id:
self.parentCoverageId = parent_coverage_id
if product_code:
self.productCode = product_code
if annual_premium:
self.annualPremium = annual_premium
if modal_premium:
self.modalPremium = modal_premium
if coverage_number:
self.coverageNumber = coverage_number
if effective_date:
self.effectiveDate = effective_date
if termination_date:
self.terminationDate = termination_date
if termination_reason_id:
self.terminationReasonId = termination_reason_id
if coverage_benefit:
self.coverageBenefit = coverage_benefit
if coverage_life:
self.coverageLife = coverage_life
if rating:
self.rating = rating
if index:
self.index = index
if premiums_to_add:
self.premiumsToAdd = premiums_to_add
if premiums_to_update:
self.premiumsToUpdate = premiums_to_update
if premiums_to_delete:
self.premiumsToDelete = premiums_to_delete
[docs]
class TerminateCoverageObject:
[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 CreatePaymentAgreementObject:
[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:
self.dayOfMonth = day_of_month
[docs]
class UpdatePaymentAgreementObject:
[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:
self.dayOfMonth = day_of_month
if payment_method_id:
self.paymentMethodId = payment_method_id
if payment_mode_id:
self.paymentModeId = payment_mode_id
# ===================================================== POLICY =========================================================
[docs]
class UpdatePolicyPaymentObject:
[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:
self.billedToDate = billed_to_date
if grace_amount:
self.graceAmount = grace_amount
self.gracePeriodEndDate = grace_period_end_date
if next_billed_amount:
self.nextBilledAmount = next_billed_amount
if paid_to_date:
self.paidToDate = paid_to_date
if premium_paid_end_date:
self.premiumPaidEndDate = premium_paid_end_date
if premium_paid_status_id:
self.premiumPaidStatusId = premium_paid_status_id
[docs]
class CreatePolicyObject:
[docs]
def __init__(
self,
product_id: int,
effective_date: Optional[date] = None,
fee_amount: Optional[float] = None,
issue_date: Optional[date] = None,
jurisdiction_id: Optional[int] = None,
maturity_date: Optional[date] = None,
policy_number: Optional[str] = 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,
coverages: Optional[List[CreateCoverageObject]] = None,
payment_agreement: Optional[CreatePaymentAgreementObject] = None,
premiums: Optional[List[CreatePremiumObject]] = None,
):
self.productId = product_id
if policy_number:
self.policyNumber = policy_number
if product_code:
self.productCode = product_code
if jurisdiction_id:
self.jurisdictionId = jurisdiction_id
if maturity_date:
self.maturityDate = maturity_date
if effective_date:
self.effectiveDate = effective_date
if termination_date:
self.terminationDate = termination_date
if fee_amount:
self.feeAmount = fee_amount
if issue_date:
self.issueDate = issue_date
if referral_source_id:
self.referralSourceId = referral_source_id
if renewal_date:
self.renewalDate = renewal_date
if sub_status_id:
self.subStatusId = sub_status_id
if termination_reason_id:
self.terminationReasonId = termination_reason_id
if coverages:
self.coverages = coverages
if payment_agreement:
self.premiumPaymentAgreement = payment_agreement
if premiums:
self.premiums = premiums
[docs]
class UpdatePolicyObject:
[docs]
def __init__(
self,
policy_id: int,
coverages_to_add: Optional[List[CreateCoverageObject]] = None,
coverages_to_update: Optional[List[UpdateCoverageObject]] = None,
coverages_to_delete: Optional[List[int]] = None,
effective_date: Optional[date] = None,
issue_date: Optional[date] = None,
jurisdiction_id: Optional[int] = None,
maturity_date: Optional[date] = None,
modal_premium: Optional[float] = None,
payment_agreement: Optional[UpdatePaymentAgreementObject] = None,
policy_number: Optional[str] = None,
policy_payment: Optional[UpdatePolicyPaymentObject] = None,
premiums_to_add: Optional[List[CreatePremiumObject]] = None,
premiums_to_update: Optional[List[UpdatePremiumObject]] = None,
premiums_to_delete: Optional[List[int]] = None,
product_code: Optional[str] = None,
product_id: Optional[int] = 0,
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,
):
self.id = policy_id
if coverages_to_add:
self.coveragesToAdd = coverages_to_add
if coverages_to_update:
self.coveragesToUpdate = coverages_to_update
if coverages_to_delete:
self.coveragesToDelete = coverages_to_delete
if effective_date:
self.effectiveDate = effective_date
if issue_date:
self.issueDate = issue_date
if jurisdiction_id:
self.jurisdictionId = jurisdiction_id
if maturity_date:
self.maturityDate = maturity_date
if modal_premium:
self.modalPremium = modal_premium
if payment_agreement:
self.premiumPaymentAgreement = payment_agreement
if policy_number:
self.policyNumber = policy_number
if policy_payment:
self.payment = policy_payment
if premiums_to_add:
self.premiumsToAdd = premiums_to_add
if premiums_to_update:
self.premiumsToUpdate = premiums_to_update
if premiums_to_delete:
self.premiumsToDelete = premiums_to_delete
if product_code:
self.productCode = product_code
if product_id:
self.productId = product_id
if referral_source_id:
self.referralSourceId = referral_source_id
if renewal_date:
self.renewalDate = renewal_date
if sub_status_id:
self.subStatusId = sub_status_id
if termination_date:
self.terminationDate = termination_date
if termination_reason_id:
self.terminationReasonId = termination_reason_id
[docs]
class TerminatePolicyObject:
[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
# ================================================= APPLICATION ========================================================
[docs]
class CreateApplicationObject:
[docs]
def __init__(
self,
application_type_id: int,
application_number: Optional[str] = None,
approved_date: Optional[date] = None,
cash_with_application_amount: Optional[float] = None,
declined_date: Optional[date] = None,
delivery_method_id: Optional[int] = None,
effective_date: Optional[date] = None,
interview_type_id: Optional[int] = None,
is_calculated_in_production: Optional[bool] = None,
is_delivered: Optional[bool] = None,
is_replacement: Optional[bool] = None,
issue_date: Optional[date] = None,
reference_number: Optional[str] = None,
signed_date: Optional[date] = None,
signed_jurisdiction_id: Optional[int] = None,
submission_type_id: Optional[int] = None,
submitted_date: Optional[date] = None,
sub_status_id: Optional[int] = None,
termination_date: Optional[date] = None,
termination_reason_id: Optional[int] = None,
policy: Optional[CreatePolicyObject] = None,
):
self.applicationTypeId = application_type_id
if application_number:
self.applicationNumber = application_number
if approved_date:
self.approvedDate = approved_date
if cash_with_application_amount:
self.cashWithApplicationAmount = cash_with_application_amount
if declined_date:
self.declinedDate = declined_date
if delivery_method_id:
self.deliveryMethodId = delivery_method_id
if effective_date:
self.effectiveDate = effective_date
if interview_type_id:
self.interviewTypeId = interview_type_id
if is_calculated_in_production:
self.isCalculatedInProduction = is_calculated_in_production
if is_delivered:
self.isDelivered = is_delivered
if is_replacement:
self.isReplacement = is_replacement
if issue_date:
self.issueDate = issue_date
if reference_number:
self.referenceNumber = reference_number
if signed_date:
self.signedDate = signed_date
if signed_jurisdiction_id:
self.signedJurisdictionId = signed_jurisdiction_id
if submission_type_id:
self.submissionTypeId = submission_type_id
if submitted_date:
self.submittedDate = submitted_date
if sub_status_id:
self.subStatusId = sub_status_id
if termination_date:
self.terminationDate = termination_date
if termination_reason_id:
self.terminationReasonId = termination_reason_id
if policy:
self.policy = policy
[docs]
class UpdateApplicationObject:
[docs]
def __init__(
self,
application_id: int = 0,
application_number: Optional[str] = None,
application_type_id: Optional[int] = None,
approved_date: Optional[date] = None,
cash_with_application_amount: Optional[float] = None,
declined_date: Optional[date] = None,
delivery_method_id: Optional[int] = None,
effective_date: Optional[date] = None,
interview_type_id: Optional[int] = None,
is_calculated_in_production: Optional[bool] = None,
is_delivered: Optional[bool] = None,
is_replacement: Optional[bool] = None,
issued_date: Optional[date] = None,
reference_number: Optional[str] = None,
signed_date: Optional[date] = None,
signed_jurisdiction_id: Optional[int] = None,
status_id: Optional[int] = None,
sub_status_id: Optional[int] = None,
submission_type_id: Optional[int] = None,
submitted_date: Optional[date] = None,
termination_date: Optional[date] = None,
termination_reason_id: Optional[int] = None,
policy: Optional[UpdatePolicyObject] = None,
):
self.id = application_id
if application_number:
self.applicationNumber = application_number
if application_type_id:
self.applicationTypeId = application_type_id
if approved_date:
self.approvedDate = approved_date
if cash_with_application_amount:
self.cashWithApplicationAmount = cash_with_application_amount
if declined_date:
self.declinedDate = declined_date
if delivery_method_id:
self.deliveryMethodId = delivery_method_id
if effective_date:
self.effectiveDate = effective_date
if interview_type_id:
self.interviewTypeId = interview_type_id
if is_calculated_in_production:
self.isCalculatedInProduction = is_calculated_in_production
if is_delivered:
self.isDelivered = is_delivered
if is_replacement:
self.isReplacement = is_replacement
if issued_date:
self.issuedDate = issued_date
if reference_number:
self.referenceNumber = reference_number
if signed_date:
self.signedDate = signed_date
if signed_jurisdiction_id:
self.signedJurisdictionId = signed_jurisdiction_id
if status_id:
self.statusId = status_id
if sub_status_id:
self.subStatusId = sub_status_id
if submission_type_id:
self.submissionTypeId = submission_type_id
if submitted_date:
self.submittedDate = submitted_date
if termination_date:
self.terminationDate = termination_date
if termination_reason_id:
self.terminationReasonId = termination_reason_id
if policy:
self.policy = policy
[docs]
class TerminateApplicationObject:
[docs]
def __init__(
self,
termination_date: Optional[date] = None,
termination_reason_id: Optional[int] = None,
application_id: int = 0,
coverages: Optional[List[TerminateCoverageObject]] = None,
signed_date: Optional[date] = None,
declined_date: Optional[date] = None
):
self.id = application_id
self.terminationDate = termination_date
self.terminationReasonId = termination_reason_id
self.declinedDate = declined_date
if signed_date:
self.signedDate = signed_date
self.policy = {
"id": application_id,
"terminationDate": termination_date,
"terminationReasonId": termination_reason_id,
"coveragesToUpdate": coverages
}
# ==================================================== CONTACT =========================================================
[docs]
class AddressObject:
[docs]
def __init__(
self,
address_type_id: int,
additional_info: Optional[str] = None,
city: Optional[str] = None,
country_id: Optional[int] = None, # TODO mapping code with Party.Contact.Address.Country
main: Optional[bool] = None,
postal_code: Optional[str] = None,
jurisdiction_id: Optional[int] = None, # code.LookUp.jurisdiction
street: Optional[str] = None,
):
self.additionalInfo = additional_info
self.addressTypeId = address_type_id
self.city = city
self.countryId = country_id
self.main = main
self.postalCode = postal_code
self.stateId = jurisdiction_id
self.street = street
[docs]
class EmailObject:
[docs]
def __init__(
self,
email_type_id: int,
email_address: Optional[str] = None,
main: Optional[bool] = None
):
self.emailAddress = email_address
self.emailTypeId = email_type_id
self.main = main
[docs]
class PhoneObject:
[docs]
def __init__(
self,
phone_type_id: int,
extension: Optional[str] = None,
main: Optional[bool] = None,
phone_value: Optional[str] = None
):
self.extension = extension
self.main = main
self.phoneTypeId = phone_type_id
self.phoneValue = phone_value
[docs]
class TranslationObject:
[docs]
def __init__(
self,
translation_id: int = 0, # TODO mapping code
translation: str = ""
):
self.id = translation_id
self.translation = translation
[docs]
class DisplayNameObject:
[docs]
def __init__(
self,
translations: Optional[List[TranslationObject]] = None,
default: str = ""
):
self.default = default
self.translations = translations
[docs]
class IndividualObject:
[docs]
def __init__(
self,
display_name: DisplayNameObject,
birth_date: Optional[date] = None,
death_date: Optional[date] = None,
first_name: Optional[str] = None,
gender_id: Optional[int] = None, # code.LookUp.gender
last_name: Optional[str] = None,
marital_status_id: Optional[int] = None, # TODO mapping code
middle_name: Optional[str] = None,
occupation: Optional[str] = None,
occupation_title: Optional[str] = None,
orig_name: Optional[str] = None,
suffix: Optional[str] = None,
title: Optional[str] = None,
preferred_language_id: Optional[int] = None # code.LookUp.preferred_language
):
self.birthDate = birth_date
self.deathDate = death_date
self.displayName = display_name
self.firstName = first_name
self.genderId = gender_id
self.lastName = last_name
self.maritalStatusId = marital_status_id
self.middleName = middle_name
self.occupation = occupation
self.occupationTitle = occupation_title
self.origName = orig_name
self.preferredLanguageId = preferred_language_id
self.suffix = suffix
self.title = title
[docs]
class OrganizationObject:
[docs]
def __init__(
self,
display_name: DisplayNameObject,
dissolved_date: Optional[date] = None,
established_date: Optional[date] = None,
name: Optional[DisplayNameObject] = None,
website: Optional[str] = None,
preferred_language_id: int = 0, # code.LookUp.preferred_language
):
self.displayName = display_name
self.dissolvedDate = dissolved_date
self.establishedDate = established_date
self.name = name
self.preferredLanguageId = preferred_language_id
self.website = website
# ===================================================== PARTY =========================================================
[docs]
class PartyObject:
[docs]
def __init__(
self,
party_type_id: int,
contact: Optional[ContactObject] = None,
individual: Optional[IndividualObject] = None,
organization: Optional[OrganizationObject] = None
):
self.partyTypeId = party_type_id
if contact:
self.contact = contact
if individual:
self.individual = individual
if organization:
self.organization = organization
[docs]
class PartyUpdateObject:
"""Model for party update mutation"""
[docs]
def __init__(
self,
id: int,
contact: Optional[ContactParamsInput] = None,
party_type_id: Optional[int] = None,
external_identifier: Optional[str] = None,
reference_number: Optional[str] = None
):
self.id = id
if contact is not None:
self.contact = contact
if party_type_id is not None:
self.partyTypeId = party_type_id
if external_identifier is not None:
self.externalIdentifier = external_identifier
if reference_number is not None:
self.referenceNumber = reference_number
# ===================================================== ROLE ===========================================================
[docs]
class BeneficiaryRoleObject:
[docs]
def __init__(
self,
beneficiary_type_id: Optional[int] = None,
relationship_to_insured_id: Optional[int] = None,
):
self.beneficiaryTypeId = beneficiary_type_id
self.relationshipToInsuredId = relationship_to_insured_id
[docs]
class TrusteeRoleObject:
[docs]
def __init__(
self,
trust_type_id: Optional[int] = None,
):
self.trustTypeId = trust_type_id
[docs]
class RoleObject:
[docs]
def __init__(
self,
party_role_id: int,
agent_contract_id: Optional[int] = None,
effective_date: Optional[date] = None,
shared_percent: Optional[float] = None,
termination_date: Optional[date] = None,
termination_reason_id: Optional[int] = None,
is_irrevocable: Optional[bool] = None,
entity_id: Optional[int] = None,
entity_type_id: Optional[str] = None,
link_UUID: Optional[str] = None,
beneficiary_role: Optional[BeneficiaryRoleObject] = None,
trustee_role: Optional[TrusteeRoleObject] = None,
):
self.partyRoleId = party_role_id
if agent_contract_id:
self.agentContractId = agent_contract_id
if entity_id:
self.entityId = entity_id
if entity_type_id:
self.entityTypeId = entity_type_id
if link_UUID:
self.linkUUID = link_UUID
if effective_date:
self.effectiveDate = effective_date
if shared_percent:
self.sharedPercent = shared_percent
if termination_date:
self.terminationDate = termination_date
if termination_reason_id:
self.terminationReasonId = termination_reason_id
if is_irrevocable:
self.isIrrevocable = is_irrevocable
if beneficiary_role:
self.beneficiary = beneficiary_role
if trustee_role:
self.trustee = trustee_role
[docs]
class CreateParticipantObject:
[docs]
def __init__(
self,
party_id: Optional[int] = None,
party: Optional[PartyObject] = None,
roles: Optional[List[RoleObject]] = None
):
self.partyId = party_id
if party is not None:
self.party = party
self.roles = roles
[docs]
class UpdateParticipantObject:
[docs]
def __init__(
self,
participant_id: Optional[int] = None,
roles_to_add: Optional[List[RoleObject]] = [],
roles_to_update: Optional[List[ParticipantRoleEntityUpdateParamsInput]] = [],
roles_to_delete: Optional[List[int]] = []
):
self.id = participant_id
self.rolesToAdd = roles_to_add
self.rolesToUpdate = roles_to_update
self.rolesToDelete = roles_to_delete
# ==================================================== FINANCE =========================================================
[docs]
class CreateFinanceTransactionObject:
[docs]
def __init__(
self,
amount: float,
amount_type_id: int,
basis_amount: float,
currency_id: int,
shared_percent: float,
rate: float,
transaction_date: date,
transaction_type_guid: UUID, #str,
status_id: int,
description: Optional[str] = None,
party_id: Optional[int] = None,
statement_id: Optional[int] = None,
reference_entity_id: Optional[int] = None,
reference_entity_type_id: Optional[int] = None,
):
self.amount = amount
self.amountTypeId = amount_type_id
self.basisAmount = basis_amount
self.currencyId = currency_id
self.description = description
self.partyId = party_id
self.sharedPercent = shared_percent
self.rate = rate
self.statementId = statement_id
self.transactionDate = transaction_date
self.transactionTypeGuid = transaction_type_guid
self.statusId = status_id
# self.referenceEntityId = reference_entity_id
# self.referenceEntityTypeId = reference_entity_type_id
[docs]
class CreateFinanceStatementObject:
[docs]
def __init__(
self,
statement_type_guid: str,
issuer_party_id: int,
recipient_party_id: int,
period_start_date: date,
period_end_date: date,
total_amount: float,
currency_id: int,
status_id: int,
transaction_ids: list[int]
):
self.statementTypeGuid = statement_type_guid
self.issuerPartyId = issuer_party_id
self.recipientPartyId = recipient_party_id
self.periodStartDate = period_start_date
self.periodEndDate = period_end_date
self.totalAmount = total_amount
self.currencyId = currency_id
self.statusId = status_id
self.transactionIds = transaction_ids
# ==================================================== PAYMENT ACCOUNT =========================================================
[docs]
class GatewayAccountObject:
[docs]
def __init__(
self,
name: str,
value: str,
):
self.name = name
self.value = value
[docs]
class PayableEntityObject:
[docs]
def __init__(
self,
entity_id: int,
entity_type_id: str
):
self.entityId = entity_id
self.entityTypeId = entity_type_id
[docs]
class PayableChargeObject:
[docs]
def __init__(
self,
amount: float,
entity_id: int,
entity_type_id: str,
amount_type_guid: str,
description: str,
):
self.entityTypeId = entity_type_id
self.entityId = entity_id
self.description = description
self.amount = amount
self.amountTypeGuid = amount_type_guid
[docs]
class PayableEntityRequestObject:
[docs]
def __init__(
self,
entity_id: int,
entity_type_id: str,
description: str,
charges: List[PayableChargeObject]
):
self.entityId = entity_id
self.entityTypeId = entity_type_id
self.description = description
self.charges = charges
[docs]
class CreatePaymentAccountObject:
[docs]
class StripeCreditCard:
# This object is to create a new Stripe Credit Card Account, along a new entity mutation
[docs]
def __init__(
self,
account_id: Optional[int] = None, # to link to an existing account instead
default_currency_id: Optional[int] = None,
payment_gateway_id: Optional[int] = None,
customer_id: str = None,
payment_method_id: str = None
):
from ace.centralize.codes import Billing
gateway_account_params = [
GatewayAccountObject(
name=Billing.Gateway.AccountParameters.CUSTOMER_ID.NAME,
value=customer_id
),
GatewayAccountObject(
name=Billing.Gateway.AccountParameters.PAYMENT_METHOD_ID.NAME,
value=payment_method_id
)
]
if account_id:
self.id = account_id
else:
if payment_gateway_id:
self.paymentGatewayId = payment_gateway_id
if default_currency_id:
self.defaultCurrencyId = default_currency_id
self.gatewayAccountParams = gateway_account_params
[docs]
class StripeEFT:
# This object is to create a new Stripe Credit Card Account, along a new entity mutation
[docs]
def __init__(
self,
account_id: Optional[int] = None, # to link to an existing account instead
default_currency_id: Optional[int] = None,
payment_gateway_id: Optional[int] = None,
customer_id: str = None,
payment_method_id: str = None,
mandate_id: str = None
):
from ace.centralize.codes import Billing
gateway_account_params = [
GatewayAccountObject(
name=Billing.Gateway.AccountParameters.CUSTOMER_ID.NAME,
value=customer_id
),
GatewayAccountObject(
name=Billing.Gateway.AccountParameters.PAYMENT_METHOD_ID.NAME,
value=payment_method_id
),
GatewayAccountObject(
name=Billing.Gateway.AccountParameters.MANDATE_ID.NAME,
value=mandate_id
)
]
if account_id:
self.id = account_id
else:
if payment_gateway_id:
self.paymentGatewayId = payment_gateway_id
if default_currency_id:
self.defaultCurrencyId = default_currency_id
self.gatewayAccountParams = gateway_account_params
[docs]
class CreateAccountObject:
# This object is to create a new Payment Account on its own, whether to link it to existing entities or not
[docs]
def __init__(
self,
gateway_account_params: List[GatewayAccountObject],
default_currency_id: Optional[int] = None,
party_id: Optional[int] = None,
payable_entities: List[PayableEntityObject] = None,
payment_gateway_id: Optional[int] = None,
):
self.defaultCurrencyId = default_currency_id
self.gatewayAccountParams = gateway_account_params
self.partyId = party_id
self.payableEntities = payable_entities
self.paymentGatewayId = payment_gateway_id
[docs]
class CreatePaymentRequestObject:
[docs]
def __init__(
self,
entities: List[PayableEntityRequestObject],
request_id: str,
account_id: Optional[int] = None,
currency_id: Optional[int] = None,
description: Optional[str] = None,
payment_request_datetime_utc: Optional[datetime] = None
):
self.accountId = account_id
self.currencyId = currency_id
self.description = description
self.entities = entities
self.requestId = request_id
self.paymentRequestDateTimeUTC = payment_request_datetime_utc
# ===================================================== NOTE ===========================================================
[docs]
class CreateNoteObject:
# This object is to create a new note on its own, whether to link it to existing entities or not
[docs]
def __init__(
self,
description: str,
entity_id: int,
entity_type_id: str,
note_type_id: int,
priority_id: int
):
self.description = description
self.entityId = entity_id
self.entityTypeId = entity_type_id
self.noteTypeId = note_type_id
self.priorityId = priority_id
[docs]
class CreateEntityNoteObject:
# This object is to create a new note, along a new entity mutation
[docs]
def __init__(
self,
description: str,
note_type_id: Optional[int] = None,
priority_id: Optional[int] = None
):
self.description = description
self.noteTypeId = note_type_id
self.priorityId = priority_id
[docs]
class UpdateEntityNoteObject:
# This object is to update a note, along an entity mutation
[docs]
def __init__(
self,
note_id: int,
description: Optional[str] = None,
note_type_id: Optional[int] = None,
priority_id: Optional[int] = None
):
self.id = note_id
self.description = description
self.noteTypeId = note_type_id
self.priorityId = priority_id
# ===================================================== METADATA =======================================================
# ===================================================== AGENT =======================================================
[docs]
class CreateAgentContractObject:
[docs]
def __init__(
self,
carrier_id: int,
agent_contract_number: str,
effective_date: date,
contract_category_guid: str
):
self.carrierId = carrier_id
self.agentContractNumber = agent_contract_number
self.effectiveDate = effective_date
self.contractCategoryGuid = contract_category_guid
[docs]
class CreateAgentObject:
[docs]
def __init__(
self,
agent_number: str,
activation_date: Optional[date] = None,
contracts: Optional[List[CreateAgentContractObject]] = None
):
self.agentNumber = agent_number
if activation_date:
self.activationDate = activation_date
if contracts:
self.contracts = contracts
[docs]
class UpdateAgentObject:
[docs]
def __init__(
self,
agent_id: int,
agent_number: Optional[str] = None,
activation_date: Optional[date] = None,
contracts_to_add: Optional[List[CreateAgentContractObject]] = None,
termination_date: Optional[date] = None,
):
self.id = agent_id
if agent_number:
self.agentNumber = agent_number
if termination_date:
self.terminationDate = termination_date
if activation_date:
self.activationDate = activation_date
if contracts_to_add:
self.contractsToAdd = contracts_to_add
# ===================================================== REQUIREMENT =======================================================
[docs]
class CreateRequirementInfoObject:
[docs]
def __init__(
self,
requirement_id: int,
entity_type_id: str,
entity_id: int,
priority_id: int,
status_id: int,
sub_status_id: Optional[int] = None,
applied_to_party_id: Optional[int] = None,
received_date: Optional[date] = None,
due_date: Optional[date] = None,
requested_date: Optional[date] = None,
hold_date: Optional[date] = None,
fulfilled_date: Optional[date] = None,
completed_date: Optional[date] = None,
cancelled_date: Optional[date] = None,
internal_reference_number: Optional[str] = None,
source_reference_number: Optional[str] = None,
):
self.requirementId = requirement_id
self.entityTypeId = entity_type_id
self.entityId = entity_id
self.priorityId = priority_id
self.statusId = status_id
self.subStatusId = sub_status_id
self.internalReferenceNumber = internal_reference_number
if applied_to_party_id:
self.appliedToPartyId = applied_to_party_id
if requested_date:
self.requestedDate = requested_date
if source_reference_number:
self.sourceReferenceNumber = source_reference_number
[docs]
class UpdateRequirementInfoObject:
[docs]
def __init__(
self,
requirement_info_id: int,
requirement_id: int,
entity_type_id: str,
entity_id: int,
priority_id: int,
status_id: int,
sub_status_id: Optional[int] = None,
status_reason_description: Optional[str] = None,
requirement_description : Optional[str] = None,
applied_to_party_id: Optional[int] = None,
received_date: Optional[date] = None,
due_date: Optional[date] = None,
requested_date: Optional[date] = None,
hold_date: Optional[date] = None,
fulfilled_date: Optional[date] = None,
completed_date: Optional[date] = None,
cancelled_date: Optional[date] = None,
internal_reference_number: Optional[str] = None,
source_reference_number: Optional[str] = None,
):
self.requirementInfoId = requirement_info_id
self.requirementId = requirement_id
self.entityTypeId = entity_type_id
self.entityId = entity_id
self.priorityId = priority_id
self.statusId = status_id
self.subStatusId = sub_status_id
if status_reason_description:
self.statusReasonDescription = status_reason_description
if requirement_description:
self.requirementDescription = requirement_description
if applied_to_party_id:
self.appliedToPartyId = applied_to_party_id
if requested_date:
self.requestedDate = requested_date
if source_reference_number:
self.sourceReferenceNumber = source_reference_number