public List <Cuenta> AsientoDeCierre(Compañia compañia, Usuario usuario, IEnumerable <FechaTransaccion> fechaTransaccions, Cuenta cuenta) { var meses = this.FechaCerrarMes(compañia, usuario); var mensaje = ""; var firstMont = fechaTransaccions.OrderBy(x => x.Fecha).LastOrDefault(); //var lst = fechaTransaccions.OrderByDescending(x => x.Fecha).ToList(); //var lst2 = fechaTransaccions.OrderBy(x => x.Fecha); foreach (FechaTransaccion item in fechaTransaccions.OrderBy(x => x.Fecha)) { item.Cerrada = true; if (!CerrarMes(item, compañia, usuario, out mensaje)) { throw new Exception(mensaje); } } ///Una vez cerrado todos los mese debemos ///1- sacar el saldo del balance de comprobacion. /// para esto usamos el ultimo mes en la lista ///2- Actualizar todas las cuentas en saldo cero y /// poner el saldo en una cuenta /// /// ***Guardar una copia de las cuentas para retornarla y generar el balance de /// comprobación y que este pueda ser impreso CuentaCL _cuentaCL = new CuentaCL(); List <Cuenta> cuentas = _cuentaCL.GetAll(compañia).ToList <Cuenta>(); _cuentaCL.LLenarConSaldos(meses[0].Fecha, firstMont.Fecha, cuentas, compañia); var _cuenta = SaldoReporComprobacion(cuentas, cuenta); var rsl = _cuentaCL.GenerarSaldosEnCeroParaCierreDeAsieto(_cuenta, compañia, usuario, cuentas.Count); if (!rsl) { throw new Exception("error al guardar el saldo"); } return(cuentas); }
public Boolean CerrarMes(FechaTransaccion t, Compañia compañia, Usuario user, out String mensaje) { ///Primero verificamos que este mes sea apto para cerrarse var meses = this.FechaCerrarMes(compañia, user); if (meses[0].Fecha == t.Fecha) { var cuentaCL = new CuentaCL(); if (!BuscarAsientosDescuadrados(compañia, t, out mensaje)) { var lstCuentas = cuentaCL.GetAll(compañia).ToList <Cuenta>(); cuentaCL.LLenarConSaldos(t.Fecha, t.Fecha, lstCuentas, compañia); if (_fechaDao.CerrarMes(t, compañia, user, lstCuentas, out mensaje)) { mensaje = "Se cerro correctamente el mes!!!"; return(true); } else { mensaje = "No se pudo cerrar el mes!!!"; return(false); } } else { return(false); } } else { mensaje = "Este mes no se puede cerrar"; return(false); } }