void Proceso_Grabacion()
        {
            int     c            = 1;
            int     Total_Reg    = 0;
            decimal SIdProveedor = 0;
            string  SNom_Prov    = "";


            BindingList <cl_estado_grabacion> ListEstadoGrabacion = new BindingList <cl_estado_grabacion>();

            try
            {
                string MensajeLog     = "Ingreso Exitoso.";
                string MensajeWarning = "";
                string listaLog       = "";
                this.rtbLog.Text = "";
                bool    flagSinError      = true;
                bool    flagNuevoEmpleado = true;
                bool    flagNuevaPersona  = true;
                decimal IdProveedor       = 0;
                decimal idPersona         = 0;
                string  cedula            = "";
                int     IdEmpresa         = param.IdEmpresa;
                lblMensaje.Text    = "";
                lblMensaje.Visible = false;

                gridControl_estado_grab_x_proveedor.DataSource = ListEstadoGrabacion;


                if (this.gridControlProveedor.DataSource != null)
                {
                    if (rgImportar.SelectedIndex == 0)
                    {
                        MensajeWarning = "Atencion esta a punto de eliminar toda la informacion actual, y reemplazarla con la nueva. Esta seguro de continuar?";
                    }
                    else
                    {
                        MensajeWarning = "Atencion esta a punto de proceder. Esta seguro de continuar?";
                    }
                    lblmsg3.Visible = true;
                    if (MessageBox.Show(MensajeWarning, "SISTEMAS", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
                    {
                        if (rgImportar.SelectedIndex == 0)
                        {
                            if (!_ProveedorBus.EliminarDB_Todos(IdEmpresa, ref MensajeError))
                            {
                                MensajeLog   = "Error al eliminar registros en bases de datos \n" + MensajeError;
                                flagSinError = false;
                            }
                        }

                        if (flagSinError == true)//si es falso es porque entro al Eliminar y tuvo error, realmente no deberia hacer nada.
                        {
                            //splashScreenManager.ShowWaitForm();

                            Total_Reg            = _ListClienteInfo.Count();
                            progressBar.Maximum  = Total_Reg;
                            progressBar.Minimum  = 1;
                            progressBar.Step     = 1;
                            lblNumRegistros.Text = "0 registros de " + Total_Reg;
                            c = 1;

                            foreach (cp_proveedor_Info item in _ListClienteInfo)
                            {
                                flagSinError = true;
                                cedula       = item.Persona_Info.pe_cedulaRuc.Trim();
                                _PersonaInfo = _PersonaBus.Get_Info_Persona(cedula);
                                if (_PersonaInfo.IdPersona != 0)
                                {
                                    idPersona      = _PersonaInfo.IdPersona;
                                    item.IdPersona = idPersona;
                                    item.Persona_Info.IdPersona      = idPersona;
                                    _PersonaInfo.pe_telfono_Contacto = item.Persona_Info.pe_telfono_Contacto;
                                    //_PersonaInfo.pe_correo = (item.Persona_Info.pe_correo == null) ? "" : "";

                                    _PersonaInfo.pe_direccion = item.Persona_Info.pe_direccion.Trim();


                                    flagNuevaPersona = false;                                     //ya esta la persona en la base de datos
                                    if (!_PersonaBus.ModificarDB(_PersonaInfo, ref MensajeError)) //para grabar nuevos datos
                                    {
                                        listaLog    += "Ced: " + item.Persona_Info.pe_cedulaRuc + "\t" + item.pr_nombre + " ;" + "\n";
                                        flagSinError = false;
                                    }
                                }
                                else
                                {
                                    _PersonaInfo = item.Persona_Info;
                                    //_PersonaInfo.IdTipoPersona = "PROVEE";
                                    flagNuevaPersona = true;//es nueva persona
                                    if (!_PersonaBus.GrabarDB(_PersonaInfo, ref idPersona, ref MensajeError))
                                    {
                                        listaLog    += "Ced: " + item.Persona_Info.pe_cedulaRuc + "\t" + item.pr_nombre + " -" + "\n";
                                        flagSinError = false;
                                    }
                                }
                                if (flagSinError == true)//si es false, porque  dio error en persona, para que intentar el cliente
                                {
                                    item.IdPersona = idPersona;
                                    item.Persona_Info.IdPersona = idPersona;
                                    if ((rgImportar.SelectedIndex == 0) || (flagNuevaPersona == true))
                                    {
                                        flagNuevoEmpleado = true;
                                    }

                                    else//si no elimino previamente todos los empleados, y la persona no es nueva busco el cliente
                                    {
                                        _ProveedorInfoBase = _ProveedorBus.Get_Info_Proveedor_x_Persona(IdEmpresa, idPersona, ref MensajeError);//busco el cliente por la persona
                                        if (_ProveedorInfoBase.IdProveedor == 0)
                                        {
                                            flagNuevoEmpleado = true;//si no encontro empleado, entonces es nuevo
                                        }
                                        else
                                        {
                                            item.IdProveedor  = _ProveedorInfoBase.IdProveedor;
                                            flagNuevoEmpleado = false;
                                        }
                                    }

                                    if (flagNuevoEmpleado == true)//si el empleado es nuevo, o actualizo
                                    {
                                        if (item.pr_codigo.Trim() == "98")
                                        {
                                            MessageBox.Show("");
                                        }

                                        if (!_ProveedorBus.GrabarDB(item, ref IdProveedor, ref MensajeError))
                                        {
                                            listaLog += "Ced: " + item.Persona_Info.pe_cedulaRuc + "\t" + item.pr_nombre + " _" + "\n";
                                        }
                                        else
                                        {
                                            SIdProveedor = item.IdProveedor;
                                            SNom_Prov    = item.pr_nombre;
                                            ListEstadoGrabacion.Add(new cl_estado_grabacion(c, item.IdProveedor, item.pr_nombre, item.pr_codigo, item.pr_contribuyenteEspecial, "OK", "Migrado Ok"));
                                            gridControl_estado_grab_x_proveedor.Refresh();
                                            progressBar.Value    = c;
                                            lblNumRegistros.Text = c + " registros de " + Total_Reg;
                                            progressBar.Refresh();
                                            Application.DoEvents();
                                            c++;
                                        }
                                    }
                                    else
                                    {
                                        if (!_ProveedorBus.ModificarDB(item))
                                        {
                                            listaLog += "Ced: " + item.Persona_Info.pe_cedulaRuc + "\t" + item.pr_nombre + " ." + "\n";
                                        }
                                    }
                                } //fin sin error /en la Persona
                            }     //fin for each
                        }         //fin sin error /al Eliminar
                        if (listaLog != "")
                        {
                            MensajeLog += " pero con errores:" + "\n" + listaLog + MensajeError;
                        }
                        else
                        {
                            if (IdCtaCble_CXP != null && IdCtaCble_Anticipo != null && IdCtaCble_Gasto != null)
                            {
                                _ProveedorBus.ModificarDB_Cuentas_cbles(param.IdEmpresa, IdCtaCble_CXP, IdCtaCble_Anticipo, IdCtaCble_Gasto, ref MensajeError);
                            }
                        }
                    }//Fin del warning del messageBox al aceptar viene el else
                    else
                    {
                        MensajeLog = "No se efectuo la operación. Operacion cancelada por el usuario.";
                    }
                    lblmsg3.Visible = false;
                }//fin del grid no nulo
                else
                {
                    MensajeLog = "No existen Datos para importación.";
                }
                this.rtbLog.Text = MensajeLog;
            }
            catch (Exception ex)
            {
                //splashScreenManager.CloseWaitForm();
                ListEstadoGrabacion.Add(new cl_estado_grabacion(9000, SIdProveedor, SNom_Prov, "", "", "ERROR", ex.Message));
                lblMensaje.Text    = "Error al cargar " + ex.ToString();
                lblMensaje.Visible = true;
            }
        }