示例#1
0
        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;
            }
        }