Коллеги, поясните зачем 1с считает скидку от суммы, а не от цены?
Есть такая процедура:
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти
Что она делает.
Либо
СуммаСкидки = Сумма * СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок / 100;
Либо
СуммаСкидки = СуммаСкидки + (Сумма * СтрокаТабличнойЧасти.ПроцентСкидкиНаценки / 100);
зависит от условий.
СуммаСкидки зачастую получается с тремя знаками после запятой.
Далее в процедуре СуммаСоСкидкой = Сумма - СуммаСкидки. А ценаСоСкидкой банально = СуммаСоСкидкой / Количество.
На примере.
Позиция имеет цену 72.56 и процент автоматических скидок 5. даем 6 штук.
Скидка получается равной = 21,768
Ну и Сумма в свою очередь равна 435.36 - 21.768 = 413.592, то бишь 413.59
ЦенаСоСкидкой = 413,59 / 6 округляя 68.93.
Если пересчитать Сумму = 68.93 * 6 = 413,58
Кто-нибудь знает почему скидка берется от суммы, а не от цены?
Просто, в разных документах могут быть товары с разным значением скидки.
Далее, когда мы сворачиваем, у нас не должны поменяться итоговые суммы, так как именно их заплатили за товары.
А процент скидки как и цена со скидкой рассчитываются просто для справки тому, кто смотрит в документ.
(1) ну в силу специфики работы мы отдаем заказ покупателя в бухгалтерию, они его вручную заносят с ЦенамиСоСкидкой и расчитывается общая сумма несколько иная, на 1 копейку например больше. Клиент получает счет на 1 копейку больше(или меньше) и оплачивает. А потом банк разносится в базу и получается несхождение суммы по реализации и по счету на копейки.
(2) Тогда нужно или алгоритм расчёта скидки переписывать или в бухгалтерии исходить также из суммы.
Или ввести правило округления скидок так, чтобы алгоритмы в разных местах совпадали.
(2)+ Пусть в бухии заносят не цену, а сумму. Все равно ведь, что заносить.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший