Ir para conteúdo
  • Cadastre-se

leonardo.gomes

Membros
  • Total de ítens

    13
  • Registro em

  • Última visita

Community Answers

  1. leonardo.gomes's post in ACBR-8991 ISSFortaleza - Operação com tomador/intermediário estrangeiro - Preenchimento do grupo Exportação. was marked as the answer   
    Prezados,
    Ao enviar um DPS/RPS para a Prefeitura de Fortaleza com tomador/intermediário estrangeiro, é obrigatório o preenchimento do Grupo de Exportação (Grupo de informações sobre transações entre residentes ou domiciliados no Brasil e residentes ou domiciliados no exterior).
    Dessa forma, foi necessário realizar os seguintes ajustes:
    ACBrNFSeXGravarXml_ABRASFv1.pas
    Criação do método GerarComercioExterior.
    ISSFortaleza.GravarXml.pas
    Sobrescrita do método GerarComercioExterior para o devido preenchimento das informações.
    Observação:
    O campo tpMoeda, no layout da NFS-e Nacional, segue o padrão BACEN. Já no layout da NFS-e de Fortaleza, o campo segue o padrão ISO. Sendo assim, foi criado o objeto MoedasBACENISO.pas, contendo o DE/PARA para conversão entre os padrões.

    Manual ISSFortaleza: https://ibs.sefin.fortaleza.ce.gov.br/ibs/Canal/40/Generico/3695/Ler
    ACBrNFSeXGravarXml_ABRASFv1.pas ISSFortaleza.GravarXml.pas MoedasBACENISO.pas
  2. leonardo.gomes's post in ACBR-9014 - NFSe Macaé - Provedor Tiplan - Modelo ABRASF - Operação com preenchimento do grupo de IBS/CBS e impostos retidos. was marked as the answer   
    Prezados,
      Ao validar a emissão do DPS para o município de Macaé, no modelo ABRASF, com o preenchimento do grupo IBS/CBS contendo impostos retidos, identificamos a necessidade de informar também os valores das alíquotas correspondentes.
    Dessa forma, foi realizada a seguinte alteração no fonte: Objeto: Tiplan.GravarXml.pas Método: TNFSeW_Tiplan203.GerarValores Ajuste: inclusão do preenchimento dos campos AliquotaPis e AliquotaCofins   Alteração aplicada:
      function TNFSeW_Tiplan203.GerarValores: TACBrXmlNode;
    begin
      Result := inherited GerarValores;
      if (Result <> nil) and not
         (NFSe.Servico.Valores.tribFed.CST in [cstVazio, cst00, cst08, cst09]) then
      begin
        Result.AppendChild(AddNode(tcStr, '#', 'SituacaoTributariaPISCOFINS', 2, 2, 1,
                                   CSTToStr(NFSe.Servico.Valores.tribFed.CST), ''));
        Result.AppendChild(AddNode(FormatoAliq, '#15', 'AliquotaPis', 1, 15, 0,
                                      NFSe.Servico.Valores.AliquotaPis, DSC_VALIQ));
        Result.AppendChild(AddNode(FormatoAliq, '#15', 'AliquotaCofins', 1, 15, 0,
                                   NFSe.Servico.Valores.AliquotaCofins, DSC_VALIQ));
      end;
    end;
     
      Segue em anexo o objeto alterado e os XML descaracterizados. Tiplan.GravarXml.pas XML Enviado.xml XML Retornado.xml
  3. leonardo.gomes's post in ACBR-8702 ISSSaoPaulo - Adequação do provedor para atender ao novo endpoint Síncrono (nfews). was marked as the answer   
    Prezados,
    Realizei a adequação da classe do provedor de São Paulo para suportar o novo endpoint:
    Conforme o manual da Prefeitura de São Paulo: https://nfews.prefeitura.sp.gov.br/lotenfe.asmx?WSDL Esse novo endereço do serviço síncrono atende ambos os layouts (versões 1 e 2), e por isso recomendamos a atualização para esse endpoint.
    Solicito, por gentileza, que avaliem a possibilidade de incorporar essa correção ao repositório oficial.
    Observação: Não atualizei o arquivo ACBrNFSeXServicos.ini, pois o ERP da software house a que presto serviço possui uma tela de configurações que sobrescreve as informações desse arquivo, permitindo ao usuário definir o método a ser utilizado (Teste, Síncrono, Assíncrono), a versão e a URL a ser acessada.
    ISSSaoPaulo.Provider.pas
  4. leonardo.gomes's post in ACBR-8701 NFS-e nacional - Operação com benefício municipal was marked as the answer   
    Prezados,
     
    Para atender à operação de envio de DPS ao ambiente nacional em cenários com benefício fiscal, foi necessário realizar um ajuste pontual no método GerarXMLBeneficioMunicipal do objeto PadraoNacional.GravarXml.pas, de modo que seja enviada apenas a informação do campo nBM (Identificador do benefício parametrizado pelo município).
    Com o envio exclusivo desse campo, o próprio ambiente nacional passa a identificar corretamente qual alíquota deve ser aplicada, conforme a parametrização do benefício.
    - ALTERAÇÃO
    DE:
    function TNFSeW_PadraoNacional.GerarXMLBeneficioMunicipal: TACBrXmlNode;
    begin
      Result := nil;
      if NFSe.Servico.Valores.tribMun.nBM <> '' then
      begin
        Result := CreateElement('BM');
    //    Result.AppendChild(AddNode(tcStr, '#1', 'tpBM', 1, 1, 1,
    //                             tpBMToStr(NFSe.Servico.Valores.tribMun.tpBM), ''));
        Result.AppendChild(AddNode(tcStr, '#1', 'nBM', 14, 14, 1,
                                             NFSe.Servico.Valores.tribMun.nBM, ''));
        if NFSe.Servico.Valores.tribMun.vRedBCBM > 0 then
          Result.AppendChild(AddNode(tcDe2, '#1', 'vRedBCBM', 1, 15, 1,
                                         NFSe.Servico.Valores.tribMun.vRedBCBM, ''))
        else
          Result.AppendChild(AddNode(tcDe2, '#1', 'pRedBCBM', 1, 5, 1,
                                        NFSe.Servico.Valores.tribMun.pRedBCBM, ''));
      end;
    end;

    PARA:

     
    function TNFSeW_PadraoNacional.GerarXMLBeneficioMunicipal: TACBrXmlNode;
    begin
      Result := nil;
      if NFSe.Servico.Valores.tribMun.nBM <> '' then
      begin
        Result := CreateElement('BM');
    //    Result.AppendChild(AddNode(tcStr, '#1', 'tpBM', 1, 1, 1,
    //                             tpBMToStr(NFSe.Servico.Valores.tribMun.tpBM), ''));
        Result.AppendChild(AddNode(tcStr, '#1', 'nBM', 14, 14, 1,
                                             NFSe.Servico.Valores.tribMun.nBM, ''));
        if NFSe.Servico.Valores.tribMun.vRedBCBM > 0 then
          Result.AppendChild(AddNode(tcDe2, '#1', 'vRedBCBM', 1, 15, 1,
                                         NFSe.Servico.Valores.tribMun.vRedBCBM, ''))
        else if NFSe.Servico.Valores.tribMun.pRedBCBM > 0 then
          Result.AppendChild(AddNode(tcDe2, '#1', 'pRedBCBM', 1, 5, 1,
                                        NFSe.Servico.Valores.tribMun.pRedBCBM, ''));
      end;
    end;
     
    PadraoNacional.GravarXml.pas
  5. leonardo.gomes's post in [ACBR-8616] ProPublica - Envio de DPS/RPS para Itajaí - Adequação do novo leiaute criado para atender a NFS-e nacional was marked as the answer   
    Prezados, 
    Para atender o envio de DPS/RPS para o município de Itajaí no padrão do novo leiaute, foi necessário incluir o tratamento para assinatura do grupo de RPS. 
    - Alterações realizada: 
    Objeto: Publica.Provider.pas
    Método: TACBrNFSeProviderPublica.Configuracao
    Trecho alterado:

    with ConfigAssinar do
      begin
        RPS := True;
        LoteRps := True;
        ConsultarSituacao := True;
        ConsultarLote := True;
        ConsultarNFSeRps := True;
        ConsultarNFSe := True;
        CancelarNFSe := True;
        LoteGerarNFSe := True;
      end;

    Observação: Segue arquivo alterado em anexo, por favor, avaliar a possibilidade de subir no repositório.
    Publica.Provider.pas
  6. leonardo.gomes's post in Envio de DPS para o ambiente nacional com operação de exportação de serviços. was marked as the answer   
    Prezados, boa tarde!
    Ao realizar o envio de DPS para o ambiente nacional em operações de exportação de serviços (quando o cliente ou o intermediário é localizado no exterior), é obrigatório informar os dados de comércio exterior. Atualmente, o ambiente nacional permite que o grupo seja enviado mesmo com o campo “valor do serviço prestado” zerado.
    Entretanto, o método GerarXMLComercioExterior, localizado no arquivo PadraoNacional.GravarXml.pas, possui uma validação que somente preenche o grupo de comércio exterior quando o valor do serviço é maior que zero. Para viabilizar o envio da DPS e atender ao layout, realizei um ajuste no método para que a inclusão do grupo ocorra sempre que o campo tpMoeda for maior que zero, uma vez que esse campo é obrigatório.
    Erro retornado pelo emissor nacional:
    {"tipoAmbiente":2,"versaoAplicativo":"SefinNac_Pre_1.4.0","dataHoraProcessamento":"2025-12-04T13:01:54.9602862-03:00","idDPS":"DPS330455721190597100010500078000000000000106","erros":[{"Codigo":"E0330","Descricao":"É obrigatório prestar informações de comércio exterior para as situações de exportação de serviços."}]}   Condição antiga: NFSe.Servico.comExt.vServMoeda Nova condição: NFSe.Servico.comExt.tpMoeda Encaminho em anexo o objeto ajustado.

    Solicito, por gentileza, avaliação quanto à possibilidade de disponibilizar essa alteração no repositório.
    PadraoNacional.GravarXml.pas
  7. leonardo.gomes's post in ISSSaoPaulo - Correção na assinatura do DPS/RPS para atender emissão da NFS-e no padrão nacional. was marked as the answer   
    Prezados,
    Para viabilizar o envio de RPS/DPS no layout 2.0 da Prefeitura de São Paulo utilizando as fontes atualizadas do ACBRNFSex, foi necessário aplicar uma correção no método AssinaturaAdicional da classe ISSSaoPaulo.Provider.
    Encaminho em anexo o objeto atualizado com o ajuste realizado.
    Peço, por gentileza, que avaliem a possibilidade de incorporar essa correção ao repositório oficial.
    Conforme o manual da Prefeitura de São Paulo:
    Correção realizada:
    procedure TACBrNFSeProviderISSSaoPaulo.AssinaturaAdicional(Nota: TNotaFiscal);
    var
      sSituacao, sISSRetido, sCPFCNPJTomador, sIndTomador, sTomador,
      sCPFCNPJInter, sIndInter, sISSRetidoInter, sInter, sAssinatura, sNIF: string;
      iTamanhoIM: Integer;
    begin
      with Nota do
      begin
        sSituacao := EnumeradoToStr(NFSe.SituacaoNfse, ['N', 'C'], [snNormal, snCancelado]);
        sISSRetido := EnumeradoToStr(NFSe.Servico.Valores.IssRetido,
                                     ['N', 'S'], [stNormal, stRetencao]);
        // Tomador do Serviço
        sCPFCNPJTomador := OnlyNumber(NFSe.Tomador.IdentificacaoTomador.CpfCnpj);
        if sCPFCNPJTomador = '' then
          sIndTomador := '3'
        else
          if Length(sCPFCNPJTomador) <= 11 then
            sIndTomador := '1'
          else
            if Length(sCPFCNPJTomador) <= 14 then
              sIndTomador := '2';
        sTomador := sIndTomador + Poem_Zeros(sCPFCNPJTomador, 14);
        // Prestador Intermediario
        sCPFCNPJInter := OnlyNumber(NFSe.Intermediario.Identificacao.CpfCnpj);
        if sCPFCNPJInter = '' then
          sIndInter := '3'
        else
          if Length(sCPFCNPJInter) <= 11 then
            sIndInter := '1'
          else
            if Length(sCPFCNPJInter) <= 14 then
              sIndInter := '2';
        sISSRetidoInter := EnumeradoToStr(NFSe.Intermediario.IssRetido,
                                          ['N', 'S'], [stNormal, stRetencao]);
        sNIF := trim(NFSe.Intermediario.Identificacao.Nif);
        if sIndInter = '3' then
          sNIF := NaoNIFToStr(NFSe.Intermediario.Identificacao.cNaoNIF);
        if FPVersaoDFe = '2' then
        begin
          if (sCPFCNPJInter <> '') then
            sInter := sIndInter + Poem_Zeros(sCPFCNPJInter, 14) + sISSRetidoInter + sNIF
          else
            sInter := '';
          iTamanhoIM := 12;
        end
        else
        begin
          if sIndInter <> '3' then
            sInter := sIndInter + Poem_Zeros(sCPFCNPJInter, 14) + sISSRetidoInter
          else
            sInter := '';
          iTamanhoIM := 8;
        end;
        sAssinatura := Poem_Zeros(NFSe.Prestador.IdentificacaoPrestador.InscricaoMunicipal, iTamanhoIM) +
                       PadRight(NFSe.IdentificacaoRps.Serie, 5, ' ') +
                       Poem_Zeros(NFSe.IdentificacaoRps.Numero, 12) +
                       FormatDateTime('yyyymmdd', NFse.DataEmissao) +
                       TipoTributacaoRPSToStr(NFSe.TipoTributacaoRPS) +
                       sSituacao +
                       sISSRetido +
                       Poem_Zeros(OnlyNumber(FormatFloat('#0.00', NFSe.Servico.Valores.ValorServicos)), 15) +
                       Poem_Zeros(OnlyNumber(FormatFloat('#0.00', NFSe.Servico.Valores.ValorDeducoes)), 15) +
                       Poem_Zeros(OnlyNumber(NFSe.Servico.ItemListaServico), 5) +
                       sTomador +
                       sInter;
        NFSe.Assinatura := string(TACBrNFSeX(FAOwner).SSL.CalcHash(AnsiString(sAssinatura), dgstSHA1, outBase64, True));
      end;
    end;
    ISSSaoPaulo.Provider.pas
×
×
  • 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.