Ir para conteúdo
  • Cadastre-se

geovanesilveira

Membros
  • Total de ítens

    29
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

geovanesilveira's Achievements

Explorer

Explorer (4/14)

  • Reacting Well Rare
  • First Post
  • Collaborator Rare
  • Week One Done
  • One Month Later

Recent Badges

10

Reputação

  1. acredito que desse jeito resolva todos os casos, até então E0710 = Para MEI pTotTribSN nunca poderá ser informado. E0712 = Para ME/EPP indTotTrib nunca poderá ser informado E0713 = Para Não Optante do SN os campos, indicador de informação de valor total de tributos (indTotTrib) e percentual aproximado do total dos tributos da alíquota do Simples Nacional (%) (pTotTribSN), não podem ser informado. function TNFSeW_PadraoNacional.GerarXMLTotalTributos: TACBrXmlNode; begin Result := CreateElement('totTrib'); if (NFSe.Servico.Valores.totTrib.pTotTribFed > 0) or (NFSe.Servico.Valores.totTrib.pTotTribEst > 0) or (NFSe.Servico.Valores.totTrib.pTotTribMun > 0) then Result.AppendChild(GerarXMLPercentualTotalTributos) else if (NFSe.OptanteSN = osnOptanteMEEPP) then Result.AppendChild(AddNode(tcDe2, '#1', 'pTotTribSN', 1, 5, 1, NFSe.Servico.Valores.totTrib.pTotTribSN, '')) else if (NFSe.OptanteSN = osnOptanteMEI) then Result.AppendChild(AddNode(tcStr, '#1', 'indTotTrib', 1, 1, 1, indTotTribToStr(NFSe.Servico.Valores.totTrib.indTotTrib), '')) else Result.AppendChild(GerarXMLValorTotalTributos); end; os testes aqui não deram erro, e o xml sai assim, com os valores zerados e sem essas flags <totTrib> <vTotTrib> <vTotTribFed>0.00</vTotTribFed> <vTotTribEst>0.00</vTotTribEst> <vTotTribMun>0.00</vTotTribMun> </vTotTrib> </totTrib> PadraoNacional.GravarXml.pas
  2. Ignorando essas alterações, eu modifiquei o meu programa da seguinte forma: LNFSe.Servico.Valores.tribFed.pAliqPis := AliqPis.AsFloat; LNFSe.Servico.Valores.tribFed.vPis := ValorPis.AsFloat; LNFSe.Servico.Valores.tribFed.pAliqCofins := AliqCofins.AsFloat; LNFSe.Servico.Valores.tribFed.vCofins := ValorCofins.AsFloat; LNFSe.Servico.Valores.tribFed.vRetCSLL := ValorRetCsll.AsFloat + ValorRetPis.AsFloat + ValorRetCofins.AsFloat; if (LNFSe.Servico.Valores.tribFed.vRetCSLL > 0) then LNFSe.Servico.Valores.tribFed.tpRetPisCofins := trpcRetido else LNFSe.Servico.Valores.tribFed.tpRetPisCofins := trpcNaoRetido; essa modificação partiu da nota tecnica do novo layout, que diz: confesso que essa segunda parte que diz "de acordo com o ... "tpRetPisCofins"" não ficou bem claro, pois no teste anterior me retornavam que so aceitavam o valor 1 ou 2 caso eu tentasse usar outra indicação. isso é dito na nota: não entendi bem o motivo de ja colocar esses códigos ali sendo que nem serão usados ainda
  3. Estou tentando fazer uns testes conforme o novo layout (https://www.gov.br/nfse/pt-br/biblioteca/documentacao-tecnica/rtc) e ao tentar enviar a nota (tentei nos 2 ambientes) estou recebendo o seguinte erro: X800 '3' violates enumeration constraint of '1 2'. The element '{http://www.sped.fazenda.gov.br/nfse}tpRetPisCofins' with value '3' failed to parse. no meu caso, estou tentando enviar a tag como todos retidos, que seria a numeração 3, segundo essa lista (encontrada no excel do link acima) Tipo de retenção PIS/COFINS e CSLL: 0 - PIS/COFINS/CSLL Não Retidos; 1* - PIS/COFINS Retido; 2* - PIS/COFINS Não Retido; 3 - PIS/COFINS/CSLL Retidos; 4 - PIS/COFINS Retidos, CSLL Não Retido; 5 - PIS Retido, COFINS/CSLL Não Retido; 6 - COFINS Retido, PIS/CSLL Não Retido; 7 - PIS Não Retido, COFINS/CSLL Retidos; 8 - PIS/COFINS Não Retidos, CSLL Retido; 9 - COFINS Não Retido, PIS/CSLL Retidos; * Os valores 1 e 2 só serão aceitos até os grupos "IBSCBS" se tornarem obrigatórios para a autorização/recepção da NFS-e. Mais esclarecimentos podem ser encontrados na Nota Técnica SE/CGNFS-e nº 007, de 07 de fevereiro de 2026, disponível no portal da NFS-e. na minha aplicacao modifiquei da seguinte forma: if (ValorRetPis.AsFloat > 0) then begin LNFSe.Servico.Valores.tribFed.pAliqPis := AliqRetPis.AsFloat; LNFSe.Servico.Valores.tribFed.vPis := ValorRetPis.AsFloat; end else begin LNFSe.Servico.Valores.tribFed.pAliqPis := AliqPis.AsFloat; LNFSe.Servico.Valores.tribFed.vPis := ValorPis.AsFloat; end; if (ValorRetCofins.AsFloat > 0) then begin LNFSe.Servico.Valores.tribFed.pAliqCofins := AliqRetCofins.AsFloat; LNFSe.Servico.Valores.tribFed.vCofins := ValorRetCofins.AsFloat; end else begin LNFSe.Servico.Valores.tribFed.pAliqCofins := AliqCofins.AsFloat; LNFSe.Servico.Valores.tribFed.vCofins := ValorCofins.AsFloat; end; if (ValorRetCsll.AsFloat > 0) then LNFSe.Servico.Valores.tribFed.vRetCSLL := ValorRetCsll.AsFloat else LNFSe.Servico.Valores.tribFed.vRetCSLL := ValorCsll.AsFloat; if (ValorRetPis.AsFloat > 0) and (ValorRetCofins.AsFloat > 0) and (ValorRetCsll.AsFloat > 0) then LNFSe.Servico.Valores.tribFed.tpRetPisCofins := trpcTodosRetidos else if (ValorRetPis.AsFloat > 0) and (ValorRetCofins.AsFloat > 0) and (ValorRetCsll.AsFloat <= 0) then LNFSe.Servico.Valores.tribFed.tpRetPisCofins := trpcPisCofinsRetCsllNaoRet else if (ValorRetPis.AsFloat > 0) and (ValorRetCofins.AsFloat <= 0) and (ValorRetCsll.AsFloat <= 0) then LNFSe.Servico.Valores.tribFed.tpRetPisCofins := trpcPisRetCofinsCsllNaoRet else if (ValorRetPis.AsFloat <= 0) and (ValorRetCofins.AsFloat > 0) and (ValorRetCsll.AsFloat <= 0) then LNFSe.Servico.Valores.tribFed.tpRetPisCofins := trpcCofinsRetPisCsllNaoRet else if (ValorRetPis.AsFloat <= 0) and (ValorRetCofins.AsFloat > 0) and (ValorRetCsll.AsFloat > 0) then LNFSe.Servico.Valores.tribFed.tpRetPisCofins := trpcCofinsCsllRetPisNaoRet else if (ValorRetPis.AsFloat <= 0) and (ValorRetCofins.AsFloat <= 0) and (ValorRetCsll.AsFloat > 0) then LNFSe.Servico.Valores.tribFed.tpRetPisCofins := trpcCsllRetPisCofinsNaoRet else if (ValorRetPis.AsFloat > 0) and (ValorRetCofins.AsFloat <= 0) and (ValorRetCsll.AsFloat > 0) then LNFSe.Servico.Valores.tribFed.tpRetPisCofins := trpcPisCsllRetCofinsNaoRet else LNFSe.Servico.Valores.tribFed.tpRetPisCofins := trpcTodosNaoRetidos; ACBrNFSeXClass.pas ACBrNFSeXConversao.pas PadraoNacional.LerXml.pas Conam.GravarXml.pas
  4. so mais uma coisa que esqueci. esse schemas aqui ta com type="xs:string" na validação da data de vencimento. mudei pra type="xsd:string" e funcionou nfse_betha_v01.xsd
  5. na verdade, esta retornando o seguinte erro: Código: L12 Descrição: Erro de validação: Ocorreram erros ao tentar executar o script de validação de emissão de notas. Correção: Favor entrar em contato com a Prefeitura para maiores informações. acho que eu não estava com a versão certa compilada reverti o que modifiquei e utilizei esse schemas e funcionou aproveitei e fiz um teste com as duas alterações juntas e também funcionou
  6. fiz uns testes aqui desse jeito e parece estar tudo correto. escolhi assim porque no exemplo de xml que eles disponibilizaram nesse novo site, esta com a data de vencimento num formato diferente do anterior Betha.GravarXml.pas 2 - RecepcionarLoteRpsPopulado.xml
  7. Com o ACBr atualizado agora e sem nenhuma modificação, fiz os seguintes testes (diretamente do meu programa em ambiente de produção): ACBrNFSeX (versão 1.0) Modifiquei o ACBrNFSeXServicos.ini para o seguinte: [4204608] Nome=Criciuma UF=SC Provedor=Betha ProRecepcionar=https://nota-eletronica.betha.cloud/rps/ws/recepcionarLoteRps ProConsultarSituacao=https://nota-eletronica.betha.cloud/rps/ws/consultarSituacaoLoteRps ProConsultarLote=https://nota-eletronica.betha.cloud/rps/ws/consultarLoteRpsV110 ProConsultarNFSeRps=https://nota-eletronica.betha.cloud/rps/ws/consultarNfsePorRpsV110 ProConsultarNFSe=https://nota-eletronica.betha.cloud/rps/ws/consultarNfseV110 ProCancelarNFSe=https://nota-eletronica.betha.cloud/rps/ws/cancelarNfse e ao enviar recebo o erro: Erro de Validação: Content for element '{http://www.betha.com.br/e-nota-contribuinte-ws}EnviarLoteRpsEnvio' is incomplete according to the DTD/Schema. Expecting: {http://www.w3.org/2000/09/xmldsig#}Signature. olhando no site, o RPS nem chegou la ACBrNFSeX (versão 2.02) Modifiquei o ACBrNFSeXServicos.ini para o seguinte: [4204608] Nome=Criciuma UF=SC Provedor=Betha Versao=2.02 ProRecepcionar=https://nota-eletronica.betha.cloud/rps/ws/recepcionarLoteRps ProConsultarSituacao=https://nota-eletronica.betha.cloud/rps/ws/consultarSituacaoLoteRps ProConsultarLote=https://nota-eletronica.betha.cloud/rps/ws/consultarLoteRpsV110 ProConsultarNFSeRps=https://nota-eletronica.betha.cloud/rps/ws/consultarNfsePorRpsV110 ProConsultarNFSe=https://nota-eletronica.betha.cloud/rps/ws/consultarNfseV110 ProCancelarNFSe=https://nota-eletronica.betha.cloud/rps/ws/cancelarNfse e ao enviar recebo o erro: Project ... raised exception class EACBrDFeException with message 'Serviço %s não implementado para este provedor. porém, olhando no site, o RPS chegou e a nota fiscal está cadastrada e autorizada fiz o teste no 2.02 mas não usamos e, segundo relatos de outros usuário, a propria Betha diz que para Criciúma precisa ser o 1.0 ACBRNFSe (versão 1.0) Modifiquei o Cidades.ini para: [4204608] Nome=Criciuma UF=SC Provedor=Betha ProRecepcionar=https://nota-eletronica.betha.cloud/rps/ws/recepcionarLoteRps ProConsultarSituacao=https://nota-eletronica.betha.cloud/rps/ws/consultarSituacaoLoteRps ProConsultarLote=https://nota-eletronica.betha.cloud/rps/ws/consultarLoteRpsV110 ProConsultarNFSeRps=https://nota-eletronica.betha.cloud/rps/ws/consultarNfsePorRpsV110 ProConsultarNFSe=https://nota-eletronica.betha.cloud/rps/ws/consultarNfseV110 ProCancelarNFSe=https://nota-eletronica.betha.cloud/rps/ws/cancelarNfse e ao enviar recebo o erro: Prestador de serviA o nA o estA registrado no sistema. Favor entrar em contato com a Prefeitura para maiores informaA A es. olhando no site, o RPS nem chegou la
  8. apos alguma correções no meu fonte também cheguei nessa parte do timeout. conseguiu algo?
  9. Segue em anexo os fontes modificados para incluir os dados dos lotes do produto na impressão fortes A4. ACBrDFeDANFeReport.pas ACBrNFeDANFEClass.pas ACBrDANFCeFortesFrA4.pas
  10. Confesso que não considero uma boa solução mesmo, foi apenas o jeito mais rapido e pratico que achei de dar uma alternativa às pessoas que tiveram esse mesmo problema na rotina, e que ainda queiram usufruir dos fontes comitados, sem precisar ter um controle dessa unit por fora, ou por um repositorio local
  11. Atenção, a classe helper da que falo abaixo deverá ser apenas utilizada por programadores que também tem problema na rotina TotalizarTermos, executada pelo SaveFileTXT. Se você não tem esse problema, ignore este post. Fiz os testes aqui, e esta funcionando normal a parte dos registros, porem, ele não consegue totalizar os termos. Olhando bem, acho que esse tipo de situação poderia ser resolvida pelo proprio programador, disponibilizando a rotina TotalizarTermos para ser usada em classes helper. Com isso, a rotina SaveFileTXT não poderia ser mais utilizada, ja que é ela que finalizava o processo. Agora seria necessário chamar o TotalizarTermos e FinalizarGeracao (rotina nova) no lugar do SaveFileTXT. Do jeito que eu havia feito nos uploads anteriores, é preciso acessar a variavel FACBrTXT, logo, precisei alterar a TACBrSPEDContabil pra disponibilizar o acesso à esse objeto. Após reinstalar os componentes do ACBr, criei o seguinte helper: unit ExemploHelper; ... TACBrSPEDContabilHelper = class helper for TACBrSPEDContabil public procedure TotalizarTermos; end; Comparação de como era o código antes e de como vai ficar: // ANTIGO SPED.IniciaGeracao(True); ... SPED.SaveFileTXT; // NOVO uses ExemploHelper; ... try SPED.IniciaGeracao(True); ... SPED.TotalizarTermos; finally SPED.FinalizarGeracao; end; ACBrSpedContabil.pas
  12. Segue uma correção. Faltou limpar alguns objetos que estavam presentes em uns List ACBrSpedContabil.pas
  13. Opa, percebi só agora que havia feito o upload dos arquivos errados. Segue os corretos agora ACBrECDBloco_9.pas ACBrSpedContabil.pas
  14. Só uma correção no exemplo de como fica pra utilizar esse novo metodo (os Writes deveriam ser do SPED.WriteRegistro???? não do with SPED.Bloco_0 do) SPED.IniciaGeracao(True); // NOVO with SPED.Bloco_0 do begin with Registro0000 do ... SPED.WriteRegistro0000; // NOVO with Registro0007.New do ... SPED.WriteRegistro0007; // NOVO for i := 0 to 2 do begin with Registro0150.New do begin ... with Registro0180.New do ... end; SPED.WriteRegistro0150; // NOVO end; end; SPED.WriteBloco_0; // NOVO SPED.SaveFileTXT;
×
×
  • 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.