testei com a modalidade
da a impressão que e o DAC e o digito verificador
Gerado pela minha app
24209000-8
7489 8 986 40000003000 3 124209000 4 6789021234510 5
Boleto Acbr lido pelo codigo de barras
7489 5 986 40000003000 1 124209000 8 6789031234510 8
24209001- 6
Gerado pela minha app
7489 2 989 50000003000 3 124209001 2 6789021234510 0
Boleto Acbr lido pelo codigo de barras
7489 1 989 50000003000 1 124209001 6 6789031234510 3
Meu Codigo C#
Creio que o erro ocorre no DV do nosso numero que dai desencadeia os erros
Nosso Numero 24209000
public string DV_748(object _NUMERO)
{
//* FUNCAO QUE RETORNA O DIGITO VERIFICADOR DE UM NUMERO DO BANCO SICREDI
int _I;
decimal _SOMA, _MULT;
string _DV;
_NUMERO = (_NUMERO is Int64 ? STRZERO(_NUMERO.As<Int64>(), 8, 0) : _NUMERO.ToString().PadRight(8).PadLeft(8, '0'));
//_NUMERO = Iif(Type("_NUMERO") = "N", STRZERO(_NUMERO, 8, 0), Padl(Right(_NUMERO, 8), 8, "0"))
_NUMERO = STRZERO(bancos["agencia"].As<decimal>(), 4, 0) + STRZERO(bancos["operacao"].As<Int64>(), 2, 0) +
STRZERO(bancos["convenio"].As<Int64>(), 5, 0) + _NUMERO;
_SOMA = 0;
for (_I = 19; _I >= 1; _I--)
{
_MULT = (_I >= 12 ? 21 - _I : (_I >= 4 ? 13 - _I : 5 - _I));
_SOMA = _SOMA + _MULT * _NUMERO.ToString().Substring(_I - 1, 1).As<Int64>();
}
_DV = (11 - (_SOMA % 11)).ToString();
_DV = (_DV.As<Int64>() >= 10 ? "0" : _DV.AsStringLimit(1));
return _DV;
}
_CAMPO_LIV = (bancos["registro"].As<Int64>() == 0 ? "1" : "3") + "1" + STRZERO(_NOSSO_NUM, 7, 0) + _DV_NOSSO_NUM +
STRZERO(bancos["agencia"].As<Int64>(), 4, 0) + STRZERO(bancos["operacao"].As<Int64>(), 2, 0)
+ STRZERO(bancos["convenio"].As<Int64>(), 5, 0) + "1" + "0";
_CD_BARRA = "748" + (bancos["moeda"].Equals("9") ? "9" : "0") + STRZERO(FATOR_VENC_748(_DT_VENC), 4, 0) +
STRZERO(_VL_TITULO * 100, 10, 0) + _CAMPO_LIV + digSicredi(_CAMPO_LIV);
_CD_BARRA = _CD_BARRA.AsStringLimit(4) + DAC_CD_BARRA(_CD_BARRA) + _CD_BARRA.AsStringTrim().Substring(4);
public string DAC_CD_BARRA(string _CD_BARRA)
{
//* RETORNA O DAC DE UM CODIGO DE BARRAS
int _I, _LEN;
decimal _SOMA, _DIGITO, _MULT;
string _DV = "";
_LEN = _CD_BARRA.Length;
_MULT = 2;
_SOMA = 0;
for (_I = _LEN; _I >= 1; _I--)
{
_DIGITO = _CD_BARRA.Substring(_I - 1, 1).As<Int64>();
_SOMA = _SOMA + _DIGITO * _MULT;
_MULT = (_MULT == 9 ? 2 : _MULT + 1);
}
_DV = (11 - (_SOMA % 11)).ToString();
_DV = (_DV.As<Int64>() >= 10 ? "1" : (_DV.As<decimal>().ToString("N0").AsStringLimit(1)));
return _DV;
}
public int digSicredi(string seq)
{
/* Variáveis
* -------------
* d - Dígito
* s - Soma
* p - Peso
* b - Base
* r - Resto
*/
int d, s = 0, p = 2, b = 9;
for (int i = seq.Length - 1; i >= 0; i--)
{
s = s + (Convert.ToInt32(seq.Substring(i, 1)) * p);
if (p < b)
p = p + 1;
else
p = 2;
}
d = 11 - (s % 11);
if (d > 9)
d = 0;
return d;
}
public Int64 FATOR_VENC(DateTime _DT_VENC)
{
int diferencasEmDias = 0, nFator = 0;
diferencasEmDias = (_DT_VENC.Date - "07/10/1997".As<DateTime>()).Days;
while (diferencasEmDias > 9999)
{
diferencasEmDias = diferencasEmDias - 9999 + 999;
}
nFator = diferencasEmDias;
//* RETORNA O NUMERO DO FATOR DE VENCIMENTO DE UM TITULO
return nFator;
}
Meu teste ainda diferente
ACBrLibBoleto-20240909.log
ACBrLibBoleto01.ini
Boleto_123575.pdf
Boleto_123574.pdf