public ActionResult Conciliar(int detalleEgresoID = 0, int movimientoID = 0) { int proyectoID = 0; try { if (movimientoID > 0) { // Conciliacion de Ingreso o Reintegro Movimiento movimiento = db.Movimiento.Find(movimientoID); proyectoID = movimiento.ProyectoID; int periodo = movimiento.Periodo; int mes = movimiento.Mes; // Si el movimiento no ha sido conciliado, seguimos. if (movimiento.Conciliado == null) { movimiento.Conciliado = "S"; db.Entry(movimiento).State = EntityState.Modified; db.SaveChanges(); ConciliacionRegistro cr = new ConciliacionRegistro(); cr.MovimientoID = movimiento.ID; cr.Periodo = periodo; cr.Mes = mes; db.ConciliacionRegistro.Add(cr); db.SaveChanges(); } else { movimiento.Conciliado = null; db.Entry(movimiento).State = EntityState.Modified; db.SaveChanges(); try { ConciliacionRegistro cr = db.ConciliacionRegistro.Where(c => c.MovimientoID == movimiento.ID).Single(); db.Entry(cr).State = EntityState.Deleted; db.SaveChanges(); } catch (Exception) { } } } if (detalleEgresoID > 0) { // Conciliacion de Egreso DetalleEgreso detalle = db.DetalleEgreso.Find(detalleEgresoID); proyectoID = detalle.Egreso.ProyectoID; int periodo = detalle.Egreso.Periodo; int mes = detalle.Egreso.Mes; // Si el movimiento no ha sido conciliado, seguimos. if (detalle.Conciliado == null) { detalle.Conciliado = "S"; db.Entry(detalle).State = EntityState.Modified; db.SaveChanges(); ConciliacionRegistro cr = new ConciliacionRegistro(); cr.DetalleID = detalle.ID; cr.Periodo = periodo; cr.Mes = mes; db.ConciliacionRegistro.Add(cr); db.SaveChanges(); } else { detalle.Conciliado = null; db.Entry(detalle).State = EntityState.Modified; db.SaveChanges(); try { ConciliacionRegistro cr = db.ConciliacionRegistro.Where(c => c.DetalleID == detalle.ID).Single(); db.Entry(cr).State = EntityState.Deleted; db.SaveChanges(); } catch (Exception) { } } int cantidad = db.DetalleEgreso.Where(d => d.MovimientoID == detalle.MovimientoID).Where(d => d.Conciliado == null).Where(m => m.Temporal == null).Count(); // Si se conciliaron todos los detalles, se concilia el Egreso if (cantidad == 0) { Movimiento movimiento = db.Movimiento.Find(detalle.MovimientoID); movimiento.Conciliado = "S"; db.Entry(movimiento).State = EntityState.Modified; db.SaveChanges(); } else { Movimiento movimiento = db.Movimiento.Find(detalle.MovimientoID); movimiento.Conciliado = null; db.Entry(movimiento).State = EntityState.Modified; db.SaveChanges(); } } } catch (Exception) { } return(RedirectToAction("Index", "Logs", new { proyectoID = proyectoID })); }
public string Conciliar(int detalleEgresoID = 0, int movimientoID = 0) { Persona Persona = (Persona)Session["Persona"]; Usuario Usuario = (Usuario)Session["Usuario"]; DateTime fecha = DateTime.Now; string respuesta = ""; bool estaConciliado = false; try { if (movimientoID > 0) { // Conciliacion de Ingreso o Reintegro try { ConciliacionRegistro cr = db.ConciliacionRegistro.Where(c => c.MovimientoID == movimientoID).Single(); estaConciliado = true; } catch (Exception) { estaConciliado = false; } Movimiento movimiento = db.Movimiento.Find(movimientoID); // Si el movimiento no ha sido conciliado, seguimos. if (!estaConciliado) { try { // Se crea el registro de conciliación ConciliacionRegistro cr = new ConciliacionRegistro(); cr.MovimientoID = movimiento.ID; // Dependiendo del nivel del usuario se define el periodo conciliado. if (Usuario.esAdministrador) { cr.Periodo = movimiento.Periodo; cr.Mes = movimiento.Mes; } else { cr.Periodo = (int)Session["Periodo"]; cr.Mes = (int)Session["Mes"]; } cr.PersonaID = Persona.ID; cr.Fecha = fecha; db.ConciliacionRegistro.Add(cr); db.SaveChanges(); try { // Se define el movimiento como conciliado movimiento.Conciliado = "S"; db.Entry(movimiento).State = EntityState.Modified; db.SaveChanges(); } catch (Exception) { //return "No se pudo crear el registro de conciliacion: 385. " + e.StackTrace.ToString(); } } catch (Exception) { //return "No se pudo crear el registro de conciliacion: 390. " + e.StackTrace.ToString(); } respuesta = "OK"; } else { try { // Se elimina el registro de conciliación ConciliacionRegistro cr = db.ConciliacionRegistro.Where(c => c.MovimientoID == movimiento.ID).Single(); db.Entry(cr).State = EntityState.Deleted; db.SaveChanges(); // Al parecer aca falla /*La secuencia no contiene elementos en System.Linq.Enumerable.Single[TSource](IEnumerable`1 source) en System.Linq.Queryable.Single[TSource](IQueryable`1 source) en SAG2.Controllers.BancoController.Conciliar(Int32 detalleEgresoID, Int32 movimientoID)*/ } catch (Exception) { //return "No se pudo encontrar el registro de conciliacion: 408. " + e.StackTrace.ToString(); } try { // Se asigna como no conciliado al movimiento movimiento.Conciliado = null; db.Entry(movimiento).State = EntityState.Modified; db.SaveChanges(); } catch (Exception) { //return "No se pudo encontrar el registro de conciliacion: 420. " + e.StackTrace.ToString(); } respuesta = "OK2"; } } if (detalleEgresoID > 0) { // Conciliacion de Egreso DetalleEgreso detalle = db.DetalleEgreso.Find(detalleEgresoID); try { ConciliacionRegistro cr = db.ConciliacionRegistro.Where(c => c.DetalleID == detalleEgresoID).Single(); estaConciliado = true; } catch (Exception) { estaConciliado = false; } // Si el movimiento no ha sido conciliado, seguimos. if (!estaConciliado) { try { ConciliacionRegistro cr = new ConciliacionRegistro(); cr.DetalleID = detalle.ID; if (Usuario.esAdministrador) { cr.Periodo = detalle.Egreso.Periodo; cr.Mes = detalle.Egreso.Mes; } else { cr.Periodo = (int)Session["Periodo"]; cr.Mes = (int)Session["Mes"]; } cr.PersonaID = Persona.ID; cr.Fecha = fecha; db.ConciliacionRegistro.Add(cr); db.SaveChanges(); try { detalle.Conciliado = "S"; db.Entry(detalle).State = EntityState.Modified; db.SaveChanges(); } catch (Exception) { //return "No se pudo encontrar el registro de conciliacion: 465. " + e.StackTrace.ToString(); } respuesta = "OK"; } catch (Exception) { //return "No se pudo encontrar el registro de conciliacion: 472. " + e.StackTrace.ToString(); } } else { try { ConciliacionRegistro cr = db.ConciliacionRegistro.Where(c => c.DetalleID == detalle.ID).Single(); db.Entry(cr).State = EntityState.Deleted; db.SaveChanges(); try { detalle.Conciliado = null; db.Entry(detalle).State = EntityState.Modified; db.SaveChanges(); } catch (Exception) { //return "No se pudo encontrar el registro de conciliacion: 490. " + e.StackTrace.ToString(); } } catch (Exception) { //return "No se pudo encontrar el registro de conciliacion: 495. " + e.StackTrace.ToString(); } respuesta = "OK2"; } int cantidad = db.DetalleEgreso.Where(d => d.MovimientoID == detalle.MovimientoID).Where(d => d.Conciliado == null).Where(m => m.Temporal == null).Count(); // Si se conciliaron todos los detalles, se concilia el Egreso if (cantidad == 0) { Movimiento movimiento = db.Movimiento.Find(detalle.MovimientoID); movimiento.Conciliado = "S"; db.Entry(movimiento).State = EntityState.Modified; db.SaveChanges(); } else { Movimiento movimiento = db.Movimiento.Find(detalle.MovimientoID); movimiento.Conciliado = null; db.Entry(movimiento).State = EntityState.Modified; db.SaveChanges(); } } return(respuesta); } catch (Exception e) { return(e.StackTrace.ToString()); } }