Example #1
0
        public async Task <IActionResult> AgregarMovimiento([FromBody] MovimientoAlmacenDTO movimientoAlmacenDTO)
        {
            //// Flujo nuevo producto.
            //if (movimientoAlmacen.IdMovimientoAlmacen == Guid.Empty)
            //{
            //    // Se aƱade el producto al contexto.
            MovimientosAlmacen2 movimientoAlmacen = new MovimientosAlmacen2();

            movimientoAlmacen.CodigoProducto  = movimientoAlmacenDTO.CodigoProducto;
            movimientoAlmacen.NombreProducto  = movimientoAlmacenDTO.NombreProducto;
            movimientoAlmacen.TipoMovimiento  = movimientoAlmacenDTO.TipoMovimiento;
            movimientoAlmacen.NumBolsas       = movimientoAlmacenDTO.NumBolsas;
            movimientoAlmacen.Turno           = movimientoAlmacenDTO.Turno;
            movimientoAlmacen.FechaMovimiento = DateTime.Now;
            movimientoAlmacen.FolioRemision   = movimientoAlmacenDTO.FolioRemision;

            try
            {
                await _context.MovimientosAlmacen.AddAsync(movimientoAlmacen);

                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                return(new OkObjectResult(new RespuestaServidor
                {
                    Exitoso = false, MensajeError = ex.Message
                }));
            }
            CalcularKPIAlmacenCumplimiento(movimientoAlmacen);
            return(new OkObjectResult(new RespuestaServidor
            {
                Exitoso = true, MensajeError = string.Empty
            }
                                      ));
        }
Example #2
0
        private void CalcularKPIAlmacenCumplimiento(MovimientosAlmacen2 mov)
        {
            //var pedidos = _context.PedidosCliente.Include(p => p.ProductosContpaq).ToArray();
            var fecha   = new DateTime(2019, 04, 28).Date;
            var pedidos = _context.PedidoSemanal
                          .Include(pd => pd.LstPedidosDiario)
                          .Where(pd => pd.FechaInicioSemana.Date > fecha)
                          .ToArray();

            foreach (var pedido in pedidos)
            {
                //foreach (var producto in productoPedido.ProductosContpaq)
                foreach (var producto in pedido.LstPedidosDiario)
                {
                    var prod = _context.PedidoDiario
                               .Include(pd => pd.Producto)
                               .Where(p => p.IdPedidoDiario == producto.IdPedidoDiario).FirstOrDefault();
                    producto.Producto = prod.Producto;
                    var fechaInicioSemana = pedido.FechaInicioSemana.AddDays(producto.NumDia).Date;
                    var fechaMovimiento   = mov.FechaMovimiento.Date;
                    if (mov.CodigoProducto == Convert.ToString(producto.Producto.CodigoProducto) &&
                        fechaMovimiento == fechaInicioSemana &&
                        mov.TipoMovimiento == "Salida")
                    {
                        //var movimientoAlmacen = _context.MovimientosAlmacen
                        //    .Where(a => a.CodigoProducto == Convert.ToString(producto.Producto.CodigoProducto)
                        //    && a.TipoMovimiento == "Salida"
                        //    && a.FechaMovimiento.Date == pedido.FechaInicioSemana.AddDays(producto.NumDia+1).Date
                        //).FirstOrDefault();

                        //// Si no se encuentra un movimiento en esa fecha continua.
                        //if (movimientoAlmacen == null) continue;

                        // Si ya fue calculado no lo vuelvas a calcular.
                        //if (producto.Cumplimiento == null) return Convert.ToDouble(producto.Cumplimiento);

                        var parsedNumeroBolsasMovimiento = Convert.ToInt32(mov.NumBolsas);
                        var parsedNumberobolsasProducto  = producto.NumBolsas;
                        var parsedNumerobolsasDevuelto   = 0;
                        //if (producto.Devoluciones != null)
                        //{
                        //    parsedNumerobolsasDevuelto = Convert.ToInt32(producto.Devoluciones);
                        //}

                        var diferenciaBolsas = parsedNumberobolsasProducto - parsedNumeroBolsasMovimiento;

                        var cumplimiento = ((parsedNumeroBolsasMovimiento - parsedNumerobolsasDevuelto) * 100 / parsedNumberobolsasProducto) * .01;

                        producto.Cumplimiento = Convert.ToDecimal(cumplimiento);
                        _context.SaveChanges();
                    }
                }
            }
            //double cumplimiento = 0.0;
            //foreach (var productoPedido in pedidos)
            //{
            //    foreach (var producto in productoPedido.ProductosContpaq)
            //    {
            //        // Obtiene todos los movimientos.
            //        var movimientos = _context.MovimientosAlmacen.ToArray();

            //        var movimientoAlmacen = _context.MovimientosAlmacen.Where(a => a.CodigoProducto == producto.CodigoProducto
            //        && a.TipoMovimiento == "Salida"
            //        && a.FechaMovimiento >= productoPedido.FechaRegistro
            //        && a.FechaMovimiento <= productoPedido.FechaEntrega).FirstOrDefault();

            //        // Si no se encuentra un movimiento en esa fecha continua.
            //        if (movimientoAlmacen == null) continue;

            //        // Si ya fue calculado no lo vuelvas a calcular.
            //        //if (producto.Cumplimiento == null) return Convert.ToDouble(producto.Cumplimiento);

            //        var parsedNumeroBolsasMovimiento = Convert.ToInt32(movimientoAlmacen.NumBolsas);
            //        var parsedNumberobolsasProducto = Convert.ToInt32(producto.CantidadBolsas);
            //        var parsedNumerobolsasDevuelto = 0;
            //        if (producto.Devoluciones != null)
            //        {
            //            parsedNumerobolsasDevuelto = Convert.ToInt32(producto.Devoluciones);
            //        }

            //        var diferenciaBolsas = parsedNumberobolsasProducto - parsedNumeroBolsasMovimiento;

            //        cumplimiento = ((parsedNumeroBolsasMovimiento - parsedNumerobolsasDevuelto) * 100 / parsedNumberobolsasProducto) * .01;

            //        producto.Cumplimiento = cumplimiento.ToString();
            //        _context.SaveChanges();
            //    }
            //}

            //return cumplimiento;
        }