Ir para conteúdo
  • Cadastre-se

Sandro Felipe Adad

Membros
  • Total de ítens

    228
  • Registro em

  • Última visita

  • Days Won

    3

Posts postados por Sandro Felipe Adad

  1. 1) responsavel tecnico - tag invalida

    function TBPeXmlWriter.Gerar_InfRespTec: TACBrXmlNode;
    begin
      Result := nil;

      if (BPe.infRespTec.CNPJ <> '') then
      begin
        Result := FDocument.CreateElement('infRespTec'); corrigido - estava errado aqui

    2) não gerava passageiros:

      if BPe.infPassagem.infPassageiro.xNome <> '' then
        Result.AppendChild(Gerar_InfPassageiro);//Gerar_InfPassageiro;ACBrBPeXmlWriter.pas

  2. 10 minutos atrás, Alexandre de Paula disse:

    Boa Tarde @Sandro Felipe Adad,

    Agradecemos a contribuição, porém poderia informar a respeito do que se trata?

    Localizou algum erro? Refatoração do código? Atualização de legislação?

    Se possível fazer referencia a documentação utilizada também.

    Obrigado.

    Correção de erros e tipos de dados.

    tpSimFacultativo - novo tipo. (pcesConversaoeSocial.pas)

    usado em TInfoVlr: (unit pcesS2500;)
     

        FindenSD: tpSimFacultativo;
        FindenAbono: tpSimFacultativo;

     

    correção em unit pcesS5503;

    function TevtFGTSProcTrab.LerXML: boolean;
        // Capturar a versão do evento
        s := Copy(FXML, Pos('/evt/evtFGTSProcTrab/', FXML)+21, 16); //ajustado

    e

    ...

     while leitor.rExtrai(2, 'infoTrabFGTS', '', i + 1) <> '' do
          begin
            with infoTrabFGTS do
            begin
              New; //incluído
              Items[i].Fmatricula := leitor.rCampo(tcStr, 'matricula');
              Items[i].FcodCateg  := leitor.rCampo(tcInt, 'codCateg');
              Items[i].FcategOrig := leitor.rCampo(tcInt, 'categOrig');

     

    procedure TEvtProcTrab.GerarInfoVlr(Obj: TInfoVlr);
    begin
      Gerador.wGrupo('infoVlr');

      Gerador.wCampo(tcStr, '', 'compIni',         7,  7, 1, obj.compIni);
      Gerador.wCampo(tcStr, '', 'compFim',         7,  7, 1, obj.compFim);

      if VersaoDF > veS01_01_00 then
      begin
    ...
        Gerador.wCampo(tcStr, '', 'indenSD',         0,  1, 0, eSSimFacultativoToStr(obj.indenSD));
        Gerador.wCampo(tcStr, '', 'indenAbono',      0,  1, 0, eSSimFacultativoToStr(obj.indenAbono));

     

    • Curtir 1
  3. 45 minutos atrás, Dempsey disse:

    boa tarde, sabe me dizer se sua solução funciona no Delphi 2010?

    Acontece esse erro ao compilar no Delphi 2010.

    image.thumb.png.b689b6ecfb8df24922f104582f1ca76d.png

    experimente comentar a linha que acusa o erro, o código neste evento é so para diminuir a tela do navegador(zoom)

  4. 1 hora atrás, Luiz Eduardo Bodo disse:

    Sim utilizando a API free oficial, esta funcionando perfeitamente, de ontem pra hoje dei uma melhorada nela, encapsulando. segue a unit.

     

    Fiz uma função para chamar.

    function TfrmPessoas.ConsultarCNPJ(const CNPJ: string): TCNPJInfo;
    begin
      Result := TCNPJInfo.Create;
    
      try
        Result.Consultar(CNPJ);
      except
        on E: Exception do
        begin
          // Trate as exceções, se necessário.
          ShowMessage('Erro ao consultar CNPJ: ' + E.Message);
          Result.Free; // Libere a instância em caso de erro.
          Result := nil; // Defina o resultado como nulo em caso de erro.
        end;
      end;
    end;
    // MODO DE USAR...
    InfoCNPJ := ConsultarCNPJ(DM.TiraPontos(txtDocumento.Text)); // Substitua pelo CNPJ desejado.
    if InfoCNPJ.Achou = 'Sim' then
      begin
      // achou 
      end
      else
      // não achou...

    espero ter ajudado, qualquer duvida ou melhorias é bem vinda...

    CNPJInfo.pas 6.89 kB · 10 downloads

    Mas no teu exemplo voce não utiliza a API oficial (https://www.receitaws.com.br/v1/cnpj)

    e como ficaria a questão do captcha que é o assunto deste tópico?

  5. 7 horas atrás, Luiz Eduardo Bodo disse:

    Boa tarde pessoal, quem esta com problema na consulta do CNPJ, fiz uma função utilizando JSONResponse, simples e eficiente, estou utilizando delphi 10.3

    Utiliza a api free oficial do governo?

    caso positivo poderia compartilhar a sua solução?

    • Curtir 1
  6. 4 horas atrás, jaques.rocha disse:


    Descobri o erro, no Windows server não tem a key FEATURE_BROWSER_EMULATION, portanto foi só criar ela usando o CreateKey
        Reg.OpenKey('SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', False);
        Reg.CreateKey('SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION');
        Reg.WriteInteger(ExtractFileName(Application.ExeName), 11001); //isto é necessário para poder rodar no internet explorer 11

    Sim, podemos alterar no fonte para o windows criar a chave se necessário.

    Linha 85 do ACBrConsultaCNPJNavegar.pas, alterar para True:

    Reg.OpenKey('SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', True);

    • Curtir 1
  7. Em 23/09/2020 at 12:25, Italo Giurizzato Junior disse:

    Boa tarde Junior,

    Essas adaptações foram no componente?

    Se sim, anexa aqui as units alteradas para que possamos analisar.

    Desde já muito obrigado pela colaboração.

    Ítalo é realmente necessária a criação da tag SituacaoEspecial para a retenção de órgão público. Foi necessário alterar o schema também, apesar do schema fornecido por eles nao ter a definição do campo, mas no manual consta.

    Tag criada no tomador: <IncentivoFiscal>

    Segue arquivo de schema onde inclui o tipo tsSituacaoEspecial.

    Anexei também o manual deles onde consta essa nova tag, caso deseje incorporar no ACBRNFSeX.

    Segue a contribuição das alterações que realizei nos fontes do ACBR para sua avaliação, porem feitas apenas no componente ACBRNFse,  não utilizo ainda o ACBRNFseX neste município.

    *** Dúvida, como faço para parametrizar http ou https no soapAction no arquivo ISSJoinville.ini? tive que alternar a informação no .ini, ora pra homologação começando por (http) e produção com (https)

    Ex: Homologação

    [SoapAction]
    Recepcionar=http://nfemwshomologacao.pmjlle.joinville.sc.gov.br/EnviarLoteRpsEnvio
    ConsSit=http://nfemwshomologacao.pmjlle.joinville.sc.gov.br/ConsultarLoteRpsEnvio

    Ex: Produção

    [SoapAction]
    Recepcionar=https://%NomeURL_HP%.joinville.sc.gov.br/EnviarLoteRpsEnvio
    ConsSit=https://%NomeURL_HP%.joinville.sc.gov.br/ConsultarLoteRpsEnvio

     

    Coloquei também os arquivos enviados com sucesso.

    pnfsConversao.pas pnfsNFSeW_ABRASFv2.pas pnfsNFSe.pas PMJ - NF-em - Webservices - Manual - v14.pdf nfse_v2-04.xsd 521791-rec.xml 521791-rec-soap.xml 521791-env-lot.xml 521791-env-lot-soap.xml NF-em Impressão.pdf

  8. 3 horas atrás, etbricio disse:

    Olá

    Verifiquei que o componente ACBRCONSULTACNPJ procura o arquivo acbrconsultacnpj.ini e ao não encontrar, le/cria internamente o endereço :https://solucoes.receita.fazenda.gov.br/Servicos/cnpjreva/captcha/gerarCaptcha.asp. Ao executar nesse endereço ele informa o erro 404 . Atualizei o ACBR e continua buscando nesse endereço. O componente não está funcionando. .."Erro na hora de fazer o download da imagem do captcha. Serviço depreciado pela RFB! não disponível para consulta." 

    A solução é extra oficial, voce precisa baixar os fontes daqui deste post , em seguida reinstalar o ACBR com a substituição do componente e fontes deste post.

    image.thumb.png.a22592663a081ee31ee517ac9b407d23.png

  9. 39 minutos atrás, jaques.rocha disse:

    Pessoal, ainda não consegui fazer funcionar, talvez tenha baixado o codigo errado. Ja estou com meu acbr  atualizado, no projeto que baixei apaguei o VCL.Edge, depois começou dar erro no OnSolicitarCaptcha, tenho a impressão que meu ACBrConsultaCNPJ não esta atualizado pois nele  nao tem o evento OnSolicitarCaptcha, somente o OnAntesAbrirHTTP, se tem alguma atualização não oficial do ACBrConsultaCNPJ acho que não encontrei onde baixar.
    Do jeito que esta meu codigo até conseguir rodar mas dá o seguinte erro depois que clico em 'Sou Humano' e depois me' Consultar'.
    image.png.94b484001aa3ce723c9b362948a81f46.png

    Sim é extra oficial, voce precisa baixar os fontes daqui deste post , em seguida reinstalar o ACBR com a substituição do componente e fontes deste post.

    image.thumb.png.a22592663a081ee31ee517ac9b407d23.png

     

     

  10. 18 horas atrás, jaques.rocha disse:

    Boa noite pessoal, ainda não temos uma solução definitiva ? Tentei testar esse código mas para mim dá erro no Vcl.Edge, pois meu delphi é o XE7

     

    18 horas atrás, barrys disse:

    Eu preciso reinstalar o ACBr por causa da unit AcbrConsultaCNPJ ? 
    Eu somente copiei na pasta ACBr\Fontes\ACBrTCP

    Mas me aparece este erro acima.

    1) Pode excluir o uses da unit Vcl.Edge.

    2) Tem de recompilar todo o ACBR ou o componente ACBRTCP que é onde esta incluso o ACBRConsultaCNPJ

     

    • Curtir 1
  11. ConsultaCNPJIE.dprojACBrConsultaCNPJNavegar.dfmConsultaCNPJIE.dprojConsultaCNPJIE.dprojACBrConsultaCNPJNavegar.pasuConsultaCNPJ.dfmACBrConsultaCNPJ.pasConsultaCNPJIE.dpruConsultaCNPJ.pasACBrConsultaCNPJNavegar.dfmConsultaCNPJIE.dproj

    1 hora atrás, Sandro Felipe Adad disse:

     @Sandro Felipe Adad @Antonio Gomes

    @Dfox @Alexandre de Paula

    Aproveitando os códigos colaborados neste tópico, criada uma solução funcional utilizando o navegador TWebBrowser do delphi ao invés do TEdge.

    Segue para avaliação, se puderem verificar Antonio Gomes, DFox  e Alexandre.

     

    ACBrConsultaCNPJNavegar.pas 5.51 kB · 7 downloads ConsultaCNPJIE.dpr 344 B · 7 downloads ConsultaCNPJIE.dproj 50.01 kB · 7 downloads uConsultaCNPJ.dfm 10.71 kB · 7 downloads uConsultaCNPJ.pas 3.67 kB · 7 downloads ACBrConsultaCNPJNavegar.dfm 1.21 kB · 7 downloads

    Ahh, tem de recompilar o componente substituindo essa unit na pasta nos fontes do ACBR: ..trunk2\Fontes\ACBrTCP

    Antonio Gomes criou um evento no componente para tratar a solicitação do captcha.

    if Assigned(FOnSolicitarCaptcha) then
      begin
        FOnSolicitarCaptcha(Html);

        RespHTTP.Text:= Html;

        ModoAntigo := False;
      end;
     

    ACBrConsultaCNPJ.pas

    • Obrigado 1
  12. 54 minutos atrás, Sandro Felipe Adad disse:

     @Sandro Felipe Adad @Antonio Gomes

    @Dfox @Alexandre de Paula

    Aproveitando os códigos colaborados neste tópico, criada uma solução funcional utilizando o navegador TWebBrowser do delphi ao invés do TEdge.

    Segue para avaliação, se puderem verificar Antonio Gomes, DFox  e Alexandre.

     

    ACBrConsultaCNPJNavegar.pas 5.51 kB · 6 downloads ConsultaCNPJIE.dpr 344 B · 6 downloads ConsultaCNPJIE.dproj 50.01 kB · 6 downloads uConsultaCNPJ.dfm 10.71 kB · 6 downloads uConsultaCNPJ.pas 3.67 kB · 6 downloads ACBrConsultaCNPJNavegar.dfm 1.21 kB · 6 downloads

     

    7 minutos atrás, Orlando Dantas disse:

    Só para deixar registrado.

    No que diz respeito às APIs que foram mencionadas anteriormente como “não oficiais”, conduzi testes utilizando o CNPJ que foi discutido anteriormente. Realizei esses testes em todas as APIs mencionadas, bem como em algumas outras. Em todos os casos, observei que os dados que deveriam estar atualizados sempre continham informações desatualizadas. Isso levanta a suspeita de que essas APIs estejam consultando os dados em um ambiente de homologação, igualmente na API oficial de consulta de pessoa da NF-e que consta no ACBr, como dito logo acima, o que não atende às necessidades de nossos clientes. Aqui na empresa temos como obrigação fornecer a eles as informações mais recentes da Receita Federal.

    Orlando, consegue testar o exemplo que postei logo acima. Utilizo a API oficial: https://solucoes.receita.fazenda.gov.br/Servicos/cnpjreva/Cnpjreva_Solicitacao.asp

    Eu testei a consulta pela NFe, porem dependendo da UF não é possivel a sua utilização, pois não são disponibilizados dados para consulta.

     

  13. 27 minutos atrás, Alexandre de Paula disse:

    Estamos avaliando ainda a situação. Se os endereços voltarem a funcionar o componente naturalmente volta a funcionar.
    Nos outros casos as platafomas de consulta ou são pagas ou envolvem soluções diferentes como as que foram sugeridas neste tópico.
    Lembrando sempre que procuramos manter compatibilidade com Lazarus e com versões anteriores do Delphi até o Delphi 7. Então algumas soluções apresentadas precisam ser avaliadas e testadas em diversos cenários.

     

     @Sandro Felipe Adad @Antonio Gomes

    @Dfox @Alexandre de Paula

    Aproveitando os códigos colaborados neste tópico, criada uma solução funcional utilizando o navegador TWebBrowser do delphi ao invés do TEdge.

    Segue para avaliação, se puderem verificar Antonio Gomes, DFox  e Alexandre.

     

    ACBrConsultaCNPJNavegar.pas ConsultaCNPJIE.dpr ConsultaCNPJIE.dproj uConsultaCNPJ.dfm uConsultaCNPJ.pas ACBrConsultaCNPJNavegar.dfm

    • Curtir 3
  14. 47 minutos atrás, Douglas Conceição disse:

    Boa Tarde, nos aqui da minha empresa conseguimos contornar o problema de uma forma diferente, nao tem como eu mandar o projeto pois ja esta dentro do nosso projeto oficial, nao por fora. Mas irei passar os códigos que usamos.

    Resumindo, usamos o TChromiun e conectamos na pagina diretamente, porem para ficar visivelmente mais bonito, colocamos um codigo para retirar da pagina tudo que não é preciso.

    if frame.IsMain then
      begin
          // remove elemento
          Chromium1.Browser.MainFrame.ExecuteJavaScript('document.getElementById("barra-brasil").remove();', '', 0);
          // remove elemento
          Chromium1.Browser.MainFrame.ExecuteJavaScript(
          'var elementos = document.getElementsByTagName("' + 'header' + '");' +
          'for (var i = elementos.length - 1; i >= 0; i--) {' +
          '   elementos[i].parentNode.removeChild(elementos[i]);' +
          '}',
          '', 0
          );
          // remove elemento
          Chromium1.Browser.MainFrame.ExecuteJavaScript(
          'var elementos = document.getElementsByTagName("' + 'ul' + '");' +
          'for (var i = elementos.length - 1; i >= 0; i--) {' +
          '   elementos[i].parentNode.removeChild(elementos[i]);' +
          '}',
          '', 0
          );
          // remove elemento
          Chromium1.Browser.MainFrame.ExecuteJavaScript(
          'var elementos = document.getElementsByClassName("' + 'footer-wrapper' + '");' +
          'for (var i = elementos.length - 1; i >= 0; i--) {' +
          '   elementos[i].parentNode.removeChild(elementos[i]);' +
          '}',
          '', 0
          );
    
          // ajuste css do elemento
          Chromium1.Browser.MainFrame.ExecuteJavaScript(
          'var elementos = document.getElementsByClassName("' + 'col-md-8 form-group' + '");' +
          'for (var i = elementos.length - 1; i >= 0; i--) {' +
          '   elementos[i].className = "col-md-10 form-group";' +
          '}',
          '', 0
          );
    
          // remove elemento
          JavaScriptAux := 'var divElement = document.querySelector(".col-md-12");' +
                                          'if (divElement) {' +
                                          '   var h4Element = divElement.querySelector("h4");' +
                                          '   if (h4Element) {' +
                                          '       h4Element.remove();' +
                                          '   }' +
                                          '   var pElements = divElement.querySelectorAll("p");' +
                                          '   if (pElements.length > 0) {' +
                                          '       pElements[0].remove();' +
                                          '   }' +
                                          '}';
          Chromium1.Browser.MainFrame.ExecuteJavaScript(JavaScriptAux, '', 0);
    
          JavaScriptAux := 'var bodyElement = document.body;' +
                                          'if (bodyElement) {' +
                                          '   bodyElement.style.paddingTop = "30px";' + // Substitua "10px" pelo valor desejado
                                          '}';
    
          // Execute o código JavaScript no TChromium
          Chromium1.Browser.MainFrame.ExecuteJavaScript(JavaScriptAux, '', 0);
    
    
          // bloqueia edicao do cnpj
          Chromium1.Browser.MainFrame.ExecuteJavaScript(
          'document.getElementById("' + 'cnpj' + '").readOnly = true;'
          ,
          '', 0
          );
    
          // remove elemento
          Chromium1.Browser.MainFrame.ExecuteJavaScript(
          'var elementos = document.getElementsByClassName("' + 'btn btn-secondary' + '");' +
          'for (var i = elementos.length - 1; i >= 0; i--) {' +
          '   elementos[i].parentNode.removeChild(elementos[i]);' +
          '}',
          '', 0
          );
    
          CEFWindowParent1.Visible := true;
    
          // lê o html da pagina e obtem o dados
          if (Chromium1.Browser.MainFrame.Url = 'https://solucoes.receita.fazenda.gov.br/Servicos/cnpjreva/Cnpjreva_Comprovante.asp') then
          begin
              Chromium1.RetrieveHTML();
              Pesquisou := true;
              PanelNavegador.Visible := false;
    
          end;
    
      end;
    -------------
    Chromium1LoadEnd

    Abaixo uma imagem de como ficou...

    beeimgtmp-20230914-141905.png

    So que deixe essa tela redimensionavel, acabo de pegar um captcha diferente retornado pela receita.

    Como é o deploy do projeto chromium, o que precisa ser distribuido junto a aplicação delphi?

  15. 30 minutos atrás, Antonio Gomes disse:

    ficou tela cinza só? bota a dll junto.

    sim, copiei a dll (webView2Loader.dll) pra basta Debug, mas a tela navegar ficava cinza sem nada sendo exibido....

    O problema é que copiei a dll que veio no seu zip e no meu delphi a versão é diferente... kkk

    Copiei a dll que veio na minha instalação do delphi (C:\Users\Sandro\Documents\Embarcadero\Studio\21.0\CatalogRepository\EdgeView2SDK-0.9.488\Bin\x86 ) no meu caso e funcionou.. ai abriu a tela do navegador. Deu um erro de carga no endereço eletronico(email) com o cnpj padrão desse exemplo... depois verifico.

    Creio que ficou bem legal a sua idéia. Com relação a navegador acho melhor usar o edge que o chromium pois ja vem com o delphi.

    Agora olha isso:

    image.thumb.png.0c06c380fcfd5571eb7339bfac45625c.png

    de repente solicitou outro tipo de captcha... Será que estão mexendo no serviço ainda?

  16. 16 horas atrás, Antonio Gomes disse:

    Achei interessante sua idéia de usar o componente do ACBR na solução do workaround, só teriamos de ver com algum membro do ACBR se incorporariam esta nossa solução.

    Ah, na minha contribuição de exemplo eu não capturei todos os campos do html, apenas os que utilizo em minhas aplicações, teria de completar pra ficar de acordo com a classe do componente.

    Só alteraria a propriedade do zoom no seu exemplo para: 

    EdgeBrowser1.ZoomFactor := 0.7;

     

  17. 3 minutos atrás, edsonvieira disse:

    Sandro Felipe, primeiramente obrigado por compartilhar sua abordagem... 
    baixei os arquivos e tentei executar, porém não abriu o link no componente TEdgeBrowser, tentei com outros links e tbem não abriu, será que é algo na versão do Delphi (11) que estou utilizando ou tem alguma liberação/configuração que tenho que fazer para este componente facionar?

    Funciona na sua máquina acessar por algum browser o endereço abaixo?

    https://solucoes.receita.fazenda.gov.br/Servicos/cnpjreva/Cnpjreva_Solicitacao.asp

    O projeto foi construido no delphi 10.4.1

    image.thumb.png.d780ab064209f8a7612e6730c1a89e58.png

  18. Até que seja confirmada ou não a inviabilidade de uso da api pública pelo componente do ACBR, o que pode ser feito é usar usarmos a consulta pública como foi sugerido aqui no forum. Ou seja, um projeto que contenha um navegador (edge), possibilitando que o próprio usuário clique no botão (Sou Humano) e efetue a consulta manualmente. Após a consulta manual é possível extrair os dados do próprio html resultante. Fiz um protótipo funcional que efetua isso a quem interessar.

     

    ConsultaCNPJ.dpr ConsultaCNPJ.dproj uConsultaCNPJ.dfm uConsultaCNPJ.pas

    • Curtir 7
    • Obrigado 1
  19. 50 minutos atrás, Italo Giurizzato Junior disse:

    Sandro,

    O MD5 vai ser gerado em cima do XML do BP-e ou em cima de outra coisa?

    Pelo o que eu entendi devemos gerar o MD5 do PAF-BPe.

    Quem é o PAF-BPe ?

    PAF-Bpe é O Programa Aplicativo Fiscal – Bilhete de Passagem Eletrônico (PAF-BP-e)

    Tem razão Italo, devem ser informações do software emissor do BPE, nada a ver com o xml do BPE em si.

     

  20. 46 minutos atrás, Italo Giurizzato Junior disse:

    Boa tarde Sandro,

    No meu entendimento todas essas informações serão geradas, concatenadas e informadas no campo InfCpl, depois o XML deve ser gerado, assinado, validado e por fim enviado para a SEFAZ. 

    A duvia esta ai, se gero o MD5 na tag infcpl e depois assino o xml com o certificado digital, como é feita a checagem posterior deste arquivo pelo MD5, ja que foi alterado o arquivo original que agora está com a seção <signature> preenchida?

    Se uso o MD5Checker do arquivo todo ele não corresponde mais com o código que foi gerado no XML, pois inclusive consta o próprio código MD5 na tag infcpl alem da tag signature preenchida...

    Então suponho que no momento da geração do MD5 algumas informações não devam ser incluídas?

    Não sei se consegui explicar a minha dúvida sobre a checagem deste MD5 pós transmissão.

    É possível checar o MD5 a partir de um arquivo neste caso, ou tem de ser desmembrado pra checagem?

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