Skip to content

Magento 2 Order Editor Manual

Order Editor

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:

Magento 2 Order Editor

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

Magento 2 Order Management Configuration

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

Magento 2 Order Management Configuration

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

Magento 2 Order Management Configuration

This will be described later in this document

Order Modification

Magento 2 Order Management Order Modification

The order information is gathered into several groups.

General Order Modifications

Magento 2 Order Management Order Modification

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)

Magento 2 Order Management Order Modification

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

Magento 2 Order Management Order 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

Magento 2 Order Management Order Modification Billing

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

Magento 2 Order Management Order Modification Shipping

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

Magento 2 Order Management Order Modification Shipping

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

Magento 2 Order Management Order Modification Shipping

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

Magento 2 Order Management Order Modification Items

Click the Edit link near the Items Ordered to modify its details. You can change price, quantity, tax, and discounts.

Magento 2 Order Management Order Modification Items

Once the store owner performs the changes, the popup with the new payment information appears below the products grid.

Magento 2 Order Management Order Modification Items

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.

Magento 2 Order Management Order Modification Items

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.

Magento 2 Order Management Order Modification Items

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:

Magento 2 Order Management

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 code
    • firstname (string)
    • lastname (string)
    • postcode (string)
    • region (string) - text representation of region
    • region_code (string) - any available valid region code
    • region_id (number) - any available valid region id
    • street (array) - array of strings
    • telephone (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 code
    • firstname (string)
    • lastname (string)
    • postcode (string)
    • region (string) - text representation of region
    • region_code (string) - any available valid region code
    • region_id (number) - any available valid region id
    • street (array) - array of strings
    • telephone (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&trade; 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) - required
    • price (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 removed
    • tax_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 integer
    • itemId (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 integer
    • itemsIds (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.