Version: Edit on GitHub

Working with Order Agent

The Order Agent is a one stop API for working with orders, e.g. changing state of orders, modifying quantity of items, etc. and keeps track of these changes in a change log.

See following examples for how Order Agent can be used:

Change item quantity

<?php

// load order item
$orderItem = DataObject\OnlineShopOrderItem::getById($this->getParam('id'));
$order = $orderItem->getOrder();

// create new order agent
$orderManager = Factory::getInstance()->getOrderManager();
$orderAgent = $orderManager->createOrderAgent($order);

// change amount to 5
/** @var \Pimcore\Model\Element\Note $log */
$log = $orderAgent->itemChangeAmount($orderItem, 5);

// add user comment
$log->addData('message', 'text', 'customer has changed the order by phone');
$log->save();

Changelog Usage

<?php

// load order
$order = DataObject\OnlineShopOrder::getById($this->getParam('id'));

// create new order agent
$orderManager = Factory::getInstance()->getOrderManager();
$orderAgent = $orderManager->createOrderAgent($order);

// get changelog
/** @var \Pimcore\Model\Element\Note $log */
foreach($orderAgent->getFullChangeLog() as $log) {
    ...
}