Punto-de-Entrada: MA415RVP - Modificar valores o inhibir informes de valores


Descripción:

Este punto de entrada se ejecuta como complemento al cálculo de la rentabilidad del presupuesto. Este puede utilizarse para modificar los valores mostrados o para ocultar informes de los valores.

Programa fuente:

MATA415.PRX


Sintaxis:

MA415RVP( aRentab ) --> aRentab


Parámetros:


Nombre

Tipo

Descripción

Obligatorio

aRentab

Vector

Array con la siguiente estructura:

[1] - Carácter - Código del producto
[2] - Carácter - Valor Total
[3] - Carácter - C.M.V.
[4] - Carácter - Valor presente
[5] - Carácter - Ganancia bruta, donde: (Valor presente - C.M.V.)
[6] - Carácter - Margen de contribución %, donde:  ((Ganancia Bruta / Valor Presente) * 100)

X


Respuesta:

aRentab - Vetor - Array con la misma estructura:

[1] - Carácter - Código del producto
[2] - Carácter - Valor Total
[3] - Carácter - C.M.V.
[4] - Carácter - Valor presente
[5] - Carácter - Ganancia bruta, donde: (Valor presente - C.M.V.)
[6] - Carácter - Margen de contribución %, donde:  ((Ganancia Bruta / Valor Presente) * 100)

Ejemplo:

User Function MA415RVP()

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

//Convierte los valores de rentabilidad de carácter a 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
    //Si el producto es el código "03", se debe dejar en cero la columna del C.M.V.
    If nX <> nTot .And. AllTrim(aRet[nX][1]) == "03" 
        nValCMV += aRet[nX][3]
        aRet[nX][3] := 0    //C.M.V.
    EndIf
    //Actualiza el elemento de totalización
    If nX == nTot .And. Empty(aRet[nX][1])
        aRet[nX][3] := (aRet[nX][3] - nValCMV)
    EndIf
Next nX

//Convierte los valores de rentabilidad de numérico a carácter. (estándar)
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