/// <summary>
        /// Carga los detalles de la receta
        /// </summary>
        private void CargaReceta(string sFolio)
        {
            ////TODO: GT Paso 2: Cuando se recibe una receta para facturar

            //objeto que contiene la receta
            string sRutaArchivoConfig = Server.MapPath("~/Archivos/Configuracion.xml");
            MedDAL.DAL.recetas oReceta = new MedDAL.DAL.recetas();
            MedNeg.Recetas.BlRecetas oblReceta = new MedNeg.Recetas.BlRecetas();
            
            MedNeg.Configuracion.BlConfiguracion oblConfiguracion = new MedNeg.Configuracion.BlConfiguracion();
            MedDAL.Configuracion.DALConfiguracion odalConfiguracion = new MedDAL.Configuracion.DALConfiguracion();

            odalConfiguracion = (MedDAL.Configuracion.DALConfiguracion)oblConfiguracion.CargaDatos(sRutaArchivoConfig);

                   
            /**************** Registrar la partida de la factura *****************/

            //Llenar los datos de la partida de la remisión
            oblReceta = new MedNeg.Recetas.BlRecetas();

            //Recuperar datos de la receta mediante el folio enviado
            oReceta = oblReceta.BuscarRecetaFolio(sFolio);

            //Recuperar la partida del pedido
            var oQuery = oblReceta.RecuperarPartidaRecetas(oReceta.idReceta);
            int iIndiceElemento;
            decimal dGastoAdministracion=0;

            //Recorrer el resultado y meterlo al datagridview
            foreach (MedDAL.DAL.recetas_partida oDetalle in oQuery)
            {
                //Buscar si ya existe el producto en la lista, si es así entonces solo se modifica la cantidad surtida,
                //de lo contrario entonces se crea un renglon nuevo y se incrementa el contador

                iIndiceElemento = lstDetalleReceta.FindIndex(det => det.iIdProducto == oDetalle.idProducto);
                if (iIndiceElemento > -1)
                {
                    lstDetalleReceta[iIndiceElemento].dCantidad += Convert.ToDecimal(oDetalle.CantidaSurtida);
                }
                else
                {
                    //Identificar que precio o monto se debe de enviar acorde a los filtros
                    //si es por gasto de admon relacionado al producto se toma el campo 9
                    if (chkGtoAdmon.Checked == true && rblGenerarFacturaTipo.SelectedValue=="1")
                        dGastoAdministracion = Convert.ToDecimal(oDetalle.productos.Campo9);
                    if (chkMonto.Checked == true && rblGenerarFacturaTipo.SelectedValue == "1")
                        dGastoAdministracion = Convert.ToDecimal(txbMonto.Text);
                    if (chkPorcentaje.Checked == true && rblGenerarFacturaTipo.SelectedValue == "1")
                        dGastoAdministracion = Convert.ToDecimal(oDetalle.Precio * (Convert.ToDecimal(txbPorcentaje.Text) / 100));
                    

                    MedNeg.Facturas.BlDetalleFacturaReceta oblDetallePartida = new MedNeg.Facturas.BlDetalleFacturaReceta(
                        Convert.ToInt32(oDetalle.idProducto),
                        oDetalle.productos.Clave1,
                        oDetalle.productos.Nombre,
                        Convert.ToDecimal(oDetalle.CantidaSurtida),
                        Convert.ToDecimal(oDetalle.productos.TasaIeps),
                        Convert.ToDecimal(oDetalle.productos.tipo_iva.Iva),
                        dGastoAdministracion,
                        Convert.ToDecimal(oDetalle.Precio),
                        "",
                        Convert.ToDecimal(0),
                        oDetalle.idLineaCredito,
                        oReceta.idReceta);
                    
                    lstDetalleReceta.Add(oblDetallePartida);
                    iContadorRenglones++;
                }


                //Saber si ya se va a mandar a facturar
                if (iContadorRenglones == odalConfiguracion.iNoMaxRenglonesFactura && cmbModoFactura.SelectedValue == "1")
                {
                    CrearFactura(lstDetalleReceta, 1);
                    
                    //Re iniciar contadores y listas
                    iContadorRenglones = 0;
                    lstDetalleReceta.Clear();
                }

            }

            //Si al terminar el foreach el contador de renglones es menor a odalConfiguracion.iNoMaxRenglonesFactura
            //quiere decir que quedan reglones por facturar es por eso que se requiere nuevamente esta validación
            if (iContadorRenglones < odalConfiguracion.iNoMaxRenglonesFactura && cmbModoFactura.SelectedValue == "1")
            {
                CrearFactura(lstDetalleReceta, 1);

                //Re iniciar contadores y listas
                iContadorRenglones = 0;
                lstDetalleReceta.Clear();
            }

            //JID Si el modo de factura es electronico, hace el proceso con la lista completa
            if (cmbModoFactura.SelectedValue == "2")
            {
                CrearFactura(lstDetalleReceta, 2);

                //Re iniciar contadores y listas
                iContadorRenglones = 0;
                lstDetalleReceta.Clear();
            }

      }
        /// <summary>
        /// Carga los detalles de la receta
        /// </summary>
        private void CargaReceta(string sFolio)
        {
            //objeto que contiene la receta
            MedDAL.DAL.recetas oReceta = new MedDAL.DAL.recetas();
            MedNeg.Recetas.BlRecetas oblReceta = new MedNeg.Recetas.BlRecetas();

            oReceta = oblReceta.BuscarRecetaFolio(sFolio);

            //Recuperar el id de la receta y del usuario
            Session["sIdReceta"] = oReceta.idReceta;


            //Llenar los campos del cliente
            try
            {

                txbCliente.Text = oReceta.clientes.Nombre + " " + oReceta.clientes.Apellidos;
                txbDireccion.Text = oReceta.clientes.Calle + " " + oReceta.clientes.NumeroExt;
                if (oReceta.clientes.NumeroInt != null)
                {
                    txbDireccion.Text += "Int: " + oReceta.clientes.NumeroInt;
                }

                txbPoblacion.Text = oReceta.clientes.poblaciones.Nombre.ToString() + ", " + oReceta.clientes.municipios.Nombre.ToString() + ", " + oReceta.clientes.estados.Nombre.ToString();
                Session["sIdCliente"] = oReceta.idCliente;
            }
            catch
            {
                //En caso de que no tenga un cliente registrado
                txbCliente.Text = "";
                txbDireccion.Text = "";
                txbPoblacion.Text = "";
            }

            //Llenar los datos de la partida de la remisión
            oblReceta = new MedNeg.Recetas.BlRecetas();

            //Recuperar la partida del pedido
            var oQuery = oblReceta.RecuperarPartidaRecetas(oReceta.idReceta);
            if (((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Count() > 0)
            {
                ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Clear();
            }

            Session["sTotalFactura"] = 0;
            //Recorrer el resultado y meterlo al datagridview
            foreach (MedDAL.DAL.recetas_partida oDetalle in oQuery)
            {
                oblDetallePartida = new MedNeg.Facturas.BlDetallePartida(
                    Convert.ToInt32(oDetalle.idProducto),
                    oDetalle.productos.Clave1,
                    oDetalle.productos.Nombre,
                    Convert.ToDecimal(oDetalle.CantidaSurtida),
                    Convert.ToDecimal(oDetalle.productos.TasaIeps),
                    Convert.ToDecimal(oDetalle.productos.tipo_iva.Iva),
                    Convert.ToDecimal(oDetalle.Precio),
                   "",
                  Convert.ToDecimal((oDetalle.Precio * oDetalle.CantidaSurtida) + oDetalle.productos.tipo_iva.Iva));

                ((List<MedNeg.Facturas.BlDetallePartida>)Session["lstDetallePartida"]).Add(oblDetallePartida);
                Session["sTotalFactura"] = Convert.ToDecimal(Session["sTotalFactura"]) + Convert.ToDecimal((oDetalle.Precio * oDetalle.CantidaSurtida) + oDetalle.productos.tipo_iva.Iva);
            }

            //Hacer el binding de la data al dgvDatos
            lblTotal.Text = "TOTAL:$" + Session["sTotalFactura"].ToString();
            dgvPartidaDetalle.DataBind();

        }