示例#1
0
        private void ActualizarStockProduccion(ServicioItemProduccion servicio, STOCK_PRODUCCION stockProduccion, double totalItem)
        {
            var stock = servicio.RepositorioStockProduccion.ObtenerObjetos(new FiltroStockProduccionPorId(stockProduccion.ID)).FirstOrDefault();

            if (stock == null)
            {
                throw new ApplicationException($"No existe Stock Producción cuyo id es {stockProduccion.ID}");
            }
            stock.CANTIDAD_GRAMOS = stock.CANTIDAD_GRAMOS - totalItem;
            servicio.RepositorioStockProduccion.Actualizar(stock);
        }
示例#2
0
        private void ActualizarUsuario(ServicioItemProduccion servicio, int id, short idUsuario)
        {
            var itemProduccion = servicio.Repositorio.ObtenerObjetos(new FiltroItemProduccionPorId(id)).FirstOrDefault();

            if (itemProduccion == null)
            {
                throw new ApplicationException($"No existe item de producción cuyo id es {id}");
            }
            itemProduccion.ID_USUARIO = idUsuario;
            servicio.Repositorio.Actualizar(itemProduccion);
        }
示例#3
0
        internal override void EjecutarProceso(ServicioItemProduccion servicio)
        {
            var stockProduccion = servicio.RepositorioStockProduccion.ObtenerObjetos(new FiltroStockProduccion()).FirstOrDefault(sp => sp.ITEM.ID_ITEM == servicio.DetalleItemProduccion.ID_ITEM);
            var item            = servicio.RepositorioItem.ObtenerItemsConMedida(new FiltroItemGeneral()).FirstOrDefault(i => i.ID_ITEM == servicio.DetalleItemProduccion.ID_ITEM);

            if (stockProduccion == null || item == null)
            {
                throw new ApplicationException("Data inconsistente.");
            }
            var totalItem = servicio.Diferencia * item.CANTIDAD * item.MEDIDA.VALOR;

            ActualizarStockProduccion(servicio, stockProduccion, totalItem);
        }
示例#4
0
        internal override void EjecutarProceso(ServicioItemProduccion servicio)
        {
            var item = servicio.RepositorioProduccion.ObtenerObjetos(new FiltroProduccionHoy()).FirstOrDefault();

            if (item == null)
            {
                servicio.ItemProduccion.FECHA = DateTime.Now;
                servicio.Repositorio.Agregar(servicio.ItemProduccion);
                servicio.SetearEstado(new EstadoActualizarStock());
            }
            else
            {
                throw new ApplicationException($"No se puede ingresar items a produccion ya que la producción del día fue ingresada.");
            }
        }
示例#5
0
        internal override void EjecutarProceso(ServicioItemProduccion servicio)
        {
            var detalleItemProduccionAModificar = servicio.RepositorioDetalle.ObtenerObjetos(new FiltroDetalleItemProduccionPorId(servicio.DetalleItemProduccion.ID_DETALLE)).FirstOrDefault();

            if (detalleItemProduccionAModificar == null)
            {
                throw new ApplicationException($"No existe detalle item de producción cuyo id es {servicio.DetalleItemProduccion.ID_DETALLE}");
            }
            if (DateTime.Now > DateTime.Parse(servicio.DetalleItemProduccion.ITEM_PRODUCCION.FECHA.ToShortDateString()).AddHours(23).AddMinutes(59).AddSeconds(59))
            {
                throw new ApplicationException($"No se puede modificar el detalle item de producción.");
            }
            servicio.Diferencia = detalleItemProduccionAModificar.CANTIDAD - servicio.DetalleItemProduccion.CANTIDAD;
            detalleItemProduccionAModificar.CANTIDAD = servicio.DetalleItemProduccion.CANTIDAD;
            servicio.RepositorioDetalle.Actualizar(detalleItemProduccionAModificar);
            ActualizarUsuario(servicio, detalleItemProduccionAModificar.ID_ITEM_PRODUCCION, servicio.DetalleItemProduccion.ITEM_PRODUCCION.ID_USUARIO);
            servicio.SetearEstado(new EstadoActualizarUnStock());
        }
示例#6
0
        internal override void EjecutarProceso(ServicioItemProduccion servicio)
        {
            var stockProduccion = servicio.RepositorioStockProduccion.ObtenerObjetos(new FiltroStockProduccion());
            var items           = servicio.RepositorioItem.ObtenerItemsConMedida(new FiltroItemGeneral());

            foreach (var detalle in servicio.ItemProduccion.DETALLES_ITEM_PRODUCCION)
            {
                var item      = items.FirstOrDefault(i => i.ID_ITEM == detalle.ID_ITEM);
                var stock     = stockProduccion.FirstOrDefault(sp => sp.ITEM.ID_ITEM == detalle.ID_ITEM);
                var totalItem = detalle.CANTIDAD * item.CANTIDAD * item.MEDIDA.VALOR;
                if (stock == null)
                {
                    CrearStockProduccion(servicio, new STOCK_PRODUCCION {
                        ITEM = new ITEM {
                            ID_ITEM = detalle.ID_ITEM
                        }, CANTIDAD_GRAMOS = totalItem
                    });
                }
                else
                {
                    ActualizarStockProduccion(servicio, stock, totalItem);
                }
            }
        }
示例#7
0
 private void CrearStockProduccion(ServicioItemProduccion servicio, STOCK_PRODUCCION stockProduccion)
 {
     servicio.RepositorioStockProduccion.CrearStockProduccion(stockProduccion);
 }
示例#8
0
 internal abstract void EjecutarProceso(ServicioItemProduccion servicio);