DSO - Dias de Vendas Pendentes

Calcula o número de dias de vendas no período atual em que os devedores usam o método de exaustão.

Valor de Retorno

Essa rotina calcula um valor único representando a quantidade de dias de vendas contidos dentro do número de devedores comerciais do período atual. A sub-rotina do DSO incluída faz as seguintes pressuposições:

  • Devedores e Vendas são ambos números positivos.

  • Os parâmetros fornecidos são pontos de vista totalmente definidos (por exemplo, Conta/C1/C2/C3/C4/ICP) porque a rotina usa a função HS.GETCELL.

  • A rotina calcula o máximo de dias anteriores possíveis. No entanto, isso será interrompido caso o valor das vendas periódicas para qualquer período seja um valor negativo ou zero.

Sintaxe

CALL DSO (strDSO,strDEBTOR,strSALES,strDIP)

Tabela 12-9 Sintaxe de Função DSO

Parâmetro Valores Válidos

strDSO

A conta totalmente definida com as dimensões Personalizada e Intercompanhia. Essa conta é o destino para o cálculo.

strDEBTOR

A conta totalmente definida com as dimensões Personalizada e Intercompanhia. Essa conta é a origem dos devedores comercial do período atual.

strSALES

A conta totalmente definida com as dimensões Personalizada e Intercompanhia. Essa conta é a origem das vendas.

Exclui especificamente referências para a frequência.

strDIP

A conta totalmente definida com as dimensões Personalizada e Intercompanhia. Essa conta é a origem do número de vendas no período.

Presume-se que seja encontrado na entidade [Nenhum].

Descrição Detalhada

A rotina leva os valores na conta Devedores (parâmetro 2) e na conta Vendas (parâmetro 3) para o período atual e os compara. Se qualquer um deles for zero ou negativo, o cálculo é interrompido. Para cada período sucessivo em que o valor de devedores excede o de vendas cumulativas (trabalhando ao contrário do período atual), a rotina adicionará o número de dia para o período conforme o especificado nos dias na conta Período (parâmetro 4) para uma execução total.

Quando todos os valores Devedores tiverem sido esgotados deste modo, os dias do período final serão calculados como uma proporção dos devedores não expirados em relação ao valor de vendas periódico.

Finalmente, a rotina posta o total em execução para a conta de destino (parâmetro 1).

Exemplo

O exemplo calcula o total de dias pendentes para os meses exibidos.

Tabela 12-10 Exemplo de Função DSO

Mês Devedores Vendas do Período Dias do Mês Fórmula para DSO DSO Total

Setembro

12,000

2,500

30

100%

30

Agosto

N/D

1,750

31

100%

31

Julho

N/D

2,250

31

100%

31

Junho

N/D

2,500

30

100%

30

Maio

N/D

2,000

31

100%

31

Abril

N/D

2,250

30

2000/2250

26.7

Total

N/D

N/D

N/D

N/D

179.7

Script de Amostra

' Use within the calculation section:
' 1. Standard use
CALL DSO("A#DSO","A#TradeDebtors.C1#AllAges.C2#[None].I#[ICP Top","A#TotalSales.C1#[None].C2#AllProducts.I#[ICP Top]", "A#DIP")
' 2. Use with a common custom dimension
set vPRODUCT = ARRAY("C2#PRODUCT1","C2#PRODUCT2", ….. ,"C2#PRODUCTn")
FOR EACH iITEM IN vPRODUCT
CALL DSO("" A#DSO.""&iITEM,"" A#TradeDebtors.C1#AllAges.I#[ICP Top].""&iITEM,"" A#TotalSales.C1#[None].I#[ICP Top]."" &iITEM,"" A#DIP"")
NEXT
' Actual script of Sub-routine
SUB DSO(strDSO,strDEBTOR,strSALES,strDIP)
DIM vTEST
DIM vDSO
DIM vCOUNT
DIM vXS_1
DIM vXS
HS.CLEAR(strDSO)
vTEST = HS.GETCELL(strDEBTOR) * HS.GETCELL(strSALES&"".W#Periodic"") * HS.GETCELL(strDIP&"".E#[None]"")
' checks if any of the parameters are zero (uses principle of X * 0 = 0)
IF vTEST = 0 THEN
EXIT SUB
ELSE
vDSO = 0
vCOUNT = 0
vXS_1 = HS.GETCELL(strDEBTOR)
vXS = vXS_1 - HS.GETCELL(strSALES&"".W#Periodic"")
' ensures that periodic sales are not negative or zero
WHILE vXS > 0 AND vXS_1 > vXS
vDSO = vDSO + HS.GETCELL(strDIP&"".E#[None].P#CUR-"" &vCOUNT)
vCOUNT = vCOUNT + 1
vXS_1 = vXS
vXS = vXS - HS.GETCELL(strSALES&"".W#Periodic.P#CUR-"" &vCOUNT)
WEND
IF vXS = vXS_1 THEN
vCOUNT = vCOUNT - 1
END IF
vDSO = vDSO + (vXS_1 / HS.GETCELL(strSALES&"".W#Periodic.P#CUR-"" &vCOUNT)*HS.GETCELL(strDIP&"".E#[None].P#CUR-"" &vCOUNT))
IF vDSO < 0 THEN
vDSO = 0
END IF
END IF
HS.EXP strDSO &"="& vDSO
END SUB