Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
        //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());
        }