/// <summary>
        /// Lee la información fiscal cuyo Id sea el que coincide con la empresa
        /// </summary>
        /// <param name="pId_customer">Id de la empresa</param>
        /// <returns>regresa un tipo de dato class_Fiscal</returns>
        public static class_Fiscal LeerFiscal(int pId_customer)
        {
            MySqlCommand    select  = new MySqlCommand(string.Format("select * from  tbl_clt_fiscal where Id_cliente= '{0}'", pId_customer), syscom_dbcon.AbrirConexion());
            MySqlDataReader _lector = select.ExecuteReader();

            if (_lector.Read())
            {
                class_Fiscal cliente = new class_Fiscal();

                cliente.RFC              = _lector.GetString("RFC");
                cliente.Razon_social     = _lector.GetString("Razon_social");
                cliente.Regimen          = _lector.GetString("Regimen");
                cliente.Nombre_comercial = _lector.GetString("Nombre_comercial");
                cliente.Calle            = _lector.GetString("Calle");
                cliente.Numero_ext       = _lector.GetInt32("Numero_ext");
                cliente.Numero_int       = _lector.GetInt32("Numero_int");
                cliente.Colonia          = _lector.GetString("Colonia");
                cliente.Municipio        = _lector.GetString("Municipio");
                cliente.Estado           = _lector.GetString("Estado");
                cliente.CP = _lector.GetString("CP");
                cliente.email_facturacion = _lector.GetString("email_facturacion");

                class_customer clienteBase = syscom_dbcon.LeerCustomer(pId_customer);
                cliente.Id_customer = clienteBase.Id_customer;
                cliente.Nombre      = clienteBase.Nombre;
                cliente.Id_sector   = clienteBase.Id_sector;
                cliente.Profit      = clienteBase.Profit;
                cliente.Fecha_alta  = clienteBase.Fecha_alta;

                return(cliente);
            }

            return(null);
        }
        /// <summary>
        /// Busqueda de Datos fiscales dado un cliente
        /// </summary>
        /// <param name="pcliente_Base">Instancia de class_custommer</param>
        /// <returns>regresa una class_Fiscal con los datos Fiscales</returns>
        public static class_Fiscal BuscarDatoFiscal(int pId_customer)
        {
            class_Fiscal    datos_fiscales = new class_Fiscal();
            MySqlCommand    select         = new MySqlCommand(string.Format(@"select * from tbl_clt_fiscal where Id_cliente='{0}';", pId_customer), syscom_dbcon.AbrirConexion());
            MySqlDataReader _lector        = select.ExecuteReader();

            if (_lector.Read())
            {
                datos_fiscales.RFC              = _lector.GetString("RFC");
                datos_fiscales.Razon_social     = _lector.GetString("Razon_social");
                datos_fiscales.Regimen          = _lector.GetString("Regimen");
                datos_fiscales.Nombre_comercial = _lector.GetString("Nombre_comercial");
                datos_fiscales.Calle            = _lector.GetString("Calle");
                datos_fiscales.Numero_ext       = _lector.GetInt32("Numero_ext");
                datos_fiscales.Numero_int       = _lector.GetInt32("Numero_int");
                datos_fiscales.Colonia          = _lector.GetString("Colonia");
                datos_fiscales.Municipio        = _lector.GetString("Municipio");
                datos_fiscales.Estado           = _lector.GetString("Estado");
                datos_fiscales.CP = _lector.GetString("CP");
                datos_fiscales.email_facturacion = _lector.GetString("email_facturacion");
                return(datos_fiscales);
            }

            return(null);
        }
        private void btn_guardar_fiscal_Click(object sender, EventArgs e)
        {
            DataGridViewRow row            = dataGridFiscal.Rows[0];
            class_Fiscal    datos_Fiscales = syscom_dbcon.BuscarDatoFiscal(this.gglobalCustomer.Id_customer);

            if (datos_Fiscales == null)
            {
                //Insert
                datos_Fiscales = new class_Fiscal(this.gglobalCustomer, row.Cells["RFC"].Value.ToString(), row.Cells["Razon_social"].Value.ToString(),
                                                  row.Cells["Regimen"].Value.ToString(), row.Cells["Nombre_comercial"].Value.ToString(), row.Cells["Calle"].Value.ToString(),
                                                  int.Parse(row.Cells["Numero_ext"].Value.ToString()), int.Parse(row.Cells["Numero_int"].Value.ToString()), row.Cells["Colonia"].Value.ToString(),
                                                  row.Cells["Municipio"].Value.ToString(), row.Cells["Estado"].Value.ToString(), row.Cells["CP"].Value.ToString(),
                                                  row.Cells["email_facturacion"].Value.ToString());

                if (syscom_dbcon.InsertarDatoFiscal(datos_Fiscales) != 0)
                {
                    statusMessage("Datos fiscales insertados con exito", 100);
                    return;
                }
                statusMessage("Error al insertar datos fiscales", 50);
                return;
            }
            //Update
            datos_Fiscales = new class_Fiscal(this.gglobalCustomer, row.Cells["RFC"].Value.ToString(), row.Cells["Razon_social"].Value.ToString(),
                                              row.Cells["Regimen"].Value.ToString(), row.Cells["Nombre_comercial"].Value.ToString(), row.Cells["Calle"].Value.ToString(),
                                              int.Parse(row.Cells["Numero_ext"].Value.ToString()), int.Parse(row.Cells["Numero_int"].Value.ToString()), row.Cells["Colonia"].Value.ToString(),
                                              row.Cells["Municipio"].Value.ToString(), row.Cells["Estado"].Value.ToString(), row.Cells["CP"].Value.ToString(),
                                              row.Cells["email_facturacion"].Value.ToString());
            if (syscom_dbcon.ActualizarDatoFiscal(datos_Fiscales) != 0)
            {
                statusMessage("Actualización de datos fiscales con exito", 100);
                return;
            }
            statusMessage("Error al actualizar los datos fiscales", 50);
        }
        /// <summary>
        /// Agrega los datos fiscales a la base de datos mediante el objeto class_Fiscal que proporciones
        /// </summary>
        /// <param name="pFiscales">Variable class_Fiscal</param>
        /// <returns>Número diferente a 0 si es correcto el insert</returns>
        public static int InsertarDatoFiscal(class_Fiscal pFiscales)
        {
            int          retorno = 0;
            MySqlCommand insert  = new MySqlCommand(string.Format("Insert into tbl_clt_fiscal(Id_cliente, RFC, Razon_social, Regimen, Nombre_comercial, Calle, Numero_ext, Numero_int, Colonia, Municipio, Estado, CP, email_facturacion) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}')", pFiscales.Id_customer, pFiscales.RFC, pFiscales.Razon_social, pFiscales.Regimen, pFiscales.Nombre_comercial, pFiscales.Calle, pFiscales.Numero_ext, pFiscales.Numero_int, pFiscales.Colonia, pFiscales.Municipio, pFiscales.Estado, pFiscales.CP, pFiscales.email_facturacion), syscom_dbcon.AbrirConexion());

            retorno = insert.ExecuteNonQuery();
            return(retorno);
        }
        //Tiene fallas el codigo dentro de la sintaxis del query.
        public static int ActualizarDatoFiscal(class_Fiscal pFiscales)
        {
            int          retorno = 0;
            MySqlCommand insert  = new MySqlCommand(string.Format(@"UPDATE tbl_clt_fiscal SET RFC='{0}', Razon_social='{1}', Regimen='{2}', " +
                                                                  "Nombre_comercial='{3}', Calle='{4}', Numero_ext='{5}', Numero_int='{6}', Colonia='{7}', Municipio='{8}', Estado='{9}'," +
                                                                  " CP='{10}', email_facturacion='{11}' WHERE Id_cliente='{12}';)", pFiscales.RFC, pFiscales.Razon_social, pFiscales.Regimen,
                                                                  pFiscales.Nombre_comercial, pFiscales.Calle, pFiscales.Numero_ext, pFiscales.Numero_int, pFiscales.Colonia, pFiscales.Municipio,
                                                                  pFiscales.Estado, pFiscales.CP, pFiscales.email_facturacion, pFiscales.Id_customer), syscom_dbcon.AbrirConexion());

            retorno = insert.ExecuteNonQuery();
            return(retorno);
        }
        private void dataGridCustomer_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            int i       = 0;//Iterador de ciclos
            int renglon = e.RowIndex;

            if (renglon < 0)
            {
                return;
            }

            //Codigo para leer e insertar al datagrid de datos fiscales los datos según el cliente seleccionado en el datagrid de clientes
            this.gglobalCustomer = syscom_dbcon.LeerCustomer((int)dataGridCustomer.Rows[renglon].Cells["Id_customer"].Value);

            //llenar datos en datagrid datos fiscales
            class_Fiscal datos_fiscales = syscom_dbcon.LeerFiscal(this.gglobalCustomer.Id_customer);

            if (datos_fiscales != null)
            {
                dataGridFiscal.Rows.Clear();
                dataGridFiscal.Rows.Add(datos_fiscales.RFC, datos_fiscales.Razon_social, datos_fiscales.Regimen, datos_fiscales.Nombre_comercial, datos_fiscales.Calle, datos_fiscales.Numero_ext, datos_fiscales.Numero_int, datos_fiscales.Colonia, datos_fiscales.Municipio, datos_fiscales.Estado, datos_fiscales.CP, datos_fiscales.email_facturacion);
                statusMessage("Datos fiscales de " + this.gglobalCustomer.Nombre + " cargardos", 100);
            }

            //llenar datos en datagrid contactos
            List <class_cliente> Lista_clientes = syscom_dbcon.LeerContactos(this.gglobalCustomer.Id_customer);

            if (Lista_clientes != null)
            {
                dataGridContactos.Rows.Clear();
                while (i < Lista_clientes.Count)
                {
                    dataGridContactos.Rows.Add(Lista_clientes[i].Id_persona, Lista_clientes[i].Nombres, Lista_clientes[i].Apellido_Paterno, Lista_clientes[i].Apellido_Materno, Lista_clientes[i].Puesto, Lista_clientes[i].Correo, Lista_clientes[i].Tel_oficina, Lista_clientes[i].Celular, Lista_clientes[i].Tel_movil1);
                    i++;
                }
            }
            i = 0;

            //llenar datos en datagrid proyectos
            List <Class_proyecto> Lista_proyectos = syscom_dbcon.LeerProyectos(this.gglobalCustomer.Id_customer);

            if (Lista_proyectos != null)
            {
                dataGridProyectos.Rows.Clear();
                while (i < Lista_clientes.Count)
                {
                    dataGridContactos.Rows.Add(Lista_proyectos[i].Id_proyecto, Lista_proyectos[i].Nombre, Lista_proyectos[i].Comentarios, Lista_proyectos[i].FechaAlta, Lista_proyectos[i].Evaluacion, Lista_proyectos[i].Precio, Lista_proyectos[i].Estado_viabilidad);
                    i++;
                }
            }
            i = 0;
        }