Как построить формулу для выделения зачисленных сумм для старения дебиторской задолженности в Netsuite? - PullRequest
0 голосов
/ 13 февраля 2020

Я создаю формулу в поиске сохранения устаревшего A / R в NetSuite. Я успешно запросил запрос в течение 30 дней, 60 дней, 90 дней и> 90 дней по следующей формуле:

Case When substr({amount},1,1) = '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) (condition based on days) then ({amountremaining}*-1) When substr({amount},1,1) <> '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) (condition based on days) then {amountremaining} else 0 end 

Наша команда A / R запросила, чтобы они не хотели, чтобы зачисленные суммы были> 90 дней, включенных в итог, поэтому я обернул формулу> 90 дней другой инструкцией case, чтобы исключить значения меньше 0. Позже я оптимизировал формулу для этого:

Case When substr({amount},1,1) = '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) between 61 and 90 then ({amountremaining}*-1) When substr({amount},1,1) <> '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) between 61 and 90 then {amountremaining} else 0 end

A / R запросил дополнительное изменение, поскольку они все еще хотят изолировать все зачисленные суммы в качестве другого столбца в этом сохраненном поиске Я попытался просто переключить вывод по приведенной выше формуле, однако на счетах, у которых все еще есть задолженность в размере net, отображается запрос:

╔════════════╦════════════╦══════════════════════╦═══════════════════╗
║    Name    ║ > 90 Days  ║ Credits in > 90 Days ║ Desireable Output ║
╠════════════╬════════════╬══════════════════════╬═══════════════════╣
║ Customer A ║ 0.00       ║ 0.00                 ║ Yes               ║
║ Customer B ║ 0.00       ║ 0.00                 ║ Yes               ║
║ Customer C ║ 4.95       ║ (4.95)               ║ No                ║
║ Customer D ║ 1,733.00   ║ 0.00                 ║ Yes               ║
║ Customer E ║ 0.00       ║ 0.00                 ║ Yes               ║
║ Customer F ║ 0.00       ║ 0.00                 ║ Yes               ║
║ Customer G ║ 0.00       ║ 0.00                 ║ Yes               ║
║ Customer H ║ 10,547.96  ║ 0.00                 ║ Yes               ║
║ Customer I ║ 1.51       ║ (1.51)               ║ No                ║
║ Customer J ║ 0.00       ║ (21.92)              ║ Yes               ║
║ Customer K ║ 0.00       ║ 0.00                 ║ Yes               ║
║ Customer L ║ 0.00       ║ 0.00                 ║ Yes               ║
║ Customer M ║ 0.00       ║ 0.00                 ║ Yes               ║
╚════════════╩════════════╩══════════════════════╩═══════════════════╝

Мы не хотим, чтобы эти дебетовые счета были включены для этого столбца c. Я пытался изменить формулу несколько раз, но мне кажется, что я что-то упустил, и я не уверен, как двигаться дальше.

РЕДАКТИРОВАТЬ: Я хотел добавить, я просмотрел отдельные записи для клиенты, которые показывают нежелательный результат. В нашей системе есть много случаев, некоторые из которых относятся к непримененным платежам, кредитным журналам, запискам и т. Д. c. Есть много нишевых случаев, которые, кажется, поражают. Я не был уверен, был ли это хороший подход, чтобы попытаться исключить каждый из этих случаев, так как я не уверен, сколько их и сколько дел будут исключены из текущего набора данных, который я просматриваю. Я просто хочу включить суммы, перечисленные в колонке> 90 дней, и ничего больше.

1 Ответ

0 голосов
/ 14 февраля 2020

Я выяснил причину, по которой зачисленные суммы не были изолированы так, как я хотел, из-за характера вышеупомянутой формулы:

Case When substr({amount},1,1) = '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) (condition based on days) then ({amountremaining}*-1) When substr({amount},1,1) <> '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) (condition based on days) then {amountremaining} else 0 end

Формула отфильтровывает отрицательные и положительные суммы, а также суммы между или после определенного количества дней. Они не учитывают значения, которые могут накапливаться в балансе 0, которые находятся за пределами ожидаемых значений.

Чтобы исправить это, я применил дополнительные сводные критерии к сохраненному поиску, удалив записи из результатов, которые имели Общий открытый баланс 0 с использованием этой формулы:

(Case When substr({amount},1,1) = '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) < 1 then ({amountremaining}*-1) When substr({amount},1,1) <> '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) < 1 then {amountremaining} else 0 end)+ (Case When substr({amount},1,1) = '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) between 1 and 30 then ({amountremaining}*-1) When substr({amount},1,1) <> '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) between 1 and 30 then {amountremaining} else 0 end) + (Case When substr({amount},1,1) = '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) between 31 and 60 then ({amountremaining}*-1) When substr({amount},1,1) <> '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) between 31 and 60 then {amountremaining} else 0 end) + (Case When substr({amount},1,1) = '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) between 61 and 90 then ({amountremaining}*-1) When substr({amount},1,1) <> '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) between 61 and 90 then {amountremaining} else 0 end) + (Case When substr({amount},1,1) = '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) > 90 then ({amountremaining}*-1) When substr({amount},1,1) <> '-' and (NVL({daysoverdue}, Round({today}-{trandate}, 0))) > 90 then {amountremaining} else 0 end)

При этом были удалены все учетные записи, которые имели полный открытый баланс, равный нулю или нулю, которые не должны были быть включены в этот поиск с самого начала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...