Пример #1
0
        private LineaPedidoPicking pasarAPendiente(LineaPedidoPicking linea)
        {
            PedidosVentaController pedidosCtrl = new PedidosVentaController();

            // Lo suyo sería dejar pendiente la línea actual para que mantuviese la antigüedad,
            // pero no se puede, porque necesitamos el Nº Orden para ponerlo en Ubicaciones luego,
            // por lo que nos vemos obligados a dejar pendiente la línea nueva y decidir la
            // antigüedad por fecha de modificación en lugar de por Nº Orden
            // (también hay que cambiarlo en la reposición).
            LinPedidoVta lineaActual = db.LinPedidoVtas.SingleOrDefault(l => l.Nº_Orden == linea.Id);

            if (lineaActual.Cantidad != linea.Cantidad - linea.CantidadReservada) {
                LinPedidoVta lineaNueva;
                lineaActual.Estado = Constantes.EstadosLineaVenta.PENDIENTE;
                lineaNueva = pedidosCtrl.dividirLinea(db, lineaActual, (short)(linea.CantidadReservada));
                lineaActual.Estado = Constantes.EstadosLineaVenta.EN_CURSO;

                if (lineaNueva != null)
                {
                    return new LineaPedidoPicking
                    {
                        Id = 0, // no importa que no tenga Nº Orden porque es la que se queda pendiente
                        Cantidad = (short)lineaNueva.Cantidad,
                        CantidadReservada = 0,
                        BaseImponible = lineaNueva.Base_Imponible,
                        TipoLinea = (byte)lineaNueva.TipoLinea,
                        Producto = lineaNueva.Producto,
                        FechaEntrega = lineaNueva.Fecha_Entrega
                    };
                }
            }

            return null;
        }