Мне кажется это кому ни-будь может пригодиться. newstatus.tpl: {extends file="message/layout.tpl"}

{block name=body}

<h3 style="margin: 20px 0 50px;">
    Номер заказа: <strong>{$order.id}</strong> 
    Новый статус заказа: <strong>{$newstatusstr}</strong>
</h3> 

{$smarty.block.child}

<h3>Список товаров</h3>
<table border="1" width="90%">
    <tbody>
        <tr>
            <th>Наименование</th>
            <th>Количество</th>
            <th>Цена</th>
            <th>Сумма</th>
        </tr>
       
        {foreach $order_data as $product}
            <tr>
                <td><a href="{$site_url}{$product._Product.uri}">{$product._Product.pagetitle}</a></td> 
                <td>{$product.quantity} </td>
                <td>{$product.price|number_format:2:",":" "} {$product.currency_code}</td>
                <td>{$summ = $product.quantity * $product.price}{$summ|number_format:2:",":" "} {$product.currency_code}</td>
            </tr>
        {/foreach}
    </tbody>
</table>

<br />
<br />

<strong>Итого: </strong> {if $order.discount}<s>{((float)$order.original_sum)|number_format:2:".":" "}</s> {$product.currency_code}<br /><strong>С учетом скидки {$order.discount}%: </strong>{/if} {((float)$order.sum)|number_format:2:".":" "} {$product.currency_code}

{/block} Плагин UpdateOrder: <?php

switch ($modx->event->name) {

case 'OnShopModxOrderBeforeSave':

    // Если поле статус изменено, то фиксируем новый статус
    if ($object->isDirty('status_id')) {
        $object->set("new_status", $object->status_id);
    }

    break;

case 'OnShopModxOrderSave':

    if ($object->new_status) {

        $arr1 = $object->get('_OrderProducts');
        $sendcont = false;
        $modx->switchContext('web');
        $modx->invokeEvent('OnHandleRequest');
        switch ($object->new_status) {
            // Принят
            case 3:
                $sendcont = true;
                $modx->smarty->assign('newstatusstr', 'Принят');
                break;
            case 4:
                $sendcont = true;
                $modx->smarty->assign('newstatusstr', 'Доставка');
                break;
            case 5:
                $sendcont = true;
                $modx->smarty->assign('newstatusstr', 'Доставлен');
                break;
            case 6:
                $sendcont = true;
                $modx->smarty->assign('newstatusstr', 'Выполнен');
                break;
            case 7:
                $sendcont = true;
                $modx->smarty->assign('newstatusstr', 'Отменен');
                break;
            case 8:
                $sendcont = true;
                $modx->smarty->assign('newstatusstr', 'Оплачен');
                break;
        }
        if (($object->Contractor) && ($sendcont)) {

            
            $modx->smarty->assign('order', $object->toArray());
            $modx->smarty->assign('order_data', $arr1);
            //$modx->log(1, print_r($object->toArray(), 1));



            $message = $modx->smarty->fetch("message/order_submitted/newstatus.tpl");
            $subject = "Изменение статуса заказа №-" . $object->get('id');
            $object->Contractor->sendEmail($message, array(
                "subject" => $subject,
            ));
        }
    }

    break;

}