Notice: You are browsing the documentation for PrestaShop 9, which is currently in development.
You might want to read the documentation for the current version, PrestaShop 8. Read the current version of this page
Page can be reached by going to Sell -> Orders -> Orders -> Add new order
. It allows the Back Office user to create a new order for a
selected customer.
There are some benefits comparing to Front Office (FO) order creation:
This page is very specific compared to other BO pages, it has kind of a flow - each block depends on previous block selections, that’s why most of it depends on javascript. Unfortunately it also has limited extension capabilities - there are no common services as form or grid builders, therefore no hooks that could help module developers to modify the display.
admin-dev/themes/new-theme/js/pages/order/create.ts
.
These .ts
files are the develop
version prior compiling. See “How to compile assets” for
more information.When you enter the page, first thing you will notice is the Customer
block:
Use the search to find desired customer by email
or name
or create a new one
by pressing Add new customer
. Customer search is performed using ajax
by calling CustomerController::searchAction. Javascript code can be found in customer-manager.ts
Add new customer
button opens the same form from Customers -> Customers -> Add new customer
loaded in an iframe. The iframe
content is rendered using the Lite Display
mode of the Back Office.Once the customer is loaded, a new cart is created behind the scenes and the following information is shown:
Details of each cart that was used by the customer can be checked by clicking on Details
button - The Sell -> Orders -> Shopping Carts -> View cart
page will be opened in a modal window.
Existing Cart
can be also used to create a new one - press Use
and the selected Cart
will be loaded and available for modifications.
This block is loaded using ajax
by calling CustomerController::getCartsAction. Related javascript
code can be found in customer-manager.ts
Details of each order used by the customer can be checked by clicking on Details
button - The Sell -> Orders -> Carts -> View order
page will be opened in a modal window.
Existing Order
can be also used to create a new one - press Use
and a new Cart
will be created with all the information duplicated from the selected Order
.
This block is loaded using ajax
by calling CustomerController::getOrdersAction. Related javascript
code can be found in customer-manager.ts
Cart block contains cart products
, currency
and language
selection. Products can be searched and added to a cart. A list of products and a new block of Cart rules will appear after a product is added. Listed products quantity and price can be modified. Related actions addProductAction
, editProductPriceAction
and editProductQuantityAction
can be found in CartController
Order view page
, however behind the scenes it is different. Unlike in the Order view page
, we don’t have any OrderDetail
yet, because at this point we are still modifying the Cart
, so it is achieved by creating a new temporary SpecificPrice and assigning specifically to that certain Cart
, Product
, Customer
and Shop
. See CartController::editProductPriceAction.This block allows searching cart rules by name or code and adding them to the cart. Related actions can be found in CartRuleController::searchAction and CartController::addCartRuleAction It is also possible to create a new Cart rule
by clicking the Add new voucher
button.
Add new voucher
button opens the same form from Sell -> Catalog -> Discounts -> Add new cart rule
loaded in an iframe
.This block allows selecting the delivery
and invoice
addresses for the customer. New address can be created by clicking Add new address
- the modal window with the creation form will appear. It is also possible to edit
the addresses in same manner, by clicking Edit
on selected address.
Customers -> Addresses
page rendered using an iframe
.
Shipping block will appear only if at least one carrier is available for selected delivery address. This block allows selecting a carrier for the order, shows the shipping price and allows to mark the order as Free shipping
.
Free shipping
is checked, behind the scenes, it is achieved by creating a new temporary CartRule with $free_shipping = true
and assigned to customer. See UpdateCartDeliverySettingsHandler::handleFreeShippingOption.This is the final block that requires selecting payment method
, order status
and allows submitting the whole form. Prior to that it also allows adding a message for the customer
or sending the email with the pre-filled order to the customer
. Once Create the order
is clicked it uses the OrderController::placeAction to create the order.
More actions -> Proceed to checkout in the front office
to finish up the order in the Front office of your shop.