01. DATOS GENERALES

Producto:

TOTVS Backoffice

Línea de producto:

Línea Protheus

Segmento:

Backoffice

Módulo:

SIGAFAT - Facturación

Función:

MATI410EC1 - Pedidos de venta por mensaje único SalesOrder

02. DESCRIPCIÓN

El punto de entrada MT410VAR permite manejar los array del encabezado e ítems que se enviarán a la rutina automática del MATA410 durante la integración por mensaje único SalesOrder, que permite incluir, modificar o eliminar campos.


Importante

No se permite realizar solamente la eliminación de ítem(s) del Pedido de Venta en el proceso de integración del mensaje SALESORDER, para realizar el proceso de eliminación, es necesario eliminar el pedido de venta y crear uno nuevo, informando solamente los ítems deseados.

Existe la posibilidad de utilizar este punto de entrada (MT410VAR) que permite eliminar solamente ítem(s) en la modificación. Para esto, es necesario manejar el array aItens, incluyendo las informaciones de LINPOS y AUTODELETA según el siguiente ejemplo documentado en el ítem 06.

03. SINTAXIS

MT410VAR() ---> aRet

04. PARÁMETROS


Nombre

Tipo

Descripción

Estándar

Obligatorio

Referencia

PARAMIXB

Vector

Vector con los datos del pedido que se está ejecutando en el mensaje único SalesOrder, donde:
[ 01 ] - aCab - Tipo: Array - Relación de campos referente al encabezado del pedido.
[ 02 ] - aItens - Tipo: Array - Relación de campos referente a los ítems del pedido.
[ 03 ] - cJson - Tipo: Character - Devuelve la string con el mensaje JSON.




05. RESPUESTA

Respuesta

Tipo

Descripción

Obligatorio

aRet

Array

Array que contiene los datos de los campos que se procesarán en la rutina Pedido de Ventas.


06. EJEMPLO

Ejemplo:
#Include'Totvs.ch'

User Function MT410VAR
    Local aCab       := aClone(PARAMIXB[1]) //Encabezado
    Local aItens     := aClone(PARAMIXB[2]) //Ítems
	Local aRet       := {} //Respuesta de las personalizaciones del usuario
    Local nPosCli    := Ascan(aCab,{ |X| X[1] == "C5_CLIENTE" })
    Local nPosCPag   := Ascan(aCab,{ |X| X[1] == "C5_CONDPAG" })
    Local nPosNum    := 0
    Local nPosProd   := 0
    Local nPosCC     := 0
    Local nPosDes    := 0
    Local nX         := 0

	oJson := fwEAIobj():new()
    oJson:Activate()
    oJson:loadJson(PARAMIXB[3]) //JSON

    If cEvent == "UPSERT" //Inclusión o Modificación
        If (nPosNum := Ascan(aCab,{ |X| X[1] == "C5_NUM" })) > 0 //Modificación
            If aCab[nPosCli][2] == "FAT001"
                aCab[nPosCPag][2] := "001"
            EndIf

            For nX:= 1 To Len(aItens)
                If (nPosProd := Ascan(aItens[nX],{ |X| X[1] == "C6_PRODUTO" })) > 0
                    If aItens[nX][nPosProd][2] == "FATR00000000000000000000000001"
                        If (nPosCC := Ascan(aItens[nX],{ |X| X[1] == "C6_CC" })) > 0
                            aItens[nX][nPosCC][2] := "FAT000002"
                        Else
                            aAdd( aItens[nX], { "C6_CC", "FAT000002", Nil } )
                        EndIf
                    EndIf
                EndIf
            Next
        Else //Inclusión
            If aCab[nPosCli][2] == "FAT001"
                aCab[nPosCPag][2] := "002"
            EndIf

            For nX:= 1 To Len(aItens)
                If (nPosProd := Ascan(aItens[nX],{ |X| X[1] == "C6_PRODUTO" })) > 0
                    If aItens[nX][nPosProd][2] == "FATR00000000000000000000000001"
                        If (nPosCC := Ascan(aItens[nX],{ |X| X[1] == "C6_CC" })) > 0 //C6_VALDESC
                            aItens[nX][nPosCC][2] := "FAT000001"
                        Else
                            aAdd( aItens[nX], { "C6_CC", "FAT000001", Nil } )
                        EndIf
                    EndIf
                EndIf
            Next
        EndIf
    ElseIf cEvent == "DELETE" //Eliminación
        For nX:= 1 To Len(aItens)
            If (nPosProd := Ascan(aItens[nX],{ |X| X[1] == "C6_PRODUTO" })) > 0
                If aItens[nX][nPosProd][2] == "FATR00000000000000000000000001"
                    If (nPosDes := Ascan(aItens[nX],{ |X| X[1] == "C6_VALDESC" })) > 0
                        aItens[nX][nPosDes][2] := 0
                    EndIf
                EndIf
            EndIf
        Next
    EndIf

    aRet := {aCab,aItens}

Return aRet