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 |
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.
MATI410() ---> aRet
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: | |||
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. |
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 |
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