///*************************************************************************************
        ///NOMBRE DE LA FUNCIÓN : Alta
        ///DESCRIPCIÓN          : Método que valida los campos obligatorios.
        ///PARÁMETROS           :
        ///CREO                 : Hugo Enrique Ramirez Aguilera
        ///FECHA_CREO           : 10 Junio 2015
        ///MODIFICO             :
        ///FECHA_MODIFICO       :
        ///CAUSA_MODIFICACIÓN   :
        ///*************************************************************************************
        private void Alta()
        {
            Cls_Cat_Lista_Deudorcad_Negocio Rs_Alta = new Cls_Cat_Lista_Deudorcad_Negocio();

            try
            {
                Rs_Alta.P_Nombre    = Txt_Nombre.Text;
                Rs_Alta.P_Lista     = Txt_Lista.Text;
                Rs_Alta.P_Operacion = Cmb_Operacion.Text;

                if (Cmb_Forma_Pago.SelectedValue.ToString() != "")
                {
                    Rs_Alta.P_Tipo_Pago = Cmb_Forma_Pago.SelectedValue.ToString();
                }
                else
                {
                    Rs_Alta.P_Tipo_Pago = "";
                }

                Rs_Alta.P_Estatus = "ACTIVO";

                Rs_Alta.Alta_Lista();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Bancos", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        ///*************************************************************************************
        ///NOMBRE DE LA FUNCIÓN : Cargar_Listas
        ///DESCRIPCIÓN          : Consulta todos los listas de la base de datos y los coloca en el DataGridView
        ///PARÁMETROS           :
        ///CREÓ                 : Hugo Enrique Ramírez Aguilera
        ///FECHA_CREO           : 11 Junio 2015
        ///MODIFICÓ             :
        ///FECHA_MODIFICO       :
        ///CAUSA_MODIFICACIÓN   :
        ///*************************************************************************************
        private void Cargar_Listas()
        {
            Cls_Cat_Lista_Deudorcad_Negocio Rs_Consulta = new Cls_Cat_Lista_Deudorcad_Negocio();
            DataTable Dt_Consulta = new DataTable();

            try
            {
                Dt_Consulta           = Rs_Consulta.Consultar_Listas();
                Grid_Lista.DataSource = Dt_Consulta;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Cargar_Listas", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        ///*******************************************************************************
        ///NOMBRE DE LA FUNCIÓN : Alta_Bancos
        ///DESCRIPCIÓN          : Registra un nuevo banco en la base de datos
        ///PARÁMETROS           : P_Banco que contiene la informacion de el nuevo banco
        ///CREÓ                 : Héctor Gabriel Galicia Luna
        ///FECHA_CREO           : 10 Octubre 2013
        ///MODIFICÓ             :
        ///FECHA_MODIFICO       :
        ///CAUSA_MODIFICACIÓN   :
        ///*******************************************************************************
        public static Boolean Alta_Lista(Cls_Cat_Lista_Deudorcad_Negocio Datos)
        {
            StringBuilder Mi_SQL = new StringBuilder(); // Variable para almacenar el query a ejecutar en la base de datos.
            Boolean       Alta   = false;               // Variable que se utiliza para indicar si se realiza la ejecución del query.
            String        Lista_Id;                     // Variable que almacena el valor del nuevo ID.

            try
            {
                Lista_Id = Cls_Metodos_Generales.Obtener_ID_Consecutivo(Cat_Lista_Deudorcad.Tabla, Cat_Lista_Deudorcad.Campo_Lista_Id, "", 5);
                Conexion.Iniciar_Helper();
                Conexion.HelperGenerico.Conexion_y_Apertura();


                // formar consulta
                Mi_SQL.Append("INSERT INTO " + Cat_Lista_Deudorcad.Tabla + "(");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Lista_Id + ",");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Nombre + ",");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Lista + ",");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Operacion + ",");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Tipo_Pago + ",");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Estatus + ",");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Usuario_Creo + ",");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Fecha_Creo);
                Mi_SQL.Append(") VALUES (");
                Mi_SQL.Append("'" + Lista_Id + "',");
                Mi_SQL.Append("'" + Datos.P_Nombre + "',");
                Mi_SQL.Append("'" + Datos.P_Lista + "',");
                Mi_SQL.Append("'" + Datos.P_Operacion + "',");
                Mi_SQL.Append("'" + Datos.P_Tipo_Pago + "',");
                Mi_SQL.Append("'" + Datos.P_Estatus + "',");
                Mi_SQL.Append("'" + MDI_Frm_Apl_Principal.Nombre_Usuario + "',");
                Mi_SQL.Append(Cls_Ayudante_Sintaxis.Fecha() + ")");
                Conexion.HelperGenerico.Ejecutar_NonQuery(Mi_SQL.ToString());
                Alta = true;
            }
            catch (Exception e)
            {
                Alta = false;
                throw new Exception("Alta de Banco : " + e.Message);
            }
            finally
            {
                Conexion.HelperGenerico.Cerrar_Conexion();
            }

            return(Alta);
        }
        ///*************************************************************************************
        ///NOMBRE DE LA FUNCIÓN : Modificar
        ///DESCRIPCIÓN          : Método que valida los campos obligatorios.
        ///PARÁMETROS           :
        ///CREO                 : Hugo Enrique Ramirez Aguilera
        ///FECHA_CREO           : 10 Junio 2015
        ///MODIFICO             :
        ///FECHA_MODIFICO       :
        ///CAUSA_MODIFICACIÓN   :
        ///*************************************************************************************
        private void Modificar()
        {
            Cls_Cat_Lista_Deudorcad_Negocio Rs_Modificar = new Cls_Cat_Lista_Deudorcad_Negocio();

            try
            {
                Rs_Modificar.P_Lista_Id  = Txt_Lista_Id.Text;
                Rs_Modificar.P_Nombre    = Txt_Nombre.Text;
                Rs_Modificar.P_Lista     = Txt_Lista.Text;
                Rs_Modificar.P_Operacion = Cmb_Operacion.Text;
                Rs_Modificar.P_Tipo_Pago = Cmb_Forma_Pago.SelectedValue.ToString();
                Rs_Modificar.P_Estatus   = Cmb_Estatus.Text;
                Rs_Modificar.Modificar_Lista();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Bancos", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        ///*******************************************************************************
        ///NOMBRE DE LA FUNCIÓN : Modificar_Lista
        ///DESCRIPCIÓN          : Registra un nuevo banco en la base de datos
        ///PARÁMETROS           : P_Banco que contiene la informacion de el nuevo banco
        ///CREÓ                 : Héctor Gabriel Galicia Luna
        ///FECHA_CREO           : 10 Octubre 2013
        ///MODIFICÓ             :
        ///FECHA_MODIFICO       :
        ///CAUSA_MODIFICACIÓN   :
        ///*******************************************************************************
        public static Boolean Modificar_Lista(Cls_Cat_Lista_Deudorcad_Negocio Datos)
        {
            StringBuilder Mi_SQL = new StringBuilder(); // Variable para almacenar el query a ejecutar en la base de datos.
            Boolean       Alta   = false;               // Variable que se utiliza para indicar si se realiza la ejecución del query.

            try
            {
                Conexion.Iniciar_Helper();
                Conexion.HelperGenerico.Conexion_y_Apertura();


                // formar consulta
                Mi_SQL.Append("UPDATE " + Cat_Lista_Deudorcad.Tabla + " SET ");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Lista + " = '" + Datos.P_Lista + "',");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Nombre + " = '" + Datos.P_Nombre + "',");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Tipo_Pago + " = '" + Datos.P_Tipo_Pago + "',");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Operacion + " = '" + Datos.P_Operacion + "',");
                Mi_SQL.Append(Cat_Lista_Deudorcad.Campo_Estatus + " = '" + Datos.P_Estatus + "'");

                //  seccion where
                Mi_SQL.Append(" where " + Cat_Lista_Deudorcad.Campo_Lista_Id + " = '" + Datos.P_Lista_Id + "'");

                Conexion.HelperGenerico.Ejecutar_NonQuery(Mi_SQL.ToString());
                Alta = true;
            }
            catch (Exception e)
            {
                Alta = false;
                throw new Exception("Alta de Banco : " + e.Message);
            }
            finally
            {
                Conexion.HelperGenerico.Cerrar_Conexion();
            }

            return(Alta);
        }
        ///******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);
            }
        }
        ///*******************************************************************************
        ///NOMBRE DE LA FUNCIÓN : Consultar_Bancos
        ///DESCRIPCIÓN          : Consulta los bancos registrados en la base de datos
        ///PARÁMETROS           : P_Banco que contiene la informacion de los bancos a consultar
        ///CREÓ                 : Héctor Gabriel Galicia Luna
        ///FECHA_CREO           : 10 Octubre 2013
        ///MODIFICÓ             :
        ///FECHA_MODIFICO       :
        ///CAUSA_MODIFICACIÓN   :
        ///*******************************************************************************
        public static System.Data.DataTable Consultar_Listas(Cls_Cat_Lista_Deudorcad_Negocio Datos)
        {
            StringBuilder Mi_SQL = new StringBuilder(); // Variable para almacenar el query a ejecutar en la base de datos.

            try
            {
                Conexion.Iniciar_Helper();
                Conexion.HelperGenerico.Conexion_y_Apertura();

                Mi_SQL.Append("select * from " + Cat_Lista_Deudorcad.Tabla);

                //  filtro lista id
                if (!String.IsNullOrEmpty(Datos.P_Lista_Id))
                {
                    if (Mi_SQL.ToString().Contains("where"))
                    {
                        Mi_SQL.Append(" and " + Cat_Lista_Deudorcad.Campo_Lista_Id + " = '" + Datos.P_Lista_Id + "'");
                    }
                    else
                    {
                        Mi_SQL.Append(" where " + Cat_Lista_Deudorcad.Campo_Lista_Id + " = '" + Datos.P_Lista_Id + "'");
                    }
                }

                //  filtro lista
                if (!String.IsNullOrEmpty(Datos.P_Lista))
                {
                    if (Mi_SQL.ToString().Contains("where"))
                    {
                        Mi_SQL.Append(" and " + Cat_Lista_Deudorcad.Campo_Lista + " = '" + Datos.P_Lista + "'");
                    }
                    else
                    {
                        Mi_SQL.Append(" where " + Cat_Lista_Deudorcad.Campo_Lista + " = '" + Datos.P_Lista + "'");
                    }
                }

                //  filtro nombre
                if (!String.IsNullOrEmpty(Datos.P_Nombre))
                {
                    if (Mi_SQL.ToString().Contains("where"))
                    {
                        Mi_SQL.Append(" and " + Cat_Lista_Deudorcad.Campo_Nombre + " like '%" + Datos.P_Nombre + "%'");
                    }
                    else
                    {
                        Mi_SQL.Append(" where " + Cat_Lista_Deudorcad.Campo_Nombre + " like '%" + Datos.P_Nombre + "%'");
                    }
                }

                //  filtro tipo
                if (!String.IsNullOrEmpty(Datos.P_Tipo_Pago))
                {
                    if (Mi_SQL.ToString().Contains("where"))
                    {
                        Mi_SQL.Append(" and " + Cat_Lista_Deudorcad.Campo_Tipo_Pago + " = '" + Datos.P_Tipo_Pago + "'");
                    }
                    else
                    {
                        Mi_SQL.Append(" where " + Cat_Lista_Deudorcad.Campo_Tipo_Pago + " = '" + Datos.P_Tipo_Pago + "'");
                    }
                }

                //  filtro operacion
                if (!String.IsNullOrEmpty(Datos.P_Operacion))
                {
                    if (Mi_SQL.ToString().Contains("where"))
                    {
                        Mi_SQL.Append(" and " + Cat_Lista_Deudorcad.Campo_Operacion + " = '" + Datos.P_Operacion + "'");
                    }
                    else
                    {
                        Mi_SQL.Append(" where " + Cat_Lista_Deudorcad.Campo_Operacion + " = '" + Datos.P_Operacion + "'");
                    }
                }

                //  filtro estatus
                if (!String.IsNullOrEmpty(Datos.P_Estatus))
                {
                    if (Mi_SQL.ToString().Contains("where"))
                    {
                        Mi_SQL.Append(" and " + Cat_Lista_Deudorcad.Campo_Estatus + " = '" + Datos.P_Estatus + "'");
                    }
                    else
                    {
                        Mi_SQL.Append(" where " + Cat_Lista_Deudorcad.Campo_Estatus + " = '" + Datos.P_Estatus + "'");
                    }
                }

                return(Conexion.HelperGenerico.Obtener_Data_Table(Mi_SQL.ToString()));
            }
            catch (Exception e)
            {
                throw new Exception("Consulta de Bancos : " + e.Message);
            }
            finally
            {
                Conexion.HelperGenerico.Cerrar_Conexion();
            }
        }