//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; } } }