-
Total de ítens
166 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que gutembergscosta postou
-
Alguem sabe como obter token para a consulta via calendario.com.br ?
- 27 replies
-
- inclusão
- componente
-
(e 1 mais)
Tags:
-
Olá, Segue o arquivo devidamente ajustado ... nesse caso houve mais ajustes, tanto no envio, quanto no retorno, então as alterações ocorreram nas seguintes procedures; procedure GerarRegistroTransacao400(ACBrTitulo : TACBrTitulo; aRemessa: TStringList); override; Procedure LerRetorno400(ARetorno:TStringList); override; Percebi que essa funcition que retorna a descrição da rejeição está desatualizada em conformidade com a documentação / layout, caso desejem atualizar. function TACBrBancoSantander.CodMotivoRejeicaoToDescricao( const TipoOcorrencia:TACBrTipoOcorrencia; CodMotivo: Integer) : String; Obrigado. ACBrBancoSantander.pas 24-08-05_132259_cobrancas_400_ptbr[1].pdf
-
Olá pessoal, homologuei o boleto Santander via cnab400 hibrido, contudo, para homologar o registro relacionado ao Pix, se fez necessário duas alterações, as quais reporto aqui para ajuste no projeto. Anexei duas imagens uma como o registro ficou, depois de alterado, e a outra com a nota/instrução do manual do banco onde fala sobre isso. 1) O registro=8, obrigatoriamente precisa ser inserido no arquivo logo depois do registro=1, e no caso antes do registro=2 (imagem anexada), somente assim o registro hibrido foi aceito pelo banco. 2) no registro 8 tem um uppercase, foi necessário retirar, uma vez que a chave pix passada foi um e-mail, e no caso o banco considera em minusculo. Abaixo a procedure TACBrBancoSantander.GerarRegistroTransacao400, modificada. procedure TACBrBancoSantander.GerarRegistroTransacao400(ACBrTitulo :TACBrTitulo; aRemessa: TStringList); var DigitoNossoNumero, Ocorrencia,aEspecie :String; Protesto, aAgencia, TipoSacado, wLinha :String; aCarteira, I: Integer; LMensagem1, LMensagem2, LMensagem3 : String; LTipoChaveDICT, Ltipopagamento : string; begin aCarteira := StrToIntDef( DefineCarteira(ACBrTitulo) , 0); if aCarteira = 5 then aAgencia := PadLeft(OnlyNumber(ACBrTitulo.ACBrBoleto.Cedente.Agencia) + ACBrTitulo.ACBrBoleto.Cedente.AgenciaDigito,5,'0') else aAgencia:= '00000'; FvTotalTitulos := FvTotalTitulos + ACBrTitulo.ValorDocumento; with ACBrTitulo do begin DigitoNossoNumero := CalcularDigitoVerificador(ACBrTitulo); {Tipo de Ocorrencia} ocorrencia := TipoOcorrenciaToCodRemessa(ACBrTitulo.OcorrenciaOriginal.Tipo); {Especie Documento} aEspecie := DefineEspecieDoc(ACBrTitulo); {Instruções} Protesto := InstrucoesProtesto(ACBrTitulo); {Pegando Tipo de Sacado} TipoSacado := DefineTipoSacado(ACBrTitulo); with ACBrBoleto do begin wLinha:= '1' + // 1- ID Registro IfThen(Cedente.TipoInscricao = pJuridica,'02','01') + // 2 a 3 PadLeft(trim(OnlyNumber(Cedente.CNPJCPF)),14,'0') + // 4 a 17 PadRight(trim(Cedente.CodigoTransmissao),20,'0') + // 18 a 37 PadRight( SeuNumero ,25,' ') + // 38 a 62 PadLeft(RightStr(NossoNumero,7),7,'0') + DigitoNossoNumero + // 63 a 70 IfThen(DataAbatimento < EncodeDate(2000,01,01), '000000', FormatDateTime( 'ddmmyy', DataAbatimento)) + // 71 a 76 ' '+IfThen(PercentualMulta > 0,'4','0') + // 77 a 78 IntToStrZero( round( PercentualMulta * 100 ), 4) + // 79 a 82 '00'+StringOfChar( '0', 13)+space(4) + // 83 a 101 IfThen((DataMulta <= 0),'000000', FormatDateTime( 'ddmmyy', DataMulta)) + // 102 a 107 IntToStr(aCarteira) + Ocorrencia + // 108 a 110 PadRight( NumeroDocumento,10,' ') + // 111 a 120 FormatDateTime( 'ddmmyy', Vencimento) + // 121 a 126 IntToStrZero( round( ValorDocumento * 100), 13) + // 127 a 139 '033' + aAgencia + // 140 a 147 PadLeft(aEspecie, 2) + 'N' + // 148 a 150 FormatDateTime( 'ddmmyy', DataDocumento ) + // 151 a 156 PadLeft(trim(Instrucao1),2,'0') + // 157 a 158 PadLeft(trim(Instrucao2),2,'0') + // 159 a 160 IntToStrZero( round(ValorMoraJuros * 100 ), 13) + // 161 a 173 IfThen(DataDesconto < EncodeDate(2000,01,01), '000000', FormatDateTime( 'ddmmyy', DataDesconto)) + // 174 a 179 IntToStrZero( round( ValorDesconto * 100), 13) + // 180 a 192 IntToStrZero( round( ValorIOF * 100 ), 13) + // 193 a 205 IntToStrZero( round( ValorAbatimento * 100 ), 13) + // 206 a 218 TipoSacado + PadLeft(OnlyNumber(Sacado.CNPJCPF),14,'0') + // 219 a 234 PadRight( Sacado.NomeSacado, 40, ' ') + // 235 a 274 PadRight( Sacado.Logradouro + ' '+ Sacado.Numero, 40, ' ') + // 275 a 314 PadRight( Sacado.Bairro,12,' ') + // 315 a 326 PadRight( OnlyNumber(Sacado.CEP) , 8, ' ' ) + // 327 a 334 PadRight( Sacado.Cidade, 15, ' ') + PadRight( Sacado.UF, 2 ) + // 335 a 351 Space(30) + // 352 a 381 ' I' + // 382 a 383 Copy( Cedente.Conta, length( Cedente.Conta ),1 ) + // PadLeft( Cedente.ContaDigito, 1 ) + // 384 a 385 Space(6) + // 386 a 391 Protesto + ' ' + // 392 a 394 IntToStrZero( aRemessa.Count + 1, 6 ); // 395 a 400 if (ACBrTitulo.ACBrBoleto.Cedente.PIX.TipoChavePIX <> tchNenhuma) then begin case ACBrTitulo.ACBrBoleto.Cedente.PIX.TipoChavePIX of tchCPF : LTipoChaveDICT := '1'; tchCNPJ : LTipoChaveDICT := '2'; tchCelular : LTipoChaveDICT := '3'; tchEmail : LTipoChaveDICT := '4'; tchAleatoria : LTipoChaveDICT := '5'; end; case tipopagamento of tpAceita_Qualquer_Valor : Ltipopagamento := '01'; tpAceita_Valores_entre_Minimo_Maximo: Ltipopagamento := '02'; tpNao_Aceita_Valor_Divergente: Ltipopagamento := '03'; end; wLinha:= '8' + // 001 - 001 PIX Ltipopagamento + // 002 - 003 Identificação do tipo de pagamento IntToStrZero(QtdeParcelas,2) + // 004 - 005 Quantidade de pagamento possíveis '2' + // 006 - 006 Tipo de valor informado (1=%, 2=Valor) IntToStrZero( round( ValorDocumento * 100), 13) + // 007 - 019 Valor Máximo PadLeft('0',5,'0') + // 020 - 024 % (Percentual) Máximo IntToStrZero( round( ValorDocumento * 100), 13) + // 025 - 037 Valor Mínimo PadLeft('0',5,'0') + // 038 - 042 % (Percentual) Mínimo LTipoChaveDICT + // 043 - 043 Tipo de Chave Pix PadRight(ACBrTitulo.ACBrBoleto.Cedente.PIX.Chave,77,' ') + // 044 - 120 Chave Pix PadRight(QrCode.txId,35,' ') + // 121 - 155 Código de identificação do Qr Code (TXID) Space(239) + // 156 - 394 Reservado (uso Banco) IntToStrZero( aRemessa.Count + 1 , 6 ); // 395 - 400 Sequencial de Registro aRemessa.Add(wLinha); aRemessa.Add(UpperCase(wLinha)); LMensagem1 := ''; LMensagem2 := ''; LMensagem3 := ''; if Mensagem.Count >= 1 then LMensagem1 := TiraAcentos(Mensagem[0]); if Mensagem.Count >= 2 then LMensagem2 := TiraAcentos(Mensagem[1]); if Mensagem.Count >= 3 then LMensagem3 := TiraAcentos(Mensagem[2]); wLinha:= '2' + // 001-001 "2" - Recibo Pagador space(16) + // 002-017 Reservado Banco PadLeft(Cedente.CodigoTransmissao,20,'0') + // 018-037 Agencia / Conta Movimento / Conta Cobranca Space(10) + // 038-047 Reservado Banco '01' + // 048-049 SubRegistro "01" PadRight(LMensagem1, 50) + // 050-099 Mensagem Variavel '02' + // 100-101 SubSequencia "02" PadRight(LMensagem2, 50) + // 102-151 Mensagem Variavel '02' + // 152-153 SubSequencia "02" PadRight(LMensagem3, 50) + // 154-203 Mensagem Variavel Space(179) + // 204-382 Reservado Banco 'I' + // 383-383 Identificação do Complemento PadLeft(Copy( Cedente.Conta, length( Cedente.Conta ),1 ), 1, '0') + PadLeft( Cedente.ContaDigito, 1, '0' ) + // 384-385 Complemento Space(9) + // 386-394 Reservado Banco IntToStrZero( aRemessa.Count + 1 , 6 ); // 395-400 Sequencial de Registro aRemessa.Add(UpperCase(wLinha)); end; end; end; end;
-
Alguém que já implementou e está funcional poderia fornecedor informações, tipo a integração está legal, envia vários boletos, o retorno é na própria requisição, ou tem que consultar depois, na consulta volta o lote com todos os titulos do dia, como seria a consulta, retorno, perrengues ... agradeço quem puder enviar informações a dispeito da implantação e uso nesse banco.
-
Fiz a comparação, mudou o header e trailer do arquivo, isso por que o numero de protocolo que recebemos ao enviar aumentou de tamanho, essa foi a diferença que encontrei header antigo : 025739872900018520217602440 header novo : 0257398729000185240000744059230 aumentou por conta do numero de protocolo, vou aguardar pra ver se por acaso a versão do software importado do banco sofre alguma alteração por conta disso - obrigado.
-
Arquivo retorno de pagamento banco do Brasil vindo do Portal GNRe Online
um tópico no fórum postou gutembergscosta ACBrGNRe
Boa tarde, Alguém usa o arquivo de retorno de pagamento oriundo do portal da GNRE para automatizar o pagamento, importando o arquivo via soft do Banco do Brasil ? Até poucos dias estava ok, mas houve uma mudança onde o header e trailer sofreram alteração de tamanho, acredito que face o numero de protocolo que aumentou de tamanho, agora o software do banco do brasil ao tentar importar, informa que o arquivo está inconsistente. Não consegui inserir os dois arquivos o antigo e o novo, apresenta erro de upload. -
Boa tarde, Alguém usa o arquivo de retorno de pagamento do portal para automatizar o pagamento importando o arquivo via soft do Banco do Brasil ? Até poucos dias estava ok, mas houve uma mudança onde o header e trailer sofreram alteração de tamanho, acredito que face o numero de protocolo que aumentou de tamanho, agora o software do banco do brasil ao tentar importar, informa que o arquivo está inconsistente.
-
Bacana, obrigado pela atenção, vou acessar para ver a solução.
-
Boa tarde, Atualizado todo o acbr (reinstalando), apresenta o erro nos report do Fortes Report, é preciso usar alguma nova versão do Fortes, se sim, poderia informar qual versão devo instalar. Não foi possível localizar o ponto de entrada do procedimento @Rlreport@TRLCustomReport@SetDefaultFilter$qqrpx25Rlfilters@TRLCustomFilter na biblioteca de vínculo dinâmico \NFe_ACBR_Novo\Lib\Delphi\LibD7\Win32\ACBr_BoletoRL.bpl.
-
Impressão do QRCode Pix já tendo a string payload disponibilizada pelo banco.
um tópico no fórum postou gutembergscosta ACBrBoleto
Olá pessoal, Como faço para imprimir o QRCode Pix, já tenho a string do payload disponibilizado pelo Banco, gostaria de passar para o componente e imprimir o qrcode baseado nesse payload - não encontrei propriedade para indicar essa string. -
NFSeX - São Paulo - 'Start tag expected, '<' not found'
gutembergscosta replied to gutembergscosta's tópico in ACBrNFSe
O mais estranho é que XML é validado em qualquer ferramenta online, e ele é o XML protocolado e enviado pelo próprio prestador de serviço, poderia até antes de submeter ao componente remover essa tag <RetornoConsulta ....> e </RetornoConsulta>, mas não seria muito usual... pelo que entendi então o componente entende/lê apenas apartir da tag <NFe ... seria isso teria quer normatizar essa string do XML antes ? -
NFSeX - São Paulo - 'Start tag expected, '<' not found'
gutembergscosta replied to gutembergscosta's tópico in ACBrNFSe
exatamente aqui -> XMLStr := DecodeToString(XMLUTF8, True); tirando esse caractere ? o arquivo é importado sem problema, contudo, os valores não carregados nas propriedades do componente ... mas nenhum erro/exceção é disparado pelo componente. -
NFSeX - São Paulo - 'Start tag expected, '<' not found'
gutembergscosta replied to gutembergscosta's tópico in ACBrNFSe
Tranquilo, na próxima não posto mais no corpo da mensagem - esse XML (anexado) é o fornecedor do serviço que nos envia, já vem dessa forma, mas está ok e validado/protocolado, o problema ocorre quando é importado no componente. -
NFe - Carregamento de XML - erro/exceção : Não encontrei o atributo Id.
um tópico no fórum postou gutembergscosta ACBrNFe
Bom dia, coincidencia ou não ... após atualização do componente ... ao carregar um XML (o arquivo está ok,validado, protocolado) está retornano a exceção. unit ACBrNFeNotasFiscais.pas Result := LoadFromString(String(XMLUTF8), AGerarNFe); XML anexado para que possa usar em testes. 35220803838744000178550010000727101705536353.xml -
NFSeX - São Paulo - 'Start tag expected, '<' not found'
um tópico no fórum postou gutembergscosta ACBrNFSe
Boa noite, Estou tentando carregar um XML da prefeitura de São Paulo para capturar algumas informações - O componente está devidamente configurado os schemas, provedor São Paulo e etc. ... O XML até é carregado (arquivo anexo a mensagem), contudo após passar pelo fluxo abaixo na unit (ACBrNFSeXNotasFiscais.pas) // Converte de UTF8 para a String nativa da IDE // XMLStr := DecodeToString(XMLUTF8, True); O XMLStr decodificado é inserido uma uma interrogação no inicio (xml decodado abaixo), '?<?xml version="1.0" encoding="UTF-8"?> e no processo de validação gera exceção : 'Start tag expected, '<' not found' '?<?xml version="1.0" encoding="UTF-8"?>'#$D#$A'<RetornoConsulta xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.prefeitura.sp.gov.br/nfe">'#$D#$A' <NFe xmlns="">'#$D#$A' <Assinatura>PdyL2CEm6DZVcy95MCP3gTFSVkW7OcWu7pyp+lgbyiBdxLVP1m5TdXjshnIdB4ATcCTjddiabuw/mw7odacIom5quGUHbaU7jH3J0vvL9qVrVzPQ78BD8PYpf/ghad1izwA9Jnrd4paqNW1ta4lshExrgEtqebTGvyXrxo+jV0koq78JKKiCsETisjMoVLkN7PqD38512+ohsuq4SInfLpvZeEjJ3D+cLaH8xL1Dub7kyK90wj6TjBy6ClWnQC/GPgr489kKWVk9pNeTuzsw130Pmz1ga3sYjsRbCt2z2hEI75CiFGEAO+ARkeOLuQNVf4lxm0i8mtsQ3ljdzUACGw==</Assinatura>'#$D#$A' <ChaveNFe>'#$D#$A' <InscricaoPrestador>36414891</InscricaoPrestador>'#$D#$A' <NumeroNFe>12669158</NumeroNFe>'#$D#$A' <CodigoVerificacao>9QLBDMKA</CodigoVerificacao>'#$D#$A' </ChaveNFe>'#$D#$A' <DataEmissaoNFe>2022-07-31T19:43:50</DataEmissaoNFe>'#$D#$A' <NumeroLote>903294346</NumeroLote>'#$D#$A' <ChaveRPS>'#$D#$A' <InscricaoPrestador>36414891</InscricaoPrestador>'#$D#$A' <SerieRPS>RP2</SerieRPS>'#$D#$A' <NumeroRPS>12663654</NumeroRPS>'#$D#$A' </ChaveRPS>'#$D#$A' <TipoRPS>RPS</TipoRPS>'#$D#$A' <DataEmissaoRPS>2022-07-31</DataEmissaoRPS>'#$D#$A' <DataFatoGeradorNFe>2022-07-31T00:00:00</DataFatoGeradorNFe>'#$D#$A' <CPFCNPJPrestador>'#$D#$A' <CNPJ>01554285000175</CNPJ>'#$D#$A' </CPFCNPJPrestador>'#$D#$A' <RazaoSocialPrestador>CERTISIGN CERTIFICADORA DIGITAL S.A</RazaoSocialPrestador>'#$D#$A' <EnderecoPrestador>'#$D#$A' <TipoLogradouro>R</TipoLogradouro>'#$D#$A' <Logradouro>BELA CINTRA</Logradouro>'#$D#$A' <NumeroEndereco>00904</NumeroEndereco>'#$D#$A' <ComplementoEndereco>ANDARES 1-4-7 E 9 AO </ComplementoEndereco>'#$D#$A' <Bairro>CERQUEIRA CESAR</Bairro>'#$D#$A' <Cidade>3550308</Cidade>'#$D#$A' <UF>SP</UF>'#$D#$A' <CEP>1415000</CEP>'#$D#$A' </EnderecoPrestador>'#$D#$A' <EmailPrestador>[email protected]</EmailPrestador>'#$D#$A' <StatusNFe>N</StatusNFe>'#$D#$A' <TributacaoNFe>T</TributacaoNFe>'#$D#$A' <OpcaoSimples>0</OpcaoSimples>'#$D#$A' <NumeroGuia>42427097</NumeroGuia>'#$D#$A' <ValorServicos>214.9</ValorServicos>'#$D#$A' <CodigoServico>2800</CodigoServico>'#$D#$A' <AliquotaServicos>0.029</AliquotaServicos>'#$D#$A' <ValorISS>6.23</ValorISS>'#$D#$A' <ValorCredito>0</ValorCredito>'#$D#$A' <ISSRetido>false</ISSRetido>'#$D#$A' <CPFCNPJTomador>'#$D#$A' <CNPJ>56026990000191</CNPJ>'#$D#$A' </CPFCNPJTomador>'#$D#$A' <InscricaoEstadualTomador>336670870119</InscricaoEstadualTomador>'#$D#$A' <RazaoSocialTomador>PRO PAINEL EQUIPAMENTOS ELETR LT</RazaoSocialTomador>'#$D#$A' <EnderecoTomador>'#$D#$A' <TipoLogradouro>Rua</TipoLogradouro>'#$D#$A' <Logradouro>CAMINHO 16</Logradouro>'#$D#$A' <NumeroEndereco>391</NumeroEndereco>'#$D#$A' <Bairro>VILA DINAMARCA</Bairro>'#$D#$A' <Cidade>3518800</Cidade>'#$D#$A' <UF>SP</UF>'#$D#$A' <CEP>7251190</CEP>'#$D#$A' </EnderecoTomador>'#$D#$A' <EmailTomador>[email protected]</EmailTomador>'#$D#$A' <Discriminacao>E-CNPJ TIPO A1; Qtde: 1,00; Preco Unitario: 214,90; Valor Total: 214,90;'#$A' NF Liquidada - Pedido Bpag: 20803460 '#$A#$A'ESTA E UMA NOTA FISCAL DE SERVICO, CASO A SUA COMPRA SE COMPONHA DE MAIS ITENS, ENVIAREMOS A NOTA FISCAL DE PRODUTO POSTERIORMENTE EM FORMATO ELETRONICO.'#$A'*** NOTA FISCAL NAO SUJEITA A RETENCAO NA FONTE DO ISS ***'#$A'Valor Aproximado dos Tributos: R$ 14.06 (5.63%).</Discriminacao>'#$D#$A' <ValorCargaTributaria>14.06</ValorCargaTributaria>'#$D#$A' <PercentualCargaTributaria>0.0563</PercentualCargaTributaria>'#$D#$A' <FonteCargaTributaria />'#$D#$A' </NFe>'#$D#$A'</RetornoConsulta>' REC-20220731-12669158-36414891-3550308-9QLBDMKA.xml -
Olá, gostaria de relatar uma situação na impressão da chave, não ocorre no geral, por acaso algumas estações ... a impressão fica inconsistente, ao que parece o campo se torna menor que a impressão fonte.. Vide imagem, o que fiz foi diminuir a fonte do arquivo do fast de 9 para 8. O curioso que não acontece aleatoriamente.