Esempio n. 1
0
        //As cobrancas não sao geradas em lotes mais
        //public void GerarOuAtualizarCobrancas(List<String> contratoIDs)
        //{
        //    String inClausule = String.Join(",", contratoIDs.ToArray());
        //    PersistenceManager pm = new PersistenceManager();
        //    pm.BeginTransactionContext();

        //    try
        //    {
        //        String qry = String.Concat("SELECT contrato_id as ContratoID, contrato_contratoAdmId as ContratoAdmID, contrato_vencimento as ContratoVencimento, SUM(contratobeneficiario_valor) AS Total ",
        //        "   FROM contrato ",
        //        "       INNER JOIN contrato_beneficiario ON contratobeneficiario_contratoId = contrato_id ",
        //        "   WHERE contratobeneficiario_status=2 AND contrato_id IN (", inClausule, ") ",
        //        "   GROUP BY contrato_id, contrato_contratoAdmId, contrato_vencimento HAVING SUM(contratobeneficiario_valor) > 0");

        //        DataTable dt = LocatorHelper.Instance.ExecuteQuery(qry, "resultset", pm).Tables[0];

        //        DateTime vigenciaBeneficiario, vencimentoBeneficiario;
        //        Int32 diaDataSemJuros; Object valorDataLimite;

        //        if (dt.Rows.Count > 0)
        //        {
        //            IList<Cobranca> cobrancasExistentes = null;
        //            foreach (DataRow row in dt.Rows)
        //            {
        //                cobrancasExistentes = Cobranca.CarregarTodas(row["ContratoID"], pm);

        //                if (cobrancasExistentes == null) //nao tem cobranças geradas. deve-se somente gerá-las
        //                {
        //                    Cobranca.Gerar(row["ContratoID"],
        //                        Convert.ToDateTime(row["ContratoVencimento"], new System.Globalization.CultureInfo("pt-Br")), 12, pm);

        //                    ContratoValor.InsereNovoValorSeNecessario(row["ContratoID"], Convert.ToDecimal(row["Total"]), pm);
        //                }
        //                else //Tem cobranças geradas. Precisa ver qual delas deverá ser atualizada.
        //                {
        //                    //Recalcula o valor total do contrato somando todos os beneficiarios ativos e com vencimento compativel às cobrancas
        //                    IList<ContratoBeneficiario> beneficiarios = ContratoBeneficiario.CarregarPorContratoID(row["ContratoID"], true, false, pm);
        //                    Contrato contrato = new Contrato(row["ContratoID"]);
        //                    pm.Load(contrato);

        //                    Decimal novoTotalContrato;

        //                    Int32 i = 0;
        //                    foreach (Cobranca cobrancaExistente in cobrancasExistentes)
        //                    {
        //                        novoTotalContrato = 0;
        //                        Int32 qtdBeneficiarioParaEssaCobranca = 0;
        //                        foreach (ContratoBeneficiario beneficiario in beneficiarios)
        //                        {
        //                            CalendarioAdmissaoVigencia.CalculaDatasDeVigenciaEVencimento(
        //                                row["ContratoAdmID"], beneficiario.Data, out vigenciaBeneficiario, out vencimentoBeneficiario, out diaDataSemJuros, out valorDataLimite, pm);

        //                            //se o beneficiario ja entra na cobranca, incrementa seu valor
        //                            if (cobrancaExistente.DataVencimento >= vencimentoBeneficiario)
        //                            {
        //                                qtdBeneficiarioParaEssaCobranca++;
        //                                novoTotalContrato += Contrato.CalculaValorDaPropostaSemTaxaAssociativa(beneficiario.ContratoID, beneficiario, cobrancaExistente.DataVencimento, pm); //beneficiario.Valor;
        //                            }
        //                        }

        //                        novoTotalContrato += Contrato.CalculaValorDaTaxaAssociativa(contrato, qtdBeneficiarioParaEssaCobranca, pm);
        //                        cobrancaExistente.Valor = novoTotalContrato;

        //                        i++;
        //                        pm.Save(cobrancaExistente);

        //                        if (i == cobrancasExistentes.Count) //atualiza o novo valor do contrato
        //                        {
        //                            ContratoValor.InsereNovoValorSeNecessario(row["ContratoID"], novoTotalContrato, pm);
        //                        }
        //                    }
        //                }
        //            }
        //        }

        //        pm.Commit();
        //    }
        //    catch (Exception ex)
        //    {
        //        pm.Rollback();
        //        throw ex;
        //    }
        //    finally
        //    {
        //        pm = null;
        //    }
        //}

        /// <summary>
        /// Atribui o status de Adimplente ou Inadimplente (proprieade Adimplente do objeto Contrato)
        /// segundo cobranças em aberto de cada contrato.
        /// </summary>
        /// <param name="pm">Objeto PersistenceManager participante de uma transação.</param>
        public void AtribuiStatusAdimplenteOuInadimplente(PersistenceManager pm)
        {
            PersistenceManager _pm = null;

            IList <Contrato> inadimplentes = Contrato.BuscarECarregarInadimplentes_PORCOBRANCA(pm);

            if (pm == null)
            {
                _pm = new PersistenceManager();
                _pm.BeginTransactionContext();
            }
            else
            {
                _pm = pm;
            }

            try
            {
                if (inadimplentes != null && inadimplentes.Count > 0)
                {
                    String[] ids = new String[inadimplentes.Count];
                    for (Int32 i = 0; i < inadimplentes.Count; i++)
                    {
                        ids[i] = Convert.ToString(inadimplentes[i].ID);
                    }

                    String inClausule = String.Join(",", ids);
                    String command    = "UPDATE contrato SET contrato_adimplente=0 WHERE contrato_adimplente=1 AND contrato_id IN (" + inClausule + ")";
                    NonQueryHelper.Instance.ExecuteNonQuery(command, _pm);

                    //restaura contratos ok para ADIMPLENTE
                    command = "UPDATE contrato SET contrato_adimplente=1 WHERE contrato_adimplente=0 AND contrato_cancelado=0 AND contrato_rascunho=0 AND contrato_inativo <> 1 AND contrato_id NOT IN (" + inClausule + ")";
                    NonQueryHelper.Instance.ExecuteNonQuery(command, _pm);
                }
                else
                {
                    //todos os contratos estão ADIMPLENTES
                    String command = "UPDATE contrato SET contrato_adimplente=1 WHERE contrato_adimplente=0 AND contrato_cancelado=0 AND contrato_rascunho=0 AND contrato_inativo <> 1 ";
                    NonQueryHelper.Instance.ExecuteNonQuery(command, _pm);
                }

                if (pm == null)
                {
                    _pm.Commit();
                }
            }
            catch
            {
                if (pm == null)
                {
                    _pm.Rollback();
                }
                throw;
            }
            finally
            {
                if (pm == null)
                {
                    _pm = null;
                }
            }
        }