Ir para conteúdo
  • Cadastre-se

Anizair Lopes

Membros
  • Total de ítens

    53
  • Registro em

  • Última visita

Posts postados por Anizair Lopes

  1.   Olá para todos,

      Aqui na empresa em que trabalho adquirimos recentemente uma impressora Epson TM-T81 FBIII  e o problema da hora do software basico ficar zerado eu consegui resolver copiando a mesma codificação da impressora bematech,

     abaixo segue o codigo para que seja feito a modificação no repositório, no meu teste funcionou perfeitamente.

    function TACBrECFEpson.GetDataHoraSB: TDateTime;
    {Var
      DtStr, HrStr : AnsiString ; }
    Var Linha, LinhaVer, DtHrStr : AnsiString ;
        Linhas : TStringList;
        I, CRZ :Integer;
        AchouBlocoSB : Boolean ;
    begin
     { EpsonComando.Comando := '0402' ;
      EnviaComando ;
    
      DtStr := EpsonResposta.Params[8] ;
      HrStr := '000000' ;
      { Atualmente não tem informações de como pegar a hora por comando direto,
        tem que utilizar a mesma forma que a Bemateh realizar a partir da LMF.
        A ser implementado.... }
    
      {Result := EncodeDateTime( StrToInt(copy(DtStr, 5,4)),   // Ano
                                StrToInt(copy(DtStr, 3,2)),   // Mes
                                StrToInt(copy(DtStr, 1,2)),   // Dia
                                StrToInt(copy(HrStr, 1,2)),   // Hora
                                StrToInt(copy(HrStr, 3,2)),   // Min
                                StrToInt(copy(HrStr, 5,2)),   // Seg
                                0 ); }
      Result := 0.0;
    
      // verificar se a redução Z está pendente e não fazer se estiver
      // porque acontecerá erro, conforme consulta ao atendimento da bematech
      if Estado in [estLivre] then
      begin
        Linhas := TStringList.Create;
    
        try
          CRZ := StrToIntDef(NumCRZ, 1) ;
          LeituraMemoriaFiscalSerial(CRZ, CRZ, Linhas);
    
          I := 0 ;
          AchouBlocoSB := False;
          while (not AchouBlocoSB) and (I < Linhas.Count) do
          begin
             Linha := Linhas[I] ;
             AchouBlocoSB := (pos('SOFTWARE B', Linha ) > 0) ;
             Inc( I ) ;
          end ;
    
          Linha    := '';
          LinhaVer := '';
          while AchouBlocoSB and (I < Linhas.Count) and (Linha = LinhaVer) do
          begin
             Linha := Trim(Linhas[I]) ;
             if (Linha <> '') then
             begin
                if ( StrIsNumber( copy(Linha,1,2) ) and ( copy(Linha,3,1) = '.' ) and
                     StrIsNumber( copy(Linha,4,2) ) and ( copy(Linha,6,1) = '.' ) and
                     StrIsNumber( copy(Linha,7,2) ) ) then
                   LinhaVer := Linha;
             end ;
    
             Inc( I ) ;
          end ;
    
          if LinhaVer <> '' then
          begin
            // 01.00.01                    25/06/2009 21:07:40
            I := pos('/', LinhaVer ) ;
            DtHrStr := copy(LinhaVer, I-2, 10 ) ;
            I := pos(':', LinhaVer ) ;
            DtHrStr := DtHrStr + ' ' + copy(LinhaVer, I-2, 8 ) ;
    
            Result := StringToDateTime( DtHrStr, 'dd/mm/yyyy hh:nn:ss' ) ;
          end;
        finally
          Linhas.Free ;
        end ;
      end;
    end;
    
  2.   Obrigado Juliomar  

      Mas acho que ainda não fui claro o suficiente então vou tentar ser mais claro.

     

       A minha aplicação que e responsável por controlar o ECF não tem nenhum tipo de acesso ao Banco de Dados ele somente comunica com o ECF e informa para a minha aplicação o valor do NUMGRG ou NUMCDC.

      Hoje com a daruma onde ainda não utilizamos o acbr utilizamos uma chamada a dll DarumaFrameWork_rRetornarInformacao_ECF_Daruma('56', strFlag) onde dentro dessa variável strFlag me traz a informação se é um Relatorio gerencial ou Cupom Vinculado que está aberto, mediante isso eu vou solicitar a impressora que me passe para caso de Relatorio Gerencial o NUMGRG e para caso de Cupom Vinculado o NUMCDC com isso passo para minha aplicação que possui acesso ao banco a informação correta que será armazenada.

     

      Régys e quando ocorre queda de energia com o um Relatorio Gerencial aberto como o evento te informa se o relatorio é Gerencial ou Cupom vinculado ?

  3.  obrigado pelas respostas,

      mas Daniel para o caso de queda de energia somente este estado para fechamendo do relatorio é o sufiente, mas o meu problema é que eu preciso saber qual numero de documento capturar para armazenar no banco se eu não tenho um estado que me informa se o relatorio que estou fechando é um cupom vinculado ou um relatorio gerencial então fico sem saber qual numero passar ao meu pdv e assim ele guardar no banco a fim de gerar o requisito do PAF para demais documentos fiscais.

      EMBarbosa não tem como eu controlar isso porque o meu sistema pdv é separado do ECF tenho um aplicação somente para controlar o ecf e quando cai a energia eu perderia todas as variáveis e então por esse motivo preciso consultar o ecf para que ela me informe que o relatório que eu estou fechando é um Gerencial ou um Vinculado.

      Vocês tem alguma outra solução ou dica ?

  4.   Olá conhecendo os estados da ecf conforme mencionado pelo Regys e postado abaixo.

      TACBrECFEstado = (estNaoInicializada, { Porta Serial ainda nao foi aberta }
                      estDesconhecido, {Porta aberta, mas estado ainda nao definido}
                      estLivre, { Impressora Livre, sem nenhum cupom aberto,
                                  pronta para nova venda, Reducao Z e Leitura X ok,
                                  pode ou nao já ter ocorrido 1ª venda no dia...}
                      estVenda, { Cupom de Venda Aberto com ou sem venda do 1º Item}
                      estPagamento, { Iniciado Fechamento de Cupom com Formas Pagto
                                      pode ou nao ter efetuado o 1º pagto. Nao pode
                                      mais vender itens, ou alterar Subtotal}
                      estRelatorio, { Imprimindo Cupom Fiscal Vinculado ou
                                      Relatorio Gerencial }
                      estBloqueada, { Reduçao Z já emitida, bloqueada até as 00:00 }
                      estRequerZ, {Reducao Z dia anterior nao emitida. Emita agora }
                      estRequerX,  {Esta impressora requer Leitura X todo inicio de
                                   dia. Imprima uma Leitura X para poder vender}
                      estNaoFiscal  { Comprovante Nao Fiscal Aberto }
                      ) ;

     

       lembrando o estado estRelatório informa a existencia de dois estado um para cupom vinculado outro para relatório gerencial, gostaria de saber de vocês como proceder para saber se

      a impressora está no estado de Relatorio Gerencial ou no Estado de cupom Vinculado ?

      estou fazendo esta pergunta porque no meu sistema de automação preciso saber esse estado para informar a minha applição o GRG ou  CDC para guardar corretamente no banco de dados e posteriormente fazer a geração do arquivo PAF

  5.  Bom noite a todos,

     Descupem-me se fui ofensivo, mas estou também querendo resolver o problema e quando informei que os cast´s foram programado por voces estava me referindo somente a Unit ACBRUtils que está cheio de Cast AnsiString, String  que como o EMBarbosa comentou em um outro tópico "sem sentido".

     

     e mais uma vez eu peço desculpa se fui ofensivo essa não era a minha intenção.

     

    só para fechar o assunto,  fiz a remoção dos cast's conforme a orientação do Daniel Simões e os erros foram solucionado.

     

    sem mais para o momento sou grato a todos pela colaboração.

  6.  Bom EMBarbosa, o problemas dos casts foram vocês que desenvolveram.

     Então o que nós precisamos e que resolva a compatibilidade com o Delphi 6, se vai remover o cast ou vai manter o cast não me interessa, somente me interessa que seja compatível com o delphi 6, tentei uma solução mas vejo que vocês não estão com muito interesse em solucionar esse problema para quem utiliza delphi 6.

     

     será que é possível manter essa compatibilidade ou vocês irão informar a comunidade geral que o ACBR não é mais compatível com o Delphi 6 ?

  7.  Revivendo o assunto, agora estou pensando em utilizar o acbrECF para disponibilizar mais impressora no meu software, mas o problema de access violation com o Delphi 6 continua.

     pegando a dica do wrgoncalves2008 eu fiz outras alterações no ACBrUtils quando se trata de conversões AnsiString e String, passei a utilizar ACBrStrToAnsi e ACBrStr e esse erro parou de acontecer.

     A questão é que estes casts utilizando ACBrStr e ACBrStrToAnsi já possuem as diretivas de compilação para compatibilidade com outras versões e a minha questão é porque não utilizar esses casts no repositório ?

     pois se já foi testado com o Delphi Xe e funcionou perfeitamente ?

     

     

    também na versão do delphi 6 que utilizo aqui funcionou

     

    vou colocar aqui as funções que alterei para que possam analisar e corrigir no acbrUtils a fim de que futuras correções não danifiquem o que eu já alterei aqui.

     

     

    WriteToTXT - onde tinha String alterei para ACBrStr;

    HexToAscii  - onde tinha AnsiString alterei para ACBrStrToAnsi e

                      -  onde tinha String alterei para ACBrStr

     

    IntToStrZero - onde  tinha AnsiString alterei para ACBrStrToAnsi

    Poem_Zeros - onde Tinha AnsiString alterei para  ACBrStrToAnsi e

                         - onde tinha String alterei para ACBrStr

     

     

    depois destas correções tudo funcionou perfeitamente no Delphi 6 .

    no aguardo de qualquer posição da parte de vocês.

     

    lembrando que funcionou com  o FastMM e sem o FastMM.

  8. Olá bom dia,

    Gostaria de informar que ao carregar uma arquivo de xml para o provedor de goiânia o mesmo não está preenchendo o componente da NFs-e, com isso não consigo enviar notas para a prefeitura.

     Executei um passo a passo no codigo e identifiquei a possível falha, gostaria que pudessem analisar se estou correto.

     if pos('</Rps>', ArquivoXML.Text) > 0
             then begin
              while pos('</Rps>', ArquivoXML.Text) > 0 do
               begin
                XML             := copy(ArquivoXML.Text, 1, pos('</Rps>', ArquivoXML.Text) + 5);
                //aqui o arquivo está sendo separado e como tem duas tags rps está passando para o 
                //leitor somente um pedaço do arquivo.
                ArquivoXML.Text := Trim(copy(ArquivoXML.Text, pos('</Rps>',ArquivoXML.Text) + 6, length(ArquivoXML.Text)));
      
                LocNFSeR        := TNFSeR.Create(Self.Add.NFSe);
                try
                 LocNFSeR.Leitor.Arquivo := XML; --> aqui é passado somente um pedaço do arquivo.
                 LocNFSeR.VersaoXML      := NotaUtil.VersaoXML(XML);
    //             LocNFSeR.Provedor       := FConfiguracoes.WebServices.Provedor;
                 LocNFSeR.LerXml;
                 Items[Self.Count-1].XML_Rps := LocNFSeR.Leitor.Arquivo;
                 Items[Self.Count-1].NomeArq := CaminhoArquivo;
                finally
                 LocNFSeR.Free;
                end;
               end;
             end;
           end;
    

      estou anexando o xml que estou utilizando para ver se é problema no arquivo ou se é a codificação acima que encontra-se errada.

    NovoTeste.xml

  9. Boa tarde, hoje eu baixei os fontes do repositório quando fui fazer a instalação do componente acbrnfse no delphi 7 ocorreu alguns problema o qual tive que corrigir manualmente e estarei enviado aqui para que seja corrigido no repositório, então vamos as mudanças.

     

    no PACOTE ACBRNFSE.DPK

      Faltou colocar as duas units abaixo:

    •     ACBRProvedor4R.pas
    •    ACBRProvedorGovDigital.pas

     

     nas Units que vou citar abaixo faltaram colocar a property Versão.

     

    •   pcnDonwloadNfe.pas na Classe TDownloadNFE
    •   pcnConstNFeDest.pas na classe TConstNFeDest
    •   pcnCCENfe.pas na classe TCCENFe

     depois de feitas essas mudanças consegui instalar o componente normalmente.

     

    solitico que façam a correção para meus futuros updates não tenha que fazer isso novamente.

  10.  Boa Tarde estou abrindo este tópico por não ter encontrado nada referente ao assunto,

    gostaria de saber se será disponibilizado a codificação do DANFE NFs-e para o fastreport.

    pois estou utilizando o Delphi xe e não possuo o QuickReport instalado somente o fastreport

     

    sem mais para o momento sou grato.

  11. Boa tarde Italo fiz os testes e está faltando somente corrigir o CodigoMunicípio que na Unit pnfsConversao o provedor de goiânia está o codigo do município no IBGE mas em goiânia eles não estão assumindo o do IBGE mas uma tabela própria e o codigo é 0025300, nos meus teste gerou um erro devido a este codigo.

     

    sem mais para o momento sou grato.

  12. Olá as mudanças implementadas pelo hugo_fabricio para o provedor de goiânia não foram atualizados no SVN! 

    porque estava fazendo teste com o componente e estava ocasionando erros e quando eu sobrepus o arquivo que o hugo colocou aqui no forum resolveu o problema, ou seja, o arquivo não foi atualizado no SVN, visto que eu já fiz um update no dia 05/04/2013 e não veio estas correções para o provedor de goiânia.

     

      Gostaria de solicitar aos responsáveis por estas atualizações para que possa colocar essas mudanças no SVN, afim de evitar problemas quando eu tiver que fazer futuros update no componente.

     

     sem mais para o momento sou grato.

  13. Olá Daniel, entendo o seu ponto.

    A minha pergunta é se a correção que coloquei para compatibilidade com o Delphi 6 pode ser aplicado sem nenhum problema de compatibilidades com outras ides ?

    E caso eu encontre mais algum problema vou colocandos as correções aqui para análise da equipe ficando a disposição para sanar eventuais dúvidas dos nosso colegas.

    Obrigado e tenha um bom dia.

  14. Pessoal, eu também estou utilizando Windows XP e Delphi 6.

    Esta ocorrendo o erro na função IntToStrZero do abrUtil a qual faz a chamada a função que o colega colocou.

    Para testar eu mudei a linha da geração do Registro 54 onde está

    wregistro:=wregistro+IntToStrZero(Registros54[i].NumeroItem), 3);
    para esta linha abaixo:
    wregistro:=wregistro+TBStrZero(IntToStr(Registros54[i].NumeroItem), 3);

    e o problema foi solucionado não gerando mais o erro.

    Deve ser alguma função que não está disponível no Delphi 6, então peço que façam o teste que coloquei em outras versões para ver se ocorre algum erro, caso não ocorra erros nenhum em outras versões sugiro que seja esta a abordagem a ser colocado no componente para fins de compatibilidade com o DELPHI 6.

    sem mais para o momento sou grato.

  15. Gostaria de saber se o ACBrSintegra possui os registro referente a portaria PORTARIA SAIF Nº 03 DE 2 DE SETEMBRO DE 2005 de minas Gerais, não consegui identificar estes registros no ACBrSintegra, se não possuir gostaria de saber se posso coloca-los no componente e disponibilizar para ser carregado no SVN ?

    para mais informações sobre esta portaria segue o link :

    http://www.fazenda.mg.gov.br/empresas/legislacao_tributaria/portarias/port_saif003_2005.htm

  16. Esqueci de mensionar, mas temos que lembrar que os registros Internos não são criados e sim somente referenciados, com isso não precisamos nos preocupar com o Free de cada registro, pois o objeto principal já se responsabiliza por isso.

    Ex: Criarmos os TRegistro60A e adicionamos ao Componente no TRegistros60A e assim com os outros..

    Internamente no componente é capturado a referencia do Registro60A e adicionado ao Registro60M.

    Então ao destruir os registros60A do componente AcbrSintegra automaticamente será liberado do Registro60M por ser uma referencia, então devemos somente liberar os Registros internos do Registro60M.

×
×
  • 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.