public fa_CambioProducto_Info GetInfo(int IdEmpresa, int IdSucursal, int IdBodega, decimal IdCambio)
 {
     try
     {
         fa_CambioProducto_Info info;
         using (Entities_facturacion db = new Entities_facturacion())
         {
             var Entity = db.fa_CambioProducto.Where(q => q.IdEmpresa == IdEmpresa && q.IdSucursal == IdSucursal && q.IdBodega == IdBodega && q.IdCambio == IdCambio).FirstOrDefault();
             if (Entity == null)
             {
                 return(null);
             }
             info = new fa_CambioProducto_Info
             {
                 IdEmpresa         = Entity.IdEmpresa,
                 IdSucursal        = Entity.IdSucursal,
                 IdBodega          = Entity.IdBodega,
                 IdCambio          = Entity.IdCambio,
                 Fecha             = Entity.Fecha,
                 Observacion       = Entity.Observacion,
                 Estado            = Entity.Estado,
                 IdMovi_inven_tipo = Entity.IdMovi_inven_tipo,
                 IdNumMovi         = Entity.IdNumMovi,
             };
         }
         return(info);
     }
     catch (Exception)
     {
         throw;
     }
 }
        private bool Validar(fa_CambioProducto_Info i_validar, ref string msg)
        {
            if (!bus_periodo.ValidarFechaTransaccion(i_validar.IdEmpresa, i_validar.Fecha, cl_enumeradores.eModulo.FAC, i_validar.IdSucursal, ref mensaje))
            {
                return(false);
            }

            if (!bus_periodo.ValidarFechaTransaccion(i_validar.IdEmpresa, i_validar.Fecha, cl_enumeradores.eModulo.INV, i_validar.IdSucursal, ref mensaje))
            {
                return(false);
            }

            i_validar.LstDet = List_det.get_list(i_validar.IdTransaccionSession);

            if (i_validar.LstDet.Count == 0)
            {
                mensaje = "Debe ingresar un detalle a devolver";
                return(false);
            }

            if (i_validar.LstDet.Where(q => q.IdProductoCambio == q.IdProductoFact).Count() > 0)
            {
                mensaje = "Los productos de cambio deben ser distintos a los productos facturados en el detalle";
                return(false);
            }

            return(true);
        }
 public ActionResult Anular(int IdEmpresa = 0, int IdSucursal = 0, int IdBodega = 0, decimal IdCambio = 0)
 {
     #region Validar Session
     if (string.IsNullOrEmpty(SessionFixed.IdTransaccionSession))
     {
         return(RedirectToAction("Login", new { Area = "", Controller = "Account" }));
     }
     SessionFixed.IdTransaccionSession       = (Convert.ToDecimal(SessionFixed.IdTransaccionSession) + 1).ToString();
     SessionFixed.IdTransaccionSessionActual = SessionFixed.IdTransaccionSession;
     #endregion
     fa_CambioProducto_Info model = bus_CambioProducto.GetInfo(IdEmpresa, IdSucursal, IdBodega, IdCambio);
     if (model == null)
     {
         return(RedirectToAction("Index"));
     }
     model.IdTransaccionSession = Convert.ToDecimal(SessionFixed.IdTransaccionSession);
     model.IdUsuario            = SessionFixed.IdUsuario;
     model.FechaIni             = DateTime.Now.Date.AddMonths(-1);
     model.FechaFin             = DateTime.Now.Date;
     CargarCombosAccion(model.IdEmpresa, model.IdSucursal);
     model.LstDet = bus_CambioProductoDet.GetList(model.IdEmpresa, model.IdSucursal, model.IdBodega, model.IdCambio);
     List_det.set_list(model.LstDet, model.IdTransaccionSession);
     #region Validacion Periodo
     ViewBag.MostrarBoton = true;
     if (!bus_periodo.ValidarFechaTransaccion(IdEmpresa, model.Fecha, cl_enumeradores.eModulo.FAC, model.IdSucursal, ref mensaje))
     {
         ViewBag.mensaje      = mensaje;
         ViewBag.MostrarBoton = false;
     }
     #endregion
     return(View(model));
 }
        public ActionResult Nuevo(int IdEmpresa = 0)
        {
            #region Validar Session
            if (string.IsNullOrEmpty(SessionFixed.IdTransaccionSession))
            {
                return(RedirectToAction("Login", new { Area = "", Controller = "Account" }));
            }
            SessionFixed.IdTransaccionSession       = (Convert.ToDecimal(SessionFixed.IdTransaccionSession) + 1).ToString();
            SessionFixed.IdTransaccionSessionActual = SessionFixed.IdTransaccionSession;
            #endregion

            fa_CambioProducto_Info model = new fa_CambioProducto_Info
            {
                IdEmpresa            = IdEmpresa,
                IdTransaccionSession = Convert.ToDecimal(SessionFixed.IdTransaccionSession),
                IdSucursal           = string.IsNullOrEmpty(SessionFixed.IdSucursal) ? 0 : Convert.ToInt32(SessionFixed.IdSucursal),
                IdUsuario            = SessionFixed.IdUsuario,
                Fecha    = DateTime.Now,
                FechaIni = DateTime.Now.Date.AddMonths(-1),
                FechaFin = DateTime.Now.Date
            };
            CargarCombosAccion(model.IdEmpresa, model.IdSucursal);

            return(View(model));
        }
        public ActionResult Modificar(int IdEmpresa = 0, int IdSucursal = 0, int IdBodega = 0, decimal IdCambio = 0)
        {
            #region Validar Session
            if (string.IsNullOrEmpty(SessionFixed.IdTransaccionSession))
            {
                return(RedirectToAction("Login", new { Area = "", Controller = "Account" }));
            }
            SessionFixed.IdTransaccionSession       = (Convert.ToDecimal(SessionFixed.IdTransaccionSession) + 1).ToString();
            SessionFixed.IdTransaccionSessionActual = SessionFixed.IdTransaccionSession;
            #endregion

            fa_CambioProducto_Info model = bus_CambioProducto.GetInfo(IdEmpresa, IdSucursal, IdBodega, IdCambio);
            if (model == null)
            {
                return(RedirectToAction("Index"));
            }
            model.IdTransaccionSession = Convert.ToDecimal(SessionFixed.IdTransaccionSession);
            model.IdUsuario            = SessionFixed.IdUsuario;
            model.FechaIni             = DateTime.Now.Date.AddMonths(-1);
            model.FechaFin             = DateTime.Now.Date;
            CargarCombosAccion(model.IdEmpresa, model.IdSucursal);
            model.LstDet = bus_CambioProductoDet.GetList(model.IdEmpresa, model.IdSucursal, model.IdBodega, model.IdCambio);
            List_det.set_list(model.LstDet, model.IdTransaccionSession);
            return(View(model));
        }
Example #6
0
        public ActionResult Nuevo(int IdEmpresa = 0)
        {
            #region Validar Session
            if (string.IsNullOrEmpty(SessionFixed.IdTransaccionSession))
            {
                return(RedirectToAction("Login", new { Area = "", Controller = "Account" }));
            }
            SessionFixed.IdTransaccionSession       = (Convert.ToDecimal(SessionFixed.IdTransaccionSession) + 1).ToString();
            SessionFixed.IdTransaccionSessionActual = SessionFixed.IdTransaccionSession;
            #endregion
            #region Permisos
            seg_Menu_x_Empresa_x_Usuario_Info info = bus_permisos.get_list_menu_accion(Convert.ToInt32(SessionFixed.IdEmpresa), SessionFixed.IdUsuario, "Facturacion", "CambioProducto", "Index");
            if (!info.Nuevo)
            {
                return(RedirectToAction("Index"));
            }
            #endregion

            fa_CambioProducto_Info model = new fa_CambioProducto_Info
            {
                IdEmpresa            = IdEmpresa,
                IdTransaccionSession = Convert.ToDecimal(SessionFixed.IdTransaccionSession),
                IdSucursal           = string.IsNullOrEmpty(SessionFixed.IdSucursal) ? 0 : Convert.ToInt32(SessionFixed.IdSucursal),
                IdUsuario            = SessionFixed.IdUsuario,
                Fecha    = DateTime.Now,
                FechaIni = DateTime.Now.Date.AddMonths(-1),
                FechaFin = DateTime.Now.Date
            };
            CargarCombosAccion(model.IdEmpresa, model.IdSucursal);

            return(View(model));
        }
        public ActionResult Anular(fa_CambioProducto_Info model)
        {
            if (!bus_CambioProducto.AnularDB(model))
            {
                SessionFixed.IdTransaccionSessionActual = model.IdTransaccionSession.ToString();
                CargarCombosAccion(model.IdEmpresa, model.IdSucursal);
                return(View(model));
            }

            return(RedirectToAction("Index"));
        }
Example #8
0
 public bool AnularDB(fa_CambioProducto_Info info)
 {
     try
     {
         return(odata.AnularDB(info));
     }
     catch (Exception)
     {
         throw;
     }
 }
Example #9
0
        public ActionResult Consultar(int IdEmpresa = 0, int IdSucursal = 0, int IdBodega = 0, decimal IdCambio = 0, bool Exito = false)
        {
            #region Validar Session
            if (string.IsNullOrEmpty(SessionFixed.IdTransaccionSession))
            {
                return(RedirectToAction("Login", new { Area = "", Controller = "Account" }));
            }
            SessionFixed.IdTransaccionSession       = (Convert.ToDecimal(SessionFixed.IdTransaccionSession) + 1).ToString();
            SessionFixed.IdTransaccionSessionActual = SessionFixed.IdTransaccionSession;
            #endregion

            fa_CambioProducto_Info model = bus_CambioProducto.GetInfo(IdEmpresa, IdSucursal, IdBodega, IdCambio);
            if (model == null)
            {
                return(RedirectToAction("Index"));
            }

            #region Permisos
            seg_Menu_x_Empresa_x_Usuario_Info info = bus_permisos.get_list_menu_accion(Convert.ToInt32(SessionFixed.IdEmpresa), SessionFixed.IdUsuario, "Facturacion", "CambioProducto", "Index");
            if (model.Estado == false && (model.IdNumMovi != null || model.IdNumMovi != 0))
            {
                info.Modificar = false;
                info.Anular    = false;
            }
            ViewBag.Nuevo     = info.Nuevo;
            ViewBag.Modificar = info.Modificar;
            ViewBag.Anular    = info.Anular;
            #endregion

            model.IdTransaccionSession = Convert.ToDecimal(SessionFixed.IdTransaccionSession);
            model.IdUsuario            = SessionFixed.IdUsuario;
            model.FechaIni             = DateTime.Now.Date.AddMonths(-1);
            model.FechaFin             = DateTime.Now.Date;
            CargarCombosAccion(model.IdEmpresa, model.IdSucursal);
            model.LstDet = bus_CambioProductoDet.GetList(model.IdEmpresa, model.IdSucursal, model.IdBodega, model.IdCambio);
            List_det.set_list(model.LstDet, model.IdTransaccionSession);

            if (Exito)
            {
                ViewBag.MensajeSuccess = MensajeSuccess;
            }
            #region Validacion Periodo
            ViewBag.MostrarBoton = true;
            if (!bus_periodo.ValidarFechaTransaccion(IdEmpresa, model.Fecha, cl_enumeradores.eModulo.FAC, model.IdSucursal, ref mensaje))
            {
                ViewBag.mensaje      = mensaje;
                ViewBag.MostrarBoton = false;
            }
            #endregion

            return(View(model));
        }
 public ActionResult Nuevo(fa_CambioProducto_Info model)
 {
     if (!Validar(model, ref mensaje))
     {
         CargarCombosAccion(model.IdEmpresa, model.IdSucursal);
         ViewBag.mensaje = mensaje;
         SessionFixed.IdTransaccionSessionActual = model.IdTransaccionSession.ToString();
         return(View(model));
     }
     if (!bus_CambioProducto.GuardarDB(model))
     {
         SessionFixed.IdTransaccionSessionActual = model.IdTransaccionSession.ToString();
         CargarCombosAccion(model.IdEmpresa, model.IdSucursal);
         return(View(model));
     }
     return(RedirectToAction("Modificar", new { IdEmpresa = model.IdEmpresa, IdSucursal = model.IdSucursal, IdBodega = model.IdBodega, IdCambio = model.IdCambio, Exito = true }));
 }
        public ActionResult Modificar(fa_CambioProducto_Info model)
        {
            if (!Validar(model, ref mensaje))
            {
                CargarCombosAccion(model.IdEmpresa, model.IdSucursal);
                ViewBag.mensaje = mensaje;
                SessionFixed.IdTransaccionSessionActual = model.IdTransaccionSession.ToString();
                return(View(model));
            }

            if (!bus_CambioProducto.ModificarDB(model))
            {
                CargarCombosAccion(model.IdEmpresa, model.IdSucursal);
                SessionFixed.IdTransaccionSessionActual = model.IdTransaccionSession.ToString();
                return(View(model));
            }

            return(RedirectToAction("Index"));
        }
        public bool AnularDB(fa_CambioProducto_Info info)
        {
            try
            {
                using (Entities_facturacion db = new Entities_facturacion())
                {
                    var Entity = db.fa_CambioProducto.Where(q => q.IdEmpresa == info.IdEmpresa && q.IdSucursal == info.IdSucursal && q.IdBodega == info.IdBodega && q.IdCambio == info.IdCambio).FirstOrDefault();
                    if (Entity == null)
                    {
                        return(false);
                    }
                    Entity.Estado = false;

                    Entity.IdUsuarioUltAnu = info.IdUsuario;
                    Entity.FechaUltAnu     = DateTime.Now;
                    db.SaveChanges();
                }
                return(true);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public bool GuardarDB(fa_CambioProducto_Info info)
        {
            try
            {
                Entities_facturacion db = new Entities_facturacion();
                #region Cambio producto
                db.fa_CambioProducto.Add(new fa_CambioProducto
                {
                    IdEmpresa   = info.IdEmpresa,
                    IdSucursal  = info.IdSucursal,
                    IdBodega    = info.IdBodega,
                    IdCambio    = info.IdCambio = GetId(info.IdEmpresa, info.IdSucursal, info.IdBodega),
                    Fecha       = info.Fecha.Date,
                    Observacion = info.Observacion,
                    Estado      = true,

                    IdUsuario    = info.IdUsuario,
                    FechaTransac = DateTime.Now
                });
                int secuencia = 1;
                foreach (var item in info.LstDet)
                {
                    db.fa_CambioProductoDet.Add(new fa_CambioProductoDet
                    {
                        IdEmpresa  = info.IdEmpresa,
                        IdSucursal = info.IdSucursal,
                        IdBodega   = info.IdBodega,
                        IdCambio   = info.IdCambio,
                        Secuencia  = secuencia++,

                        IdCbteVta        = item.IdCbteVta,
                        SecuenciaFact    = item.SecuenciaFact,
                        IdProductoFact   = item.IdProductoFact,
                        IdProductoCambio = item.IdProductoCambio,
                        CantidadCambio   = item.CantidadCambio,
                        CantidadFact     = item.CantidadFact
                    });
                }
                db.SaveChanges();

                #endregion



                #region Egreso y devoluciones
                if (info.GenerarDevolucion)
                {
                    Entities_inventario   dbi     = new Entities_inventario();
                    in_Ing_Egr_Inven_Data odata_i = new in_Ing_Egr_Inven_Data();

                    var parametro = dbi.in_parametro.Where(q => q.IdEmpresa == info.IdEmpresa).FirstOrDefault();
                    if (parametro == null)
                    {
                        return(true);
                    }

                    info.IdMovi_inven_tipo = parametro.IdMovi_inven_tipo_Cambio;
                    var movi = GenerarMoviInven(info);
                    if (movi == null)
                    {
                        return(true);
                    }

                    if (info.IdNumMovi == null && odata_i.guardarDB(movi, "-"))
                    {
                        info.IdNumMovi = movi.IdNumMovi;

                        var Entity = db.fa_CambioProducto.Where(q => q.IdEmpresa == info.IdEmpresa && q.IdSucursal == info.IdSucursal && q.IdBodega == info.IdBodega && q.IdCambio == info.IdCambio).FirstOrDefault();
                        if (Entity == null)
                        {
                            return(true);
                        }
                        Entity.IdMovi_inven_tipo = info.IdMovi_inven_tipo;
                        Entity.IdNumMovi         = info.IdNumMovi;
                        db.SaveChanges();

                        GenerarDevoluciones(info);
                    }
                    else
                    {
                        GenerarDevoluciones(info);
                    }
                }
                db.Dispose();
                #endregion

                return(true);
            }
            catch (Exception)
            {
                throw;
            }
        }
        private void GenerarDevoluciones(fa_CambioProducto_Info info)
        {
            Entities_facturacion dbf = new Entities_facturacion();

            try
            {
                var ListaDetalleCambio = dbf.vwfa_CambioProductoDet_FacturasConMovimiento.Where(q => q.IdEmpresa == info.IdEmpresa && q.IdSucursal == info.IdSucursal && q.IdBodega == info.IdBodega && q.IdCambio == info.IdCambio).ToList();
                if (ListaDetalleCambio.Where(q => q.IdNumMovi_eg == null).Count() > 0)
                {
                    return;
                }

                in_devolucion_inven_Data odata_d = new in_devolucion_inven_Data();

                var DevolucionesAgrupadas = ListaDetalleCambio.GroupBy(q => new { q.IdEmpresa_eg, q.IdSucursal_eg, q.IdMovi_inven_tipo_eg, q.IdNumMovi_eg }).ToList();
                foreach (var item in DevolucionesAgrupadas)
                {
                    var ListaPorMovimiento = ListaDetalleCambio.Where(q => q.IdEmpresa_eg == item.Key.IdEmpresa_eg && q.IdSucursal_eg == item.Key.IdSucursal_eg && q.IdMovi_inven_tipo_eg == item.Key.IdMovi_inven_tipo_eg && q.IdNumMovi_eg == item.Key.IdNumMovi_eg).ToList();
                    in_devolucion_inven_Info devolucion = new in_devolucion_inven_Info
                    {
                        IdEmpresa             = info.IdEmpresa,
                        IdEmpresa_inv         = (int)item.Key.IdEmpresa_eg,
                        IdSucursal_inv        = (int)item.Key.IdSucursal_eg,
                        IdMovi_inven_tipo_inv = (int)item.Key.IdMovi_inven_tipo_eg,
                        IdNumMovi_inv         = (decimal)item.Key.IdNumMovi_eg,
                        cod_Dev_Inven         = "CAMB#" + info.IdCambio,
                        Estado      = true,
                        dev_signo   = "+",
                        Fecha       = info.Fecha.Date,
                        IdUsuario   = info.IdUsuario,
                        observacion = "CAMB#" + info.IdCambio + " " + info.Observacion,

                        lst_det = new List <in_devolucion_inven_det_Info>()
                    };
                    foreach (var Det in ListaPorMovimiento)
                    {
                        devolucion.lst_det.Add(new in_devolucion_inven_det_Info
                        {
                            IdEmpresa             = info.IdEmpresa,
                            inv_IdEmpresa         = (int)Det.IdEmpresa_eg,
                            inv_IdSucursal        = (int)Det.IdSucursal_eg,
                            inv_IdMovi_inven_tipo = (int)Det.IdMovi_inven_tipo_eg,
                            inv_IdNumMovi         = (int)Det.IdNumMovi_eg,
                            inv_Secuencia         = (int)Det.Secuencia_eg,

                            IdProducto     = (decimal)Det.IdProducto,
                            IdBodega       = (int)Det.IdBodega_eg,
                            cant_devuelta  = Det.CantidadCambio,
                            IdUnidadMedida = Det.IdUnidadMedida_sinConversion,
                            mv_costo       = Det.Costo
                        });
                    }

                    if (odata_d.guardarDB(devolucion))
                    {
                        ListaDetalleCambio.ForEach(q => dbf.fa_CambioProductoDet_x_in_devolucion_inven.Add(new fa_CambioProductoDet_x_in_devolucion_inven
                        {
                            IdEmpresa_ca  = info.IdEmpresa,
                            IdSucursal_ca = info.IdSucursal,
                            IdBodega_ca   = info.IdBodega,
                            IdCambio      = info.IdCambio,
                            Secuencia_ca  = q.Secuencia_ca,

                            IdEmpresa_de = devolucion.IdEmpresa,
                            IdDev_Inven  = devolucion.IdDev_Inven
                        }));
                        dbf.SaveChanges();
                    }
                }

                dbf.Dispose();
            }
            catch (Exception)
            {
                dbf.Dispose();
                throw;
            }
        }
        private in_Ing_Egr_Inven_Info GenerarMoviInven(fa_CambioProducto_Info info)
        {
            try
            {
                using (Entities_inventario db = new Entities_inventario())
                {
                    var motivo = db.in_Motivo_Inven.Where(q => q.IdEmpresa == info.IdEmpresa && q.Genera_Movi_Inven == "S" && q.Tipo_Ing_Egr == "EGR").FirstOrDefault();
                    if (motivo == null)
                    {
                        return(null);
                    }

                    in_Ing_Egr_Inven_Info movi = new in_Ing_Egr_Inven_Info
                    {
                        IdEmpresa                = info.IdEmpresa,
                        IdSucursal               = info.IdSucursal,
                        IdBodega                 = info.IdBodega,
                        IdMovi_inven_tipo        = (int)info.IdMovi_inven_tipo,
                        IdNumMovi                = info.IdNumMovi == null ? 0 : Convert.ToDecimal(info.IdNumMovi),
                        cm_fecha                 = info.Fecha.Date,
                        cm_observacion           = "CAMB#" + info.IdCambio + " " + info.Observacion,
                        Estado                   = "A",
                        CodMoviInven             = "CAMB#" + info.IdCambio,
                        signo                    = "-",
                        IdUsuario                = info.IdUsuario,
                        IdUsuarioUltModi         = info.IdUsuario,
                        IdMotivo_Inv             = motivo.IdMotivo_Inv,
                        lst_in_Ing_Egr_Inven_det = new List <in_Ing_Egr_Inven_det_Info>()
                    };
                    int secuencia = 1;
                    foreach (var item in info.LstDet)
                    {
                        var producto = db.in_Producto.Where(q => q.IdEmpresa == info.IdEmpresa && q.IdProducto == item.IdProductoCambio).FirstOrDefault();
                        if (producto == null)
                        {
                            return(null);
                        }

                        movi.lst_in_Ing_Egr_Inven_det.Add(new in_Ing_Egr_Inven_det_Info
                        {
                            IdEmpresa                    = movi.IdEmpresa,
                            IdSucursal                   = movi.IdSucursal,
                            IdBodega                     = (int)movi.IdBodega,
                            IdMovi_inven_tipo            = movi.IdMovi_inven_tipo,
                            IdNumMovi                    = 0,
                            Secuencia                    = secuencia++,
                            IdProducto                   = item.IdProductoCambio,
                            dm_cantidad                  = item.CantidadCambio * -1,
                            dm_cantidad_sinConversion    = item.CantidadCambio * -1,
                            mv_costo                     = 0,
                            mv_costo_sinConversion       = 0,
                            IdUnidadMedida               = producto.IdUnidadMedida_Consumo,
                            IdUnidadMedida_sinConversion = producto.IdUnidadMedida_Consumo,
                        });
                    }
                    return(movi);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }