Обмен валюты через кассу
актуальнаяПродажа и покупка валюты документом обмена: позиция чека становится валютной.
Режим для физической кассы. Если кассы нет, см. обмен валюты без кассы.
Как устроена позиция
| Поле позиции | Что значит при обмене |
|---|---|
currency | буквенный код валюты |
price | курс: сомов за единицу валюты |
quantity | сумма в валюте |
name | необязательно, без него касса подпишет сама: USD / Курс 87.5 |
Сумма документа это Σ price × quantity, то есть сомы.
Коды валют: KGS, USD, EUR, RUB, KZT, UZS, CNY, TRY, AED, GBP, CAD, JPY, KRW, CHF, SAR. Валюта должна быть в справочнике кассы.
Примеры
Продажа клиенту 100 USD по курсу 87.50, касса получает 8750 сом:
{
"id": "07b2f33c-0eaf-4353-abbf-794654654654",
"operation": "INCOME",
"products": [ { "id": "1", "currency": "USD", "price": 87.50, "quantity": 100 } ]
}{
"id": "1f0c22a8-8b41-4f27-9a51-2a90c2f19b77",
"operation": "EXPENDITURE",
"products": [ { "id": "1", "currency": "USD", "price": 86.00, "quantity": 50 } ]
}Покупка в примере: 50 USD по курсу 86.00, касса выдаёт 4300 сом. Возвраты делаются операциями INCOME_RETURN и EXPENDITURE_RETURN с fd_number исходного чека.
Что происходит
- Чек пробивается в валютном виде: валюта, количество и итог в сомах.
- В ГНС уходит обычный фискальный документ: продажа или покупка, наименование
USD / Курс 87.5, сумма в сомах. - Сервер ведёт баланс валют смены: продажа его уменьшает, покупка увеличивает. Валютный чек проходит, только если валюты достаточно, иначе отказ
На балансе недостаточно : USD. - Валюта попадает на баланс внесением:
/gate/cashсADDи нужнымcurrency.
Правила
- Курс и сумма строго больше нуля.
- Смешивать валютные и обычные позиции в одном чеке нельзя.
fiscal: falseс обменом валюты запрещён: без чека валюта ушла бы мимо баланса.- Курс задаёте вы. Курсы, настроенные на кассе, на документ не влияют.
- НДС и НСП для обмена обычно нулевые, это значения по умолчанию.
- Отказ по балансу это обычный
ERROR, а не сбой: сначала пополните баланс.