Ir para conteúdo
  • Cadastre-se

dev botao

Desenvolvimento fluxo de comando Monitor


Ver Solução Respondido por José M. S. Junior,
  • Este tópico foi criado há 2159 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Bom dia. Juliomar,

Emitir Nota Fiscal Eletrônica:

Informo os comandos abaixo, há necessidade:

{

NFE.Ativo 

NFe.CertificadoDataVencimento

NFe.SetAmbiente(nNumAmbiente) 

NFe.SetFormaEmissao(nFormaEmissao)

NFe.SetVersaoDF(nVersao)

NFe.SetModeloDF(nModeloDF)

}

Ou enviar direto o comando para monitor que identifica através dos paramentos os comandos acima ?

{

NFe.CriarEnviarNFe(cIniNFe,nLote,[bImprimeDANFE],[bSincrono],[cImpressora],[bMostrarPreview],[nNumCopias], [bImprimirPDF]) 

//  STATUS=100 / STATUS=302 // ATUALIZA BD

NFE.ImprimirDanfe(cArqXML,[cImpressora],[nNumCopias],[cProtocolo],[bMostrarPreview],[cMarcaDagua],[bViaConsumidor],[bSimplificado])

}

ou

{

// STATUS=105 / STATUS=656 // FAZER TRATAMENTO (EM PROCESSAMENTO)

NFE.ConsultarNFe( cArqXML )

//  STATUS=100 / STATUS=302 // ATUALIZA  BD

NFE.ImprimirDanfe(cArqXML,[cImpressora],[nNumCopias],[cProtocolo],[bMostrarPreview],[cMarcaDagua],[bViaConsumidor],[bSimplificado])

}

ou

{

// STATUS=204 / STATUS=539 // FAZER TRATAMENTO (DUPLICIDADE)

NFE.ConsultarNFe( cArqXML )

//  STATUS=100 / STATUS=302 // ATUALIZA  BD

NFE.ImprimirDanfe(cArqXML,[cImpressora],[nNumCopias],[cProtocolo],[bMostrarPreview],[cMarcaDagua],[bViaConsumidor],[bSimplificado])

}

Está correto o fluxo de envio dos comando acima ou existe uma outra forma correta para proceder?

Editado por Marcos postweb
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa tarde!
@Marcos postweb,  a primeira parte  que vai do NFE.Ativo até o NFe.SetModeloDF(nModeloDF) está correto, porém vc não precisa ficar setando isto toda vez que for emitir uma NFe. Faça isto ao entrar no  módulo de emissão e depois disto, apenas quando mudar a opção. Exemplo passar para modelo 65. 

Ao enviar a nota usando o comando NFe.CriarEnviarNFe() vc já recebe um resultado da operação.  Percebi que logo após este comando vc está usando o comando NFE.ConsultarNFe( cArqXML ).  Esta opção esta errada.  Você deve consultar o retorno do comando NFe.CriarEnvairNFE().

Dê uma estudada neste comando que você conseguirá tratar o que precisa, com o retorno do comando.  Inclusive você pode ter problema com a SEFAZ se após emitir a nota, você fica enviando outro comando para consultar a nota, pois isto caracteriza "consumo indevido", pois vc já tem um retorno após enviar, sendo desnecessário uma consulta. 

  • Curtir 1


logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde!

Obrigado pelo pronto atendimento.

Fluxo correto:

NFE.Ativo  -> verificar se monitor ativo na memoria (OK)

NFe.CertificadoDataVencimento -> verificar certificado data vencimento(OK)

NFe.SetAmbiente(nNumAmbiente)  -> 1/2 (trocar caso precise)

NFe.SetFormaEmissao(nFormaEmissao) -> 1/2/3/4/5/6/7/8/9 (trocar caso precise)

NFe.SetVersaoDF(nVersao) -> versão 4.00  (trocar caso precise)

NFe.SetModeloDF(nModeloDF) -> 55/65 (caso precise)

NFe.CriarEnviarNFe(cIniNFe,nLote,[bImprimeDANFE],[bSincrono],[cImpressora],[bMostrarPreview],[nNumCopias], [bImprimirPDF]) 

//  TRATAMENTO RETORNO MONITOR STATUS=100 / STATUS=302 // ATUALIZA BD (AUTORIZADO/DENEGADO)

-> NFE.ImprimirDanfe(cArqXML,[cImpressora],[nNumCopias],[cProtocolo],[bMostrarPreview],[cMarcaDagua],[bViaConsumidor],[bSimplificado])

// NO  CASO DE REJEIÇÃO:

// TRATAMENTO RETORNO MONITOR STATUS=105 / STATUS=656 // FAZER TRATAMENTO (EM PROCESSAMENTO)

// ou

// TRATAMENTO RETORNO MONITOR STATUS=204 / STATUS=539 // FAZER TRATAMENTO (DUPLICIDADE)

-> NFE.ConsultarNFe( cArqXML )

// TRATAMENTO RETORNO MONITOR STATUS (AUTORIZAÇÃO/DENEGADO/PROCESSAMENTO/DUPLICIDADE/REJEIÇÕES)

Está correto agora o fluxo de envio da nfe com tratamento de algumas rejeições?

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Correto. 
Porém este último NFe.ConsultarNFe(cArqXML)  (embora nestas situações seja permitido, pois vc já eliminou a consulta desnecessária após o envio e isto já ajuda bastante o teu sistema.)  eu acredito que não seja necessário, pois o retorno do enviar já deve te trazer a informação de NF duplicada e a informação da chave que consta lá no caso do status 539.  Se não me engano isto já consta no retorno do comando enviar se tiver estas rejeições. 

 


logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia!

O tópico o qual foi encerrado, refere-se agora ao tratamento:

Fluxo correto para NFCe (MODO OFF-LINE)

NFE.Ativo  -> verificar se monitor ativo na memoria (OK)

NFe.CertificadoDataVencimento -> verificar certificado data vencimento(OK)

NFe.SetAmbiente(nNumAmbiente)  -> 1/2 (trocar caso precise)

NFe.SetFormaEmissao(nFormaEmissao) -> 9=OffLine

NFe.SetVersaoDF(nVersao) -> nVersao=4.00  (trocar caso precise)

NFe.SetModeloDF(nModeloDF) -> nModeloDF=65 (NFCe)

NFe.CriarNFe(cIniNFe,[bRetornaXML]) // BACKUP cArqXML PASTA OFFLINE

// APÓS SANADAS OS PROBLEMAS TÉCNICOS //

NFE.Ativo  -> verificar se monitor ativo na memoria (OK)

NFe.CertificadoDataVencimento -> verificar certificado data vencimento(OK)

NFe.SetAmbiente(nNumAmbiente)  -> 1/2 (trocar caso precise)

NFe.SetFormaEmissao(nFormaEmissao) -> 1=Normal

NFe.SetVersaoDF(nVersao) -> nVersao=4.00  (trocar caso precise)

NFe.SetModeloDF(nModeloDF) -> nModeloDF=65 (NFCe)

// NAO PRECISA MAIS ASSINAR APENAS ENVIAR [bAssina=.F.]

NFe.EnviarNFe(cArqXML,nLote,[bAssina=.F.],[bImprime],[cImpressora],[bSincrono])) // RESTORE cArqXML PASTA OFFLINE

// TRATAMENTO NORMAL FLUXO DOCUMENTO 

Estão correto as sequencias dos comandos para monitor?

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Complemento das sequencias de tratamento:

Fluxo correto para NFCe (MODO OFF-LINE)

NFE.Ativo  -> verificar se monitor ativo na memoria (OK)

NFe.CertificadoDataVencimento -> verificar certificado data vencimento(OK)

NFe.SetAmbiente(nNumAmbiente)  -> 1/2 (trocar caso precise)

NFe.SetFormaEmissao(nFormaEmissao) -> 9=OffLine

NFe.SetVersaoDF(nVersao) -> nVersao=4.00  (trocar caso precise)

NFe.SetModeloDF(nModeloDF) -> nModeloDF=65 (NFCe)

{

// HÁ NECESSIDADE DE USAR ESTES COMANDOS NO (OFF-LINE)

// JÁ CONSTAM NO COMANDO NFe.CriarNFe? // SENÃO QUANDO USAR?

NFE.ValidarNFE("c:\35XXXXXXXXXXXXXXXX550010000000050000000058-nfe.xml")

NFE.ValidarNFeRegraNegocios("c:\35XXXXXXXXXXXXXXXX550010000000050000000058-nfe.xml")

NFE.AssinarNFE("c:\35XXXXXXXXXXXXXXXX550010000000050000000058-nfe.xml")

NFe.GerarChave(codigoUF,codigoNumerico,modelo,serie,numero,tpemi,emissao,CNPJ)

}

NFe.CriarNFe(cIniNFe,[bRetornaXML]) // BACKUP cArqXML PASTA OFFLINE

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

// APÓS SANADAS OS PROBLEMAS TÉCNICOS //

NFE.Ativo  -> verificar se monitor ativo na memoria (OK)

NFe.CertificadoDataVencimento -> verificar certificado data vencimento(OK)

NFe.SetAmbiente(nNumAmbiente)  -> 1/2 (trocar caso precise)

NFe.SetFormaEmissao(nFormaEmissao) -> 1=Normal

NFe.SetVersaoDF(nVersao) -> nVersao=4.00  (trocar caso precise)

NFe.SetModeloDF(nModeloDF) -> nModeloDF=65 (NFCe)

// NAO PRECISA MAIS ASSINAR APENAS ENVIAR [bAssina=.F.]

NFe.EnviarNFe(cArqXML,nLote,[bAssina=.F.],[bImprime],[cImpressora],[bSincrono])) // RESTORE cArqXML PASTA OFFLINE

// TRATAMENTO NORMAL FLUXO DOCUMENTO IGUAL NFe

Estão correto as sequencias dos comandos para monitor?

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia

Está correto, porém como citado acima não há necessidade de enviar comandos de configurações se não houve alterações... Você pode notar que após enviar um comando de configuração isso fica gravado no ACBrMonitor...

então SetAmbiente, SetFormaEmissão, SetVersao, SetModeloDF, pode enviar apenas quando houver alteração destas configurações, o campo modelo por exemplo vai especificado no arquivo .INI, não precisa passar o comando toda vez que for enviar um documento...

No caso dos comandos de Assinar e Validar NFe,  não é necessário se você esta passando os dados para o ACBrMonitor gerar o XML, basta passar o comando NFe.CriarEnviarNFe

Simplificando você poderia utilizar da seguinte forma:

NFE.Ativo

NFe.CertificadoDataVencimento 

NFe.CriarEnviarNFe(cArqINI, nLote, [bImprime]))

 

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Para OFF-Line o que muda é apenas a forma de emissão, que você pode alterar via comando OU via campo (tpEmis) no arquivo txt...

Lembrando que o ACBrMonitor não faz o controle de emissão OFF-line isso deve ser gerenciado pela sua aplicação. Então se tentou enviar e houve falha de comunicação, deve gerar outra NFC-e alterando tipo de emissão, informando data, hora e justificativa e alterar a numeração da NFCe para não correr o risco de duplicidade... Quando conseguir transmitir a NFC-e em contingência deve consultar a numeração anterior para inutilizar ou cancelar essa NFC-e (Conforme status do retorno).

no seu exemplo ficaria:

NFE.Ativo

NFe.CertificadoDataVencimento 

NFe.SetFormaEmissao(9) 

NFe.CriarNFe(cArqINI)
NFe.imprimirDANFe(pathXML)

 

Ao restabelecer a conexão utilize

NFe.SetFormaEmissao(1) 

NFe.EnviarNFe(pathXML)

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Membros Pro

Bom dia!

Estou utilizando o ACBrMonitorPLUS 1.1.0.58, ao enviar o pedido de inutilizar em 23/04/2018, está gerando uma chave em mês 02 ou seja o correto é 04 (data de hoje).

Gerando assim o controle de pastas mês invalida para envio ao contador e um outro detalhe a visualização a inutilização os campos estão sem os dados!

Por favor passar orientação.

Exemplo:


NFE.InutilizarNFe("02982329000201", "AMBIENTE DE HOMOLOGACAO INUTILIZAR", 18, 55, 4, 202, 202)
OK: Inutilizacao de numero homologado
[INUTILIZACAO]
Versao=SP_NFE_PL009_V4
TpAmb=2
VerAplic=SP_NFE_PL009_V4
CStat=102
XMotivo=Inutilizacao de numero homologado
CUF=35
DhRecbto=23/04/2018 09:24:51
NProt=135180010429122
Arquivo=C:\OFFMON\Arqs\02982329000201\NFe\201804\Inu\35180298232900020155004000000202000000202-procInutNFe.xml
XML=<?xml version="1.0" encoding="UTF-8"?><ProcInutNFe versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe"><inutNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00"><infInut Id="ID35180298232900020155004000000202000000202"><tpAmb>2</tpAmb><xServ>INUTILIZAR</xServ><cUF>35</cUF><ano>18</ano><CNPJ>02982329000201</CNPJ><mod>55</mod><serie>4</serie><nNFIni>202</nNFIni><nNFFin>202</nNFFin><xJust>AMBIENTE DE HOMOLOGACAO INUTILIZAR</xJust></infInut>

NFe.ImprimirInutilizacao("C:\OFFMON\Arqs\02982329000201\NFe\201802\Inu\35180298232900020155004000000202000000202-procInutNFe.xml","",1,1)
OK: Inutilizacao Impressa com sucesso
 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa tarde,

Este campo não é alterado pelo componente, ou seja, o DhRecbto vem do XML de retorno da SEFAZ... Poderia anexar o XML de envio e de retorno dessa inutilização, para verificação?

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia!

Gostaria de saber como controlar corretamente a janela com "FOCUS", para visualizar e retorno ao aplicativo corretamente.

NFE.ImprimirDanfe("C:\OFFMON\Arqs\02982329000201\NFe\201804\NFe\35180402982329000201550040000002111954118486-nfe.xml")

NFe.ImprimirInutilizacao("C:\OFFMON\Arqs\02982329000201\NFe\201802\Inu\35180298232900020155004000000210000000210-procInutNFe.xml","",1,1)

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Veja que o arquivo que está tentando imprimir não é o mesmo retornado pelo ACBrMonitorPLUS.

Em 23/04/2018 at 08:40, Marcos postweb disse:

Arquivo=C:\OFFMON\Arqs\02982329000201\NFe\201804\Inu\35180298232900020155004000000202000000202-procInutNFe.xml

Aqui está separando dentro da pasta do mês correto. O 02 destacado é apenas parte do CNPJ. Na montagem do nome do arquivo -procInutNFe não é inserido o mês de inutilização, apenas ano.

Em 23/04/2018 at 08:40, Marcos postweb disse:

NFe.ImprimirInutilizacao("C:\OFFMON\Arqs\02982329000201\NFe\201802\Inu\35180298232900020155004000000202000000202-procInutNFe.xml","",1,1)

Provavelmente aqui vai dar erro, já que esse path não existe.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde, 

Gostaria de saber como controlar corretamente a janela com "FOCUS", mediante troca de arquivos com monitor!

ao enviar o comando de impressão com "preview" nos documentos; (para carregar corretamento a tela de visualização) em primeiro plano;

- após fechar o visualizador, retornar ao aplicativo corretamente (o foco na janela)? 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution

Bom dia

Por Favor, crie um novo tópico quando se tratar de outro assunto... Seguindo as regras do fórum...

A chamado do ACBrMonitor como primeiro plano no momento da pre-visualização é proposital, caso contrário o ACBrMonitor permanece travado devido a tela de pré-visualização estar em segundo plano. Após fechar a tela de pré-visualização poderá controlar o foco na sua aplicação normalmente.

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Este tópico foi criado há 2159 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.