UNPKG

poster-prro-kit

Version:

Цей Kit призначений для роботи з PRRO, а саме для генерації XML документів для податкової, генерації фіскальних чеків для термопринтерів, генерації документів для PRRO в офлайн режимі, розрахунку податків та генераціі посилання на фіскальний чек в кабін

131 lines (121 loc) 3.48 kB
## Сервіс taxes Даний сервіс підготалює дані по податкам, які потім будуть використані в генераціі xml документа для ДПС. Для герераціі податків є 2 методи: - `getTaxesData` (безпосередньо разраховує податки за списком товарів) - `getTaxPrograms` (повертає конфіг зі списком податків) ### Опис В нас є 2 типи податків: - ПДВ - Акцизний податок Товар може мати або один з податків, наприклад ПДВ, або обидва ПДВ+акциз, або жодного. Якщо у товара немає податку, то це не фіскальний товар і нас він не цікавить. Для розрахунку податка використовується формула: ``` Сума_податка = (сума_товара * процент_податка) / (100 + процент_податка); ``` ### Важливий нюанс для випадка коли товар має обидва податки: Якщо в нас товар зі складним податком (ПДВ+акциз), то спочатку рахуємо Акциз від `суми_товару`, а потім рахуємо ПДВ від `суми_товару - суми_акцизу`. Тобто в складному податку Акциз рахується завжди" першим. ### Дефолтні дані по податковим программам ``` export const defaultVATTaxList = { А: { type: 1, name: "Без ПДВ", percent: 0, }, Б: { type: 2, name: "ПДВ 0%", percent: 0, }, В: { type: 3, name: "ПДВ 7%", percent: 7, }, Г: { type: 4, name: "ПДВ 20%", percent: 20, }, }; export const defaultExciseTaxList = { Д: { type: 5, name: "Акциз 5%", percent: 5, }, }; ``` ### Приклад структури даних товаріа з чеку по яким рахуємо податки ``` [ { id: 54, name: "Сирна паличка", count: 4, unit: "шт", price: 200, discount: 30, taxPrograms: "ГД", }, { id: 55, name: "Морозиво", count: 2, unit: "шт", price: 90.13, discount: 20, taxPrograms: "БД", }, { id: 56, name: "Кава", count: 1, unit: "шт", price: 20.13, discount: 0.35, taxPrograms: "В", }, ] ``` ### Приклад структури даних, який буде використовувати даних наступний сервіс (XML генератор) ``` [ { name: "Акциз 5%", percent: 5, program: "Д", sum: 44.298095238095236, turnover: 930.26, type: 5, }, { name: "ПДВ 20%", percent: 20, program: "Г", sum: 122.22222222222223, turnover: 770, type: 4, }, { name: "ПДВ 0%", percent: 0, program: "Б", sum: 0, turnover: 160.26, type: 2, }, { name: "ПДВ 7%", percent: 7, program: "В", sum: 1.2940186915887848, turnover: 19.779999999999998, type: 3, }, ] ``` Скруглення буде відбуватися у іншому сервісі разово, тому тут такі цифри.