COMO CANCELAR UMA NFC-e com a SEFAZCLASS??

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

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

COMO CANCELAR UMA NFC-e com a SEFAZCLASS??

Mensagem por Fernando queiroz »

Estou precisando cancelar uma NFC-e usando a SEFAZCLASS mas nao esta funcionando

tentei pela mesma rotina de cancelamento da NF-e mas nao fez nada, tem alguma rotina especifica para isso???

Código: Selecionar todos

********************************************************
STATIC FUNCTION NFCECANCELA(  )
********************************************************
		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 NOTAFE
			RETURN NIL
		endif
		SELE NOTAFCE
		
		cPrefixo := hb_Dirbase()+"xml\retorno\NFCe" + substr(NOTAFCE->a_Id,26,12)			

		xJust:=space(90)      
		oSefaz     := SefazClass():New()
		oSefaz:cCertificado := TRIM(CERTIFICADO->NOMCERT)
//		cXmlRetorno := oSefaz:NFeConsultaProtocolo( substr(NOTAFCE->a_Id,4,44), ALLTRIM(oSefaz:cCertificado) , FLAG->n_tpAmb )
//		IF XmlNode(cXmlRetorno, "cStat") != "100"
//			hwg_MsgInfo("NFC-e NAO PODE SER CANCELADA"+ HB_EOL()+ HB_EOL() +;
//				              "MOTIVO: " + XmlNode(cXmlRetorno, "xMotivo")+ HB_EOL() +;
//				              "STATUS: " + XmlNode(cXmlRetorno, "cStat")+ HB_EOL() + HB_EOL() , "Cancela NFC-e - " + substr(NOTAFCE->a_Id,29,9) ) 
//		ELSE
			IF PERG( "DESEJA CANCELAR A NFC-e " + substr(NOTAFCE->a_Id,29,9) + " ?" ) = "S"	
				cXmlRetorno:=MemoRead(cPrefixo + "_7_Autorizado.xml")
				xJust:=space(120)
				xJust:=JUSTIFICANFCE(xJust)                                      
				IF xJust = "cancela"
					RETURN NIL
				endif
				if xJust != space(20)
					oSefaz     := SefazClass():New()
					hwg_MsgInfo( substr(NOTAFCE->a_Id,4,44)+ HB_EOL() + XmlNode(cXmlRetorno, "nProt")+ HB_EOL() +RTRIM(xJust)+ HB_EOL() +TRIM(CERTIFICADO->NOMCERT))
					
					
					
					cXmlRetorno := oSefaz:NFeEventoCancela( substr(NOTAFCE->a_Id,4,44), 1, val(XmlNode(cXmlRetorno, "nProt")), RTRIM(xJust), TRIM(CERTIFICADO->NOMCERT), FLAG->n_tpAmb )		
					hb_MemoWrit( cPrefixo + "_9_Cancelamento.xml", cXmlRetorno )
					cXmlRetorno := XmlNode( cXmlRetorno, "retEvento" )
					if XmlNode(cXmlRetorno, "cStat") == "135"		
						hwg_MsgInfo("NFC-e SOLICITACAO DE CANCELAMENTO EFETUADA COM SUCESSO"+ HB_EOL()+ HB_EOL() +;
										  "MOTIVO: " + XmlNode(cXmlRetorno, "xMotivo")+ HB_EOL() +;
										  "STATUS: " + XmlNode(cXmlRetorno, "cStat")+ HB_EOL() + HB_EOL() , "Cancela NFC-e - " + substr(NOTAFCE->a_Id,29,9) ) 
					else
						hwg_MsgInfo("NFC-e SOLICITACAO DE CANCELAMENTO RECUSADA"+ HB_EOL()+ HB_EOL() +;
										  "MOTIVO: " + XmlNode(cXmlRetorno, "xMotivo")+ HB_EOL() +;
										  "STATUS: " + XmlNode(cXmlRetorno, "cStat")+ HB_EOL() + HB_EOL() , "Cancela NFC-e - " + substr(NOTAFCE->a_Id,29,9) )						
					endif
				endif
			endif
//		ENDIF
RETURN NIL

**********************************************************************************************************************
STATIC FUNCTION JUSTIFICANFCE(cJust)
**********************************************************************************************************************
  LOCAL oDlg,  oButton1, oButton2, oJust, oLabel1

  INIT DIALOG oDlg TITLE "INFORME A JUSTIFICATIVA PARA CANCELAMENTO DA NFC-E " + substr(NOTAFCE->a_Id,29,9)    AT 0, 0 SIZE 751,136 NOEXIT  ;
     STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER 
    Thisform := oDlg

   @ 546,80 BUTTON oButton1 CAPTION "Ok"   SIZE 90,30 ;
        STYLE BS_CENTER +WS_TABSTOP ;
        ON CLICK {|| cJust:=UPPER(cJust),oDlg:close() }
   @ 649,80 BUTTON oButton2 CAPTION "Cancelar"   SIZE 90,30 ;
        STYLE BS_CENTER +WS_TABSTOP  ;
        ON CLICK {|| cJust:="cancela",oDlg:close() }
   @ 97,27 GET oJust VAR cJust SIZE 646,24  STYLE ES_AUTOHSCROLL  MAXLENGTH 120  
   @ 7,29 SAY oLabel1 CAPTION "Justificativa:"  SIZE 85,21  

   ACTIVATE DIALOG oDlg 


RETURN cJust
:% :% :% :% :% :% :% :%
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

COMO CANCELAR UMA NFC-e com a SEFAZCLASS??

Mensagem por JoséQuintas »

Pra NFCe é necessário Sefaz:cNFCe := "S"
Essa é a forma de diferenciar webservice de NFE e NFCE.

Para alguns eventos dá pra pegar da chave de acesso, o modelo 65.
Com base nisso, depois vou melhorar a classe pra ela pegar automático aonde possível - cancelamento, protocolo, carta, etc.
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/
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

COMO CANCELAR UMA NFC-e com a SEFAZCLASS??

Mensagem por Fernando queiroz »

quintas baixei as atualizações da SEFAZCLASS e gerei novamente as lib recompilei e funcionou , acho que o que eu tinha estava desatualizado , mas no cancelamento
ocorreu algo engraçado

NFC-e 2018-03-06T15:01:09-05:00
CANCELAMENTO 2018-03-06T15:27:09-05:00

E ESTA DANDO ERRO 577: A data do evento não pode ser menor que a data de emissão da NF-e

:% :% :% :% :%

peguei uma nota emitida a mais horas e cancelou normalmente, vai entender
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

COMO CANCELAR UMA NFC-e com a SEFAZCLASS??

Mensagem por JoséQuintas »

Alguma chance da data/hora de autorização ser acima da data/hora que está indicando no evento?

Me veio na cabeça uma coisa:
E o webservice que atende várias UFs?
Qual será o fuso horário? da UF que processa ou da UF do documento?
E será que considera isso pra tudo, ou só pra determinadas coisas?

Voltando à Sefaz:
Na alteração atual, coloquei detecção de NFE/NFCE no cancelamento.
Pode ser o que fez diferença aí.
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/
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

COMO CANCELAR UMA NFC-e com a SEFAZCLASS??

Mensagem por Fernando queiroz »

Quntas descobri a coisa do horario, o Webserver trabalha com o horario local como o Acre esta a 2:00 horas do Rio Grande do Sul ele so cancela apos duas horas da emissão da nota,
:(Neg :(Neg :(Neg :(Neg :(Neg :(Neg :(Neg
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Responder