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); } }
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)); }
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")); }
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; } }
//[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")); }