2020-04-01 12:50:20
Краткое описание :
Расчет остаточного срока при реализацииОписание :
Управление сбытом - Документы - Накладные на отпуск.Что измененно :
Изменена функция вычисления разности между месяцами для расчета
задолженности. Учитывается количество дней в месяце, т.к. могут быть 28 дней,
31, 29. Была изменена формула вычисления процента износа.
Как измененно :
Изменён расчет процента изношенности предмета на указанную
дату. Износ вычисляется теперь так: ( планируемый срок носки (месяцев) -
остаточный срок (месяцев) ) / планируемый срок носки (месяцев). Раньше было
так: (прошло месяцев носки) /планируемый срок носки (месяцев). Логически одно и
то же, но при подсчёте целых месяцев между двумя датами, могли быть отклонения.
В "расчёте при увольнении" считался диапозон от окончания срока носки до даты
документа. А в "Реализации" от начала носки до даты документа. Формула подсчёта
была изменена по причине изменения функции SubMonths( Date1 : Date; Date2 :
Date) : Integer. Эта функция округляет месяцы до целых. Раньше функция не
учитывала кол-во дней в месяце, который был перед месяцем, куда попадала дата
конца диапазона. Она вычисляла диапазон, как если бы все месяцы в году
содержали ровно 30 дней. Принцип округления у неё был раньше такой: если между
двумя датами интервал, например, 1 мес и 15 дней. то округляет до 1 мес., иначе
2 мес.. В решении этой задачи интервал (функция SubMonth) вычисляется так: -
определяем какая дата меньше и какая больше; - если день (число) месяца большей
даты >= дня месяца меньшей даты - то вычитаем (число месяца бОльшей даты -
число месяца меньшей даты) - если разница >= 15, то округляем в бОльшую сторону
(пример 15.03.2020 - 02.01.2020 = 1 мес. и 13 дней = 1 мес.) Иначе (если день
(число) месяца большей даты < дня месяца меньшей даты) { - определяем последний
день предыдущего месяца, относительно бОльшей даты (например дано 03.02.2020,
пред. месяц - январь, у января 31 день) - вычисляем кол-во дней между двумя
числами с учётом кол-ва дней в месяце (разница дней = 31 - число меньшей даты +
число большей даты) - если разница <= 15, то округляем в меньшую сторону }