Алгоритм работы:
- Предобрабатывается документ в соответсвии с режимами списания;
- Одним запросом к базе данных строится карта всех остатков для документа;
- Карта остатков предобрабатывается в соответсвии с заданными режимами списания;
- Производится непосредственно списание из карты остатков.
Функционал.
- списание больше остатка - документ при этом остаётся проведённым, а нехватки помечаются аналитикой.
- списание всего документа одним запросом к базе данных - скорость + возможность наличия нескольких строк одного объекта с разной аналитикой.
- сохранение одной указанной аналитики после списания, например при списании топлива на автомобили и продуктов на готовые блюда.
- по возможности сохраняются партии предыдущего списания или явно заданные.
- Явно заданные при РУЧНОМ СПИСАНИИ партии сохряняются всегда, даже если нет остатка.
- списание торговой наценки.
- автоматический выбор счёта списания из заданного массива счетов для поиска. Если нет остатка по указанному в проводке счёту - ищет на балансовом для объекта, потом в массиве.
- широкий набор достаточно точных диагностических сообщений о результатах списания.
- режим накопления сообщений об ошибках для группового перепроведения документов.
- округляет суммы списания. Дробные суммы списывает только если списывается весь остаток партии, сумма которой по независящим от нас причинам висит с дробными копейками.
- FQty списывается пропорционально остатку в партии до конца, если задали явно или нет остатка - сколько задали. Округление до целого.
- Режим "Проверка списания". Поскольку сохраняются заданные партии, можно вызывать списание по команде из формы "проверка списания" - если в документе ранее всё было верно списано, после повторного списания операция не изменится и кнопка "Сохранить" не будет активна.
- При массовом пересписании вовсе не обязательно блокировать запись в сислог - если в документе всё нормально, он не будет пересохраняться.
- При отрицательном задании списывает отрицательные количества по особому алгоритму.
- Относительно правильная работа при наличии отрицательных остатков в некоторых партиях (из-за ошибок в предыдущих периодах).
- Прошёл проверку - если переместить весь остаток (в разрезе партий вместе с ошибками) по склад-счёту на другой склад, а после переместиь весь обратно со списанием этой процедурой - на этом складе начнётся правильный учёт.
|