
eraldocg
Membros-
Total de ítens
82 -
Registro em
-
Última visita
Últimos Visitantes
1.097 visualizações
eraldocg's Achievements
-
Resolvido. O erro estava relacionado apenas ao CNAE. Já foi enviado ao provedor (DSF - Versão 2.03), tanto em produção quanto em homologação.
-
AO TENTAR ENVIAR: 06/06/25 09:01:44 ------------------------------------------------------------ Requisição Ambiente : 1 - Produção Cidade : Joao Pessoa/PB Provedor : DSF Versão: 2.03 Data/Hora: 06/06/2025 09:00:24 Método Executado: Enviar Lote Síncrono Parâmetros de Envio Numero do Lote: 29480 Parâmetros de Retorno Data de Envio : 06/06/2025 Numero do Prot: 014379370 Numero da Nota: Link : Código Verif. : Sucesso : False Erro(s): Código : X202 Mensagem: Lista de NFSe não encontrada! (ListaNfse) Correção: --------- Método Executado: Consultar o Lote de Rps Parâmetros de Envio Numero do Prot: Numero do Lote: Parâmetros de Retorno Situação Lote : ID Nota : ID Rps : Sucesso : False NFS-e Numero....: 29480 =============================================== 06/06/25 09:05:51 ------------------------------------------------------------ Requisição Ambiente : 1 - Produção Cidade : Joao Pessoa/PB Provedor : DSF Versão: 2.03 Data/Hora: 06/06/2025 09:05:11 Método Executado: Consultar NFSe Por Rps Parâmetros de Envio Numero do Rps : 29480 Série do Rps : 1 Parâmetros de Retorno Numero do Lote: Numero do Prot: Situação : Data : 30/12/1899 Desc. Situação: ID Nota : Link : Sucesso : False Erro(s): Código : X999 Mensagem: Erro de Conexão: Erro Interno: 12002 Erro HTTP: 0 URL: https://receita.joaopessoa.pb.gov.br/notafiscal-abrasfv203-ws/NotaFiscalSoap Erro: 12002 - TimeOut de Requisição Falha Enviando a Requisição. Erro: 12002 - TimeOut de Requisição Correção: ---------
-
Parâmetros de Retorno Situação Lote : 0 ID Nota : ID Rps : Sucesso : False Erro(s): Código : E86 Mensagem: Número do protocolo de recebimento do lote inexistente na base de dados. Correção: Confira se o lote foi enviado e informe o número correto do protocolo de recebimento. --------- Código : X202 Mensagem: Lista de NFSe não encontrada! (ListaNfse) Correção: --------- como nao chegar enviar a resposta e de lote inexistente a resposta e mesma tanto no tutorial (Frm_ACBrNFSeX) quanto na aminha aplicacao
-
estou tentando enviar usando a mesma regra que vinha funcionando noutro proverdor mas, ocorendo o seguinte erro: (uso o mesmo recurso para outras prefeituras) 04/06/25 19:25:30 ------------------------------------------------------------ Requisição Ambiente : 1 - Produção Cidade : Joao Pessoa/PB Provedor : DSF Versão: 2.03 Data/Hora: 04/06/2025 19:24:10 Método Executado: Enviar Lote Síncrono Parâmetros de Envio Numero do Lote: 29477 Parâmetros de Retorno Data de Envio : 04/06/2025 Numero do Prot: 014356819 Numero da Nota: Link : Código Verif. : Sucesso : False Erro(s): Código : X202 Mensagem: Lista de NFSe não encontrada! (ListaNfse) Correção: 29477-lista-nfse-sinc.xml
-
Desde as 6h desta segunda-feira Novo sistema tributário e Portal do Contribuinte já estão funcionando com mais praticidade e segurança 02/06/2025 | 07:00 | 4304 https://www.joaopessoa.pb.gov.br/noticias/novo-sistema-tributario-e-portal-do-contribuinte-ja-estao-funcionando-com-mais-praticidade-e-seguranca/ O sistrema novo comecou a funcionar
-
"Com a versão 2.02 e com as URLs antigas você consegue emitir as notas?" sim, voltei os fontes do acbr para as configuracoes: SisPMJP Versão: 2.02 ------------------------------------ Informações sobre o provedor: SisPMJP - Versão: 2.02 - Layout: ABRASF Serviços Disponibilizados Permite o envio de Lote em Modo Assíncrono Permite o envio de Lote em Modo Síncrono ------------------------------------ voltou a fucionar e enviar nfse
-
segue a imagem do acesso dos links versão 2.02 , chamando pelo navegador e informando o certificado valido. observação1: ate data abaixo enviei umas 2 mil nfse nessa versao 14/03/25 18:17:38 ------------------------------------------------------------ Requisição Ambiente : 1 - Produção Cidade : Joao Pessoa/PB Provedor : SisPMJP Versão: 2.02 Data/Hora: 14/03/2025 18:16:17 ------------------------------------------------------------ outra observação: --------------------------- Acbrnfsex_exemplo --------------------------- Arquivo ...\Exemplos\ACBrDFe\Schemas\SisPMJP\2.03\nfse.xsd Não encontrado. --------------------------- Essa pasta tbm nao esta vindo com as atualizações (ja fiz umas 3 update nos fontes), para que pudesse testá-la na versao : 2.03 ---------------------------
-
ja enviei um email desde cedo, o negocio é ter resposta; mas no site, link documentacao, nao tem nada sobre alteracao
-
eraldocg started following SisPMJP - NFSeX Esta retornando a versao errada 2.03
-
Retorando: Informações sobre o provedor: SisPMJP - Versão: 2.03 - Layout: ABRASF na unit SisPMJP.Provider; atualmente esta 2.03 e o certo e 2.02 procedure TACBrNFSeProviderSisPMJP202.Configuracao; begin inherited Configuracao; with ConfigAssinar do begin Rps := True; LoteRps := True; end; with ConfigWebServices do begin VersaoDados := '2.03'; VersaoAtrib := '2.03'; end; ConfigMsgDados.DadosCabecalho := GetCabecalho(''); end; como consta no site da prefeitura Para efetuar o download dos documentos necessários ao desenvolvimento da referida solução, deve-se clicar nos links abaixo: NFS-e ABRASF - versão 2.02; Wsdl - Homologação - versão 2.02; Wsdl - Produção - versão 2.02;
-
uDemoBoleto: Implementação das seções Pagador e Cedente no arquivo INI
um tópico no fórum postou eraldocg ACBrBoleto
Ola senhores, Ao utilizar o demo uDemoBoleto, percebi que os dados do cedente e do pagador não estavam sendo gravados ou carregados no arquivo.INI. Para resolver esse problema, incluí a gravação dos dados do cedente e criei uma nova seção no arquivo INI denominada "PAGADOR". Segue o código-fonte para análise e possíveis implementações. exemplo da implementacao: procedure TfrmDemoBoleto.CarregarIniCedente; const SECAO_CEDENTE = 'CEDENTE'; var xPath, xArquivo: string; IniFile: TMemIniFile; begin // Define o caminho e o nome do arquivo INI xPath := ExtractFilePath(ParamStr(0)); xArquivo := ChangeFileExt(ExtractFileName(ParamStr(0)), '.ini'); // Cria o objeto TMemIniFile para leitura do arquivo INI IniFile := TMemIniFile.Create(IncludeTrailingPathDelimiter(xPath) + xArquivo); try edtBenifCNPJ.Text := IniFile.ReadString(SECAO_CEDENTE, 'CNPJCPF', '99.999.999/9999-62'); edtBenifRazao.Text := IniFile.ReadString(SECAO_CEDENTE, 'Nome', 'EMPRESA DE TESTES'); edtBenifFantasia.Text := IniFile.ReadString(SECAO_CEDENTE, 'FantasiaCedente', 'A Empresa'); edtBenifEndereco.Text := IniFile.ReadString(SECAO_CEDENTE, 'Logradouro', 'Rua das Empresas'); edtBenifNum.Text := IniFile.ReadString(SECAO_CEDENTE, 'Numero', '100'); edtBenifComplemento.Text:= IniFile.ReadString(SECAO_CEDENTE, 'Complemento', 'Compl'); edtBenifBairro.Text := IniFile.ReadString(SECAO_CEDENTE, 'Bairro', 'Centro'); edtBenifCidade.Text := IniFile.ReadString(SECAO_CEDENTE, 'Cidade', 'Tatui'); edtBenifUF.Text := IniFile.ReadString(SECAO_CEDENTE, 'UF', 'SP'); edtBenifCEP.Text := IniFile.ReadString(SECAO_CEDENTE, 'CEP', '18270-000'); edtBenifTelefone.Text := IniFile.ReadString(SECAO_CEDENTE, 'Telefone', '(11) 99999-9999'); finally IniFile.Free; end; end; procedure TfrmDemoBoleto.CarregarIniPagador; const SECAO_PAGADOR = 'PAGADOR'; var xPath, xArquivo: string; IniFile: TMemIniFile; begin // Define o caminho e o nome do arquivo INI xPath := ExtractFilePath(ParamStr(0)); xArquivo := ChangeFileExt(ExtractFileName(ParamStr(0)), '.ini'); // Cria o objeto TMemIniFile para leitura do arquivo INI IniFile := TMemIniFile.Create(IncludeTrailingPathDelimiter(xPath) + xArquivo); try edtPagNome.Text := IniFile.ReadString(SECAO_PAGADOR, 'Nome', 'CLIENTE DE TESTES'); edtPagCPFCNPJ.Text := IniFile.ReadString(SECAO_PAGADOR, 'CPFCNPJ', '676.387.808-76'); edtPagEmail.Text := IniFile.ReadString(SECAO_PAGADOR, 'Email', '[email protected]'); edtPagEndereco.Text := IniFile.ReadString(SECAO_PAGADOR, 'Logradouro', 'Rua dos clientes'); edtPagNumero.Text := IniFile.ReadString(SECAO_PAGADOR, 'Numero', '100'); edtPagComplemento.Text := IniFile.ReadString(SECAO_PAGADOR, 'Complemento', ''); // Caso não haja valor, permanece vazio edtPagBairro.Text := IniFile.ReadString(SECAO_PAGADOR, 'Bairro', 'Centro'); edtPagCidade.Text := IniFile.ReadString(SECAO_PAGADOR, 'Cidade', 'Tatui'); edtPagCEP.Text := IniFile.ReadString(SECAO_PAGADOR, 'CEP', '18270-000'); edtPagUF.Text := IniFile.ReadString(SECAO_PAGADOR, 'UF', 'SP'); finally IniFile.Free; end; end; sucesso todos uDemoBoleto.dfm uDemoBoleto.pas -
eraldocg started following Italo Giurizzato Junior
-
eraldocg started following Verificar a Instalação de Certificados no Windows
-
Olá a todos, Procurei no fórum e não encontrei uma solução para o problema, então decidi compartilhar minha contribuição. Abaixo, você encontrará a rotina que desenvolvi para identificar se um certificado está instalado no Windows. Espero que seja útil para quem precisa! function IsCertificateInstalled(const SerialNumber: string): Boolean; var i: Integer; CertificateFound: Boolean; begin Result := False; CertificateFound := False; try // Tenta carregar os certificados disponíveis ACBrNFSeX1.SSL.LerCertificadosStore; // Itera sobre a lista de certificados carregados for i := 0 to ACBrNFSeX1.SSL.ListaCertificados.Count - 1 do begin // Verifica se o número de série do certificado atual é igual ao procurado if ACBrNFSeX1.SSL.ListaCertificados[i].NumeroSerie = SerialNumber then begin CertificateFound := True; Break; // Certificado encontrado, interrompe a busca end; end; // Define o resultado final Result := CertificateFound; except on E: Exception do begin // Log de erro ou tratamento específico pode ser adicionado aqui // Por exemplo: LogError('Erro ao verificar certificados: ' + E.Message); Result := False; // Em caso de erro, o certificado não foi encontrado end; end; end; como chamar: CertifInstalado := IsCertificateInstalled('NUMERO DO CERTIFICADO'); if CertifInstalado then ShowMessage ('Certificado encontrado!') else ShowMessage ('Certificado não encontrado.'); espero que seja util.
-
- 1
-
-
- certificado
- validade certificado
- (e 3 mais)
-
segue em anexo arquivo alterado e ja validado no envio da prefeitura citada caminho do arquivo nos fontes acbr ...\acbr\Fontes\ACBrDFe\ACBrNFSeX\Provedores\SisPMJP.GravarXml.pas grato SisPMJP.GravarXml.pas
-
RESOLVIDO, precisei alterar a unit SisPMJP.GravarXml pra incluir a empresa como RegimeEspecialTributacao in [retMicroempresaMunicipal]), sendo do simpples nacional, ficando assim: function TNFSeW_SisPMJP202.GerarXml: Boolean; begin if (NFSe.OptanteSimplesNacional = snNao) then begin if (NFSe.RegimeEspecialTributacao in [retMicroempresaMunicipal, retMicroempresarioEmpresaPP]) then NrOcorrValorIss := 1 else NrOcorrValorIss := -1; end else if (NFSe.RegimeEspecialTributacao in [retMicroempresaMunicipal]) then NrOcorrValorIss := 1 else NrOcorrValorIss := -1; { if (NFSe.OptanteSimplesNacional = snNao) then if (NFSe.RegimeEspecialTributacao in [retMicroempresaMunicipal, retMicroempresarioEmpresaPP]) then NrOcorrValorIss := 1 else NrOcorrValorIss := -1; } Result := inherited GerarXml; end; para gerar o valor da Servico.Valores.ValorISS, precisei usar esse arrendamento para abixo, (segundo o suporte da prefeitura: a prefeitura utiliza a regra round half) function TPrincipalForm.RoundTo5Down(Valor: Double; Casas: Integer): Double; var xValor, xDecimais: String; p, nCasas: Integer; nValor: Double; begin nValor := Valor; xValor := Trim(FloatToStr(Valor)); p := Pos(',', xValor); if Casas < 0 then nCasas := -Casas else nCasas := Casas; if p > 0 then begin xDecimais := Copy(xValor, p + 1, Length(xValor)); if Length(xDecimais) > nCasas then begin if xDecimais[nCasas + 1] >= '5' then begin // Se o próximo dígito após as casas decimais for maior ou igual a 5, // arredonda para baixo (round half down) if Valor < 0 then nValor := Int(nValor * Power(10, nCasas)) / Power(10, nCasas) else nValor := Int(nValor * Power(10, nCasas) + 0.5) / Power(10, nCasas); end else SetRoundMode(rmNearest); end; nValor := RoundTo(nValor, Casas); end; // Arredondando para o número especificado de casas decimais // Formatar o resultado com vírgula como separador decimal e duas casas decimais Result := StrToFloat(FormatFloat('#,##0.00', nValor)); end; Observacao do problema, passado pelo setor contabil: A empresa atingiu o sublimite do Simples Nacional sendo assim, começa a pagar ISS por fora, e não na guia do Simples. Isso se dá porque durante todo ano de 2023 o mesmo atingiu um faturamento anual(RBAA) de mais de R$ 3.600.000,00. A empresa continua sendo SIMPLES NACIONAL Resumo: foi necessario fazer os ajustes acima! deixo aqui como fontes praa ajudar outros b.os; e obrigado pela atencao
-
ainda estou no aguardo de qual padrao o servido utiliza para "ValorIss" e quando deve ser informado ou nao no xml (quando tiver a resposta complemento aqui). porem, deixe comentada essa funcao TNFSeW_SisPMJP202.GerarXml, sempre retornado 1 (UM) e ja deu certo aqui, begin //if (NFSe.OptanteSimplesNacional = snNao) and // if (NFSe.RegimeEspecialTributacao in [retMicroempresaMunicipal, retMicroempresarioEmpresaPP]) then NrOcorrValorIss := 1 // else // NrOcorrValorIss := -1; POREM PRECISOU DE UM AJUSTE: email recebido do suporte com erro no valor informado na tag ValorIss da pref: ================================================== Valor correto do tributo são 45,47, o erro esta sendo ocasionado devido a regra de arredondamento, a prefeitura utiliza a regra round half down . <Valores> <ValorServicos>909.50</ValorServicos> <ValorIss>45.48</ValorIss> <Aliquota>5.00</Aliquota> </Valores> ================================================== rotina que usei calcular o valor ValorIss para baixo e nao para cima function RoundTo5Down(Valor: Double; Casas: Integer): Double; var xValor, xDecimais: String; p, nCasas: Integer; nValor: Double; begin nValor := Valor; xValor := Trim(FloatToStr(Valor)); p := Pos(',', xValor); if Casas < 0 then nCasas := -Casas else nCasas := Casas; if p > 0 then begin xDecimais := Copy(xValor, p + 1, Length(xValor)); if Length(xDecimais) > nCasas then begin if xDecimais[nCasas + 1] >= '5' then SetRoundMode(rmDown) // Setar para a regra round half down else SetRoundMode(rmNearest); end; nValor := RoundTo(Valor, Casas); end; // Arredondando para duas casas decimais Result := Trunc(nValor * 100) / 100; end;