Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  • Implementação de importação de XML de NFSe Nacional (Tamanho documento até 15 caracteres).

03. SOLUÇÃO

  • Realizado desenvolvimento de importação de XML de NFSe Nacional (Tamanho documento até 15 caracteres).

04. DEMAIS INFORMAÇÕES

Detalhamento e configuração sobre o processo de importação de um XML de NFSe Nacional:

...

Totvs custom tabs box
tabsConfiguração, Importador XML, Documento Entrada, Rotina Automática (MATA103)
idspasso1,passo2,passo3,passo4
Totvs custom tabs box items
defaultyes
referenciapasso1

Dicionário: SX3 (Campos) e SX6 (Parâmetro)

Informações
titleIMPORTANTE!

Necessário aplicar expedição continua para atualização de dicionário: Pacotes de Atualização

Totvs custom tabs box
tabsSX3 (Campos), SX6 (Parâmetro)
idsSX3,SX6
Totvs custom tabs box items
defaultyes
referenciaSX3

Campos:

Campo:Tipo:Tamanho:Titulo:Descrição:Picture:Visual:Contexto:Browse:Grupo de Campos:Observação:
CKO_NFELETCaracter20NF EletrNota Fiscal Eletrônica@!AlterarRealNão124
CKO_CHVDOCCaracter50Chave DocChave Documento@!AlterarRealNão
Aumentar campo de 44 para 50
DS_NFELETRCaracter20NF EletrNota Fiscal Eletrônica@!AlterarRealSim124
Totvs custom tabs box items
defaultno
referenciaSX6

Parâmetro:

Parâmetro:Tipo:Descrição:Conteúdo:
MV_NFSNAUTLogicoDefine geração de numeração automática para NFSe no documento de entradaF (Default)



Totvs custom tabs box items
defaultno
referenciapasso2

Ao importar um XML de NFSe, será analisado o tamanho do documento recebido no XML. Caso seja maior que 9 caracteres (Default - Padrão Protheus), a numeração recebida pelo XML passara a ser gravada nos campos (CKO_NFELET / DS_NFELETR / F1_NFELETR / F3_NFELETR) e a numeração do documento (CKO_DOC / DS_DOC / F1_DOC / F3_DOC) passara a ser gravada com "T" + Contador (Ex: T00000001);

Tabela Importação:

Image Added


Monitor:

Image Added


Documento Entrada: 

Image AddedPrint

Totvs custom tabs box items
defaultno
referenciapasso3

No Documento de Entrada ao inserir um novo documento e informar a espécie igual a NFS, usuário será perguntado se a numeração desse documento é maior que 9 caracteres (Default - Padrão Protheus).

PrintImage Added


Se informar "Sim", a numeração do documento (F1_DOC), fica desabilitada para edição, pois ao confirmar a geração do documento será gerada uma nova numeração com "T" + Contador (Ex: T00000001);

Image Added


PrintImage Added


Observação: Ao informar "Sim", para que a regra de numeração seja automática será necessário que o parâmetro MV_NFSNAUT esteja habilitado. E que preenche o campo "Numero NF Eletr" (F1_NFELETR) com a numeração maior que 9 (Default - Padrão Protheus). Caso não respeite essa regra, usuário será alertado, para que preencha corretamente ou então informe a espécie novamente "NFS" e selecione a opção "Não", assim deixando o campo (F1_DOC) disponível para preencher com a numeração desejada pelo usuário.

Image Added

Totvs custom tabs box items
defaultno
referenciapasso4

Exemplo de rotina automática (MATA103) para inserção de NFSe Nacional;

Observação: Necessário estar com o parâmetro MV_NFSNAUT habilitado, no cabeçalho enviar as informações de F1_DOC (Porem, ser alterado), F1_NFELETR (Numeração maior que 9), F1_ESPECIE (NFS), e um novo campo "NFSAUT" igual a 1, dessa forma ao inserir um documento de entrada a geração do documento será gerada uma nova numeração com "T" + Contador (Ex: T00000001);


Exemplo execauto:

Bloco de código
languagedelphi
themeMidnight
titleExemplo
linenumberstrue
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"
#Include "Coverage.ch"

User Function EXEC103()

Local aCab			:= {}
Local aItem			:= {}
Local aItens		:= {}
Local nOpc			:= 3
Local cNum			:= ""
Local cSer			:= "   "
Local nI			:= 0
Local nX			:= 0
Local cInicio		:= Time()

Private lMsErroAuto := .F.
Private lMsHelpAuto := .F.
Private lTemF1GFE	:= .F. 

PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "COM" FUNNAME "MATA103"

lMsErroAuto := .F.  
	
If nOpc == 3
	cNum := GetSxeNum("SF1","F1_DOC")	
	SF1->(dbSetOrder(1))		
	While SF1->(dbSeek(xFilial("SF1")+cNum))			
		ConfirmSX8()			
		cNum := GetSxeNum("SF1","F1_DOC")		
	EndDo
Endif

aadd(aCab,{"F1_FORMUL"  	,"N"	 	,NIL})
aadd(aCab,{"F1_DOC"			,cNum		,NIL})
aadd(aCab,{"F1_SERIE"  		,cSer	  	,NIL})
aadd(aCab,{"F1_FORNECE"		,"COM002"	,NIL})
aadd(aCab,{"F1_LOJA"   		,"01"  		,NIL})
aadd(aCab,{"F1_EMISSAO"		,DDATABASE	,NIL})
aadd(aCab,{"F1_DTDIGIT"		,DDATABASE	,NIL})
aadd(aCab,{"F1_TIPO"   		,"N"	 	,NIL}) //I-Complemento ICMS / P - Complemento IPI
aadd(aCab,{"F1_ESPECIE" 	,"NFS"		,NIL})
aadd(aCab,{"F1_COND"   		,"000" 		,NIL}) 
aadd(aCab,{"F1_STATUS" 		, "A" , Nil})
aadd(aCab,{"NFSAUT" 		, "1" , Nil})
aadd(aCab,{"F1_NFELETR" 	, "2024112120241121" , Nil})
	
For nX := 1 To 1
	cProd1 := "01"
	
	aItem := {}
	aadd(aItem,{"D1_ITEM"		,StrZero(nX,TamSx3("D1_ITEM")[1]) ,NIL})
	aadd(aItem,{"D1_COD"   		,PadR(cProd1,TamSx3("D1_COD")[1]) ,NIL})
	aadd(aItem,{"D1_UM"  		,"UN"	,NIL}) 
	aadd(aItem,{"D1_LOCAL"  	,"01"  	,NIL})
	aadd(aItem,{"D1_QUANT" 		,10	  	,NIL}) 
	aadd(aItem,{"D1_VUNIT"  	,1000	,NIL}) 
	aadd(aItem,{"D1_TOTAL"  	,10000	,NIL})
	aadd(aItem,{"D1_TES"   		,"001" 	,NIL})
	aAdd(aItens,aItem)	
Next nX

MSExecAuto({|x,y,z,a| MATA103(x,y,z,a)},aCab,aItens,nOpc,.F.)

If !lMsErroAuto 
	ConOut("	Incluido NF: " + cNum)  
Else
	MostraErro() 

	ConOut("Erro na inclusao!") 
	Exit
EndIf

Conout("Inicio: " + cInicio)
ConOut("Fim: " + Time())
Conout("Tempo: " + ElapTime(cInicio,Time()))

RESET ENVIRONMENT

Return

05. ASSUNTOS RELACIONADOS

...