Modelo NFCe Acbr

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Modelo NFCe Acbr

Mensagem por Itamar M. Lins Jr. »

Ola!
Preciso de um modelo simples de uma NFCe no modelo do Acbr.
Eu não sei o que fiz aqui, porque o ACBR está travando. Estava indo bem porém tem alguma coisa errada aqui e não sei identificar.
Isso já no final, estava faltando só trocar a chave de Homologação para produção... Agora gero o ent.txt e o acbr trava.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Modelo NFCe Acbr

Mensagem por MSDN »

O motivo de eu não usar ACBr é por isso, eu tinha tudo feito, levei 1 semana testando, estava tudo certo, dai fui almoçar e quando voltei, nem com reza e vela a coisa funcionava, o mesmo com o Uninfe, só que com ele, não trava, mas as vezes não envia, ou não acha arquivo, principalmente quando atualiza versão, por isso optei pela classe do Quintas, só não consegui ir mais adiante ainda pq estou esperando meu certificado, que deve chegar semana que vem, dai continuarei as postagens no tópico que criei sobre essa implementação.

Abraços e boa sorte
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Modelo NFCe Acbr

Mensagem por Itamar M. Lins Jr. »

Ola!
Parece que identifiquei o defeito, ainda estou procurando... porém as versões do OPENSSL e das DLL´s do ACBR não estão batendo com a do SVN.
Estou tentando compilar via Lazarus.
Eu já uso o ACBR, só estou adicionando a NFCe, já uso com exito a NFe, há muito tempo e sem dor de cabeça.
O problema é que eles unificaram as versões com OPENSSL e CAPICOM, antes eram separadas.
O certificado de 1 ano .PFX usa OPENSSL e o TOKEN/Cartão usa CAPICOM.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Modelo NFCe Acbr

Mensagem por Itamar M. Lins Jr. »

Ola!
O problema é com a escolha da forma, em Menu DF-e -> Certificados -> Configuração SSL -> LibWinCrypt está funcionado. Já com LibOpenSSL dá pau!
E lá se vão algumas horas só para identificar isso.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Modelo NFCe Acbr

Mensagem por MSDN »

Veja o lado bom, suas horas vão ajudar outras pessoas que usam o ACBr, mas claro que podia ser melhor.
De qualquer forma, depender dos outros para implementar alguma rotina no sistema não é fácil.

Abraços
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Modelo NFCe Acbr

Mensagem por Itamar M. Lins Jr. »

Ola!
Viu Marcelo, vc que tem sistema para bares, agora precisa cadastrar todas essas informações para tirar uma NFCe.
NCM, CFOP, CEST, CSOSN além da antiga ST das ECF´s isso para vender uma lata de refrigerante. Se já não tiver isso cadastrado, lógico.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Modelo NFCe Acbr

Mensagem por MSDN »

É isso mesmo Itamar, estou correndo bastante para deixar tudo 100% como deve ser, nem parei pra fazer o XML de acordo com a 3.10, já estou fazendo tudo pra 4.0.
Inclusive a ideia de ir fazendo e postando aqui no Fórum e no repositório do GIT, é justamente criar um grupo de programadores atentos às mudanças, o que 1 não vê, outro pode ver.

Abraços
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Modelo NFCe Acbr

Mensagem por rubens »

A resposta nao foi para mim, mas para empresa do simples isso tudo da para automatizar pela entrada com xml..
EAN - Vem no xml
NCM - vem no ncm
CFOP - praticamente 5102-5405-5656 se o cliente de outro estado - 6102-6404-6652
CEST - vem no XML - se produto antigo - cria uma rotina para atualizar o CSET
CSOSN/CST - depende do CFOP..

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Modelo NFCe Acbr

Mensagem por MSDN »

Obrigado Rubens pela dica, o que vc falou seria importar o XML do Fornecedor da mercadoria para associar os códigos, correto ?

Abraços
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Modelo NFCe Acbr

Mensagem por rubens »

Sim... Marcelo...

Já faço e creio que muitos aqui fazem...
Então...
Baixo o XML
Uso a classe do Quintas para ler o Xml
Daí verifico se o produto é cadastrado ou não.
Se for cadastrado atualiza dados do cadastro conforme dados do produto do xml. Tipo EAN, NCM, CFOP, CEST.
Se não for cadastrado faz um cadastro novo com os dados do produto do xml.
Dessa forma na hora de emitir a NFCe dificilmente dará um erro de integridade.
Tenho isso pronto em HMGs... se quiser coloco a disposição...
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Modelo NFCe Acbr

Mensagem por MSDN »

Rubens, se quiser compartilhar, me envie que deixarei no GIT do projeto que estou fazendo, fica centralizado para todos.

Abraços
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Modelo NFCe Acbr

Mensagem por Fernando queiroz »

Se quiserem disponibilizo a rotina de emissao de NFC-e usando a SEFAZCLASS , com pequenas adaptações a coisa fica pronta

Código: Selecionar todos

STATIC FUNCTION ENVIAR_NFCE( tEMISSAO, nPEDIDO, nCPFCNPJ  )

Local bREGERA := .F., minfNFe, Mn_nNF, Mn_serie, Mb_indPag , cPrefixo
		ThisNFE:oLabel5:SetText("Verificando Dados....                                             ")
		ThisNFE:oProgressbar1:Set(,30)	
		
		SELE NOTAFCE
		SET ORDER TO 1
		IF  DBSEEK(STRZERO(mNUMNOT,6,0))
			ThisNFE:oLabel5:SetText("Consultando se NFC-e Existe                                        ")
			SELE CERTIFICADO
			IF !DBSEEK(rtrim(hwg_GetComputerName()))
				hwg_MsgInfo("Computador sem o CERTIFICADO DIGITAL instalado"+ HB_EOL()+"A Operação não poderá ser efetuada")
				SELE NOTAFCE
				RETURN NIL
			endif
			SELE NOTAFCE
			oSefaz              := SefazClass():New()
			oSefaz:cCertificado := TRIM(CERTIFICADO->NOMCERT)
			oSefaz:cNFCE 		:= "S"
			cXmlRetorno := oSefaz:NFeConsultaProtocolo( substr(NOTAFCE->a_Id,4,44), ALLTRIM(oSefaz:cCertificado) , FLAG->n_tpAmb )
			IF  oSefaz:cStatus $ "100,101,150,301,302"

				ThisNFE:oLabel5:SetText("Não pode Enviar pois NFC-e já existe na base da SEFAZ")			
				ThisNFE:oOwnerbutton4:DISABLE( )			
				hwg_MsgInfo("MOTIVO: " + XmlNode(cXmlRetorno, "xMotivo")+ HB_EOL() +HB_EOL() + ;
				   "STATUS: " + XmlNode(cXmlRetorno, "cStat")+ HB_EOL() + ;
				   "DATA:   " + XmlNode(cXmlRetorno, "dhRecbto")+ HB_EOL()+ ;
				   "CHAVE:  " + XmlNode(cXmlRetorno, "chNFe")+ HB_EOL()+ ; 
				   "PROTOCOLO:  " + XmlNode(cXmlRetorno, "nProt")+ HB_EOL() )
				SELE NOTAFCE
				RETURN NIL				
			ENDIF
			ThisNFE:oLabel5:SetText("Re-gerando dados da NFC-e                                          ")
			Mn_nNF              :=NOTAFCE->b_nNF
			Mn_serie            :=NOTAFCE->b_serie
			minfNFe             :=SUBSTR(NOTAFCE->a_Id,4,44)
			Mb_indPag			:="1"

			cPrefixo := hb_Dirbase()+"\xml\retorno\NFCe" + NOTAFCE->b_serie + NOTAFCE->b_nNF
			
		ELSE
			ThisNFE:oLabel5:SetText("Gerando dados para Nova NFC-e                                      ")
			SELE NOTAFCE
			DBAPPEND()
			Mn_nNF              :=STRZERO(VAL(FLAG->n_nNFC),9,0)
			Mn_serie            :=STRZERO(VAL(FLAG->n_serieNFC),3,0 )
			Mb_indPag           :="1"
			minfNFe             :=MONTA_CHAVE( )
			NOTAFCE->a_versao    := "3.10"
			NOTAFCE->a_Id		:= 'NFe'+minfNFe
			NOTAFCE->b_cUF		:= FLAG->n_cUF
			NOTAFCE->b_cNF		:= FLAG->n_cNF		
			NOTAFCE->b_natOp	:= FLAG->n_natOp
			NOTAFCE->b_indPag	:= PEDIDO->b_indPag
			NOTAFCE->b_mod		:= FLAG->n_modNFC
			NOTAFCE->b_serie	:= FLAG->n_serieNFC
			NOTAFCE->b_nNF		:= FLAG->n_nNFC

			DBCOMMIT()
			SELE FLAG
			DO WHILE ! RLOCK()
				hwg_MsgInfo("Registro em uso por outro Operador"+ HB_EOL()+"Solicite ao Outro Operador a Liberacao")
			END 
			FLAG->n_cNF  := strzero(HB_RandomInt(1, 99999999),8,0)
			FLAG->n_nNFC := strzero(val(FLAG->n_nNFC)+1,9,0)
			DBUNLOCK()
			DBCOMMIT()
			SELE NOTAFCE
			cPrefixo := hb_Dirbase()+"\xml\retorno\NFCe" + NOTAFCE->b_serie + NOTAFCE->b_nNF
		ENDIF
//		ThisNFE:oLabel4:setText("65/"+Mn_serie+"/"+Mn_nNF)


		
		SELE PEDIDO
		DO WHILE ! RLOCK()
			hwg_MsgInfo("Registro em uso por outro Operador"+ HB_EOL()+"Solicite ao Outro Operador a Liberacao")
		END 
			

		SELE NOTAFCE
		
		DO WHILE ! RLOCK()
			hwg_MsgInfo("Registro em uso por outro Operador"+ HB_EOL()+"Solicite ao Outro Operador a Liberacao")
		END 
		NOTAFCE->b_dhSaiEnt	:= SPACE(25)		
		NOTAFCE->b_tpNF		:= "1"												&& tipo de operacao 0-entrada 1-saida	
		NOTAFCE->b_idDest	:= "1"												&& operacao local

		NOTAFCE->b_cMunFG	:= FLAG->n_cMun
		NOTAFCE->b_tpImp	:= "4"												&& 4 = CUPOM FISCAL 
		NOTAFCE->b_tpEmis	:= "1"

		NOTAFCE->b_cDV		:= SUBSTR(minfNFe,44,1)
		NOTAFCE->b_tpAmb	:= FLAG->n_tpAmb									&& tipo de ambiente 1-producao 2-homologacao
		NOTAFCE->b_finNFe	:= "1"												&& FINALIDADE 1=NFe normal
		NOTAFCE->b_indFinal	:= "1"												&& 0=normal 1=consumidor final

		NOTAFCE->b_indPres	:= "1"

//		NOTAFCE->b_procEmi	:= "3"												&& 3=emissao NFe app do fisco
//		NOTAFCE->b_verProc	:= FLAG->b_verProc									&& versao do app do fisco

		NOTAFCE->b_procEmi	:= "0"												&& 0=emissao NFCe app do CLIENTE
		NOTAFCE->b_verProc	:= "1.0"                                             && FLAG->b_verProc	versao do app do cliente
		

		NOTAFCE->b_dhCont	:= SPACE(25)
		NOTAFCE->b_xJust		:= SPACE(256)		

		NOTAFCE->c_CNPJ		:= FLAG->n_CNPJ	
		NOTAFCE->c_xNome    := FLAG->n_xNome
		NOTAFCE->c_xFant    := FLAG->n_xFant
		NOTAFCE->c_xLgr		:= FLAG->n_xLgr		
		NOTAFCE->c_nro		:= FLAG->n_nro		
		NOTAFCE->c_xCpl		:= FLAG->n_xCpl
		NOTAFCE->c_xBairro	:= FLAG->n_xBairro
		NOTAFCE->c_cMun		:= FLAG->n_cMun
 		NOTAFCE->c_xMun		:= FLAG->n_xMun 
 		NOTAFCE->c_UF		:= FLAG->n_xUF  
 		NOTAFCE->c_CEP		:= FLAG->n_CEP  
 		NOTAFCE->c_cPais		:= FLAG->n_cPais
 		NOTAFCE->c_xPais		:= FLAG->n_xPais
 		NOTAFCE->c_fone		:= FLAG->n_fone
 		NOTAFCE->c_IE		:= FLAG->n_IE
 		NOTAFCE->c_IEST		:= space(14)      	&& IE do substituto tributario
 		NOTAFCE->c_IM		:= FLAG->n_IM		
 		NOTAFCE->c_CNAE		:= FLAG->n_CNAE
 		NOTAFCE->c_CRT		:= FLAG->n_CRT 
 
  		NOTAFCE->e_CNPJ		:= PEDIDO->e_CNPJ 
  		NOTAFCE->e_IdEstr	:= PEDIDO->e_IdEstr

	    NOTAFCE->e_xNome		:= PEDIDO->e_xNome
		
//		if FLAG->n_tpAmb    = "2"
//			NOTAFCE->e_xNome		:= "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"
//		endif   

  		NOTAFCE->e_xLgr 		:= PEDIDO->e_xLgr
  		NOTAFCE->e_nro		:= PEDIDO->e_nro		
  		NOTAFCE->e_xCpl		:= PEDIDO->e_xCpl
  		NOTAFCE->e_xBairr	:= PEDIDO->e_xBairr		
  		NOTAFCE->e_cMun		:= PEDIDO->e_cMun	 
  		NOTAFCE->e_xMun		:= PEDIDO->e_xMun
  		NOTAFCE->e_UF		:= PEDIDO->e_UF
  		NOTAFCE->e_CEP		:= TIRAPONTO(PEDIDO->e_CEP)
  		NOTAFCE->e_cPais		:= PEDIDO->e_cPais 
  		NOTAFCE->e_xPais		:= PEDIDO->e_xPais		
  		NOTAFCE->e_fone		:= PEDIDO->e_fone 
		NOTAFCE->e_IE        := PEDIDO->e_IE
        NOTAFCE->e_indIE     := PEDIDO->e_indIE
  		NOTAFCE->e_ISUF		:= PEDIDO->e_ISUF   
  		NOTAFCE->e_eMAIL		:= PEDIDO->e_eMAIL 
		NOTAFCE->NUMNOT		:= STRZERO(mNUMNOT,6,0)		
		mINFCPL			    := cMemo1

		IF FILE("C:\TEMP\NFCEITENS.DBF")
			FILEDELETE("C:\TEMP\NFCEITENS.DBF")
			FILEDELETE("C:\TEMP\NFCEITENS.001")
		ENDIF
		IF ! ABRE_NFCEITEM()
			DBCLOSEALL()
			RETURN (NIL)
		END	
		IF ! ABRE_ITENS(SUBSTR(DTOS(PEDIDO->DATVEN),3,6))
			DBCLOSEALL()
			RETURN (NIL)
		END	
		IF ! DBSEEK(PEDIDO->NUMNOT, .T.)
			hwg_MsgInfo("ERRO DE POSICIONAMENTO - SGC4800"+ HB_EOL()+"GERANDO ITENS DA NF-e" )
			DBUNLOCKALL()
			DBCOMMITALL()
			DBCLOSEALL()
			hwg_Enddialog()
			QUIT
		END 
		
		M->i_nItem 		:=0
		M->m_vTotFed 	:=0
		M->m_vTotEst 	:=0
		M->m_vTotTrib 	:=0		
	
		
************************************************************************************************************************************         
		DO WHILE ITENS->NUMNOT = PEDIDO->NUMNOT
			SELE PRODUTOS
			IF ! DBSEEK(STRZERO(VAL(ITENS->CODPRO),7,0))
				hwg_MsgInfo( "ERRO DE POSICIONAMENTO - SGC4800"+ HB_EOL()+"GERANDO ITENS DA NF-e"+ HB_EOL()+"PRODUTOS NAO EXISTE NO CADASTRO - "+STRZERO(VAL(ITENS->CODPRO),7,0) )
				DBUNLOCKALL()
				DBCOMMITALL()
				DBCLOSEALL()
				return nil
			END 
			IF PRODUTOS->PROSER = "2"
				SELE ITENS
				DBSKIP()
				LOOP
			ENDIF
			
			SELE NCMBASE
			IF PRODUTOS->NCM =0
				hwg_MsgInfo( "PRODUTO SEM NCM - FAVOR CADASTRAR "+ HB_EOL()+PRODUTOS->DESPRO+ HB_EOL()+"NFe - Nao Pode Ser Emitida" )
				DBUNLOCKALL()
				DBCOMMITALL()
				DBCLOSEALL()
				return nil
			END
			IF .NOT. DBSEEK(STRZERO(produtos->NCM,8,0))
				hwg_MsgInfo( "PRODUTO COM NCM INVALIDO - FAVOR CADASTRAR CORRETAMENTE "+ HB_EOL()+PRODUTOS->DESPRO+ HB_EOL()+"NFe - Nao Pode Ser Emitida" )
				DBUNLOCKALL()
				DBCOMMITALL()
				DBCLOSEALL()
				return nil
			END	
			
			SELE NFCEITENS
			DBAPPEND()
			NFCEITENS->NUMNOT		:= ITENS->NUMNOT					&& numero da nota de pedido
			NFCEITENS->i_versao		:= NOTAFCE->a_versao
			NFCEITENS->i_Id			:= NOTAFCE->a_Id
			NFCEITENS->i_nItem	    := STR(++M->i_nItem,3,0)			&& numero do item varia entre 001-990 

			NFCEITENS->i_cProd		:= substr(STRZERO(VAL(ITENS->CODPRO),7,0),1,6)+"-"+substr(STRZERO(VAL(ITENS->CODPRO),7,0),7,1)
			NFCEITENS->i_cEAN		:= if(PRODUTOS->EAN13 = 0,SPACE(14),STR(PRODUTOS->EAN13))	
			
			if FLAG->n_tpAmb    = "2" .AND. VAL(NFCEITENS->i_nItem) = 1
				NFCEITENS->i_xProd		:= "NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"
			ELSE
				NFCEITENS->i_xProd		:= ITENS->DESPRO		
			endif   

			NFCEITENS->i_NCM			:= STRZERO(PRODUTOS->NCM,8,0)			
**			NFCEITENS->i_NVE			:= STRZERO(PRODUTOS->NVE,6,0)		&& nao existe no cadastro 
			NFCEITENS->i_EXTIPI		:= STRZERO(PRODUTOS->EXTIPI,3,0)		
            if flag->n_xUF = mUF 
				NFCEITENS->i_CFOP		:= PRODUTOS->ICMS_CFOP
			else
				NFCEITENS->i_CFOP		:= PRODUTOS->ICMS_CFOPI
			endif
			NFCEITENS->i_uCom		:= PRODUTOS->TIPUNI
			NFCEITENS->i_qCom		:= ITENS->QTDPRO
			NFCEITENS->i_vUnCom		:= ITENS->VLRUNI
			NFCEITENS->i_vProd		:= ROUND((ITENS->QTDPRO * ITENS->VLRUNI),2)
			NFCEITENS->i_cEANTrib	:= if(PRODUTOS->EAN13 = 0,SPACE(14),STR(PRODUTOS->EAN13))	
			NFCEITENS->i_uTrib		:= PRODUTOS->TIPUNI
			NFCEITENS->i_qTrib		:= ITENS->QTDPRO
			NFCEITENS->i_vUnTrib		:= ITENS->VLRUNI
			NFCEITENS->i_vFrete		:= 0.00								&& valor do frete implementacao futura
			NFCEITENS->i_vSeg		:= 0.00								&& valor do seguro implementacao futura
			NFCEITENS->i_vDesc		:= round((PEDIDO->TOTDES*((ITENS->QTDPRO * ITENS->VLRUNI)/(PEDIDO->TOT_PROD+PEDIDO->TOTDES))),2)						&& valor do desconto implementacao futura
			NFCEITENS->i_vOutro		:= 0.00
			NFCEITENS->i_indTot		:= 1
			
			IF PRODUTOS->ICMS_ORIGE$"0345"		
				NFCEITENS->m_vTotFed := ((ITENS->QTDPRO * ITENS->VLRUNI)*NCMBASE->NACFED)/100
				NFCEITENS->m_vTotEst := ((ITENS->QTDPRO * ITENS->VLRUNI)*NCMBASE->ESTADUAL)/100
				NFCEITENS->m_vTotTrib:= NFCEITENS->m_vTotFed + NFCEITENS->m_vTotEst				
			ELSE
				NFCEITENS->m_vTotFed := ((ITENS->QTDPRO * ITENS->VLRUNI)*NCMBASE->IMPFED)/100
				NFCEITENS->m_vTotEst := ((ITENS->QTDPRO * ITENS->VLRUNI)*NCMBASE->ESTADUAL)/100		
				NFCEITENS->m_vTotTrib:= NFCEITENS->m_vTotFed + NFCEITENS->m_vTotEst				
			ENDIF

			NFCEITENS->CEST       	:= PRODUTOS->CEST
			NFCEITENS->i_xPed     	:= PEDIDO->NUMNOT

		******************************************
		***GRUPO DE TRIBUTAçAO SIMPLES NACIONAL
		******************************************
			IF  PRODUTOS->ICMS_REGIM = "1"
				NFCEITENS->ICMS_REGIM :=PRODUTOS->ICMS_REGIM			
				NFCEITENS->ICMS_ST    :=PRODUTOS->ICMS_ST        
				NFCEITENS->ICMS_ORIGE :=PRODUTOS->ICMS_ORIGE						

				NFCEITENS->q_CST		 :=PRODUTOS->q_PISst					&& PIS 99 outras operacoes
				NFCEITENS->q_vBC		 :=0.00									&& valor da base de calculo
				NFCEITENS->q_pPIS	 :=0.0000								&& aliquota em percentual
				NFCEITENS->q_vAlqProd :=0.00									&& aliquota em reais
				NFCEITENS->q_PISQtde  :=0.00									&& quantidade vendida
				NFCEITENS->q_vPIS     :=0.00

				NFCEITENS->s_CST		 :=PRODUTOS->s_COFst					&& COFINS 99 outras operacoes
				NFCEITENS->s_vBC		 :=0.00									&& valor da base de calculo
				NFCEITENS->s_pCOFINS  :=0.0000								&& aliquota em percentual
				NFCEITENS->s_vAlqProd :=0.00									&& aliquota em reais
				NFCEITENS->s_COFSQtde :=0.00									&& quantidade vendida
				NFCEITENS->s_vCOFINS  :=0.00

				NFCEITENS->i_nItemPed := LTRIM(STR(M->i_nItem,3,0))

			endif
		******************************************
		***GRUPO DE TRIBUTAçAO SIMPLES NACIONAL - excesso de sublimite de receita bruta
		******************************************
			IF  PRODUTOS->ICMS_REGIM = "2"
				NFCEITENS->ICMS_REGIM :=PRODUTOS->ICMS_REGIM			
				NFCEITENS->ICMS_ST    :=PRODUTOS->ICMS_ST        
				NFCEITENS->ICMS_ORIGE :=PRODUTOS->ICMS_ORIGE						

				NFCEITENS->q_CST		 :=PRODUTOS->q_PISst					&& PIS 99 outras operacoes
				NFCEITENS->q_vBC		 :=0.00									&& valor da base de calculo
				NFCEITENS->q_pPIS	 :=0.0000								&& aliquota em percentual
				NFCEITENS->q_vAlqProd :=0.00									&& aliquota em reais
				NFCEITENS->q_PISQtde  :=0.00									&& quantidade vendida
				NFCEITENS->q_vPIS     :=0.00

				NFCEITENS->s_CST		 :=PRODUTOS->s_COFst					&& COFINS 99 outras operacoes
				NFCEITENS->s_vBC		 :=0.00									&& valor da base de calculo
				NFCEITENS->s_pCOFINS  :=0.0000								&& aliquota em percentual
				NFCEITENS->s_vAlqProd :=0.00									&& aliquota em reais
				NFCEITENS->s_COFSQtde :=0.00									&& quantidade vendida
				NFCEITENS->s_vCOFINS  :=0.00		

			endif
		**************************************************************************
		***GRUPO DE TRIBUTAçAO NORMAL ICMS=00/10/20/30/40/41/50/51/60/70/90
		**************************************************************************
			IF PRODUTOS->ICMS_REGIM = "3"
				NFCEITENS->ICMS_REGIM :=PRODUTOS->ICMS_REGIM			
				NFCEITENS->ICMS_ST    :=PRODUTOS->ICMS_ST        
				NFCEITENS->ICMS_ORIGE :=PRODUTOS->ICMS_ORIGE						

				NFCEITENS->o_cEnc	 :=PRODUTOS->o_cEnc	
				NFCEITENS->o_CST		 :=PRODUTOS->o_CST
				NFCEITENS->o_vBC		 :=0.00									&& valor da base de calculo
				NFCEITENS->o_pIPI	 :=0.0000								&& aliquota em percentual
				NFCEITENS->o_vIPI     :=0.00
				
				NFCEITENS->q_CST		 :=PRODUTOS->q_PISst					&& PIS 99 outras operacoes
				NFCEITENS->q_vBC		 :=0.00									&& valor da base de calculo
				NFCEITENS->q_pPIS	 :=0.0000								&& aliquota em percentual
				NFCEITENS->q_vAlqProd :=0.00									&& aliquota em reais
				NFCEITENS->q_PISQtde  :=0.00									&& quantidade vendida
				NFCEITENS->q_vPIS     :=0.00

				NFCEITENS->s_CST		 :=PRODUTOS->s_COFst					&& COFINS 99 outras operacoes
				NFCEITENS->s_vBC		 :=0.00									&& valor da base de calculo
				NFCEITENS->s_pCOFINS  :=0.0000								&& aliquota em percentual
				NFCEITENS->s_vAlqProd :=0.00									&& aliquota em reais
				NFCEITENS->s_COFSQtde :=0.00									&& quantidade vendida
				NFCEITENS->s_vCOFINS  :=0.00
			ENDIF
			SELE ITENS
			mTOTNOTA 		+= round((ITENS->QTDPRO * ITENS->VLRUNI),2)
			mTOTDESC 		+= round((PEDIDO->TOTDES*((ITENS->QTDPRO * ITENS->VLRUNI)/(PEDIDO->TOT_PROD+PEDIDO->TOTDES))),2)
			mm_vTotFed 	+=	NFCEITENS->m_vTotFed
			mm_vTotEst 	+=	NFCEITENS->m_vTotEst
			mm_vTotTrib 	+=	NFCEITENS->m_vTotTrib		
			
			DBSKIP()

		ENDD
********************************************************************************************************************************************		
		NOTAFCE->w_vPROD:=mTOTNOTA	
		NOTAFCE->w_vDesc:=mTOTDESC
		NOTAFCE->w_vNF  :=(mTOTNOTA - mTOTDESC)	
		
		mINFCPL  :=STRTRAN(mINFCPL,"<TRIBFED>",ALLTRIM(str(mm_vTotFed)))
		mINFCPL  :=STRTRAN(mINFCPL,"<TRIBEST>",ALLTRIM(str(mm_vTotEst)))			
		NOTAFCE->z_infCpl    := mINFCPL
*
* -------> arredondando o centavo perdido no ultimo item do pedido
*
		IF (PEDIDO->TOTDES - mTOTDESC) > 0.00
			NOTAFCE->w_vDesc +=(PEDIDO->TOTDES - mTOTDESC)			
			NOTAFCE->w_vNF   -=(PEDIDO->TOTDES - mTOTDESC)
        	NFCEITENS->i_vDesc +=(PEDIDO->TOTDES - mTOTDESC)
		ENDIF
		
		nEdit12:= NOTAFCE->w_vNF
		nEdit13:= NOTAFCE->w_vDesc
        sele NFCEITENS
		DBGOTOP()
		mTOTITENS:=0.00
		mTOTDESC:=0.00
		do while .not. eof()
			mTOTITENS += (NFCEITENS->i_vProd - NFCEITENS->i_vDesc)
			mTOTDESC  += NFCEITENS->i_vDesc
			DBSKIP()
		ENDDO
	    NFCEITENS->i_vDesc +=(PEDIDO->TOTDES - mTOTDESC)
        NOTAFCE->w_vNF   := mTOTITENS
		NOTAFCE->w_vDesc := mTOTDESC
		
*************************************************************************************************************************		
		ThisNFE:oLabel5:SetText("Gerando arquivo de Transmissao XML                                ")
		ThisNFE:oProgressbar1:Set(,50)

		M->cXml := '<NFe xmlns="http://www.portalfiscal.inf.br/nfe">'
		M->cXml += '<infNFe Id="'+ NOTAFCE->a_Id + '" versao="'+NOTAFCE->a_versao+'">'
		M->cXml += '<ide>'
		M->cXml += '<cUF>'      +NOTAFCE->b_cUF                       +'</cUF>'
		M->cXml += '<cNF>'      +NOTAFCE->b_cNF                       +'</cNF>'
		M->cXml += '<natOp>'    +RTRIM(NOTAFCE->b_natOp)              +'</natOp>'
		M->cXml += '<indPag>'   +Mb_indPag					         +'</indPag>'                                           && 0-A VISTA 1-A PRAZO 2-OUTROS
		M->cXml += '<mod>'      +NOTAFCE->b_mod                       +'</mod>'
		M->cXml += '<serie>'    +ALLTRIM(STR(VAL(NOTAFCE->b_serie)))  +'</serie>'
		M->cXml += '<nNF>'      +ALLTRIM(STR(VAL(NOTAFCE->b_nNF)))    +'</nNF>'
		M->cXml += '<dhEmi>'    +DateTimeXml(DATE(),TIME() ,FLAG->n_xUF,.T. )+'</dhEmi>'
		M->cXml += '<tpNF>'     +NOTAFCE->b_tpNF                      +'</tpNF>' 		                               && 0-ENTRADA 1-SAIDA
		M->cXml += '<idDest>'   +NOTAFCE->b_idDest                    +'</idDest>'                                           && id de destino da operacao 1=interna 2=interestadual 3=exterior
		M->cXml += '<cMunFG>'   +NOTAFCE->b_cMunFG                    +'</cMunFG>'
		M->cXml += '<tpImp>'    +NOTAFCE->b_tpImp                     +'</tpImp>'                                             && formato impressao  
		M->cXml += '<tpEmis>'   +NOTAFCE->b_tpEmis                    +'</tpEmis>'                                           && tipo emissao 4 = CUPOM FISCAL 
		M->cXml += '<cDV>'      +NOTAFCE->b_cDV                       +'</cDV>'
		M->cXml += '<tpAmb>'    +NOTAFCE->b_tpAmb                     +'</tpAmb>'    				          			&& TIPO DE AMBIENTE 1-PRODUCAO 2-DESENVOLVIMENTO
		M->cXml += '<finNFe>'   +NOTAFCE->b_finNFe                    +'</finNFe>'                                           && finalidade da emissao 1-normal 2-complementar 3-ajuste 4-devolucao
		M->cXml += '<indFinal>' +NOTAFCE->b_indFinal                  +'</indFinal>'                                       && operacao com consumidor final 0-normal 1-consumidor final
		M->cXml += '<indPres>'  +SUBSTR(aINDPRES[nCombo1],1,1)       +'</indPres>'                                         && indicador de presenca do comprador 1-operacao presencial
		M->cXml += '<procEmi>'  +NOTAFCE->b_procEmi                   +'</procEmi>'                                         && processo de emissao da NFe 3-app fornecido pelo fisco
		M->cXml += '<verProc>'  +ALLTRIM(NOTAFCE->b_verProc)          +'</verProc>'
		M->cXml += '</ide>'
*************************************************************************************************************************		
		M->cXml += '<emit>'
        IF LEN(NOTAFCE->c_CNPJ) > 11
			M->cXml += '<CNPJ>'     +ALLTRIM(NOTAFCE->c_CNPJ)                      +'</CNPJ>'
		ELSE
			M->cXml += '<CPF>'     +ALLTRIM(NOTAFCE->c_CNPJ)              +'</CPF>'
		ENDIF
		M->cXml += '<xNome>'    +rtrim(TIRACENTO(NOTAFCE->c_xNome))   +'</xNome>'
		M->cXml += '<xFant>'    +RTRIM(TIRACENTO(NOTAFCE->c_xFant))   +'</xFant>'
		M->cXml += '<enderEmit>'
		M->cXml += '<xLgr>'     +rtrim(TIRACENTO(NOTAFCE->c_xLgr))    +'</xLgr>'
		M->cXml += '<nro>'      +rtrim(NOTAFCE->c_nro)                +'</nro>'
		if NOTAFCE->c_xCpl <> space(60)
			M->cXml += '<xCpl>'     +rtrim(NOTAFCE->c_xCpl)           +'</xCpl>'
		endif
		M->cXml += '<xBairro>'  +rtrim(NOTAFCE->c_xBairro)            +'</xBairro>'
		M->cXml += '<cMun>'     +NOTAFCE->c_cMun                      +'</cMun>'
		M->cXml += '<xMun>'     +rtrim(NOTAFCE->c_xMun)               +'</xMun>'
		M->cXml += '<UF>'       +NOTAFCE->c_UF                        +'</UF>'
		M->cXml += '<CEP>'      +NOTAFCE->c_CEP                       +'</CEP>'
		M->cXml += '<cPais>'    +NOTAFCE->c_cPais                     +'</cPais>'
		M->cXml += '<xPais>'    +rtrim(NOTAFCE->c_xPais)              +'</xPais>'
		M->cXml += '<fone>'     +rtrim(NOTAFCE->c_fone)               +'</fone>'
		M->cXml += '</enderEmit>'
		IF FLAG->n_IE <> SPACE(14)
			M->cXml += '<IE>'   +rtrim(NOTAFCE->c_IE)                 +'</IE>'
		ENDIF
***		IF FLAG->n_IM <> SPACE(15)
***			M->cXml += '<IM>'   +rtrim(NOTAFCE->c_IM)                 +'</IM>'
***			M->cXml += '<CNAE>' +NOTAFCE->c_CNAE                      +'</CNAE>'
***		ENDIF
		M->cXml += '<CRT>'      +NOTAFCE->c_CRT                       +'</CRT>'
		M->cXml += '</emit>'				
*************************************************************************************************************************

		IF LEN(ALLTRIM(NOTAFCE->e_CNPJ)) # 0
			IF LEN(ALLTRIM(NOTAFCE->e_CNPJ)) > 11
				M->cXml += '<dest>'	
				M->cXml += '<CNPJ>'      +ALLTRIM(NOTAFCE->e_CNPJ)          +'</CNPJ>'
				M->cXml += '<indIEDest>'+"9"                     				+'</indIEDest>'	
				M->cXml += '</dest>'
			ELSE
				M->cXml += '<dest>'	
				M->cXml += '<CPF>'      +ALLTRIM(NOTAFCE->e_CNPJ)           +'</CPF>'	
				M->cXml += '<indIEDest>'+"9"                     				+'</indIEDest>'	
				M->cXml += '</dest>'			
			ENDIF
		ENDIF
		
		
*************************************************************************************************************************		
		SELE NFCEITENS
		SET ORDER TO 2
		DBGOTOP()
		IF ! DBSEEK(NOTAFCE->a_Id+"  1")				
			BEEP(); MsgWarning( "ERRO DE POSICIONAMENTO - SGC4800"+ HB_EOL()+"GERANDO ITENS XML DA NF-e" )
			DBUNLOCKALL()
			DBCOMMITALL()
			DBCLOSEALL()
			QUIT
		END 
		M->TOTPRO		  :=0.00
		M->vFCPUFDest     :=0.00
		M->vICMSUFDest    :=0.00
		M->vICMSUFRemet   :=0.00
        M->vBC            :=0.00
		M->vICMS          :=0.00
		
		DO WHILE NFCEITENS->i_Id = NOTAFCE->a_Id 

//			hwg_MsgInfo(NFCEITENS->i_nItem)		
			
			
			M->cXml += '<det nItem="'    +ltrim(NFCEITENS->i_nItem)              +'">'
			M->cXml += '<prod>'
			M->cXml += '<cProd>'         +rtrim(NFCEITENS->i_cProd)              +'</cProd>'
			if NFCEITENS->i_cEAN <> space(14)
			    if len(alltrim(NFCEITENS->i_cEAN)) < 13
					M->cXml +=                                                       '<cEAN/>'
				else
					M->cXml += '<cEAN>'      +alltrim(NFCEITENS->i_cEAN) 			+'</cEAN>'
				endif
			else
				M->cXml +=                                                       '<cEAN/>'
			endif
			
*******************************************************************************************************
			M->cXml += '<xProd>'         +rtrim(NFCEITENS->i_xProd)              +'</xProd>'
			M->cXml += '<NCM>'           +rtrim(NFCEITENS->i_NCM)                +'</NCM>'

            IF NFCEITENS->CEST <> space(08)
				M->cXml += '<CEST>'          +rtrim(NFCEITENS->CEST)             +'</CEST>'
			ENDIF
			M->cXml += '<EXTIPI>'        +rtrim(NFCEITENS->i_EXTIPI)             +'</EXTIPI>'
			M->cXml += '<CFOP>'          +rtrim(NFCEITENS->i_CFOP)               +'</CFOP>'
			M->cXml += '<uCom>'          +rtrim(NFCEITENS->i_uCom)               +'</uCom>'
			M->cXml += '<qCom>'          +LTRIM(str(NFCEITENS->i_qCom,14,4))     +'</qCom>'
			M->cXml += '<vUnCom>'        +LTRIM(str(NFCEITENS->i_vUnCom,14,2))   +'</vUnCom>'
			M->cXml += '<vProd>'         +LTRIM(str(NFCEITENS->i_vProd,14,2))    +'</vProd>'
            M->TOTPRO += (NFCEITENS->i_qCom * NFCEITENS->i_vProd)
			IF NFCEITENS->i_cEANTrib <> SPACE(14)
				M->cXml += '<cEANTrib>'      +alltrim(NFCEITENS->i_cEANTrib)       +'</cEANTrib>'
			else
				M->cXml +=                                                       '<cEANTrib/>'
			ENDIF
			M->cXml += '<uTrib>'         +rtrim(NFCEITENS->i_uTrib)              +'</uTrib>'
			M->cXml += '<qTrib>'         +LTRIM(str(NFCEITENS->i_qTrib,14,4))    +'</qTrib>'
			M->cXml += '<vUnTrib>'       +LTRIM(str(NFCEITENS->i_vUnTrib,14,2))  +'</vUnTrib>'
			IF NFCEITENS->i_vDesc <> 0.00
				M->cXml += '<vDesc>'       +LTRIM(str(NFCEITENS->i_vDesc,14,2))  +'</vDesc>'
			ENDIF
			M->cXml += '<indTot>'        +str(NFCEITENS->i_indTot,1,0)           +'</indTot>'
			M->cXml += '<xPed>'          +NOTAFCE->NUMNOT                        +'</xPed>'
*		M->cXml += '<nItemPed>'      +ltrim(NFCEITENS->i_nItem)              +'</nItemPed>'
			M->cXml += '</prod>'
****************************************************************			
*			simples nacional
****************************************************************
			IF  PRODUTOS->ICMS_REGIM = "1" 
				M->cXml += '<imposto>'
				M->cXml += '<ICMS>'
				M->cXml += '<ICMSSN'         +NFCEITENS->ICMS_ST                     +'>'
				M->cXml += '<orig>'          +NFCEITENS->ICMS_ORIGE                  +'</orig>'
				M->cXml += '<CSOSN>'         +NFCEITENS->ICMS_ST                     +'</CSOSN>'
				M->cXml += '</ICMSSN'        +NFCEITENS->ICMS_ST                     +'>'
				M->cXml += '</ICMS>'

				M->cXml += '<PIS>'
				M->cXml += '<PISOutr>'
				M->cXml += '<CST>'               +NFCEITENS->q_CST                   +'</CST>'
				M->cXml += '<vBC>'               +ltrim(str(NFCEITENS->q_vBC,14,2))  +'</vBC>'
				M->cXml += '<pPIS>'              +ltrim(str(NFCEITENS->q_pPIS,7,4))  +'</pPIS>'
				M->cXml += '<vPIS>'              +ltrim(str(NFCEITENS->q_vPIS,14,2)) +'</vPIS>'
				M->cXml += '</PISOutr>'
				M->cXml += '</PIS>'
				
				M->cXml += '<COFINS>'
				M->cXml += '<COFINSOutr>'
				M->cXml += '<CST>'               +NFCEITENS->s_CST                     +'</CST>'
				M->cXml += '<vBC>'               +ltrim(str(NFCEITENS->s_vBC,14,2))    +'</vBC>'
				M->cXml += '<pCOFINS>'           +ltrim(str(NFCEITENS->s_pCOFINS,7,4)) +'</pCOFINS>'
				M->cXml += '<vCOFINS>'           +ltrim(str(NFCEITENS->s_vCOFINS,14,2))+'</vCOFINS>'
				M->cXml += '</COFINSOutr>'
				M->cXml += '</COFINS>'
				M->cXml += '</imposto>'
				M->cXml += '</det>'
			endif
****************************************************************			
*			tributacao normal
****************************************************************			
			IF PRODUTOS->ICMS_REGIM = "3"			
				M->cXml += '<imposto>'
				M->cXml += '<ICMS>'
				if flag->n_xUF # mUF
					M->cXml += '<ICMS60>'
					M->cXml += '<orig>'          +NFCEITENS->ICMS_ORIGE                  +'</orig>'
					M->cXml += '<CST>60</CST>'
*					M->cXml += '<modBC>3</modBC>'
*					M->cXml += '<vBC>'+ltrim(str((NFCEITENS->i_vProd*NFCEITENS->i_qTrib)-NFCEITENS->i_vDesc,14,2))  +'</vBC>'
*					M->cXml += '<pICMS>12.00</pICMS>'
*					M->cXml += '<vICMS>'+LTRIM(str((((NFCEITENS->i_vProd*NFCEITENS->i_qTrib)-NFCEITENS->i_vDesc)*0.12),14,2))  +'</vICMS>'
*					M->cXml += '<modBCST>0</modBCST>'
*					M->cXml += '<vBCST>0.00</vBCST>'
*					M->cXml += '<pICMSST>0.00</pICMSST>'
*					M->cXml += '<vICMSST>0.00</vICMSST>'
					M->cXml += '</ICMS60>'
					M->vBC   +=((NFCEITENS->i_vProd*NFCEITENS->i_qTrib)-NFCEITENS->i_vDesc)
					M->vICMS +=(((NFCEITENS->i_vProd*NFCEITENS->i_qTrib)-NFCEITENS->i_vDesc)*0.12)

				else
					M->cXml += '<ICMS'           +ALLTRIM(NFCEITENS->ICMS_ST)            +'>'
					M->cXml += '<orig>'          +NFCEITENS->ICMS_ORIGE                  +'</orig>'
					M->cXml += '<CST>'           +ALLTRIM(NFCEITENS->ICMS_ST)            +'</CST>'
					M->cXml += '</ICMS'          +ALLTRIM(NFCEITENS->ICMS_ST)            +'>'
				endif

				M->cXml += '</ICMS>'

//				M->cXml += '<IPI>'
//				M->cXml += '<cEnq>'              +NFCEITENS->o_cEnc                  +'</cEnq>'				
//				M->cXml += '<IPITrib>'
//				M->cXml += '<CST>'               +NFCEITENS->o_CST                   +'</CST>'
//				M->cXml += '<vBC>'               +ltrim(str(NFCEITENS->o_vBC,14,2))  +'</vBC>'
//				M->cXml += '<pIPI>'              +ltrim(str(NFCEITENS->o_pIPI,7,4))  +'</pIPI>'
//				M->cXml += '<vIPI>'              +ltrim(str(NFCEITENS->o_vIPI,14,2)) +'</vIPI>'
//				M->cXml += '</IPITrib>'
//				M->cXml += '</IPI>'

				M->cXml += '<PIS>'
				M->cXml += '<PISNT>'
				M->cXml += '<CST>'               +NFCEITENS->q_CST                   +'</CST>'
*				M->cXml += '<vBC>'               +ltrim(str(NFCEITENS->o_vBC,14,2))  +'</vBC>'
*				M->cXml += '<pPIS>'              +ltrim(str(NFCEITENS->q_pPIS,7,4))  +'</pPIS>'
*				M->cXml += '<vPIS>'              +ltrim(str(NFCEITENS->q_vPIS,14,2)) +'</vPIS>'
				M->cXml += '</PISNT>'
				M->cXml += '</PIS>'
				
				M->cXml += '<COFINS>'
				M->cXml += '<COFINSNT>'
				M->cXml += '<CST>'               +NFCEITENS->s_CST                     +'</CST>'
*				M->cXml += '<vBC>'               +ltrim(str(NFCEITENS->s_vBC,14,2))    +'</vBC>'
*				M->cXml += '<pCOFINS>'           +ltrim(str(NFCEITENS->s_pCOFINS,7,4)) +'</pCOFINS>'
*				M->cXml += '<vCOFINS>'           +ltrim(str(NFCEITENS->s_vCOFINS,14,2))+'</vCOFINS>'
				M->cXml += '</COFINSNT>'
				M->cXml += '</COFINS>'
				if flag->n_xUF # mUF 
					M->cXml += '<ICMSUFDest>'
					M->cXml += '<vBCUFDest>'+ ltrim(str(NFCEITENS->i_vProd - NFCEITENS->i_vDesc )) +'</vBCUFDest>'
					M->cXml += '<pFCPUFDest>2.00</pFCPUFDest>'
					M->cXml += '<pICMSUFDest>18.00</pICMSUFDest>'
					M->cXml += '<pICMSInter>12.00</pICMSInter>'
					M->cXml += '<pICMSInterPart>60.00</pICMSInterPart>'
					M->cXml += '<vFCPUFDest>'+ ltrim(str(((NFCEITENS->i_vProd - NFCEITENS->i_vDesc )*0.02),14,2)) +'</vFCPUFDest>'
					M->cXml += '<vICMSUFDest>'+ ltrim(str((((NFCEITENS->i_vProd - NFCEITENS->i_vDesc )*0.06)*0.6),14,2))         +'</vICMSUFDest>'
					M->cXml += '<vICMSUFRemet>'+ ltrim(str((((NFCEITENS->i_vProd - NFCEITENS->i_vDesc )*0.06)*0.4),14,2))         +'</vICMSUFRemet>'
					M->cXml += '</ICMSUFDest>'
					M->vFCPUFDest     += VAL(str(((NFCEITENS->i_vProd - NFCEITENS->i_vDesc )*0.02),14,2))
					M->vICMSUFDest    += VAL(str((((NFCEITENS->i_vProd - NFCEITENS->i_vDesc )*0.06)*0.6),14,2))
					M->vICMSUFRemet   += VAL(str((((NFCEITENS->i_vProd - NFCEITENS->i_vDesc )*0.06)*0.4),14,2))

				endif

				M->cXml += '</imposto>'
				M->cXml += '</det>'				

				endif	
			DBSKIP()
		ENDD					

		
		M->cXml += '<total>'
		M->cXml += '<ICMSTot>'
*******************************************************************************
*		M->cXml += '<vBC>'+LTRIM(str(M->Vbc,14,2))+'</vBC>'                   
*		M->cXml += '<vICMS>'+LTRIM(str(M->vICMS,14,2))+'</vICMS>'
*******************************************************************************
		M->cXml += '<vBC>0.00</vBC>'                   
		M->cXml += '<vICMS>0.00</vICMS>'
		M->cXml += '<vICMSDeson>0.00</vICMSDeson>'
		M->cXml += '<vFCPUFDest>'	+ltrim(str(M->vFCPUFDest,14,2))		+'</vFCPUFDest>'
		M->cXml += '<vICMSUFDest>'	+ltrim(str(M->vICMSUFDest,14,2))	+'</vICMSUFDest>'
		M->cXml += '<vICMSUFRemet>'	+ltrim(str(M->vICMSUFRemet,14,2))	+'</vICMSUFRemet>'
		M->cXml += '<vBCST>0.00</vBCST>'
		M->cXml += '<vST>0.00</vST>'
		M->cXml += '<vProd>'                        + LTRIM(STR(NOTAFCE->w_vPROD,14,2))                   +'</vProd>'
		M->cXml += '<vFrete>0.00</vFrete>'
		M->cXml += '<vSeg>0.00</vSeg>'
		M->cXml += '<vDesc>'                        + LTRIM(STR(NOTAFCE->w_vDesc,14,2))                   +'</vDesc>'
		M->cXml += '<vII>0.00</vII>'
		M->cXml += '<vIPI>0.00</vIPI>'
		M->cXml += '<vPIS>0.00</vPIS>'
		M->cXml += '<vCOFINS>0.00</vCOFINS>'
		M->cXml += '<vOutro>0.00</vOutro>'
		M->cXml += '<vNF>'                          + LTRIM(STR(NOTAFCE->w_vNF,14,2))                   +'</vNF>'
		M->cXml += '<vTotTrib>0.00</vTotTrib>'

		M->cXml += '</ICMSTot>'
		M->cXml += '</total>'
		M->cXml += '<transp>'
		M->cXml += '<modFrete>9</modFrete>'
		M->cXml += '</transp>'
		

		
		IF PEDIDO->TIPPAG = 1 
			M->cXml += '<pag>'
			M->cXml += '<tPag>01</tPag>'
			M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
			M->cXml += '</pag>'
		ELSEIF PEDIDO->TIPPAG = 2		
			M->cXml += '<pag>'
			M->cXml += '<tPag>03</tPag>'
			M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
			M->cXml += '</pag>'		
		ELSEIF PEDIDO->TIPPAG = 3		
			M->cXml += '<pag>'
			M->cXml += '<tPag>05</tPag>'
			M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
			M->cXml += '</pag>'	
		ELSEIF PEDIDO->TIPPAG = 4		
			M->cXml += '<pag>'
			M->cXml += '<tPag>02</tPag>'
			M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
			M->cXml += '</pag>'
		ELSEIF PEDIDO->TIPPAG = 5		
			M->cXml += '<pag>'
			M->cXml += '<tPag>01</tPag>'
			M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
			M->cXml += '</pag>'
			M->cXml += '<pag>'
			M->cXml += '<tPag>03</tPag>'
			M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
			M->cXml += '</pag>'
		ELSEIF PEDIDO->TIPPAG = 6		
			M->cXml += '<pag>'
			M->cXml += '<tPag>01</tPag>'
			M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
			M->cXml += '</pag>'
			M->cXml += '<pag>'
			M->cXml += '<tPag>05</tPag>'
			M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
			M->cXml += '</pag>'
		ELSEIF PEDIDO->TIPPAG = 7		
			M->cXml += '<pag>'
			M->cXml += '<tPag>01</tPag>'
			M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
			M->cXml += '</pag>'
			M->cXml += '<pag>'
			M->cXml += '<tPag>02</tPag>'
			M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
			M->cXml += '</pag>'		
		ELSEIF PEDIDO->TIPPAG = 8		
			M->cXml += '<pag>'
			M->cXml += '<tPag>01</tPag>'
			M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
			M->cXml += '</pag>'
			M->cXml += '<pag>'
			M->cXml += '<tPag>2</tPag>'
			M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
			M->cXml += '</pag>'
		ELSEIF PEDIDO->TIPPAG = 9		
			M->cXml += '<pag>'
			M->cXml += '<tPag>02</tPag>'
			M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
			M->cXml += '</pag>'
			M->cXml += '<pag>'
			M->cXml += '<tPag>03</tPag>'
			M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
			M->cXml += '</pag>'			
		ELSEIF PEDIDO->TIPPAG = 10		
			M->cXml += '<pag>'
			M->cXml += '<tPag>02</tPag>'
			M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
			M->cXml += '</pag>'
			M->cXml += '<pag>'
			M->cXml += '<tPag>05</tPag>'
			M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
			M->cXml += '</pag>'				
		ELSEIF PEDIDO->TIPPAG = 11		
			M->cXml += '<pag>'
			M->cXml += '<tPag>02</tPag>'
			M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
			M->cXml += '</pag>'
			M->cXml += '<pag>'
			M->cXml += '<tPag>02</tPag>'
			M->cXml += '<vPag>'+ltrim(str((PEDIDO->TOTNOT-PEDIDO->TOT001),14,2))+'</vPag>'
			M->cXml += '</pag>'				
		ELSEIF PEDIDO->TIPPAG = 12		
			M->cXml += '<pag>'
			M->cXml += '<tPag>02</tPag>'
			M->cXml += '<vPag>'+ltrim(str(PEDIDO->TOT001,14,2))+'</vPag>'
			M->cXml += '</pag>'
		ENDIF
		
		M->cXml += '<infAdic>'
*		M->cXml += '<infAdFisco>INFORMACOES ADICIONAIS DE INTERESSE DO FISCO</infAdFisco>'
 		M->cXml += '<infCpl>'+rtrim(NOTAFCE->z_infCpl)+'</infCpl>'
 		M->cXml += '</infAdic>'
		M->cXml += '</infNFe>'
		M->cXml += '</NFe>'
*		M->cXml += '</nfeProc>'		
		NOTAFCE->w_vPROD:=NOTAFCE->w_vPROD
		NOTAFCE->w_vNF  :=NOTAFCE->w_vNF

***************************************************************************************
* MODULO DE ASSINATURA , TRANSMISSAO, AUTORIZACAO, RETORNO E IMPRESSAO
***************************************************************************************
		ThisNFE:oProgressbar1:Set(,60)
		ThisNFE:oLabel5:SetText("Assinando NFC-e e gerando QR-CODE                                                   ")
********* ASSINATURA VIA SEFAZCLASS **********************************************************************************************************

		SELE CERTIFICADO
		IF !DBSEEK(rtrim(hwg_GetComputerName()))
			hwg_MsgInfo("Computador sem o CERTIFICADO DIGITAL instalado"+ HB_EOL()+"A Operação não poderá ser efetuada")
			SELE NOTAFCE
			RETURN NIL
		endif
		SELE NOTAFCE

		cTxtXml:=M->cXml
	
		oSefaz           	:= SefazClass():New()
		oSefaz:cUF       	:= FLAG->n_xUF 
		oSefaz:cAmbiente 	:= FLAG->n_tpAmb		
		oSefaz:cCertificado := TRIM(CERTIFICADO->NOMCERT)
		oSefaz:cIdToken		:= "000001"
		oSefaz:cCSC			:= TRIM(FLAG->cCertifica)
		oSefaz:cNFCE        := "S"		
//		cXmlRetorno := oSefaz:NfeStatusServico(  )  
**********************************************************************************************************************************************	
		ThisNFE:oProgressbar1:Set(,80)
		ThisNFE:oLabel5:SetText("Aguardando Retorno                                                ")

//		oSefaz:cXmlDocumento:=cTxtXml
//		oSefaz:AssinaXml(  )
//		oSefaz:GeraQRCode( oSefaz:cXmlDocumento )
//		oSefaz:NFEloteenvia( oSefaz:cXmlDocumento )
		
		oSefaz:NFEloteenvia( cTxtXml )

		hb_MemoWrit( cPrefixo + "_1_documento.xml", oSefaz:cXmlDocumento )
		hb_MemoWrit( cPrefixo + "_2_Envio.xml", oSefaz:cXmlEnvio )
		hb_MemoWrit( cPrefixo + "_3_Soap.xml", oSefaz:cXmlSoap  )
		hb_MemoWrit( cPrefixo + "_4_Retorno.xml", oSefaz:cXmlRetorno  )
		hb_MemoWrit( cPrefixo + "_5_Protocolo.xml", oSefaz:cXmlProtocolo   )
		hb_MemoWrit( cPrefixo + "_6_Recibo.xml", oSefaz:cXmlRecibo  )
		hb_MemoWrit( cPrefixo + "_7_Autorizado.xml", oSefaz:cXmlAutorizado )

//		oSpedDa := hbNfeDaGeral():New()
//		oSpedDa:ToPdf( oSefaz:cXmlDocumento, cPrefixo + "_8_AutorizadoPDF.PDF" )
//		HB_RUN( 'Start sumatra\sumatrapdf.exe ' + cPrefixo + "_8_AutorizadoPDF.PDF" )		
		
		
		IF ! oSefaz:cStatus $ "100,101,150,301,302"
			ThisNFE:oLabel5:SetText(oSefaz:cMotivo)
			ThisNFE:oOwnerbutton4:DISABLE( )
		ELSE
			ThisNFE:oLabel5:SetText(oSefaz:cStatus + oSefaz:cMotivo)
			SELE NOTAFCE
			IF RLOCK()
				NOTAFCE->FL_SITUAC := XmlNode(oSefaz:cXmlRetorno, "cStat")
				NOTAFCE->FL_MOTIVO := XmlNode(oSefaz:cXmlRetorno, "xMotivo")
				DBUNLOCK()
			ENDIF
			ThisNFE:oProgressbar1:Set(,90)
			ThisNFE:oLabel5:SetText("Gerando DANFE em PDF                                              ")	
		   oSpedDa := hbNfeDaGeral():New()
//               oDanfe:cLogoFile := curdrive()+":\"+CURDIR()+"\clientelogo.jpg"
		   oSpedDa:ToPdf( oSefaz:cXmlAutorizado, cPrefixo + "_8_AutorizadoPDF.PDF" )
			ThisNFE:oProgressbar1:Set(,100)
			ThisNFE:oLabel5:SetText("NFC-e Concluida com sucesso                                        ")
			ThisNFE:oOwnerbutton4:DISABLE( )
			
			If File( hb_Dirbase()+'sumatra\sumatrapdf.exe' ) 
				HB_RUN( 'Start sumatra\sumatrapdf.exe ' + cPrefixo + "_8_AutorizadoPDF.PDF" )
			Else  // Executa a visualizacao padrao para PDF senao tiver o Sumatra
				HB_RUN( 'START /MAX '+cPrefixo + "_8_AutorizadoPDF.PDF") 
			EndIf
		ENDIF

    SELE ITENS	
	DBCLOSEAREA()
    SELE NFCEITENS	
	DBCLOSEAREA()
//	dbcloseall()
return nil

*************************************
STATIC FUNCTION MONTA_CHAVE( b_mod )
*************************************

M->mod			:=FLAG->n_modNFC
M->serie		:=FLAG->n_serieNFC
M->nNF			:=FLAG->n_nNFC

M->cUF			:=FLAG->n_cUF
M->dhEmi		:=substr(strzero(YEAR(M->DAT_HOJE),4,0),3,2)+strzero(MONTH(M->DAT_HOJE),2,0)
M->CNPJ			:=FLAG->n_CNPJ

M->tpEmis		:='1'
M->cNF			:=FLAG->n_cNF

M->cDV 		:=CalculaDigito( M->cUF+M->dhEmi+M->CNPJ+M->mod+M->serie+M->nNF+M->tpEmis+M->cNF, "11" )
M->chaveNFe := M->cUF+M->dhEmi+M->CNPJ+M->mod+M->serie+M->nNF+M->tpEmis+M->cNF+M->cDV

RETURN M->cUF+M->dhEmi+M->CNPJ+M->mod+M->serie+M->nNF+M->tpEmis+M->cNF+M->cDV



os arquivo que uso

Código: Selecionar todos

**********************************
FUNCTION ABRE_NFCE()
**********************************
IF FILE("DATABASE\NFCEDADOS.DBF")
  USE DATABASE\NFCEDADOS NEW SHARED ALIAS NOTAFCE
ELSE
	***IDENTIFICACAO DA NOTA FISCAL ELETRONIC
	BANCO:= {}
	AADD(BANCO, {"a_versao","C",4,0})  						
	AADD(BANCO, {"a_Id","C",47,0})

	AADD(BANCO, {"b_cUF","C",02,0})
	AADD(BANCO, {"b_cNF","C",08,0})
	AADD(BANCO, {"b_natOp","C",60,0})
	AADD(BANCO, {"b_indPag","C",01,0})
	AADD(BANCO, {"b_mod","C",02,0})
	AADD(BANCO, {"b_serie","C",03,0})
	AADD(BANCO, {"b_nNF","C",09,0})
	AADD(BANCO, {"b_dhEmi","C",25,0})
	AADD(BANCO, {"b_dhSaiEnt","C",25,0})
	AADD(BANCO, {"b_tpNF","C",01,0})
	AADD(BANCO, {"b_idDest","C",01,0})
	AADD(BANCO, {"b_cMunFG","C",07,0})
	AADD(BANCO, {"b_tpImp","C",01,0})
	AADD(BANCO, {"b_tpEmis","C",01,0})
	AADD(BANCO, {"b_cDV","C",01,0})
	AADD(BANCO, {"b_tpAmb","C",01,0}) 
	AADD(BANCO, {"b_finNFe","C",01,0})   
	AADD(BANCO, {"b_indFinal","C",01,0})  
	AADD(BANCO, {"b_indPres","C",01,0})  
	AADD(BANCO, {"b_procEmi","C",01,0}) 
	AADD(BANCO, {"b_verProc","C",20,0})
	AADD(BANCO, {"b_dhCont","C",25,0})
	AADD(BANCO, {"b_xJust","C",256,0})
	
	***IDENTIFICACAO DO EMITENTE DA NF-e
	AADD(BANCO, {"c_CNPJ","C",14,0})
	AADD(BANCO, {"c_xNome","C",60,0})
	AADD(BANCO, {"c_xFant","C",60,0})  
	AADD(BANCO, {"c_xLgr","C",60,0})  
	AADD(BANCO, {"c_nro","C",60,0})    
	AADD(BANCO, {"c_xCpl","C",60,0})
	AADD(BANCO, {"c_xBairro","C",60,0})  
	AADD(BANCO, {"c_cMun","C",07,0}) 
	AADD(BANCO, {"c_xMun","C",60,0})
	AADD(BANCO, {"c_UF","C",02,0})  
	AADD(BANCO, {"c_CEP","C",08,0})
	AADD(BANCO, {"c_cPais","C",04,0})  
	AADD(BANCO, {"c_xPais","C",60,0})  
	AADD(BANCO, {"c_fone","C",14,0})  
	AADD(BANCO, {"c_IE","C",14,0})
	AADD(BANCO, {"c_IEST","C",14,0})
	AADD(BANCO, {"c_IM","C",15,0})
	AADD(BANCO, {"c_CNAE","C",07,0})  
	AADD(BANCO, {"c_CRT","C",01,0})   

	***IDENTIFICACAO DO DESTINATARIO DA NF-e
	AADD(BANCO, {"e_CNPJ","C",14,0})
	AADD(BANCO, {"e_IdEstr","C",20,0})
	AADD(BANCO, {"e_xNome","C",60,0})
	AADD(BANCO, {"e_xFant","C",60,0})  
	AADD(BANCO, {"e_xLgr","C",60,0})  
	AADD(BANCO, {"e_nro","C",60,0})    
	AADD(BANCO, {"e_xCpl","C",60,0})
	AADD(BANCO, {"e_xBairr","C",60,0})  
	AADD(BANCO, {"e_cMun","C",07,0}) 
	AADD(BANCO, {"e_xMun","C",60,0})
	AADD(BANCO, {"e_UF","C",02,0})  
	AADD(BANCO, {"e_CEP","C",08,0})
	AADD(BANCO, {"e_cPais","C",04,0})  
	AADD(BANCO, {"e_xPais","C",60,0})  
	AADD(BANCO, {"e_fone","C",14,0})  
	AADD(BANCO, {"e_indIE","C",01,0})   
	AADD(BANCO, {"e_IE","C",14,0})
	AADD(BANCO, {"e_ISUF","C",09,0})  
	AADD(BANCO, {"e_IM","C",15,0})
	AADD(BANCO, {"e_eMAIL","C",60,0})  

	***IDENTIFICACAO DO LOCAL DE RETIRADA
	
	AADD(BANCO, {"f_CNPJ","C",14,0})
	AADD(BANCO, {"f_xLgr","C",60,0})  
	AADD(BANCO, {"f_nro","C",60,0})    
	AADD(BANCO, {"f_xCpl","C",60,0})
	AADD(BANCO, {"f_xBairr","C",60,0})  
	AADD(BANCO, {"f_cMun","C",07,0}) 
	AADD(BANCO, {"f_xMun","C",60,0})
	AADD(BANCO, {"f_UF","C",02,0})  

	***IDENTIFICACAO DO LOCAL DE ENTREGA
	
	AADD(BANCO, {"g_CNPJ","C",14,0})
	AADD(BANCO, {"g_xLgr","C",60,0})  
	AADD(BANCO, {"g_nro","C",60,0})    
	AADD(BANCO, {"g_xCpl","C",60,0})
	AADD(BANCO, {"g_xBairr","C",60,0})  
	AADD(BANCO, {"g_cMun","C",07,0}) 
	AADD(BANCO, {"g_xMun","C",60,0})
	AADD(BANCO, {"g_UF","C",02,0})	

	*** TOTAL DA NF-e
	AADD(BANCO, {"w_vBC","N",14,2})  
	AADD(BANCO, {"w_vICMS","N",14,2}) 
	AADD(BANCO, {"w_vICMSD","N",14,2}) 
	AADD(BANCO, {"w_vBCST","N",14,2}) 
	AADD(BANCO, {"w_vST","N",14,2})
	AADD(BANCO, {"w_vPROD","N",14,2})
	AADD(BANCO, {"w_vFrete","N",14,2})
	AADD(BANCO, {"w_vSeg","N",14,2})
	AADD(BANCO, {"w_vDesc","N",14,2})
	AADD(BANCO, {"w_vII","N",14,2})
	AADD(BANCO, {"w_vIPI","N",14,2})
	AADD(BANCO, {"w_vPIS","N",14,2})
	AADD(BANCO, {"w_vCOFINS","N",14,2})
	AADD(BANCO, {"w_vOutro","N",14,2})
	AADD(BANCO, {"w_vNF","N",14,2})
	AADD(BANCO, {"w_vTotTrib","N",14,2})

	*** FORMA DE PAGAMENTO

	AADD(BANCO, {"ya_tPag","C",02,0})  && 01=dinheiro 02=cheque 03=c.cred 04=c.deb 05=cred loja 99=outros
	AADD(BANCO, {"ya_vPag","N",14,2})
	AADD(BANCO, {"ya_CNPJ","C",14,0})
	AADD(BANCO, {"ya_Band","C",02,0})  && 01=visa 02=master 03=amex 04=sorocred 99=outros
	AADD(BANCO, {"ya_Aut","C",20,0})

	*** INFORMACOES ADICIONAIS DA NFe

	AADD(BANCO, {"z_infAdFis","C",1000,0})
	AADD(BANCO, {"z_infCpl","C",1000,0})

	*** INFORMACOES DE COMPRAS

	AADD(BANCO, {"zb_xNEmp","C",22,0})		&& identificacao da nota de empenho (compras publicas)
	AADD(BANCO, {"zb_xPed","C",60,0})		&& informar pedido
	AADD(BANCO, {"zb_xCont","C",60,0})		&& informar o contrato de compra

	*** FLAGS DE CONTROLE

	AADD(BANCO, {"FL_VALIDA","L",01,0})		&& testa se a nota ja foi validada
	AADD(BANCO, {"FL_ASSINA","L",01,0})		&& testa se a nota ja foi assinada
	AADD(BANCO, {"FL_TRANSM","L",01,0})		&& testa se a nota ja foi transmitida
	AADD(BANCO, {"FL_IMPRIM","L",01,0})		&& testa se a nota ja foi impressa
	AADD(BANCO, {"FL_EXPORT","L",01,0})		&& testa se a nota ja foi exportada
	AADD(BANCO, {"FL_SITUAC","C",03,0})		&& situacao da NFe
	AADD(BANCO, {"FL_MOTIVO","C",60,0})		&& Motivo da NFe	
	***IDENTIFICACAO DA NOTA DE PEDIDO
	
	AADD(BANCO, {"NUMNOT","C",06,0})

	***IDENTIFICACAO DO OPERADOR E DA MAQUINA
	
	AADD(BANCO, {"OPERADOR","C",20,0})
	AADD(BANCO, {"MAQUINA","C",20,0})
	
	DBCREATE("DATABASE\NFCEDADOS",BANCO)
	USE DATABASE\NFCEDADOS NEW SHARED ALIAS NOTAFCE
END
IF NETERR()

   RETURN .F.
END
IF FILE("DATABASE\NFCEDADOS.001")
   SET INDEX TO DATABASE\NFCEDADOS.001
ELSE
  USE DATABASE\NFCEDADOS EXCLUSIVE
  IF NETERR()

      RETURN .F.
  END
  PACK
 
  INDEX ON NUMNOT                              		TAG NFCE01 TO DATABASE\NFCEDADOS.001
 
  INDEX ON b_mod+b_serie+b_nNF   				    TAG NFCE02 TO DATABASE\NFCEDADOS.001  
 
  INDEX ON a_Id                                     TAG NFCE03 TO DATABASE\NFCEDADOS.001  
 
  INDEX ON e_xNome+b_dhEmi                     		TAG NFCE04 TO DATABASE\NFCEDADOS.001  
  
  DBCLOSEAREA()
  USE DATABASE\NFCEDADOS NEW SHARED ALIAS NOTAFCE
  IF NETERR()

     RETURN .F.
  END
  SET INDEX TO DATABASE\NFCEDADOS.001
END     
RETURN .T.


**********************************
FUNCTION ABRE_NFCEITEM()
**********************************
IF FILE("C:\TEMP\NFCEITENS.DBF")
  USE C:\TEMP\NFCEITENS NEW SHARED ALIAS NFCEITENS
ELSE
	***PRODUTOS E SERVICOS DA NFC-e
	
	BANCO:= {}
	AADD(BANCO, {"NUMNOT","C",06,0})
	
	AADD(BANCO, {"i_versao","C",4,0})  						
	AADD(BANCO, {"i_Id","C",47,0})
	AADD(BANCO, {"i_nItem","C",03,0})   && varia entre 001-990
	AADD(BANCO, {"i_cProd","C",60,0})
	AADD(BANCO, {"i_cEAN","C",14,0})
	AADD(BANCO, {"i_xProd","C",120,0})
	AADD(BANCO, {"i_NCM","C",08,0})
	AADD(BANCO, {"i_NVE","C",08,0})
	AADD(BANCO, {"i_EXTIPI","C",03,0})
	AADD(BANCO, {"i_CFOP","C",04,0})
	AADD(BANCO, {"i_uCom","C",06,0})
	AADD(BANCO, {"i_qCom","N",14,4})
	AADD(BANCO, {"i_vUnCom","N",14,4})
	AADD(BANCO, {"i_vProd","N",14,2})
	AADD(BANCO, {"i_cEANTrib","C",14,0})
	AADD(BANCO, {"i_uTrib","C",06,0})
	AADD(BANCO, {"i_qTrib","N",14,4})
	AADD(BANCO, {"i_vUnTrib","N",14,4})
	AADD(BANCO, {"i_vFrete","N",14,2})
	AADD(BANCO, {"i_vSeg","N",14,2})
	AADD(BANCO, {"i_vDesc","N",14,2})
	AADD(BANCO, {"i_vOutro","N",14,2})
	AADD(BANCO, {"i_indTot","N",01,0})

	AADD(BANCO, {"i_xPed","C",15,0})
	AADD(BANCO, {"i_nItemPed","C",6,0})
	
	AADD(BANCO, {"m_vTotTrib","N",14,2})
	AADD(BANCO, {"m_vTotFed","N",14,2})
	AADD(BANCO, {"m_vTotEst","N",14,2})
	AADD(BANCO, {"m_vTotMun","N",14,2})	
	
	AADD(BANCO, {"CEST","C",08,0}) 	
	
	
	***GRUPO DE TRIBUTAÇAO SIMPLES NACIONAL

	AADD(BANCO, {"ICMS_REGIM","C",01,0}) 	&&  1-simples naciona	
	AADD(BANCO, {"ICMS_ST","C",03,0})		&& 101/102/103/300/400 CODIGO DE SITUACAO DE OPERACAO
	AADD(BANCO, {"ICMS_ORIGE","C",01,0})	

	
	
*	***GRUPO DE TRIBUTAÇAO NORMAL 00/10/20/30/40/41/50/51/60/70/90
*	
*	AADD(BANCO, {"n_origTN","C",01,0})		&& 3 TRIBUTACAO NORMAL
*	AADD(BANCO, {"n_CST","C",02,0})			&& 00=tributada integralmente
*	AADD(BANCO, {"n_modBC","N",01,0})		&& 0=margem valor agregado (%)
*	AADD(BANCO, {"n_vBC","N",14,4})	        && valor da base de calculo
*	AADD(BANCO, {"n_pICMS","N",03,4})		&& aliquota do imposto
*	AADD(BANCO, {"n_vICMS","N",14,4})

	***GRUPO DE TRIBUTAÇAO IPI
	
	AADD(BANCO, {"o_CST","C",02,0})         && situacao tributaria
	AADD(BANCO, {"o_clEnq","C",05,0})		&& classe do enquadramento
	AADD(BANCO, {"o_CNPJProd","C",14,0})	&& cnpj do produtor da mercdoria
	AADD(BANCO, {"o_cSelo","C",60,0})
	AADD(BANCO, {"o_qSelo","C",12,0})
	AADD(BANCO, {"o_cEnc","C",03,0})        && informar 999 enquanto tabela nao for criada
	AADD(BANCO, {"o_vBC","N",14,4})	
	AADD(BANCO, {"o_pIPI","N",07,4})		&& aliquota do imposto
	AADD(BANCO, {"o_qUnid","N",14,4})
	AADD(BANCO, {"o_vUnid","N",14,4})
	AADD(BANCO, {"o_vIPI","N",14,4})
	
	***GRUPO DE TRIBUTACAO PIS
	
	AADD(BANCO, {"q_CST","C",02,0})			&& PIS 99 outras operacoes
	AADD(BANCO, {"q_vBC","N",14,4})			&& valor da base de calculo
	AADD(BANCO, {"q_pPIS","N",07,4})		&& aliquota em percentual
	AADD(BANCO, {"q_vAlqProd","N",14,4})	&& aliquota em reais
	AADD(BANCO, {"q_PISQtde","N",14,2})     && quantidade vendida
	AADD(BANCO, {"q_vPIS","N",14,2})		&& aliquota em percentual	

	***GRUPO DE TRIBUTACAO COFINS
	
	AADD(BANCO, {"s_CST","C",02,0})			&& COFINS 99 outras operacoes
	AADD(BANCO, {"s_vBC","N",14,4})			&& valor da base de calculo
	AADD(BANCO, {"s_pCOFINS","N",07,4})		&& aliquota em percentual
	AADD(BANCO, {"s_vAlqProd","N",14,4})	&& aliquota em reais
	AADD(BANCO, {"s_COFSQtde","N",14,2})    && quantidade vendida
	AADD(BANCO, {"s_vCOFINS","N",14,2})		&& aliquota em percentual	
	
	
	
	DBCREATE("C:\TEMP\NFCEITENS",BANCO)
	USE C:\TEMP\NFCEITENS NEW SHARED ALIAS NFCEITENS
END
IF NETERR()

   RETURN .F.
END
IF FILE("C:\TEMP\NFCEITENS.001")
   SET INDEX TO C:\TEMP\NFCEITENS.001
ELSE
  USE C:\TEMP\NFCEITENS EXCLUSIVE
  IF NETERR()

      RETURN .F.
  END
  PACK

  INDEX ON NUMNOT+i_nItem               TAG NFCEI01 TO C:\TEMP\NFCEITENS.001

  INDEX ON i_Id+i_nItem           		TAG NFCEI02 TO C:\TEMP\NFCEITENS.001
 
  DBCLOSEAREA()
  USE C:\TEMP\NFCEITENS NEW SHARED ALIAS NFCEITENS
  IF NETERR()

     RETURN .F.
  END
  SET INDEX TO C:\TEMP\NFCEITENS.001
END     
RETURN .T.
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Modelo NFCe Acbr

Mensagem por Fernando queiroz »

Vou comecar a rotina de entrada de notas, quem tiver algo ja quase pronto manda ai para dar uma ajuda e facilitar o desenvolvimento :)) :)) :)) :))
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Modelo NFCe Acbr

Mensagem por JoséQuintas »

Dependendo do caso, precisa melhorar a classe, pra pegar mais informações do que pega hoje.

Mas basicamente é:

oDocumento := XmlToDoc( cXml )

a partir daí, tá tudo em oDocumento.

oDocumento:Emitente:Nome
oDocumento:Emitente:CNPJ
oDocumento:Destinatario:Nome
oDocumento:Destinatario:Cnpj

É só decidir o que fazer com as informações que estão em oDocumento ou o nome que quiser.

Fernando:
Não aconselho o uso de M->cXml
Muito trabalhoso, e desnecessário.
Mais interessante declarar LOCAL cXml ou MEMVAR cXml
E usar -> só pra DBFs mesmo, pra indicar alias.
E se possível, usar o alias mesmo, e não a letra.
cliente->Codigo, cliente->Nome.

Usar letra acaba dando trabalho em pesquisar a que se refere aquela letra, além de obrigar a usar o arquivo exatamente naquela área.
Por nome/alias, tanto faz em que ordem abre os arquivos.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Modelo NFCe Acbr

Mensagem por Nascimento »

Rubens Disse:
Tenho isso pronto em HMGs... se quiser coloco a disposição...
Rubens
Querido vc poderia disponibilizar ? , Agradeço desde Já
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Responder