Custom Fields Queries

Custom Fields

Custom fields allow you to add custom data to any entity in Erplain. They use a morph relation pattern, allowing values to be attached to any supported entity type.

Available fields

CustomField

FieldTypeDescription
idIntUnique identifier.
labelStringDisplay label.
identifierStringMachine-readable identifier.
input_typeCustomFieldInputTypeInput widget type.
model_typeCustomFieldModelTypeTarget entity type.
metadataJSONAdditional metadata (e.g., select options).
weightIntSort order.
values[CustomFieldValue]All values for this field.

CustomFieldValue

FieldTypeDescription
idIntUnique identifier.
custom_field_idIntFK to CustomField.
custom_fieldCustomFieldAssociated field definition.
custom_field_valuable_idIntMorph ID (entity instance).
custom_field_valuable_typeStringMorph type (e.g., "Product").
text_valueStringValue for Text, Selectlist, Radios, Checkboxes.
textarea_valueStringValue for Textarea.
number_valueFloatValue for Number.
boolean_valueBooleanValue for Boolean.
date_valueDateValue for Date.
datetime_valueDateTimeValue for Datetime.
valueMixedVirtual accessor - returns the correct typed value.

EntityCustomField

FieldTypeDescription
custom_field_idIDFK to CustomField.
custom_fieldCustomFieldField definition.
values[CustomFieldValue]Values for this field.

Enums

CustomFieldInputType

ValueDB ColumnDescription
Texttext_valueSingle-line text.
Textareatextarea_valueMulti-line text.
Numbernumber_valueNumeric value.
Booleanboolean_valueTrue/false.
Datedate_valueDate only (Y-m-d).
Datetimedatetime_valueDate + time.
Selectlisttext_valueDropdown (options in metadata).
Radiostext_valueRadio buttons.
Checkboxestext_valueMultiple checkboxes.

CustomFieldModelType

ValueEntity
CustomerContact (Customer)
SupplierContact (Supplier)
EmployeeEmployee/User
ProductProduct
VariantProduct Variant
EstimateEstimate
OrderSales Order
ShippingOrderShipping Order
InvoiceInvoice
SubscriptionSubscription
ProductReturnProduct Return
RefundRefund
CreditNoteCredit Note
PurchasePurchase Order
PurchaseReceiptPurchase Receipt
StockEntryStock Entry
StockRemovalStock Removal
StockTransferStock Transfer
PaymentPayment

CustomField

Returns a single custom field by id.

query GetCustomField($id: ID!) {
  CustomField(id: $id) {
    id
    label
    identifier
    input_type
    model_type
    metadata
    weight
    values {
      id
      custom_field_valuable_id
      custom_field_valuable_type
      text_value
      number_value
      boolean_value
    }
  }
}

CustomFields

Returns a paginated list of custom fields with sorting and filters.

query CustomFields(
  $orderBy: [QueryCustomFieldsOrderByOrderByClause!]
  $where: QueryCustomFieldsWhereWhereConditions
  $search: String
) {
  CustomFields(orderBy: $orderBy, where: $where, search: $search) {
    id
    label
    identifier
    input_type
    model_type
    weight
  }
}

Filters

The following fields can be used in the where parameter:

id, label, identifier, model_type, input_type.

Sorting

You can sort results using the orderBy parameter:

  • id
  • label
  • identifier
  • input_type
  • model_type
  • weight

Using Custom Fields on Entities

Custom fields are accessible on any supported entity via the custom_fields field:

query GetProduct($id: ID!) {
  Product(id: $id) {
    id
    label
    custom_fields {
      custom_field_id
      custom_field {
        label
        identifier
        input_type
      }
      values {
        text_value
        number_value
        boolean_value
        date_value
      }
    }
  }
}

Supported Entities

EntityQuery
CustomerCustomer(id: $id) { custom_fields { ... } }
SupplierSupplier(id: $id) { custom_fields { ... } }
EmployeeEmployee(id: $id) { custom_fields { ... } }
ProductProduct(id: $id) { custom_fields { ... } }
VariantVariant(id: $id) { custom_fields { ... } }
OrderOrder(id: $id) { custom_fields { ... } }
EstimateEstimate(id: $id) { custom_fields { ... } }
InvoiceInvoice(id: $id) { custom_fields { ... } }
ShippingOrderShippingOrder(id: $id) { custom_fields { ... } }
PurchasePurchase(id: $id) { custom_fields { ... } }
PurchaseReceiptPurchaseReceipt(id: $id) { custom_fields { ... } }
ProductReturnProductReturn(id: $id) { custom_fields { ... } }
RefundRefund(id: $id) { custom_fields { ... } }
CreditNoteCreditNote(id: $id) { custom_fields { ... } }
StockAdjustmentStockAdjustment(id: $id) { custom_fields { ... } }
PaymentPayment(id: $id) { custom_fields { ... } }
SubscriptionSubscription(id: $id) { custom_fields { ... } }

Special case - Product: Products have an additional variant_custom_fields field that returns custom fields from the first variant.