public void Salvar(Contrato contrato, ContratoBeneficiario titular, IList <ContratoBeneficiario> dependentes, Object[] fichas, Object usuarioLiberadorID, IList <AdicionalBeneficiario> adicionalBeneficiario, Conferencia conferencia, Decimal valorTotal, bool gerarCobranca = true) { Decimal valorTotalContrato = 0; PersistenceManager pm = new PersistenceManager(); pm.BeginTransactionContext(); //TODO: checar se o contrato foi retirado do estoque (almox_contrato_impresso -> almox_contratoimp_produtorId <> null) // se nao, seta para o produtor da proposta try { Boolean novoContrato = contrato.ID == null; if (novoContrato) { //calcula o codigo de cobranca para o contrato. String qry = "SELECT MAX(contrato_codcobranca) FROM contrato"; object ret = LocatorHelper.Instance.ExecuteScalar(qry, null, null, pm); if (ret == null || ret == DBNull.Value) { ret = 0; } contrato.CodCobranca = Convert.ToInt32(ret) + 1; } //Salva o contrato. pm.Save(contrato); #region gera primeria cobranca if (novoContrato && gerarCobranca) { //gera a primeira cobranca ja paga Cobranca cobranca = new Cobranca(); cobranca.Cancelada = false; cobranca.ComissaoPaga = true; cobranca.ContratoCodCobranca = Convert.ToString(contrato.CodCobranca); cobranca.DataCriacao = DateTime.Now; cobranca.DataPgto = contrato.Admissao; cobranca.DataVencimento = contrato.Admissao; cobranca.Pago = true; cobranca.Parcela = 1; cobranca.PropostaID = contrato.ID; cobranca.Tipo = (int)Cobranca.eTipo.Normal; cobranca.Valor = valorTotal; cobranca.ValorPgto = cobranca.Valor; pm.Save(cobranca); List <CobrancaComposite> composite = new List <CobrancaComposite>(); Contrato.CalculaValorDaProposta2(cobranca.PropostaID, cobranca.DataVencimento, pm, false, true, ref composite, false); CobrancaComposite.Salvar(cobranca.ID, composite, pm); composite = null; } #endregion if (usuarioLiberadorID != null) { Contrato.SetaUsuarioLiberador(contrato.ID, usuarioLiberadorID, pm); } //Salva o titular titular.ContratoID = contrato.ID; titular.NumeroSequencial = 0; titular.Vigencia = contrato.Vigencia; if (titular.BeneficiarioID == null) { titular.BeneficiarioID = ContratoBeneficiario.CarregaTitularID(contrato.ID, pm); } if (titular.ID == null) { titular.ID = ContratoBeneficiario.CarregaID_ParaTitular(contrato.ID, pm); } //if (titular.ID != null) { pm.Load(titular); } nao pode carregar, pois sobrescreve dados preenchidos na tela else { titular.Tipo = Convert.ToInt32(ContratoBeneficiario.TipoRelacao.Titular); } //if (titular.ID == null) { titular.Status = (Int32)ContratoBeneficiario.eStatus.Novo; } /*else*/ if (titular.Status == Convert.ToInt32(ContratoBeneficiario.eStatus.Incluido)) { valorTotalContrato += titular.Valor; } if (novoContrato) { titular.Status = (Int32)ContratoBeneficiario.eStatus.Novo; titular.Data = contrato.Admissao; titular.Vigencia = contrato.Vigencia; } pm.Save(titular); #region Salva os dependentes if (dependentes != null) { CalendarioVencimento rcv = null; DateTime vigencia = DateTime.MinValue, vencimento = DateTime.MinValue; Int32 diasDataSemJuros = 0; Object valorDataLimite = null; foreach (ContratoBeneficiario dependente in dependentes) { if (dependente.NumeroSequencial < 0) { dependente.NumeroSequencial = ContratoBeneficiario.ProximoNumeroSequencial(contrato.ID, dependente.BeneficiarioID, pm); } dependente.ContratoID = contrato.ID; if (dependente.ID == null) { dependente.Status = (Int32)ContratoBeneficiario.eStatus.Novo; if (novoContrato) { dependente.Vigencia = contrato.Vigencia; } else { CalendarioAdmissaoVigencia.CalculaDatasDeVigenciaEVencimento(contrato.ContratoADMID, dependente.Data, out vigencia, out vencimento, out diasDataSemJuros, out valorDataLimite, out rcv, pm); dependente.Vigencia = vigencia; } } else if (dependente.Status == (Int32)ContratoBeneficiario.eStatus.Incluido) { valorTotalContrato += dependente.Valor; } pm.Save(dependente); } } #endregion //Salva as fichas de saúde dos beneficiários Boolean aprovadoPeloDepto = true; if (fichas != null && fichas.Length > 0) //&& Convert.ToInt32(contrato.ID) != 152685) { foreach (IList <ItemDeclaracaoSaudeINSTANCIA> lista in fichas) { if (lista == null) { continue; } foreach (ItemDeclaracaoSaudeINSTANCIA item in lista) { //Se id==null, tenta achar pelo id do beneficiario e do item de ficha de saude if (item.ID == null) { item.ID = ItemDeclaracaoSaudeINSTANCIA.CarregarID( item.BeneficiarioID, item.ItemDeclaracaoID, pm); } if (item.ID != null) { pm.Save(item); } else if (item.Sim) { pm.Save(item); } //se tem positivacao sem aprovacao do técnico, a proposta fica pendente if (item.Sim && !item.AprovadoPeloDeptoTecnico && aprovadoPeloDepto == true) { aprovadoPeloDepto = false; } } } } if (novoContrato && !aprovadoPeloDepto) //se o contrato é novo e há positivacoes nas fichas de saude SEM a aprovacao do Depto. Tecnico: { contrato.Pendente = true; pm.Save(contrato); } //salva os produtos adicionais contratados if (adicionalBeneficiario != null) { foreach (AdicionalBeneficiario ad in adicionalBeneficiario) { ad.PropostaID = contrato.ID; pm.Save(ad); } } ////checa historico de planos e atualiza a última entrada se necessário. //ContratoPlano obj = ContratoPlano.CarregarAtual(contrato.ID, pm); //if (obj != null) //{ // if (Convert.ToString(obj.PlanoID) != Convert.ToString(contrato.PlanoID)) // { // obj.PlanoID = contrato.PlanoID; // pm.Save(obj); // } // obj = null; //} //checa almoxarifado - contrato impresso String letra = ""; if (PrimeiraPosicaoELetra(contrato.Numero)) { letra = contrato.Numero.Substring(0, 1); } AlmoxContratoImpresso aci = null; //if (!String.IsNullOrEmpty(letra)) // aci = AlmoxContratoImpresso.Carregar(contrato.OperadoraID, contrato.Numero.Replace(letra, ""), letra, -1, pm); //else // aci = AlmoxContratoImpresso.Carregar(contrato.OperadoraID, contrato.Numero, letra, -1, pm); if (aci != null && aci.AgenteID == null) { aci.AgenteID = contrato.DonoID; aci.Data = contrato.Data; pm.Save(aci); } else if (aci == null) { #region IMPOSSIVEL //aci = new AlmoxContratoImpresso(); //aci.AgenteID = contrato.DonoID; //aci.Data = contrato.Data; //aci.MovID = null; //????? //aci.Numero = contrato.Numero; //aci.OperadoraID = contrato.OperadoraID; //aci.ProdutoID = null; //????? ////pm.Save(aci); #endregion } //Altera status da proposta em conferencia / cadastro if (conferencia != null) { conferencia.Carregar(); conferencia.Departamento = 6; //TODO: corrigir (Int32)ContratoStatusHistorico.eStatus.Cadastrado; pm.Save(conferencia); ContratoStatusHistorico.Salvar(contrato.Numero, contrato.OperadoraID, ContratoStatusHistorico.eStatus.Cadastrado, pm); } else if (novoContrato) { ContratoStatusHistorico.Salvar(contrato.Numero, contrato.OperadoraID, ContratoStatusHistorico.eStatus.Cadastrado, pm); } //Checa se é necessário gravar o valor total do contrato if (valorTotalContrato > 0) { ContratoValor.InsereNovoValorSeNecessario(contrato.ID, valorTotalContrato, pm); } pm.Commit(); } catch (Exception ex) { pm.Rollback(); throw ex; } finally { pm = null; } }
static String GeraArquivoCARTAReativacao(String operadoraId, Int32 mes, Int32 ano, IList <Cobranca> atrasadas, 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, dataSemJuros, dataLimite = DateTime.MinValue; Int32 diaDataSemJuros, aux; Object valorDataLimite; String query = null, fone = null, dataPorExtenso = null, mensagem = null; qtd = 0; CalendarioVencimento rcv = null; foreach (Cobranca cobranca in atrasadas) { //se ja processou a proposta, continua para a próxima if (contratosProcessados.Contains(Convert.ToString(cobranca.PropostaID))) { continue; } contrato = new Contrato(cobranca.PropostaID); pm.Load(contrato); if (contrato.Cancelado) { 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: Escrever arquivo segundo layout //sb.Append(fone); //sb.Append(","); //sb.Append(dt.Rows[0]["beneficiario_nome"]); //sb.Append(","); //sb.Append(dt.Rows[0]["contratobeneficiario_id"]); //sb.Append(","); //sb.Append(dataPorExtenso); //sb.Append(","); //sb.Append(mensagem); //sb.Append(","); //sb.Append(cobranca.OperadoraNome.ToUpper()); //dt.Dispose(); } } return(sb.ToString()); }
static String GeraArquivoCARTACancelamento(String operadoraId, Int32 mes, Int32 ano, IList <Cobranca> atrasadas, out Int32 qtd, PersistenceManager pm) { List <String> contratosProcessados = new List <String>(); Contrato contrato = null; StringBuilder sb = new StringBuilder(); System.Data.DataTable dt = null; Endereco endereco = null; DateTime vigencia, vencimento, dataSemJuros, dataLimite = DateTime.MinValue; Int32 diaDataSemJuros, aux; Object valorDataLimite; String query = null, nome = null, logradouro = null, dataLimiteFile = null; String bairro = null, cidade = null, uf = null, cep = null; CalendarioVencimento rcv = null; qtd = 0; foreach (Cobranca cobranca in atrasadas) { //se ja processou a proposta, continua para a próxima if (contratosProcessados.Contains(Convert.ToString(cobranca.PropostaID))) { continue; } contrato = new Contrato(cobranca.PropostaID); pm.Load(contrato); if (contrato.Cancelado) { 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)) { //Pega o titular do contrato e gera uma linha no arquivo de VOZ query = String.Concat("SELECT contratobeneficiario_id, beneficiario_id, beneficiario_nome, beneficiario_telefone,beneficiario_telefone2,beneficiario_celular, contrato_enderecoCobrancaId", " 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]; endereco = new Endereco(dt.Rows[0]["contrato_enderecoCobrancaId"]); pm.Load(endereco); qtd++; //incrementa a qtd de registros do arquivo contratosProcessados.Add(Convert.ToString(cobranca.PropostaID)); nome = valorPadRight(dt.Rows[0]["beneficiario_nome"], 40); logradouro = valorPadRight(String.Concat(endereco.Logradouro, ", ", endereco.Numero, " ", endereco.Complemento), 65); bairro = valorPadRight(endereco.Bairro, 25); cidade = valorPadRight(endereco.Cidade, 25); uf = valorPadRight(endereco.UF, 2); cep = valorPadRight(endereco.CEP, 8); dataLimiteFile = dataLimite.ToString("ddMMyyyy").Replace("/", ""); if (sb.Length > 0) { sb.Append(Environment.NewLine); } //TODO: gera arquivo segundo layout sb.Append(nome); sb.Append(dataLimiteFile); sb.Append(logradouro); sb.Append(bairro); sb.Append(cidade); sb.Append(uf); sb.Append(cep); dt.Dispose(); } } return(sb.ToString()); }
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()); }
//TODO: centralizar a lógica que se repete nas três formas de aviso static String GeraArquivoVOZ(String operadoraId, Int32 mes, Int32 ano, IList <Cobranca> atrasadas, 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, dataSemJuros, dataLimite = DateTime.MinValue; Int32 diaDataSemJuros, aux; Object valorDataLimite; String query = null, fone = null, dataPorExtenso = null, mensagem = null; qtd = 0; CalendarioVencimento rcv = null; foreach (Cobranca cobranca in atrasadas) { //se ja processou a proposta, continua para a próxima if (contratosProcessados.Contains(Convert.ToString(cobranca.PropostaID))) { continue; } contrato = new Contrato(cobranca.PropostaID); pm.Load(contrato); if (contrato.Cancelado) { 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)) { //Pega o titular do contrato e gera uma linha no arquivo de VOZ query = String.Concat("SELECT contratobeneficiario_id, beneficiario_nome, beneficiario_telefone, beneficiario_telefone2, beneficiario_celular, operadora_mensagemRemessa ", " FROM beneficiario", " INNER JOIN contrato_beneficiario ON beneficiario_id=contratobeneficiario_beneficiarioId ", " INNER JOIN contrato ON contrato_id=contratobeneficiario_contratoId ", " INNER JOIN operadora ON contrato_operadoraId = operadora_id ", " WHERE ", " contratobeneficiario_tipo=0 AND contrato_id=", cobranca.PropostaID); dt = LocatorHelper.Instance.ExecuteQuery(query, "resultset", pm).Tables[0]; if (valorCampoFone(dt.Rows[0]["beneficiario_telefone"]) != null) { fone = valorCampoFone(dt.Rows[0]["beneficiario_telefone"]); } else if (valorCampoFone(dt.Rows[0]["beneficiario_telefone2"]) != null) { fone = valorCampoFone(dt.Rows[0]["beneficiario_telefone2"]); } else { continue; //o cliente não tem telefone fixo } mensagem = Convert.ToString(dt.Rows[0]["operadora_mensagemRemessa"]); qtd++; //incrementa a qtd de registros do arquivo if (sb.Length > 0) { sb.Append(Environment.NewLine); } sb.Append(fone); sb.Append(","); sb.Append(dt.Rows[0]["beneficiario_nome"]); sb.Append(","); sb.Append(dt.Rows[0]["contratobeneficiario_id"]); sb.Append(","); sb.Append(dataPorExtenso); sb.Append(","); sb.Append(mensagem); sb.Append(","); sb.Append(cobranca.OperadoraNome.ToUpper()); dt.Dispose(); contratosProcessados.Add(Convert.ToString(cobranca.PropostaID));//para nao mandar mais que um aviso à mesma pessoa } } return(sb.ToString()); }