static String GeraArquivoBoletoViaEmail(String operadoraId, Int32 mes, Int32 ano, System.Data.DataTable dt, out Int32 qtd, PersistenceManager pm) { List <String> contratosProcessados = new List <String>(); //Contrato contrato = null; StringBuilder sb = new StringBuilder(); //System.Data.DataTable dt = null; DateTime vigencia, vencimento, dataLimite = DateTime.MinValue; //dataSemJuros Int32 diaDataSemJuros; // aux; Object valorDataLimite; //String query = null, fone = null, dataPorExtenso = null, mensagem = null, nome = null, codigo = null; qtd = 0; Int32 total = 0, result = 0; CalendarioVencimento rcv = null; String nossoNumero = ""; Cobranca cobranca = new Cobranca(); #region cabecalho sb.Append("\t\t\t\tCliente\t\t\t\t\tData vencimento\t\t\tData do documento\t\t\tData do processamento"); sb.Append(Environment.NewLine); sb.Append("Nossonum"); sb.Append("\t"); sb.Append("Numdoc"); sb.Append("\t"); sb.Append("Valor"); sb.Append("\t"); sb.Append("codigo"); sb.Append("\t"); sb.Append("Nome"); sb.Append("\t"); sb.Append("email"); sb.Append("\t"); sb.Append("cod_conf"); sb.Append("\t"); sb.Append("instrucoes"); sb.Append("\t"); sb.Append("mensagem"); sb.Append("\t"); sb.Append("dia"); //vencimento sb.Append("\t"); sb.Append("mês"); //vencimento sb.Append("\t"); sb.Append("ano"); //vencimento sb.Append("\t"); sb.Append("dia"); //data doc sb.Append("\t"); sb.Append("mês"); //data doc sb.Append("\t"); sb.Append("ano"); //data doc sb.Append("\t"); sb.Append("dia"); //data proc sb.Append("\t"); sb.Append("mês"); //data proc sb.Append("\t"); sb.Append("ano"); //data proc #endregion Int32 totalLista = dt.Rows.Count; foreach (System.Data.DataRow row in dt.Rows) { if (row["beneficiario_email"] == DBNull.Value || Convert.ToString(row["beneficiario_email"]).Trim() == "") { total++; continue; } sb.Append(Environment.NewLine); qtd++; //nosso numero if (row["cobranca_nossonumero"] != DBNull.Value) { nossoNumero = Convert.ToString(row["cobranca_nossonumero"]).Substring(1); } else { cobranca.Tipo = Convert.ToInt32(row["cobranca_tipo"]); cobranca.ContratoCodCobranca = Convert.ToString(row["contrato_codcobranca"]); cobranca.Parcela = Convert.ToInt32(row["cobranca_parcela"]); nossoNumero = cobranca.GeraNossoNumero().Substring(1); } sb.Append(nossoNumero.Substring(0, nossoNumero.Length - 1)); sb.Append("\t"); //Numdoc sb.Append(row["contrato_numero"]); sb.Append("\t"); //Valor sb.Append(row["cobranca_valor"]); sb.Append("\t"); //codigo sb.Append(row["contrato_codcobranca"]); sb.Append("\t"); //Nome sb.Append(row["beneficiario_nome"]); sb.Append("\t"); //email sb.Append(Convert.ToString(row["beneficiario_email"]).ToLower().Replace("´", "")); sb.Append("\t"); //cod_conf sb.Append("1"); sb.Append("\t"); //instrucoes CalendarioAdmissaoVigencia.CalculaDatasDeVigenciaEVencimento(row["contrato_contratoAdmId"], Convert.ToDateTime(row["contrato_admissao"]), out vigencia, out vencimento, out diaDataSemJuros, out valorDataLimite, out rcv, pm); if (valorDataLimite == null) { valorDataLimite = ""; } if (Int32.TryParse(Convert.ToString(valorDataLimite), out result)) { //sb.Append("<br>Excepcionalmente neste mes o vencimento foi alterado para dia 21, data limite dia 26 e isento de multa e juros.<br>Nao receber apos 26/09/2011."); //int tempppp = 0; } else { if (EntityBase.RetiraAcentos(Convert.ToString(valorDataLimite)).ToLower().IndexOf("apos") > -1) { sb.Append("<br>NAO RECEBER "); } else { sb.Append("<br>NAO RECEBER APOS "); } sb.Append(valorDataLimite); } sb.Append("<br>EXCEPCIONALMENTE ISENTO DE JUROS E MULTA.<br>"); sb.Append("\t"); //mensagem sb.Append(""); sb.Append("\t"); //dia vencimento sb.Append(Convert.ToDateTime(row["cobranca_dataVencimento"]).Day); sb.Append("\t"); //mes vencimento sb.Append(Convert.ToDateTime(row["cobranca_dataVencimento"]).Month); sb.Append("\t"); //ano vencimento sb.Append(Convert.ToDateTime(row["cobranca_dataVencimento"]).Year); sb.Append("\t"); //dia data doc sb.Append(DateTime.Now.Day); sb.Append("\t"); //mes data doc sb.Append(DateTime.Now.Month); sb.Append("\t"); //ano data doc sb.Append(DateTime.Now.Year); sb.Append("\t"); //dia data proc sb.Append(DateTime.Now.Day); sb.Append("\t"); //mes data proc sb.Append(DateTime.Now.Month); sb.Append("\t"); //ano data proc sb.Append(DateTime.Now.Year); #region comentado... //se ja processou a proposta, continua para a próxima //if (contratosProcessados.Contains(Convert.ToString(cobranca.PropostaID))) { total++; continue; } //contrato = new Contrato(cobranca.PropostaID); //pm.Load(contrato); //if (contrato.Cancelado || contrato.Inativo) { total++; continue; } //CalendarioAdmissaoVigencia.CalculaDatasDeVigenciaEVencimento( // contrato.ContratoADMID, contrato.Admissao, out vigencia, out vencimento, out diaDataSemJuros, out valorDataLimite, out rcv, pm); //dataSemJuros = cobranca.DataVencimento.AddDays(diaDataSemJuros); //dataSemJuros = new DateTime(dataSemJuros.Year, dataSemJuros.Month, dataSemJuros.Day, 23, 59, 59); //if (Int32.TryParse(Convert.ToString(valorDataLimite), out aux)) //{ // //aux contém o dia da data limite // dataLimite = new DateTime(cobranca.DataVencimento.Year, cobranca.DataVencimento.Month, aux, 23, 59, 59); //} //else //{ // aux = -1; //não há uma data limite em formato legível, mas em texto //} ////Se tem dataLimite <> texto e dataSemJuros ja passou e dataLimite ainda nao passou ////OU ////Se dataLimite == texto e dataSemJuros ja passou e MesDataSemJuros <= Mes atual //if ((aux != -1 && dataSemJuros < DateTime.Now && dataLimite > DateTime.Now) || (dataSemJuros < DateTime.Now && aux > -1 && dataLimite.Month <= DateTime.Now.Month)) //{ // //TODO: esse método ja existe na ContratoBeneficiario.cs // //Pega o titular do contrato e gera uma linha no arquivo de VOZ // query = String.Concat("SELECT contratobeneficiario_id, beneficiario_nome, beneficiario_celular ", // " FROM beneficiario", // " INNER JOIN contrato_beneficiario ON beneficiario_id=contratobeneficiario_beneficiarioId ", // " INNER JOIN contrato ON contrato_id=contratobeneficiario_contratoId ", // " WHERE ", // " contratobeneficiario_tipo=0 AND contrato_id=", cobranca.PropostaID); // dt = LocatorHelper.Instance.ExecuteQuery(query, "resultset", pm).Tables[0]; // codigo = valorPadRight(dt.Rows[0]["contratobeneficiario_id"], 30); // nome = valorPadRight(dt.Rows[0]["beneficiario_nome"], 30); // fone = valorCampoFone(dt.Rows[0]["beneficiario_celular"]); // if (fone == null) // { // total++; // continue; //o cliente não tem celular // } // qtd++; //incrementa a qtd de registros do arquivo // contratosProcessados.Add(Convert.ToString(cobranca.PropostaID)); // if (sb.Length > 0) { sb.Append(Environment.NewLine); } // //TODO: Escrever arquivo segundo layout // if (qtd == 1) // { // sb.Append("1"); // sb.Append(DateTime.Now.ToString("yyyyMMdd").Replace("/", "")); // sb.Append(valorPadRight(ConfigurationManager.AppSettings["smsNomeEmpresa"], 25)); // sb.Append(valorPadRight(ConfigurationManager.AppSettings["smsVersaoLayout"], 10)); // sb.AppendLine(""); // sb.Append("2"); // sb.Append(valorPadRight(ConfigurationManager.AppSettings["smsMensagemCobranca"], 135)); // sb.AppendLine(""); // } // sb.Append("3"); // sb.Append(fone); // sb.Append(nome); // sb.Append(codigo); // sb.Append(valorPadRight(ConfigurationManager.AppSettings["smsTelefoneReceptivo"], 20)); // total++; // if (total == totalLista) // { // sb.AppendLine(""); // sb.Append("9"); // sb.Append(qtd.ToString().PadLeft(8, Convert.ToChar("0"))); // } // dt.Dispose(); //} #endregion } return(sb.ToString()); }