Magento 2 Order Editor Manual¶
Introduction¶
Order processing is one of the key aspects in e-Сommerce business. Such activities as order creation/editing/archiving, as well as order shipping and processing refunds (if necessary) should always be organized smoothly and logically.
When it comes to the above mentioned aspects, Magento 2 is quite a good solution, because it supports the full order processing workflow, just with several limitations.
Order Workflow in Magento 2¶
Basically, the order process consists of the following steps:
Once an order has been placed (but not paid and shipped) - its status is automatically set to Pending. Then, you create an invoice from the Admin Panel, and the status is changed to Processing. And finally, when you confirm shipment to finalize the order, it gets the status Complete.
With the default functionality, to modify an order, you have to cancel it, which is quite inconvenient. Say, if you make any changes to customer’s address, you will have to choose a shipping method again. If a customer used a credit card payment method, you will have to re-enter all the data. By default, you can’t edit orders that have been invoiced. Magento doesn’t allow you to delete orders by default. You can only set the order status to 'Cancelled'.
Magento 2 Order Editor extension not only expands the above-mentioned functionality as it allows:
-
Modifying orders without canceling them. This includes the possibility to edit order & product details, set a custom price, modify product discount, preview the order’s Grand Total.
-
Invoicing and/or shipping orders, printing invoices and credit memos, sending invoices and shipments in bulk
Requirements and Installation¶
Order Editor supports Open source (Community), Commerce (Enterprise) editions and Commerce cloud. The current version of the Magento installed on your website can be found in the lower right corner of any backend page.
Order Editor has 3 separate ways of installation:
1) Copy the code (ready-to-paste package);
2) Use MageWorx Repository;
3) Use local Composer.
Note
The extension uses the free 3rd party libraries if you want to enable certain features:
- Device Detector and Spyc to detect a device type of the customers and display this information in the order view.
You should install it via the composer:
composer require matomo/device-detector
The free compatibility module should be also installed from https://github.com/mageworx/module-order-device-detector
Extension Configuration¶
Log into the Magento Admin panel and go to STORES ⟶ Configuration ⟶ MAGEWORX ⟶ Order Management. The configuration itself consists of 2 tabs.
Orders Base¶
Edit the Checkout Path setting if you are using some third-party checkout with the custom URL.
Order Editor¶
Invoices / Shipments / Credit Memos¶
Update Invoices/Credit Memos - specify how invoices and credit memos are updated after modifying an order. Can be either Create new invoice (if possible) or Delete invoices and credit memos, create new invoice instead. The former option can be useful if orders modification history is needed, while the latter simply erases the old data.
If the store owner selects Delete invoices and credit memos, create new invoice instead, then all the old stuff will be removed and the new order will be created.
Update Shipments has several options: Do not touch doesn't modify the shipping costs, Add new shipment is used if shipment modification history is needed, Delete shipment(s) and create new erases the old data.
Order Items¶
Return Item To Stock specifies the default value of the back in stock option on the products grid when the product needs to be removed
This will be described later in this document
Order Modification¶
The order information is gathered into several groups.
General Order Modifications¶
Click the Edit link near the order number to modify the date of the order. The store administrator can edit the order status here as well.
Account Information (Device & Area Detection)¶
Here, the store administrator can observe the extra fields: Device shows the client's device and the Area provides the information whether the order was created from frontend, backend or API (REST or SOAP). If you are using the third-party checkout, the Area field can show the incorrect API detection. To avoid this, edit the Checkout Path setting in the Orders Base configuration.
Account Information Modification¶
Click the Edit link near the Account Information to edit the personal information. Click the Select a Customer link to change the customer.
Editing Billing Address¶
Click the Edit link near the Billing Address to modify its details. Bear in mind that changing address information will not recalculate tax. Once you are ready, click the Submit button.
Editing Shipping Address¶
Click the Edit link near the Shipping Address to modify its details. Bear in mind that changing address information will not recalculate tax and shipping methods. Once you are ready, click the Submit button.
Editing Shipping & Handling Information¶
When editing a shipping information you can:
- change a shipping method
- set a custom shipping cost (excluding / including taxes)
- set a shipping discount
- select / change a tax rate
Editing Payment Methods¶
Currently the extension allows you to select the offline payment methods only. The online methods will be added soon along with the re-authorization functionality.
You can also set a custom payment method and specify a custom title for certain order only.
Editing Items¶
Click the Edit link near the Items Ordered to modify its details. You can change price, quantity, tax, and discounts.
Once the store owner performs the changes, the popup with the new payment information appears below the products grid.
Any product can be deleted with the possibility to increase the quantity of this product in the inventory or not.
If more products need to be added, the store owner can click the Add Products button.
In the grid, you can add any product and specify the ordered quantity. When you are ready, click the Add Selected Product(s) to Order button.
For the configurable products, the Configure button appears near the product name.
When clicked, the pop-up appears with the possibility to add any simple option and specify its' quantity.
Logger¶
The extension has the functionality to log all the order edit changes and display them as the order’s comments in the back-end.
Example of the logger in action:
REST API¶
Methods to manage orders using Mageworx Order Editor.
Customer Info¶
Customer Info [/mageworx/order-editor/order/:orderId/customerInfo]
Get customer information [GET]¶
You may obtain information about a customer from the order using this action.
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Response 200 (application/json)
json
{
"customer_id": 18,
"customer_email": "[email protected]",
"customer_group": 1,
"customer_firstname": "Siarhey",
"customer_lastname": "Uchukhlebau"
}
Update customer information [PUT]¶
You may edit the customer information in the order using this action. It takes a JSON object named customerInfo
containing one or more of the next properties:
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Available properties
customer_id
(number)customer_email
(string)customer_group
(number)customer_firstname
(string)customer_lastname
(string)
-
Request (application/json)
json
{
"customerInfo": {
"customer_id": 2
}
}
-
Response 200 (application/json)
- Empty Body
Order Info¶
Order Info [/mageworx/order-editor/order/:orderId/orderInfo]
Get order information [GET]¶
You may obtain general information about the order using this action. Will return the creation date, status and state of the order.
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Response 200 (application/json)
json
{
"created_at": "2021-05-21 14:18:38",
"status": "pending",
"state": "new"
}
Update order information [PUT]¶
You may edit the general order information using this action. It takes a JSON object named orderInfo
containing one or more of the next properties:
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Available properties
created_at
(string)status
(string)state
(string)
-
Request (application/json)
json
{
"orderInfo": {
"created_at": "12/31/2020 9:00:01 AM UTC"
}
}
-
Response 200 (application/json)
- Empty Body
Billing Address¶
Billing Address [/mageworx/order-editor/order/:orderId/billingAddress]
Get billing address of the order [GET]¶
You may obtain information about a billing address from the order using this action.
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Response 200 (application/json)
json
{
"city": "Minsk",
"country_id": "BY",
"email": "[email protected]",
"entity_id": 540,
"firstname": "Siarhey",
"lastname": "Uchukhlebau",
"postcode": "220034",
"street": [
"Mendeleeva str.",
"30 112"
],
"telephone": "12345678"
}
Update billing address information [PUT]¶
You may edit the billing address in the order using this action. It takes a JSON object named billingAddressData
containing one or more of the next properties:
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Available properties
city
(string)company
(string)country_id
(string) - ISO 3166-1 alpha-2 two-letter country codefirstname
(string)lastname
(string)postcode
(string)region
(string) - text representation of regionregion_code
(string) - any available valid region coderegion_id
(number) - any available valid region idstreet
(array) - array of stringstelephone
(string)
-
Request (application/json)
json
{
"billingAddressData": {
"city": "Newark",
"company": "Hamady Bros. Supermarkets",
"country_id": "US",
"firstname": "Donald the Great",
"lastname": "Winders",
"postcode": "07108",
"region": "New Jersey",
"region_code": "NJ",
"region_id": 41,
"street": [
"980 Drummond Street"
],
"telephone": "9732061033"
}
}
-
Response 200 (application/json)
- Empty Body
Shipping Address¶
Shipping Address [/mageworx/order-editor/order/:orderId/shippingAddress]
Get shipping address of the order [GET]¶
You may obtain information about a shipping address from the order using this action.
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Response 200 (application/json)
json
{
"city": "Minsk",
"country_id": "BY",
"email": "[email protected]",
"entity_id": 540,
"firstname": "Siarhey",
"lastname": "Uchukhlebau",
"postcode": "220034",
"street": [
"Mendeleeva str.",
"30 112"
],
"telephone": "12345678"
}
Update shipping address information [PUT]¶
You may edit the shipping address in the order using this action. It takes a JSON object named shippingAddressData
containing one or more of the next properties:
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Available properties
city
(string)company
(string)country_id
(string) - ISO 3166-1 alpha-2 two-letter country codefirstname
(string)lastname
(string)postcode
(string)region
(string) - text representation of regionregion_code
(string) - any available valid region coderegion_id
(number) - any available valid region idstreet
(array) - array of stringstelephone
(string)
-
Request (application/json)
json
{
"shippingAddressData": {
"city": "Newark",
"company": "Hamady Bros. Supermarkets",
"country_id": "US",
"firstname": "Donald the Great",
"lastname": "Winders",
"postcode": "07108",
"region": "New Jersey",
"region_code": "NJ",
"region_id": 41,
"street": [
"980 Drummond Street"
],
"telephone": "9732061033"
}
}
-
Response 200 (application/json)
- Empty Body
Note: shipping address is not available for virtual orders (with no shipping information). Request
to shippingAddress
endpoint with id of the order which is virtual will return the exception
"Shipping address is not available for virtual orders"
Payment method information¶
Payment method information [/mageworx/order-editor/order/:orderId/payment]
Get payment method information [GET]¶
You may obtain information about the payment method using this action. Will return the payment method code.
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Response 200 (application/json)
json
{
"code": "cashondelivery"
}
Update payment method information [PUT]¶
You may edit the payment method information using this action. The custom attributes object is specific for payment
method.
It takes a JSON object named paymentMethodData
containing one or more of the next properties:
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Available properties
code
(string)custom_attributes
(object)
-
Request (application/json)
json
{
"paymentMethodData": {
"code": "mageworx_ordereditor_payment_method",
"custom_attributes": {
"payment_title": "New payment method title"
}
}
}
-
Response 200 (application/json)
- Empty Body
Shipping method information¶
Shipping method information [/mageworx/order-editor/order/:orderId/shippingMethod]
Get shipping method information [GET]¶
You may obtain information about the shipping method using this action. Will return the payment method code.
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Response 200 (application/json)
json
{
"code": "flatrate_flatrate",
"title": "Flat Rate - Fixed",
"price_excl_tax": 5,
"price_incl_tax": 6.41,
"tax_percent": 28.2,
"discount_amount": 1,
"tax_rates": [
{
"code": "DuMMY",
"percent": 20
},
{
"code": "US-MI-*-Rate 1",
"percent": 8.25
}
]
}
Update shipping method information [PUT]¶
You may edit the shipping method information using this action.
It takes a JSON object named shippingMethodData
containing one or more of the next properties:
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Available properties
code
(string)title
(string)price_excl_tax
(number)price_incl_tax
(number)tax_percent
(number)discount_amount
(number)tax_rates
(array) - array of tax rate objects:code
(string)percent
(number)
-
Request (application/json)
json
{
"shippingMethodData": {
"code": "tablerate_bestway",
"title": "NEW! Tablerate",
"price_excl_tax": 100,
"price_incl_tax": 110,
"tax_percent": 10,
"discount_amount": 50,
"tax_rates": [
{
"code": "BLR20",
"percent": 10
}
]
}
}
-
Response 200 (application/json)
- Order object
Note: shipping method is not available for virtual orders (with no shipping information). Request
to shippingMethod
endpoint with id of the order which is virtual will return the exception
"Shipping method is not available for virtual orders"
Backup Order's Quote¶
Backup Order's Quote [/mageworx/order-editor/order/:orderId/backup]
Do backup [POST]
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Response 200 (application/json)
- Empty Body
Restore Order's Quote¶
Restore Order's Quote [/mageworx/order-editor/order/:orderId/restoreQuote]
Restore quote state [POST]
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Response 200 (application/json)
- Empty Body
Order items¶
Order items [/mageworx/order-editor/order/:orderId/items]
Get list of items in order [GET]¶
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Response 200 (application/json): array of all order items with general information (fields)
- Body
json
[
{
"amount_refunded": 0,
"base_amount_refunded": 0,
"base_discount_amount": 0,
"base_discount_invoiced": 0,
"base_discount_tax_compensation_amount": 0,
"base_original_price": 10,
"base_price": 10,
"base_price_incl_tax": 12,
"base_row_invoiced": 0,
"base_row_total": 10,
"base_row_total_incl_tax": 12,
"base_tax_amount": 2,
"base_tax_invoiced": 0,
"created_at": "2021-05-21 12:33:47",
"discount_amount": 0,
"discount_invoiced": 0,
"discount_percent": 0,
"free_shipping": 0,
"discount_tax_compensation_amount": 0,
"is_qty_decimal": 0,
"is_virtual": 0,
"item_id": 623,
"name": "F",
"no_discount": 0,
"order_id": 300,
"original_price": 10,
"price": 10,
"price_incl_tax": 12,
"product_id": 2059,
"product_type": "simple",
"qty_canceled": 0,
"qty_invoiced": 0,
"qty_ordered": 1,
"qty_refunded": 0,
"qty_returned": 0,
"qty_shipped": 0,
"quote_item_id": 849,
"row_invoiced": 0,
"row_total": 10,
"row_total_incl_tax": 12,
"row_weight": 1,
"sku": "F",
"store_id": 1,
"tax_amount": 2,
"tax_invoiced": 0,
"tax_percent": 20,
"updated_at": "2021-05-21 12:33:47",
"weight": 1
}
]
Add few items to order [POST]¶
You may add one or more item to the order using this action. For the items with options (configurable, bundle,
simple product with custom options) their values must be specified in the product_option
parameter.
Item is an instance of \Magento\Quote\Api\Data\CartItemInterface
. Due to module limitations all items must be added
as a quote items first and saved using the commit
method. Before you commit the changes you can change or remove any
item. You can also undo all changes using the restoreQuote
method in case you have created a backup using the
backup
method. So better to start adding items from calling the backup
method.
It takes a JSON object named items
containing one or more order item with next properties:
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Available properties
sku
(string)name
(string)qty
(number)price
(number)product_option
(object)\Magento\Quote\Api\Data\ProductOptionInterface
extension_attributes
(object)\Magento\Quote\Api\Data\CartItemExtensionInterface
-
Request (application/json)
json
{
"items": [
{
"sku": "24-WB02",
"qty": 2,
"price": 100
},
{
"sku": "MH01",
"qty": 3,
"price": 3,
"product_option": {
"extension_attributes": {
"configurable_item_options": [
{
"option_id": 160,
"option_value": 167
},
{
"option_id": 93,
"option_value": 52
}
]
}
}
}
]
}
-
Response 200 (application/json)
- Body: example, list of all items in corresponding quote.
json
[
{
"item_id": 849,
"sku": "F",
"qty": 1,
"name": "F",
"price": 10,
"product_type": "simple",
"quote_id": "430"
},
{
"item_id": 852,
"sku": "24-WB02",
"qty": 2,
"name": "Compete Track Tote",
"price": 100,
"product_type": "simple",
"quote_id": "430"
},
{
"item_id": 853,
"sku": "MH01-S-Gray",
"qty": 3,
"name": "Chaz Kangeroo Hoodie",
"price": 3,
"product_type": "configurable",
"quote_id": "430"
},
{
"item_id": 854,
"sku": "MH01-S-Gray",
"qty": 1,
"name": "Chaz Kangeroo Hoodie-S-Gray",
"price": 0,
"product_type": "simple",
"quote_id": "430"
}
]
Response is the same as for the next method, by which you can list all quote items related to the order at current time:
Quote items currently assigned to the Order¶
Quote items currently assigned to the Order [/mageworx/order-editor/order/:orderId/quoteItems]
Get list of quote items of the corresponding order [GET]
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Response 200 (application/json): array of all order items with general information (fields)
- Body
json
[
{
"item_id": 849,
"sku": "F",
"qty": 1,
"name": "F",
"price": 10,
"product_type": "simple",
"quote_id": "430"
},
{
"item_id": 852,
"sku": "24-WB02",
"qty": 2,
"name": "Compete Track Tote",
"price": 100,
"product_type": "simple",
"quote_id": "430"
},
{
"item_id": 853,
"sku": "MH01-S-Gray",
"qty": 3,
"name": "Chaz Kangeroo Hoodie",
"price": 3,
"product_type": "configurable",
"quote_id": "430"
},
{
"item_id": 854,
"sku": "MH01-S-Gray",
"qty": 1,
"name": "Chaz Kangeroo Hoodie-S-Gray",
"price": 0,
"product_type": "simple",
"quote_id": "430"
}
]
Commit changes to the Order¶
Commit changes to the Order [/mageworx/order-editor/order/:orderId/commit]
Commit changes [POST]
This method must be used after every change made to an order items. Before you commit rhe changes
the quote data could be restored using the restoreQuote
method.
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Response 200 (application/json)
- Order object in actual state with all new items
Order object example:¶
json
{
"base_currency_code": "EUR",
"base_discount_amount": -41.8,
"base_grand_total": 331,
"base_discount_tax_compensation_amount": 6.97,
"base_shipping_amount": 100,
"base_shipping_discount_amount": 50,
"base_shipping_discount_tax_compensation_amnt": 0,
"base_shipping_incl_tax": 110,
"base_shipping_tax_amount": 10,
"base_subtotal": 219,
"base_subtotal_incl_tax": 262.8,
"base_tax_amount": 46.83,
"base_total_due": 331,
"base_to_global_rate": 1,
"base_to_order_rate": 1,
"billing_address_id": 536,
"created_at": "2021-05-21 12:33:43",
"customer_email": "[email protected]",
"customer_firstname": "Joyce",
"customer_group_id": 1,
"customer_id": 16,
"customer_is_guest": 0,
"customer_lastname": "Thompson",
"customer_note_notify": 1,
"discount_amount": -91.8,
"email_sent": 1,
"entity_id": 300,
"global_currency_code": "EUR",
"grand_total": 281,
"discount_tax_compensation_amount": 6.97,
"increment_id": "000000298",
"is_virtual": 0,
"order_currency_code": "EUR",
"protect_code": "d64587d74d795c615dd7d032d2dede23",
"quote_id": 430,
"remote_ip": "46.53.248.16",
"shipping_amount": 100,
"shipping_description": "NEW! Tablerate",
"shipping_discount_amount": 50,
"shipping_discount_tax_compensation_amount": 0,
"shipping_incl_tax": 110,
"shipping_tax_amount": 10,
"state": "new",
"status": "pending",
"store_currency_code": "EUR",
"store_id": 1,
"store_name": "Main Website\nMain Website Store\nDefault Store View",
"store_to_base_rate": 0,
"store_to_order_rate": 0,
"subtotal": 219,
"subtotal_incl_tax": 262.8,
"tax_amount": 46.83,
"total_due": 281,
"total_item_count": 3,
"total_qty_ordered": 6,
"updated_at": "2021-05-24 18:17:10",
"weight": 1,
"items": [
{
"amount_refunded": 0,
"base_amount_refunded": 0,
"base_discount_amount": 0,
"base_discount_invoiced": 0,
"base_discount_tax_compensation_amount": 0,
"base_original_price": 10,
"base_price": 10,
"base_price_incl_tax": 12,
"base_row_invoiced": 0,
"base_row_total": 10,
"base_row_total_incl_tax": 12,
"base_tax_amount": 2,
"base_tax_invoiced": 0,
"created_at": "2021-05-21 12:33:47",
"discount_amount": 0,
"discount_invoiced": 0,
"discount_percent": 0,
"free_shipping": 0,
"discount_tax_compensation_amount": 0,
"is_qty_decimal": 0,
"is_virtual": 0,
"item_id": 623,
"name": "F",
"no_discount": 0,
"order_id": 300,
"original_price": 10,
"price": 10,
"price_incl_tax": 12,
"product_id": 2059,
"product_type": "simple",
"qty_canceled": 0,
"qty_invoiced": 0,
"qty_ordered": 1,
"qty_refunded": 0,
"qty_returned": 0,
"qty_shipped": 0,
"quote_item_id": 849,
"row_invoiced": 0,
"row_total": 10,
"row_total_incl_tax": 12,
"row_weight": 1,
"sku": "F",
"store_id": 1,
"tax_amount": 2,
"tax_invoiced": 0,
"tax_percent": 20,
"updated_at": "2021-05-21 12:33:47",
"weight": 1
},
{
"amount_refunded": 0,
"applied_rule_ids": "2,3",
"base_amount_refunded": 0,
"base_discount_amount": 40,
"base_discount_invoiced": 0,
"base_discount_tax_compensation_amount": 6.67,
"base_original_price": 100,
"base_price": 100,
"base_price_incl_tax": 120,
"base_row_invoiced": 0,
"base_row_total": 160,
"base_row_total_incl_tax": 200,
"base_tax_amount": 33.33,
"base_tax_invoiced": 0,
"created_at": "2021-05-24 13:35:57",
"discount_amount": 40,
"discount_invoiced": 0,
"discount_percent": 20,
"free_shipping": 0,
"discount_tax_compensation_amount": 6.67,
"is_qty_decimal": 0,
"is_virtual": 0,
"item_id": 628,
"name": "Compete Track Tote",
"no_discount": 0,
"order_id": 300,
"original_price": 100,
"price": 100,
"price_incl_tax": 120,
"product_id": 9,
"product_type": "simple",
"qty_canceled": 0,
"qty_invoiced": 0,
"qty_ordered": 2,
"qty_refunded": 0,
"qty_returned": 0,
"qty_shipped": 0,
"quote_item_id": 852,
"row_invoiced": 0,
"row_total": 160,
"row_total_incl_tax": 200,
"row_weight": 0,
"sku": "24-WB02",
"store_id": 1,
"tax_amount": 33.33,
"tax_invoiced": 0,
"tax_percent": 20,
"updated_at": "2021-05-24 13:35:57"
},
{
"amount_refunded": 0,
"applied_rule_ids": "2,3",
"base_amount_refunded": 0,
"base_discount_amount": 1.8,
"base_discount_invoiced": 0,
"base_discount_tax_compensation_amount": 0.3,
"base_original_price": 3,
"base_price": 3,
"base_price_incl_tax": 3.6,
"base_row_invoiced": 0,
"base_row_total": 7.2,
"base_row_total_incl_tax": 9,
"base_tax_amount": 1.5,
"base_tax_invoiced": 0,
"created_at": "2021-05-24 18:17:08",
"discount_amount": 1.8,
"discount_invoiced": 0,
"discount_percent": 20,
"free_shipping": 0,
"discount_tax_compensation_amount": 0.3,
"is_qty_decimal": 0,
"is_virtual": 0,
"item_id": 630,
"name": "Chaz Kangeroo Hoodie",
"no_discount": 0,
"order_id": 300,
"original_price": 3,
"price": 3,
"price_incl_tax": 3.6,
"product_id": 68,
"product_type": "configurable",
"qty_canceled": 0,
"qty_invoiced": 0,
"qty_ordered": 3,
"qty_refunded": 0,
"qty_returned": 0,
"qty_shipped": 0,
"quote_item_id": 853,
"row_invoiced": 0,
"row_total": 7.2,
"row_total_incl_tax": 9,
"row_weight": 0,
"sku": "MH01-S-Gray",
"store_id": 1,
"tax_amount": 1.5,
"tax_invoiced": 0,
"tax_percent": 20,
"updated_at": "2021-05-24 18:17:09",
"weight": 1,
"product_option": {
"extension_attributes": {
"configurable_item_options": [
{
"option_id": "160",
"option_value": 167
},
{
"option_id": "93",
"option_value": 52
}
]
}
}
},
{
"amount_refunded": 0,
"base_amount_refunded": 0,
"base_discount_amount": 0,
"base_discount_invoiced": 0,
"base_price": 0,
"base_row_invoiced": 0,
"base_row_total": 0,
"base_tax_amount": 0,
"base_tax_invoiced": 0,
"created_at": "2021-05-24 18:17:08",
"discount_amount": 0,
"discount_invoiced": 0,
"discount_percent": 0,
"free_shipping": 0,
"is_qty_decimal": 0,
"is_virtual": 0,
"item_id": 631,
"name": "Chaz Kangeroo Hoodie-S-Gray",
"no_discount": 0,
"order_id": 300,
"original_price": 0,
"parent_item_id": 630,
"price": 0,
"product_id": 57,
"product_type": "simple",
"qty_canceled": 0,
"qty_invoiced": 0,
"qty_ordered": 3,
"qty_refunded": 0,
"qty_returned": 0,
"qty_shipped": 0,
"quote_item_id": 854,
"row_invoiced": 0,
"row_total": 0,
"row_weight": 0,
"sku": "MH01-S-Gray",
"store_id": 1,
"tax_amount": 0,
"tax_invoiced": 0,
"tax_percent": 0,
"updated_at": "2021-05-24 18:17:08",
"weight": 1,
"parent_item": {
"amount_refunded": 0,
"applied_rule_ids": "2,3",
"base_amount_refunded": 0,
"base_discount_amount": 1.8,
"base_discount_invoiced": 0,
"base_discount_tax_compensation_amount": 0.3,
"base_original_price": 3,
"base_price": 3,
"base_price_incl_tax": 3.6,
"base_row_invoiced": 0,
"base_row_total": 7.2,
"base_row_total_incl_tax": 9,
"base_tax_amount": 1.5,
"base_tax_invoiced": 0,
"created_at": "2021-05-24 18:17:08",
"discount_amount": 1.8,
"discount_invoiced": 0,
"discount_percent": 20,
"free_shipping": 0,
"discount_tax_compensation_amount": 0.3,
"is_qty_decimal": 0,
"is_virtual": 0,
"item_id": 630,
"name": "Chaz Kangeroo Hoodie",
"no_discount": 0,
"order_id": 300,
"original_price": 3,
"price": 3,
"price_incl_tax": 3.6,
"product_id": 68,
"product_type": "configurable",
"qty_canceled": 0,
"qty_invoiced": 0,
"qty_ordered": 3,
"qty_refunded": 0,
"qty_returned": 0,
"qty_shipped": 0,
"quote_item_id": 853,
"row_invoiced": 0,
"row_total": 7.2,
"row_total_incl_tax": 9,
"row_weight": 0,
"sku": "MH01-S-Gray",
"store_id": 1,
"tax_amount": 1.5,
"tax_invoiced": 0,
"tax_percent": 20,
"updated_at": "2021-05-24 18:17:09",
"weight": 1,
"product_option": {
"extension_attributes": {
"configurable_item_options": [
{
"option_id": "160",
"option_value": 167
},
{
"option_id": "93",
"option_value": 52
}
]
}
}
},
"row_total_incl_tax": 0,
"base_row_total_incl_tax": 0
}
],
"billing_address": {
"address_type": "billing",
"city": "Dry Creek",
"country_id": "US",
"email": "[email protected]",
"entity_id": 536,
"firstname": "Joyce",
"lastname": "Thompson",
"parent_id": 300,
"postcode": "99737",
"region": "Alaska",
"region_code": "AK",
"region_id": 2,
"street": [
"4788 Blackwell Street"
],
"telephone": "9073236993"
},
"payment": {
"account_status": null,
"additional_information": [
"1",
"Cash On Delivery",
null
],
"amount_ordered": 281,
"base_amount_ordered": 331,
"base_shipping_amount": 100,
"cc_exp_year": "0",
"cc_last4": null,
"cc_ss_start_month": "0",
"cc_ss_start_year": "0",
"entity_id": 289,
"method": "cashondelivery",
"parent_id": 300,
"shipping_amount": 100
},
"status_histories": [
{
"comment": "Product <b>Chaz Kangeroo Hoodie</b> has been <u>added</u><br/>\n<br/>\n<b>Grand Total</b> has been changed from <b>€72.00</b> to <b>€281.00</b><br/>\n",
"created_at": "2021-05-24 18:17:11",
"entity_id": 325,
"is_customer_notified": 0,
"is_visible_on_front": 0,
"parent_id": 300
},
{
"comment": "Shipping method has been changed from <b>Flat Rate - Fixed</b> (flatrate_flatrate) to <b>NEW! Tablerate</b> (tablerate_bestway)<br/>\nShipping Price has been changed from <b>€5.00</b> to <b>€100.00</b><br/>\n<b>Grand Total</b> has been changed from <b>€17.41</b> to <b>€72.00</b><br/>\n",
"created_at": "2021-05-23 21:04:22",
"entity_id": 323,
"is_customer_notified": 0,
"is_visible_on_front": 0,
"parent_id": 300
},
{
"comment": "<b>Grand Total</b> has been changed from <b>€18.00</b> to <b>€17.41</b><br/>\n",
"created_at": "2021-05-23 20:21:01",
"entity_id": 322,
"is_customer_notified": 0,
"is_visible_on_front": 0,
"parent_id": 300
}
]
}
Order item¶
Order item [/mageworx/order-editor/order/:orderId/item]
Add single item to order [POST]¶
You may add single item to the order using this action. For the items with options (configurable, bundle,
simple product with custom options) their values must be specified in the product_option
parameter.
Item is an instance of \Magento\Quote\Api\Data\CartItemInterface
. Due to module limitations all items must be added
as a quote items first and saved using the commit
method. Before you commit the changes you can change or remove any
item. You can also undo all changes using the restoreQuote
method in case you have created a backup using the
backup
method. So better to start adding items from calling the backup
method.
It takes a JSON object named item
containing single item with next properties:
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Available properties
sku
(string)name
(string)qty
(number)price
(number)product_option
(object)\Magento\Quote\Api\Data\ProductOptionInterface
extension_attributes
(object)\Magento\Quote\Api\Data\CartItemExtensionInterface
Adding the simple item (example)¶
Here we are adding a simple item with sku 24-MB05 in qty 3 using default price and name, with no options and no extension attributes.
- Request (application/json)
json
{
"item": {
"sku": "24-MB05",
"qty": 3
}
}
-
Response 200 (application/json)
- Body: list of all items in corresponding quote.
Example response:
json
[
{
"item_id": 849,
"sku": "F",
"qty": 1,
"name": "F",
"price": 10,
"product_type": "simple",
"quote_id": "430"
},
{
"item_id": 856,
"sku": "24-MB05",
"qty": 3,
"name": "Wayfarer Messenger Bag",
"price": 45,
"product_type": "simple",
"quote_id": "430"
}
]
Add configurable item example¶
Here we are adding a configurable item with sku MH01 in qty 1 using default price and name, with no extension attributes and with next options - attribute id 160 with value id 167; attribute id 93 with value id 52;
Note: it's easy to see all available options for the configurable product using a regular magento API endpoint
/rest/V1/products/:sku
, where the :sku
is a sku of that configurable (parent) product. Response will contain the
configurable_product_options
array with following structure (example):
json
{
"id": 68,
"sku": "MH01",
"name": "Chaz Kangeroo Hoodie",
...
"extension_attributes": {
...
"configurable_product_options": [
{
"id": 3,
"attribute_id": "93",
"label": "Color",
"position": 1,
"values": [
{
"value_index": 49
},
{
"value_index": 52
},
{
"value_index": 56
}
]
},
{
"id": 2,
"attribute_id": "160",
"label": "Size",
"position": 0,
"values": [
{
"value_index": 166
},
{
"value_index": 167
},
{
"value_index": 168
},
{
"value_index": 169
},
{
"value_index": 170
}
]
}
]
}
}
- Request (application/json)
json
{
"item": {
"sku": "MH01",
"qty": 1,
"product_option": {
"extension_attributes": {
"configurable_item_options": [
{
"option_id": 160,
"option_value": 167
},
{
"option_id": 93,
"option_value": 52
}
]
}
}
}
}
-
Response 200 (application/json)
- Body: list of all items in corresponding quote.
In our example we have added an item MH01 with color Grey and size S. As a result we can see in response two new items, because it is a configurable product: one for the parent (configurable) item and one for the simple item (option). Here is example:
json
[
{
"item_id": 857,
"sku": "MH01-S-Gray",
"qty": 1,
"name": "Chaz Kangeroo Hoodie",
"price": 52,
"product_type": "configurable",
"quote_id": "430"
},
{
"item_id": 858,
"sku": "MH01-S-Gray",
"qty": 1,
"name": "Chaz Kangeroo Hoodie-S-Gray",
"price": 0,
"product_type": "simple",
"quote_id": "430"
}
]
Add bundle item example¶
Here we are adding a bundle item with sku 24-WG080 in qty 1 using default price and name, with no extension attributes and with next options: 1. Option id 1 with qty 1 and value 3 2. Option id 2 with qty 10 and value 4 3. Option id 3 with qty 5 and value 6 4. Option id 4 with qty 1 and value 8
- Request (application/json)
json
{
"item": {
"sku": "24-WG080",
"qty": 1,
"product_option": {
"extension_attributes": {
"bundle_options": [
{
"option_id": 1,
"option_qty": 1,
"option_selections": [
3
]
},
{
"option_id": 2,
"option_qty": 10,
"option_selections": [
4
]
},
{
"option_id": 3,
"option_qty": 5,
"option_selections": [
6
]
},
{
"option_id": 4,
"option_qty": 1,
"option_selections": [
8
]
}
]
}
}
}
}
-
Response 200 (application/json)
- Body: list of all items in corresponding quote.
Here is example of response with that bundle product in quote:
json
[
{
"item_id": 859,
"sku": "24-WG080-24-WG083-blue-24-WG084-24-WG086-24-WG088",
"qty": 1,
"name": "Sprite Yoga Companion Kit",
"price": 186,
"product_type": "bundle",
"quote_id": "430"
},
{
"item_id": 860,
"sku": "24-WG083-blue",
"qty": 1,
"name": "Sprite Stasis Ball 75 cm",
"price": 32,
"product_type": "simple",
"quote_id": "430"
},
{
"item_id": 861,
"sku": "24-WG084",
"qty": 10,
"name": "Sprite Foam Yoga Brick",
"price": 5,
"product_type": "simple",
"quote_id": "430"
},
{
"item_id": 862,
"sku": "24-WG086",
"qty": 5,
"name": "Sprite Yoga Strap 8 foot",
"price": 17,
"product_type": "simple",
"quote_id": "430"
},
{
"item_id": 863,
"sku": "24-WG088",
"qty": 1,
"name": "Sprite Foam Roller",
"price": 19,
"product_type": "simple",
"quote_id": "430"
}
]
Add item with custom options¶
Here we are adding a simple item with sku 24-UG03 in qty 1 using default price and name with next custom options: 1. Option id 1 with option value 1 (Drop-down type) 2. Option id 2 with option value 5 (Radio buttons) 3. Option id 3 with option values 10 and 9 (Checkbox)
The custom options must be set inside the product_option
property as an extension attribute named custom_options
(array of option/value). In case we do not set a price of that product it will be taken from
calculation of custom options price. If product price is specified, price of the custom options will be ignored.
- Request (application/json)
json
{
"item": {
"sku": "24-UG03",
"qty": 1,
"product_option": {
"extension_attributes": {
"custom_options": [
{
"option_id": 1,
"option_value": 1
},
{
"option_id": 2,
"option_value": 5
},
{
"option_id": 3,
"option_value": "10,9"
}
]
}
}
}
}
-
Response 200 (application/json)
- Body: list of all items in corresponding quote.
Here is example of response with that simple product with custom options in quote:
json
[
{
"item_id": 864,
"sku": "24-UG03-R-2-B-A",
"qty": 1,
"name": "Harmony Lumaflex™ Strength Band Kit ",
"price": 80,
"product_type": "simple",
"quote_id": "430"
}
]
Edit item in order [PUT]¶
It takes a JSON object named item
containing single item with next properties:
-
Parameters
order_id
(number) - ID of the Order in the form of an integer
-
Available properties (
\MageWorx\OrderEditor\Api\Data\OrderManager\EditOrderItemDataInterface
)item_id
(number) - requiredprice
(number)price_incl_tax
(number)fact_qty
(number)subtotal
(number)subtotal_incl_tax
(number)tax_amount
(number)tax_percent
(number)discount_amount
(number)discount_percent
(number)back_to_stock
(bool) - is need to return the item to stock in case it's qty decreasing or when it is completely removedtax_rates
(array) - array of tax rate objects\MageWorx\OrderEditor\Api\Data\OrderManager\TaxRateDataInterface
:code
(string)percent
(number)
product_option
(object)\Magento\Quote\Api\Data\ProductOptionInterface
-
Request (application/json)
json
{
"item": {
"item_id": 623,
"price": 100,
"price_incl_tax": 120,
"subtotal": 100,
"subtotal_incl_tax": 120,
"tax_amount": 20
}
}
-
Response 200 (application/json)
- Body: list of all ordered items including the changed one.
Here is example of that response:
json
[
{
"amount_refunded": 0,
"base_amount_refunded": 0,
"base_discount_amount": 0,
"base_discount_invoiced": 0,
"base_discount_tax_compensation_amount": 0,
"base_original_price": 10,
"base_price": 100,
"base_price_incl_tax": 120,
"base_row_invoiced": 0,
"base_row_total": 100,
"base_row_total_incl_tax": 120,
"base_tax_amount": 20,
"base_tax_invoiced": 0,
"created_at": "2021-05-21 12:33:47",
"discount_amount": 0,
"discount_invoiced": 0,
"discount_percent": 0,
"free_shipping": 0,
"discount_tax_compensation_amount": 0,
"is_qty_decimal": 0,
"is_virtual": 0,
"item_id": 623,
"name": "F",
"no_discount": 0,
"order_id": 300,
"original_price": 10,
"price": 100,
"price_incl_tax": 120,
"product_id": 2059,
"product_type": "simple",
"qty_canceled": 0,
"qty_invoiced": 0,
"qty_ordered": 1,
"qty_refunded": 0,
"qty_returned": 0,
"qty_shipped": 0,
"quote_item_id": 849,
"row_invoiced": 0,
"row_total": 100,
"row_total_incl_tax": 120,
"row_weight": 1,
"sku": "F",
"store_id": 1,
"tax_amount": 20,
"tax_invoiced": 0,
"tax_percent": 20,
"updated_at": "2021-05-25 11:37:58",
"weight": 1
},
{
"amount_refunded": 0,
"applied_rule_ids": "2,3",
"base_amount_refunded": 0,
"base_discount_amount": 40,
"base_discount_invoiced": 0,
"base_discount_tax_compensation_amount": 6.67,
"base_original_price": 100,
"base_price": 100,
"base_price_incl_tax": 120,
"base_row_invoiced": 0,
"base_row_total": 160,
"base_row_total_incl_tax": 200,
"base_tax_amount": 33.33,
"base_tax_invoiced": 0,
"created_at": "2021-05-24 13:35:57",
"discount_amount": 40,
"discount_invoiced": 0,
"discount_percent": 20,
"free_shipping": 0,
"discount_tax_compensation_amount": 6.67,
"is_qty_decimal": 0,
"is_virtual": 0,
"item_id": 628,
"name": "Compete Track Tote",
"no_discount": 0,
"order_id": 300,
"original_price": 100,
"price": 100,
"price_incl_tax": 120,
"product_id": 9,
"product_type": "simple",
"qty_canceled": 0,
"qty_invoiced": 0,
"qty_ordered": 2,
"qty_refunded": 0,
"qty_returned": 0,
"qty_shipped": 0,
"quote_item_id": 852,
"row_invoiced": 0,
"row_total": 160,
"row_total_incl_tax": 200,
"row_weight": 0,
"sku": "24-WB02",
"store_id": 1,
"tax_amount": 33.33,
"tax_invoiced": 0,
"tax_percent": 20,
"updated_at": "2021-05-24 13:35:57"
}
]
Note: all properties are set "as is" and you need to validate the result manually. As example, when you are changing the price including tax to 120$ but did not change the tax amount from 2$ to 20$ the resulting row total would be 120, but tax amount still remain 2. Same case when you are changing the base price (subtotal) of a taxable product but did not change the "price including tax" you've got an incorrect results. In this case, there will be no errors, but results will be messed.
When you edit the ordered items, the order totals will be calculated automatically based on the changes you made. No additional action required.
Edit configurable item example¶
In addition to the standard parameters, you can change the option values using the product_option
according your needs:
json
{
"item": {
"item_id": 630,
"fact_qty": 2,
"product_option": {
"extension_attributes": {
"configurable_item_options": [
{
"option_id": 160,
"option_value": 168
},
{
"option_id": 93,
"option_value": 56
}
]
}
}
}
}
Here we are changing the size (attribute id 160) and color (attribute id 93) from Gray (value id 167) S (value id 52)
to Orange (value id 168) M (value id 56). In addition, we are changing the qty of product from 1 to 2 (fact_qty
).
Price, tax and other properties remain unchanged and will correspond to the previous item configuration.
Edit bundle item example¶
The same logic as for the configurable products, but you should change bundle_options
like in example:
Base product (order item id 635) has next configuration: 1. Option id 1 with qty 1 and value 3 2. Option id 2 with qty 10 and value 4 3. Option id 3 with qty 5 and value 6 4. Option id 4 with qty 1 and value 8
We are changing it to the next one: 1. Option id 1 with qty 5 and value 2 2. Option id 2 with qty 10 and value 4 (remains unchanged, but must be specified because it is required option in our product) 3. Option id 3 with qty 5 and value 6 (remains unchanged, but must be specified because it is required option in our product) 4. Option id 4 with qty 1 and value 8 (remains unchanged, but must be specified because it is required option in our product)
json
{
"item": {
"item_id": 635,
"product_option": {
"extension_attributes": {
"bundle_options": [
{
"option_id": 1,
"option_qty": 5,
"option_selections": [
2
]
},
{
"option_id": 2,
"option_qty": 10,
"option_selections": [
4
]
},
{
"option_id": 3,
"option_qty": 5,
"option_selections": [
6
]
},
{
"option_id": 4,
"option_qty": 1,
"option_selections": [
8
]
}
]
}
}
}
}
Edit item with custom options example¶
Custom options of the ordered item could be changed using the product_option
parameter as per previous examples.
Here we are adding a simple item with sku 24-UG03 in qty 1 using default price and name with next custom options:
1. Option id 1 with option value 1 (Drop-down type, remains unchanged)
2. Option value of the option with id 2 will be changed from option value 5 to 6 (Radio buttons)
3. Option value of the option with id 3 will be changed from 10 and 9 to 10, 11 and 12 (Checkbox)
json
{
"item": {
"item_id": 640,
"product_option": {
"extension_attributes": {
"custom_options": [
{
"option_id": 1,
"option_value": 1
},
{
"option_id": 2,
"option_value": 6
},
{
"option_id": 3,
"option_value": "10,11,12"
}
]
}
}
}
}
Remove single Order item¶
Remove single Order item [/mageworx/order-editor/order/:orderId/item/:itemId] [DELETE]
It takes empty body with next parameters:
-
Parameters
order_id
(number) - ID of the Order in the form of an integeritemId
(number) - ID of the item you wish to remove
-
Response 200 (application/json)
- Body: list of all ordered items
Remove multiple Order items¶
Remove multiple Order items [/mageworx/order-editor/order/:orderId/items/:itemsIds] [DELETE]
It takes empty body with next parameters:
-
Parameters
order_id
(number) - ID of the Order in the form of an integeritemsIds
(string) - Comma separated list of ID's of the items you wish to remove
-
Response 200 (application/json)
- Body: list of all ordered items
Example:
http://yourhost/index.php/rest/V1/mageworx/order-editor/order/300/items/162,164,334
Here we are removing three items with id 162, 164 and 334 from the order. As a result, we get a list of all items remaining in the order.
json
[
{
"amount_refunded": 0,
"applied_rule_ids": "2,3",
"base_amount_refunded": 0,
"base_discount_amount": 40,
"base_discount_invoiced": 0,
"base_discount_tax_compensation_amount": 6.67,
"base_original_price": 100,
"base_price": 100,
"base_price_incl_tax": 120,
"base_row_invoiced": 0,
"base_row_total": 160,
"base_row_total_incl_tax": 200,
"base_tax_amount": 33.33,
"base_tax_invoiced": 0,
"created_at": "2021-05-24 13:35:57",
"discount_amount": 40,
"discount_invoiced": 0,
"discount_percent": 20,
"free_shipping": 0,
"discount_tax_compensation_amount": 6.67,
"is_qty_decimal": 0,
"is_virtual": 0,
"item_id": 628,
"name": "Compete Track Tote",
"no_discount": 0,
"order_id": 300,
"original_price": 100,
"price": 100,
"price_incl_tax": 120,
"product_id": 9,
"product_type": "simple",
"qty_canceled": 0,
"qty_invoiced": 0,
"qty_ordered": 2,
"qty_refunded": 0,
"qty_returned": 0,
"qty_shipped": 0,
"quote_item_id": 852,
"row_invoiced": 0,
"row_total": 160,
"row_total_incl_tax": 200,
"row_weight": 0,
"sku": "24-WB02",
"store_id": 1,
"tax_amount": 33.33,
"tax_invoiced": 0,
"tax_percent": 20,
"updated_at": "2021-05-24 13:35:57"
},
{
"amount_refunded": 0,
"applied_rule_ids": "2,3",
"base_amount_refunded": 0,
"base_discount_amount": 1.8,
"base_discount_invoiced": 0,
"base_discount_tax_compensation_amount": 0.3,
"base_original_price": 3,
"base_price": 3,
"base_price_incl_tax": 3.6,
"base_row_invoiced": 0,
"base_row_total": 7.2,
"base_row_total_incl_tax": 9,
"base_tax_amount": 1.5,
"base_tax_invoiced": 0,
"created_at": "2021-05-24 18:17:08",
"discount_amount": 1.8,
"discount_invoiced": 0,
"discount_percent": 20,
"free_shipping": 0,
"discount_tax_compensation_amount": 0.3,
"is_qty_decimal": 0,
"is_virtual": 0,
"item_id": 630,
"name": "Chaz Kangeroo Hoodie",
"no_discount": 0,
"order_id": 300,
"original_price": 3,
"price": 3,
"price_incl_tax": 3.6,
"product_id": 68,
"product_type": "configurable",
"qty_canceled": 0,
"qty_invoiced": 0,
"qty_ordered": 2,
"qty_refunded": 0,
"qty_returned": 0,
"qty_shipped": 0,
"quote_item_id": 853,
"row_invoiced": 0,
"row_total": 7.2,
"row_total_incl_tax": 9,
"row_weight": 2,
"sku": "MH01-M-Orange",
"store_id": 1,
"tax_amount": 1.5,
"tax_invoiced": 0,
"tax_percent": 20,
"updated_at": "2021-05-25 11:54:57",
"weight": 1
},
{
"amount_refunded": 0,
"base_amount_refunded": 0,
"base_discount_amount": 0,
"base_discount_invoiced": 0,
"base_price": 0,
"base_row_invoiced": 0,
"base_row_total": 0,
"base_tax_amount": 0,
"base_tax_invoiced": 0,
"created_at": "2021-05-24 18:17:08",
"discount_amount": 0,
"discount_invoiced": 0,
"discount_percent": 0,
"free_shipping": 0,
"is_qty_decimal": 0,
"is_virtual": 0,
"item_id": 631,
"name": "Chaz Kangeroo Hoodie-M-Orange",
"no_discount": 0,
"order_id": 300,
"original_price": 0,
"parent_item_id": 630,
"price": 0,
"product_id": 61,
"product_type": "simple",
"qty_canceled": 0,
"qty_invoiced": 0,
"qty_ordered": 2,
"qty_refunded": 0,
"qty_returned": 0,
"qty_shipped": 0,
"quote_item_id": 854,
"row_invoiced": 0,
"row_total": 0,
"row_weight": 2,
"sku": "MH01-M-Orange",
"store_id": 1,
"tax_amount": 0,
"tax_invoiced": 0,
"tax_percent": 0,
"updated_at": "2021-05-25 11:54:57",
"weight": 1,
"parent_item": {
"amount_refunded": 0,
"applied_rule_ids": "2,3",
"base_amount_refunded": 0,
"base_discount_amount": 1.8,
"base_discount_invoiced": 0,
"base_discount_tax_compensation_amount": 0.3,
"base_original_price": 3,
"base_price": 3,
"base_price_incl_tax": 3.6,
"base_row_invoiced": 0,
"base_row_total": 7.2,
"base_row_total_incl_tax": 9,
"base_tax_amount": 1.5,
"base_tax_invoiced": 0,
"created_at": "2021-05-24 18:17:08",
"discount_amount": 1.8,
"discount_invoiced": 0,
"discount_percent": 20,
"free_shipping": 0,
"discount_tax_compensation_amount": 0.3,
"is_qty_decimal": 0,
"is_virtual": 0,
"item_id": 630,
"name": "Chaz Kangeroo Hoodie",
"no_discount": 0,
"order_id": 300,
"original_price": 3,
"price": 3,
"price_incl_tax": 3.6,
"product_id": 68,
"product_type": "configurable",
"qty_canceled": 0,
"qty_invoiced": 0,
"qty_ordered": 2,
"qty_refunded": 0,
"qty_returned": 0,
"qty_shipped": 0,
"quote_item_id": 853,
"row_invoiced": 0,
"row_total": 7.2,
"row_total_incl_tax": 9,
"row_weight": 2,
"sku": "MH01-M-Orange",
"store_id": 1,
"tax_amount": 1.5,
"tax_invoiced": 0,
"tax_percent": 20,
"updated_at": "2021-05-25 11:54:57",
"weight": 1
},
"row_total_incl_tax": 0,
"base_row_total_incl_tax": 0
}
]
Webhooks¶
The extension allows you to enable the webhooks to get the notifications about all order changes. For this you need to specify the URL and authentification data if required. The full order object will be sent to the specified URL with the data after editing. The example:
Body: Array
(
[entity_id] => 500
[state] => processing
[status] => processing
[coupon_code] =>
[shipping_description] => Free Shipping - Free
[is_virtual] => 0
[store_id] => 1
[customer_id] => 3
[base_discount_amount] => -0
[base_discount_canceled] =>
[base_discount_invoiced] => 0
[base_discount_refunded] =>
[base_grand_total] => 1800
[base_shipping_amount] => 0.0000
[base_shipping_canceled] =>
[base_shipping_invoiced] => 0
[base_shipping_refunded] =>
[base_shipping_tax_amount] => 0.0000
[base_shipping_tax_refunded] =>
[base_subtotal] => 1500
[base_subtotal_canceled] =>
[base_subtotal_invoiced] => 1500
[base_subtotal_refunded] =>
[base_tax_amount] => 300
[base_tax_canceled] =>
[base_tax_invoiced] => 300
[base_tax_refunded] =>
[base_to_global_rate] => 1.0000
[base_to_order_rate] => 1.0000
[base_total_canceled] =>
[base_total_invoiced] => 1803.5
[base_total_invoiced_cost] => 0
[base_total_offline_refunded] =>
[base_total_online_refunded] =>
[base_total_paid] => 1800
[base_total_qty_ordered] =>
[base_total_refunded] =>
[discount_amount] => -0
[discount_canceled] =>
[discount_invoiced] => 0
[discount_refunded] =>
[grand_total] => 1800
[shipping_amount] => 0.0000
[shipping_canceled] =>
[shipping_invoiced] => 0
[shipping_refunded] =>
[shipping_tax_amount] => 0.0000
[shipping_tax_refunded] =>
[store_to_base_rate] => 0.0000
[store_to_order_rate] => 0.0000
[subtotal] => 1500
[subtotal_canceled] =>
[subtotal_invoiced] => 1500
[subtotal_refunded] =>
[tax_amount] => 300
[tax_canceled] =>
[tax_invoiced] => 300
[tax_refunded] =>
[total_canceled] =>
[total_invoiced] => 1803.5
[total_offline_refunded] =>
[total_online_refunded] =>
[total_paid] => 1800
[total_qty_ordered] => 15
[total_refunded] =>
[can_ship_partially] =>
[can_ship_partially_item] =>
[customer_is_guest] => 0
[customer_note_notify] => 1
[billing_address_id] => 783
[customer_group_id] => 3
[edit_increment] =>
[email_sent] => 1
[send_email] => 1
[forced_shipment_with_invoice] =>
[payment_auth_expiration] =>
[quote_address_id] =>
[quote_id] => 680
[shipping_address_id] => 782
[adjustment_negative] =>
[adjustment_positive] =>
[base_adjustment_negative] =>
[base_adjustment_positive] =>
[base_shipping_discount_amount] => 0.0000
[base_subtotal_incl_tax] => 1800
[base_total_due] => 0.0000
[payment_authorization_amount] =>
[shipping_discount_amount] => 0.0000
[subtotal_incl_tax] => 1800
[total_due] => 0.0000
[weight] => 15
[customer_dob] =>
[increment_id] => 000000495
[applied_rule_ids] =>
[base_currency_code] => USD
[customer_email] => [email protected]
[customer_firstname] => John
[customer_lastname] => Doe
[customer_middlename] =>
[customer_prefix] =>
[customer_suffix] =>
[customer_taxvat] =>
[discount_description] =>
[ext_customer_id] =>
[ext_order_id] =>
[global_currency_code] => USD
[hold_before_state] =>
[hold_before_status] =>
[order_currency_code] => USD
[original_increment_id] =>
[relation_child_id] =>
[relation_child_real_id] =>
[relation_parent_id] =>
[relation_parent_real_id] =>
[remote_ip] => 12.34.56.78
[shipping_method] => freeshipping_freeshipping
[store_currency_code] => USD
[store_name] => Main Website
Main Website Store
Default Store View
[x_forwarded_for] =>
[customer_note] =>
[created_at] => 2021-09-14 12:44:58
[updated_at] => 2021-09-16 20:54:42
[total_item_count] => 1
[customer_gender] => 0
[discount_tax_compensation_amount] => 0
[base_discount_tax_compensation_amount] => 0
[shipping_discount_tax_compensation_amount] => 0.0000
[base_shipping_discount_tax_compensation_amnt] => 0.0000
[discount_tax_compensation_invoiced] => 0
[base_discount_tax_compensation_invoiced] => 0
[discount_tax_compensation_refunded] =>
[base_discount_tax_compensation_refunded] =>
[shipping_incl_tax] => 0.0000
[base_shipping_incl_tax] => 0.0000
[coupon_rule_name] =>
[base_customer_balance_amount] =>
[customer_balance_amount] =>
[base_customer_balance_invoiced] =>
[customer_balance_invoiced] =>
[base_customer_balance_refunded] =>
[customer_balance_refunded] =>
[bs_customer_bal_total_refunded] =>
[customer_bal_total_refunded] =>
[gift_cards] => []
[base_gift_cards_amount] => 0.0000
[gift_cards_amount] => 0.0000
[base_gift_cards_invoiced] =>
[gift_cards_invoiced] =>
[base_gift_cards_refunded] =>
[gift_cards_refunded] =>
[gift_message_id] =>
[gw_id] =>
[gw_allow_gift_receipt] =>
[gw_add_card] =>
[gw_base_price] => 0.0000
[gw_price] => 0.0000
[gw_items_base_price] => 0.0000
[gw_items_price] => 0.0000
[gw_card_base_price] => 0.0000
[gw_card_price] => 0.0000
[gw_base_tax_amount] =>
[gw_tax_amount] =>
[gw_items_base_tax_amount] =>
[gw_items_tax_amount] =>
[gw_card_base_tax_amount] =>
[gw_card_tax_amount] =>
[gw_base_price_incl_tax] =>
[gw_price_incl_tax] =>
[gw_items_base_price_incl_tax] =>
[gw_items_price_incl_tax] =>
[gw_card_base_price_incl_tax] =>
[gw_card_price_incl_tax] =>
[gw_base_price_invoiced] =>
[gw_price_invoiced] =>
[gw_items_base_price_invoiced] =>
[gw_items_price_invoiced] =>
[gw_card_base_price_invoiced] =>
[gw_card_price_invoiced] =>
[gw_base_tax_amount_invoiced] =>
[gw_tax_amount_invoiced] =>
[gw_items_base_tax_invoiced] =>
[gw_items_tax_invoiced] =>
[gw_card_base_tax_invoiced] =>
[gw_card_tax_invoiced] =>
[gw_base_price_refunded] =>
[gw_price_refunded] =>
[gw_items_base_price_refunded] =>
[gw_items_price_refunded] =>
[gw_card_base_price_refunded] =>
[gw_card_price_refunded] =>
[gw_base_tax_amount_refunded] =>
[gw_tax_amount_refunded] =>
[gw_items_base_tax_refunded] =>
[gw_items_tax_refunded] =>
[gw_card_base_tax_refunded] =>
[gw_card_tax_refunded] =>
[paypal_ipn_customer_notified] => 0
[reward_points_balance] =>
[base_reward_currency_amount] =>
[reward_currency_amount] =>
[base_rwrd_crrncy_amt_invoiced] =>
[rwrd_currency_amount_invoiced] =>
[base_rwrd_crrncy_amnt_refnded] =>
[rwrd_crrncy_amnt_refunded] =>
[reward_points_balance_refund] =>
[mageworx_donation_invoiced] =>
[base_mageworx_donation_invoiced] =>
[mageworx_donation_refunded] =>
[base_mageworx_donation_refunded] =>
[mageworx_donation_cancelled] =>
[base_mageworx_donation_cancelled] =>
[mageworx_donation_amount] => 0.0000
[base_mageworx_donation_amount] => 0.0000
[mageworx_donation_tax_amount] => 0.0000
[base_mageworx_donation_tax_amount] => 0.0000
[mageworx_donation_details] =>
[gift_aid] => 0
[uk_address_for_gift_aid] =>
[mageworx_pickup_location_id] =>
[tj_salestax_sync_date] =>
[mageworx_fee_amount] => 0.0000
[base_mageworx_fee_amount] => 0.0000
[mageworx_fee_tax_amount] => 0.0000
[base_mageworx_fee_tax_amount] => 0.0000
[mageworx_fee_details] =>
[mageworx_fee_invoiced] =>
[base_mageworx_fee_invoiced] =>
[mageworx_fee_refunded] =>
[base_mageworx_fee_refunded] =>
[mageworx_fee_cancelled] =>
[base_mageworx_fee_cancelled] =>
[mageworx_product_fee_amount] => 0.0000
[base_mageworx_product_fee_amount] => 0.0000
[mageworx_product_fee_tax_amount] => 0.0000
[base_mageworx_product_fee_tax_amount] => 0.0000
[mageworx_product_fee_details] =>
[mageworx_product_fee_invoiced] =>
[base_mageworx_product_fee_invoiced] =>
[mageworx_product_fee_refunded] =>
[base_mageworx_product_fee_refunded] =>
[mageworx_product_fee_cancelled] =>
[base_mageworx_product_fee_cancelled] =>
[mageworx_giftcards_description] =>
[mageworx_giftcards_amount] =>
[base_mageworx_giftcards_amount] =>
[mw_earn_points_data] => {"1":10}
[mw_rwrdpoints_amnt] =>
[base_mw_rwrdpoints_cur_amnt] =>
[mw_rwrdpoints_cur_amnt] =>
[base_mw_rwrdpoints_cur_amnt_invoice] =>
[mw_rwrdpoints_cur_amnt_invoice] =>
[base_mw_rwrdpoints_cur_amnt_refund] =>
[mw_rwrdpoints_cur_amnt_refund] =>
[mw_rwrdpoints_amnt_refund] =>
[extension_attributes] => Array
(
)
[shipping_tax_invoiced] => 0
[base_shipping_tax_invoiced] => 0
[items] => Array
(
[0] => Array
(
[item_id] => 866
[order_id] => 500
[parent_item_id] =>
[quote_item_id] => 1164
[store_id] => 1
[created_at] => 2021-09-14 12:45:00
[updated_at] => 2021-09-16 20:54:42
[product_id] => 2054
[product_type] => simple
[product_options] => Array
(
[info_buyRequest] => Array
(
[uenc] => aHR0cHM6Ly9tMjQwLjEwMDEwMDEwMTAuY29tL2dlYXIvYmFncy5odG1s
[product] => 2054
[qty] => 1
)
[giftcard_lifetime] =>
[giftcard_is_redeemable] => 0
[giftcard_email_template] =>
[giftcard_type] =>
)
[weight] => 1.0000
[is_virtual] => 0
[sku] => C
[name] => C
[description] =>
[applied_rule_ids] =>
[additional_data] =>
[is_qty_decimal] => 0
[no_discount] => 0
[qty_backordered] =>
[qty_canceled] => 0.0000
[qty_invoiced] => 15.0000
[qty_ordered] => 15.0000
[qty_refunded] => 0.0000
[qty_shipped] => 0.0000
[base_cost] =>
[price] => 100.0000
[base_price] => 100.0000
[original_price] => 3.0000
[base_original_price] => 3.0000
[tax_percent] => 20.0000
[tax_amount] => 300.0000
[base_tax_amount] => 300.0000
[tax_invoiced] => 300.0000
[base_tax_invoiced] => 300.0000
[discount_percent] => 0.0000
[discount_amount] => 0.0000
[base_discount_amount] => 0.0000
[discount_invoiced] => 0.0000
[base_discount_invoiced] => 0.0000
[amount_refunded] => 0.0000
[base_amount_refunded] => 0.0000
[row_total] => 1500.0000
[base_row_total] => 1500.0000
[row_invoiced] => 1500.0000
[base_row_invoiced] => 1500.0000
[row_weight] => 15.0000
[base_tax_before_discount] =>
[tax_before_discount] =>
[ext_order_item_id] =>
[locked_do_invoice] =>
[locked_do_ship] =>
[price_incl_tax] => 120.0000
[base_price_incl_tax] => 120.0000
[row_total_incl_tax] => 1800.0000
[base_row_total_incl_tax] => 1800.0000
[discount_tax_compensation_amount] => 0.0000
[base_discount_tax_compensation_amount] => 0.0000
[discount_tax_compensation_invoiced] => 0.0000
[base_discount_tax_compensation_invoiced] => 0.0000
[discount_tax_compensation_refunded] =>
[base_discount_tax_compensation_refunded] =>
[tax_canceled] =>
[discount_tax_compensation_canceled] =>
[tax_refunded] =>
[base_tax_refunded] =>
[discount_refunded] =>
[base_discount_refunded] =>
[event_id] =>
[weee_tax_applied] => []
[weee_tax_applied_amount] =>
[weee_tax_applied_row_amount] =>
[weee_tax_disposition] =>
[weee_tax_row_disposition] =>
[base_weee_tax_applied_amount] =>
[base_weee_tax_applied_row_amnt] =>
[base_weee_tax_disposition] =>
[base_weee_tax_row_disposition] =>
[giftregistry_item_id] =>
[gift_message_id] =>
[gift_message_available] =>
[gw_id] =>
[gw_base_price] =>
[gw_price] =>
[gw_base_tax_amount] =>
[gw_tax_amount] =>
[gw_base_price_invoiced] =>
[gw_price_invoiced] =>
[gw_base_tax_amount_invoiced] =>
[gw_tax_amount_invoiced] =>
[gw_base_price_refunded] =>
[gw_price_refunded] =>
[gw_base_tax_amount_refunded] =>
[gw_tax_amount_refunded] =>
[free_shipping] => 0
[qty_returned] => 0.0000
)
)
[addresses] => Array
(
[782] => Array
(
[entity_id] => 782
[parent_id] => 500
[customer_address_id] => 4
[quote_address_id] => 2116
[region_id] =>
[customer_id] =>
[fax] =>
[region] => California
[postcode] => 90210
[lastname] => Doe
[street] => Rodeo Dr.
[city] => Los Angeles
[email] => [email protected]
[telephone] => +1123123123
[country_id] => US
[firstname] => John
[address_type] => shipping
[prefix] =>
[middlename] =>
[suffix] =>
[company] => Company
[vat_id] =>
[vat_is_valid] =>
[vat_request_id] =>
[vat_request_date] =>
[vat_request_success] =>
[giftregistry_item_id] =>
[customer_level] => 0
)
[783] => Array
(
[entity_id] => 783
[parent_id] => 500
[customer_address_id] => 118
[quote_address_id] => 2117
[region_id] => 23
[customer_id] =>
[fax] =>
[region] => Illinois
[postcode] => 60089
[lastname] => Doe
[street] => Main str.
30 112
[city] => Chicago
[email] => [email protected]
[telephone] => +1234234234
[country_id] => US
[firstname] => Jane
[address_type] => billing
[prefix] =>
[middlename] =>
[suffix] =>
[company] => Company1
[vat_id] => 123123123123
[vat_is_valid] =>
[vat_request_id] =>
[vat_request_date] =>
[vat_request_success] =>
[giftregistry_item_id] =>
[customer_level] => 0
)
)
)
Got Questions?¶
Need help with the extensions? Feel free submit a ticket from https://www.mageworx.com/support/
Mageworx offers outstanding services developing custom-tailored solutions for Magento platform to attain your eCommerce objectives. Our professional impassioned team provides profound and custom oriented development of your project in a short timeframe.