예제 #1
0
        public static PedidoInfo ObtenerFolioPedido(int folioPedido)
        {
            var        pedidoPL = new PedidosPL();
            PedidoInfo pedido   = null;
            var        usuario  = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;

            if (usuario != null)
            {
                pedido = pedidoPL.ObtenerPedidosProgramadosPorFolioPedido(folioPedido,
                                                                          usuario.Usuario.Organizacion.OrganizacionID);
            }
            return(pedido);
        }
예제 #2
0
        public static PedidoDetalleInfo ObtenerProgramacionPedidoDetalle(int folioDetallePedido, int folioPedido)
        {
            var seguridad      = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
            int organizacionId = 0;
            var pedidosPl      = new PedidosPL();

            try
            {
                if (seguridad != null)
                {
                    organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;
                }

                List <PedidoInfo> listaPedidos = pedidosPl.ObtenerPedidosProgramadosYParciales(new PedidoInfo
                {
                    FolioPedido  = folioPedido, // 0 Regresa todos los folios.
                    Organizacion = new OrganizacionInfo {
                        OrganizacionID = organizacionId
                    },
                    Activo = EstatusEnum.Activo
                });

                PedidoDetalleInfo pedidoDetalleInfo = null;

                if (listaPedidos != null)
                {
                    PedidoInfo pedido = listaPedidos.First();
                    foreach (PedidoDetalleInfo pedidoDetalle in pedido.DetallePedido)
                    {
                        if (pedidoDetalle.PedidoDetalleId == folioDetallePedido)
                        {
                            var productoPl      = new ProductoPL();
                            var productoForraje = productoPl.ObtenerProductoForraje(pedidoDetalle.Producto);
                            if (productoForraje != null)
                            {
                                pedidoDetalle.Producto.Forraje = true;
                            }
                            pedidoDetalleInfo = pedidoDetalle;
                            break;
                        }
                    }
                }

                return(pedidoDetalleInfo);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
        /// <summary>
        /// Validar lote en uso
        /// </summary>
        /// <returns></returns>
        private bool ValidarLoteEnUso()
        {
            decimal cantidadProgramadaAux = 0;
            var     datosLote             = new AlmacenInventarioLoteInfo
            {
                ProductoId     = producto.ProductoId,
                OrganizacionId = pedido.Organizacion.OrganizacionID,
                TipoAlmacenId  = (int)TipoAlmacenEnum.MateriasPrimas,
                Activo         = EstatusEnum.Activo
            };
            var almacenInventarioLotePL = new AlmacenInventarioLotePL();
            IList <AlmacenInventarioLoteInfo> resultado = almacenInventarioLotePL.ObtenerLotesUso(datosLote);

            if (resultado != null)
            {
                if (Convert.ToInt32(skAyudaLote.Clave) == resultado[0].Lote || Autorizado)
                {
                    Autorizado = false;
                    return(true);
                }
                if (Convert.ToInt32(skAyudaLote.Clave) == resultado[1].Lote)
                {
                    var pedidoPL           = new PedidosPL();
                    int cantidadProgramada =
                        pedidoPL.ObtenerPedidosProgramadosPorLoteCantidadProgramada(resultado[0].Lote);
                    if (detallePedido.ProgramacionMateriaPrima != null)
                    {
                        foreach (
                            var programacionMateriaPrimaInfo in
                            detallePedido.ProgramacionMateriaPrima.Where(
                                programacionMateriaPrimaInfo =>
                                programacionMateriaPrimaInfo.InventarioLoteOrigen.Lote == resultado[0].Lote))
                        {
                            cantidadProgramadaAux = programacionMateriaPrimaInfo.CantidadProgramada;
                        }
                    }
                    if ((resultado[0].Cantidad - (cantidadProgramada + cantidadProgramadaAux)) == 0)
                    {
                        return(true);
                    }
                }
                loteEnUso = resultado[0].Lote;
            }
            SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                              string.Format(Properties.Resources.SolicitudProgramacionMateriaPrima_RequiereAutorizacion,
                                            skAyudaLote.Clave), MessageBoxButton.OK,
                              MessageImage.Warning);
            SolicitarAutorizacionLoteUso();
            return(false);
        }
        /// <summary>
        /// Valida que la cantidad programada no pase de la cantidad solicitada.
        /// </summary>
        private bool ValidaCantidadProgramada()
        {
            bool resultado          = true;
            var  cantidadProgramada = decimal.Parse(txtCantidadProgramada.Value.ToString());

            cantidadProgramada = cantidadProgramada + detallePedido.TotalCantidadProgramada;

            if (Programacion != null) // Si estan editando restamos la cantidad anterior
            {
                cantidadProgramada = cantidadProgramada - Programacion.CantidadProgramada;
            }

            if (cantidadProgramada > detallePedido.CantidadSolicitada)
            {
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.CrearProgramacionMateriaPrimaDialogo_MsgCantidadSolicitada,
                                  MessageBoxButton.OK, MessageImage.Warning);
                txtCantidadProgramada.Focus();
                resultado = false;
            }

            var pedidoPL = new PedidosPL();
            List <PedidoPendienteLoteModel> listaPedidoPendientes =
                pedidoPL.ObtenerPedidosProgramadosPorLote(almacenInventarioLote.AlmacenInventarioLoteId);
            decimal cantidadPendienteProgramada = 0;

            if (listaPedidoPendientes != null && listaPedidoPendientes.Any())
            {
                List <PedidoPendienteLoteModel> pedidosNoCompletos =
                    listaPedidoPendientes.Where(pedi => pedi.AlmacenMovimientoOrigenID == 0).ToList();
                if (pedidosNoCompletos.Any())
                {
                    cantidadPendienteProgramada = pedidosNoCompletos.Sum(pedi => pedi.CantidadProgramada);
                }
            }
            if (cantidadPendienteProgramada > 0)
            {
                if ((cantidadProgramada + cantidadPendienteProgramada) > almacenInventarioLote.Cantidad)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      string.Format(Properties.Resources.CrearProgramacionMateriaPrimaDialogo_MsgTotalProgramacion, (almacenInventarioLote.Cantidad - cantidadProgramada)),
                                      MessageBoxButton.OK, MessageImage.Warning);
                    txtCantidadProgramada.Focus();
                    resultado = false;
                }
            }
            return(resultado);
        }
예제 #5
0
        public static IList <PedidoInfo> ObtenerFolios(string almacen)
        {
            var pagina = new PaginacionInfo
            {
                Inicio = 1,
                Limite = 100000
            };
            var usuario        = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
            int organizacionID = 0;

            if (usuario != null)
            {
                organizacionID = usuario.Usuario.Organizacion.OrganizacionID;
            }
            var pedido = new PedidoInfo
            {
                Almacen = new AlmacenInfo
                {
                    Descripcion = almacen,
                },
                Organizacion = new OrganizacionInfo
                {
                    OrganizacionID = organizacionID
                },
                Activo = EstatusEnum.Activo
            };
            var pedidosPL = new PedidosPL();
            ResultadoInfo <PedidoInfo> folios = pedidosPL.ObtenerPorFolioProgramadoPaginado(pagina, pedido);
            var resultado = new List <PedidoInfo>();

            if (folios != null)
            {
                resultado.AddRange(folios.Lista);
            }
            return(resultado);
        }
예제 #6
0
        public static void CrearPesajeMateriaPrima(PesajeMateriaPrimaInfo pesajeMateriaPrima, ProgramacionMateriaPrimaInfo programacionMateriaPrima, int pedido)
        {
            try
            {
                var seguridad  = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
                var usuarioId  = 0;
                var pedidoInfo = new PedidoInfo();

                if (seguridad != null)
                {
                    usuarioId  = seguridad.Usuario.UsuarioID;
                    pedidoInfo = new PedidoInfo
                    {
                        FolioPedido  = pedido,
                        Organizacion = seguridad.Usuario.Organizacion
                    };
                }

                var abastoMateriaPrimaPl = new AbastoMateriaPrimaPL();
                var pedidoPL             = new PedidosPL();

                pedidoInfo = pedidoPL.ObtenerPedidoPorFolio(pedidoInfo);
                if (pedidoInfo != null)
                {
                    pedido = pedidoInfo.PedidoID;
                }

                var proveedorChoferPl = new ProveedorChoferPL();

                if (pesajeMateriaPrima.ProveedorChofer.Proveedor.ProveedorID > 0 &&
                    pesajeMateriaPrima.ProveedorChofer.Chofer.ChoferID > 0)
                {
                    pesajeMateriaPrima.ProveedorChofer = proveedorChoferPl.ObtenerProveedorChoferPorProveedorIdChoferId(
                        pesajeMateriaPrima.ProveedorChofer.Proveedor.ProveedorID,
                        pesajeMateriaPrima.ProveedorChofer.Chofer.ChoferID);
                    pesajeMateriaPrima.ProveedorChoferID = pesajeMateriaPrima.ProveedorChofer.ProveedorChoferID;
                }
                else
                {
                    pesajeMateriaPrima.ProveedorChoferID = 0;
                }
                pesajeMateriaPrima.UsuarioModificacionID = usuarioId;
                pesajeMateriaPrima.UsuarioCreacionID     = usuarioId;
                pesajeMateriaPrima.UsuarioIDSurtido      = usuarioId;
                pesajeMateriaPrima.UsuarioIDRecibe       = usuarioId;

                pesajeMateriaPrima.EstatusID    = Estatus.PedidoParcial.GetHashCode();
                pesajeMateriaPrima.TipoPesajeID = TipoPesajeEnum.Tolva.GetHashCode();
                pesajeMateriaPrima.Activo       = true;
                pesajeMateriaPrima.FechaSurtido = DateTime.Today;
                pesajeMateriaPrima.FechaRecibe  = DateTime.Today;

                programacionMateriaPrima.UsuarioModificacion = new UsuarioInfo {
                    UsuarioID = usuarioId
                };



                abastoMateriaPrimaPl.GuardarAbastoDeMateriaPrima(pesajeMateriaPrima, programacionMateriaPrima, pedido);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
예제 #7
0
        public static List <ParametrosDetallePedidoInfo> ObtenerPedidoPorTicket(int ticket, int folio)
        {
            var seguridad      = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
            int organizacionId = 0;
            var pedidosPl      = new PedidosPL();

            try
            {
                if (seguridad != null)
                {
                    organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;
                }

                List <ParametrosDetallePedidoInfo> pedidoDetalleGenerico = null;

                var pedidoSeleccionado = pedidosPl.ObtenerPedidoPorFolio(folio, organizacionId);

                if (pedidoSeleccionado != null)
                {
                    foreach (PedidoDetalleInfo pedidoDetalle in pedidoSeleccionado.DetallePedido)
                    {
                        bool agregarProducto = false;

                        var detalle = new ParametrosDetallePedidoInfo
                        {
                            Producto           = pedidoDetalle.Producto,
                            PedidoDetalleId    = pedidoDetalle.PedidoDetalleId,
                            LoteProceso        = pedidoDetalle.InventarioLoteDestino,
                            CantidadSolicitada = pedidoDetalle.CantidadSolicitada
                        };

                        if (pedidoDetalle.ProgramacionMateriaPrima != null)
                        {
                            foreach (var programacion in pedidoDetalle.ProgramacionMateriaPrima
                                     )
                            {
                                if (programacion.PesajeMateriaPrima != null)
                                {
                                    foreach (
                                        var pesajeMateriaPrima in
                                        programacion.PesajeMateriaPrima.Where(
                                            pesajeMateriaPrima =>
                                            pesajeMateriaPrima.PesoTara > 0 &&
                                            pesajeMateriaPrima.Ticket == ticket))
                                    {
                                        agregarProducto = true;
                                    }
                                }
                            }

                            detalle.CantidadEntregada =
                                pedidoDetalle.ProgramacionMateriaPrima.Sum(
                                    programacionMateria => programacionMateria.CantidadEntregada);
                        }

                        detalle.CantidadPendiente = pedidoDetalle.CantidadSolicitada -
                                                    detalle.CantidadEntregada;

                        if (agregarProducto)
                        {
                            if (pedidoDetalleGenerico == null)
                            {
                                pedidoDetalleGenerico = new List <ParametrosDetallePedidoInfo>();
                            }

                            pedidoDetalleGenerico.Add(detalle);
                        }
                    }
                }

                return(pedidoDetalleGenerico);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
예제 #8
0
        public static List <PedidoInfo> ObtenerFolios(int folioPedido)
        {
            var seguridad                  = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
            int organizacionId             = 0;
            List <PedidoInfo> listaPedidos = null;
            var pedidosPl                  = new PedidosPL();

            if (seguridad != null)
            {
                organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;
            }

            listaPedidos = pedidosPl.ObtenerPedidosProgramadosYParciales(new PedidoInfo
            {
                FolioPedido  = folioPedido,// 0 Regresa todos los folios.
                Organizacion = new OrganizacionInfo {
                    OrganizacionID = organizacionId
                },
                Activo = EstatusEnum.Activo
            });

            List <PedidoInfo> listaPedidoGenerico = null;

            if (listaPedidos != null)
            {
                foreach (var pedido in listaPedidos)
                {
                    if (pedido.DetallePedido != null)
                    {
                        int contadorProducto = 0, contadorPesaje = 0;

                        foreach (PedidoDetalleInfo pedidoDetalle in pedido.DetallePedido)
                        {
                            contadorProducto++;

                            var detalle = new ParametrosDetallePedidoInfo
                            {
                                Producto           = pedidoDetalle.Producto,
                                PedidoDetalleId    = pedidoDetalle.PedidoDetalleId,
                                LoteProceso        = pedidoDetalle.InventarioLoteDestino,
                                CantidadSolicitada = pedidoDetalle.CantidadSolicitada
                            };

                            if (pedidoDetalle.ProgramacionMateriaPrima != null)
                            {
                                foreach (var programacion in pedidoDetalle.ProgramacionMateriaPrima)
                                {
                                    if (programacion.PesajeMateriaPrima != null)
                                    {
                                        foreach (var pesajeMateriaPrima in
                                                 programacion.PesajeMateriaPrima.Where(
                                                     pesajeMateriaPrima => pesajeMateriaPrima.PesoTara > 0))
                                        {
                                            contadorPesaje++;
                                        }
                                    }
                                }
                            }
                        }

                        if (contadorPesaje != contadorProducto)
                        {
                            if (listaPedidoGenerico == null)
                            {
                                listaPedidoGenerico = new List <PedidoInfo>();
                            }

                            listaPedidoGenerico.Add(pedido);
                        }
                    }
                }
            }

            if (listaPedidoGenerico != null)
            {
                listaPedidoGenerico = listaPedidoGenerico.OrderBy(x => x.FolioPedido).ToList();
            }
            return(listaPedidoGenerico);
        }
예제 #9
0
        public static List <ParametrosDetallePedidoInfo> ObtenerPedidoFolio(int folioPedido)
        {
            var seguridad                  = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
            int organizacionId             = 0;
            List <PedidoInfo> listaPedidos = null;
            var pedidosPl                  = new PedidosPL();

            try
            {
                if (seguridad != null)
                {
                    organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;
                }

                listaPedidos = pedidosPl.ObtenerPedidosProgramadosYParciales(new PedidoInfo
                {
                    FolioPedido  = folioPedido, // 0 Regresa todos los folios.
                    Organizacion = new OrganizacionInfo {
                        OrganizacionID = organizacionId
                    },
                    Activo = EstatusEnum.Activo
                });

                List <ParametrosDetallePedidoInfo> pedidoDetalleGenerico = null;

                if (listaPedidos != null)
                {
                    PedidoInfo pedido = listaPedidos.First();

                    if (pedido.DetallePedido != null)
                    {
                        foreach (PedidoDetalleInfo pedidoDetalle in pedido.DetallePedido)
                        {
                            var agregarProducto = true;

                            var detalle = new ParametrosDetallePedidoInfo
                            {
                                Producto           = pedidoDetalle.Producto,
                                PedidoDetalleId    = pedidoDetalle.PedidoDetalleId,
                                LoteProceso        = pedidoDetalle.InventarioLoteDestino,
                                CantidadSolicitada = pedidoDetalle.CantidadSolicitada
                            };

                            if (pedidoDetalle.ProgramacionMateriaPrima != null)
                            {
                                foreach (var programacion in pedidoDetalle.ProgramacionMateriaPrima
                                         )
                                {
                                    if (programacion.PesajeMateriaPrima != null)
                                    {
                                        foreach (
                                            var pesajeMateriaPrima in
                                            programacion.PesajeMateriaPrima.Where(
                                                pesajeMateriaPrima => pesajeMateriaPrima.PesoTara > 0))
                                        {
                                            agregarProducto = false;
                                        }
                                    }
                                }

                                detalle.CantidadEntregada =
                                    pedidoDetalle.ProgramacionMateriaPrima.Sum(
                                        programacionMateria => programacionMateria.CantidadEntregada);
                            }

                            detalle.CantidadPendiente = pedidoDetalle.CantidadSolicitada - detalle.CantidadEntregada;

                            if (pedidoDetalle.Producto == null)
                            {
                                agregarProducto = false;
                            }

                            if (agregarProducto)
                            {
                                if (pedidoDetalleGenerico == null)
                                {
                                    pedidoDetalleGenerico = new List <ParametrosDetallePedidoInfo>();
                                }

                                pedidoDetalleGenerico.Add(detalle);
                            }
                        }
                    }
                }
                return(pedidoDetalleGenerico);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }