///******b*************************************************************************
        ///NOMBRE DE LA FUNCIÓN : Btn_Facturar_Click
        ///DESCRIPCIÓN          :Realiza la solicitud de facturacion
        ///PARAMETROS           :
        ///CREO                 : Hugo Enrique Ramírez Aguilera
        ///FECHA_CREO           : 27/Febrero/2015
        ///MODIFICO             :
        ///FECHA_MODIFICO       :
        ///CAUSA_MODIFICACIÓN   :
        ///*******************************************************************************
        private void Btn_Facturar_Click(object sender, EventArgs e)
        {
            Cls_Apl_Parametros_Negocio      Consulta_Parametros = new Cls_Apl_Parametros_Negocio();
            Cls_Cat_Lista_Deudorcad_Negocio Rs_Consulta_Listas  = new Cls_Cat_Lista_Deudorcad_Negocio();

            var Obj_Parametros = new Cls_Apl_Parametros_Negocio();
            Cls_Ope_Solicitud_Facturacion_Negocio Rs_Alta = new Cls_Ope_Solicitud_Facturacion_Negocio();
            DataTable Dt_Consulta = new DataTable();
            DataTable Dt_Venta    = new DataTable();
            DataTable Dt_Consulta_Lista_Deudorcad = new DataTable();
            DataTable Dt_Pagos = new DataTable();

            String Concepto = "";
            Double Importe  = 0;
            String No_Venta = "";

            DataRow   Dr_Ventas;
            DataTable Dt_Ventas_Clasificacion = new DataTable();
            Boolean   Estado_Conexcion        = false;

            try
            {
                Rs_Alta.P_Imagen_Bits = "";// se agrega la imagen de los parametros en forma de bits

                if (!String.IsNullOrEmpty(Txt_Curp.Text) && Grid_Venta.Rows.Count > 0)
                {
                    if (Estatus_Conexion == true)
                    {
                        Estado_Conexcion = true;
                    }
                    else
                    {
                        Estado_Conexcion = false;
                    }

                    #region Parametros
                    Consulta_Parametros.P_Parametro_Id = "00001";
                    Dt_Consulta = Consulta_Parametros.Consultar_Parametros();
                    Rs_Alta.P_Lista_Parametros = Dt_Consulta.Rows[0][Cat_Parametros.Campo_Lista_Deudorcad].ToString();
                    Rs_Alta.P_Tipo_Parametro   = Dt_Consulta.Rows[0][Cat_Parametros.Campo_Tipo_Deudorcad].ToString();
                    Rs_Alta.P_Clave_Venta      = Dt_Consulta.Rows[0][Cat_Parametros.Campo_Clave_Venta_Individual_Deudorcad].ToString();
                    Rs_Alta.P_Dt_Parametros    = Dt_Consulta;
                    #endregion

                    #region listas deudorcad
                    Rs_Consulta_Listas.P_Operacion = "Venta individual";
                    Rs_Consulta_Listas.P_Estatus   = "ACTIVO";
                    Dt_Consulta_Lista_Deudorcad    = Rs_Consulta_Listas.Consultar_Listas();
                    Rs_Alta.P_Dt_Listas_Deudorcad  = Dt_Consulta_Lista_Deudorcad;


                    //  se construira la tabla con la informacion de las ventas correspondientes a las formas de pago que se encuentren en las listas


                    #endregion

                    Rs_Alta.P_Curp          = Txt_Curp.Text;
                    Rs_Alta.P_Tipo          = Txt_Referencia1.Text;
                    Rs_Alta.P_Lista         = Txt_Referencia2.Text;
                    Rs_Alta.P_Cuenta_Momias = (!String.IsNullOrEmpty(Txt_Rfc.Text)) ? Txt_Rfc.Text : Txt_Curp.Text;

                    Rs_Alta.P_Grid_Ventas = Grid_Venta;

                    //  se realiza el proceso para la utilizacion del catalogo de listas del deudorcad
                    if (Dt_Consulta_Lista_Deudorcad != null && Dt_Consulta_Lista_Deudorcad.Rows.Count > 0)
                    {
                        foreach (DataGridViewRow Registro in Grid_Venta.Rows)
                        {
                            No_Venta  = Registro.Cells["No_Venta"].Value.ToString();
                            Concepto += Registro.Cells["Cantidad"].Value.ToString() + "-$" + Registro.Cells["costo_Producto"].Value.ToString() + ",";
                        }

                        //  se remueve la ultima coma
                        if (Concepto.Length > 0)
                        {
                            Concepto = Concepto.Remove(Concepto.Length - 1);
                        }

                        //  se consultan los pagos registrados
                        Rs_Alta.P_No_Venta = No_Venta;
                        Dt_Pagos           = Rs_Alta.ConsultarPagos_Venta_Individual();

                        //  se genera la tabla de las ventas por tipo de lista
                        Dt_Ventas_Clasificacion.Columns.Add("clave_venta_Lista");
                        Dt_Ventas_Clasificacion.Columns.Add("importe");
                        Dt_Ventas_Clasificacion.Columns.Add("concepto2");


                        foreach (DataRow Registro_Listas in Dt_Consulta_Lista_Deudorcad.Rows)
                        {
                            foreach (DataRow Registro_Pagos in Dt_Pagos.Rows)
                            {
                                //  se obtiene los conceptos de los ventas
                                if (Registro_Listas["Tipo_Pago"].ToString() == Registro_Pagos["Forma_Id"].ToString())
                                {
                                    Importe = Convert.ToDouble(Registro_Pagos["Monto_Pago"].ToString());
                                }
                            }

                            if (Importe > 0)
                            {
                                Dr_Ventas = Dt_Ventas_Clasificacion.NewRow();

                                Dr_Ventas["clave_venta_Lista"] = Registro_Listas["Lista"].ToString();
                                Dr_Ventas["importe"]           = Importe;
                                Dr_Ventas["concepto2"]         = Concepto;

                                Dt_Ventas_Clasificacion.Rows.Add(Dr_Ventas);
                                Dt_Ventas_Clasificacion.AcceptChanges();

                                Importe = 0;
                            }
                        }

                        Rs_Alta.P_Dt_Ventas_Clasificacion = Dt_Ventas_Clasificacion;
                        Rs_Alta.P_No_Venta = No_Venta;
                        Rs_Alta.Insertar_Solicitud_Catalogo_Listas();
                    }
                    else//  metodo original de los parametros del punto de venta
                    {
                        foreach (DataGridViewRow Registro in Grid_Venta.Rows)
                        {
                            Importe         = Importe + Convert.ToDouble(Registro.Cells["Total"].Value.ToString());
                            No_Venta        = Registro.Cells["No_Venta"].Value.ToString();
                            Concepto       += Registro.Cells["Cantidad"].Value.ToString() + "-$" + Registro.Cells["costo_Producto"].Value.ToString() + ",";
                            Rs_Alta.P_Caja  = Registro.Cells["Nombre_Caja"].Value.ToString();
                            Rs_Alta.P_Turno = Registro.Cells["Turno"].Value.ToString();
                        }

                        //  se remueve la ultima coma
                        if (Concepto.Length > 0)
                        {
                            Concepto = Concepto.Remove(Concepto.Length - 1);
                        }

                        Rs_Alta.P_Importe   = Importe.ToString();
                        Rs_Alta.P_Concepto2 = Concepto;
                        Rs_Alta.P_No_Venta  = No_Venta;

                        if (Estado_Conexcion == true)
                        {
                            Rs_Alta.Insertar_Solicitud();
                            Rs_Alta.Actualizar_Estatus_Facturacion();
                        }
                        else
                        {
                            Rs_Alta.Insertar_Solicitud_Local();
                        }
                    }


                    MessageBox.Show(this, "Se ingreso la facturación de manera correcta", "Validación", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    Cls_Metodos_Generales.Limpia_Controles(this);
                    Grid_Venta.DataSource = new DataTable();
                }
                else if (String.IsNullOrEmpty(Txt_Curp.Text))
                {
                    MessageBox.Show(this, "Ingrese la informacion del contribuyente", "Validación", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else if (Grid_Venta.Rows.Count > 0)
                {
                    MessageBox.Show(this, "Ingrese la informacion de la venta", "Validación", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception Ex)
            {
                MessageBox.Show(this, Ex.Message, "Error - Método: [Btn_Facturar_Click]", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }