Налаштування зв'язки онлайн-магазину та офлайн-каси 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування зв'язки онлайн-магазину та офлайн-каси 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування інтеграції інтернет-магазину та оффлайн-касл 1С-Bitrix

Клієнт оформляє замовлення онлайн і вибирає «оплата при отриманні». Кур'єр доставляє замовлення, пробиває чек на мобільній касі. Фіскальний чек виданий, але в Bitrix замовлення й досі в статусі «очікує оплати». Склад не списав позиції, бухгалтерія не бачить факту оплати. Інтеграція інтернет-магазину з оффлайн-касою — це не тільки про фіскалізацію, але й про синхронізацію стану замовлень.

Схема фіскалізації платежів

За 54-ФЗ кожний факт розрахунку має супроводжуватись чеком. У Bitrix модуль salescenter та компонент bitrix:salescenter.cashbox реалізують інтеграцію з онлайн-касами через ОФД. Для оффлайн-касл схема інша: чек видається касовим апаратом (АТОЛ, Эвотор, Штрих-М), а Bitrix має дізнатись про цей факт.

Два напрями передачі даних:

  1. Bitrix → каса: дані замовлення (позиції, суми, ПДВ) для формування чека
  2. Каса → Bitrix: підтвердження проведення чека з номером та фіскальною ознакою

Інтеграція через API касового програмного забезпечення

Більшість сучасних касових систем мають REST API або webhook. Эвотор надає Cloud API, АТОЛ — власний API для хмарної касл.

На стороні Bitrix при зміні статусу замовлення (наприклад, «передано кур'єру»):

AddEventHandler('sale', 'OnSaleStatusOrderChange', function(\Bitrix\Main\Event $event) {
    $order  = $event->getParameter('ENTITY');
    $status = $order->getField('STATUS_ID');

    if ($status !== 'DE') { // 'DE' = delivered, за вашою схемою статусів
        return;
    }

    // Формуємо дані для касл
    $items = [];
    foreach ($order->getBasket() as $item) {
        $items[] = [
            'name'     => $item->getField('NAME'),
            'quantity' => $item->getQuantity(),
            'price'    => $item->getPrice(),
            'vat'      => getVatTag($item->getField('VAT_RATE')),
        ];
    }

    // Відправляємо в касову систему (приклад для Эвотор)
    $evotorApi->sendReceipt($order->getId(), $items, $order->getPrice());
});

Отримання підтвердження від касл

Каса надсилає webhook при успішному проведенні чека. Endpoint у Bitrix:

// /local/ajax/cashbox-callback.php
$data = json_decode(file_get_contents('php://input'), true);

if ($data['event'] === 'receipt.created') {
    $orderId    = $data['external_id'];
    $fiscalSign = $data['fiscal_document_number'];

    $order = \Bitrix\Sale\Order::load($orderId);
    if ($order) {
        // Фіксуємо оплату
        $payment = $order->getPaymentCollection()->current();
        $payment->setField('PAID', 'Y');
        $payment->setField('EXTERNAL_PAYMENT', $fiscalSign);

        // Переводимо замовлення в потрібний статус
        $order->setField('STATUS_ID', 'F'); // Finalized
        $order->save();
    }
}

Синхронізація залишків

Продаж через оффлайн-касу без прив'язки до онлайн-замовлення — наприклад, хтось купив у магазині товар, який одночасно очікується для онлайн-замовлення — має зменшити залишки в b_catalog_product або b_catalog_store_product.

Два підходи:

  • Через 1С: 1С враховує всі продажі (онлайн + оффлайн) та синхронізує залишки в Bitrix за розписанням
  • Пряма інтеграція касл з Bitrix: каса при кожній продажі викликає API Bitrix для списання залишків через CCatalogProduct::Update() або REST API catalog.product.update

ПДВ та тег ставки

Помилка у ставці ПДВ при відправленні на касу — це порушення 54-ФЗ. Ставки ПДВ у Bitrix зберігаються в b_catalog_vat та b_sale_tax. При формуванні даних для чека маппінг:

  • VAT_RATE = 20 → тег 1105 (ПДВ 20%)
  • VAT_RATE = 10 → тег 1104 (ПДВ 10%)
  • VAT_RATE = 0 → тег 1106 (ПДВ 0%)
  • VAT_INCLUDE = N (без ПДВ) → тег 1107

Що налаштовуємо

  • Обробник OnSaleStatusOrderChange для відправлення даних у касову систему
  • Webhook-endpoint для отримання підтвердження фіскалізації
  • Маппінг ставок ПДВ між Bitrix та касовою системою
  • Оновлення статусу оплати та поля з фіскальною ознакою в b_sale_payment
  • Механізм синхронізації залишків при оффлайн-продажах
  • Логування всіх звертань до касового API для діагностики