
# ----------------------------------------------------------
# LIST ALL (admin/debug)
# ----------------------------------------------------------
query listInvoiceTemplates(
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  invoiceTemplates(offset: $offset, limit: $limit) {
    id
    name
    ownerId

    vendorId
    businessId
    orderId

    paymentTerms
    invoiceNumber
    issueDate
    dueDate
    hub
    managerName
    vendorNumber
    roles
    charges
    otherCharges
    subtotal
    amount
    notes
    staffCount
    chargesCount

    createdAt
    updatedAt
    createdBy

    vendor { id companyName }
    business { id businessName email contactName }
    order { id eventName status orderType }
  }
}

# ----------------------------------------------------------
# GET BY ID
# ----------------------------------------------------------
query getInvoiceTemplateById($id: UUID!) @auth(level: USER) {
  invoiceTemplate(id: $id) {
    id
    name
    ownerId

    vendorId
    businessId
    orderId

    paymentTerms
    invoiceNumber
    issueDate
    dueDate
    hub
    managerName
    vendorNumber
    roles
    charges
    otherCharges
    subtotal
    amount
    notes
    staffCount
    chargesCount

    createdAt
    updatedAt
    createdBy

    vendor { id companyName }
    business { id businessName email contactName }
    order { id eventName status orderType }
  }
}

# ----------------------------------------------------------
# LIST BY OWNER (my templates)
# ----------------------------------------------------------
query listInvoiceTemplatesByOwnerId(
  $ownerId: UUID!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  invoiceTemplates(
    where: { ownerId: { eq: $ownerId } }
    offset: $offset
    limit: $limit
    orderBy: { updatedAt: DESC }
  ) {
    id
    name
    ownerId

    vendorId
    businessId
    orderId

    paymentTerms
    invoiceNumber
    issueDate
    dueDate
    hub
    managerName
    vendorNumber
    roles
    charges
    otherCharges
    subtotal
    amount
    notes
    staffCount
    chargesCount

    createdAt
    updatedAt
    createdBy

    vendor { id companyName }
    business { id businessName email contactName }
    order { id eventName status orderType }
  }
}

# ----------------------------------------------------------
# LIST BY VENDOR (templates tied to a vendor)
# ----------------------------------------------------------
query listInvoiceTemplatesByVendorId(
  $vendorId: UUID!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  invoiceTemplates(
    where: { vendorId: { eq: $vendorId } }
    offset: $offset
    limit: $limit
    orderBy: { updatedAt: DESC }
  ) {
    id
    name
    ownerId

    vendorId
    businessId
    orderId

    paymentTerms
    invoiceNumber
    issueDate
    dueDate
    hub
    managerName
    vendorNumber
    roles
    charges
    otherCharges
    subtotal
    amount
    notes
    staffCount
    chargesCount

    createdAt
    updatedAt
    createdBy

    vendor { id companyName }
    business { id businessName email contactName }
    order { id eventName status orderType }
  }
}

# ----------------------------------------------------------
# LIST BY BUSINESS (templates tied to a business)
# ----------------------------------------------------------
query listInvoiceTemplatesByBusinessId(
  $businessId: UUID!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  invoiceTemplates(
    where: { businessId: { eq: $businessId } }
    offset: $offset
    limit: $limit
    orderBy: { updatedAt: DESC }
  ) {
    id
    name
    ownerId

    vendorId
    businessId
    orderId

    paymentTerms
    invoiceNumber
    issueDate
    dueDate
    hub
    managerName
    vendorNumber
    roles
    charges
    otherCharges
    subtotal
    amount
    notes
    staffCount
    chargesCount

    createdAt
    updatedAt
    createdBy

    vendor { id companyName }
    business { id businessName email contactName }
    order { id eventName status orderType }
  }
}

# ----------------------------------------------------------
# LIST BY ORDER (templates tied to a specific order)
# ----------------------------------------------------------
query listInvoiceTemplatesByOrderId(
  $orderId: UUID!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  invoiceTemplates(
    where: { orderId: { eq: $orderId } }
    offset: $offset
    limit: $limit
    orderBy: { updatedAt: DESC }
  ) {
    id
    name
    ownerId

    vendorId
    businessId
    orderId

    paymentTerms
    invoiceNumber
    issueDate
    dueDate
    hub
    managerName
    vendorNumber
    roles
    charges
    otherCharges
    subtotal
    amount
    notes
    staffCount
    chargesCount

    createdAt
    updatedAt
    createdBy

    vendor { id companyName }
    business { id businessName email contactName }
    order { id eventName status orderType }
  }
}

# ----------------------------------------------------------
# SEARCH (by name) within an owner
# ----------------------------------------------------------
query searchInvoiceTemplatesByOwnerAndName(
  $ownerId: UUID!
  $name: String!
  $offset: Int
  $limit: Int
) @auth(level: USER) {
  invoiceTemplates(
    where: {
      ownerId: { eq: $ownerId }
      name: { eq: $name }
    }
    offset: $offset
    limit: $limit
    orderBy: { updatedAt: DESC }
  ) {
    id
    name
    ownerId

    vendorId
    businessId
    orderId

    paymentTerms
    invoiceNumber
    issueDate
    dueDate
    hub
    managerName
    vendorNumber
    roles
    charges
    otherCharges
    subtotal
    amount
    notes
    staffCount
    chargesCount

    createdAt
    updatedAt
    createdBy

    vendor { id companyName }
    business { id businessName email contactName }
    order { id eventName status orderType }
  }
}
