Мне кажется это кому ни-будь может пригодиться. ne

Мне кажется это кому ни-будь может пригодиться.

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:

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;
}