partial void PERSONAL_CREAR_ROL_PRIVADO_Saving(ref bool handled)
        {
            this.Persona.Nombres = this.Persona.Nombres.ToUpper();
            this.Persona.AP_Materno = this.Persona.AP_Materno.ToUpper();
            this.Persona.AP_Paterno = this.Persona.AP_Paterno.ToUpper();

            //Crea un nuevo cargo de subgerente
            if (this.Persona.CargoRolPrivadoItem.EsGerente == true && this.Persona.CargoRolPrivadoItem.IDGerencia != null)
            {
                this.Persona.Cargo = this.Persona.CargoRolPrivadoItem.Nombre;

                Superior_GerenteItem gerente = new Superior_GerenteItem();
                gerente.PersonaItem1 = this.Persona;
                gerente.Division_GerenciaItem = this.Division_GerenciaItem;
                this.Persona.Es_Gerente = true;
                this.Persona.Division_AreaItem = null;
                this.Persona.EsRolPrivado = true;
                this.Persona.AreaDeTrabajo = this.Division_GerenciaItem.Nombre;
                this.Division_GerenciaItem.Gerente = this.Persona.NombreAD;
                this.Persona.IDGerencia = this.Division_GerenciaItem.Id_Gerencia;
                if (this.Division_GerenciaItem.Nombre == "GERENCIA GENERAL") { this.Persona.Es_GerenteGeneral = true; }
            }else

            //Crea un nuevo cargo de subgerente
            if (this.Persona.CargoRolPrivadoItem.EsSubgerente == true && this.Persona.CargoRolPrivadoItem.IDSubgerencia != null)
            {
                this.Persona.Cargo = this.Persona.CargoRolPrivadoItem.Nombre;

                Superior_SubGerenteItem Subgerente = new Superior_SubGerenteItem();
                Subgerente.PersonaItem1 = this.Persona;
                Subgerente.Division_SubGerenciaItem = this.Division_SubGerenciaItem;
                this.Persona.Es_SubGerente = true;
                this.Persona.EsRolPrivado = true;
                this.Persona.IDGerencia_para_subgerentes = this.Division_SubGerenciaItem.Division_GerenciaItem.Id_Gerencia;
                //IDGerencia_para_subgerentes es utilizado en el Query de Solicitud_Header en la pantalla "Master_SolicitudesPendientes",...
                //...ya que los subgerentes no pertenecen a ninguna area, si no se guardara el id de la subgerencia, ...
                //...los gerentes verian las solicitudes de todos los subgerentes y no solo los que les corresponden.
                this.Persona.Division_AreaItem = null;
                this.Persona.AreaDeTrabajo = this.Division_SubGerenciaItem.Nombre;
                this.Division_SubGerenciaItem.SubGerente = this.Persona.NombreAD;
                this.Persona.IDSubgerencia = this.Division_SubGerenciaItem.Id_SubGerencia;
            }else

            //Crea un nuevo cargo de jefe de area
            if (this.Persona.CargoRolPrivadoItem.EsJefeDeArea == true)
            {
                this.Persona.Cargo = this.Persona.CargoRolPrivadoItem.Nombre;

                Superior_JefeDirectoItem JefeDeArea = new Superior_JefeDirectoItem();
                JefeDeArea.PersonaItem1 = this.Persona;
                JefeDeArea.Division_AreaItem = this.Division_AreaItem;
                this.Persona.Es_JefeDirecto = true;
                this.Persona.EsRolPrivado = true;
                this.Persona.Division_AreaItem = this.Division_AreaItem;
                this.Persona.AreaDeTrabajo = this.Division_AreaItem.Nombre;
                this.Division_AreaItem.JefeDeArea = this.Persona.NombreAD;
            }else

            //Si el nuevo cargo no incluye ser jefe de área ni subgerente ni gerente.
            if (this.Persona.CargoRolPrivadoItem != null && this.Persona.CargoRolPrivadoItem.EsJefeDeArea != true && this.Persona.CargoRolPrivadoItem.EsSubgerente != true && this.Persona.CargoRolPrivadoItem.EsGerente != true)
            {
                this.Persona.Cargo = this.Persona.CargoRolPrivadoItem.Nombre;
                this.Persona.Division_AreaItem = this.Division_AreaItem;
                this.Persona.AreaDeTrabajo = this.Division_AreaItem.Nombre;
            }
        }
 public void AddToSuperior_SubGerente(Superior_SubGerenteItem superior_SubGerenteItem)
 {
     base.AddObject("Superior_SubGerente", superior_SubGerenteItem);
 }
        partial void PERSONAL_DETALLES_Saving(ref bool handled)
        {
            this.Persona.Nombres = this.Persona.Nombres.ToUpper();
            this.Persona.AP_Materno = this.Persona.AP_Materno.ToUpper();
            this.Persona.AP_Paterno = this.Persona.AP_Paterno.ToUpper();

            if (this.Persona.EsRolPrivado != true )
            {
                //Si no se selecciona como jefe de área 
                if (this.Persona.Es_JefeDirecto != true )
                {
                    if (this.Persona.Division_AreaItem == null)
                    {
                        this.Persona.AreaDeTrabajo = null;
                    }
                    else { this.Persona.AreaDeTrabajo = this.Persona.Division_AreaItem.Nombre; }
                    

                    //Si era jefe de área se elimina el cargo
                    if (this.Persona.Superior_JefeDirecto.Count() > 0)
                    {
                            this.Persona.Es_JefeDirecto = false;

                            this.Persona.Superior_JefeDirecto.First().Division_AreaItem.JefeDeArea = null;

                            this.Persona.Superior_JefeDirecto.First().Delete();
                    }
                }
                else
                //Si se selecciona como jefe de área 
                if (this.Persona.Es_JefeDirecto == true )
                {
                    this.Persona.AreaDeTrabajo = this.Persona.Division_AreaItem.Nombre;
                    //Si antes era jefe de área
                    if (this.Persona.Superior_JefeDirecto.Count() > 0 )
                    {
                        //Si el área es distinta
                        if (this.Persona.Superior_JefeDirecto.First().Division_AreaItem != this.Persona.Division_AreaItem)
                        {
                            this.Persona.Superior_JefeDirecto.First().Division_AreaItem.JefeDeArea = null;

                            this.Persona.Superior_JefeDirecto.First().Division_AreaItem = this.Persona.Division_AreaItem;

                            this.Persona.Division_AreaItem.JefeDeArea = this.Persona.NombreAD;

                            this.Persona.Es_JefeDirecto = true;
                        }
                    }

                    //Si antes no era jefe de área
                    if (this.Persona.Superior_JefeDirecto.Count() == 0)
                    {
                        Superior_JefeDirectoItem JefeDirecto = new Superior_JefeDirectoItem();

                        JefeDirecto.PersonaItem1 = this.Persona;

                        JefeDirecto.Division_AreaItem = this.Persona.Division_AreaItem;

                        this.Division_AreaItem.JefeDeArea = this.Persona.NombreAD;

                        this.Persona.Es_JefeDirecto = true;
                    }
                }
            }

            if (this.Persona.EsRolPrivado == true)
            {
                //Si el nuevo cargo no incluye ser gerente o si se borra el cargo de rol privado
                if (this.Persona.CargoRolPrivadoItem == null || this.Persona.CargoRolPrivadoItem.EsGerente != true)
                {

                    this.Persona.Cargo = null;
                    this.Persona.IDGerencia = null;
                    this.Persona.AreaDeTrabajo = null;
                    this.Persona.Division_AreaItem = null;

                    //si era gerente se elimina el cargo de gerente
                    if (this.Persona.Es_Gerente == true && this.Persona.Superior_Gerente.Count() != 0)
                    {
                        this.Persona.Superior_Gerente.First().Division_GerenciaItem.Gerente = null;
                        this.Persona.Superior_Gerente.First().Delete();
                    }

                    this.Persona.Es_Gerente = false;
                    this.Persona.Es_GerenteGeneral = false;
                }


                //Si el nuevo cargo no incluye ser subgerente
                if (this.Persona.CargoRolPrivadoItem == null || this.Persona.CargoRolPrivadoItem.EsSubgerente != true)
                {

                    this.Persona.Cargo = null;
                    this.Persona.IDGerencia_para_subgerentes = null;
                    this.Persona.AreaDeTrabajo = null;
                    this.Persona.Division_AreaItem = null;
                    this.Persona.IDSubgerencia = null;

                    //si era subgerente se elimina el cargo de subgerente
                    if (this.Persona.Es_SubGerente == true && this.Persona.Superior_SubGerente.Count() != 0)
                    {
                        this.Persona.Superior_SubGerente.First().Division_SubGerenciaItem.SubGerente = null;
                        this.Persona.Superior_SubGerente.First().Delete();
                    }

                    this.Persona.Es_SubGerente = false;
                }


                //Si el nuevo cargo no incluye ser jefe de área
                if (this.Persona.CargoRolPrivadoItem == null || this.Persona.CargoRolPrivadoItem.EsJefeDeArea != true)
                {

                    this.Persona.Cargo = null;
                    this.Persona.AreaDeTrabajo = null;
                    this.Persona.Division_AreaItem = null;

                    //si era jefe de area se elimina el cargo de jefe de area
                    if (this.Persona.Es_JefeDirecto == true && this.Persona.Superior_JefeDirecto.Count() != 0)
                    {
                        this.Persona.Superior_JefeDirecto.First().Division_AreaItem.JefeDeArea = null;
                        this.Persona.Superior_JefeDirecto.First().Delete();
                    }

                    this.Persona.Es_JefeDirecto = false;
                }

                //Si el nuevo cargo incluye ser gerente
                if (this.Persona.CargoRolPrivadoItem != null && this.Persona.CargoRolPrivadoItem.EsGerente == true)
                {
                    //si era gerente se actualiza el cargo de gerente
                    if (this.Persona.Es_Gerente == true && this.Persona.Superior_Gerente.Count() != 0)
                    {
                        this.Persona.Superior_Gerente.First().Division_GerenciaItem.Gerente = null;
                        this.Persona.Superior_Gerente.First().Division_GerenciaItem = this.Division_GerenciaItem;
                        this.Persona.Superior_Gerente.First().Division_GerenciaItem.Gerente = this.Persona.NombreAD;
                        this.Persona.Cargo = this.Persona.CargoRolPrivadoItem.Nombre;
                        this.Persona.IDGerencia = this.Division_GerenciaItem.Id_Gerencia;
                    }
                    //Si no es gerente crea un nuevo cargo de gerente
                    else //if (this.Division_GerenciaItem.Superior_Gerente.First().PersonaItem1 != this.Persona)
                    {
                        this.Persona.Cargo = this.Persona.CargoRolPrivadoItem.Nombre;

                        Superior_GerenteItem gerente = new Superior_GerenteItem();
                        gerente.PersonaItem1 = this.Persona;
                        gerente.Division_GerenciaItem = this.Division_GerenciaItem;
                        this.Persona.Es_Gerente = true;
                        this.Persona.Division_AreaItem = null;
                        this.Persona.EsRolPrivado = true;
                        this.Persona.AreaDeTrabajo = this.Division_GerenciaItem.Nombre;
                        this.Division_GerenciaItem.Gerente = this.Persona.NombreAD;
                        this.Persona.IDGerencia = this.Division_GerenciaItem.Id_Gerencia;
                        if (this.Division_GerenciaItem.Nombre == "GERENCIA GENERAL") { this.Persona.Es_GerenteGeneral = true; }
                    }
                }
                else

                    //Si el nuevo cargo incluye ser subgerente
                    if (this.Persona.CargoRolPrivadoItem != null && this.Persona.CargoRolPrivadoItem.EsSubgerente == true)
                    {
                        //si era subgerente se actualiza el cargo de subgerente
                        if (this.Persona.Es_SubGerente == true && this.Persona.Superior_SubGerente.Count() != 0)
                        {
                            this.Persona.Superior_SubGerente.First().Division_SubGerenciaItem.SubGerente = null;
                            this.Persona.Superior_SubGerente.First().Division_SubGerenciaItem = this.Division_SubGerenciaItem;
                            this.Persona.Superior_SubGerente.First().Division_SubGerenciaItem.SubGerente = this.Persona.NombreAD;
                            this.Persona.Cargo = this.Persona.CargoRolPrivadoItem.Nombre;
                            this.Persona.IDSubgerencia = this.Division_SubGerenciaItem.Id_SubGerencia;
                        }
                        //Si no era subgerente crea un nuevo cargo de subgerente
                        else //if (this.Division_SubGerenciaItem.Superior_SubGerente.First().PersonaItem1 != this.Persona)
                        {
                            this.Persona.Cargo = this.Persona.CargoRolPrivadoItem.Nombre;

                            Superior_SubGerenteItem Subgerente = new Superior_SubGerenteItem();
                            Subgerente.PersonaItem1 = this.Persona;
                            Subgerente.Division_SubGerenciaItem = this.Division_SubGerenciaItem;
                            this.Persona.Es_SubGerente = true;
                            this.Persona.EsRolPrivado = true;
                            this.Persona.IDGerencia_para_subgerentes = this.Division_SubGerenciaItem.Division_GerenciaItem.Id_Gerencia;
                            //IDGerencia_para_subgerentes es utilizado en el Query de Solicitud_Header en la pantalla "Master_SolicitudesPendientes",...
                            //...ya que los subgerentes no pertenecen a ninguna area, si no se guardara el id de la subgerencia, ...
                            //...los gerentes verian las solicitudes de todos los subgerentes y no solo los que les corresponden.
                            this.Persona.Division_AreaItem = null;
                            this.Persona.AreaDeTrabajo = this.Division_SubGerenciaItem.Nombre;
                            this.Division_SubGerenciaItem.SubGerente = this.Persona.NombreAD;
                            this.Persona.IDSubgerencia = this.Division_SubGerenciaItem.Id_SubGerencia;
                        }
                    }
                    else

                        //Si el nuevo cargo incluye ser jefe de area
                        if (this.Persona.CargoRolPrivadoItem != null && this.Persona.CargoRolPrivadoItem.EsJefeDeArea == true)
                        {
                            //si era jefe de area se actualiza el cargo de jefe de area
                            if (this.Persona.Es_JefeDirecto == true && this.Persona.Superior_JefeDirecto.Count() != 0)
                            {
                                this.Persona.Superior_JefeDirecto.First().Division_AreaItem.JefeDeArea = null;
                                this.Persona.Superior_JefeDirecto.First().Division_AreaItem = this.Division_AreaItem;
                                this.Persona.Superior_JefeDirecto.First().Division_AreaItem.JefeDeArea = this.Persona.NombreAD;
                                this.Persona.Cargo = this.Persona.CargoRolPrivadoItem.Nombre;
                            }
                            //Si no era jefe de area, crea un nuevo cargo de jefe de area
                            else //if (this.Division_AreaItem.Superior_JefeDirecto.First().PersonaItem1 != this.Persona)
                            {
                                this.Persona.Cargo = this.Persona.CargoRolPrivadoItem.Nombre;

                                Superior_JefeDirectoItem JefeDeArea = new Superior_JefeDirectoItem();
                                JefeDeArea.PersonaItem1 = this.Persona;
                                JefeDeArea.Division_AreaItem = this.Division_AreaItem;
                                this.Persona.Es_JefeDirecto = true;
                                this.Persona.EsRolPrivado = true;
                                this.Persona.Division_AreaItem = this.Division_AreaItem;
                                this.Persona.AreaDeTrabajo = this.Division_AreaItem.Nombre;
                                this.Division_AreaItem.JefeDeArea = this.Persona.NombreAD;
                            }
                        }

                //Si el nuevo cargo no incluye ser jefe de área ni subgerente ni gerente.
                if (this.Persona.CargoRolPrivadoItem != null && this.Persona.CargoRolPrivadoItem.EsJefeDeArea != true && this.Persona.CargoRolPrivadoItem.EsSubgerente != true && this.Persona.CargoRolPrivadoItem.EsGerente != true)
                {
                    this.Persona.Cargo = this.Persona.CargoRolPrivadoItem.Nombre;
                    this.Persona.Division_AreaItem = this.Division_AreaItem;
                    this.Persona.AreaDeTrabajo = this.Division_AreaItem.Nombre;
                }
            }
        }
 public static Superior_SubGerenteItem CreateSuperior_SubGerenteItem(int id_SubGerente, int subgerencia_fk, string persona_fk)
 {
     Superior_SubGerenteItem superior_SubGerenteItem = new Superior_SubGerenteItem();
     superior_SubGerenteItem.Id_SubGerente = id_SubGerente;
     superior_SubGerenteItem.Subgerencia_fk = subgerencia_fk;
     superior_SubGerenteItem.Persona_fk = persona_fk;
     return superior_SubGerenteItem;
 }
        partial void SeleccionarPersona_Execute()
        {
            if (this.Persona.SelectedItem.Es_Gerente == true){ this.ShowMessageBox("Este empleado ya posee un cargo de gerente en: "+ this.Persona.SelectedItem.Superior_Gerente.First().Division_GerenciaItem.Nombre);}
            else if (this.Persona.SelectedItem.Es_JefeDirecto == true) { this.ShowMessageBox("Este empleado ya posee un cargo de jefe de área en: " + this.Persona.SelectedItem.Superior_JefeDirecto.First().Division_AreaItem.Nombre); }
            else if (this.Persona.SelectedItem.Es_SubGerente == true) { this.ShowMessageBox("Este empleado ya posee un cargo de subgerente en: " + this.Persona.SelectedItem.Superior_SubGerente.First().Division_SubGerenciaItem.Nombre); }
            else
            {

                if (this.codigo == 1) //Escoger un gerente por primera vez 
                {
                    Superior_GerenteItem gerente = new Superior_GerenteItem();
                    gerente.PersonaItem1 = this.Persona.SelectedItem;
                    gerente.Division_GerenciaItem = this.Division_GerenciaItem;
                    this.Persona.SelectedItem.Es_Gerente = true;
                    this.Persona.SelectedItem.Division_AreaItem = null;
                    this.Persona.SelectedItem.EsRolPrivado = true;
                    this.Persona.SelectedItem.AreaDeTrabajo = this.Division_GerenciaItem.Nombre;
                    
                    this.Division_GerenciaItem.Gerente = this.Persona.SelectedItem.NombreAD;

                    if (this.Division_GerenciaItem.Nombre == "GERENCIA GENERAL") { this.Persona.SelectedItem.Es_GerenteGeneral = true; }

                }
                else

                    if (this.codigo == 2) //Escoger un gerente después de la primera vez
                    {


                        this.Division_GerenciaItem.Superior_Gerente.First().PersonaItem1.Es_Gerente = false;
                        this.Division_GerenciaItem.Superior_Gerente.First().PersonaItem1 = this.Persona.SelectedItem;
                        this.Persona.SelectedItem.Es_Gerente = true;
                        this.Persona.SelectedItem.Division_AreaItem = null;
                        
                        this.Division_GerenciaItem.Gerente = this.Persona.SelectedItem.NombreAD;

                    }
                    else

                        if (this.codigo == 3)//Escoger un Subgerente por primera vez
                        {
                            Superior_SubGerenteItem Subgerente = new Superior_SubGerenteItem();
                            Subgerente.PersonaItem1 = this.Persona.SelectedItem;
                            Subgerente.Division_SubGerenciaItem = this.Division_SubGerenciaItem;
                            this.Persona.SelectedItem.Es_SubGerente = true;
                            this.Persona.SelectedItem.EsRolPrivado = true;
                            this.Persona.SelectedItem.IDGerencia_para_subgerentes = this.Division_SubGerenciaItem.Division_GerenciaItem.Id_Gerencia;
                            //IDGerencia_para_subgerentes es utilizado en el Query de Solicitud_Header en la pantalla "Master_SolicitudesPendientes",...
                            //...ya que los subgerentes no pertenecen a ninguna area, si no se guardara el id de la subgerencia, ...
                            //...los gerentes verian las solicitudes de todos los subgerentes y no solo los que les corresponden.
                            this.Persona.SelectedItem.Division_AreaItem = null;
                            this.Persona.SelectedItem.AreaDeTrabajo = this.Division_SubGerenciaItem.Nombre;

                            this.Division_SubGerenciaItem.SubGerente = this.Persona.SelectedItem.NombreAD;

                        }
                        else

                            if (this.codigo == 4)//Escoger un Subgerente después de la primera vez
                            {
                                this.Division_SubGerenciaItem.Superior_SubGerente.First().PersonaItem1.Es_SubGerente = false;
                                this.Division_SubGerenciaItem.Superior_SubGerente.First().PersonaItem1 = this.Persona.SelectedItem;
                                this.Persona.SelectedItem.Es_SubGerente = true;
                                this.Persona.SelectedItem.IDGerencia_para_subgerentes = this.Division_SubGerenciaItem.Division_GerenciaItem.Id_Gerencia;
                                this.Persona.SelectedItem.Division_AreaItem = null;

                                this.Division_SubGerenciaItem.SubGerente = this.Persona.SelectedItem.NombreAD;

                            }
                            else

                                if (this.codigo == 5)//Escoger un jefe directo por primera vez
                                {
                                    Superior_JefeDirectoItem JefeDirecto = new Superior_JefeDirectoItem();
                                    JefeDirecto.PersonaItem1 = this.Persona.SelectedItem;
                                    JefeDirecto.PersonaItem1.Division_AreaItem = this.Division_AreaItem;
                                    JefeDirecto.Division_AreaItem = this.Division_AreaItem;
                                    this.Persona.SelectedItem.Es_JefeDirecto = true;

                                    this.Persona.SelectedItem.AreaDeTrabajo = this.Division_AreaItem.Nombre;

                                    this.Division_AreaItem.JefeDeArea = this.Persona.SelectedItem.NombreAD;

                                }
                                else

                                    if (this.codigo == 6)//Escoger un jefe directo después de la primera vez
                                    {
                                        this.Division_AreaItem.Superior_JefeDirecto.First().PersonaItem1.Es_JefeDirecto = false;
                                        this.Division_AreaItem.Superior_JefeDirecto.First().PersonaItem1 = this.Persona.SelectedItem;
                                        this.Persona.SelectedItem.Es_JefeDirecto = true;
                                        this.Persona.SelectedItem.Division_AreaItem = this.Division_AreaItem;

                                        this.Division_AreaItem.JefeDeArea = this.Persona.SelectedItem.NombreAD;
                                    }

                this.Save();
                this.Close(true);
            }
        }