///<summary> /// Campo Livre /// 20 a 20 - 1 - 5 fixo - tipo de cobrança (CVT cobrança sem registro - 7744-5) /// 21 a 26 - 6 - Código do cedente /// 27 a 27 - 1 - Dígito verificador do código do cedente /// 28 a 29 - 2 - 00 fixo - vago /// 30 a 43 - 14 - Nosso número /// 44 a 44 - 1 - Dígito do nosso número /// /// PS: Cálculo do dígito do código de barras: usar rotina de módulo 11 ///</summary> public string FormataCampoLivre(Boleto boleto) { string codigoCedente = boleto.Cedente.Codigo.ToString(); codigoCedente = Utils.FormatCode(codigoCedente, 6); string FormataCampoLivre = string.Format("{0}{1}{2}{3}{4}{5}", "5", codigoCedente, Banco_Unibanco.Mod11(codigoCedente), "00", boleto.NossoNumero, Banco_Unibanco.Mod11(boleto.NossoNumero, true)); return(FormataCampoLivre); }
/// <summary> /// /// ******* /// /// O código de barra para cobrança contém 44 posições dispostas da seguinte forma: /// 01 a 03 - 3 - 409 fixo - Código do banco /// 04 a 04 - 1 - 9 fixo - Código da moeda (R$) /// 05 a 05 – 1 - Dígito verificador do código de barras /// 06 a 09 - 4 - Fator de vencimento /// 10 a 19 - 10 - Valor /// 20 a 44 – 25 - Campo livre /// /// ******* /// /// </summary> public override void FormataCodigoBarra(Boleto boleto) { string valorBoleto = boleto.ValorBoleto.ToString("f").Replace(",", "").Replace(".", ""); valorBoleto = Utils.FormatCode(valorBoleto, 10); boleto.CodigoBarra.Codigo = string.Format("{0}{1}{2}{3}{4}", Codigo.ToString(), boleto.Moeda, FatorVencimento(boleto), valorBoleto, FormataCampoLivre(boleto)); _dacBoleto = Banco_Unibanco.Mod11(boleto.CodigoBarra.Codigo); boleto.CodigoBarra.Codigo = Strings.Left(boleto.CodigoBarra.Codigo, 4) + _dacBoleto + Strings.Right(boleto.CodigoBarra.Codigo, 39); }
/// <summary> /// A linha digitável será composta por cinco campos: /// 1º campo /// composto pelo código de Banco, código da moeda, as cinco primeiras posições do campo /// livre e o dígito verificador deste campo; /// 2º campo /// composto pelas posições 6ª a 15ª do campo livre e o dígito verificador deste campo; /// 3º campo /// composto pelas posições 16ª a 25ª do campo livre e o dígito verificador deste campo; /// 4º campo /// composto pelo dígito verificador do código de barras, ou seja, a 5ª posição do código de /// barras; /// 5º campo /// Composto pelo fator de vencimento com 4(quatro) caracteres e o valor do documento com 10(dez) caracteres, sem separadores e sem edição. /// /// </summary> public override void FormataLinhaDigitavel(Boleto boleto) { //BBBMC.CCCCD1 CCCCC.CCCCCD2 CCCCC.CCCCCD3 D4 FFFFVVVVVVVVVV #region Campo 1 string Grupo1 = string.Empty; string BBB = boleto.CodigoBarra.Codigo.Substring(0, 3); string M = boleto.CodigoBarra.Codigo.Substring(3, 1); string CCCCC = boleto.CodigoBarra.Codigo.Substring(19, 5); string D1 = Banco_Unibanco.Mod10(BBB + M + CCCCC).ToString(); Grupo1 = string.Format("{0}{1}{2}.{3}{4} ", BBB, M, CCCCC.Substring(0, 1), CCCCC.Substring(1, 4), D1); #endregion Campo 1 #region Campo 2 string Grupo2 = string.Empty; string CCCCCCCCCC2 = boleto.CodigoBarra.Codigo.Substring(24, 10); string D2 = Banco_Unibanco.Mod10(CCCCCCCCCC2).ToString(); Grupo2 = string.Format("{0}.{1}{2} ", CCCCCCCCCC2.Substring(0, 5), CCCCCCCCCC2.Substring(5, 5), D2); #endregion Campo 2 #region Campo 3 string Grupo3 = string.Empty; string CCCCCCCCCC3 = boleto.CodigoBarra.Codigo.Substring(34, 10); string D3 = Banco_Unibanco.Mod10(CCCCCCCCCC3).ToString(); Grupo3 = string.Format("{0}.{1}{2} ", CCCCCCCCCC3.Substring(0, 5), CCCCCCCCCC3.Substring(5, 5), D3); #endregion Campo 3 #region Campo 4 string Grupo4 = string.Empty; string D4 = _dacBoleto.ToString(); Grupo4 = string.Format("{0} ", D4); #endregion Campo 4 #region Campo 5 string Grupo5 = string.Empty; long FFFF = FatorVencimento(boleto); string VVVVVVVVVV = boleto.ValorBoleto.ToString("f").Replace(",", "").Replace(".", ""); VVVVVVVVVV = Utils.FormatCode(VVVVVVVVVV, 10); if (Utils.ToInt64(VVVVVVVVVV) == 0) { VVVVVVVVVV = "000"; } Grupo5 = string.Format("{0}{1}", FFFF, VVVVVVVVVV); #endregion Campo 5 boleto.CodigoBarra.LinhaDigitavel = Grupo1 + Grupo2 + Grupo3 + Grupo4 + Grupo5; }
public override void FormataNossoNumero(Boleto boleto) { boleto.NossoNumero = string.Format("{0}-{1}", boleto.NossoNumero, Banco_Unibanco.Mod11(boleto.NossoNumero, true)); }
public string CalculaDigitoVerificador(Boleto boleto) { return(Banco_Unibanco.Mod11(boleto.NossoNumero, true).ToString()); }