2026-01-26 10:30:49 -05:00

85 lines
4.8 KiB
Python

import graphene
from graphene import InputObjectType
class CustomerCreateInput(InputObjectType):
"""
Input type for creating a new customer.
"""
name = graphene.String(required=True, description="Name of the customer")
# Primary contact fields
primary_contact_first_name = graphene.String(required=True, description="First name of primary contact")
primary_contact_last_name = graphene.String(required=True, description="Last name of primary contact")
primary_contact_phone = graphene.String(required=True, description="Phone number of primary contact")
primary_contact_email = graphene.String(required=True, description="Email of primary contact")
# Secondary contact fields (optional)
secondary_contact_first_name = graphene.String(description="First name of secondary contact")
secondary_contact_last_name = graphene.String(description="Last name of secondary contact")
secondary_contact_phone = graphene.String(description="Phone number of secondary contact")
secondary_contact_email = graphene.String(description="Email of secondary contact")
# Billing information
billing_contact_first_name = graphene.String(required=True, description="First name of billing contact")
billing_contact_last_name = graphene.String(required=True, description="Last name of billing contact")
billing_street_address = graphene.String(required=True, description="Billing street address")
billing_city = graphene.String(required=True, description="Billing city")
billing_state = graphene.String(required=True, description="Billing state")
billing_zip_code = graphene.String(required=True, description="Billing ZIP code")
billing_email = graphene.String(required=True, description="Billing email")
billing_terms = graphene.String(required=True, description="Billing terms")
# Date fields
start_date = graphene.DateTime(required=True, description="Start date of the customer relationship (YYYY-MM-DD)")
end_date = graphene.DateTime(description="End date of the customer relationship (YYYY-MM-DD)")
class CustomerUpdateInput(InputObjectType):
"""
Input type for updating an existing customer.
"""
name = graphene.String(description="Name of the customer")
# Primary contact fields
primary_contact_first_name = graphene.String(description="First name of primary contact")
primary_contact_last_name = graphene.String(description="Last name of primary contact")
primary_contact_phone = graphene.String(description="Phone number of primary contact")
primary_contact_email = graphene.String(description="Email of primary contact")
# Secondary contact fields
secondary_contact_first_name = graphene.String(description="First name of secondary contact")
secondary_contact_last_name = graphene.String(description="Last name of secondary contact")
secondary_contact_phone = graphene.String(description="Phone number of secondary contact")
secondary_contact_email = graphene.String(description="Email of secondary contact")
# Billing information
billing_contact_first_name = graphene.String(description="First name of billing contact")
billing_contact_last_name = graphene.String(description="Last name of billing contact")
billing_street_address = graphene.String(description="Billing street address")
billing_city = graphene.String(description="Billing city")
billing_state = graphene.String(description="Billing state")
billing_zip_code = graphene.String(description="Billing ZIP code")
billing_email = graphene.String(description="Billing email")
billing_terms = graphene.String(description="Billing terms")
# Date fields
start_date = graphene.DateTime(description="Start date of the customer relationship (YYYY-MM-DD)")
end_date = graphene.DateTime(description="End date of the customer relationship (YYYY-MM-DD)")
class CustomerFilterInput(InputObjectType):
"""
Input type for filtering customers.
"""
id = graphene.ID(description="Filter by customer ID")
name = graphene.String(description="Filter by customer name (partial match)")
is_active = graphene.Boolean(description="Filter by active status")
has_accounts = graphene.Boolean(description="Filter by whether the customer has accounts")
start_date_after = graphene.String(description="Filter by start date after (YYYY-MM-DD)")
start_date_before = graphene.String(description="Filter by start date before (YYYY-MM-DD)")
billing_city = graphene.String(description="Filter by billing city")
billing_state = graphene.String(description="Filter by billing state")
billing_zip_code = graphene.String(description="Filter by billing ZIP code")
primary_contact_email = graphene.String(description="Filter by primary contact email (partial match)")
billing_email = graphene.String(description="Filter by billing email (partial match)")