Ir para conteúdo
  • Cadastre-se

EMBarbosa

Consultores
  • Total de ítens

    9.337
  • Registro em

  • Última visita

  • Days Won

    117

Tudo que EMBarbosa postou

  1. Olá Gr@ç@, Eu estou bem por fora dos detalhes sobre CTE. Mas acredito que haja uma solução bem simples. Existe algum jeito de sabermos, no quando da execução do método TBloco_D.WriteRegistroD100 se a Nota foi cancelada ou não? Não seria só verificar se o campo COD_SIT é 02, 03, 04 ou 05 ? Isso permitiria escrevermos uma rotina alternativa só pra esses casos... exemplo: procedure TBloco_D.WriteRegistroD100(RegD001: TRegistroD001) ; var intFor: integer; strIND_FRT: AnsiString; strCOD_SIT: AnsiString; begin if Assigned( RegD001.RegistroD100 ) then begin for intFor := 0 to RegD001.RegistroD100.Count - 1 do begin with RegD001.RegistroD100.Items[intFor] do begin case IND_FRT of tfPorContaTerceiros: strIND_FRT := '0'; tfPorContaEmitente: strIND_FRT := '1'; tfPorContaDestinatario: strIND_FRT := '2'; tfSemCobrancaFrete: strIND_FRT := '9'; tfNenhum: strIND_FRT := ''; end; case COD_SIT of sdRegular: strCOD_SIT := '00'; sdExtempRegular: strCOD_SIT := '01'; sdCancelado: strCOD_SIT := '02'; sdCanceladoExtemp: strCOD_SIT := '03'; sdDoctoDenegado: strCOD_SIT := '04'; sdDoctoNumInutilizada: strCOD_SIT := '05'; sdFiscalCompl: strCOD_SIT := '06'; sdExtempCompl: strCOD_SIT := '07'; sdRegimeEspecNEsp: strCOD_SIT := '08'; end; //No Caso abaixo não deve informar todos os campos... if COD_SIT in [sdCancelado, sdCancelado, sdDoctoDenegado, sdDoctoNumInutilizada] then begin Add( LFill('D100') + LFill( Integer(IND_OPER), 0 ) + LFill( Integer(IND_EMIT), 0 ) + LFill( '' ) + //COD_PART LFill( COD_MOD ) + LFill( strCOD_SIT ) + LFill( SER ) + LFill( SUB ) + LFill( NUM_DOC ) + LFill( CHV_CTE ) + LFill( '' ) + //DT_DOC LFill( '' ) + //DT_A_P LFill( '' ) + //TP_CT_e LFill( '' ) + //CHV_CTE_REF LFill( '' ) + //VL_DOC LFill( '' ) + //VL_DESC LFill( strIND_FRT ) + LFill( '' ) + //VL_SERV LFill( '' ) + //VL_BC_ICMS LFill( '' ) + //VL_ICMS LFill( '' ) + //VL_NT LFill( '' ) + //COD_INF LFill( '' ) ) ; //COD_CTA end else Add( LFill('D100') + LFill( Integer(IND_OPER), 0 ) + LFill( Integer(IND_EMIT), 0 ) + LFill( COD_PART ) + LFill( COD_MOD ) + LFill( strCOD_SIT ) + LFill( SER ) + LFill( SUB ) + LFill( NUM_DOC ) + LFill( CHV_CTE ) + LFill( DT_DOC ) + LFill( DT_A_P ) + LFill( TP_CT_e ) + LFill( CHV_CTE_REF ) + LFill( VL_DOC,0,2 ) + LFill( VL_DESC,0,2 ) + LFill( strIND_FRT ) + LFill( VL_SERV,0,2 ) + LFill( VL_BC_ICMS,0,2 ) + LFill( VL_ICMS,0,2 ) + LFill( VL_NT,0,2 ) + LFill( COD_INF ) + LFill( COD_CTA ) ) ; end; /// Registros FILHOS WriteRegistroD110( RegD001.RegistroD100.Items[intFor] ) ; WriteRegistroD130( RegD001.RegistroD100.Items[intFor] ) ; WriteRegistroD140( RegD001.RegistroD100.Items[intFor] ) ; WriteRegistroD150( RegD001.RegistroD100.Items[intFor] ) ; WriteRegistroD160( RegD001.RegistroD100.Items[intFor] ) ; WriteRegistroD170( RegD001.RegistroD100.Items[intFor] ) ; WriteRegistroD180( RegD001.RegistroD100.Items[intFor] ) ; WriteRegistroD190( RegD001.RegistroD100.Items[intFor] ) ; RegistroD990.QTD_LIN_D := RegistroD990.QTD_LIN_D + 1; end; /// Variavél para armazenar a quantidade de registro do tipo. FRegistroD100Count := FRegistroD100Count + RegD001.RegistroD100.Count; end; end;[/code] Substitua esse IF acima no seu código do TBloco_D.WriteRegistroD100 do arquivo ACBrECFBloco_D_Class.pas e veja se resolve por favor... Se resolver eu já subo pro SVN... Você pode também me indicar onde você encontrou essa informação de preenchimento? Só pra efeito de depois alguém questionar as alterações?
  2. Daniel, Posso assinar em baixo do seu comentário também? hehe
  3. Verdade que daria um certo trabalho. Mas nem tanto pois o trabalho seria quase o mesmo. Talvez até menor pois no ACBr já estaria tudo pronto caso o BANESE for mesmo compatível com o SiTef. Aí com certeza. Você tem toda razão. No seu lugar eu faria o mesmo. Na verdade, fizemos o mesmo. Aqui implementamos o discado justamente por causa disso... Só que ninguém usa o BANESE...
  4. Olá, Eu entendi que não foi crítica... Apenas estava tentando esclarecer o motivo dessa situação ocorrer.
  5. Habilite o log na sua aplicação. E anexe o log então...
  6. Pois então lucas, O tratamento do ACBrTEFD é independente. Não há desencontro pois não houve tentativa de encontro, já que, até onde sei, a propriedade Retentar e o ACBrTEFD não foram projetados para funcionar juntos.
  7. Olá Daniel, Não sei se entendi ao certo suas dúvidas nesse caso. Vamos por partes pra ver se eu entendi: 1) A tela de lançamento do PED pode estar apenas no retaguarda? Em termos... exatamente o que você está considerando que é a tela de lançamento do PED? O PAF-ECF não é obrigado a efetuar emissão de documento fiscal por PED. Não precisa ter telas para fazer isso. Salvo se, veja abaixo... 2) As Pergunta/resposta 44 e 51 informam que a tela que se encontra no PAF-ECF mencionado é de registro de notas manuais. Ou seja, o sujeito emitiu a nota na mão, e vai agora registrar ela no programa. O PAF-ECF não vai emitir a nota, mas vai confiar no usuário que está inserindo uma nota manualmente emitida. O Esclarecimento lembra que o Banco de dados deveria ser único para ambos aplicativos, não necessitando registrar a nota duas vezes, principalmente se ela foi emitida pelo SG. Até onde me lembro, o PAF deve pelo menos ter um cadastro de Notas de Venda ao Consumidor que só deve funcionar quando o ECF cair.
  8. Pois é, se o cupom está aberto, não precisa estar acessível...
  9. pior é que se o programa tem tela de entrada de notas, então TEM de fazer o Sintegra e o SPED disso.
  10. Precisa. Deve ter pelo menos um Edit na tela de registro(fechamento/pagamentos) da venda para que a pessoa possa informá-lo. Métodos alternativos de informar os dados podem ser "negociados" com o homologador. Mas em geral não tem como correr não... ahsuhauhasu pior que é.
  11. As mensagens de Tentar novamente são disparadas pelo ACBrTEFD. O Retentar é uma propriedade do ACBrECF. Elas não estão relacionadas.
  12. Olá Dante, o motivo de não funcionar no demo é o seguinte: Veja o evento TForm1.Suprimento1Click na parte abaixo onde pega o valor do usuário if not InputQuery('Suprimento', 'Entre com o Valor do Suprimento', cValor ) then exit ; Valor := StrToIntDef(cValor,-1) ; // if Valor exit ; [/code] StrToIntDef é uma função que converte valor String para Inteiro. Logo se digitar valor com vírgula ou ponto ele não vai aceitar. Para corrigir isso no DEMO é só substituir a linha pelo código abaixo. [code] if not InputQuery('Suprimento', 'Entre com o Valor do Suprimento', cValor ) then exit ; Valor := StrToFloatDef(cValor,-1) ; if Valor exit ; Mas voltando ao seu problema em si, se está tudo funcionando do DEMO, então o problema é no jeito que sua aplicação está tratando. Verifique as diferenças do seu código para o código do DEMO.
  13. Sim. Mas acho que já tinha entendido o que o Iran mencionou. Iran confirme por favor se a alteração é a seguinte: na procedure TACBrECFBematech.ArquivoMFD_DLL(COOInicial, COOFinal: Integer; NomeArquivo: AnsiString; Documentos: TACBrECFTipoDocumentoSet); Resp := xBematech_FI_DownloadMFD( PChar( ArqTmp + '.mfd'), // Arquivo de Saida '2', // 1 = Por Data PChar( IntToStr(COOInicial) ), PChar( IntToStr(COOFinal) ), PChar( Prop ) ) ; [/code] Alterar para: [code] Resp := xBematech_FI_DownloadMFD( PAnsiChar( ArqTmp + '.mfd'), // Arquivo de Saida '2', // 1 = Por Data PAnsiChar( IntToStr(COOInicial) ), PAnsiChar( IntToStr(COOFinal) ), PAnsiChar( Prop ) ) ; Resp := xBemaGeraRegistrosTipoE( PChar( ArqTmp + '.mfd'), Pchar( NomeArquivo ), PChar( DiaIni ), PChar( DiaFim ), Pchar( cRazao ), Pchar( cEndereco ), '','2','','','','','','','','','','','','','' ); [/code] E também [code] Resp := xBemaGeraRegistrosTipoE( PChar( ArqTmp + '.mfd'), Pchar( NomeArquivo ), PChar( DiaIni ), PChar( DiaFim ), Pchar( cRazao ), Pchar( cEndereco ), '','2','','','','','','','','','','','','','' ); por Resp := xBemaGeraRegistrosTipoE( PAnsiChar( ArqTmp + '.mfd'), PAnsiChar( NomeArquivo ), PAnsiChar( DiaIni ), PAnsiChar( DiaFim ), PAnsiChar( cRazao ), PAnsiChar( cEndereco ), '','2','','','','','','','','','','','','','' );[/code] Fiquei intrigado foi porquê não aconteceu erro nessas funções no meu caso... O Iran confirmando eu posto no SVN. Assim que tiver mais tempo no entanto vou tentar substituir essas funções pelas mais recomendada.
  14. Parece que o V&S Pague faz isso. Não sei qual o Gerenciador Padrão usado pelo BANESE. Mas se usar o mesmo da TECBAN, ou o da AMEX/VISA/CIELO então já está pronto para Discado. Talvez alguém com experiência no BANESE possa confirmar. Você pode colocar no Classificados, ou tentar o sistema de Recompensas veja: http://www.forumweb.com.br/foruns/topic ... compensas/
  15. Quando eu fiz, eles estavam aconselhando ter uma tela de entrada de notas. Não falaram sobre a possibilidade de acerto no estoque não. Mas sugiro conferir com os homologadores que escolher, pois eles é que tem a palavra final.
  16. 1) Acredito que sim. Embora meu programa não tenha essa tela, todas as telas do programa devem poder acessar o menu fiscal Exceto em caso de impressão. Exemplo: Nós usamos um form como menu de telas como a dos cadastros, foi necessário adicionar acesso ao Menu Fiscal e ainda por cima colocar dizeres que ele estava acessível nessa tela (escolhemos colocar no caption como pode ver na imagem anexa) 2) Não. Veja REQUISITO VII ITEM 1: que diz em parte
  17. Não. Essas opções não devem nem mesmo aparecer no menu fiscal.
  18. Sim já está corrigido.
  19. Nos posts que eu passei ... ou no google...
  20. Sobre o Fórum Antigo veja: viewtopic.php?f=5&t=8
  21. Houve alterações sim nas validações de IE, mas não tenho certeza se as de Manaus/Amazonas foram afetadas... Alguém aí lembra? Sim. O ACBr é compatível com Delphi 7.
  22. Na verdade, no roteiro PAF eles vão testar o sistema funcionando local. Não vão configurar para funcionar em rede não. É muito importante, no entanto, que você entenda que apenas as funcionalidades do ECF é que precisam funcionar sem rede. As vendas não podem parar. O usuário deve ser capaz de vender os produtos mesmo que a venda caia. Mas não é necessário por exemplo o Cadastro de Produtos funcionar sem a rede.
  23. Essa daí é uma difícil decisão, não dá pra opinar sem conhecer melhor suas expectativas do sistema. Fale mais sobre o modelo que você decidiu e porquê, em especial sobre essas configurações que ficam no servidor. Aqui, como fizemos um sistema mais básico pra atender pequenos clientes, nós usamos uma base no servidor e uma base local pra configurações e tabelas que são usadas nas vendas. Elas são sincronizadas com as tabelas do servidor sempre que há alterações significativas. Tudo gerado localmente cria arquivos XMLs que são posteriormente, via uma trhead secundária, enviados para o servidor. A idéia básica é essa.
  24. veja: md5... http://www.forumweb.com.br/foruns/topic ... gerar-md5/ validação de registros... http://www.forumweb.com.br/foruns/topic ... important/ http://www.forumweb.com.br/foruns/topic ... espaf-ecf/
  25. Adicionou sim, agora sabemos que "O tempo limite do semáforo expirou" pode ser erro de porta configurada de forma errada. Deixa a mensagem aí rapaz...
×
×
  • 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.