AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.05.2009, 09:15   #1  
lobster is offline
lobster
Участник
Аватар для lobster
 
115 / 10 (1) +
Регистрация: 25.04.2008
Сделал report, который блокирует клиентов по параметрам:
- баланс > кредитного лимита;
- кредитный лимит>0 и код формулы оплаты ='ПРЕДОПЛАТА'

IF Customer."Balance (LCY)">Customer."Credit Limit (LCY)" THEN
BEGIN
Customer.Blocked:=3;
Customer.MODIFY;
END;

IF Customer."Credit Limit (LCY)" > 0 THEN
IF Customer."Payment Terms Code" = 'ПРЕДОПЛАТА' THEN
BEGIN
Customer.Blocked:=3;
Customer.MODIFY;
END;
Надо сделать еще одну проверку, например, у клиента в карточке баланс >0 и код формулы оплаты ='10 дней', дата последней отгрузки у этого клиента 010409, а сегодня уже 150409
тогда клиент должен блокироваться.
Подскажите пожалуйста, как сделать эту проверку.
Старый 27.05.2009, 10:13   #2  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
Тут есть нюанс. Вы уверены, что сравниваете дату оплаты с датой именно отгрузки, а не выставления счета клиенту? Если все же с датой выставления счета, то можно воспользоваться вычисляемыми полями в карточке Клиента "Задолженность" и "Задолженность (РУБ)". Если же вас интересует именно дата отгрузки, то все не так просто.
Старый 27.05.2009, 11:11   #3  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от lobster Посмотреть сообщение
Сделал report, который блокирует клиентов по параметрам:
- баланс > кредитного лимита;
- кредитный лимит>0 и код формулы оплаты ='ПРЕДОПЛАТА'

IF Customer."Balance (LCY)">Customer."Credit Limit (LCY)" THEN
BEGIN
Customer.Blocked:=3;
Customer.MODIFY;
END;

IF Customer."Credit Limit (LCY)" > 0 THEN
IF Customer."Payment Terms Code" = 'ПРЕДОПЛАТА' THEN
BEGIN
Customer.Blocked:=3;
Customer.MODIFY;
END;
Надо сделать еще одну проверку, например, у клиента в карточке баланс >0 и код формулы оплаты ='10 дней', дата последней отгрузки у этого клиента 010409, а сегодня уже 150409
тогда клиент должен блокироваться.
Подскажите пожалуйста, как сделать эту проверку.
Я бы сделал функцию расчёта просспрочки по каждому виду оплат или даже по каждой операции в зависимости от требований Заказчика (благо у нас есть все данные в по полю "Due Date" (рус - "Дата Оплаты") и "Remaining Amount" (рус - "Сумма Остатка")). А потом бы проверял всё, что нужно.
Кстати, настройку в виде галочки можно сделать одним полем для каждого вида оплат
Старый 27.05.2009, 11:28   #4  
lobster is offline
lobster
Участник
Аватар для lobster
 
115 / 10 (1) +
Регистрация: 25.04.2008
Цитата:
Сообщение от Milk Посмотреть сообщение
Тут есть нюанс. Вы уверены, что сравниваете дату оплаты с датой именно отгрузки, а не выставления счета клиенту? Если все же с датой выставления счета, то можно воспользоваться вычисляемыми полями в карточке Клиента "Задолженность" и "Задолженность (РУБ)". Если же вас интересует именно дата отгрузки, то все не так просто.
Не совсем понял.
Например сейчас есть клиент, баланс 50000, код формулы оплаты 21д, счет выстаили вчера, а в поле "Задолженность" и "Задолженность (РУБ)". = 50000.
Как я понимаю это общая задолжность клиента, а мне нужна просроченная задолжность.
Старый 27.05.2009, 11:35   #5  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
Чтобы пользоваться этими полями, надо накладывать FlowFilter на поле "Дата Фильтр". Введите туда фильтр вида '.. Дата', и увидите сумму операций, просроченных к оплате на эту дату.
Старый 27.05.2009, 12:54   #6  
lobster is offline
lobster
Участник
Аватар для lobster
 
115 / 10 (1) +
Регистрация: 25.04.2008
Цитата:
Сообщение от Milk Посмотреть сообщение
Чтобы пользоваться этими полями, надо накладывать FlowFilter на поле "Дата Фильтр". Введите туда фильтр вида '.. Дата', и увидите сумму операций, просроченных к оплате на эту дату.
А как наложить такой фильтр на customer, когда отчет начинает работать?

так не получается

Customer - OnPreDataItem()
Customer.SETFILTER(Customer."Date Filter",[TODAY]); // только вместо TODAY , надо '.. Дата'.

Подскажите пожалуйста?
Старый 27.05.2009, 13:22   #7  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Milk Посмотреть сообщение
Чтобы пользоваться этими полями, надо накладывать FlowFilter на поле "Дата Фильтр". Введите туда фильтр вида '.. Дата', и увидите сумму операций, просроченных к оплате на эту дату.
Не просто дату, а Due Date по операционно (если конечно нужно получить точную сумму).

Поэкспериментируйте на 1 Клиенте с разными отсрочками и поссмотрите какие поля Дат меняются...
Старый 27.05.2009, 13:28   #8  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
Цитата:
Сообщение от lobster Посмотреть сообщение
А как наложить такой фильтр на customer, когда отчет начинает работать?

так не получается

Customer - OnPreDataItem()
Customer.SETFILTER(Customer."Date Filter",[TODAY]); // только вместо TODAY , надо '.. Дата'.

Подскажите пожалуйста?
Например,
Customer.SETRANGE("Date Filter", 0D, TODAY);
или
Customer.SETFILTER("Date Filter", '..%1', TODAY);
Старый 27.05.2009, 13:43   #9  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Talking
Цитата:
Сообщение от Milk Посмотреть сообщение
Например,
Customer.SETRANGE("Date Filter", 0D, TODAY);
или
Customer.SETFILTER("Date Filter", '..%1', TODAY);
Нелья писать просто 0D, TODAY туда могут попасть отсрочки по платежам, если работы по 1 Customer, но по разным Agreement или условиям платежей (например по какому-то товару особые условия)

.. и нужно какминимум добавить Posting Date=FIELD(Date Filter) в расчёт Balance тогда уже... { Customer No.=FIELD(No.),Initial Entry Global Dim. 1=FIELD(Global Dimension 1 Filter),Initial Entry Global Dim. 2=FIELD(Global Dimension 2 Filter),Currency Code=FIELD(Currency Filter),Posting Date=FIELD(Date Filter) }

P.S. Ну да ладно, Вам виднее..
Старый 27.05.2009, 13:51   #10  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
2 RedFox: Совершенно не претендую на истину в последней инстанции. Про отстрочки по платежам, например, я просто не понял, что Вы имеете в виду. А поле Balance лучше не трогать. Чтобы видеть баланс на дату, лучше воспользоваться полями "Net Change" и "Net Change (LCY)", в них есть фильтр по дате.
Старый 27.05.2009, 13:59   #11  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Milk Посмотреть сообщение
2 RedFox: Совершенно не претендую на истину в последней инстанции. Про отстрочки по платежам, например, я просто не понял, что Вы имеете в виду. А поле Balance лучше не трогать. Чтобы видеть баланс на дату, лучше воспользоваться полями "Net Change" и "Net Change (LCY)", в них есть фильтр по дате.
Ну по поводу полей - там при правке фильтра нет никаких проблем, кроме как перестроения SIFT-таблицы или VIEW (существующий ключик в Customer No.,Initial Entry Due Date,Posting Date,Initial Entry Global Dim. 1,Initial Entry Global Dim. 2,Currency Code,Agreement No. прекрасно это покрывает ).
Просто данное фильтр просто добавит возможность ещё фильтровать по дате.

P.S. Я тоже не претендую на истину. Она всегда где-то рядом. Но я никак не могу её найти
Старый 27.05.2009, 14:09   #12  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
RedFox, если Вы добавите в поле Balance фильтр по дате, Вы получите в точности поле "Net Change"
А небольшие проблемы, справедливости ради, все же возникнуть могут - вдруг, например, в каком-нибудь отчете используется поле Balance, и при этом в нем для каких- то целей накладывается фильтр по дате. Ну и для обновлений удобнее, когда меньше изменений.
Старый 27.05.2009, 16:57   #13  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Milk Посмотреть сообщение
RedFox, если Вы добавите в поле Balance фильтр по дате, Вы получите в точности поле "Net Change"
По поводу поля спасибо, протупил малеха - поверил названию....
А для задачи можно использовать так же Balance Due.
Цитата:
А небольшие проблемы, справедливости ради, все же возникнуть могут - вдруг, например, в каком-нибудь отчете используется поле Balance, и при этом в нем для каких- то целей накладывается фильтр по дате. Ну и для обновлений удобнее, когда меньше изменений.
Ну и в чём тут проблема? На дату не просто так же ставиться.. Или я не прав?
Старый 27.05.2009, 17:09   #14  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
Цитата:
Сообщение от RedFox Посмотреть сообщение
Ну и в чём тут проблема? На дату не просто так же ставиться.. Или я не прав?
Ну мало ли, в отчете ведь и другие вычисляемые поля из таблицы Клиент могут быть. Но вообще-то это все уже так, домыслы
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:27.