Ir para conteúdo
  • Cadastre-se

MagoSchmidt

Membros Pro
  • Total de ítens

    61
  • Registro em

  • Última visita

Posts postados por MagoSchmidt

  1. No Santander tem que fazer em dois passos. No primeiro uma autenticação gerando um "ticket" e no segundo a inclusão propriamente dita. Então um exemplo de uso seria o seguinte:

    Boleto.Banco.TipoCobranca := cobSantander;
    Boleto.Configuracoes.WebService.Ambiente := taHomologacao;
    Boleto.Configuracoes.WebService.NumeroSerie := NUMERO_SERIE_CERTIFICADO;
    Boleto.Configuracoes.WebService.SSLCryptLib := cryWinCrypt;
    Boleto.Configuracoes.WebService.SSLHttpLib := httpWinHttp;
    Boleto.Configuracoes.WebService.SSLXmlSignLib :=  xsLibXml2;
    .
    . // preencher os dados do título
    .
    Boleto.ListadeBoletos.Add(Titulo);
    Boleto.Configuracoes.WebService.Operacao := tpTicket;
    if Boleto.Enviar then begin
      Boleto.Configuracoes.WebService.Operacao := tpInclui;
      if Boleto.Enviar then begin
    .
    .
    .


    ```

     

  2. Sei que este post é antigo mas o problema persiste. Eu mantive minha versao da unit durante este tempo mas agora tive que fazer uma atualização geral e o problema retornou. A unit que eu havia enviado anteriormente era uma sobrescrição da classe TACBrNFSeDANFSeFR para evitar alteraçoes no codigo original do Acbr. 

    Desta vez entao estou enviando as mudanças feitas na unit original para avaliação dos Srs.

    A ideia central (que torna o processo bem mais rápido) é:

    frxReport.PreviewPages.AddFrom(frxReportTemp);

    na linha 315

    Abraços

     

     

     

    ACBrNFSeDANFSeFR.pas

  3. Deu certo, Diego!

    Muito obrigado mesmo pelo Apoio! Ser-lhe-ei eternamente grato!

    Pessoal do Acbr: Estas mudanças que o Diego colocou aí corrigem a NFS-e para o novo provedor (Versa Tecnologia) em Cataguases. Não sabemos se afeta UBÁ já que estes provedores sao doidos mesmo :-)

    Obrigado a todos!

     

  4. 1 hour ago, Diego Paulo Sabino said:

    Boa tarde,

     

    Consegui funcionar sim, mas precisei alterar no fonte do arquivo TNFSeW_ABRASFv2.pas para atender a questão do preenchimento do Tomador.

    Gostaria até de saber (pois nunca precisei disto antes) como podemos fazer esta alteração nos fontes oficiais para ficar definitivo?

    Essa alteração atende a cidade de Cataguases utilizando a versão 2.02. Verifiquei que em outras cidades, onde usam versões diferentes desta, a forma de preenchimento o Tomador é diferente.

    A linha comentada abaixo é do fonte oficial. Veja que apenas tirei o proVersaTecnologia.

    procedure TNFSeW_ABRASFv2.GerarTomador;
    begin
      if (NFSe.Tomador.IdentificacaoTomador.CpfCnpj <> '') or
         (NFSe.Tomador.RazaoSocial <> '') or (NFSe.Tomador.Endereco.Endereco <> '') or
         (NFSe.Tomador.Contato.Telefone <> '') or (NFSe.Tomador.Contato.Email <> '') then
      begin
        //if (FProvedor in [proActcon, proELv2, proVersaTecnologia, proISSJoinville,
        if (FProvedor in [proActcon, proELv2, proISSJoinville,
            proSmarAPDABRASF, proNotaInteligente, proGiss, proTcheInfov2, proiiBrasilv2, profintelISS]) or
           ((FProvedor in [proActconv201, proActconv2]) and (FVersaoDados = '2.01')) then
          Gerador.wGrupo('TomadorServico')
        else
          Gerador.wGrupo('Tomador');

     

    Vou anexar o Arquivo.ini, pois tive que alterá-lo bastante também. Entendo que da forma que estava, atendia a cidade de Ubá. Nesta atende a Cataguases. Como falei acima, por ser uma novidade pra mim, não consegui deixá-lo de maneira "genérica" para toda cidade que eventualmente usará este provedor.

     

    Espero ter ajudado.

     

     

     

    VersaTecnologia.ini 6.19 kB · 1 download

    Diego, ajudou muito sua resposta! Muito obrigado, mesmo!

    Fiz as modificaçõe s que vc passou no .ini e no codigo fonte. Consegui evoluir mas agora estou recebendo a mensagem abaixo:

    Alguma ideia salvadora?

    msg.png

  5. Juliomar, o problema foi resolvido. Graças ao assunto que voce mencionou me ocorreu testar uma coisa e deu certo!

    Como se trata de empresa de prestação de serviço nao existe recolhimento de ICMS. Sendo assim vPIS e vCOFINS em ICMSTot tem que estar ZERADOS! Estes campos devem ser preenchidos em ISSQNtot.

    Bem óbvio depois que se sabe :-)

    Segue em anexo o XML correto!

    Obrigado pela luz!

    53180500369991000184650010000084521000084521-nfe.xml

    • Curtir 1
  6. Juliomar, muito obrigado por sua disponibilidade em responder. No entanto eu há havia feito isto e é aí que reside a dificuldade.

    Veja na imagem abaixo (Erro602.png) que o soma do PIS de cada iteml (9.24) corresponde SIM, ao total (também 9.24)

    Esta é outra NF porem estou tendo este problema em todas. Com certeza está me escapando algum tipo de informacao (talvez relacionada ao CST, ou a forma como os impostos estao sendo informados) não diretamente relacionada à SOMA do PIS, pura e simples.

     Estou anexando seu XML formatado desta vez para facilitar a análise

    53180500369991000184650010000084541000084542-nfe.xml

    Erro602.png

  7. Boa tarde, Srs!

    Estou enfrentando uma situacao estranha com este erro. Já pesquisei no forum e todas as soluçoes apontam para o óbvio: A soma dos itens em imposto.PIS.PISAliq.vPIS tem que ser igual a total.ICMSTot.vPIS.

    No entanto, no XML em anexo isto já esta correto, e mesmo assim continuo recebendo a rejeição 602.

    Alguem temalguma idéia do que pode ser?

    Agradeço antecipadamente!

     

    53180500369991000184650010000084531000084537-nfe.xml

  8. Bom dia, Pessoal!

    Alguém sabe me dizer se o ACBRBoleto já está tratando o registro online de boleto?

    Estou anexando documentação técnica do Bradesco sobre este assunto, caso haja interesse.

    1. Qual tipo de Certificado utilizado para o ambiente de homologação?
    Certificado ICP-Brasil, preferencialmente modelo A1
    2. Qual o tipo de extensão do arquivo para a assinatura?
    O tipo de extensão é .PEM
    3. O serviço de registro online é SOAP ou REST?
    A entrada é REST e a saída é um SOAP
    4. Qual o endpoint URL de Homologação?
    https://cobranca.bradesconetempresa.b.br/ibpjregistrotitulows/registrohomologacao
    5. Qual o endpoint URL de registro? https://cobranca.bradesconetempresa.b.br/ibpjregistrotitulows/registrotitulo
    1000
    29
    6. Para o ambiente de homologação é necessário aderir à modalidade do
    registro online de cobrança?
    Sim, é necessário.
    7. Qual o tempo médio entre a solicitação de registro do boleto e a efetivação do registro na CIP?
    1 segundo
    8. É necessário criptografar a mensagem antes de trafegá-la pela rede HTTPS?
    É necessário assinar a mensagem no padrão PKCS#7, com os algoritmos
    recomendados para assim enviar ao banco.
    9. Qual a definição para a etapa 02 solicita consulta na CIP?
    O webservice da consulta CIP não está mais no escopo do projeto.
    10. O certificado é emitido pelo Bradesco ou pela empresa certificadora
    digital?
    A emissão de um certificado ICP Brasil é feita pelo Receita Federal, ou as autoridades certificadoras, todas as informações estão no site http://www.iti.gov.br/
    11. Como conseguir um certificado?
    Escolher uma Autoridade Certificadora (AC) da ICP-Brasil;
    Solicitar no próprio portal da internet da AC escolhida a emissão de certificado digital de pessoa física ou jurídica. Os tipos mais comercializados são: A1 (validade de um ano – armazenado no computador) e A3 (validade de até cinco anos – armazenado em cartão ou token criptográfico). A AC também pode informar sobre aplicações, custos, formas de pagamento, equipamentos, documentos necessários e demais exigências. Além desses, há os do tipo T3 e S3, que também tem validade de até cinco anos.
    Para a emissão de um certificado digital é necessário que o solicitante vá pessoalmente a uma Autoridade de Registro (AR) da Autoridade Certificadora escolhida para validar os dados preenchidos na solicitação. Esse processo é chamado de validação presencial e será agendado diretamente com a AR que instruirá o solicitante sobre os documentos necessários. Quem escolher o certificado tipo A3 poderá receber na própria AR o cartão ou token com o certificado digital.
    A AC e/ou AR notificará o cliente sobre os procedimentos para baixar o certificado e deverá prestar todo o suporte técnico quando solicitada pelo usuário.
    12. Precisa enviar o JSON original? Se sim, como devo enviar?
    Não é necessário, somente o envio da assinatura.
    13. A mensagem de assinatura do JSON será enviada no corpo do POST?
    Sim.
    14. Tipo do arquivo da chave pública?
    Tipo. cer
    30
    15. É preciso alguma procuração/assinatura digital para a emissão dos boletos?
    Sim, o certificado digital é utilizado para assinatura da mensagem da emissão de boletos.
    16. Anualmente junto com a mudança da Presidência também há a alteração do certificado, assim sendo anualmente temos que realizar a atualização também para emissão dos boletos?
    Sim, o certificado digital é utilizado para assinatura da mensagem da emissão de boletos.
    17. Já temos acesso via Net Empresa, é necessário alguma configuração adicional para utilizar o serviço?
    Precisa ter contrato com a Cobrança registrada.
    18. No fluxo constam 3 etapas. Quando recebemos a confirmação de registro com o código para consulta, já podemos assumir que o título foi registrado e guardar o código para consultas futuras ou temos que obrigatoriamente realizar a consulta logo após o recebimento desse código para só então ter certeza que o título foi registrado?
    No recebimento da confirmação, pode assumir que o título foi registrado.
    19. Temos várias empresas que operam com a cobrança, e possuímos certificados Digitais ICP Brasil para cada uma delas. Existe a possibilidade de utilizarmos o mesmo certificado para todas. Alguma parametrização no Bradesco que indique que o certificado vale para todas as empresas, ou devemos acessar utilizando um certificado por empresa?
    Pode se utilizar o mesmo certificado, não está previsto a verificação do certificado com o CNPJ da empresa.
    20. Como devem ser preenchidos os campos da request (mensagem Json)?
    O request está incompleto e fora de ordem, estão faltando diversos campos.
    Todos os campos devem ser enviados, se não obrigatórios devem ser preenchidos com brancos ou 0, de acordo com o seu tipo( alfanuméricos ou numéricos). Um dos campos que devem ser enviados é o nuTitulo ou com 0 ou valorado de acordo com a sequência do título correspondente a carteira e negociação do cliente.
    21. Qualquer pergunta referente ao arquivo remessa ou a carteira de cobrança.
    O cliente deve verificar com o gerente responsável pela conta.
    22. O retorno do registro de cobrança online pode ser disponibilizado via VAN (ao invés de recepção via Net Empresa)?
    Nesse caso como é um webservice não, o retorno é para a origem do request.
    No caso de arquivos remessa/retorno, que é outra modalidade, sim.
    31
    23. Necessita certificados de segurança no nosso domínio (SSL)?
    Não.
    24. Quais os valores dos certificados para 04 CNPJs (Valores unitários também)?
    Os valores deverão ser verificados juntos aos fornecedores de certificados (exemplo: Serasa, Verisign, Certisign, etc).
    25. Certificado digital em arquivo (.pem), token , instalado ou uma leitora no servidor?
    .pem
    26. Existe certificado homologado (válido) para testes?
    Não, é o seu próprio certificado que será utilizado no ambiente de homologação.
    27. Qual o significado do erro: {"cdErro":"810", "msgErro":"Erro Certificado / Formatação dos campos da mensagem invalida [0x00d30003]"}?
    Não foi validada a assinatura recebida.
    28. Se por algum motivo o serviço on-line fique indisponível por tempo indeterminado ou por elevado tempo impedindo o registro da cobrança,
    temos alguma contingência por parte do Bradesco?
    O cliente pode fazer o registro via remessa se for o caso.
    29. Onde posso obter o número de contrato?
    No caso do erro apontado é o próprio CNPJ do cliente.
    30. Em qual campo devo informar o contrato?
    Nos campos que são informados o CPF/CNPJ
    31. No campo “nuCliente” que informação devo passar ?
    Essa informação é de responsabilidade do cliente, não é consistida pelo banco, é o equivalente a “Seu Número”.
    32. O que significa o erro -2?
    O contrato apontado no erro “-2” é o contrato do net empresa. Esse número é o próprio CNPJ do cliente. Esse CNPJ deve estar com contrato ativo no net empresa.
    33. O que é origem do request?
    O registro Online de cobrança é um Webservice que recebe o Request e devolve o retorno para a aplicação que efetuou o Request, esta aplicação é o que chamamos de origem do Request.
    34. O recurso de registro on line está operando?
    Sim, já está operando.
    35. Há algum cliente utilizando esse recurso?
    Sim, há clientes já utilizando.
    36. Qual telefone de contato válido para que possam esclarecer as dúvidas?
    O contato telefônico será sempre iniciado pelo DCPS, previamente agendado. Por favor, contatar o gerente comercial.
    32
    37. Quais mídias serão enviadas de hora em hora?
    O cliente deve verificar com o gerente responsável pela conta.
    38. Existe alguma maneira de verificar se minhas requisições estão chegando no ambiente de homologação?
    Poderia enviar a mensagem assinada para avaliarmos o conteúdo primeiro, para verificar se suas requisições estão chegando em ambiente homologação será necessário o agendamento com outras áreas.
    39. Como podemos enviar uma mensagem a ser impressa no boleto? Pelo manual não tem nenhum campo para enviar esta informação?
    Não temos campo no layout para mensagem do cliente. O cliente deve tratar na sua fronteira. Agora se deseja imprimir uma mensagem para todos seus boletos, você pode solicitar o cadastramento na sua negociação, para isso deve-se contatar seu gerente comercial.
    40. Como podemos tratar o registro de retorno?
    O registro de retorno é um JSON, o cliente deve tratar o JSON puro.
    41. Como podemos saber se através dela, a cobrança foi registrada ou não?
    O campo cdErro = 0 indica que a solicitação foi atendida e a cobrança está registrada.
    42. Para realizar a homologação dos boletos e assinar a mensagem é obrigatório o uso do certificado digital da empresa cadastrada no banco ou posso utilizar o certificado de uma outra empresa que não esta cadastrada no banco?
    No momento não fazemos a validação do CNPJ da empresa cadastrada com o certificado utilizado, portanto pode ser utilizado o certificado válido.
    43. Se na comunicação com o Bradesco a empresa não conseguir receber a mensagem de retorno, como deveremos proceder?
    Não é para acontecer, mas caso aconteça, time-out por exemplo, poderá ser enviada uma nova comunicação com os mesmos dados e o mesmo nuNossoNumero (campo utilizado como chave) que retornará 0 para OK ou 5 – inclusão efetuada.
    44. Erro -2?
    Significa que o cnpj da mensagem não tem contrato com o net, verificar com o comercial
    45. Qual é content/type que devo configurar no POST da assinatura?
    application/json
    46. Como é feito a parte de assinatura?
    Os arquivos contendo a chave pública e privada devem ser convertidos para .pem e a mensagem deve ser assinada com os pares público e privado.
    33
    47. Qual o motivo do erro 810?
    O erro ‘810’ ocorre pelos motivos:
    Invalidade do certificado (seja ele estar vencido, ou não ser um ICP válido);
    AC não instalada no servidor;
    PKSC#7 inválido.
    48. Os clientes correntistas do Bradesco ou não, não terão opção para emissão da segunda via do seu boleto online?
    Uma vez registrado a segunda via pode ser obtida pelo devedor, correntista ou não por meio do site institucional do banco www.bradesco.com.br.

     

    BRADESCO_Manual_Registro_de_Boleto_Bancario_Online_Jun17.pdf

    • Curtir 1
    • Obrigado 1
  9. Senhores, este tópico é antigo mas como estava sem resposta vou reabrir para acrescentar o que descobri.

    A competencia no provedor BHISS é determinada pelo campo DataEmissaoRPS. Então você pode colocar neste campo uma competencia passada. A data da emissao da NFSe será a data em que a prefeitura receber a nota.

    Mas ATENÇÂO! Suspeito que isto pode dar problema se a numeração nao seguir a data de emissão. Entao, use somente se ainda nao emitiu nenhuma nota na competencia atual.

  10. Está em ACBrNFSeWebServices.CancelaNFSe função TWebServices.CancelaNFSe

    Alguem tem alguma posição atualizada sobre este problema. Acredito que seja um comportamento inadequado já que o provedor BHISS não implementa o serviço ConsultaNFSeRPS (que é usado para fazer esta consulta).

    Desabilitar a visualizaçao também nao é uma soluçao adequada pois podemos querer manter a visualizaçao das outras mensagens.

    Abraços!

     

  11. Senhores,

    Tenho uma rotina que busca as NFS-e no WebService de BH usando a função:

    ACBrNFSe.WebServices.ConsultaNFSe(DataInicial,DataFinal);

    Ao retornar um conjunto grande de notas (acima de 500), verifiquei que a função ACBrUtil.ParseText (que faz a subsituitção dos HTML entities) está muito lenta por causa do tamanho do arquivo XML.

    Identifiquei que a lentidão era causada pela ineficiencia da funcao StringReplace. Ao pesquisar na NET vi muita gente falando deste problema e propondo correções. Achei a seguinte função que tornou o processo bem mais rápido. Esta funcionando bem aqui para o meu caso. Se for do interesse de vocês, alterar lá!

    Abraços

     

      Function NewStringReplace(const S, OldPattern, NewPattern: string;  Flags: TReplaceFlags): string;
      // Moacir: StringReplace original é muito lenta! Achei este outro na internet!!!
      var
        OldPat,Srch: string; // Srch and Oldp can contain uppercase versions of S,OldPattern
        PatLength,NewPatLength,P,i,PatCount,PrevP: Integer;
        c,d: pchar;
      begin
        PatLength:=Length(OldPattern);
        if PatLength=0 then begin
          Result:=S;
          exit;
        end;

        if rfIgnoreCase in Flags then begin
          Srch:=AnsiUpperCase(S);
          OldPat:=AnsiUpperCase(OldPattern);
        end else begin
          Srch:=S;
          OldPat:=OldPattern;
        end;

        PatLength:=Length(OldPat);
        if Length(NewPattern)=PatLength then begin
          //Result length will not change
          Result:=S;
          P:=1;
          repeat
            P:=PosEx(OldPat,Srch,P);
            if P>0 then begin
              for i:=1 to PatLength do
                Result[P+i-1]:=NewPattern;
              if not (rfReplaceAll in Flags) then exit;
              inc(P,PatLength);
            end;
          until p=0;
        end else begin
          //Different pattern length -> Result length will change
          //To avoid creating a lot of temporary strings, we count how many
          //replacements we're going to make.
          P:=1; PatCount:=0;
          repeat
            P:=PosEx(OldPat,Srch,P);
            if P>0 then begin
              inc(P,PatLength);
              inc(PatCount);
              if not (rfReplaceAll in Flags) then break;
            end;
          until p=0;
          if PatCount=0 then begin
            Result:=S;
            exit;
          end;
          NewPatLength:=Length(NewPattern);
          SetLength(Result,Length(S)+PatCount*(NewPatLength-PatLength));
          P:=1; PrevP:=0;
          c:=pchar(Result); d:=pchar(S);
          repeat
            P:=PosEx(OldPat,Srch,P);
            if P>0 then begin
              for i:=PrevP+1 to P-1 do begin
                c^:=d^;
                inc(c); inc(d);
              end;
              for i:=1 to NewPatLength do begin
                c^:=NewPattern;
                inc(c);
              end;
              if not (rfReplaceAll in Flags) then exit;
              inc(P,PatLength);
              inc(d,PatLength);
              PrevP:=P-1;
            end else begin
              for i:=PrevP+1 to Length(S) do begin
                c^:=d^;
                inc(c); inc(d);
              end;
            end;
          until p=0;
        end;
      end;

     

  12. O que eu fiz foi usar uma dica conhecida que resolve este problema de degradação do FastReport em multiplos relatorios.

    Ao invés de um PrepareReport(FALSE) que vai acumulando os relatórios (e degradando) usa-se um segundo frxReport chamando o PreviewPages.AddFrom(frxReport).

    Isto foi feito em uma unit separada em anexo. A única coisa que tive que alterar no código original foi tornar o método CarrgaDados protected.

    Abraços

    UPolyAcbrDANFSE.pas

  13. Ao gerar um relatorio com mais de 200 notas fiscais (sim, o cliente imprime tudo de uma vez para enviar ao contador) fica absurdamente lento.

    Identifiquei que o problema é um bug conhecido do fast report neste ponto:

    function TACBrNFSeDANFSeFR.PrepareReport(NFSe: TNFSe): Boolean;

    .

    .

    .

          for I := 0 to TACBrNFSe(ACBrNFSe).NotasFiscais.Count - 1 do
          begin

            CarregaDados(TACBrNFSe(ACBrNFSe).NotasFiscais.Items.NFSe);

            if (I > 0) then
              Result := frxReport.PrepareReport(false)
            else
              Result := frxReport.PrepareReport

          end;

    Onde o PrepareReport(false) acrescenta um novo relatorio a cada NFs-e (usando o recurso de multi-relatorios). Mas depois de uma certa quantidade fica muito lento.

    Fiz algumas alterações nos fontes para tornar isto mais rapido. Qual o procedimento para submeter a alteração à eventual incorporação definitiva?

    Abraços

     

     

     

  14. Senhores!

    Sabem se o ACBr suporta assinatura via WEB (através de javascript ou coisa parecida). Meu problema é o seguinte, tenho um ERP WEB (feito em Delphi) e faço o envio das notas fiscais pelos clientes.

    O GRAAAAAAAAAAAANDE problema é como acessar o certificado para assinar os arquivos XML. Até ontem eu resolvia este problema exigindo do cliente um certificado A1, fazia uma copia e instalava no meu servidor.

    Esta solução, evidentemente, não funciona para certificados A3.

    Caso o ACBr não tenha este tipo de suporte,estou pensando em adaptar alguma bibliocate existente (como a jsrasign - https://github.com/phelipealves/assinaturadigitaljavascript)

    com este objetivo!

    Comentários de quem já trilhou este caminho?

    Abraços!

     

     

     

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

The popup will be closed in 10 segundos...