ÍNDICE

  1. Datos generales
  2. Descripción
  3. Sintaxis
  4. Parámetros
  5. Respuesta
  6. Ejemplo

01. DATOS GENERALES

Producto:

Backoffice de TOTVS

Línea de producto:

Línea Protheus

Segmento:

Backoffice

Módulo:

SIGAFAT - Facturación

Función:

MT410EAI - Mensaje Único Pedido de Venta (Order

Alcances:

Microsiga Protheus 12

Versiones:

Microsiga Protheus 12

Países compatibles:

Todos

Sistemas operativos:

Todos

Compatible con las bases de datos:

Todos 

Nivel de acceso:

Nivel 1 (Acceso Clientes)

Idiomas:

Todos


02. DESCRIPCIÓN

El punto de entrada MT410EAI permite manejar los array del encabezado e ítems que se enviarán a la rutina automática del MATA410 durante la integración (MATI410 / MATI410O ), esto permite incluir, modificar o eliminar campos.

El tratamiento de edición de matrices se puede realizar en base a JSON o XML enviado al mensaje único. El JSON o XML enviado en la solicitud se reenvía al punto de entrada a través de las variables oXml y oLtOfItem donde se permite realizar un tratamiento dentro del PE para agregar o manejar información del encabezado o ítems que se enviará a la rutina MATA410 y le permite cambiar o eliminar solo un elemento de acuerdo con el único mensaje enviado.

Importante

No se permite realizar solamente la eliminación de ítem(s) del Pedido de Venta en el proceso de integración del mensaje ORDER, 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 (MT410EAI) 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

MATI410() ---> 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 Order, 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.




oXml

             Objeto

Objeto XML con los datos relacionados con el mensaje único de orden.




oLtOfItem

             Objeto

Objeto JSON con los datos relacionados con el mensaje único Order.




05. RESPUESTA

Devolución

Tipo

Descripción

Obrigatório

aRet

Array

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

Sim


06. EXEMPLO

Ejemplo:
Ejemplo:
#Include'Totvs.ch'

User Function MT410EAI
	Local aCab       := aClone(PARAMIXB[1])
	Local aItens     := aClone(PARAMIXB[2])
	Local nTamC6ITEM := GetSx3Cache("C6_ITEM","X3_TAMANHO")
	Local nI         := 1
	Local oXmlAux	 := Nil
	Local oJsonAux	 := Nil
	Local aRet       := {} //Personalizaciones del usuario
    Local nPosCli    := 0
    Local nPosCPag   := 0

	IF FWIsInCallStack("MATI410")

        //verifica el encabezado del pedido de ventas 
        nPosCli  := Ascan(aCab,{ |X| X[1] == "C5_CLIENTE" })
        nPosCPag := Ascan(aCab,{ |X| X[1] == "C5_CONDPAG" })
        If aCab[nPosCli][2] == "FAT001"
            Aadd(aCab,{"C5_DESCONT", 5, NIL})
        EndIf

		For nI := 1 To Len(oXml:_TOTVSMessage:_BusinessMessage:_BusinessContent:_SalesOrderItens:_Item)
			oXmlAux := oXml:_TOTVSMessage:_BusinessMessage:_BusinessContent:_SalesOrderItens:_Item[nI]
			
			//Verifica si existe la TAG <ItemDeleted>1</ItemDeleted> personalizada en el XML. 
			If Type("oXmlAux:_ItemDeleted:Text") != "U" 
				//Si la TAG personalizada de <ItemDeleted> es 1, este ítem se eliminará, si es diferente de 1, el ítem solo se modificará.
				If  oXmlAux:_ItemDeleted:Text == "1"
					aItens[nI][AsCan(aItens[nI][1],"C6_ITEM")] :={"LINPOS","C6_ITEM",PadR(oXmlAux:_OrderItem:Text, nTamC6ITEM)}
					Aadd(aItens[nI],{"AUTDELETA", "S", NIL})
				Else
					aItens[nI][AsCan(aItens[nI][1],"C6_ITEM")] :={"LINPOS","C6_ITEM",PadR(oXmlAux:_OrderItem:Text, nTamC6ITEM)}
					Aadd(aItens[nI],{"AUTDELETA", "N", NIL})
				EndIf
			EndIf
		Next

	ElseIf FWIsInCallStack("MATI410O")

	  	//verifica el encabezado del pedido de ventas 
        nPosCli  := Ascan(aCab,{ |X| X[1] == "C5_CLIENTE" })
        nPosCPag := Ascan(aCab,{ |X| X[1] == "C5_CONDPAG" })
        If aCab[nPosCli][2] == "FAT001"
            aCab[nPosCPag][2] := "001"
        EndIf 

		For nI := 1 To Len(oLtOfItem)
			oJsonAux := oLtOfItem[nI]
			
			//Verifica si hay una TAG <ItemDeleted> </ItemDeleted> personalizada en el JSON. 
			If Type("oJsonAux:getPropValue('ItemDeleted')") != "U" 
				//Si la TAG personalizada <ItemDeleted> es 1, este ítem se eliminará, si es diferente de 1, el ítem solo se modificará.
				If oJsonAux:getPropValue('ItemDeleted') == "1"
					aItens[nI][AsCan(aItens[nI][1],"C6_ITEM")] :={"LINPOS","C6_ITEM",PadR(oJsonAux:getPropValue("OrderItem"), nTamC6ITEM)}
					Aadd(aItens[nI],{"AUTDELETA", "S", NIL})
				Else
					aItens[nI][AsCan(aItens[nI][1],"C6_ITEM")] :={"LINPOS","C6_ITEM",PadR(oJsonAux:getPropValue('OrderItem'), nTamC6ITEM)}
					Aadd(aItens[nI],{"AUTDELETA", "N", NIL})
				EndIf
			EndIf
		Next

	EndIf
		
	aRet := {aCab,aItens}

Return aRet