- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/notify.php
- Класс: BitrixSaleNotify
- Вызов: Notify::sendCheckError
static function sendCheckError(InternalsEntity $entity)
{
$result = new Result();
if (static::isNotifyDisabled())
{
return $result;
}
if (!($entity instanceof Payment)
&& !($entity instanceof Shipment)
)
{
throw new MainArgumentTypeException('entity', 'BitrixSalePayment or BitrixSaleShipment');
}
/** @var PaymentCollection|ShipmentCollection $collection */
if (!$collection = $entity->getCollection())
{
$result->addError(new ResultError(MainLocalizationLoc::getMessage("SALE_NOTIFY_ENTITY_COLLECTION_NOT_FOUND")));
return $result;
}
/** @var Order $order */
if (!$order = $collection->getOrder())
{
$result->addError(new ResultError(MainLocalizationLoc::getMessage("SALE_NOTIFY_ORDER_NOT_FOUND")));
return $result;
}
$filter = array('STATUS' => 'E');
if ($entity instanceof Payment)
{
$filter['PAYMENT_ID'] = $entity->getId();
}
elseif ($entity instanceof Shipment)
{
$filter['SHIPMENT_ID'] = $entity->getId();
}
$dbRes = CashboxCheckTable::getList(
array(
'select' => array('*'),
'filter' => $filter,
'order' => array('DATE_PRINT_END' => 'DESC'),
'limit' => 1
)
);
$check = $dbRes->fetch();
if (!$check)
{
$result->addError(new ResultError(MainLocalizationLoc::getMessage("SALE_NOTIFY_ORDER_CHECK_NOT_FOUND")));
return $result;
}
$cashbox = Manager::getCashboxFromCache($check['CASHBOX_ID']);
if ($cashbox['EMAIL'])
{
$cashbox = Manager::getCashboxFromCache($check['CASHBOX_ID']);
$fields = array(
"ORDER_ACCOUNT_NUMBER" => $order->getField("ACCOUNT_NUMBER"),
"CHECK_ID" => $check['ID'],
"ORDER_ID" => $order->getId(),
"ORDER_DATE" => $order->getDateInsert()->toString(),
"EMAIL" => $cashbox['EMAIL'],
"SALE_EMAIL" => MainConfigOption::get("sale", "order_email", "order@".$_SERVER["SERVER_NAME"]),
);
$context = MainContext::getCurrent();
$server = $context->getServer();
if (IsModuleInstalled('crm'))
{
$fields['LINK_URL'] = 'http://'.$server->getServerName().'/shop/orders/details/'.$order->getId().'/';
}
else
{
$fields['LINK_URL'] = 'http://'.$server->getServerName().'/bitrix/admin/sale_order_view.php?ID='.$order->getId();
}
$eventName = static::EVENT_ON_CHECK_PRINT_ERROR_SEND_EMAIL;
$event = new CEvent;
$event->Send($eventName, $order->getField('LID'), $fields, "N");
if ($entity instanceof Payment)
{
static::addSentEvent('p'.$entity->getId(), $eventName);
}
elseif ($entity instanceof Shipment)
{
static::addSentEvent('s'.$entity->getId(), $eventName);
}
}
CSaleMobileOrderPush::send(
static::EVENT_MOBILE_PUSH_ORDER_CHECK_ERROR,
array(
'ORDER' => static::getOrderFields($order),
'CHECK' => $check
)
);
return $result;
}