Punto de entrada - A116ICOMP

Línea de producto:

Protheus

Segmento:

Manufactura

Módulo:

SIGACOM - Compras

Rutina:

Rutina

Nombre técnico

Importación de eCT para el TOTVS Colaboración

MATA116I

País(es):

Brasil

Base(s) de datos:

Todos

Sistemas operativos:

Todos

Punto de entrada

Descripción:

El punto de entrada A116ICOMP, permite manejar la grabación de los ítems de la factura de flete importada mediante el TOTVS Colaboración, permitiendo por ejemplo, desmembrar el valor del flete entre sus componentes.

El array de respuesta del punto de entrada debe obligatoriamente devolver los campos DT_ITEM, DT_COD, DT_VUNIT, DT_TOTAL y DT_PICM y sustituirá la grabación que se hace hoy en la tabla SDT, utilizando el producto configurado en el parámetro MV_XMLPFCT.

 El punto de entrada se ejecutará solamente cuando el cliente sea el remitente en el eCT.

Eventos:

La llamada del punto de entrada A116ICOMP, ocurre al importar el XML de eCT mediante el TOTVS Colaboración en la rutina MATA116I antes de grabar la tabla SDT.

Programa fuente:

MATA116I.PRW

Función:

MATA116I- Importación de eCT para el TOTVS Colaboración

Parámetros:

Parámetro

Tipo

Descripción

Obligatorio

PARAMIXB[1]

Objeto

Objeto que contiene el XML importado

Devolución:

Nombre

Tipo

Descripción

Obligatorio

aItens

Array

Array que tiene los campos de la tabla SDT que se desea grabar y sus contenidos.

Ejemplo:

User Function A116ICOMP()

Local oXML := PARAMIXB[1]
Local aArea := GetArea()
Local nI := 0
Local cCodPrd := ""
Local nVlrPrd := 0
Local aItem := {}
Local aItens := {}
Local aAux := {}

//Busca productos en el XML
If ValType(XmlChildEx(oXML:_INFCTE:_VPREST,"_COMP")) <> "U"
aAux := If(ValType(oXML:_INFCTE:_VPREST:_COMP) == "O",{oXML:_INFCTE:_VPREST:_COMP},oXML:_INFCTE:_VPREST:_COMP)

For nI := 1 To Len(aAux)
// Actualiza el objeto con la posición actual
If ValType(aAux[nI]:_xNome:Text) != "U" .And. !Empty(aAux[nI]:_xNome:Text)
cCodPrd := Posicione("SA5",5,xFilial("SA5") + Padr(aAux[nI]:_xNome:Text,TamSx3("A5_CODPRF")[1]),"A5_PRODUTO")
EndIf

If ValType(aAux[nI]:_vComp:Text) != "U" .And. !Empty(aAux[nI]:_vComp:Text)
nVlrPrd := Val(aAux[nI]:_vComp:Text)
EndIf

If !Empty(cCodPrd) .And. nVlrPrd > 0
aAdd(aItem,{"DT_ITEM",StrZero(Len(aItens)+1,TamSx3("DT_ITEM")[1])})
aAdd(aItem,{"DT_COD",cCodPrd})
aAdd(aItem,{"DT_VUNIT",nVlrPrd})
aAdd(aItem,{"DT_TOTAL",nVlrPrd})
aAdd(aItem,{"DT_PICM",12}) //Búsqueda por la alícuota correspondiente
aAdd(aItens,aClone(aItem))

aItem := {}
cCodPrd := ""
nVlrPrd := 0
EndIf
Next nI
EndIf

RestArea(aArea)

Return aItens

Informaciones adicionales:

El punto de entrada se ejecutará solamente cuando el cliente sea el remitente en el eCT.