кто неправ, я или СБ
// распределение скидки по отделам: знак + или -?
Если НеучтеннаяСумма <> 0 Тогда НераспределеннаяСумма = НеучтеннаяСумма; СуммаПоВсемОтделам = ТаблицаОтделов.Итог("Сумма"); ТаблицаОтделов.ВыбратьСтроки(); Пока ТаблицаОтделов.ПолучитьСтроку() = 1 Цикл Доля = ТаблицаОтделов.Сумма/СуммаПоВсемОтделам; СуммаНаОтдел = Окр(НеучтеннаяСумма*Доля,2,1); ТаблицаОтделов.Сумма = ТаблицаОтделов.Сумма-СуммаНаОтдел; НераспределеннаяСумма = НераспределеннаяСумма-СуммаНаОтдел; КонецЦикла; Если НераспределеннаяСумма <> 0 Тогда ТаблицаОтделов.ПолучитьСтрокуПоНомеру(ТаблицаОтдел ов.КоличествоСтрок()); // ТаблицаОтделов.Сумма = ТаблицаОтделов.Сумма+НераспределеннаяСумма; оригинал СБ ТаблицаОтделов.Сумма = ТаблицаОтделов.Сумма-НераспределеннаяСумма; //мой вариант КонецЕсли; КонецЕсли; // ФРОНТ - релиз 206 |
По-моему наш вариант правильный. Ведь сумма распределения всегда вычетается. И, если мы вычтем больше, чем надо, то остаток получится отрицательный. При повторном вычитании минус на минус даст плюс. Если же в процессе распределения не вся сумма будет распределена, то она и вычтется.
:cool: |
Простой пример. Клиент поел-попил на 1000 руб. Причем по отделам сумма распеделилась так:
1 - 333.33 2 - 333.33 3 - 333.34 У него есть право на 10% скидку, т.е. заплатить он должен 900. Ему ведь не важно, как распределяется его сумма по отделам, так? По Вашему алгоритму получаем Доли и СуммыНаОтдел (НеучтеннаяСумма = 100): 1 Доля 0.33333 СуммаНаОтдел 33,33 2 Доля 0.33333 СуммаНаОтдел 33.33 3 Доля 0.33334 СуммаНаОтдел 33.33 Таким образом получаем ТаблицаОтделов.Сумма = 900.01 и НераспределеннаяСумма = 0.01 ТаблицаОтделов.Сумма+НераспределеннаяСумма даст 900.02 Конечно, клиент не будет поднимать шум из-за 2х копеек. Шум поднимает бухгалтерия, у которой Z-отчет по ФР не сходится с Фронтовым отчетом по выручке как раз на эти копейки. |
Да Алексей, действительно, Вы правы!
Такая ошибка есть, причем тянется она еще из 1-го Фронта! Вероятно, Вы первый кто встретился с такой редкой ситуацией, или кто обратил на нее внимание. Большое спасибо! От наших тестеров она ускользала на протяжении вот уже 3-х лет :) Эх, если бы Вы написали на день раньше - исправили бы в 208 релизе, а теперь придется ждать 209, ну или самим поменять "+" на "-" :) |
Часовой пояс GMT +3, время: 22:51. |
vBulletin v3.5.4, Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co
Трактиръ - автоматизация ресторанов