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

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

            oFactura = new MedDAL.DAL.facturas();
            oblFacturas = new MedNeg.Facturas.BlFacturas();
            oFactura.idCliente = (int)Session["sIdCliente"];

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

            if ((bool)Session["sEsDeRemision"] == true)
                oFactura.idRemision = (int)Session["sIdRemision"];

            if ((bool)Session["sEsDeReceta"] == true)
                oFactura.idReceta = (int)Session["sIdReceta"];

            oFactura.TipoFactura = cmbTipoFactura.SelectedValue.ToString();
            oFactura.Fecha = DateTime.Now;
            oFactura.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))
                {
                    oFactura.Folio = oblFacturas.RecuperaFolioAutomatico(sRutaArchivoConfig).ToString();
                }
                else
                {
                    oFactura.Folio = txbFolio.Text;
                }

                if (oblFacturas.NuevoRegistro(oFactura))
                {
                    //Datos de la bitacora
                    string sDatosBitacora = string.Empty;
                    sDatosBitacora += "Tipo:" + cmbTipoFactura.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
                    oFactura = new MedDAL.DAL.facturas();
                    oFactura = oblFacturas.BuscarFacturasFolio(txbFolio.Text);
                    int iIdFactura = oFactura.idFactura;
                    bool bRegistroFallido = false;

                    //Recorrer el objeto de sesion lstDetallePartida que contiene los datos de la partida
                    foreach (MedNeg.Facturas.BlDetallePartida facturaDetalle in (List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"])
                    {
                        oblFacturas = new MedNeg.Facturas.BlFacturas();
                        MedDAL.DAL.facturas_partida oFacturaPartida = new MedDAL.DAL.facturas_partida();

                        oFacturaPartida.idFactura = iIdFactura;
                        oFacturaPartida.idProducto = facturaDetalle.iIdProducto;
                        oFacturaPartida.Cantidad = facturaDetalle.dCantidad;
                        oFacturaPartida.IEPS = facturaDetalle.dIeps;
                        oFacturaPartida.Iva = facturaDetalle.dIva;
                        oFacturaPartida.Precio = facturaDetalle.dPrecio;
                        oFacturaPartida.Descripcion = facturaDetalle.SProducto;

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

                    //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 = "Factura";
                    oBitacora.Usuario = Session["usuario"].ToString();
                    oBitacora.Nombre = Session["nombre"].ToString();
                    oBitacora.Accion = "Nueva Factura";
                    oBitacora.Descripcion = sDatosBitacora;
                    if (!oblBitacora.NuevoRegistro(oBitacora))
                    {
                        lblDatos.Text = "El evento no pudo ser registrado en la bitácora";
                    }

                    //Actualizar el consecutivo en la bitacora
                    oblFacturas.ActualizarFolioFactura(sRutaArchivoConfig);

                    //Generar la factura electronica
                    if (cmbModoFactura.SelectedValue == "2")
                    {
                        oblFacturas = new MedNeg.Facturas.BlFacturas();
                        oblFacturas.GenerarFacturaElectronica(iIdFactura, sRutaCertificados, Session["usuario"].ToString(), (int)Session["sIdCliente"], txbFolio.Text);

                        System.IO.FileInfo fFactura = new System.IO.FileInfo(Server.MapPath("~/Archivos/FacturasElectronicas/FacturaE-" + txbFolio.Text + ".xml"));

                        Response.Clear();
                        Response.AddHeader("Content-Disposition", "attachment; filename=" + fFactura.Name);
                        Response.AddHeader("Content-Length", fFactura.Length.ToString());
                        Response.ContentType = "application/....";
                        Response.WriteFile(fFactura.FullName);
                        Response.End();
                    }

                    //Saber si se va a actualizar el estatus del pedido
                    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 = "3";

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

                    //Saber si se va a actualizar el estatus de la remision
                    if ((bool)Session["sEsDeRemision"] == true)
                    {
                        //Actualizar el estatus del pedido
                        MedDAL.DAL.remisiones oRemision = new MedDAL.DAL.remisiones();
                        MedNeg.Remisiones.BlRemisiones oblRemision = new MedNeg.Remisiones.BlRemisiones();

                        oRemision = oblRemision.BuscarRemision((int)Session["sIdRemision"]);
                        oRemision.Estatus = "3";

                        if (!oblRemision.EditarRegistro(oRemision))
                        {
                            lblDatos.Text = "No se pudo cambiar el estatus de la remisión, contacte al administrador";
                        }
                    }

                    //Saber si se va a actualizar el estatus de la remision
                    if ((bool)Session["sEsDeReceta"] == true)
                    {
                        //Actualizar el estatus del pedido
                        MedDAL.DAL.remisiones oRemision = new MedDAL.DAL.remisiones();
                        MedNeg.Remisiones.BlRemisiones oblRemision = new MedNeg.Remisiones.BlRemisiones();

                        MedDAL.DAL.recetas oReceta = new MedDAL.DAL.recetas();
                        MedNeg.Recetas.BlRecetas oblRecetas = new MedNeg.Recetas.BlRecetas();

                        oReceta = oblRecetas.BuscarReceta((int)Session["sIdReceta"]);
                        oReceta.Estatus = "2";

                        if (!oblRecetas.EditarRegistro(oReceta))
                        {
                            lblDatos.Text = "No se pudo cambiar el estatus de la receta, contacte al administrador";
                        }
                    }

                }
                else
                {

                }

            }
            else  //si es folio repetido
            {
                lblDatos.Text = "Folio Repetido, no se puede generar el pedido";

            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Cargar los datos del pedido y su partida
        /// </summary>
        /// <param name="bDatos"></param>
        protected void CargarFormulario(bool bDatos)
        {
            pnlFormulario.Visible = true;
            pnlCatalogo.Visible = false;
            //pnlReportes.Visible = false;

            if (bDatos)
            {

                //Objeto que contiene el id del pedido 
                oblPedido = new MedNeg.Pedidos.BlPedidos();
                oPedido = new MedDAL.DAL.pedidos();
                oPedido = (MedDAL.DAL.pedidos)oblPedido.BuscarPedido(int.Parse(dgvDatos.SelectedDataKey[0].ToString()));
                
                //Llenar los campos del pedido
                txbFolio.Text = oPedido.Folio;
                txbFecha.Text = oPedido.Fecha.ToShortDateString();
                int iContador = 0;
                cmbEstatus.SelectedIndex = -1;
                foreach (ListItem elemento in cmbEstatus.Items)
                {
                    if (elemento.Value.Equals(oPedido.Estatus.ToString()))
                    {
                        elemento.Selected = true;
                    }
                    iContador++;
                }
                
                //Llenar los campos del cliente
                txbCliente.Text = oPedido.clientes.Nombre + " " + oPedido.clientes.Apellidos;
                txbDireccion.Text = oPedido.clientes.Calle + " " + oPedido.clientes.NumeroExt;
                if (oPedido.clientes.NumeroInt != null)
                {
                    txbDireccion.Text += "Int: " + oPedido.clientes.NumeroInt;
                }

               txbPoblacion.Text = oPedido.clientes.poblaciones.Nombre.ToString() + ", " + oPedido.clientes.municipios.Nombre.ToString() +", " + oPedido.clientes.estados.Nombre.ToString();

               //Lenar los datos de la partida del detalle
               oblPedido = new MedNeg.Pedidos.BlPedidos();

               //Recuperar la partida del pedido
               var oQuery = oblPedido.RecuperarPartidaPedido(oPedido.idPedido);

               //Session["lstDetallePartida"] = new List<MedNeg.Facturas.BlDetallePartida>();
               if (((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartidaPedidos"]).Count() > 0)
               {
                   ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartidaPedidos"]).Clear();
               }

               Session["sTotalFactura"] = 0;

               //0087 Variables para gestionar la carga de datos del producto o del ensamble
               string sClave;
               string sNombre;
               bool bEsEnsamble;

               //Recorrer el resultado y meterlo al datagridview
               foreach (MedDAL.DAL.pedidos_partida oDetalle in oQuery)
               {
                   //Identificar si es un producto o un ensamble
                   if (oDetalle.idEnsamble.Equals(null))
                   {
                       //Datos del producto
                       sClave = oDetalle.productos.Clave1;
                       sNombre = oDetalle.productos.Nombre;
                       bEsEnsamble = false;
                   }
                   else
                   {
                       //Datos del ensamble
                       sClave = oDetalle.ensamble.ClaveBom;
                       sNombre = oDetalle.ensamble.Descripcion;
                       bEsEnsamble = true;
                   }

                       
                   oblDetallePartida = new MedNeg.Facturas.BlDetallePartida(
                       Convert.ToInt32(oDetalle.idProducto),
                       //0087 Comentar para enviar las variables correspondientes que tienen la info del producto o ensamble
                       //oDetalle.productos.Clave1,
                       //oDetalle.productos.Nombre,
                       sClave,
                       sNombre,
                       oDetalle.Cantidad,
                       Convert.ToDecimal(oDetalle.IEPS),
                       Convert.ToDecimal(oDetalle.Iva),
                       Convert.ToDecimal(oDetalle.Precio),
                      oDetalle.Observaciones,
                       Convert.ToDecimal((oDetalle.Precio * oDetalle.Cantidad)+oDetalle.IEPS+oDetalle.Iva),
                       oDetalle.Descripcion,
                       bEsEnsamble);

                     ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartidaPedidos"]).Add(oblDetallePartida);

                     Session["sTotalFactura"] = Convert.ToDecimal(Session["sTotalFactura"]) + Convert.ToDecimal((oDetalle.Precio * oDetalle.Cantidad) + oDetalle.IEPS + oDetalle.Iva);
               }
               
                //Hacer el binding de la data al dgvDatos
               lblTotal.Text = "TOTAL:$" + Session["sTotalFactura"].ToString();
               dgvPartidaDetalle.DataBind();

                //si el estatus es 1 (Pedido) aun se pueden agregar articulos de lo contario ya no
               if (oPedido.Estatus == "1")
               {
                   HabilitaPedido();
                   Deshabilita();
               }
               else
               {
                   DeshabilitaPedido();
                   Deshabilita();
               }


            }
            else
            {
                Session["lstDetallePartidaPedidos"] = new List<MedNeg.Facturas.BlDetallePartida>();
                dgvPartidaDetalle.DataSource = ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartidaPedidos"]);
                dgvPartidaDetalle.DataBind();
                //Limpia();
                //Deshabilita();

            }
        }
Ejemplo n.º 3
0
        private void Eliminar(int iIdPedido)
        {

            //Eliminar primero la partida para la integridad referencial
            oblPedido = new MedNeg.Pedidos.BlPedidos();
            string sDatosBitacora= string.Empty;

            //Guardar los datos del pedido para la bitacora
            oPedido = new MedDAL.DAL.pedidos();
            oPedido = oblPedido.BuscarPedido(iIdPedido);

            sDatosBitacora += "Folio:" + oPedido.Folio.ToString()+" ";
            sDatosBitacora += "Fecha:" + oPedido.Fecha.ToShortDateString()+" ";
            switch (oPedido.Estatus)
            {
                case "1":
                    sDatosBitacora += "Estatus:Pedido ";
                    break;
                case "2":
                     sDatosBitacora +="Estatus:Remitido ";
                    break;
                case "3":
                    sDatosBitacora +="Estatus:Facturado ";
                    break;
                case "4":
                    sDatosBitacora += "Estatus:Cancelado ";
                    break;
            }
            
            //Recuperar la partida del pedido
            oblPedido = new MedNeg.Pedidos.BlPedidos();
            var oQuery = oblPedido.RecuperarPartidaPedido(iIdPedido);
            //Recorrer el resultado y meterlo al datagridview
            foreach (MedDAL.DAL.pedidos_partida oDetalle in oQuery)
            {
                sDatosBitacora += "Producto:" + oDetalle.productos.Nombre.ToString()+" ";
                sDatosBitacora += "Cantidad:" + oDetalle.Cantidad.ToString()+ " ";
                sDatosBitacora += "IEPS:" + oDetalle.IEPS.ToString() + " ";
                sDatosBitacora += "Iva:" + oDetalle.Iva.ToString() + " ";
                sDatosBitacora += "Precio:" + oDetalle.Precio.ToString()+ " ";
                sDatosBitacora += "Total:" + Convert.ToDecimal((oDetalle.Cantidad * oDetalle.Precio) + oDetalle.IEPS + oDetalle.Iva)+ ", ";
                sDatosBitacora += "Obs:" + oDetalle.Observaciones;

            }


            if(oblPedido.EliminarPedidoPartida(iIdPedido))
            {
                oblPedido= new MedNeg.Pedidos.BlPedidos();
                if (oblPedido.EliminarRegistro(iIdPedido))
                {
                    //lblAviso.Text = "El usuario se ha eliminado con éxito";
                    MedDAL.DAL.bitacora oBitacora = new MedDAL.DAL.bitacora();
                    MedNeg.Bitacora.BlBitacora oblBitacora = new MedNeg.Bitacora.BlBitacora();
                    oBitacora.FechaEntradaSrv = DateTime.Now;
                    oBitacora.FechaEntradaCte = DateTime.Now;//Linea Temporal
                    oBitacora.Modulo = "Pedidos";
                    oBitacora.Usuario = Session["usuario"].ToString();
                    oBitacora.Nombre = Session["nombre"].ToString();
                    oBitacora.Accion = "Eliminación de Pedido";
                    oBitacora.Descripcion = sDatosBitacora;

                    if (!oblBitacora.NuevoRegistro(oBitacora))
                    {
                        lblDatos.Text = "El evento no pudo ser registrado en la bitácora";
                    }
                }
                else
                {
                    lblDatos.Text = "No se pudo eliminar el pedido, por favor vuelva a intentarlo";  
                }

            }
            else
            {
                lblDatos.Text = "No se pudo eliminar el pedido, por favor vuelva a intentarlo";  
            }
           
        }
Ejemplo n.º 4
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";
            }
        }