protected function validateStatusData(TPkgShopOrderStatusData $oData)
    {
        // does the order exists?
        $order = $oData->getOrder();
        if (!$order) {
            throw new TPkgCmsException_Log('order status update: missing order object', array('statusdata' => $oData));
        }
        // do the items exists and belong to the order? and is the amount shippable?
        $aItems = $oData->getItems();
        foreach ($aItems as $oItem) {
            /** @var TPkgShopOrderStatusItemData $oItem */
            $oOrderItem = TdbShopOrderItem::GetNewInstance();
            if (false === $oOrderItem->LoadFromFields(
                    array('shop_order_id' => $order->id, 'id' => $oItem->getShopOrderItemId())
                )
            ) {
                throw new TPkgCmsException_Log(
                    'order status update: order item invalid',
                    array('statusdata' => $oData, 'item' => $oItem)
                );
            }
        }
    }