Аксиома: Одна алкогольная продукция (АП), обозначаемая АлкоКодом, может состоять из нескольких справок А. Одна Справка А может состоять из нескольких справок Б. Внутри одной справки Б может быть несколько алкогольных марок.
Условие: Марки ставятся на баланс, привязываясь к Справке Б с условием, что марка ещё не стоит на балансе и количество поставленных на баланс марок + количество марок которые ещё нужно поставить на баланс не превышает количество бутылок на остатке ЕГАИС по справке Б.
Рассмотрим случай, когда пользователь пытается поставить на баланс марки одной справки А за 2 и более этапов.
Допустим на остатках ЕГАИС имеется АП со следующими остатками:
Справка А | Справка Б | Остаток бутылок |
---|---|---|
А0001 | Б0001 | 5 |
А0001 | Б0002 | 4 |
Пользователь отсканировал 3 бутылки и ставит их на баланс ЕГАИС. В результате чего 3 марки регистрируются в регистре 3 и привязываются к справке Б0001.
Затем пользователь сканирует ещё 6 бутылок той же самой АП с той-же самой датой розлива, а соответственно и справкой А. Так как бутылки справки Б0001 никуда не продавались то на остатках ЕГАИС их по прежнему 5.
При распределении марок по справкам Б программа назначает справке Б0001 - 5 марок, а справке Б0002 - 1 марку. При таком распределении ЕГАИС сообщит о том, что остатка на справке Б0001 недостаточно.
Если перед распределением бутылок от остатков ЕГАИС вычесть количество уже поставленных на баланс марок, то возникнет ещё 2 проблемы:
- Кроме самостоятельно поставленных бутылок на баланс нужно учитывать ещё и те бутылки, которые приходят от поставщиков уже поштучно. Такие перегруженные проверки отрицательно скажутся на производительности подбора правильной справки Б.
- После первой постановки на баланс продали партионно 2 бутылки, поставленные на баланс. При продаже использовалась справка Б0002. В результате создастся следующая ситуация:
Справка А | Справка Б | Остаток бутылок | Зарегистрированных марок |
---|---|---|---|
А0001 | Б0001 | 5 | 3 (из них 2 продали, но ЕГАИС об этом не знает) |
А0001 | Б0002 | 2 | 0 |
7 Бутылок на остатке ЕГАИС. 1 Бутылку уже ставили на баланс. Осталось поставить на баланс 7 - 1 = 6 бутылок.
Допустим мы доработали алгоритм. Теперь он вытесняет из остатков уже поставленные бутылки. Так будет выглядеть распределение 6 марок по оставшимся бутылкам:
Справка А | Справка Б | Остаток бутылок с учетом ранее поставленных на баланс марок | Распределение марок |
---|---|---|---|
А0001 | Б0001 | 2 | 2 |
А0001 | Б0002 | 2 | 2 |
? | ? | 0 | 2 |
2 бутылки так и не удастся зарегистрировать в ЕГАИС и их придётся скорее всего списать.
Заключение: Для того, чтобы избежать путаницы, регистрацию всех алкогольных марок старого образца для одной справки А необходимо выполнять однократно, а не порциями.