При оформлении заказов клиента с опцией Цена не включает НДС бывает сложно скорректировать конечную сумму заказа до нужной вам. Например, сделать её кратной тысячам рублей для облегчения расчетов или для маленькой скидки покупателю.
Типовой функционал для этой потребности есть, и когда цена включает НДС он более менее работает, а вот когда не включает, то корректировке подлежит сумма без НДС и конечную сумму поймать достаточно проблемно. Менеджеры заказчика очень страдали от этого.
Решение видится в добавлении в типовом окне назначения ручной скидки дополнительного поля суммы с НДС. После ввода значения в это поле ручная скидка рассчитывается как:
СуммаРучнойСкидкиНаценки = СуммаРучнойСкидкиНаценки+СуммаДокументаСУчетомСкидки - СуммаДокументаСНДС/(100+СтавкаНДСЧисло)*100;
Искомая сумма иногда отличается от желаемой на копейку в ту или иную сторону.
Это связано с тем что конечная сумма НДС - не точная, а расчетная. От суммы документа отнимается ваша скидка, пересчитывается НДС и конечный результат после всех пересчетов и округлений может отличаться от желаемого как раз на эту копейку. В этом случае можно вызвать окно назначения ручной скидки ещё раз, но уже для одной позиции и в нем опять произвести корректировку суммы с ндс или ручной скидки на эту копейку. Как правило, этого уже достаточно для получения нужной суммы.
При реализации этой задачи выяснилось, что она достаточна проста, а её решение красиво. По сути, мы вычисляем только сумму ручной скидки, а все последующие пересчеты делает типовой механизм.
Удалось сделать всё в расширении, изменив типовую общую форму НазначениеРучнойСкидкиНаценки и добавив в процедуру расчетов параметров для этой формы в общем модуле СкидкиНаценкиСервер сумму с НДС и значение ставки с НДС.
Если в заказе установлена опция цена включает НДС, данный функционал отображаться не будет, потому что в этом случае нормально работает типовой.
Тестировалась на ЕРП и КА, ставках НДС 18% и 20%
и КА 2.4.11.100.