/// <summary> /// Rotina de Geração do Campo livre usado no Código de Barras para formar o IPTE /// </summary> /// <param name="blt">Intancia da Classe de Boleto</param> /// <returns>String de 25 caractere que representa 'Campo Livre'</returns> public static string CampoLivre(Boleto blt, string cAgenciaNumero, string cCodCedente, string cNossoNumero) { cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 3); cCodCedente = CobUtil.Right(cCodCedente, 7); cNossoNumero = CobUtil.Right(cNossoNumero, 8); if (Int32.Parse(cCodCedente) == 0) { throw new Exception("Informe o código do cedente"); } string cLivre = "21" + cAgenciaNumero + cCodCedente + cNossoNumero + "041"; string cDV = CobUtil.Modulo10(cLivre).ToString() + CobUtil.Modulo11Padrao(cLivre, 7).ToString(); cLivre = cLivre + cDV; string cDAC = CobUtil.Modulo10(cNossoNumero).ToString(); cDAC = cDAC + CobUtil.Modulo11Padrao(cNossoNumero + cDAC, 7); blt.NossoNumeroExibicao = cNossoNumero + "-" + cDAC; return(cLivre); }
/// <summary> /// Rotina de Geração do Campo livre usado no Código de Barras para formar o IPTE /// </summary> /// <param name="blt">Intancia da Classe de Boleto</param> /// <returns>String de 25 caractere que representa 'Campo Livre'</returns> public static string CampoLivre(Boleto blt, string cAgencia, string cCodCedente, string cNossoNumero) { string[] cAgenciaParts = cAgencia.Split('-', '/'); string cAgenciaConta = CobUtil.Right(cAgenciaParts[0], 2); string cAgenciaDig = CobUtil.Right(cAgenciaParts[1], 1); cCodCedente = CobUtil.Right(cCodCedente, 9); cNossoNumero = CobUtil.Right(cNossoNumero, 8); if (Int32.Parse(cCodCedente) == 0) { throw new Exception("Informe o código do cedente"); } // cAgenciaDig string cDAC = CobUtil.Modulo11Padrao(cAgenciaConta + cNossoNumero, 9).ToString(); blt.NossoNumeroExibicao = cNossoNumero + "-" + cDAC; cNossoNumero = cNossoNumero + cDAC; string cLivre = cAgenciaConta + cCodCedente + cNossoNumero + "047"; // (Corresponde à Chave ASBACE) int nD1 = CobUtil.Modulo10(cLivre); int nD2 = CobUtil.Modulo11Negativo(cLivre + nD1.ToString()); if (nD2 == -1) // Veja a rotina do modulo11 { nD1 = nD1 + 1; nD2 = CobUtil.Modulo11Negativo(cLivre + nD1.ToString()); } cLivre = cLivre + nD1.ToString() + nD2.ToString(); return(cLivre); }
/// <summary> /// Rotina de Geração do Campo livre usado no Código de Barras para formar o IPTE /// </summary> /// <param name="blt">Intancia da Classe de Boleto</param> /// <returns>String de 25 caractere que representa 'Campo Livre'</returns> public static string CampoLivre(Boleto blt, string cCodCedente, string cModalidade, string cNossoNumero) { cCodCedente = CobUtil.Right(cCodCedente, 11); cModalidade = CobUtil.Right(cModalidade, 1); if (CobUtil.GetInt(cCodCedente) == 0) { throw new Exception("Informe o código do cedente"); } if (CobUtil.GetInt(cModalidade) == 0) { throw new Exception("Informe o a modalidade"); } string cDAC12 = NossoNumero(ref cNossoNumero); string cLivre = cNossoNumero + cCodCedente + cModalidade + "021"; blt.NossoNumeroExibicao = cNossoNumero + "-" + cDAC12; // (Corresponde à Chave ASBACE) int nD1 = CobUtil.Modulo10(cLivre); int nD2 = CobUtil.Modulo11Negativo(cLivre + nD1.ToString()); if (nD2 == -1) // Veja a rotina do modulo11 { nD1 = nD1 + 1; nD2 = CobUtil.Modulo11Negativo(cLivre + nD1.ToString()); } cLivre = cLivre + nD1.ToString() + nD2.ToString(); return(cLivre); }
/// <summary> /// Rotina de Geração do Campo livre usado no Código de Barras para formar o IPTE /// </summary> /// <param name="blt">Intancia da Classe de Boleto</param> /// <returns>String de 25 caractere que representa 'Campo Livre'</returns> public static string CampoLivre(Boleto blt, string cAgenciaNumero, string cContaNumero, string cModalidade, string cNossoNumero) { cNossoNumero = CobUtil.Right(cNossoNumero, 9); // O Nosso Numero tem que ter sempre 9 posições, sendo a primeira o digito "9" cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 4); cModalidade = CobUtil.Right(cModalidade, 2); // (mas será utilizado somente o ultimo digito da modalidade) cContaNumero = CobUtil.Right(cContaNumero, 6); // numero da conta sem o digito if (CobUtil.GetInt(cModalidade) == 0) { throw new Exception("Informe a Modalidade"); } if (cNossoNumero.Substring(0, 1) != "9") { throw new Exception("Para o Banco 'Nossa Caixa' o 'Nosso Numero' deve ter 9 posições iniciado sempre pelo digito '9'"); } string cContaDig = blt.Conta.Split('-')[1]; //O campo nosso numero tem que iniciar com 9 e ter 9 digitos string cLivre = cNossoNumero + cAgenciaNumero + cModalidade.Substring(1) + // utiliza apenas o ultimo digito da modalidade cContaNumero + "151"; int D1 = CobUtil.Modulo10(cLivre); int D2 = CobUtil.Modulo11Negativo(cLivre + D1.ToString()); while (D2 == -1) // Veja a rotina do modulo11 { D1 = D1 + 1; D2 = CobUtil.Modulo11Negativo(cLivre + D1.ToString()); } cLivre = cLivre + D1.ToString() + D2.ToString(); //Calucla o digito do Nosso Numero int nTotal = DVNossaCaixa(cAgenciaNumero + cModalidade + "0" + cContaNumero) + int.Parse(cContaDig); nTotal = nTotal + DVNossaCaixa(cNossoNumero); int nResto = nTotal % 10; nResto = 10 - nResto; blt.NossoNumeroExibicao = cNossoNumero + "-" + nResto; blt.CarteiraExibicao = "CIDENT"; blt.AgenciaConta = cAgenciaNumero + "/" + cModalidade + "/" + blt.Conta; return(cLivre); }
/// <summary> /// define se deve ser usado a nova logica de geração no Santander em vez do antigo Banespa /// </summary> //public static bool useSantander = false; /// <summary> /// Rotina de Geração do Campo livre usado no Código de Barras para formar o IPTE /// </summary> /// <param name="blt">Intancia da Classe de Boleto</param> /// <param name="cCodCedente">Código do Cedente</param> /// <param name="cNossoNumero">Nosso Numero</param> /// <returns>String de 25 caractere que representa 'Campo Livre'</returns> public static string CampoLivre(Boleto blt, string cCodCedente, string cNossoNumero) { if (cCodCedente.Length != 11) { throw new Exception("O código do cedente deve ter 11 digitos"); } cCodCedente = CobUtil.Right(cCodCedente, 11); cNossoNumero = CobUtil.Right(cNossoNumero, 7); if (Int64.Parse(cCodCedente) == 0) { throw new Exception("Informe o código do cedente"); } string cLivre = cCodCedente + cNossoNumero + "00" + "033"; string cD1; string cD2; cD1 = CobUtil.Modulo10(cLivre).ToString(); cD2 = CobUtil.Modulo11Padrao(cLivre + cD1, 7).ToString(); if (cD2 == "1") { cD1 = "0"; loopDigitoInc: cD2 = CobUtil.Modulo11Padrao(cLivre + cD1, 7).ToString(); if (cD2 == "1") { cD1 = string.Format("{0}", Int32.Parse(cD1) + 1); goto loopDigitoInc; } } cLivre = cLivre + cD1 + cD2; string cAgenciaNumero = cCodCedente.Substring(0, 3); blt.NossoNumeroExibicao = cAgenciaNumero + " " + cNossoNumero + "-" + DVBanespa(cAgenciaNumero + cNossoNumero); //blt.NossoNumeroExibicao = cAgenciaNumero + " " + cNossoNumero + "-" + CobUtil.Modulo11Especial(cAgenciaNumero + cNossoNumero, 9); blt.AgenciaConta = cCodCedente.Substring(0, 3) + " " + cCodCedente.Substring(3, 2) + " " + cCodCedente.Substring(5, 5) + " " + cCodCedente.Substring(10, 1); return(cLivre); }
/// <summary> /// Rotina de Geração do Campo livre usado no Código de Barras para formar o IPTE /// </summary> /// <param name="blt">Intancia da Classe de Boleto</param> /// <returns>String de 25 caractere que representa 'Campo Livre'</returns> public static string CampoLivre(Boleto blt, string cAgenciaNumero, string cContaNumero, string cCarteira, string cCodCedente, string cNossoNumero, string cNumeroDocumento) { string cDAC = NossoNumero(ref cAgenciaNumero, ref cContaNumero, ref cCarteira, ref cNossoNumero); if (CobUtil.GetInt(cCarteira) == 0) { throw new Exception("Informe a Carteira"); } if (CobUtil.GetInt(cAgenciaNumero) == 0) { throw new Exception("Informe a Agencia"); } if (CobUtil.GetInt(cContaNumero) == 0) { throw new Exception("Informe a Conta"); } string cLivre; if (cCarteira == "107" || cCarteira == "122" || cCarteira == "142" || cCarteira == "143" || cCarteira == "196" || cCarteira == "198") { string cNumDoc = CobUtil.Right(cNumeroDocumento, 7); cCodCedente = CobUtil.Right(cCodCedente, 5); cLivre = cCarteira + cNossoNumero + cNumDoc + cCodCedente; cLivre += CobUtil.Modulo10(cLivre) + "0"; } else { cLivre = cCarteira + cNossoNumero + cDAC + cAgenciaNumero + cContaNumero + CobUtil.Modulo10(cAgenciaNumero + cContaNumero) + "000"; } blt.NossoNumeroExibicao = cCarteira + "/" + cNossoNumero + "-" + cDAC; blt.AgenciaConta = cAgenciaNumero + "/" + blt.Conta; return(cLivre); }
/// <summary> /// Rotina de Geração do Campo livre usado no Código de Barras para formar o IPTE /// </summary> /// <param name="blt">Intancia da Classe de Boleto</param> /// <returns>String de 25 caractere que representa 'Campo Livre'</returns> public static string CampoLivre(Boleto blt, string cAgenciaNumero, string cContaNumero, string cNossoNumero) { cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 4); cContaNumero = CobUtil.Right(cContaNumero, 7); cNossoNumero = CobUtil.Right(cNossoNumero, 13); string cDAC = CobUtil.Modulo10(cNossoNumero + cAgenciaNumero + cContaNumero).ToString(); string cLivre = cAgenciaNumero + cContaNumero + cDAC + cNossoNumero; blt.AgenciaConta = cAgenciaNumero + "/" + cContaNumero + "-" + cDAC; blt.NossoNumeroExibicao = cNossoNumero; return(cLivre); }
public static string NossoNumero(ref string cAgenciaNumero, ref string cContaNumero, ref string cCarteira, ref string cNossoNumero) { if (cContaNumero.Length > 5) { throw new Exception("O Número da conta deve contar no maximo 5 digitos, sem o verificador: 12345-6"); } cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 4); cContaNumero = CobUtil.Right(cContaNumero, 5); cCarteira = CobUtil.Right(cCarteira, 3); cNossoNumero = CobUtil.Right(cNossoNumero.Split('-')[0], 8); if (cCarteira == "112" || cCarteira == "126" || cCarteira == "131" || cCarteira == "146" || cCarteira == "150" || cCarteira == "168") { return(CobUtil.Modulo10(cCarteira + cNossoNumero).ToString()); } else { return(CobUtil.Modulo10(cAgenciaNumero + cContaNumero + cCarteira + cNossoNumero).ToString()); } }
/// <summary> /// Rotina de Geração do Campo livre usado no Código de Barras para formar o IPTE /// </summary> /// <param name="blt">Intancia da Classe de Boleto</param> /// <returns>String de 25 caractere que representa 'Campo Livre'</returns> public static string CampoLivre(string cConvenio, string cCarteira, string cNossoNumero) { cConvenio = CobUtil.Right(cConvenio, 5); cCarteira = CobUtil.Right(cCarteira, 2); cNossoNumero = CobUtil.Right(cNossoNumero, 13); if (CobUtil.GetInt(cConvenio) == 0) { throw new Exception("Informe o código do convenio"); } if (CobUtil.GetInt(cCarteira) == 0) { throw new Exception("Informe o a carteira"); } string cLivre = cConvenio + cNossoNumero.Substring(0, 3) + cCarteira + cNossoNumero.Substring(3) + "027"; cLivre = cLivre + CobUtil.Modulo10(cLivre); cLivre = cLivre + CobUtil.Modulo11Padrao(cLivre, 7); return(cLivre); }
/// <summary> /// Rotina de Geração do Campo livre usado no Código de Barras para formar o IPTE /// </summary> /// <param name="blt">Intancia da Classe de Boleto</param> /// <returns>String de 25 caractere que representa 'Campo Livre'</returns> public static string CampoLivre(Boleto blt, string cAgenciaNumero, string cContaNumero, string cCarteira, string cNossoNumero) { cAgenciaNumero = CobUtil.Right(cAgenciaNumero, 3); cContaNumero = CobUtil.Right(cContaNumero, 7); cCarteira = CobUtil.Right(cCarteira, 1); cNossoNumero = CobUtil.Right(cNossoNumero, 6); if (CobUtil.GetInt(cCarteira) == 0) { throw new Exception("Informe a Carteira"); } //O campo nosso numero tem que iniciar com 9 e ter 9 digitos string cLivre = "000" + cAgenciaNumero + cContaNumero + cCarteira + cNossoNumero + "070"; int D1 = CobUtil.Modulo10(cLivre); int D2 = CobUtil.Modulo11Negativo(cLivre + D1.ToString()); while (D2 == -1) // Veja a rotina do modulo11 { D1 = D1 + 1; D2 = CobUtil.Modulo11Negativo(cLivre + D1.ToString()); } cLivre = cLivre + D1.ToString() + D2.ToString(); //Monta o Nosso Numero blt.NossoNumeroExibicao = cCarteira + cNossoNumero + "070" + D1.ToString() + D2.ToString(); // Monta a Exibição da Agencia/Conta blt.AgenciaConta = "000 " + cAgenciaNumero + " " + cContaNumero; return(cLivre); }