Ir para conteúdo
  • Cadastre-se

Painel de líderes

Conteúdo popular

Showing content with the highest reputation on 05-06-2019 em todas as áreas

  1. Bom dia, Da uma olhada neste artigo aqui que eles falam sobre isso.
    2 pontos
  2. Bom dia Italo e Fábio, Muito obrigada pela atenção e paciência! Deu certo. Meu EGoverneISS.ini estava incorreto. Baixei novamente e funcionou.
    2 pontos
  3. Bom dia, gustavo_sala. Geralmente esse erro pode acontecer por dois motivos: - Falha na conexão com ambiente do eSocial (falha ou timeout nas integrações, erro não catalogado, não há mensagem específica). ou - A Procuração que habilita o contador à enviar as informações da empresa para o eSocial esteja vencida.
    2 pontos
  4. Há uns 6 anos atrás achei isso: tão verdade...
    1 ponto
  5. Olá pessoal, Introduzi no componente ACBrPosPrinter, um novo mecanismo de acesso a Impressora Agora poderemos acessar algumas impressoras, usando a Sintaxe: ACBrPosPrinter1.Porta := 'DLL:MARCA'; Onde MARCA, será o nome da Marca do Fabricante da Impressora... Até o momento, temos suporte para as marcas "ELGIN", e "EPSON" A ideia por traz dessa nova sintaxe de Porta, é permitir usar a DLL/SO do Fabricante, para Imprimir diretamente na Impressora... Ok.. o ACBrPosPrinter, já conseguia acessar impressoras Não Fiscais, pela Porta USB, usando a Sintaxe "RAW:" ACBrPosPrinter1.Porta := 'RAW:Nome da Impressora no Windows'; Mas então porque desenvolvemos essa nova forma de acesso ? A nova sintaxe "DLL:", tem algumas vantagens, em relação a sintaxe "RAW:" Não depende da instalação do Driver de Spool da Impressora.. (note porém, que em alguns casos, o Driver de Spool não pode estar instalado, pois ele bloqueia o acesso a USB) Podemos Ler Informações da Impressora (o que não é possível no modo RAW) Entretanto, como foi dito antes, dependemos de DLL exclusiva do fabricante, para o acesso a Impressora pela USB... Quais são essas DLLs ? Para onde eu devo copiá-las ? Vejamos como foi descrito no ACBrSerial-change-Log.txt Creio que isso responde as duas perguntas, correto ? Você pode encontrar as DLLs no nosso SVN, na pasta: \ACBr\DLLs\PosPrinter, ou ainda pela Web: http://svn.code.sf.net/p/acbr/code/trunk2/DLLs/PosPrinter/ Você pode ainda baixar uma versão do Demo PosPrinterTeste, atualizada, compilado em Lazarus/FPC no link abaixo: Como funciona essa nova técnica ? Quem faz todo acesso as Portas suportadas pelo ACBr, é um subcomponente chamado ACBrDevice, e há um bom tempo, esse componente já possui uma possibilidade de Integração por Hooks O que é Hook ? https://pt.wikipedia.org/wiki/Hooking A ideia por trás dos Hooks, é instalar ganchos, em eventos, que nos permitam interceptar algumas ações e chamadas... Veja esse trecho de código FDevice.HookAtivar := PosPrinterHookAtivar; FDevice.HookDesativar := PosPrinterHookDesativar; FDevice.HookEnviaString := PosPrinterHookEnviaString; FDevice.HookLeString := PosPrinterHookLeString; Aqui instruímos o subcomponente ACBrDevice, a chamar nossos eventos, quando ele precisar "Ativar", "Desativar" uma porta e também quando ele for "EnviarString" e "LeString", de uma determinada porta... Então no interior do componente ACBrPosPrinter, implementamos os eventos indicados acima (PosPrinterHookAtivar, PosPrinterHookDesativar, etc) ... Com isso, o ACBrDevice executará um código nosso, ao invés do que ele normalmente executaria... Veja que dentro dos eventos de ativação e desativação usamos uma Classe de Hook (leia mais abaixo) procedure TACBrPosPrinter.PosPrinterHookAtivar(const APort: String; Params: String); begin if Assigned(FHook) then FHook.Open(APort); end; procedure TACBrPosPrinter.PosPrinterHookDesativar(const APort: String); begin if Assigned(FHook) then FHook.Close; end; FHook por sua vez, é uma variável interna ao ACBrPosPrinter, que contem uma Classe de Hook (TACBrPosPrinterHook), e implementa os comandos necessários, para transmitir essas ações, a DLL do fabricante... Veja o exemplo abaixo, como fica a implementação dos Hooks de Ativar e Desativar, da ELGIN... observe que chamamos métodos Externos, da DLL da Elgin, como: "PrtPortOpenW" e "PrtPortClose" procedure TElginUSBPrinter.Open(const APort: String); var errorNo: Integer; begin if Connected then Exit; inherited Open(APort); try errorNo := xPrtPortOpenW(FPrinter, WideString(fpPort)); // <------- A Q U I ------- if (errorNo <> E_SUCCESS) then raise Exception.CreateFmt(CERROR_OPEN, [fpPort, fpPrinterName]); except fpConnected := False; fpPort := ''; raise; end; end; procedure TElginUSBPrinter.Close; var errorNo: Integer; begin if not Connected then Exit; errorNo := xPrtPortClose(FPrinter); // <------- A Q U I ------- if (errorNo <> E_SUCCESS) then raise Exception.CreateFmt(CERROR_CLOSE, [fpPort, fpPrinterName]); inherited Close; end; Com isso, conseguimos usar a DLL do Fabricante, para estabelecer um túnel entre o ACBrPosPrinter e o equipamento... Como posso implementar um Hook para um novo modelo ? Os Primeiros passos, são verificar: Se o Fabricante disponibiliza uma DLL para acesso direto ao equipamento (sem depender do Spooler) Se há nessa DLL, um método que nos permita Escrever e Ler Dados da Porta USB Ou seja, não precisamos de métodos de alto nível, que façam a formatação de caracteres, ou manipulem a impressora... Pois continua sendo o ACBrPosPrinter, quem montará toda a Sintaxe de comandos a serem enviados para a Impressora, usando a linguagem Esc/Pos... e igualmente, será o ACBrPosPrinter que fará a leitura de respostas, quando for necessário... Na DLL da Elgin, temos um ótimo exemplo de método para isso... function PrtDirectIO(printer:Pointer; // Ponteiro com a Impressora instanciada por PrtPrinterCreatorW writeData:PByte; // Buffer com dados a serem enviados writeNum:integer; // Número de Bytes em "writeData" (tamanho do Buffer) readData:PByte; // Ponteiro com o Retorno a ser Lido (Buffer de saída) readNum:integer; // Numero de bytes disponíveis para escrita em "readData" (tamanho disponível no Buffer de Saída) preadedNum:PInteger // Número de bytes realmente escritos em "readData" ): Integer; cdecl; // Status de retorno E_SUCCESS = 0; Tendo isso em mãos, podemos criar uma cópia de uma das Units já existentes, como por exemplo a Unit ACBrEscPosHookElginDLL.pas, e implementar o suporte usando a nova DLL, e efetuar os ajustes referente a nova Marca
    1 ponto
  6. Pessoal, Tudo bem com vocês? / Todos que neste momento leem este tópico e são favoráveis a causa, peço que entre em contato com o senador que está encarregado desta PLS 220/2018 Já faz muito tempo que esperamos este enquadramento, o mesmo foi iniciado depois de votação popular pela senadora Ana Amélia. Agora este projeto está em mãos de um senador de Sergipe, visando uma pressão no senador, não entendi o por que disto, ao meu ver poderia estar em mãos de um senador de MG ou de SP. Eu particularmente preciso que isso seja aprovado por causa do SAT que só utiliza no estado de SP e tenho que depender de um cara de Sergipe para isto ocorrer. Então conto com vocês para que se faça pressão no senador através: E-mail [email protected] Telefone : (61) 3303-2201 / 2203 / 2204 / 1786 Site : https://www25.senado.leg.br/web/senadores/senador/-/perfil/5352 Projetos de LEI : https://www25.senado.leg.br/web/atividade/materias/-/materia/131629 Já mandei e-mail e se não responderem vou estar ligando.
    1 ponto
  7. Obrigatoriedade de discriminar o FECP na NF-e e NFC-e para o estado do RJ. https://gov-rj.jusbrasil.com.br/legislacao/713502443/lei-8405-19-rio-de-janeiro-rj Exemplo:
    1 ponto
  8. Boa tarde Luiz, Sim, no caso do BP-e a contingência é off-line, neste caso o XML é gerado, assinado e salvo em disco e existe um prazo para ser enviado. Em anexo o Manual do BP-e. Manual_BPe_v100a.pdf Pesquise sobre a palavra Contingencia no manual, tem algumas coisas que o componente já faz de forma automático, você não precisa se preocupar.
    1 ponto
  9. Bom dia, AlexandreBertolato. Verifique se o CSC e o IDCSC estão configurados de forma correta para ambiente correto? Lembrando que geralmente é um código para homologação e outro para produção.
    1 ponto
  10. Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico.
    1 ponto
  11. Bom dia Italo! Obrigado pela ajuda, vou fazer os testes seguindo sua sugestão.
    1 ponto
  12. Bom dia Marcelo, Pela mensagem de erro, me parece ser um problema no aguardo do retorno do envio. O envio do BP-e é unitário, ou seja, é enviado um BP-e por vez, logo não existe a figura de Lote. A modo de envio é síncrono, portanto temos o resultado do processamento já no retorno. Se ao consultar é retornado que o BP-e foi processado com sucesso, ou seja, é retornado o protocolo de autorização, isso significa que o erro que esta ocorrendo é no retorno, por algum motivo a SEFAZ não esta realizado o retorno. Sobre o erro 503. Se ocorrer esse erro, você deve carregar o XML do BP-e com o LoadFromFile e em seguida executar o método Consultar, desta forma se o BP-e foi autorizado o XML que esta assinado recebera o protocolo de autorização, por fim basta imprimir o DABPE.
    1 ponto
  13. Bom dia @Felipe E. Resende Mesquita! Bom (e triste) saber dessa informação quanto a SEFAZ/MG. Acho que nos casos que eu tiver esse erro, vou ter que verificar se o BPe foi autorizado ou não consultando sua chave.
    1 ponto
  14. obrigado. Problema resolvido
    1 ponto
  15. @Antonio Carlos Araujo Sobrinho, exatamente. * O lote pode conter mais de 1 evento por vez. * O protocolo do envido é um por lote. * O protocolo de sucesso(Recibo) é um por evento e este que é a sua garantia de sucesso. * Evento de tabela não aceita envio em concorrência.
    1 ponto
  16. Boa noite Então da uma olhada no código ai porque este evento 110112 serve tanto para o MDF-e como para a NFC-e O bom seria criar um método para ler ser é o modelo 58 então utilizar teEncerramento e caso for modelo 65 utilizar teCancSubst.
    1 ponto
  17. Deu certo, muito obrigado pela ajuda
    1 ponto
  18. Veja qual valor está passando para a tag tpEmit. Para o tpEmit = 1 (prestador de serviço de transporte) você deve informar CTe. Para o tpEmit = 2 (transportador de carga própria) ou 3 (transportador que emitirá CT-e globalizado) você deve informar NFe. Caso informe documento divergente do tpEmit o componente vai ignorar o mesmo na geração do XML.
    1 ponto
  19. Qualquer linguagem deve ser capaz de gerar um número aleatório... Se você usa o ACBr, pode informar 0 para o campo cNF e deixar o componente gerar o código aleatório. Mas lembre que a sua aplicação deve armazenar esse código para poder recuperar a chave da NFe se necessário.
    1 ponto
  20. Continuando os testes aqui no cliente: Mudei o parâmetro unidade de: etqDecimoDeMilimetros para: etqMilimetros e funcionou. O problema de usar milimetros são com etiquetas pequenas, e outra, como que vou ficar indo cliente a cliente para acertar as etiquetas dos mesmos.
    1 ponto
  21. Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico.
    1 ponto
×
×
  • 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.