Árvore de páginas

Ponto-de-Entrada: MA415RVP - Alterar valores ou inibir demonstração de valores


Descrição:

Este ponto de entrada é executado em complemento ao cálculo da rentabilidade do orçamento. Ele pode ser utilizado para alteração dos valores apresentados ou para inibição da demonstração dos valores.

Programa Fonte:
MATA415.PRX


Sintaxe:

MA415RVP( aRentab ) --> aRentab


Parâmetros:


NomeTipoDescriçãoObrigatório
aRentabVetor

Array com a seguinte estrutura:

[1] - Caractere - Código do Produto
[2] - Caractere - Valor Total
[3] - Caractere - C.M.V.
[4] - Caractere - Valor Presente
[5] - Caractere - Lucro Bruto, sendo: (Valor Presente - C.M.V.)
[6] - Caractere - Margem de Contribuição %, sendo:  ((Lucro Bruto / Valor Presente) * 100)

X


Retorno:
aRentab - Vetor - Array com a mesma estrutura:
  • [1] - Caractere - Código do Produto
    [2] - Caractere - Valor Total
    [3] - Caractere - C.M.V.
    [4] - Caractere - Valor Presente
    [5] - Caractere - Lucro Bruto, sendo: (Valor Presente - C.M.V.)
    [6] - Caractere - Margem de Contribuição %, sendo:  ((Lucro Bruto / Valor Presente) * 100)


Exemplo:

User Function MA415RVP()

Local aRet := PARAMIXB
Local nTot := Len(aRet)
Local nValCMV := 0
Local nX := 0
Local nY := 0

//Converte os valores da Rentabilidade de caracter para numérico
For nX := 1 To nTot
    For nY := 2 To Len(aRet[nX])
        If AT(".",aRet[nX][nY]) > 0
            aRet[nX][nY] := StrTran(aRet[nX][nY],".","")
        EndIf
        If AT(",",aRet[nX][nY]) > 0
            aRet[nX][nY] := StrTran(aRet[nX][nY],",",".")
        EndIf
        aRet[nX][nY] := Val(aRet[nX][nY])
    Next nY 
Next nX

For nX := 1 To nTot
    //Se o produto for o código "03", vou zerar a coluna do C.M.V.
    If nX <> nTot .And. AllTrim(aRet[nX][1]) == "03" 
        nValCMV += aRet[nX][3]
        aRet[nX][3] := 0    //C.M.V.
    EndIf
    //Atualiza o elemento de totalização
    If nX == nTot .And. Empty(aRet[nX][1])
        aRet[nX][3] := (aRet[nX][3] - nValCMV)
    EndIf
Next nX

//Converte os valores da Rentabilidade de numérico para caracter (padrão)
For nX := 1 To nTot
    For nY := 2 To Len(aRet[nX])
        aRet[nX][nY] := TransForm(aRet[nX][nY],"@e 999,999,999.999999")
    Next nY 
Next nX

Return aRet