ModelInventory module
Fulfillment
A model in the Inventory module, with 46 members for templates, 43 API properties and 60 members for admin templates.
Templates view
Properties 44
Take no arguments.
-
#
getStatusLabels() -
array - Gets all available statuses with their labels, in the wording of the fulfillment's type. A pickup keeps the
readyanddeliveredstatuses but reads "Ready for collection" and "Collected"; a fulfillment with nothing to ship reads "Delivered digitally". The label of the current status is alwaysgetStatusDisplay(). -
#
getStatusDisplay() -
string - Gets the status display label, in the wording of the fulfillment's type. A pickup keeps the
readyanddeliveredstatuses but reads "Ready for collection" and "Collected"; a delivered fulfillment with nothing to ship reads "Delivered digitally". -
#
isNothingToShip() -
bool - Whether the selected rate's method has nothing to ship: digital products, gift cards and services Such a fulfillment is completed when its order is paid, goes straight from pending to delivered, holds no stock of its own, and gets no shipments or packing slip.
-
#
isCompletedAutomatically() -
bool - Whether the fulfillment was delivered by the system rather than by a person: a nothing-to-ship fulfillment completed as its order was paid
-
#
isPending() -
bool - Is the fulfillment still pending — nothing picked, packed, shipped or cancelled yet
-
#
isReady() -
bool - Is the fulfillment picked and packed, waiting for the carrier or, for a pickup, for the customer
-
#
isDelivered() -
bool - Has the customer received the goods: delivered to them, or collected by them for a pickup
-
#
getResolvedType() -
string - How the goods reach the customer: the stored type, or for a row written before the column existed, inferred from its shape A delivery address means delivery, otherwise pickup.
-
#
isSkippingShipping() -
bool - Whether the fulfillment goes straight to delivered: its method has nothing to ship and it has not left the warehouse One already in transit - shipped before its method was switched to nothing to ship - finishes its type's lifecycle, stock movements included.
-
#
getAllowedActions() -
array - The lifecycle actions the fulfillment allows now, for templates and API consumers Response models only expose getters, so this is how a card decides which buttons to show; each value names the
can*()check it stands for. -
#
isStockTracked() -
bool - Whether the fulfillment's stock is tracked in the inventory ledger: at least one line holds a reservation row Only then does a lifecycle transition move stock. A fulfillment built while inventory tracking was off holds none, whatever the setting says now.
-
#
getTypeDisplay() -
string - How the goods reach the customer, as a label: "Delivery", "Pickup", or "Digital" when there is nothing to ship
-
#
getCustomerName() -
string - The customer the order is for, by name: the person, or the billing name for a guest
-
#
getTrackingSummary() -
string - The latest shipment's tracking code, followed by how many more shipments there are: "AB123 +2 more"
-
#
getItemTotalAsMoney() -
Money - Gets the item total as a Money object. Represents the sum of all items' Amount values. The items are this fulfillment's lines, so this is the value of the goods in it, before discount and tax.
-
#
getShippingTotalAsMoney() -
Money - Gets the shipping total as a Money object. Represents the net shipping total. Tax on shipping is tracked in Tax Total. It is the selected shipping rate, which excludes tax, and zero until a rate is selected. A discount the order carries on shipping is not part of this fulfillment, see
getDiscountTotalAsMoney(). -
#
getDiscountTotalAsMoney() -
Money - Gets the discount total as a Money object. Represents the sum of discount values across all line items. An order-level discount reaches this only in as far as it was pushed down onto the order's items — a discount the order carries on shipping or as a standalone adjustment is not represented here.
-
#
getTaxTotalAsMoney() -
Money - Gets the tax total as a Money object. Represents the sum of tax values across all line items, including shipping. The lines' Tax values plus the tax on the selected shipping rate, mirroring how the order's Tax Total is composed.
-
#
getTotalAsMoney() -
Money - Gets the grand total as a Money object. Represents the final value calculated as
Item Total + Shipping Total - Discount Total + Tax Total. This is what the fulfillment is worth — the figure a packing slip, a customs declaration or a parcel's declared value is drawn from — and it is derived on every call rather than stored, because the order and its invoices remain the financial record. The fulfillments of an order are not guaranteed to sum to that order: an order-level discount or surcharge that was never pushed down onto its items has no line to belong to, and an item not yet allocated to any fulfillment is in none of them. -
#
getId() -
?int -
#
getStatus() -
?string -
#
getType() -
?string -
#
getOrder() -
?BaseOrder -
#
getTransactions() -
?Collection<Transaction> -
#
getShipments() -
?Collection<Shipment> -
#
getShippingRates() -
?Collection<Rate> -
#
getFulfillmentItems() -
?Collection<FulfillmentItem> -
#
getLogs() -
?Collection<FulfillmentLog> -
#
getExternalId() -
?string -
#
isHierarchicalModel()Not in API & Jobs -
bool - Check whether a model is a hierarchical model, i.e. can have children
Methods 2
Take arguments. The API serialises only getters that need none.
-
#
getLogForStatus(string $status) -
?FulfillmentLog - The latest status log entry that moved the fulfillment into the given status
-
#
getStatusReachedAt(string $status) -
?DateTime - When the fulfillment reached the given status: its creation for pending, otherwise the status log
No members match the filter.
API & Jobs view
API & JobsEach property is a key in REST API responses and job payloads. Its name is the template getter without get, is or has. Methods that need arguments are not available here.
Properties 43
Read-only values on the record.
-
#
statusLabels -
array - Gets all available statuses with their labels, in the wording of the fulfillment's type. A pickup keeps the
readyanddeliveredstatuses but reads "Ready for collection" and "Collected"; a fulfillment with nothing to ship reads "Delivered digitally". The label of the current status is alwaysgetStatusDisplay(). -
#
statusDisplay -
string - Gets the status display label, in the wording of the fulfillment's type. A pickup keeps the
readyanddeliveredstatuses but reads "Ready for collection" and "Collected"; a delivered fulfillment with nothing to ship reads "Delivered digitally". -
#
nothingToShip -
bool - Whether the selected rate's method has nothing to ship: digital products, gift cards and services Such a fulfillment is completed when its order is paid, goes straight from pending to delivered, holds no stock of its own, and gets no shipments or packing slip.
-
#
completedAutomatically -
bool - Whether the fulfillment was delivered by the system rather than by a person: a nothing-to-ship fulfillment completed as its order was paid
-
#
ready -
bool - Is the fulfillment picked and packed, waiting for the carrier or, for a pickup, for the customer
-
#
delivered -
bool - Has the customer received the goods: delivered to them, or collected by them for a pickup
-
#
resolvedType -
string - How the goods reach the customer: the stored type, or for a row written before the column existed, inferred from its shape A delivery address means delivery, otherwise pickup.
-
#
skippingShipping -
bool - Whether the fulfillment goes straight to delivered: its method has nothing to ship and it has not left the warehouse One already in transit - shipped before its method was switched to nothing to ship - finishes its type's lifecycle, stock movements included.
-
#
allowedActions -
array - The lifecycle actions the fulfillment allows now, for templates and API consumers Response models only expose getters, so this is how a card decides which buttons to show; each value names the
can*()check it stands for. -
#
stockTracked -
bool - Whether the fulfillment's stock is tracked in the inventory ledger: at least one line holds a reservation row Only then does a lifecycle transition move stock. A fulfillment built while inventory tracking was off holds none, whatever the setting says now.
-
#
typeDisplay -
string - How the goods reach the customer, as a label: "Delivery", "Pickup", or "Digital" when there is nothing to ship
-
#
customerName -
string - The customer the order is for, by name: the person, or the billing name for a guest
-
#
trackingSummary -
string - The latest shipment's tracking code, followed by how many more shipments there are: "AB123 +2 more"
-
#
itemTotalAsMoney -
Money - Gets the item total as a Money object. Represents the sum of all items' Amount values. The items are this fulfillment's lines, so this is the value of the goods in it, before discount and tax.
-
#
shippingTotalAsMoney -
Money - Gets the shipping total as a Money object. Represents the net shipping total. Tax on shipping is tracked in Tax Total. It is the selected shipping rate, which excludes tax, and zero until a rate is selected. A discount the order carries on shipping is not part of this fulfillment, see
getDiscountTotalAsMoney(). -
#
discountTotalAsMoney -
Money - Gets the discount total as a Money object. Represents the sum of discount values across all line items. An order-level discount reaches this only in as far as it was pushed down onto the order's items — a discount the order carries on shipping or as a standalone adjustment is not represented here.
-
#
taxTotalAsMoney -
Money - Gets the tax total as a Money object. Represents the sum of tax values across all line items, including shipping. The lines' Tax values plus the tax on the selected shipping rate, mirroring how the order's Tax Total is composed.
-
#
totalAsMoney -
Money - Gets the grand total as a Money object. Represents the final value calculated as
Item Total + Shipping Total - Discount Total + Tax Total. This is what the fulfillment is worth — the figure a packing slip, a customs declaration or a parcel's declared value is drawn from — and it is derived on every call rather than stored, because the order and its invoices remain the financial record. The fulfillments of an order are not guaranteed to sum to that order: an order-level discount or surcharge that was never pushed down onto its items has no line to belong to, and an item not yet allocated to any fulfillment is in none of them. -
#
id -
?int -
#
status -
?string -
#
type -
?string -
#
order -
?BaseOrder -
#
transactions -
?Collection<Transaction> -
#
shipments -
?Collection<Shipment> -
#
shippingRates -
?Collection<Rate> -
#
fulfillmentItems -
?Collection<FulfillmentItem> -
#
logs -
?Collection<FulfillmentLog> -
#
externalId -
?string
No members match the filter.
Admin view
AdminAvailable in cdna-admin templates. Copy an admin template into your site repository to change how this record is edited.
Properties 57
Take no arguments.
-
#
getStatusLabels() -
array - Gets all available statuses with their labels, in the wording of the fulfillment's type. A pickup keeps the
readyanddeliveredstatuses but reads "Ready for collection" and "Collected"; a fulfillment with nothing to ship reads "Delivered digitally". The label of the current status is alwaysgetStatusDisplay(). -
#
getStatusDisplay() -
string - Gets the status display label, in the wording of the fulfillment's type. A pickup keeps the
readyanddeliveredstatuses but reads "Ready for collection" and "Collected"; a delivered fulfillment with nothing to ship reads "Delivered digitally". -
#
isNothingToShip() -
bool - Whether the selected rate's method has nothing to ship: digital products, gift cards and services Such a fulfillment is completed when its order is paid, goes straight from pending to delivered, holds no stock of its own, and gets no shipments or packing slip.
-
#
isCompletedAutomatically() -
bool - Whether the fulfillment was delivered by the system rather than by a person: a nothing-to-ship fulfillment completed as its order was paid
-
#
isPending() -
bool - Is the fulfillment still pending — nothing picked, packed, shipped or cancelled yet
-
#
isReady() -
bool - Is the fulfillment picked and packed, waiting for the carrier or, for a pickup, for the customer
-
#
isDelivered() -
bool - Has the customer received the goods: delivered to them, or collected by them for a pickup
-
#
getResolvedType() -
string - How the goods reach the customer: the stored type, or for a row written before the column existed, inferred from its shape A delivery address means delivery, otherwise pickup.
-
#
isSkippingShipping() -
bool - Whether the fulfillment goes straight to delivered: its method has nothing to ship and it has not left the warehouse One already in transit - shipped before its method was switched to nothing to ship - finishes its type's lifecycle, stock movements included.
-
#
getAllowedActions() -
array - The lifecycle actions the fulfillment allows now, for templates and API consumers Response models only expose getters, so this is how a card decides which buttons to show; each value names the
can*()check it stands for. -
#
isStockTracked() -
bool - Whether the fulfillment's stock is tracked in the inventory ledger: at least one line holds a reservation row Only then does a lifecycle transition move stock. A fulfillment built while inventory tracking was off holds none, whatever the setting says now.
-
#
getTypeDisplay() -
string - How the goods reach the customer, as a label: "Delivery", "Pickup", or "Digital" when there is nothing to ship
-
#
getCustomerName() -
string - The customer the order is for, by name: the person, or the billing name for a guest
-
#
getTrackingSummary() -
string - The latest shipment's tracking code, followed by how many more shipments there are: "AB123 +2 more"
-
#
getItemTotalAsMoney() -
Money - Gets the item total as a Money object. Represents the sum of all items' Amount values. The items are this fulfillment's lines, so this is the value of the goods in it, before discount and tax.
-
#
getShippingTotalAsMoney() -
Money - Gets the shipping total as a Money object. Represents the net shipping total. Tax on shipping is tracked in Tax Total. It is the selected shipping rate, which excludes tax, and zero until a rate is selected. A discount the order carries on shipping is not part of this fulfillment, see
getDiscountTotalAsMoney(). -
#
getDiscountTotalAsMoney() -
Money - Gets the discount total as a Money object. Represents the sum of discount values across all line items. An order-level discount reaches this only in as far as it was pushed down onto the order's items — a discount the order carries on shipping or as a standalone adjustment is not represented here.
-
#
getTaxTotalAsMoney() -
Money - Gets the tax total as a Money object. Represents the sum of tax values across all line items, including shipping. The lines' Tax values plus the tax on the selected shipping rate, mirroring how the order's Tax Total is composed.
-
#
getTotalAsMoney() -
Money - Gets the grand total as a Money object. Represents the final value calculated as
Item Total + Shipping Total - Discount Total + Tax Total. This is what the fulfillment is worth — the figure a packing slip, a customs declaration or a parcel's declared value is drawn from — and it is derived on every call rather than stored, because the order and its invoices remain the financial record. The fulfillments of an order are not guaranteed to sum to that order: an order-level discount or surcharge that was never pushed down onto its items has no line to belong to, and an item not yet allocated to any fulfillment is in none of them. -
#
getId() -
?int -
#
getStatus() -
?string -
#
getType() -
?string -
#
getOrder() -
?BaseOrder -
#
getTransactions() -
?Collection<Transaction> -
#
getShipments() -
?Collection<Shipment> -
#
getShippingRates() -
?Collection<Rate> -
#
getFulfillmentItems() -
?Collection<FulfillmentItem> -
#
getLogs() -
?Collection<FulfillmentLog> -
#
getExternalId() -
?string -
#
isHierarchicalModel()Not in API & Jobs -
bool - Check whether a model is a hierarchical model, i.e. can have children
-
#
getTitle()Admin only -
string - The card heading: "Delivery from Richmond", "Pickup at Newport", just the type when there is no warehouse (inventory not tracked), or "Digital delivery" when there is nothing to ship
-
#
getWarehouseName()Admin only -
string - The warehouse's name for the static fulfillments list, empty when there is none (inventory not tracked, or nothing to ship) Empty rather than null: the list's select filter offers every distinct value of the column, and would offer a null as a literal "null".
-
#
getProgressSteps()Admin only -
array - The progress bar: one step per status of the fulfillment's type, each with whether it is reached A cancelled fulfillment, or one with nothing to ship, has no progress bar. The time of a reached step comes from
getStatusReachedAt(), called for the step's status, and not from this array: a response model converts a date it returns directly to the site's timezone, but not one inside an array. -
#
isOpenByDefault()Admin only -
bool - Whether the card starts expanded: every fulfillment still being worked on; delivered and cancelled ones start collapsed to one line
-
#
getLatestShipment()Admin only -
?Shipment - The most recently added shipment, shown on the collapsed card
-
#
getRecipientName()Admin only -
string - Who the parcel is for, by name: the person or company a delivery's address names, or the customer who collects a pickup. The counter staff must be able to tell whose parcel it is. A guest's person record usually has no name, and its full name is then empty rather than null, so for a pickup the billing name and finally the email stand in. A delivery address may name no one, as the shipping step often receives the street address alone. The name then comes from the order's delivery address, as
OrderConverter::fillFulfillmentRecipients()fills it in for orders placed since. -
#
getRecipientPhone()Admin only -
?string - The recipient's phone: the delivery address's own, else the order's delivery address's, or the billing phone for a pickup
-
#
getRecipientAddressLines()Admin only -
array - The delivery address as printed lines, the recipient's company first; a pickup has none. The company comes from the same address as
getRecipientName(), which may be the order's when the fulfillment's names no one. -
#
getDeliveryNumber()Admin only -
int - Which delivery of the order this is, the 2 of "delivery 2 of 3", counting the order's fulfillments that are not cancelled and have something to ship, in creation order
-
#
getDeliveryCount()Admin only -
int - How many deliveries the order is split into, the 3 of "delivery 2 of 3": its fulfillments that are not cancelled and have something to ship
-
#
getShippingMethodName()Admin only -
?string - The selected rate as the packing slip prints it: "Standard · Australia Post", or the rate's name alone when it names no carrier
Methods 3
Take arguments. The API serialises only getters that need none.
-
#
getLogForStatus(string $status) -
?FulfillmentLog - The latest status log entry that moved the fulfillment into the given status
-
#
getStatusReachedAt(string $status) -
?DateTime - When the fulfillment reached the given status: its creation for pending, otherwise the status log
-
#
getBarcode(string $symbology)Admin only -
Barcode - The fulfillment's id as a barcode a warehouse scanner reads, for the packing slip. The framework's slip prints Code 39. A site's own slip template may ask for another symbology by name;
\Inventory\Services\BarcodeServicelists the ones it can encode.
No members match the filter.