Ejemplo n.º 1
0
        /// <summary>
        /// Registrar nuevo pedido
        /// </summary>
        private void Nuevo()
        {

            string sRutaArchivoConfig=Server.MapPath("~/Archivos/Configuracion.xml");

            oRemision = new MedDAL.DAL.remisiones();
            oblRemision = new MedNeg.Remisiones.BlRemisiones();

            if (Session["sIdCliente"] != null)
            {
                oRemision.idCliente = (int)Session["sIdCliente"];
                oRemision.Fecha = DateTime.Now;
                oRemision.Estatus = cmbEstatus.SelectedValue;

                //Validar Folio Repetido
                if (ValidaFolioRepetido())
                {

                    //Validar si se esta respetando el folio automatico y verificar si aun es el mismo o cambio su valor
                    if (Session["iFolioAutomatico"].Equals(txbFolio.Text))
                    {
                        oRemision.Folio = oblRemision.RecuperaFolioAutomatico(sRutaArchivoConfig).ToString();
                    }
                    else
                    {
                        oRemision.Folio = txbFolio.Text;
                    }

                    if ((bool)Session["sEsDePedido"] == true)
                    {
                        oRemision.idPedido = (int)Session["sIdPedido"];
                    }

                    if (oblRemision.NuevoRegistro(oRemision))
                    {
                        //Datos de la bitacora
                        string sDatosBitacora = string.Empty;
                        sDatosBitacora += "Tipo:" + cmbTipoRemision.SelectedValue.ToString() + " ";
                        sDatosBitacora += "Folio:" + txbFolio.Text + " ";
                        sDatosBitacora += "Fecha:" + txbFecha.Text + " ";
                        sDatosBitacora += "Estatus:" + cmbEstatus.SelectedItem.ToString() + " ";
                        sDatosBitacora += "Cliente:" + txbCliente.Text + " ";


                        // Registrar la partida de la remision
                        oRemision = new MedDAL.DAL.remisiones();
                        oRemision = oblRemision.BuscarRemisionFolio(txbFolio.Text);
                        int iIdRemision = oRemision.idRemision;
                        bool bRegistroFallido = false;

                        //Recorrer el objeto de sesion lstDetallePartida que contiene los datos de la partida
                        foreach (MedNeg.Facturas.BlDetallePartida pedidoDetalle in (List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"])
                        {

                            //0087 Saber si es un ensamble el que se esta registrando
                            if (pedidoDetalle.bEsEnsamble == true)
                            {
                                AgregarDetalleEnsamble(pedidoDetalle, iIdRemision);
                            }
                            else
                            {
                                oblRemision = new MedNeg.Remisiones.BlRemisiones();
                                MedDAL.DAL.remisiones_partida oRemisionPartida = new MedDAL.DAL.remisiones_partida();

                                oRemisionPartida.idRemision = iIdRemision;
                                oRemisionPartida.idProducto = pedidoDetalle.iIdProducto;
                                oRemisionPartida.Cantidad = pedidoDetalle.dCantidad;
                                oRemisionPartida.IEPS = pedidoDetalle.dIeps;
                                oRemisionPartida.Iva = pedidoDetalle.dIva;
                                oRemisionPartida.Precio = pedidoDetalle.dPrecio;
                                oRemisionPartida.Observaciones = pedidoDetalle.sObservaciones;
                                oRemisionPartida.Descripcion = pedidoDetalle.sDescripcion;

                                //Registrar el detalle del pedido
                                if (!oblRemision.NuevoDetallePartida(oRemisionPartida))
                                {
                                    bRegistroFallido = true;
                                }
                                else
                                {
                                    sDatosBitacora += "Producto:" + pedidoDetalle.iIdProducto.ToString() + " ";
                                    sDatosBitacora += "Cant:" + pedidoDetalle.dCantidad.ToString() + " ";
                                    sDatosBitacora += "IEPS:" + pedidoDetalle.dIeps.ToString() + " ";
                                    sDatosBitacora += "Iva:" + pedidoDetalle.dIva.ToString() + " ";
                                    sDatosBitacora += "Precio:" + pedidoDetalle.dPrecio.ToString() + " ";
                                    sDatosBitacora += "Total:" + Convert.ToDecimal((pedidoDetalle.dCantidad * pedidoDetalle.dPrecio) + pedidoDetalle.dIeps + pedidoDetalle.dIva) + ", ";
                                }


                            }
                        }


                        if (!bRegistroFallido)
                        {
                            //Registrar datos de la remision en la bitacora
                            //lblAviso.Text = "El usuario se ha registrado con éxito";
                            oBitacora = new MedDAL.DAL.bitacora();
                            oblBitacora = new MedNeg.Bitacora.BlBitacora();
                            oBitacora.FechaEntradaSrv = DateTime.Now;
                            oBitacora.FechaEntradaCte = DateTime.Now;//Linea Temporal
                            oBitacora.Modulo = "Remisiones";
                            oBitacora.Usuario = Session["usuario"].ToString();
                            oBitacora.Nombre = Session["nombre"].ToString();
                            oBitacora.Accion = "Nueva Remisión";
                            oBitacora.Descripcion = sDatosBitacora;
                            if (!oblBitacora.NuevoRegistro(oBitacora))
                            {
                                lblDatos.Text = "El evento no pudo ser registrado en la bitácora";
                            }

                            //Actualizar el consecutivo en configuracion (la validacion de si esta activa o no la opcion se hace dentro de la misma funcion)
                            oblRemision.ActualizarFolioRemision(sRutaArchivoConfig);
                            Session["sIdCliente"] = null;

                            if ((bool)Session["sEsDePedido"] == true)
                            {
                                //Actualizar el estatus del pedido en caso de que se haya hecho la remision a partir de un pedido
                                MedDAL.DAL.pedidos oPedido = new MedDAL.DAL.pedidos();
                                MedNeg.Pedidos.BlPedidos oblPedido = new MedNeg.Pedidos.BlPedidos();

                                //Actualizar el estatus del pedido
                                oPedido = oblPedido.BuscarPedido((int)Session["sIdPedido"]);
                                oPedido.Estatus = "2";

                                if (!oblPedido.EditarRegistro(oPedido))
                                {
                                    lblDatos.Text = "No se pudo cambiar el estatus del pedido, contacte al administrador";
                                }
                            }

                            /******* Realizar la resta de las existencias ***********/

                            MedNeg.Productos.BlProductos oblProductos = new MedNeg.Productos.BlProductos();
                            MedNeg.Usuarios.BlUsuarios oblUsuario = new MedNeg.Usuarios.BlUsuarios();
                            MedDAL.DAL.usuarios oUsuario = new MedDAL.DAL.usuarios();


                            oUsuario = (MedDAL.DAL.usuarios)oblUsuario.Buscar(Session["usuario"].ToString());

                            MedNeg.Remisiones.BlRemisiones oblRemisiones;
                            bool bModificarExistenciasError = false;
                            bool bStockMin = false;

                            //Recorrer el objeto de sesion lstDetallePartida que contiene los datos de la partida
                            //Checar la existencia del producto despues de extraer la cantidad marcada en el detalle y alertar en caso necesario sobre stock bajo
                            foreach (MedNeg.Facturas.BlDetallePartida oPedidoDetalle in (List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"])
                            {
                                oblRemisiones = new MedNeg.Remisiones.BlRemisiones();
                                if (!oblRemisiones.ModificarExistenciaProducto(oUsuario.idAlmacen, oPedidoDetalle.iIdProducto, oPedidoDetalle.dCantidad, 1))
                                    bModificarExistenciasError = true;
                                else
                                {
                                    //Si el proceso de extraer se da exitosamente, se revisa ahora las existencias de todos los lotes de ese almacen
                                    //Posteriormente se revisa si la existencia esta por igual o debajo del Stock Minimo requerido
                                    decimal dCantidad = 0;
                                    foreach (MedDAL.DAL.productos_almacen oProductoAlmacen in oblProductos.ObtenerExistenciaProducto(oPedidoDetalle.iIdProducto, oUsuario.idAlmacen))
                                    {
                                        dCantidad += oProductoAlmacen.Cantidad;
                                    }

                                    MedDAL.DAL.productos_almacen_stocks oProductoAlmacenStocks = oblProductos.ObtenerProductoAlmacenStock(oUsuario.idAlmacen, oPedidoDetalle.iIdProducto);
                                    if (dCantidad <= oProductoAlmacenStocks.StockMin)
                                    {
                                        bStockMin = true;
                                    }
                                }
                            }

                            if (bModificarExistenciasError == true)
                            {
                                lblDatos.Text = "No se pudo modificar la existencia de los productos, por favor contacte al administrador";
                            }
                            if (bStockMin)
                            {
                                ScriptManager.RegisterStartupScript(pnlFormulario, pnlFormulario.GetType(), "alertstock", "alertarStock(1);", true);
                            }
                            /****** Termina resta de las existencias ***************************/
                            Session["sTotalFactura"] = 0;
                        }
                        else
                        {
                            //Eliminar la remisión, su partida e indicar al usuario que lo intente de nuevo, limpiar la cadena de bitacora
                            Eliminar(iIdRemision);
                            sDatosBitacora = "";
                            lblDatos.Text = "No se pudo registrar la remisión, por favor verifique los datos y vuelva a intentarlo";
                        }

                    }
                    else
                    {
                        //Fallo esl registro de la remisión
                        lblDatos.Text = "No se pudo registrar la remisión, por favor verifique los datos y vuelva a intentarlo";
                    }

                }
                else  //si es folio repetido
                {
                    lblDatos.Text = "Folio Repetido, no se puede generar la remisión.";

                }
            }
            else
            {
                lblDatos.Text = "Por favor, elija a un Cliente";
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Editar
        /// </summary>
        private void Editar()
        {
            oRemision = new MedDAL.DAL.remisiones();
            oblRemision = new MedNeg.Remisiones.BlRemisiones();
            //oRemision.idRemision = int.Parse(dgvDatos.SelectedDataKey.Value.ToString());
            oRemision = oblRemision.BuscarRemisionFolio(txbFolio.Text);
            oRemision.Estatus = cmbEstatus.SelectedValue.ToString();

            oblRemision = new MedNeg.Remisiones.BlRemisiones();
            if(oblRemision.EditarRegistro(oRemision))
            {
                //Datos de la bitacora
                sDatosBitacora += "Tipo:" + cmbTipoRemision.SelectedValue.ToString() + " ";
                sDatosBitacora += "Folio:" + txbFolio.Text + " ";
                sDatosBitacora += "Fecha:" + txbFecha.Text + " ";
                sDatosBitacora += "Estatus:" + cmbEstatus.SelectedItem.ToString() + " ";
                sDatosBitacora += "Cliente:" + txbCliente.Text + " ";

                oblRemision = new MedNeg.Remisiones.BlRemisiones();
                if (oblRemision.EliminarRemisionPartida(oRemision.idRemision))
                {
                    bool bRegistroFallido = false;

                    //Recorrer el objeto de sesion lstDetallePartida que contiene los datos de la partida
                    foreach (MedNeg.Facturas.BlDetallePartida pedidoDetalle in (List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"])
                    {
                        //Saber si es un ensamble el que se esta registrando
                        if (pedidoDetalle.bEsEnsamble == true)
                        {
                            AgregarDetalleEnsamble(pedidoDetalle, oRemision.idRemision);
                        }
                        else
                        {

                            oblRemision = new MedNeg.Remisiones.BlRemisiones();
                            MedDAL.DAL.remisiones_partida oRemisionPartida = new MedDAL.DAL.remisiones_partida();

                            oRemisionPartida.idRemision = oRemision.idRemision;
                            oRemisionPartida.idProducto = pedidoDetalle.iIdProducto;
                            oRemisionPartida.Cantidad = pedidoDetalle.dCantidad;
                            oRemisionPartida.IEPS = pedidoDetalle.dIeps;
                            oRemisionPartida.Iva = pedidoDetalle.dIva;
                            oRemisionPartida.Precio = pedidoDetalle.dPrecio;

                            //Registrar el detalle del pedido
                            if (!oblRemision.NuevoDetallePartida(oRemisionPartida))
                            {
                                bRegistroFallido = true;
                            }
                            else
                            {
                                sDatosBitacora += "Producto:" + pedidoDetalle.iIdProducto.ToString() + " ";
                                sDatosBitacora += "Cant:" + pedidoDetalle.dCantidad.ToString() + " ";
                                sDatosBitacora += "IEPS:" + pedidoDetalle.dIeps.ToString() + " ";
                                sDatosBitacora += "Iva:" + pedidoDetalle.dIva.ToString() + " ";
                                sDatosBitacora += "Precio:" + pedidoDetalle.dPrecio.ToString() + " ";
                                sDatosBitacora += "Total:" + Convert.ToDecimal((pedidoDetalle.dCantidad * pedidoDetalle.dPrecio) + pedidoDetalle.dIeps + pedidoDetalle.dIva) + ", ";

                           }
                        }
                    }

                    /****** GT: Modificar las existencias de los productos nuevos ***************/

                    MedNeg.Usuarios.BlUsuarios oblUsuario = new MedNeg.Usuarios.BlUsuarios();
                    MedNeg.Productos.BlProductos oblProductos = new MedNeg.Productos.BlProductos();
                    MedDAL.DAL.usuarios oUsuario = new MedDAL.DAL.usuarios();

                    bool bModificarExistenciasError = false;
                    bool bStockMin = false;

                    oUsuario = (MedDAL.DAL.usuarios)oblUsuario.Buscar(Session["usuario"].ToString());

                    oblRemision = new MedNeg.Remisiones.BlRemisiones();
                    foreach (MedNeg.Facturas.BlDetallePartida remisionDetalleNuevos in (List<MedNeg.Facturas.BlDetallePartida>)Session["lstremisionespartidaedicion"])
                    {
                        if (oblRemision.ModificarExistenciaProducto(oUsuario.idAlmacen, remisionDetalleNuevos.iIdProducto, remisionDetalleNuevos.dCantidad, 1))
                        {
                            //Si el proceso de extraer se da exitosamente, se revisa ahora las existencias de todos los lotes de ese almacen
                            //Posteriormente se revisa si la existencia esta por igual o debajo del Stock Minimo requerido
                            decimal dCantidad = 0;
                            foreach (MedDAL.DAL.productos_almacen oProductoAlmacen in oblProductos.ObtenerExistenciaProducto(remisionDetalleNuevos.iIdProducto, oUsuario.idAlmacen))
                            {
                                dCantidad += oProductoAlmacen.Cantidad;
                            }

                            MedDAL.DAL.productos_almacen_stocks oProductoAlmacenStocks = oblProductos.ObtenerProductoAlmacenStock(oUsuario.idAlmacen, remisionDetalleNuevos.iIdProducto);
                            if (dCantidad <= oProductoAlmacenStocks.StockMin)
                            {
                                bStockMin = true;
                            }
                        }
                        else 
                        {
                            bModificarExistenciasError = true;
                        }
                    }
                    if (bModificarExistenciasError == true)
                    {
                        lblDatos.Text = "No se pudo modificar la existencia de los productos, por favor contacte al administrador";
                    }

                    if (bStockMin)
                    {
                        ScriptManager.RegisterStartupScript(pnlFormulario, pnlFormulario.GetType(), "alertstock", "alertarStock(1);", true);
                    }

                    /****** GT: Modificar las existencias de los productos nuevos ***************/

                    //Anotar en la bitacora la modificación a la remision
                    oBitacora = new MedDAL.DAL.bitacora();
                    oblBitacora = new MedNeg.Bitacora.BlBitacora();
                    oBitacora.FechaEntradaSrv = DateTime.Now;
                    oBitacora.FechaEntradaCte = DateTime.Now;//Linea Temporal
                    oBitacora.Modulo = "Remisiones";
                    oBitacora.Usuario = Session["usuario"].ToString();
                    oBitacora.Nombre = Session["nombre"].ToString();
                    oBitacora.Accion = "Edición de Remision";
                    oBitacora.Descripcion = sDatosBitacora;
                    if (!oblBitacora.NuevoRegistro(oBitacora))
                    {
                        //lblAviso2.Text = "El evento no pudo ser registrado en la bitácora";
                    }
                    Session["sTotalFactura"] = 0;
                }

                
            }

        }
Ejemplo n.º 3
0
        /// <summary>
        /// 0087 Metodo que que desgloza los ensambles en sus productos para registrarlo en la partida
        /// </summary>
        protected void AgregarDetalleEnsamble(MedNeg.Facturas.BlDetallePartida renglonEnsamble, int iIdRemision)
        {
            //Recuperar los datos del ensamble
            MedDAL.DAL.ensamble oEnsamble = new MedDAL.DAL.ensamble();
            MedDAL.DAL.ensamble_productos oEnsambleProductos = new MedDAL.DAL.ensamble_productos();
            MedNeg.Ensambles.BlEnsambles oblEnsamble = new MedNeg.Ensambles.BlEnsambles();

            oEnsamble = oblEnsamble.BuscarNombre(renglonEnsamble.sProducto);
            oblEnsamble = new MedNeg.Ensambles.BlEnsambles();
            oEnsambleProductos = oblEnsamble.RecuperarProducto(oEnsamble.ClaveBom);


            //Para registrar el detalle de la remision
            oblRemision = new MedNeg.Remisiones.BlRemisiones();
            MedDAL.DAL.remisiones_partida oRemisionPartida = new MedDAL.DAL.remisiones_partida();

            oRemisionPartida.idRemision = iIdRemision;
            oRemisionPartida.idEnsamble = oEnsamble.idEnsamble;
            oRemisionPartida.idProducto = oEnsambleProductos.idProducto;
            oRemisionPartida.Cantidad = renglonEnsamble.dCantidad;
            oRemisionPartida.IEPS = 0;
            oRemisionPartida.Iva = 0;
            oRemisionPartida.Precio = renglonEnsamble.dPrecio;
            oRemisionPartida.Observaciones = renglonEnsamble.sObservaciones;
            oRemisionPartida.Descripcion = oEnsamble.Descripcion;



            //Registrar el detalle del pedido
            if (!oblRemision.NuevoDetallePartida(oRemisionPartida))
            {
                //bRegistroFallido = true;
            }
            else
            {
                sDatosBitacora += "Producto:" + renglonEnsamble.sProducto.ToString() + " ";
                sDatosBitacora += "Cant:" + renglonEnsamble.dCantidad.ToString() + " ";
                sDatosBitacora += "IEPS:" + renglonEnsamble.dIeps.ToString() + " ";
                sDatosBitacora += "Iva:" + renglonEnsamble.dIva.ToString() + " ";
                sDatosBitacora += "Precio:" + renglonEnsamble.dPrecio.ToString() + " ";
                sDatosBitacora += "Total:" + Convert.ToDecimal((renglonEnsamble.dCantidad * renglonEnsamble.dPrecio) + renglonEnsamble.dIeps + renglonEnsamble.dIva) + ", ";
                sDatosBitacora += "Obs:" + renglonEnsamble.sObservaciones;
            }


        }