Необходимо иметь возможность сортировать/фильтровать список счетов по количеству дней просрочки с оплатой. Как это можно реализовать?
Спасибо.
Нравится
Создать поле, в которое путем ежедневного расчета будет вноситься срок просрочки (числом) и фильтровать по нему.
Спасибо. А как организовать ежедневный расчет?
Поле должно рассчитываться при создании счета, изменении даты оплаты и ежедневно перерассчитываться. Для ежедневно расчета можно использовать функционал хранимых процедур вызывая их с необходимой периодичностью job-ом.
Здравствуйте Сергей
Данную проблему мы пытались решить в рамках инцидента, тогда я полное решение предоставить не смог. В переписке Вы предлагали следующий код:
Date1 = new Date (Dataset.Values('ContractPayDate')); Date2 = new Date (Dataset.Values('PaymentDate')); Date3 = new Date(); res = 0; if (Date1.getTime() == 0 ) { res = 0 } else { if (Date2.getTime() == 0) { res = Math.floor((Date3.getTime() - Date1.getTime())/(1000*60*60*24))} else { res = Math.floor((Date2.getTime() - Date1.getTime())/(1000*60*60* 24))} };
Предлагаю данную логику реализовать по средствам job на MS SQL Server 2008, как советует Олег
Как это сделать:
1. Логике описанной в блоке javascript соответсвует следующий Update
update tbl_invoice set DelayCalc = ISNULL(DateDiff(minute,ContractPayDate,ISNULL(PaymentDate,{fn NOW()} )),0)
Пояснения:
Если ContractPayDate не заполнено тогда Просрочка DelayCalc = 0
ContractPayDate -> Null ->DateDiff(minute,ContractPayDate,ISNULL(PaymentDate,{fn NOW()} )) = NULL
ISNULL(DateDiff(minute,ContractPayDate,ISNULL(PaymentDate,{fn NOW()} ))) = 0
Если PaymentDate не заполнено, тогда берем текущую дату высчитывем DelayCalc = ContractPayDate - ТекущаяДата в минутах
ISNULL(PaymentDate,{fn NOW()} )
{fn NOW()} - взять текущую дату
ISNULL - функция отработки в случае если 1й аргумент NULL (в данном случае PaymentDate), если не NULL функция возвращает само значение 1го аргумента (в данном случае PaymentDate)
Если заполено ContractPayDate и DelayCalc вычисляем DelayCalc = ContractPayDate - PaymentDate в минутах
Подробнее про DateDiff http://msdn.microsoft.com/en-us/library/ms189794.aspx