Daniel - PiraByte
Membros-
Total de ítens
23 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Daniel - PiraByte postou
-
NFS-e: Como configurar a pasta de schemas em rede?
Daniel - PiraByte replied to Alberto Scolnik's tópico in ACBrNFSe
Você pode usar a função para consultar o dps, mas precisa montar a chave do DPS. Se olhar no programa exemplo deve ter essa consulta também, e você pode usar lá pra ver como é montada a chave do DPS para realizar a consulta -
1069-Rejeicao: Valor da CBS difere do calculado [nItem:1]
Daniel - PiraByte replied to RODRIGO MASTER's tópico in ACBrMonitor PLUS
O nome das seções na parte do total estão incorretos, de uma olhada aqui no exemplo: https://acbr.sourceforge.io/ACBrMonitor/ModeloNFeINICompletoReformaTribu.html Também percebi que está somando o valor do IBS e CBS na tag <vItem>37875.00</vItem>, se não me engano em 2026 não vai somar esses valores ainda nessa tag, mas recomendo pesquisar para confirmar. -
1069-Rejeicao: Valor da CBS difere do calculado [nItem:1]
Daniel - PiraByte replied to RODRIGO MASTER's tópico in ACBrMonitor PLUS
Pelo que vi está sem o total do CBS, está preenchido no item, mas não no total. Além disso, o vCBS no item parece incorreto, acredito que seja a alíquota informada incorretamente, <pCBS>0.0900</pCBS>, acredito que seria: <pCBS>0.9000</pCBS> Também na parte do IBS vi que está <pIBSMun>0.0500</pIBSMun> e <pIBSUF>0.0500</pIBSUF>, nessa parte acredito que o correto seria 0,1% (0.1000) para pIBSUF e 0% para pIBSMun (isso para 2026, mas esse não tenho certeza.) -
Cidade/UF: Piracicaba/SP Previsão de Mudança: 1º de janeiro de 2026 Tipo de Mudança: Padrão Nacional Fonte/Documentação: https://piracicaba.sp.gov.br/noticias/prefeitura-de-piracicaba-orienta-empresas-sobre-nova-forma-de-emissao-de-nota-fiscal-de-servicos/ Alteração realizada no arquivo ACBrNFSeXServicosRTC.ini
-
Adição da leitura da tag cLocEmi (PadraoNacional.LerXml.pas)
Daniel - PiraByte replied to Daniel - PiraByte's tópico in ACBrNFSe
Boa tarde @Italo Giurizzato Junior, muito obrigado. Sobre a leitura, fiz com base no arquivo de gravação do XML: case NFSe.tpEmit of teTomador: Result.AppendChild(AddNode(tcStr, '#1', 'cLocEmi', 7, 7, 1, NFSe.Tomador.Endereco.CodigoMunicipio, '')); teIntermediario: Result.AppendChild(AddNode(tcStr, '#1', 'cLocEmi', 7, 7, 1, NFSe.Intermediario.Endereco.CodigoMunicipio, '')); else Result.AppendChild(AddNode(tcStr, '#1', 'cLocEmi', 7, 7, 1, NFSe.Prestador.Endereco.CodigoMunicipio, '')); end; Pelo que vi nas alterações, foi adicionado a propriedade cLocEmi, junto disso a leitura da tag direto para essa propriedade, porém no arquivo de gravação, a alteração foi apenas para gravação do arquivo ini: AINIRec.WriteString(LSecao, 'cLocEmi', NFSe.cLocEmi); A gravação do XML parece estar usando ainda o código que mencionei usar de base acima, com isso ao carregar um XML com cLocEmi preenchido e sem o endereço do prestador, ao usar a função de Emitir, ele vai gravar o XML novamente, e com isso vai tentar pegar a informação do cLocEmi no endereço do prestador, que vai estar vázio. Fiz a alteração para que a gravação do XML seja feita usando a propriedade cLocEmi, não mantive o código acima com o case. PadraoNacional.GravarXml.pas -
Adição da leitura da tag cLocEmi (PadraoNacional.LerXml.pas)
um tópico no fórum postou Daniel - PiraByte ACBrNFSe
tag cLocEmi não é lida ao ler um DPS (Padrão Nacional) usando a procedure ACBrNFSe.NotasFiscais.LoadFromFile PadraoNacional.LerXml.pas -
EMV Bradesco 62:05 maior que 25 caracteres
Daniel - PiraByte replied to Vicente_Ibl's tópico in Dúvidas sobre PIX
Tem no exemplo de boleto do ACBr como fazer a leitura do retorno, olhando lá da pra ver como é feito, lá inclusive mostra como obter o campo EMV -
EMV Bradesco 62:05 maior que 25 caracteres
Daniel - PiraByte replied to Vicente_Ibl's tópico in Dúvidas sobre PIX
Como eu disse, uso API do Bradesco apenas, mas olhando o código de leitura de CNAB do bradesco, parece que tem uma leitura que gera o EMV com base nos dados do arquivo de retorno. acho que o ideal é você fazer a leitura do arquivo de retorno com o componente de boleto e ver se retorna o emv nas propriedades do boleto, se não, debugar e ver se está passando no método que gera o EMV -
EMV Bradesco 62:05 maior que 25 caracteres
Daniel - PiraByte replied to Vicente_Ibl's tópico in Dúvidas sobre PIX
ACBrTitulo.QrCode.PIXQRCodeDinamico esse é do componente de boleto, quando você faz a leitura do retorno, ele monta o emv com os dados no arquivo de retorno (pelo que entendi, não fiz uso de CNAB lendo retorno). -
EMV Bradesco 62:05 maior que 25 caracteres
Daniel - PiraByte replied to Vicente_Ibl's tópico in Dúvidas sobre PIX
Pix := ACBrPIXCD1.GerarQRCodeDinamico(Chave_pix, Txid, Valor); Olhei aqui, e você está passando a chave pix na geração do QRCode Dinâmico procedure TACBrBancoBradesco.LerRetorno400Transacao4(ACBrTitulo :TACBrTitulo; ALinha: String); var LURL, LtxId: string; begin inherited; LURL := Trim(Copy(ALinha, 29,77)); LtxId := Trim(Copy(ALinha,106,35)); if NaoEstaVazio(lURL) and NaoEstaVazio(LtxId) then ACBrTitulo.QrCode.PIXQRCodeDinamico(Lurl, LtxId, ACBrTitulo); end; Aqui no código do ACBr ele passa a URL, a chave parece que passa no estático, verifica esse parametro que está passando, aqui no código da pra ver as posições que ele copia -
EMV Bradesco 62:05 maior que 25 caracteres
Daniel - PiraByte replied to Vicente_Ibl's tópico in Dúvidas sobre PIX
Eu uso a API Apenas, pego o EMV ja montado no componente. Mas olhando o manual CNAB400 do bradesco o txid tem tamanho de 35, e no código do ACBr que lê o retorno 400, ele usa o método PIXQRCodeDinamico, então deve ser um QRCode dinâmico mesmo. Pelo que entendi o retorno do banco não tem o EMV mesmo, mas o ACBrBoleto monta ao ler o retorno. -
EMV Bradesco 62:05 maior que 25 caracteres
Daniel - PiraByte replied to Vicente_Ibl's tópico in Dúvidas sobre PIX
Não sei onde está fazendo a validação, mas está considerando o tipo correto de QRCode (Estático ou Dinâmico)? Pelo que vi aqui, o Estático é 25 Caracteres, já o dinâmico: -
Acessar A Nfe e o item da mesma em uma procedure
Daniel - PiraByte replied to Agnaldo Prates's tópico in ACBrNFe
Dependendo da situação, passar o item direto como parâmetro pode ser uma solução. procedure TfrmACBrNFe.GerarImposto(ADet: TDetCollectionItem); begin ADet.Prod.CProd := '100'; ... end; -
Retorno implícito de Self
Daniel - PiraByte replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
https://docwiki.embarcadero.com/RADStudio/Athens/en/Methods_(Delphi)#Constructors na documentação fala sobre os Constructors, recomendo ver por lá. Pelo que entendo, é necessário que o Create retorne a referência do objeto, para que você possa usar, exemplo: procedure Exemplo; var SL: TStringList; begin SL := TStringList.Create; try SL.Add('1'); SL.Add('2'); FuncaoQueUsaStringList(SL); finally SL.Free; end; end; Fazendo conforme seu exemplo (abaixo), você não vai ter referência ao objeto do tipo TStringList, e não vai conseguir acessar ele em outra parte do código, nem mesmo liberar da memória TStringList.Create.Add -
Limitar lista de valores inteiros
Daniel - PiraByte replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Não me atentei que havia a quebra no 509 e pulava o 510. Type TCancelCode = (tcc501 = 501, tcc502 = 502, tcc503 = 503, tcc504 = 504, tcc505 = 505, tcc506 = 506, tcc507 = 507, tcc508 = 508, tcc509 = 509, tcc511 = 511, tcc512 = 512, tcc513 = 513); ... var ValorInteiro: Integer; TC: TCancelCode; begin TC := tcc501; ValorInteiro := Ord(TC); end; Não sei exatamente o que precisa, mas essa é uma outra forma, ainda seria possível atribuir um valor incorreto a TC, usando por exemplo TC := TCancelCode(510); Mas dependendo do que está buscando pode ser uma alternativa -
Limitar lista de valores inteiros
Daniel - PiraByte replied to bnobre 's tópico in Object Pascal - Delphi & Lazarus
Se você quer um tipo que aceita valores inteiros, mas apenas um "range", pode tentar dessa forma: TCancelCodeId = 501..513; -
Acho que o Digest que você conferiu é do protocolo de autorização, provavelmente o validador só ignora essa parte do protocolo de autorização. Fiz um teste desse cenário e o digVal no protocolo de autorização é o correto, mas diferente do campo DigestValue do XML, que é o que o validador vai realmente verificar, e o campo DigestValue do XML vai ser gerado pelo componente com os dados alimentados, ou seja os 2 itens e vai estar de acordo mesmo
-
Olá, isso pode acontecer sim. Se por exemplo, ocorreu algum erro durante a transmissão e não teve o retorno como autorizada, o cliente alterou as informações da nota no sistema, adicionando esse novo item, ao emitir utilizando o componente do ACBrNFe com a configuração ValidarDigest = False e consultar a chave vai retornar como autorizada sem erro, porém o XML que gravar vai ter 2 itens. Isso porque a consulta não vem com as informações da nota (XML), vem as informações do protocolo de autorização, a propriedade de ValidarDigest evita que o protocolo de autorização da chave seja anexado em um XML diferente, mas se desativar pode sim ocorrer esse problema.
-
Olá, nos caso dos bancos, normalmente utilizo arquivos .CRT e .KEY extraídos do PFX. ACBrBoleto1.Configuracoes.WebService.ArquivoCRT := 'CAMINHO_ARQ.CRT'; ACBrBoleto1.Configuracoes.WebService.ArquivoKEY := 'CAMINHO_ARQ.KEY';
-
Acbrnfe -> AcbrLib-> Acbrpro
Daniel - PiraByte replied to EXVASP's tópico in NFC-e - Nota Fiscal do Consumidor Eletrônica
Precisa apenas do componente ACBrNFe para emitir, e algum componente (do acbr) ACBrDANFCe (Fortes, ESCPOS...) para poder gerar a DANFCe. Não precisa de DLL, nem tem limite por CNPJ, afinal os componentes são código aberto -
Parece que você está fazendo a consulta com ambiente de homologação, confirme se é esse o caso. Pois caso esteja fazendo no ambiente de homologação, só vai retornar caso tenha notas emitidas contra o CNPJ no ambiente de homologação. Quanto a questão do ultimo NSU caso esteja sendo consultado em outro local (com outro NSU), você irá receber: Nesse caso, após uma hora pode enviar o mesmo NSU que deu o consumo indevido, não sendo necessário alterar o ultimo NSU, assim você garante que vai receber todas as notas no sistema. Se alterar o NSU para um maior sem receber e gravar as informações no banco, vai ficar com lacunas.
-
O Problema parece ser porque o SAT só considera o desconto após calcular o VProd, então ele calcula o VProd de R$ 22,08, e só depois o desconto de R$ 3,02 é aplicado, ficando com um total de R$ 19,06. Seu calculo parece considerar o desconto já no valor unitário, e antes do arredondamento, pode ser esse o problema.
