Поясню. Ручная скидка не затрагивает цену, а уменьшает сумму. Если в счете на оплату выводить цену с учетом скидки (не желая показывать саму скидку), то цена рассчитывается от суммы и округляется, после чего в строке счета начинают не сходиться копейки.
Если же сразу изменить цену и от неё считать сумму, то проблемы с копейками нет. Но... что-то при этом теряется? Может анализ по скидкам какой не заработает?
(2) Если я правильно понимаю, то строка документа "помнит" все примененные к ней скидки. Так вот отчего бы, запоминая их, применять их не к сумме, а к цене? Базовая цена известна по типу цен...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший