poster-prro-kit
Version:
Цей Kit призначений для роботи з PRRO, а саме для генерації XML документів для податкової, генерації фіскальних чеків для термопринтерів, генерації документів для PRRO в офлайн режимі, розрахунку податків та генераціі посилання на фіскальний чек в кабін
131 lines (121 loc) • 3.48 kB
Markdown
## Сервіс 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,
},
]
```
Скруглення буде відбуватися у іншому сервісі разово, тому тут такі цифри.