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

43 lines
1.2 KiB
Python

import graphene
from graphene import List
from backend.core.repositories import InvoiceRepository
from backend.graphql_api.types import InvoiceType
from backend.graphql_api.inputs import InvoiceFilterInput
class InvoiceQueries(graphene.ObjectType):
"""Invoice query operations"""
invoice = graphene.Field(
InvoiceType,
id=graphene.ID(required=True)
)
invoices = graphene.Field(
List(InvoiceType),
filter=InvoiceFilterInput()
)
def resolve_invoice(self, info, id):
return InvoiceRepository.get_by_id(id)
def resolve_invoices(self, info, filter=None):
if not filter:
return InvoiceRepository.get_all()
if filter.customer_id:
return InvoiceRepository.get_by_customer(filter.customer_id)
if filter.status:
return InvoiceRepository.get_by_status(filter.status)
return InvoiceRepository.filter_invoices(
customer_id=filter.customer_id,
status=filter.status,
date_from=filter.start_date,
date_to=filter.end_date,
account_id=None, # account_id is not in InvoiceFilterInput
project_id=None # project_id is not in InvoiceFilterInput
)