Bitrix Как прикрепить счёт в pdf к письму о новом заказе

 AddEventHandler("sale", "OnOrderNewSendEmail", "ModifyOrderSaleMails");
function ModifyOrderSaleMails($orderID, &$eventName, &$arFields)
{
  if (CModule::IncludeModule("sale") && CModule::IncludeModule("iblock")) {
    $arFields["ORDER_LIST"] =
      str_replace(' [Свойство для добавления в корзину: yes; Подарок: 1]', '', $arFields["ORDER_LIST"]);
    $arFields["ORDER_LIST"] = str_replace(' [Свойство для добавления в корзину: yes]', '', $arFields["ORDER_LIST"]);
  }

  if (isset($arFields['ORDER_REAL_ID'])) {
    $order = \Bitrix\Sale\Order::load($arFields['ORDER_REAL_ID']);
    if ($order) {
      $payment = $order->getPaymentCollection()[0];
      $paySystemService = $payment->getPaySystem();
      $PAY_SYSTEM_ID = (int)$payment->getPaymentSystemId();
      // 8 это id для системы оплаты "счёт на юр.лицо"
      if ($PAY_SYSTEM_ID === 8) {

        $today = new Type\Date();
        $fileName = 'invoice_' . $order->getField('ACCOUNT_NUMBER') . '_' . str_replace(['.', '\\', '/'], '-', $today->toString()) . '.pdf';
        $pdfContent = $paySystemService->getPdfContent($payment);
        $fileData = [
          'name' => $fileName,
          'type' => 'application/pdf',
          'content' => $pdfContent,
          'MODULE_ID' => 'sale'
        ];
        $fileId = \CFile::SaveFile($fileData, 'sale'); //сохраняем файл в базу

        // для отладки
        $result = \CFile::GetFileArray($fileId);

        //отправляем письмо с вложением
        \CEvent::SendImmediate($eventName, SITE_ID, $arFields, 'Y', '', array($fileId));

        \CFile::Delete($fileId); //удаляем файл из базы
        return false; //отменяем отправку основного события, чтобы не дублировать.
      }
    }
  }
}

Поделиться / сохранить

Comments