Ir para conteúdo
  • Cadastre-se

elton.barbosa

Consultores
  • Total de ítens

    9.956
  • Registro em

  • Última visita

  • Days Won

    127

Tudo que elton.barbosa postou

  1. Acho que não vai funcionar. Como o aplicativo do fabricante está conectado na COM1 você não conseguirá conectar mais nada nela, nem o hub4com. Baixe o com0com, mais especificamente o hub4com. Configure ele (hub4com) para criar duas portas virtuais (nomeie elas para COM6 e COM7, sei lá...). As portas virtuais vão se comunicar com um programa que só então vai se comunicar com a sua porta física COM1. Configure no programa da catraca para acessar a COM6 e seu programa para acessar a COM7. Problem solved?
  2. Veja: http://www.forumweb.com.br/foruns/topic ... impressor/
  3. Então, você não entendeu bem. Não há como fazer isso no seu aplicativo pois você não pode embutir uma porta nele e fazer o programa da catraca comunicar com o seu programa ao invés de comunicar com uma porta. Os programas vão se comunicar com portas (virtuais ou não, continuam sendo portas) e não com um programa. Assim, a menos que queira reinventar a roda, criar drivers para portas virtuais e refazer o com0com no Delphi, você não deve se preocupar com fazer isso no seu programa. Sobre não depender de terceiros, até onde eu sei, o com0com é gratuito e Open Source. Baixe o com0com, mais especificamente o hub4com. Configure ele para criar duas portas virtuais (nomeie elas para COM6 e COM7, sei lá...) que vão se comunicar com a sua porta física COM1. Configure no programa da catraca para acessar a COM6 e seu programa para acessar a COM7. Problem solved. EDIT: Ainda não sei se fui claro sobre o funcionamento... se não tiver sido pode dizer aí o que você não entendeu...
  4. Acho que você (ou eu) não entendeu bem o seu problema. Qual é o seu objetivo? Por quê você precisa acessar a mesma porta por aplicativos diferentes? O Windows não permite mais de um acesso à mesma porta serial simultaneamente. O que você pode fazer no seu código é fechar a porta sempre que terminar o uso. O que esse tipo de programa faz é criar então várias portas virtuais, que na verdade vão se comunicar com um programa. Esse programa é que faz acesso a porta serial física no seu computador. Isso é feito por meio de drivers. Então para o Windows, os programas sempre estão acessando portas diferentes. Repito: Qual é o seu objetivo? Por quê você precisa acessar a mesma porta por aplicativos diferentes?
  5. Você precisa usar um programa que crie essas portas. Um que provavelmente faça isso é o hub4com que faz parte do projeto com0com. Link para o projeto https://sourceforge.net/projects/com0com/
  6. Olá antoniojr, Você chegou a procurar aqui no forum sobre esses registros?
  7. Pela mensagem de erro eu suspeitaria que é a falta dos zeros: "Aliquota não encontrada: 17". É diferente de "Aliquota não encontrada: 17,00" ou "Aliquota não encontrada: 17.00". Mas não tenho aqui um ECF Daruma para testar no momento.
  8. Você testou com o Demo?
  9. Eu não tive prazo ainda para testar. Mas se puder fazê-lo, altere a seguinte função no arquivo ACBrEPCBloco_0_Class.pas: procedure TBloco_0.WriteRegistro0000; var strCOD_VER: AnsiString; strTIPO_ESCRIT: AnsiString; strIND_SIT_ESP: AnsiString; strIND_NAT_PJ: AnsiString; strIND_ATIV: AnsiString; strNUM_REC_ANTERIOR: AnsiString; begin if Assigned(Registro0000) then begin with Registro0000 do begin case COD_VER of vlVersao100: strCOD_VER := '001'; // Código 001 - Versão 100 ADE Cofis nº 31/2010 de 01/01/2011 vlVersao101: strCOD_VER := '002'; // Código 002 - Versão 101 ADE Cofis nº 34/2010 de 01/01/2011 end; case TIPO_ESCRIT of tpEscrOriginal: strTIPO_ESCRIT := '0'; tpEscrRetificadora: strTIPO_ESCRIT := '1'; end; case IND_SIT_ESP of indSitAbertura: strIND_SIT_ESP := '0'; indSitCisao: strIND_SIT_ESP := '1'; indSitFusao: strIND_SIT_ESP := '2'; indSitIncorporacao: strIND_SIT_ESP := '3'; indSitEncerramento: strIND_SIT_ESP := '4'; indNenhum: strIND_SIT_ESP := ' '; end; case IND_NAT_PJ of indNatPJSocEmpresariaGeral : strIND_NAT_PJ := '00'; //0 - Sociedade empresária geral indNatPJSocCooperativa : strIND_NAT_PJ := '01'; //1 - Sociedade Cooperativa indNatPJEntExclusivaFolhaSal : strIND_NAT_PJ := '02'; //2 - Entidade sujeita ao PIS/Pasep exclusivamente com base na folha de salários end; case IND_ATIV of indAtivIndustrial: strIND_ATIV := '0'; indAtivPrestadorServico: strIND_ATIV := '1'; indAtivComercio: strIND_ATIV := '2'; indAtivoFincanceira: strIND_ATIV := '3'; indAtivoImobiliaria: strIND_ATIV := '4'; indAtivoOutros: strIND_ATIV := '9'; end; if (TIPO_ESCRIT = tpEscrRetificadora) then strNUM_REC_ANTERIOR := LFill( NUM_REC_ANTERIOR, 41 ) else strNUM_REC_ANTERIOR := ''; Check(funChecaCNPJ(CNPJ), '(0-0000) ENTIDADE: O CNPJ "%s" digitado é inválido!', [CNPJ]); Check(funChecaUF(UF), '(0-0000) ENTIDADE: A UF "%s" digitada é inválido!', [UF]); Check(funChecaMUN(COD_MUN), '(0-0000) ENTIDADE: O código do município "%s" digitado é inválido!', [IntToStr(COD_MUN)]); /// Add( LFill( '0000' ) + LFill( strCOD_VER ) + LFill( strTIPO_ESCRIT ) + LFill( strIND_SIT_ESP ) + LFill( strNUM_REC_ANTERIOR ) + LFill( DT_INI ) + LFill( DT_FIN ) + LFill( NOME ) + LFill( CNPJ ) + LFill( UF ) + LFill( COD_MUN, 7 ) + LFill( SUFRAMA, 9 ) + LFill( strIND_NAT_PJ ) + LFill( strIND_ATIV ) ); /// Registro0990.QTD_LIN_0 := Registro0990.QTD_LIN_0 + 1; end; end; end;[/code] Obrigado pelo report.
  10. Sim e Não. O que você copiou do arquivo ACBrEPCBlocos.pas na verdade está fazendo alusão aos valores ordinais do tipo TACBrCodIndIncTributaria. Isso é apenas um comentário e não uma definição: //Codigo indicador da incidencia tributária no período (0110) TACBrCodIndIncTributaria = ( codEscrOpIncNaoCumulativo, // 0 - Escrituração de operações com incidencia exclusivamente no regime não cumulativo codEscrOpIncCumulativo, // 1 - Escrituração de operações com incidencia exclusivamente no regime cumulativo codEscrOpIncAmbos // 2 - Escrituração de operações com incidencia nos regimes cumulativo e não cumulativo ); [/code] Em outras palavras, o valor ordinal de [b]codEscrOpIncNaoCumulativo [/b]é zero. Mas quando o registro [b]0110[/b] vai ser escrito no arquivo texto, ele recebe o valor definido na procedure [b]TBloco_0.WriteRegistro0110[/b] do arquivo [u]ACBrEPCBloco_0_Class.pas[/u] por volta da linha 450. Veja: [code] case COD_INC_TRIB of codEscrOpIncNaoCumulativo: strCOD_INC_TRIB := '1'; codEscrOpIncCumulativo: strCOD_INC_TRIB := '2'; codEscrOpIncAmbos: strCOD_INC_TRIB := '3'; end; Certamente o que lhe confundiu foi que nos outros tipos declarados no arquivo ACBrEPCBlocos.pas os valores nos comentários não são os ordinais e sim os valores no registro final.
  11. Se preocupa não Dante. Relendo agora, acho que minha resposta ficou com um tom um pouco rude, mas sinceramente, não era essa intenção. Era mais um lembrete mesmo...
  12. Seu fonte está desatualizado. Esse erro já foi corrigido há vários dias. Eu sugiro sempre usar o pesquisar do fórum antes de postar um bug. Nesse caso, se você fizer uma busca por "C100" ou por IND_FRT, vai encontrar.
  13. Veja: viewtopic.php?f=5&t=2819&p=12908&hilit=acbrbombas#p12908 Houve até um usuário que ofereceu uma recompensa pelo início do projeto, mas não sei em que pé ficou. Veja: viewtopic.php?f=17&t=2500&p=19558&hilit=acbrbombas#p19558
  14. Exceto no caso do parágrafo único:
  15. Não. Você só não precisa informar o C170 em caso de notas canceladas, denegadas ou inutilizadas. Veja:
  16. Tentou fazer no DEMO?
  17. Não sei o porquê, mas não tinha visto essa mensagem... Bem, você não entendeu o método errado não. É isso mesmo. Achei que você queria retornar o valor do tipo e não o valor do campo SPED. Na verdade, no momento penso que a melhor opção pra armazenar esse tipo de campo é armazenando a string do tipo (ex. stpisValorAliquotaNormal). Isso impede o problema de quando o SPED muda os valores por ventura de uma nova versão, como já aconteceu com alguns campos.
  18. Ederson, Correto. Muito obrigado. Só para futuras referências, o erro dos registros G110, G125 e G126 estava relacionado à correção do erro do seguinte tópico Bloco E Registro E116 não gera.
  19. Você não precisa fazer add de nada disso. Já estão lá no código. Veja: interface uses ACBrBase, ACBrUtil, {Units da ACBr} SysUtils , Classes; (.....) implementation {$IFDEF COMPILER6_UP} uses Variants , Math, StrUtils;[/code] EDIT: Será que o seu Delphi não está identificando a diretiva de compilação corretamente?
  20. Olá Thiago, Muito obrigado. Você tem razão. Já corrigi. Revisão 3196.
  21. Você deve seguir o modo que o Guia Prático informar. O PVA é usado para garantir que está fazendo igual ao Guia Prático pede, principalmente em pontos ambíguos. Mas acontece de o PVA estar desatualizado. Pelo menos foi o que entendi...
  22. Que tutorial?
  23. Faz um revert nesse arquivo ACBrValidador.pas
  24. Olá, Muito obrigado. Já está disponível na revisão 3192. Favor testar.
  25. Oi Regys, Fiquei um pouco confuso. Posso usar só o método IdentificaPAF ou preciso mesmo testar se o ECF é MFD?
×
×
  • 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.

The popup will be closed in 10 segundos...