コード例 #1
0
        private bool DisponibilidadCodigo(string pcodigo)
        {
            EPRTA_ITEM item = (from p in unitOfWork.ItemRepository.GetAll() where p.CODIGO == pcodigo select p).FirstOrDefault();

            if (item == null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #2
0
        public ActionResult Item(int id)
        {
            EPRTA_ITEM registro;

            try
            {
                if (id > 0)
                {
                    registro = unitOfWork.ItemRepository.GetById(id);
                }
                else
                {
                    registro        = new EPRTA_ITEM();
                    registro.ESTADO = "N";
                }

                List <SelectListItem> lista = new List <SelectListItem>();
                foreach (EPRTA_GRUPO reg in (from p in unitOfWork.GrupoRepository.GetAll() where p.ESTADO == "A" select p))
                {
                    SelectListItem lin = new SelectListItem {
                        Text = "[" + reg.CODIGO + "] " + reg.NOMBRE, Value = reg.ID_GRUPO.ToString()
                    };
                    lista.Add(lin);
                }
                ViewBag.lstGrupo = lista;

                lista = new List <SelectListItem>();
                foreach (EPRTA_MEDIDA reg in (from p in unitOfWork.MedidaRepository.GetAll() where p.ESTADO == "A" select p))
                {
                    SelectListItem lin = new SelectListItem {
                        Text = reg.NOMBRE, Value = reg.ID_MEDIDA.ToString()
                    };
                    lista.Add(lin);
                }
                ViewBag.lstMedida = lista;
            }
            catch (Exception ex)
            {
                return(Json(new { resultado = "error", data = "", mensaje = " Error al consultar las listas, favor revisar las conecciones de base de datos => [" + ex + "]" }));
            }

            return(View(registro));
        }
コード例 #3
0
        public ActionResult GetStockBodega(int pid)
        {
            JObject retorna = new JObject();
            JArray  jArray  = new JArray();

            try
            {
                EPRTA_ITEM item = unitOfWork.ItemRepository.GetById(pid);
                if (item != null)
                {
                    if (item.EPRTA_ARTICULO_BODEGA != null)
                    {
                        if (item.EPRTA_ARTICULO_BODEGA.Count > 0)
                        {
                            var stock = from arti in item.EPRTA_ARTICULO_BODEGA
                                        select new
                            {
                                BODEGA = arti.EPRTA_BODEGA.NOMBRE,
                                arti.CANTIDAD_MAXIMA,
                                arti.CANTIDAD_MINIMA,
                                arti.CANTIDAD_ACTUAL,
                                arti.CANTIDAD_BAJA,
                                arti.CANTIDAD_CRITICA
                            };
                            retorna.Add("data", JArray.FromObject(stock));
                            retorna.Add("resultado", "success");
                        }
                    }
                }
            }catch (Exception ex)
            {
                retorna.Add("resultado", "error");
                retorna.Add("msg", ex.Message);
            }
            return(Content(retorna.ToString(), "application/json"));
        }
コード例 #4
0
        private void ActualizaStock(EPRTA_MOVIMIENTO pmovimiento, string pingreso_egreso)
        {
            try  {
                foreach (EPRTA_MOVIMIENTO_DETALLE detalle in pmovimiento.EPRTA_MOVIMIENTO_DETALLE)
                {
                    //Obtengo el registro del item
                    EPRTA_ITEM item = unitOfWork.ItemRepository.GetById(detalle.ID_ITEM);

                    //Obtengo el registro del stock del item
                    EPRTA_ARTICULO_BODEGA itemStock = unitOfWork.ArticuloBodegaRepository.GetAll().Where(p => p.ID_BODEGA == pmovimiento.ID_BODEGA && p.ID_ITEM == detalle.ID_ITEM).FirstOrDefault();
                    if (pingreso_egreso == "E")
                    {
                        //Actualizo el stock y el costo unitario
                        itemStock.CANTIDAD_ACTUAL -= detalle.CANTIDAD_MOVIMIENTO;
                        unitOfWork.ArticuloBodegaRepository.Update(itemStock);

                        //Actualizo la fecha del ultimo egreso
                        item.FECHA_ULTIMO_EGRESO = DateTime.Now;
                        unitOfWork.ItemRepository.Update(item);
                    }
                    else if (pingreso_egreso == "I")
                    {
                        //Calcular nuevo costo promedio
                        decimal nuevo_costo_promedio = 0;
                        decimal nuevo_cantidad_stock = 0;

                        if (itemStock == null)
                        {
                            nuevo_costo_promedio = Convert.ToDecimal(detalle.COSTO_MOVIMIENTO);
                        }
                        else
                        {
                            decimal costo_total_actual     = Convert.ToDecimal(itemStock.CANTIDAD_ACTUAL) * Convert.ToDecimal(itemStock.COSTO_PROMEDIO);
                            decimal costo_total_movimiento = Convert.ToDecimal(detalle.COSTO_MOVIMIENTO) * Convert.ToDecimal(detalle.CANTIDAD_MOVIMIENTO);
                            nuevo_cantidad_stock = Convert.ToDecimal(itemStock.CANTIDAD_ACTUAL) + Convert.ToDecimal(detalle.CANTIDAD_MOVIMIENTO);
                            nuevo_costo_promedio = Math.Round((costo_total_actual + costo_total_movimiento) / nuevo_cantidad_stock, 3);
                        }

                        //Si no tiene registro de stock
                        if (itemStock == null)
                        {
                            itemStock                  = new EPRTA_ARTICULO_BODEGA();
                            itemStock.ID_ITEM          = detalle.ID_ITEM;
                            itemStock.ID_BODEGA        = pmovimiento.ID_BODEGA;
                            itemStock.CANTIDAD_MAXIMA  = 0;
                            itemStock.CANTIDAD_ACTUAL  = detalle.CANTIDAD_MOVIMIENTO;
                            itemStock.CANTIDAD_INICIO  = detalle.CANTIDAD_MOVIMIENTO;
                            itemStock.CANTIDAD_CRITICA = 0;
                            itemStock.CANTIDAD_MINIMA  = 0;
                            itemStock.CANTIDAD_BAJA    = 0;
                            itemStock.COSTO_PROMEDIO   = nuevo_costo_promedio;
                            unitOfWork.ArticuloBodegaRepository.Insert(itemStock);
                        }
                        else   //Si ya tiene registro de stock, se procede a acutalizar valores
                        {
                            itemStock.COSTO_PROMEDIO  = nuevo_costo_promedio;
                            itemStock.CANTIDAD_ACTUAL = nuevo_cantidad_stock;
                            //Actualizo la cantidad maxima

                            if (itemStock.CANTIDAD_MAXIMA < itemStock.CANTIDAD_ACTUAL)
                            {
                                itemStock.CANTIDAD_MAXIMA = itemStock.CANTIDAD_ACTUAL;
                            }
                            unitOfWork.ArticuloBodegaRepository.Update(itemStock);
                        }

                        //Actualizo la fecha del ultimo ingreso y el historial del costo
                        item.FECHA_ULTIMO_INGRESO = DateTime.Now;
                        item.COSTO_ANTERIOR       = item.COSTO_ACTUAL;
                        item.COSTO_ACTUAL         = nuevo_costo_promedio;
                        unitOfWork.ItemRepository.Update(item);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #5
0
        //[ValidateAntiForgeryToken]
        public ActionResult Grabar(EPRTA_ITEM precord)
        {
            JObject    retorno = new JObject();
            EPRTA_ITEM item;

            try
            {
                //Si es un registro nuevo
                if (precord.ID_ITEM == 0)
                {
                    item           = new EPRTA_ITEM();
                    precord.ESTADO = "A";

                    if (!DisponibilidadCodigo(precord.CODIGO))
                    {
                        retorno.Add("resultado", "warning");
                        retorno.Add("data", null);
                        retorno.Add("msg", "Codigo " + precord.CODIGO + " ya está registrado");
                        return(Content(retorno.ToString(), "application/json"));
                    }

                    item.ESTADO      = precord.ESTADO;
                    item.CODIGO      = precord.CODIGO;
                    item.DESCRIPCION = precord.DESCRIPCION;
                    item.ID_GRUPO    = precord.ID_GRUPO;
                    item.ID_MEDIDA   = precord.ID_MEDIDA;
                    item.OBSERVACION = precord.OBSERVACION;

                    //Reviso si hay registros de bodegas
                    if (precord.EPRTA_ARTICULO_BODEGA.Count > 0)
                    {
                        foreach (EPRTA_ARTICULO_BODEGA stock in precord.EPRTA_ARTICULO_BODEGA)
                        {
                            stock.ESTADO          = "A";
                            stock.CANTIDAD_ACTUAL = 0;
                            stock.CANTIDAD_BAJA   = 0;
                            stock.CANTIDAD_OC     = 0;
                            stock.COSTO_PROMEDIO  = 0;
                            stock.CANTIDAD_INICIO = 0;
                            item.EPRTA_ARTICULO_BODEGA.Add(stock);
                        }
                    }
                    unitOfWork.ItemRepository.Insert(item);
                }
                else  //Si es un update
                {
                    item             = unitOfWork.ItemRepository.GetById(precord.ID_ITEM); //Busco el item a actualizar
                    item.ESTADO      = precord.ESTADO;
                    item.DESCRIPCION = precord.DESCRIPCION;
                    item.ID_GRUPO    = precord.ID_GRUPO;
                    item.ID_MEDIDA   = precord.ID_MEDIDA;
                    item.OBSERVACION = precord.OBSERVACION;
                    //Reviso los registros de bodegas
                    foreach (EPRTA_ARTICULO_BODEGA stock in precord.EPRTA_ARTICULO_BODEGA)
                    {
                        if (stock.ID_ARTIBODE == 0)
                        {
                            stock.ID_ITEM         = item.ID_ITEM;
                            stock.ESTADO          = "A";
                            stock.CANTIDAD_ACTUAL = 0;
                            stock.CANTIDAD_BAJA   = 0;
                            stock.CANTIDAD_OC     = 0;
                            stock.COSTO_PROMEDIO  = 0;
                            stock.CANTIDAD_INICIO = 0;
                            item.EPRTA_ARTICULO_BODEGA.Add(stock);
                        }
                        else
                        {
                            //Si ya existe un registro de bodega lo busco y actualizo los datos
                            foreach (EPRTA_ARTICULO_BODEGA reg in item.EPRTA_ARTICULO_BODEGA.Where(p => p.ID_ARTIBODE == stock.ID_ARTIBODE))
                            {
                                reg.CANTIDAD_MAXIMA  = stock.CANTIDAD_MAXIMA;
                                reg.CANTIDAD_CRITICA = stock.CANTIDAD_CRITICA;
                                reg.CANTIDAD_MINIMA  = stock.CANTIDAD_MINIMA;
                            }
                        }
                    }

                    unitOfWork.ItemRepository.Update(item);
                }

                unitOfWork.Save();
                retorno.Add("resultado", "success");
                retorno.Add("data", null);
                retorno.Add("mensaje", "");
            }
            catch (Exception ex)
            {
                retorno.Add("resultado", "error");
                retorno.Add("data", null);
                retorno.Add("mensaje", ex.ToString());
                logger.Error(ex, ex.Message);
            }
            return(Content(retorno.ToString(), "application/json"));
        }