public string GenerarEgreso(int fondoFijoGrupoID) { int ProyectoID = ((Proyecto)Session["Proyecto"]).ID; int monto = 0; List <DetalleEgreso> lista_tmp = new List <DetalleEgreso>(); List <DetalleEgreso> lista = new List <DetalleEgreso>(); try { List <FondoFijo> fondos = db.FondoFijo.Where(f => f.ProyectoID == ProyectoID && f.FondoFijoGrupoID == fondoFijoGrupoID).OrderByDescending(f => f.ID).ToList(); foreach (FondoFijo fondo in fondos) { DetalleEgreso detalle = new DetalleEgreso(); detalle.FechaEmision = fondo.Fecha; detalle.FechaVencimiento = fondo.Fecha; //detalle.Cuenta = fondo.Cuenta; detalle.CuentaID = fondo.CuentaID; detalle.Glosa = fondo.Glosa; detalle.Monto = fondo.Monto; detalle.FondoFijoID = fondo.ID; //detalle.FondoFijo = fondo; detalle.NDocumento = fondo.NumeroDocumento; detalle.DocumentoID = null;// DocumentoID; //detalle.Documento = db.Documento.Find(DocumentoID); lista_tmp.Add(detalle); monto = monto + fondo.Monto; } } catch (Exception) { return("-1"); } if (Session["DetalleEgreso"] != null) { lista = (List <DetalleEgreso>)Session["DetalleEgreso"]; lista.AddRange(lista_tmp); Session.Remove("DetalleEgreso"); } else { lista = lista_tmp; } Session.Add("DetalleEgreso", lista); return(monto.ToString()); }
public ActionResult Reintegro(int id) { Movimiento movimiento = db.Movimiento.Find(id); Persona Persona = (Persona)Session["Persona"]; @ViewBag.Ejecutor = Persona.NombreCompleto; DetalleEgreso detalle = db.DetalleEgreso.Find(movimiento.DetalleEgresoID); @ViewBag.detalle = detalle; try { @ViewBag.Director = db.Rol.Include(r => r.TipoRol).Include(r => r.Persona).Where(r => r.TipoRolID == 1).Where(r => r.ProyectoID == movimiento.ProyectoID).Single().Persona.NombreCompleto; @ViewBag.Apoderado = db.Rol.Include(r => r.TipoRol).Include(r => r.Persona).Where(r => r.TipoRolID == 6).Where(r => r.ProyectoID == movimiento.ProyectoID).Single().Persona.NombreCompleto; } catch { } return(View(movimiento)); }
// // GET: /Reintegros/Edit/5 public ActionResult Edit(int id, string imprimir = "") { Movimiento movimiento = db.Movimiento.Find(id); int periodo = (int)Session["Periodo"]; DetalleEgreso detalle = db.DetalleEgreso.Find(movimiento.DetalleEgresoID); ViewBag.detalle = detalle; ViewBag.Arbol = utils.generarSelectHijos(db.Cuenta.Find(ctes.raizCuentaEgresos), movimiento.CuentaID); ViewBag.Imprimir = imprimir; ViewBag.UltimoIdentificador = "0"; try { //ViewBag.UltimoIdentificador = db.Movimiento.Where(m => m.ProyectoID == movimiento.ProyectoID).Where(a => a.TipoComprobanteID == ctes.tipoReintegro).Max(a => a.ID).ToString(); ViewBag.UltimoIdentificador = db.Movimiento.Include(m => m.Proyecto).Include(m => m.TipoComprobante).Include(m => m.Cuenta).Include(m => m.Persona).Include(m => m.Proveedor).Include(m => m.CuentaCorriente).Where(m => m.TipoComprobanteID == ctes.tipoReintegro).Where(m => m.ProyectoID == movimiento.ProyectoID).Where(a => a.Temporal == null && a.Eliminado == null && a.CuentaID != 1).Max(a => a.ID).ToString(); } catch (Exception) { ViewBag.UltimoIdentificador = "0"; } return(View(movimiento)); }
public ActionResult Edit(Movimiento movimiento) { Usuario Usuario = (Usuario)Session["Usuario"]; int periodo = (int)Session["Periodo"]; int mes = (int)Session["Mes"]; Persona persona = (Persona)Session["Persona"]; Proyecto Proyecto = (Proyecto)Session["Proyecto"]; CuentaCorriente CuentaCorriente = (CuentaCorriente)Session["CuentaCorriente"]; int montoOriginal = Int32.Parse(Request.Form["MontoOriginal"].ToString()); movimiento.CuentaID = Int32.Parse(Request.Form["CuentaID"].ToString()); //movimiento.DetalleEgresoID = Int32.Parse(Request.Form["DetalleEgresoID"].ToString()); movimiento.PersonaID = null; movimiento.ProveedorID = null; movimiento.TipoComprobanteID = ctes.tipoReintegro; int originalID = movimiento.ID; movimiento.Descripcion = movimiento.Descripcion.ToUpper(); int?modificadoID = 0; ViewBag.UltimoIdentificador = "0"; try { ViewBag.UltimoIdentificador = db.Movimiento.Where(m => m.ProyectoID == movimiento.ProyectoID).Where(a => a.TipoComprobanteID == ctes.tipoReintegro).Max(a => a.ID).ToString(); } catch (Exception) { } if (!movimiento.Periodo.Equals(periodo) || !movimiento.Mes.Equals(mes)) { if (Usuario.esAdministrador || Usuario.esSupervisor) { if (ModelState.IsValid) { try { db.Movimiento.Attach(movimiento); db.Entry(movimiento).State = EntityState.Modified; db.SaveChanges(); // Se deben actualizar los saldos int mes_comprobante = movimiento.Mes; int periodo_comprobante = movimiento.Periodo; int mes_proyecto = mes; int periodo_proyecto = periodo; utils.RecalcularSaldos(periodo_comprobante, periodo_proyecto, mes_comprobante, mes_proyecto, Proyecto, CuentaCorriente); } catch (Exception e) { utils.Log(2, e.Message); ViewBag.Mensaje = utils.mensajeError("No fue posible modificar este Reintegro, intente nuevamente."); } } } else { // Se elimina cualquier modificación anterior, solo queda la última. try { Autorizacion autorizaciontmp = db.Autorizacion.Where(a => a.OriginalID == originalID).Single(); modificadoID = autorizaciontmp.ModificadoID; db.Autorizacion.Remove(autorizaciontmp); db.SaveChanges(); } catch (Exception) { } try { Movimiento tmp = db.Movimiento.Find(modificadoID); db.Movimiento.Remove(tmp); db.SaveChanges(); } catch (Exception) { } // Edicion del movimiento debe autorizarse, cambios se registran de forma temporal. movimiento.ID = 0; movimiento.Temporal = "S"; movimiento.Eliminado = "N"; movimiento.UsuarioID = Usuario.ID; db.Movimiento.Add(movimiento); db.SaveChanges(); // Se registra en la tabla de Autorizaciones Autorizacion autorizacion = new Autorizacion(); autorizacion.OriginalID = originalID; autorizacion.ModificadoID = movimiento.ID; autorizacion.SolicitaID = persona.ID; autorizacion.Tipo = "Modificación"; autorizacion.FechaSolicitud = DateTime.Now; db.Autorizacion.Add(autorizacion); db.SaveChanges(); ViewBag.Mensaje = utils.mensajeAdvertencia("La modificación ha sido solicitada al Supervisor."); } } else { movimiento.UsuarioID = Usuario.ID; if (movimiento.NDocumento == 0 || movimiento.NDocumento == null) { movimiento.NDocumento = 1; } if (ModelState.IsValid) { try { db.Entry(movimiento).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Create")); } catch (Exception e) { utils.Log(2, e.Message); ViewBag.Mensaje = utils.mensajeError("No fue posible modificar este Ingreso, intente nuevamente"); } } if (utils.actualizarSaldoIngreso(movimiento, ModelState, montoOriginal)) { @ViewBag.Mensaje = utils.mensajeOK("Ingreso registrado con éxito!"); } else { @ViewBag.Mensaje = utils.mensajeError("Ocurrió un error el actualizar los saldos"); } } DetalleEgreso detalle = db.DetalleEgreso.Find(movimiento.DetalleEgresoID); ViewBag.detalle = detalle; ViewBag.Arbol = utils.generarSelectHijos(db.Cuenta.Find(ctes.raizCuentaEgresos), movimiento.CuentaID); return(View(movimiento)); }
public ActionResult Autorizar(int id) { Persona persona = (Persona)Session["Persona"]; Autorizacion autorizacion = db.Autorizacion.Find(id); autorizacion.Autorizado = "S"; autorizacion.AutorizaID = persona.ID; autorizacion.FechaAutorizacion = DateTime.Now; Movimiento original = db.Movimiento.Find(autorizacion.OriginalID); Movimiento modificado = db.Movimiento.Find(autorizacion.ModificadoID); //autorizacion.OriginalID = null; db.Entry(autorizacion).State = EntityState.Modified; db.SaveChanges(); if (autorizacion.Tipo.Equals("Modificación")) { if (original.TipoComprobanteID == ctes.tipoIngreso || original.TipoComprobanteID == ctes.tipoReintegro) { // Comprobante de Ingreso y Reintegro original.Temporal = null; original.Eliminado = "S"; // Mejor marcar como eliminado utils.actualizarSaldoIngreso(modificado, ModelState, original.Monto_Ingresos); db.Entry(original).State = EntityState.Modified; //db.Movimiento.Remove(original); db.SaveChanges(); modificado.Temporal = null; modificado.Eliminado = null; db.Entry(modificado).State = EntityState.Modified; db.SaveChanges(); } else if (original.TipoComprobanteID == ctes.tipoEgreso) { // Comprobante de Egreso db.Database.ExecuteSqlCommand("UPDATE BoletaHonorario SET EgresoID = " + modificado.ID + " WHERE EgresoID = " + original.ID); db.Database.ExecuteSqlCommand("UPDATE BoletaHonorario SET EgresoID = " + modificado.ID + " WHERE EgresoID = " + original.ID); db.Database.ExecuteSqlCommand("UPDATE DeudaPendiente SET EgresoID = " + modificado.ID + " WHERE EgresoID = " + original.ID); db.Database.ExecuteSqlCommand("DELETE FROM DetalleEgreso WHERE MovimientoID = " + original.ID); db.Database.ExecuteSqlCommand("UPDATE DetalleEgreso SET Temporal = NULL WHERE MovimientoID = " + modificado.ID); // Comprobante de Ingreso y Reintegro utils.actualizarSaldoEgreso(modificado, ModelState, original.Monto_Egresos); //db.Movimiento.Remove(original); //db.Database.ExecuteSqlCommand("DELETE FROM DetalleEgreso WHERE MovimientoID = " + original.ID); //db.Database.ExecuteSqlCommand("DELETE FROM Movimiento WHERE ID = " + original.ID); original.Temporal = null; original.Eliminado = "S"; db.Entry(original).State = EntityState.Modified; db.Movimiento.Remove(original); db.SaveChanges(); modificado.Temporal = null; modificado.Eliminado = null; db.Entry(modificado).State = EntityState.Modified; db.SaveChanges(); // Actualizamos Informacion de FF si EXISTE try { DetalleEgreso de = db.DetalleEgreso.Where(d => d.MovimientoID == modificado.ID).Take(1).Single(); if (de.FondoFijo != null) { int ffgID = de.FondoFijo.FondoFijoGrupoID; FondoFijoGrupo ffg = db.FondoFijoGrupo.Find(ffgID); ffg.EgresoID = modificado.ID; ffg.Activo = "N"; ffg.Modificacion = DateTime.Now; db.Entry(ffg).State = EntityState.Modified; db.SaveChanges(); } } catch (Exception) { } } } else if (autorizacion.Tipo.Equals("Anulación")) { if (original.TipoComprobanteID == ctes.tipoIngreso || original.TipoComprobanteID == ctes.tipoReintegro) { // Comprobante de Ingreso y Reintegro int monto = original.Monto_Ingresos; utils.anularSaldoIngreso(modificado, ModelState, monto); original.Temporal = null; original.Eliminado = "S"; db.Entry(original).State = EntityState.Modified; //db.Movimiento.Remove(original); db.SaveChanges(); modificado.Temporal = null; modificado.Eliminado = null; modificado.Nulo = "S"; db.Entry(modificado).State = EntityState.Modified; db.SaveChanges(); } else if (original.TipoComprobanteID == ctes.tipoEgreso) { // Comprobante de Egreso db.Database.ExecuteSqlCommand("UPDATE BoletaHonorario SET EgresoID = NULL WHERE EgresoID = " + original.ID); db.Database.ExecuteSqlCommand("UPDATE BoletaHonorario SET EgresoID = NULL WHERE EgresoID = " + original.ID); db.Database.ExecuteSqlCommand("UPDATE DeudaPendiente SET EgresoID = NULL WHERE EgresoID = " + original.ID); db.Database.ExecuteSqlCommand("DELETE FROM DetalleEgreso WHERE MovimientoID = " + original.ID); int monto = original.Monto_Egresos; utils.anularSaldoEgreso(modificado, ModelState, monto); original.Temporal = null; original.Nulo = "S"; db.Entry(original).State = EntityState.Modified; //db.Movimiento.Remove(original); db.SaveChanges(); db.SaveChanges(); modificado.Temporal = null; modificado.Eliminado = null; db.Entry(modificado).State = EntityState.Modified; db.SaveChanges(); } } // Actualizar todos los saldos de todos los periodos int periodo_comprobante = modificado.Periodo; int mes_comprobante = modificado.Mes; return(RedirectToAction("Pendientes")); }
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()); } }