Árvore de páginas

GFEA1184 - POSSIBILITA A INCLUSÃO DE REGRAS PARA DEFINIÇÃO DO TIPO DE DOCUMENTO DE FRETE NA IMPORTAÇÃO DO CT-e

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Supply Chain - Logística

Módulo:

SIGAGFE

Ponto de Entrada - GFEA1184

Descrição:

Recebe o conteúdo parcial do XML do CT-e que está sendo importado, a partir da tag <Cte>, inclusive todos os nós e informações descendentes.

A partir deste conteúdo, pode-se criar regras para determinação do Tipo do Documento de Frete.

Localização:

Será executado na importação do CT-e, na função que realiza a atribuição do Tipo do Documento de Frete.

Programa Fonte:

GFEA118 - Importação de CT-e

Parâmetros:

NomeTipoDescriçãoObrigatório
PARAMIXB[1]ArrayObjeto parcial do XML, a partir da tag <CTe>.Sim

Retorno:

NomeTipoDescriçãoObrigatório
lRetBooleano

Indica se o tipo do documento de frete utilizado será o definido no PE ou pelo programa padrão:

.T. -> Assume o tipo do documento de frete do PE, a partir do parâmetro de retorno cTpDF;
.F. -> Realiza as regras do fonte padrão para definição do tipo do documento de frete.

Sim
cTpDFCaracterTipo do Documento de Frete que será atribuído.Não

 

Exemplo: GFEA1184
User Function GFEA1184()
	
	Local _cTPDF := "1"
	Local _oCte := PARAMIXB[1]
	Local _cTpCte := U_XmlValid(_oCte,{"_INFCTE","_IDE"},"_TPCTE")
	Local _cTpServ 	:= U_XmlValid(_oCte,{"_INFCTE","_IDE"},"_TPSERV") 
	Local _cXCaracAd := ""
	Local _lRet := .F.
	If XmlChildEx(_oCte:_INFCTE,"_COMPL") != Nil .And. XmlChildEx(_oCte:_INFCTE:_COMPL,"_XCARACAD") != Nil
		_cXCaracAd := U_XmlValid(_oCte,{"_INFCTE","_COMPL"},"_XCARACAD")
	EndIf
	
	If _cTpCte == '1' .And. _cTpServ == '0' .And. Upper(_cXCaracAd) $ 'PALETIZACAO'
		_cTPDF := '7'
		_lRet := .T.
	EndIf
Return {_lRet, _cTPDF}

User Function XmlValid(oTEMP,aNode,cTag)
Local nCont
Local cReturn := ''
Private oXML := oTEMP
	//Navega dentro do objeto XML usando a variavel aNode como base, retornando o conteudo do TEXT ou o
	For nCont := 1 to Len(aNode)
		If ValType( XmlChildEx( oXML,aNode[nCont]  ) ) == 'O'
			oXML :=  XmlChildEx( oXML,aNode[nCont]  )
		Else
			Exit 
		Endif
		If nCont == Len(aNode)
			cReturn := &("oXML:"+cTag+':TEXT')
			Exit
		EndIf
	Next nCont
Return cReturn