Exemplo n.º 1
0
        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 }));
        }
Exemplo n.º 2
0
        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());
            }
        }