/// <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 = 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 = 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 = 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; string FFFF = boleto.CodigoBarra.Codigo.Substring(5, 4); //FatorVencimento(boleto).ToString() ; if (boleto.Carteira == "06" && !Utils.DataValida(boleto.DataVencimento)) { FFFF = "0000"; } 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; }