public void AtualizaValorDeCobrancas(Object contratoId, out String msg) { msg = ""; PersistenceManager pm = new PersistenceManager(); pm.BeginTransactionContext(); Contrato contrato = new Contrato(contratoId); pm.Load(contrato); if (contrato.Legado) { pm.Rollback(); return; } try { IList <Cobranca> cobrancas = Cobranca.CarregarTodas(contratoId, true, Cobranca.eTipo.Normal, pm); if (cobrancas != null) { List <CobrancaComposite> composite = null; foreach (Cobranca cobranca in cobrancas) { //if (cobranca.Pago) { continue; } if (cobranca.Parcela == 1) { continue; } //nao calcula a parcela 1 pq ela nao está na vigência do beneficiário if (cobranca.Tipo != Convert.ToInt32(Cobranca.eTipo.Normal)) { continue; } if (cobranca.DataVencimento.Year >= DateTime.Now.Year) //atualiza somente parcelas atuais { cobranca.Valor = Contrato.CalculaValorDaProposta2(contratoId, cobranca.DataVencimento, pm, false, true, ref composite, true); if (cobranca.Valor > 0) { if (!cobranca.Pago) { pm.Save(cobranca); } } else if (String.IsNullOrEmpty(msg)) { if (!cobranca.Pago) { msg = String.Concat("Data de vencimento ", cobranca.DataVencimento.ToString("dd/MM/yyyy"), " descoberta. Cobrança com valor incorreto."); continue; } } if (composite != null) { CobrancaComposite.Remover(cobranca.ID, pm); foreach (CobrancaComposite comp in composite) { comp.CobrancaID = cobranca.ID; pm.Save(comp); } } } } } pm.Commit(); } catch { pm.Rollback(); //throw; } finally { pm.Dispose(); pm = null; } }