-
Total de ítens
29 -
Registro em
-
Última visita
Últimos Visitantes
1.093 visualizações
SaraHidalgo's Achievements
-
Boa tarde, Em um cliente aconteceu algo parecido, porém o registro está um pouco diferente no log -> em anexo. No aplicativo gerou 1 cupom mas no SAT criou 2, inclusive foram salvos 2 XMLs na pasta. No log, o comando "EnviarDadosVenda" foi chamado duas vezes em seguida (16:47:35:036 e 16:47:39:662) para o mesmo cupom (log), um em cada sessão. Posteriormente a resposta foi recebida com um mesmo número de sessão porém referenciando os dois cupons, cada um enviado em uma sessão diferente. Isso aconteceu mais de uma vez na mesma empresa dentro de um mês. É possível enviar dois cupons de uma vez desta maneira ou seria alguma outra coisa? Obrigada. ACBrSAT.txt
-
Bom dia, Caso ajude, conseguimos efetuar a leitura da balança Micheletti Mic3 com o Demo do ACBr utilizando o protocolo P03 na balança e modelo Toledo 2180 no demo.
-
Boa tarde! Encontramos um erro ao gerar o arquivo de remessa no padrão 240 do banco Sicredi. No segmento Q, posição 152 a 153, deve ser enviado a UF do sacado, porém, no arquivo, é gerado com a literal "UF" ao invés de preencher com a UF informada no componente. Fizemos a correção no arquivo, que está anexado a este post. Trecho corrigido: {SEGMENTO Q} Result:= Result + #13#10 + '748' + // 001 a 003 - Código do banco na compensação '0001' + // 004 a 007 - Lote de serviço = "0001" '3' + // 008 a 008 - Tipo de registro = "3" DETALHE IntToStrZero( (2 * ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo)) + 2 , 5) + // 009 a 013 - Nº sequencial do registro do lote 'Q' + // 014 a 014 - Cód. segmento do registro detalhe Space(1) + // 015 a 015 - Uso exclusivo FEBRABAN/CNAB '01' + // 016 a 017 - Código de movimento de remessa TipoSacado + // 018 a 018 - Tipo de inscrição PadLeft(OnlyNumber(Sacado.CNPJCPF), 15, '0') + // 019 a 033 - Número de inscrição PadRight(TiraAcentos(Sacado.NomeSacado), 40) + // 034 a 073 - Nome EndSacado + // 074 a 113 - Endereço PadRight(TiraAcentos(Sacado.Bairro), 15) + // 114 a 128 - Bairro Copy(PadLeft(OnlyNumber(Sacado.CEP),8,'0'),1,5) + // 129 a 133 - CEP Copy(PadLeft(OnlyNumber(Sacado.CEP),8,'0'),6,3) + // 134 a 136 - Sufixo do CEP PadRight(TiraAcentos(Sacado.Cidade), 15) + // 137 a 151 - Cidade // PadLeft(UF, 2) + // 152 a 153 - Unidade da Federação PadLeft(Sacado.UF, 2) + // 152 a 153 - Unidade da Federação TipoAvalista + // 154 a 154 - Tipo de inscrição PadRight(Sacado.SacadoAvalista.CNPJCPF, 15, '0') + // 155 a 169 - Número de inscrição PadRight(TiraAcentos(Sacado.SacadoAvalista.NomeAvalista),40,' ') + // 170 a 209 - Nome do sacador/avalista PadRight('', 3, '0') + // 210 a 212 - Cód. bco corresp. na compensação Space(20) + // 213 a 232 - Nosso nº no banco correspondente Space(8); // 233 a 240 - Uso exclusivo FEBRABAN/CNAB Obrigada. ACBrBancoSicredi.pas
-
Bom dia, Obrigada pelas informações!
-
Bom dia a todos. Existe algum componente que eu possa usar para interpretar um teclado programável, aqueles usados em frente de caixa? Obrigada.
-
Bom dia, Ok, obrigada!
-
Boa tarde! Procurei no fórum mas não encontrei. Existe em algum lugar uma listagem com todos os Bancos e Carteiras que o ACBr suporta? Obrigada!
-
Bom dia! Continuo no aguardo de uma resposta sobre a solução proposta! Obrigada.
-
Bom dia! Algum retorno sobre essa alteração? Obrigada.
-
Bom dia! Estou no processo de homologação da carteira Com Registro do HSBC em um cliente, e encontrei um problema ao ler o arquivo de retorno no padrão CNAB400. A mensagem original era "Cedente do arquivo inválido. Informado = '11251477284' Esperado = '' ". Trecho do código da leitura do cedente: rCodigoCedente := Copy(ARetorno[0], 109, 11); Mas, no manual do banco da cobrança registrada, este campo é reservado ao banco. Fiz uma alteração no código, de acordo com o manual do site do banco, prevendo ainda o caso da carteira sem registro: if Trim(Copy(ARetorno[0], 12, 15)) = 'COBRANCA' Then rCodigoCedente := Copy(ARetorno[0], 34, 11) else rCodigoCedente := Copy(ARetorno[0], 109, 11); Além disso, precisei alterar o código onde os campos são comparados, pois era realizada uma conversão de string para inteiro estourando o valor máximo permitido para este tipo de dado: DE: if not(LeCedenteRetorno) and (StrToIntDef(rCodigoCedente, -1) <> StrToIntDef(OnlyNumber(Cedente.CodigoCedente), 0)) then raise Exception.Create(ACBrStr('Cedente do arquivo inválido' + #13 + #13 + 'Informado = ' + OnlyNumber(Cedente.CodigoCedente) + #13 + 'Esperado = '+ rCodigoCedente)); PARA: if Trim(Copy(ARetorno[0], 12, 15)) = 'COBRANCA CNR' Then if not(LeCedenteRetorno) and (StrToIntDef(rCodigoCedente, -1) <> StrToIntDef(OnlyNumber(Cedente.CodigoCedente), 0)) then raise Exception.Create(ACBrStr('Cedente do arquivo inválido' + #13 + #13 + 'Informado = ' + OnlyNumber(Cedente.CodigoCedente) + #13 + 'Esperado = '+ rCodigoCedente)) else if not(LeCedenteRetorno) and (rCodigoCedente <> OnlyNumber(Cedente.CodigoCedente)) then raise Exception.Create(ACBrStr('Cedente do arquivo inválido' + #13 + #13 + 'Informado = ' + OnlyNumber(Cedente.CodigoCedente) + #13 + 'Esperado = '+ rCodigoCedente)); Em anexo a unit alterada para análise e aprovação. Abaixo o link com o manual do banco. https://www.hsbc.com.br/1/PA_esf-ca-app-content/content/hbbr-pws-gip16/portugues/business/comum/pdf/cob400_jan.pdf Obrigada! ACBrBancoHSBC.pas
-
Boa tarde, Estou configurando uma carteira do Santander (101-Rápida com Registro) com o campo "Aceite" = S. O problema está no arquivo de remessa, que trabalha com os valores "N" ou "S", e, ao importar este arquivo no site do banco, o mesmo é rejeitado com o erro "Código de aceite diferente de (A/N)". No manual do banco está definido que o campo é travado como "N", tanto no arquivo de 400 quanto de 240 posições, mas, no site no banco é aceito o valor "A" ou "N". Fiz a alteração no fonte: 240 posições: {SEGMENTO P} Result := '033' + // 001 - 003 / Código do Banco na compensação ........ Space(1) + // 106 - 106 / Reservado (uso Banco) sEspecie + // 107 – 108 / Espécie do título //ifThen(Aceite = atSim, 'S', 'N') + // 109 - 109 / Identif. de título Aceito/Não Aceito ifThen(Aceite = atSim, 'A', 'N') + // 109 - 109 / Identif. de título Aceito/Não Aceito FormatDateTime('ddmmyyyy',DataDocumento) + // 110 - 117 / Data da emissão do título ...... {SEGMENTO P - FIM} 400 posições: wLinha:= '1' + // 1- ID Registro ................ IntToStrZero( round( ValorDocumento * 100), 13) + // 127 a 139 '033' + aAgencia + // 140 a 147 // PadRight(aEspecie,2) + 'N' + // 148 a 150 PadRight(aEspecie,2) + // 148 a 149 ifThen(Aceite = atSim, 'A', 'N') + // 150 FormatDateTime( 'ddmmyy', DataDocumento ) + // 151 a 156 .................. IntToStrZero( aRemessa.Count + 1, 6 ); // 395 a 400 Em anexo o arquivo .pas para análise e aprovação. Obrigada. ACBrBancoSantander.pas
-
Santander - Sigla da carteira no boleto impresso
SaraHidalgo replied to SaraHidalgo's tópico in ACBrBoleto
Boa tarde, Esqueci de mencionar que estou gerando o arquivo de remessa no layout de 400 posições. Analisando os fontes mais detalhadamente, resolvi gerar o arquivo de 240 posições, que atribui valor ao campo "Código da Carteira" no arquivo de remessa a partir da propriedade "CaracTitulo". Desta forma consegui utilizar a propriedade "Carteira" com a literal "RCR" para ser impressa no boleto mantendo os valores antigos no arquivo de remessa. Obrigada. -
Boa tarde! Estou em processo de homologação de uma carteira do Santander, a Rápida com Registro (101), e o banco precisa das seguintes configurações: Carteira a inserir na remessa: 5 – Cobrança Rápida com Registro (cliente imprime) Carteira a inserir nos boletos: RCR (corpo do boleto) / 101 (linha digitavel/código de barras) Hoje, para emitir o boleto, eu informo o valor "101" na propriedade ACBrTitulo.Carteira e "101" em ACBBoleto.Cedente.Modalidade. Desta forma, a linha digitável fica correta e o arquivo de remessa também, mas, na impressão do boleto, o banco precisa que o campo "Carteira" seja "RCR". Alguém já passou por um caso parecido? Pensei em utilizar algum outro campo do componente na impressão do boleto e informar o "RCR", mas tenho medo que comprometa outros bancos. Obrigada.
-
Boa tarde! Estou com os fontes atualizados, onde o código do cedente é gerado pela função MontarCampoCodigoCedente. Para resolver este problema, alterei o report de impressão do boleto (já utilizo um diferente do "oficial" disponibilizado no SVN) onde, antigamente, o campo do código do beneficiário era composto pela agência + código do cedente e, após alteração para utilização da função MontarCampoCodigoCedente a agência ficou "duplicada". Removi então o campo agência do report, mantendo somente o campo código do cedente. Espero ter ajudado.
-
Farei isso, obrigada!