- Отправляется всё содержимое чека или только итоговая сумма?
- Всё содержимое, по позициям: название, код, количество, единица измерения, цена с НДС и налоговая ставка для каждой позиции отдельно. Итоговая сумма не отправляется, Tezga считает её из позиций, поэтому не может случиться, чтобы сумма и позиции не совпадали. Один чек несёт до 500 позиций. Если код есть в каталоге Tezga, позиция привязывается к этому товару, поэтому отчёт по товару работает и для веб-продажи.
- Как на фискальном чеке видны скидки и промокоды из магазина?
- Как скидка, а не как скрытая цена. На /order вы отправляете popustProcenat или popustRsd по позиции, и popustProcenat или popustRsd на весь чек (по уровню только одно поле). Скидку на весь чек Tezga распределяет по позициям пропорционально основе, так же как в приложении, поэтому НДС по ставкам остаётся точным, а остаток копеек идёт на самую большую позицию. Когда позиция несёт код из каталога Tezga, отправьте cenaIzZahteva:true: тогда действуют цена и скидка из запроса, а из каталога название, единица измерения и ставка. Связи с интернет-магазином (WooCommerce, Shopify, PrestaShop, OpenCart, Magento, BigCommerce) всегда фискализируют цену, которую заплатил покупатель. Скидка больше суммы, два поля на одном уровне и скидка вместе с каталожным кодом без cenaIzZahteva возвращают 422.
- Как учитываются ставки 20 и 10 процентов, когда корзина смешанная?
- Каждая позиция несёт свою ставку, поэтому смешанная корзина не особый случай. Tezga работает с тремя налоговыми метками Налоговой администрации: Ђ для 20 процентов, Е для 10 процентов и А для освобождённого. В API ставку вы отправляете как 20, 10, 0 или pdv20, pdv10, oslobodjeno; для коннектора магазина вы задаёте сопоставление налогового класса из магазина одной из этих трёх. Пустая ставка трактуется как 20 процентов, никогда как освобождение, а неизвестное значение возвращает ошибку вместо неправильного чека. Ноль с платформы у плательщика НДС не трактуется как освобождение.
- Распознаёт ли система, физическое лицо покупатель или юридическое?
- По PIB. Если с заказом приходит PIB, покупатель записывается как юридическое лицо: на фискальном чеке идёт идентификация покупателя 10:PIB, а покупатель находится или создаётся в справочнике по PIB. Без PIB чек розничный. Коннекторы берут PIB из полей платформы: Magento из customer_taxvat, PrestaShop из siret, WooCommerce из мета-поля для PIB или VAT, Shopify из примечания к заказу в виде PIB: 123456789. Из собственной системы вы просто отправляете его в поле kupac.pib.
- Идёт ли B2B-чек из магазина и на SEF, или это делает ERP?
- Может из Tezga. Для заказа с PIB поток fiskalni_i_sef выдаёт фискальный чек и тот же документ отправляет на SEF как электронный счёт, с фискальным PFR-номером как ссылкой на счёте. Поток sef отправляет только электронный счёт, без фискализации. Условие в том, что у компании есть свой ключ API SEF в Настройках; без него документ получает статус не подключён и ждёт. Покупатель из государственного сектора с JBKJS не может в фискальный поток, потому что ему выдаётся исключительно электронный счёт.
- Как идёт авансовый счёт, когда покупатель платит картой вперёд?
- Через отдельный адрес /api/integrations/advance: вы отправляете сумму аванса, дату платежа, ставку и покупателя, Tezga выдаёт авансовый счёт. Когда вы поставляете товар, тот же вызов с zatvori:true и реальными позициями выдаёт возврат аванса, а затем итоговый счёт, со ссылкой на аванс, которую требует закон. Если возврат аванса не проходит в Налоговой, итоговый счёт не выдаётся, чтобы не возник двойной оборот. Веб-заказ, оплаченный вперёд, может идти и через /order с tok:"avans" (и опциональным datumUplate): создаётся авансовый счёт на сумму заказа после скидки, а закрывается тем же вызовом /advance с zatvori:true и тем же externalId. Так работает заказ с одной налоговой ставкой; смешанные ставки возвращают 422 с указанием на /advance. Для заказа, который оплачивается и сразу поставляется, аванс не нужен: один вызов на /order.
- Работает ли частичный возврат, например одна из трёх позиций?
- Работает. POST /api/integrations/refund с vrsta:refundacija и списком позиций с количеством возвращает только эти позиции, а сумма считается пропорционально оригиналу и уменьшается на то, что уже было возвращено ранее. Сторно это всегда весь чек. Возврат в PFR несёт номер и время оригинального чека, поэтому связь видна и Налоговой. Оригинал находится по documentId Tezga или по вашему номеру заказа.
- Как сторнируется заказ, когда покупатель отказывается, из ERP или из магазина?
- Из ERP одним вызовом на /api/integrations/refund по номеру заказа. Из Tezga кнопкой на заказе: фискальное сторно или возврат выдаётся, заказ получает статус возвращён, а в WooCommerce записывается запись о возврате и заметка, в Shopify заметка. Деньги покупателю не возвращаются автоматически, это остаётся на вашем платёжном посреднике. Сторно и возврат, выданные через API, когда проходят в Налоговой, запускают webhook с номером заказа; действия из кассы событие не отправляют, поэтому ERP читает их через GET documents.