Ir para conteúdo
  • Cadastre-se

Giquieu

Membros Pro
  • Total de ítens

    65
  • Registro em

  • Última visita

Posts postados por Giquieu

  1.  

    Olá, 

    Estou emitindo/consultando/cancelando para Barueri / SP com sucesso.

    O Provedor de Barueri, funciona de maneira assíncrona.

    Após enviar o provedor retorna o protocolo de recebimento. Esse protocolo vc deve armazena-lo para realizar as posteriores consultas.

    Depois de executar o ACBrNFSeX.Emitir();

    Para pegar o protocolo gerado pelo provedor:

    ACBrNFSeX.WebService.Emite.Protocolo;

     

    Após o envio, vc precisa consultar a situação do RPS, pra validar se o provedor processou ou não o RPS.

    Para consultar use:

    ProtocoloEnvio := ACBrNFSeX.WebService.Emite.Protocolo;

    ACBrNFSeX.ConsultarSituacao(ProtocoloEnvio);

    Essa consulta retorna se o provedor processou ou não o RPS enviado, vc pode pegar o resultado em: ACBrNFSeX.WebService.ConsultaSituacao

    Veja tbm o ACBrNFSeX.WebService.ConsultaSituacao.Situacao

    0 = Arquivo Validado

    1 = Arquivo Importado

    2 = Arquivo com Erros

    -1 = Em Processamento

    -2 = Aguardando Processamento

    Após essa Consulta o provedor retorna o protocolo atualizado, se ocorrer erro no processamento o provedor adicionar .ERR no protocolo.

    ProtocoloConsulta := ACBrNFSeX.WebService.ConsultaSituacao.Protocolo

    Esse novo protocolo vc vai usar como entrada para o metodo ConsultarLoteRps, que vai retornar o XML ou os detalhes dos erros.

     

     

    Então, com o protocolo resultante do ConsultarSituacao, utilize pra consultar o lote:

    ACBrNFSeX.ConsultarLoteRps(ProtocoloConsulta);

    Nessa consulta o provedor retorna o XML ou os erros. Pegue o resultado em:
    ACBrNFSeX.WebService.ConsultaLoteRps

    ACBrNFSeX.WebService.ConsultaLoteRps.Erros

     

     

    • Curtir 1
  2. Olá,

    Estou realizando a homologação com Uniprime.

    Tive a mesma critica do Digito X na impressão do Boleto. Usando Lazarus.

    Utilizando o Fortes pra impressão existe um tratamento para imprimir X quando o digito do banco for maior ou igual a 10. Como mostra a imagem:

    image.png.3a67064ceff3aa90caca4840d739ff6f.png

     

    Fiz um teste com o demo  forçando um o valor 10 no digito do banco, conforme sugerido. 

    Porém o boleto ainda está sendo impresso com o digito 4, que é atribuído ao informar o tipo Uniprime.

       ACBrBoleto1.Banco.Digito := 10;
       ACBrBoleto1.Imprimir;

     

    Fui olhar a property e a mesma tem um Setter "fake" , usado apenas pra mostrar o ObjectInspector:

    image.png.7ff52f9436d75f9c73c9a24085b86537.png

    Então indiferente do que informar no Digito do Banco o Fortes não vai considerar.

    Sugiro implementarmos um Set pra property e no Get tratar se existe algo nela, caso contrario podemos retornar o Digito que está na propria classe do Banco.

    TACBrBanco = class(TComponent)
    private 
      fDigitoManual: Integer;
    
    ....
    
    procedure TACBrBanco.SetDigito(const AValue: Integer);
    begin
      fDigitoManual := AValue;
    end;
    
    function TACBrBanco.GetDigito: Integer;
    begin
      Result := fBancoClass.Digito;
       if (fDigitoManual > 0) then
         Result := fDigitoManual;
    end;

     

  3. Olá, 

    Apenas retornando a atual situação.

    Ajustei a rotina pra configurar o Report, conforme a sugestão.

    No primeiro momento não teve efeito.

    Então, criei uma VM para executar o teste, pra validar o ambiente do SO, nessa caso deu tudo certo.

    Por mais que a alteração sugerida  funcionou nos casos acima e que tbm foi implementada aqui, tive que concluir que alguma coisa no SO também estava interferindo....

    Por enquanto o código de barras com a alteração + novo SO (Linux Ubuntu 16.04.6 LTS) esta imprimindo corretamente.

    Muito obrigado @Juliomar Marchetti.

     

    • Curtir 2
  4. Olá,

    Estou passando a mesma situação. O código de barras está colorido.

    Alterei o código com a implementação sugerida acima, tanto no relatório quanto no próprio Fortes, mesmo assim o problema continuou.

    Alguma outra solução?

     

     

    • Curtir 1
  5. @Daniel Simoes

    Acabei de atualizar o ACBr e notei que vc commitou um biblioteca de Terceiro para trabalhar com JSON.

    Revision: 14751
    Author: dopi
    Date: segunda-feira, 26 de fevereiro de 2018 18:51:58

     

    Queria te mostrar a PasJSON desenvolvida pelo Benjamin (BeRo1985), totalmente compatível com Delphi/FPC.

    https://github.com/BeRo1985/pasjson

    Achei o Parser do PasJSON muito mais otimizado do que a Json4Delphi. Estou testando ela no Lazarus/FPC e não tive nenhum problema.

    Poderia considerar um estudo, pra que ela se torne a Lib de JSON do projeto ACBr?

     

  6. Em 05/07/2017 at 13:00, melissanascimento disse:

     Boa tarde, Giquieu 
     Desculpe amolar mais estou aprendendo sobre API. Estava mesmo sem declarar "USES REST.types, System.JSON;"

     Porém estou com outras duvidas segue o código que estou tentando obter a Descrição do produto.

    procedure TForm2.Button2Click(Sender: TObject);
    var ResponseCosmos : TJSONValue;
    begin
    RESTClient2.BaseURL := ' http://cosmos.bluesoft.com.br/api';
    RESTRequest2.Method := TRESTRequestMethod.rmGET;
    RESTRequest2.Resource := '/gtins/{codigo}';
    RESTRequest2.Params.AddHeader('X-Cosmos-Token', 'TGPSKTTfDy7ut9e6NfFMHA');
    RESTRequest2.Params.AddUrlSegment('codigo',Edit3.Text);
    RESTRequest2.Execute;

    if (RESTResponse2.StatusCode = 200) then begin
      ResponseCosmos.GetValue<TJSONString>('description').Value;
      ShowMessage(ResponseCosmos.ToJSON); // Retorna a Descrição do Produto
    end;

    Mais da erro do projeto depois da linha if (RESTResponse2.StatusCode = 200) then begin

     

    Obrigada. 

     

    Olá,

    Provavelmente seu ResponseCosmos está NIL. Faça o seguinte:

    ResponseCosmos := RESTResponse2.JSONValue;

    ou

    RESTResponse2.JSONValue.GetValue<TJSONString>('description').Value;

    Tome cuidado ao acessar variáveis não instanciadas...

  7. Em 2017-5-23 at 21:54, melissanascimento disse:

    boa noite, 

     Estou tentando usar o exemplo do  Giquieu  com o Delphi Tokyo mais estou me deparando em uma linha. 
     Request.Method := rmGET; já tentei usar Request.Method := TRequestMethod.rmGET;
     da erro "[dcc32 Error] Unit2.pas(40): E2003 Undeclared identifier: 'rmGET'" 

     obrigada. 

     

     

     

    Não tenho o Tokyo para verificar, mas provavelmente é o uses que não está correto... 

    Adicione a REST.Types no uses do seu fonte e tente novamente...

     

    Pode dar uma olhada aqui:

    http://docwiki.embarcadero.com/Libraries/Tokyo/en/REST.Types.TRESTRequestMethod

  8. Realmente uma biblioteca de JSON é muito abrangente e demandaria um bom esforço inicial pra criar uma.

    No meu ver, o melhor dos mundos seria usar as bibliotecas nativas, porém será necessário um bom trabalho pra criar uma Fachada que encapsule as bibliotecas do Delphi e do Lazarus. Pelo menos a maioria das classes entre Delphi/Lazarus tem o mesmo nome... (TJSONObject, TJSONString, TJSONNumber, etc).

    Mas diante do que o Elton disse, sobre estabilidade, erros, no final fica melhor usar uma de Terceiro mesmo. xD

    Já usei a LkJSON, tanto no Delphi quanto no Lazarus. Apesar do repositório dela esta parada, ela está estável. 

    Achei interessante a:

    https://github.com/hgourvest/superobject - Para Delphi e Lazarus.

     

    Eu não intendo muito bem essa questão de licença... qual licença que a biblioteca deve estar registrada pra podermos usar e modificar se necessário?

  9. Pessoal, 

    Inevitavelmente, cada vez mais JSON vem se tornando o protocolo de comunicação mais utilizados entre as aplicações.

    Sabemos que existem bibliotecas de conversão nativas tanto para o Delphi quanto para o Lazarus. E tantas outras de terceiros, de código fechado e de código aberto.

    Creio que cedo ou tarde, o projeto ACBr terá que fazer uso de alguma biblioteca JSON, então gostaria de propor aqui uma discussão pra validar/decidir o uso de JSON dentro do projeto ACBr. Poderia-se iniciar com algumas questões:

    Criar uma biblioteca própria? Criada do zero, ou se basear em alguma já existente?

    Usar uma existente e colocar dentro de /Terceiros/? Qual biblioteca existente utilizar?

    Usar nativo? IFDEF pra Lazarus e Delphi/XE?

     

    Estou levantando essa questão, pois estou criando um componente pra realizar a comunicação com o COSMOS da Bluesoft fazendo uso da TACBrHTTP, onde o retorno é JSON. Na qual, quem sabe após a definição de uma biblioteca JSON, esse componente poderá fazer parte do projeto ACBr... claro se o mesmo for aprovado.

     

    Aguardo uma discussão :)

     

    []'s

     

     

    • Curtir 1
  10. Vc não, necessariamente, precisa usar TClientDataSet, quando vc trabalha com Zeos, a TZQuery, consegue trabalhar off-line.

    O seu problema está em:

    TZAbstractConnection.StartTransaction; Aqui é chamado a verificação do contador de transação.

    Veja aqui: Unit: ZAbstractConnection Classe: TZAbstractConnection Metodo: CheckAutoCommitMode

    procedure TZAbstractConnection.CheckAutoCommitMode;
    begin
      if not FAutoCommit and (FExplicitTransactionCounter = 0) then
        raise EZDatabaseError.Create(SInvalidOpInNonAutoCommit);
    end;      

    Em anexo estou deixando um pdf que irá te ajudar.

     

    Tutorial_Zeos_Especial_Em_Portugues_BR.rar

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