Árvore de páginas

Ponto de Entrada - A116ICOMP

Linha de Produto:

Protheus

Segmento:

Manufatura

Módulo:

SIGACOM - Compras

Rotina:

Rotina

Nome Técnico

Importação de CTe para o TOTVS Colaboração

MATA116I

País(es):

Brasil

Banco(s) de Dados:

Todos

Sistemas Operacionais:

Todos

Ponto de Entrada

Descrição:

O Ponto de Entrada A116ICOMP, permite manipular a gravação dos itens da nota de frete importada via TOTVS Colaboração, permitindo por exemplo, desmembrar o valor do frete entre seus componentes.

O array de retorno do ponto de entrada deve obrigatoriamente retornar os campos DT_ITEM, DT_COD, DT_VUNIT, DT_TOTAL e DT_PICM e irá substituir a gravação que é feita hoje na tabela SDT utilizando o produto configurado no parâmetro MV_XMLPFCT.

 O ponto de entrada será executado somente quando o cliente for o remetente no CTe.

Eventos:

A chamada do Ponto de Entrada A116ICOMP, ocorre ao importar o XML de CTe via TOTVS Colaboração na rotina MATA116I antes da gravação da tabela SDT.

Programa Fonte:

MATA116I.PRW

Função:

MATA116I - Importação de CTe para o TOTVS Colaboração

Parâmetros:
ParâmetroTipoDescriçãoObrigatório
PARAMIXB[1]ObjetoObjeto contendo o XML importadoSim
Retorno:
NomeTipoDescriçãoObrigatório
aItensArrayArray contendo os campos da tabela SDT que se deseja gravar e seus conteúdos.Sim
Exemplo:

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 produtos no 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)
// Atualiza o objeto com a posição atual
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}) //Busca pela aliquota correspondente
aAdd(aItens,aClone(aItem))

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

RestArea(aArea)

Return aItens

Informações adicionais:

O ponto de entrada será executado somente quando o cliente for o remetente no CTe.