Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Portuguese

Pagetitle
MA415RVP - Alterar valores ou inibir demonstração de valores
MA415RVP - Alterar valores ou inibir demonstração de valores

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 - Alterar valores ou inibir demonstração de valores ( < aRentab> ( aRentab ) --> aRentab


Parâmetros:


NomeTipoDescriçãoDefaultObrigatórioReferência
aRentabVetor

Array com a seguinte estrutura:

[1]

ExpC1: Codigo

- Caractere - Código do Produto

/


[2]

ExpN2: Valor da Mercadoria liquido / [3]ExpN3: CMV / [4]ExpN4: CMV considerando o valor presente / [5]ExpN5: ExpN4-ExpN3 ( Lucro em valor ) / [6]ExpN6: Exp5/Exp4*100 ( % Lucro

- 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)- Vetor - Array com a seguinte mesma estrutura:
  • [1] ExpC1: Codigo - Caractere - Código do Produto
    [2] ExpN2: Valor da Mercadoria liquido - Caractere - Valor Total
    [3] ExpN3: CMV- Caractere - C.M.V.
    [4] ExpN4: CMV considerando o valor presente- Caractere - Valor Presente
    [5] ExpN5: ExpN4-ExpN3 ( Lucro em valor - Caractere - Lucro Bruto, sendo: (Valor Presente - C.M.V.)
    [6] ExpN6: Exp5/Exp4*100 ( % Lucro )- Caractere - Margem de Contribuição %, sendo:  ((Lucro Bruto / Valor Presente) * 100)


Exemplo:

Bloco de código
languagejs
linenumberstrue
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