Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2766 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Pessoal, estou precisando de uma ajuda de vocês,

Assistindo o vídeo do nosso ilustre @Régys Silveira (https://regys.com.br/video-como-transformar-seu-aplicativo-paf-ecf-em-sat-ou-nfc-e-com-alguns-cliques/) tentei sem sucesso converter meu PAF-ECF para o SAT.

Peguei várias informações pelo DEMO SAT Teste, e funciona com o emulador.

Quando vou aplica ao meu projeto a situação explicada no vídeo do Régys o componente acho que ainda "pensa" que deve usar a porta serial, pois fica dando erro de "error 5: Acesso Negado".

O esquema no meu DATAMODULE está como a imagem em anexo.

Na inicialização do meu PDV, vou tentar mostrar o que é feito em sequencia.

//INICIALIZAÇÃO
     try
       ConfiguraACBr;

       if FDataModule.Configuracao.ModeloFiscal='SAT' then
       begin
          ConfigurarSATACBR;
       end;
       PrepararImpressoraESCPOS;
       FDataModule.ACBrECF.Ativar;

     except
       on E:Exception do
       begin
          MensagemDialogo('ERRO AO CONFIGURAR COMPONENTE FISCAL'+#13+#10+e.ToString, tmsgErro);
          Close;
       end;
     end;


procedure TfrmPDV.ConfiguraACBr;
var
  i: Integer;
begin
  try
    try

      if FDataModule.Configuracao.ModeloFiscal<>'' then
      begin
         TConstantes.SystemECFativada:=true;
         if FDataModule.Configuracao.ModeloFiscal='NAOFISCAL' then
            FDataModule.ACBrECF.ECFVirtual := FDataModule.acbrVirNaoFiscSystem;
         if FDataModule.Configuracao.ModeloFiscal = 'NFCE' then
            FDataModule.ACBrECF.ECFVirtual := FDataModule.acbrVNFCEsystem;
         if FDataModule.Configuracao.ModeloFiscal = 'SAT' then
            FDataModule.ACBrECF.ECFVirtual := FDataModule.acbrVSATsystem;
         if FDataModule.Configuracao.ModeloFiscal = 'MFE' then
            FDataModule.ACBrECF.ECFVirtual := FDataModule.acbrVSATmfe;

         FDataModule.ACBrECF.Modelo := ecfECFVirtual;

      end;
    except
      on e:exception do
      begin
         Exception.RaiseOuterException( Exception.Create('[TFCaixa.ConfiguraACBr]'));
      end;
    end;
  finally

  end;
end;

procedure TfrmPDV.ConfigurarSATACBR;
Var
  ArqINI : String ;
  INI : TIniFile ;
begin
  ArqINI := Constantes.TConstantes.gsAppPath + ChangeFileExt( ExtractFileName( Application.ExeName ),'') ;
  ArqINI := ArqINI + '.SAT.config.ini';
  try
    try
      if not FileExists(ArqINI) then raise Exception.Create('Arquivo de configuração SAT não existe!');

      INI := TIniFile.Create(ArqINI);
      with FDataModule.acbrSATsystem do
      begin
        Modelo  := TACBrSATModelo( INI.ReadInteger('SAT','Modelo',0) );
        ArqLOG  := INI.ReadString('SAT','ArqLog','ACBrSAT.log');
        NomeDLL := INI.ReadString('SAT','NomeDLL','C:\SAT\SAT.DLL');

        Config.ide_numeroCaixa := FDataModule.Configuracao.CaixaVO.CODIGO_CAIXA;
        Config.ide_tpAmb       := TpcnTipoAmbiente(INI.ReadInteger('SAT','Ambiente',1));
        Config.ide_CNPJ        := INI.ReadString('SwH','CNPJ','11111111111111');
        Config.emit_CNPJ          := FDataModule.Licenciado.Cnpj;
        Config.emit_IE            := FDataModule.Licenciado.InscricaoEstadual;
        Config.emit_IM            := FDataModule.Licenciado.InscricaoMunicipal;
        Config.emit_cRegTrib      := TpcnRegTrib( strtoint( FDataModule.Licenciado.TipoRegime) ) ;
        Config.emit_cRegTribISSQN := TpcnRegTribISSQN( FDataModule.Licenciado.TIPO_REGIME_SSQN ) ;
        Config.emit_indRatISSQN   := TpcnindRatISSQN( FDataModule.Licenciado.IND_RAT_ISSQN ) ;

        Config.PaginaDeCodigo     := INI.ReadInteger('SAT','PaginaDeCodigo',0);;
        Config.EhUTF8             := INI.ReadBool('SAT','UTF8', False);
        Config.infCFe_versaoDadosEnt := INI.ReadFloat('SAT','versaoDadosEnt', cversaoDadosEnt);

        ConfigArquivos.SalvarCFe      := INI.ReadBool('SAT','SalvarCFe', True);
        ConfigArquivos.SalvarCFeCanc  := INI.ReadBool('SAT','SalvarCFeCanc', True);
        ConfigArquivos.SalvarEnvio    := INI.ReadBool('SAT','SalvarEnvio', True);
        ConfigArquivos.SepararPorCNPJ := INI.ReadBool('SAT','SepararPorCNPJ', True);
        ConfigArquivos.SepararPorMes  := INI.ReadBool('SAT','SepararPorMES', True);
      end
    except
      on e:exception do
         Exception.RaiseOuterException( Exception.Create('[Erro Configurando SAT]'));
    end;
  finally
    INI.Free ;

  end;
end ;

procedure TfrmPDV.PrepararImpressoraESCPOS;
Var
  ArqINI : String ;
  INI : TIniFile ;
begin

  try
    try
      ArqINI := Constantes.TConstantes.gsAppPath + ChangeFileExt( ExtractFileName( Application.ExeName ),'') ;
      ArqINI := ArqINI + '.SAT.config.ini';

      INI := TIniFile.Create(ArqINI);
      with FDataModule.acbrPOSPsystem do
      begin
        Desativar;

        Modelo := TACBrPosPrinterModelo( INI.ReadInteger('PosPrinter', 'Modelo', -1));
        PaginaDeCodigo := TACBrPosPaginaCodigo( INI.ReadInteger('PosPrinter','PaginaDeCodigo', 0) );
        Porta := INI.ReadString('PosPrinter','Porta', '');
        ColunasFonteNormal := INI.ReadInteger('PosPrinter','Colunas', 48);
        LinhasEntreCupons  := INI.ReadInteger('PosPrinter','LinhasEntreCupons', 10);
        EspacoEntreLinhas  := INI.ReadInteger('PosPrinter','EspacoLinhas', 0);
      end;
      if FDataModule.Configuracao.ModeloFiscal='SAT' then
         if FDataModule.acbrSATsystem.Extrato = FDataModule.acbrSATescPosSAT then
         begin
            FDataModule.acbrSATescPosSAT.ImprimeQRCode := True;
            FDataModule.acbrSATescPosSAT.ImprimeEmUmaLinha := INI.ReadBool('EscPos','ImprimirItemUmaLinha', False);
         end
    except
      on e:exception do
         Exception.RaiseOuterException( Exception.Create('[Erro preparando impressora virtual]'));

    end;
  finally

  end;
end;

 

 

Captura de Tela 2017-04-25 às 20.58.40.png

Obrigado a todos!

  • Membros Pro
Postado

O meu sistema funciona assim. Não sei porque eu tive um problema quando coloquei o ACBRECFVIRTUALNFCE e o ACBRECFVIRTUALSAT no mesmo datamodule. Resolvi deixando um no datamodule e outro no form principal. O motivo realmente não sei.

Obs.:Deixei uma mensagem para você sobre a compra do aparelho MFE, rsrsrs.

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