Установка срока оплаты с использованием рабочих дней - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь установить срок оплаты, используя рабочие дни, основываясь на полученной дате плюс определенное количество дней, в зависимости от того, каким может быть конкретный тест, но я не уверен, как использовать цикл while внутри if / else if / else , Все попытки привели к тому, что Crystal показал ошибку, что все после начального if не является частью формулы. Основная структура кода происходит от https://kenhamady.com/formulas/form17.shtml.

WhileReadingRecords;
DateVar Array Holidays;
DateVar Target:=Date({DATE_RECEIVED}); 
NumberVar Add; 
NumberVar Added := 0;

if {METADATA_REPOSITORY.FIELD_VARCHAR_16} = "Test_1" then

    NumberVar Add = 28;
    WHILE Added < Add
    Do (target := target +1;
        if dayofweek (target) in 2 to 6 and not (target in holidays)
            then Added:=Added+1
            else Added:=Added);
        Target

else if {ORDTASK.TESTGROUPNAME} = "Test_2" then

    NumberVar Add =14;
    WHILE Added < Add
    Do (target := target +1;
        if dayofweek (target) in 2 to 6 and not (target in holidays)
            then Added:=Added+1
            else Added:=Added);
        Target

//else 

    NumberVar Add = DateAdd("d", Tonumber({TESTS.DURATION}), {CENTRALRECEIVING.DATE_RECEIVED});
    WHILE Added < Add
    Do (target := target +1;
        if dayofweek (target) in 2 to 6 and not (target in holidays)
            then Added:=Added+1
            else Added:=Added);
        Target

1 Ответ

0 голосов
/ 31 мая 2019

Попробуйте это:

WhileReadingRecords;
DateVar Array Holidays;
DateVar Target:=Date({DATE_RECEIVED}); 
NumberVar Add; 
NumberVar Added := 0;

if {METADATA_REPOSITORY.FIELD_VARCHAR_16} = "Test_1" then

    NumberVar Add := 28;
    WHILE Added < Add
    Do (target := target +1;
        if dayofweek (target) in 2 to 6 and not (target in holidays)
            then Added:=Added+1
            else Added:=Added);
        Target;

//else 
if {ORDTASK.TESTGROUPNAME} = "Test_2" then

    NumberVar Add :=14;
    WHILE Added < Add
    Do (target := target +1;
        if dayofweek (target) in 2 to 6 and not (target in holidays)
            then Added:=Added+1
            else Added:=Added);
        Target;

//else 

    NumberVar Add := DateAdd("d", Tonumber({TESTS.DURATION}), {CENTRALRECEIVING.DATE_RECEIVED});
    WHILE Added < Add
    Do (target := target +1;
        if dayofweek (target) in 2 to 6 and not (target in holidays)
            then Added:=Added+1
            else Added:=Added);
        Target
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...