Пример #1
0
    private void GenerarContratos(ContratosImp ContImp, EntidadesConosud dc)
    {
        int HayEmpresa = (from E in dc.Empresa
                          where E.CUIT.Replace("-", "").Contains(ContImp.CUIT_FK.Replace("-", ""))
                          select E).Count();


        if (HayEmpresa > 0)
        {
            /// Creo el contrato
            Entidades.Contrato newContrato = new Entidades.Contrato();
            newContrato.Codigo           = ContImp.Codigo;
            newContrato.FechaInicio      = DateTime.Parse(ContImp.FechaInicio);
            newContrato.FechaVencimiento = DateTime.Parse(ContImp.FechaVencimiento);
            newContrato.Prorroga         = ContImp.Prorroga;
            newContrato.Servicio         = ContImp.Servicio.ToLower();

            newContrato.TipoContrato = (from T in dc.Clasificacion
                                        where T.Tipo == "Tipo Contrato" && T.Descripcion.Contains(ContImp.TipoContrato)
                                        select T).FirstOrDefault <Entidades.Clasificacion>();

            newContrato.Contratadopor = (from T in dc.Clasificacion
                                         where T.Tipo == "Contratado  por" && T.Descripcion.Contains(ContImp.ContratadoPor)
                                         select T).FirstOrDefault <Entidades.Clasificacion>();


            /// Creo el Contrato Empresa
            Entidades.ContratoEmpresas _ContEmp = new Entidades.ContratoEmpresas();

            _ContEmp.EsContratista = true;
            _ContEmp.Contrato      = newContrato;
            _ContEmp.Empresa       = (from E in dc.Empresa
                                      where E.CUIT.Replace("-", "").Contains(ContImp.CUIT_FK.Replace("-", ""))
                                      select E).First <Entidades.Empresa>();


            /// Creo las Hojas de Ruta
            DateTime FFin = DateTime.Now;
            if (newContrato.Prorroga.HasValue)
            {
                FFin = newContrato.Prorroga.Value;
            }
            else
            {
                FFin = newContrato.FechaVencimiento.Value;
            }
            DateTime FechaInicio = new DateTime(newContrato.FechaInicio.Value.Year, newContrato.FechaInicio.Value.Month, 1);

            Helpers.GenerarHojadeRuta(dc, FechaInicio, FFin, _ContEmp);


            /// Creo los contrato empresa para las subcontratista
            List <ContratoEmpresasImp> contratosSubContratistas = (from C in dc.ContratoEmpresasImp
                                                                   where C.Contratista.Replace("-", "") == _ContEmp.Empresa.CUIT.Replace("-", "") &&
                                                                   C.NroContrato == _ContEmp.Contrato.Codigo
                                                                   select C).ToList <ContratoEmpresasImp>();

            foreach (ContratoEmpresasImp item in contratosSubContratistas)
            {
                Entidades.Empresa SubContratista = (from E in dc.Empresa
                                                    where E.CUIT.Replace("-", "").Contains(item.SubContratista.Replace("-", ""))
                                                    select E).FirstOrDefault <Entidades.Empresa>();
                if (SubContratista != null)
                {
                    /// creo el contrato empresa para el subcontratista
                    Entidades.ContratoEmpresas _ContEmpSub = new Entidades.ContratoEmpresas();
                    _ContEmpSub.EsContratista = false;
                    _ContEmpSub.Empresa       = SubContratista;
                    newContrato.ContratoEmpresas.Add(_ContEmpSub);

                    /// Creo las Hojas de Ruta
                    FFin = DateTime.Now;
                    if (newContrato.Prorroga.HasValue)
                    {
                        FFin = newContrato.Prorroga.Value;
                    }
                    else
                    {
                        FFin = newContrato.FechaVencimiento.Value;
                    }
                    FechaInicio = new DateTime(newContrato.FechaInicio.Value.Year, newContrato.FechaInicio.Value.Month, 1);
                    Helpers.GenerarHojadeRuta(dc, FechaInicio, FFin, _ContEmpSub);
                }
            }


            dc.AddToContrato(newContrato);
        }
    }
Пример #2
0
    public void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        EntidadesConosud dc = Contexto;

        if (e.Argument == "Update")
        {
            long id = long.Parse(RadGrid1.SelectedValue.ToString());

            Entidades.Empresa EmpUpdate = (from L in dc.Empresa
                                           where L.IdEmpresa == id
                                           select L).FirstOrDefault <Entidades.Empresa>();

            int cant = (from l in dc.Empresa
                        where l.CUIT.Trim() == txtCUIT.Text.Trim() &&
                        l.IdEmpresa != id
                        select l).Count();

            txtCUIT.Attributes.Remove("NroExistente");

            if (cant > 0)
            {
                txtCUIT.Attributes.Add("NroExistente", true.ToString());
                upNroCUIT.Update();
                return;
            }
            else
            {
                txtCUIT.Attributes.Add("NroExistente", false.ToString());
                upNroCUIT.Update();
            }


            if (EmpUpdate != null)
            {
                /// Controles Tipo TextBox
                EmpUpdate.RazonSocial          = txtRazonSocial.Text.Trim();
                EmpUpdate.RepresentanteTecnico = txtTecnico.Text.Trim();
                EmpUpdate.PrestacionEmergencia = txtPrestacionEmergencias.Text.Trim();
                EmpUpdate.Direccion            = txtDireccion.Text.Trim();
                EmpUpdate.Telefono             = txtTelefono.Text.Trim();
                EmpUpdate.Emergencia           = txtEmergencias.Text.Trim();
                EmpUpdate.CorreoElectronico    = txtEmail.Text.Trim();

                /// Controles Tipo Telerik
                EmpUpdate.CUIT = txtCUIT.Text;

                /// Controles Tipo Fecha
                EmpUpdate.FechaAlta = txtFechaAlta.SelectedDate;

                dc.SaveChanges();
            }

            FiltrarEmpresas(txtApellidoLegajo.Text.Trim());
            return;
        }
        if (e.Argument == "delete")
        {
            long id = long.Parse(RadGrid1.SelectedValue.ToString());


            Entidades.Empresa EmpDelete = (from L in Contexto.Empresa
                                           where L.IdEmpresa == id
                                           select L).FirstOrDefault <Entidades.Empresa>();


            /// Saco a todos los lejos asociados a la empresa.
            List <Legajos> legajosAsociados = EmpDelete.Legajos.ToList();
            foreach (Legajos leg in legajosAsociados)
            {
                leg.objEmpresaLegajo = null;
            }


            /// Saco a todos vehiculos asociados
            List <VahiculosyEquipos> VehiculosAsociados = EmpDelete.VahiculosyEquipos.ToList();
            foreach (VahiculosyEquipos vec in VehiculosAsociados)
            {
                vec.objEmpresa = null;
            }


            /// Saco el usario a asociado a la empresa
            List <SegUsuario> SegUsuairoEmp = (from L in Contexto.SegUsuario
                                               where L.IdEmpresa == id
                                               select L).ToList <SegUsuario>();

            foreach (SegUsuario item in SegUsuairoEmp)
            {
                item.Empresa = null;
            }


            int j = EmpDelete.ContratoEmpresas.Count();
            while (j > 0)
            {
                Entidades.ContratoEmpresas _ContratoEmpresas = EmpDelete.ContratoEmpresas.Take(1).First();
                //if (!_ContratoEmpresas.ComentariosGral.IsLoaded) { _ContratoEmpresas.ComentariosGral.Load(); }
                List <ComentariosGral> comentsGrales = _ContratoEmpresas.ComentariosGral.ToList();
                foreach (ComentariosGral itemComent in comentsGrales)
                {
                    Contexto.DeleteObject(itemComent);
                }


                int j2 = _ContratoEmpresas.CabeceraHojasDeRuta.Count();
                while (j2 > 0)
                {
                    Entidades.CabeceraHojasDeRuta _CabeceraHojasDeRuta = _ContratoEmpresas.CabeceraHojasDeRuta.Take(1).First();

                    int j3 = _CabeceraHojasDeRuta.HojasDeRuta.Count();
                    while (j3 > 0)
                    {
                        Entidades.HojasDeRuta _HojasDeRuta = _CabeceraHojasDeRuta.HojasDeRuta.Take(1).First();
                        Contexto.DeleteObject(_HojasDeRuta);
                        j3--;
                    }


                    int j4 = _CabeceraHojasDeRuta.ContEmpLegajos.Count();
                    while (j4 > 0)
                    {
                        ContEmpLegajos _Leghoja = _CabeceraHojasDeRuta.ContEmpLegajos.Take(1).First();
                        Contexto.DeleteObject(_Leghoja);
                        j4--;
                    }


                    Contexto.DeleteObject(_CabeceraHojasDeRuta);
                    j2--;
                }
                Contexto.DeleteObject(_ContratoEmpresas);
                j--;
            }

            Contexto.DeleteObject(EmpDelete);

            try
            {
                Contexto.SaveChanges();
                FiltrarEmpresas(txtApellidoLegajo.Text.Trim());
            }
            catch
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "eliminacionEmpresa", "radalert('La emprsa no puede ser eliminada ya que posee mucha información asociada, por favor tome contacto con el administrador del sistema.',300,150)", true);
                FiltrarEmpresas(txtApellidoLegajo.Text.Trim());
            }
        }
        if (e.Argument == "Insert")
        {
            Entidades.Empresa EmpInsert = new Entidades.Empresa();

            int cant = (from l in dc.Empresa
                        where l.CUIT == txtCUIT.Text.Trim()
                        select l).Count();


            if (cant > 0)
            {
                txtCUIT.Attributes.Add("NroExistente", true.ToString());
                upNroCUIT.Update();
                return;
            }
            else
            {
                txtCUIT.Attributes.Add("NroExistente", false.ToString());
                upNroCUIT.Update();
            }


            /// Controles Tipo TextBox
            EmpInsert.RazonSocial          = txtRazonSocial.Text.Trim();
            EmpInsert.RepresentanteTecnico = txtTecnico.Text.Trim();
            EmpInsert.PrestacionEmergencia = txtPrestacionEmergencias.Text.Trim();
            EmpInsert.Direccion            = txtDireccion.Text.Trim();
            EmpInsert.Telefono             = txtTelefono.Text.Trim();
            EmpInsert.Emergencia           = txtEmergencias.Text.Trim();
            EmpInsert.CorreoElectronico    = txtEmail.Text.Trim();

            /// Controles Tipo Telerik
            EmpInsert.CUIT = txtCUIT.Text;

            /// Controles Tipo Fecha
            EmpInsert.FechaAlta = txtFechaAlta.SelectedDate;


            dc.AddToEmpresa(EmpInsert);
            dc.SaveChanges();
        }

        FiltrarEmpresas(txtApellidoLegajo.Text.Trim());
    }
Пример #3
0
    public static void GenerarHojadeRuta(ObjectContext pContext, DateTime FInicio, DateTime FFin, Entidades.ContratoEmpresas pContratoEmpresas)
    {
        string queryString = @"SELECT VALUE CabeceraHojasDeRuta FROM 
            EntidadesConosud.CabeceraHojasDeRuta AS CabeceraHojasDeRuta";
        ObjectQuery <Entidades.CabeceraHojasDeRuta> CabeceraHojasDeRutaQuery1 =
            new ObjectQuery <Entidades.CabeceraHojasDeRuta>(queryString, pContext);

        DateTime FechaInicio = FInicio;
        DateTime FechaFinal  = FFin;

        int ultimonrocarpeta = 1;

        try
        {
            ultimonrocarpeta  = CabeceraHojasDeRutaQuery1.Max(c => c.NroCarpeta);
            ultimonrocarpeta += 1;
        }
        catch { }


        long id = Convert.ToInt64(Helpers.EstadosHoja.NoAprobada);
        IEnumerable <KeyValuePair <string, object> > entityKeyValues = new KeyValuePair <string, object>[] {
            new KeyValuePair <string, object>("IdClasificacion", id)
        };
        EntityKey key = new EntityKey("EntidadesConosud.Clasificacion", entityKeyValues);

        Entidades.Clasificacion _est = (Entidades.Clasificacion)pContext.GetObjectByKey(key);

        /// Guardo la ultima cabecera antes de generar las nuevas para
        /// luego obtener los legados de la mism.

        Entidades.CabeceraHojasDeRuta UltimaCabecera = null;
        if (pContratoEmpresas.IdContratoEmpresas > 0)
        {
            if (!pContratoEmpresas.CabeceraHojasDeRuta.IsLoaded)
            {
                pContratoEmpresas.CabeceraHojasDeRuta.Load();
            }
            UltimaCabecera = pContratoEmpresas.CabeceraHojasDeRuta.OrderBy(w => w.Periodo).Last();
        }


        while (GeneraxFecha(ref FechaInicio, ref FechaFinal))
        {
            if (UltimaCabecera == null || !(UltimaCabecera.Periodo.Month == FechaFinal.Month && UltimaCabecera.Periodo.Year == FechaFinal.Year))
            {
                /// control por las dudas que el primer periodo que se intenta crear ya existe.
                if (UltimaCabecera == null || string.Format("{0:MMyyyy}", FechaInicio) != string.Format("{0:MMyyyy}", UltimaCabecera.Periodo))
                {
                    /// controlo que el periodo que se esta intentando crear no exista ya.
                    if (!pContratoEmpresas.CabeceraHojasDeRuta.Any(w => string.Format("{0:MMyyyy}", w.Periodo) == string.Format("{0:MMyyyy}", FechaInicio)))
                    {
                        /// Genero la cabecera de hoja de ruta
                        Entidades.CabeceraHojasDeRuta _CabHojaRuta = new Entidades.CabeceraHojasDeRuta();
                        _CabHojaRuta.ContratoEmpresas = pContratoEmpresas;
                        _CabHojaRuta.Estado           = _est;
                        _CabHojaRuta.Periodo          = FechaInicio;
                        _CabHojaRuta.NroCarpeta       = ultimonrocarpeta;
                        _CabHojaRuta.Estimacion       = string.Empty;
                        _CabHojaRuta.EsFueraTermino   = false;
                        pContext.AddObject("EntidadesConosud.CabeceraHojasDeRuta", _CabHojaRuta);

                        queryString = @"SELECT VALUE Plantilla FROM EntidadesConosud.Plantilla AS Plantilla";

                        ObjectQuery <Entidades.Plantilla> PlantillaQuery1 =
                            new ObjectQuery <Entidades.Plantilla>(queryString, pContext);

                        /// Genero los items de las hojas de ruta
                        foreach (Entidades.Plantilla plan in PlantillaQuery1.Select(p => p))
                        {
                            Entidades.HojasDeRuta _HojasDeRuta = new Entidades.HojasDeRuta();
                            _HojasDeRuta.Plantilla      = plan;
                            _HojasDeRuta.HojaAprobado   = false;
                            _HojasDeRuta.HojaComentario = string.Empty;
                            _HojasDeRuta.AuditadoPor    = string.Empty;
                            _HojasDeRuta.DocComentario  = string.Empty;
                            _CabHojaRuta.HojasDeRuta.Add(_HojasDeRuta);

                            pContext.AddObject("EntidadesConosud.HojasDeRuta", _HojasDeRuta);
                        }

                        /// Asocio  los legajos a la nueva cabecera

                        if (UltimaCabecera != null)
                        {
                            if (!UltimaCabecera.ContEmpLegajos.IsLoaded)
                            {
                                UltimaCabecera.ContEmpLegajos.Load();
                            }
                            foreach (Entidades.ContEmpLegajos itemContLeg in UltimaCabecera.ContEmpLegajos)
                            {
                                if (!itemContLeg.LegajosReference.IsLoaded)
                                {
                                    itemContLeg.LegajosReference.Load();
                                }

                                Entidades.ContEmpLegajos newContLeg = new Entidades.ContEmpLegajos();
                                newContLeg.ContratoEmpresas = pContratoEmpresas;
                                newContLeg.Legajos          = itemContLeg.Legajos;
                                _CabHojaRuta.ContEmpLegajos.Add(newContLeg);

                                pContext.AddObject("EntidadesConosud.ContEmpLegajos", newContLeg);
                            }
                        }
                    }
                }
            }

            FechaInicio       = FechaInicio.AddMonths(1);
            ultimonrocarpeta += 1;
        }
    }
Пример #4
0
    protected void LinkButtonEliminar_OnClick(object sender, EventArgs e)
    {
        try
        {
            int    i          = RadGrid1.SelectedItems[0].DataSetIndex - (this.RadGrid1.CurrentPageIndex * this.RadGrid1.PageSize);
            string IdContrato = RadGrid1.Items[i].GetDataKeyValue("IdContrato").ToString();
            long   id         = Convert.ToInt64(IdContrato);


            //if ((from h in Contexto.HojasDeRuta
            //     where h.CabeceraHojasDeRuta.ContratoEmpresas.Contrato.IdContrato == id
            //     && h.HojaFechaAprobacion != null
            //     select h).Count() > 0)
            //{
            //    string scriptstring = "radalert('<h4>No se puede eliminar el contrato porque tiene cargada infomacion en su hoja de ruta!</h4>', 330, 100, 'Contratos');";
            //    ScriptManager.RegisterStartupScript(this, this.GetType(), "radalert", scriptstring, true);
            //    return;
            //}

            Entidades.Contrato _contrato = (from c in Contexto.Contrato
                                            .Include("ContratoEmpresas.CabeceraHojasDeRuta.HojasDeRuta")
                                            where c.IdContrato == id
                                            select c).First();



            int j = _contrato.ContratoEmpresas.Count();
            while (j > 0)
            {
                Entidades.ContratoEmpresas _ContratoEmpresas = _contrato.ContratoEmpresas.Take(1).First();
                if (!_ContratoEmpresas.ComentariosGral.IsLoaded)
                {
                    _ContratoEmpresas.ComentariosGral.Load();
                }
                List <ComentariosGral> coment = _ContratoEmpresas.ComentariosGral.ToList();

                foreach (ComentariosGral itemComent in coment)
                {
                    Contexto.DeleteObject(itemComent);
                }

                if (!_ContratoEmpresas.Contrato.DatosDeSueldos.IsLoaded)
                {
                    _ContratoEmpresas.Contrato.DatosDeSueldos.Load();
                }
                List <DatosDeSueldos> infoSueldos = _ContratoEmpresas.Contrato.DatosDeSueldos.ToList();

                foreach (DatosDeSueldos itemsueldo in infoSueldos)
                {
                    Contexto.DeleteObject(itemsueldo);
                }



                int j2 = _ContratoEmpresas.CabeceraHojasDeRuta.Count();
                while (j2 > 0)
                {
                    Entidades.CabeceraHojasDeRuta _CabeceraHojasDeRuta = _ContratoEmpresas.CabeceraHojasDeRuta.Take(1).First();

                    int j3 = _CabeceraHojasDeRuta.HojasDeRuta.Count();
                    while (j3 > 0)
                    {
                        Entidades.HojasDeRuta _HojasDeRuta = _CabeceraHojasDeRuta.HojasDeRuta.Take(1).First();
                        Contexto.DeleteObject(_HojasDeRuta);
                        j3--;
                    }
                    Contexto.DeleteObject(_CabeceraHojasDeRuta);
                    j2--;
                }
                Contexto.DeleteObject(_ContratoEmpresas);
                j--;
            }

            Contexto.DeleteObject(_contrato);
            Contexto.SaveChanges();

            this.CargarSessionContratos();
            this.RadGrid1.Rebind();
        }
        catch (Exception err)
        {
            string scriptstring = "radalert('<h4>" + err.InnerException.Message.Substring(0, 150) + "</h4>', 630, 100, 'Contratos');";
            ScriptManager.RegisterStartupScript(this, this.GetType(), "radalert", scriptstring, true);
        }
    }
Пример #5
0
    private void InsertContrato(GridEditFormInsertItem editedItem)
    {
        #region Genero el CONTRATO con los datos ingresado por el usuario
        long            idCategoria_Ingresada = 0;
        GridEditManager editMan                        = editedItem.EditManager;
        string          codigo_Ingresado               = ((TextBox)editedItem.FindControl("TextBoxCodigo")).Text;
        string          servicio_Ingresado             = ((TextBox)editedItem.FindControl("TextBoxServicio")).Text;
        long            idContratista_Ingresado        = long.Parse(((RadComboBox)editedItem.FindControl("RadComboBoxContratista")).SelectedValue);
        long            idTipoContrato_Ingresado       = long.Parse(((RadComboBox)editedItem.FindControl("cboTipoContrato")).SelectedValue);
        long            idContratadoPor_Ingresado      = long.Parse(((RadComboBox)editedItem.FindControl("cboContratadoPor")).SelectedValue);
        DateTime        fechaInicioContrato_Ingresado  = DateTime.Parse((editedItem.FindControl("TextBoxFechaInicio") as TextBox).Text);
        DateTime        fechaFinContrato_Ingresado     = DateTime.Parse((editedItem.FindControl("TextBoxFechaVencimiento") as TextBox).Text);
        DateTime?       fechaPorrogaContrato_Ingresado = null;

        if (((RadComboBox)editedItem.FindControl("cboCategoria")).SelectedValue != "")
        {
            idCategoria_Ingresada = long.Parse(((RadComboBox)editedItem.FindControl("cboCategoria")).SelectedValue);
        }


        if ((editedItem.FindControl("TextBoxProrroga") as TextBox).Text != "")
        {
            fechaPorrogaContrato_Ingresado = DateTime.Parse((editedItem.FindControl("TextBoxProrroga") as TextBox).Text);
        }


        if ((from c in Contexto.Contrato
             where c.Codigo == codigo_Ingresado.Trim()
             select c).Count() > 0)
        {
            string scriptstring = "radalert('<h4>No se puede crear el contrato ya que el nro del mismo ya existe!</h4>', 330, 100, 'Contratos');";
            ScriptManager.RegisterStartupScript(this, this.GetType(), "radalert", scriptstring, true);
            return;
        }



        Entidades.Contrato _Contrato = new Entidades.Contrato();
        _Contrato.Codigo           = codigo_Ingresado;
        _Contrato.Servicio         = servicio_Ingresado;
        _Contrato.FechaInicio      = fechaInicioContrato_Ingresado;
        _Contrato.FechaVencimiento = fechaFinContrato_Ingresado;
        _Contrato.Contratadopor    = Contexto.Clasificacion.Where(w => w.IdClasificacion == idContratadoPor_Ingresado).FirstOrDefault();
        _Contrato.TipoContrato     = Contexto.Clasificacion.Where(w => w.IdClasificacion == idTipoContrato_Ingresado).FirstOrDefault();

        if (idCategoria_Ingresada > 0)
        {
            _Contrato.objCategoria = Contexto.Clasificacion.Where(w => w.IdClasificacion == idCategoria_Ingresada).FirstOrDefault();
        }


        #endregion

        #region Genero el CONTRATO-EMPRESA con los datos ingresado por el usuario

        Entidades.ContratoEmpresas _ContEmp = new Entidades.ContratoEmpresas();
        IEnumerable <KeyValuePair <string, object> > entityKeyValues =
            new KeyValuePair <string, object>[] {
            new KeyValuePair <string, object>("IdEmpresa", idContratista_Ingresado)
        };
        EntityKey         key  = new EntityKey("EntidadesConosud.Empresa", entityKeyValues);
        Entidades.Empresa _emp = (Entidades.Empresa)Contexto.GetObjectByKey(key);

        _ContEmp.EsContratista = true;
        _ContEmp.Contrato      = _Contrato;
        _ContEmp.Empresa       = _emp;

        Contexto.AddObject("EntidadesConosud.ContratoEmpresas", _ContEmp);

        #endregion

        #region Genero el ENCABEZADO Y LAS HOJAS con los datos ingresado por el usuario

        DateTime FFin = DateTime.Now;
        if (_Contrato.Prorroga.HasValue)
        {
            FFin = _Contrato.Prorroga.Value;
        }
        else
        {
            FFin = _Contrato.FechaVencimiento.Value;
        }

        DateTime FechaInicio = new DateTime(_Contrato.FechaInicio.Value.Year, _Contrato.FechaInicio.Value.Month, 1);

        Helpers.GenerarHojadeRuta(Contexto, FechaInicio, FFin, _ContEmp);

        #endregion

        Contexto.SaveChanges();
        CargarSessionContratos();
    }
Пример #6
0
    private void InsertContrato(GridEditFormInsertItem editedItem)
    {
        #region Genero el CONTRATO con los datos ingresado por el usuario

        GridEditManager editMan                   = editedItem.EditManager;
        string          codigo_Ingresado          = (editMan.GetColumnEditor("Codigo") as GridTextBoxColumnEditor).Text;
        string          servicio_Ingresado        = (editMan.GetColumnEditor("Servicio") as GridTextBoxColumnEditor).Text;
        long            idContratista_Ingresado   = long.Parse(((RadComboBox)editedItem.FindControl("cboContratista")).SelectedValue);
        long            idTipoContrato_Ingresado  = long.Parse(((RadComboBox)editedItem.FindControl("cboTipoContrato")).SelectedValue);
        long            idContratadoPor_Ingresado = long.Parse(((RadComboBox)editedItem.FindControl("cboContratadoPor")).SelectedValue);
        long            idCategoria_Ingresado     = long.Parse(((RadComboBox)editedItem.FindControl("cboCategoria")).SelectedValue);
        long            idArea_Ingresado          = long.Parse(((RadComboBox)editedItem.FindControl("cboArea")).SelectedValue);


        string GestorNombre_Ingresado = ((TextBox)editedItem.FindControl("txtNombreGestor")).Text;
        string GestorEmail_Ingresado  = ((TextBox)editedItem.FindControl("txtEmailGestor")).Text;
        string FiscalNombre_Ingresado = ((TextBox)editedItem.FindControl("txtNombreFiscales")).Text;
        string FiscalEmail_Ingresado  = ((TextBox)editedItem.FindControl("txtEmailFiscales")).Text;


        DateTime fechaInicioContrato_Ingresado  = DateTime.Parse((editedItem.FindControl("TextBoxFechaInicio") as TextBox).Text);
        DateTime fechaFinContrato_Ingresado     = DateTime.Parse((editedItem.FindControl("TextBoxFechaVencimiento") as TextBox).Text);
        DateTime?fechaPorrogaContrato_Ingresado = null;

        if ((editedItem.FindControl("TextBoxProrroga") as TextBox).Text != "")
        {
            fechaPorrogaContrato_Ingresado = DateTime.Parse((editedItem.FindControl("TextBoxProrroga") as TextBox).Text);
        }

        Entidades.Contrato _Contrato = new Entidades.Contrato();
        _Contrato.Codigo           = codigo_Ingresado.Trim();
        _Contrato.Servicio         = servicio_Ingresado;
        _Contrato.FechaInicio      = fechaInicioContrato_Ingresado;
        _Contrato.FechaVencimiento = fechaFinContrato_Ingresado;
        _Contrato.Contratadopor    = idContratadoPor_Ingresado;
        _Contrato.TipoContrato     = idTipoContrato_Ingresado;
        _Contrato.Categoria        = idCategoria_Ingresado;
        _Contrato.Area             = idArea_Ingresado;
        _Contrato.GestorNombre     = GestorNombre_Ingresado;
        _Contrato.GestorEmail      = GestorEmail_Ingresado;
        _Contrato.FiscalNombre     = FiscalNombre_Ingresado;
        _Contrato.FiscalEmail      = FiscalEmail_Ingresado;

        #endregion

        #region Genero el CONTRATO-EMPRESA con los datos ingresado por el usuario

        Entidades.ContratoEmpresas _ContEmp = new Entidades.ContratoEmpresas();
        IEnumerable <KeyValuePair <string, object> > entityKeyValues =
            new KeyValuePair <string, object>[] {
            new KeyValuePair <string, object>("IdEmpresa", idContratista_Ingresado)
        };
        EntityKey         key  = new EntityKey("EntidadesConosud.Empresa", entityKeyValues);
        Entidades.Empresa _emp = (Entidades.Empresa)Contexto.GetObjectByKey(key);

        _ContEmp.EsContratista = true;
        _ContEmp.Contrato      = _Contrato;
        _ContEmp.Empresa       = _emp;

        Contexto.AddObject("EntidadesConosud.ContratoEmpresas", _ContEmp);

        #endregion

        #region Genero el ENCABEZADO Y LAS HOJAS con los datos ingresado por el usuario

        DateTime FFin = DateTime.Now;
        if (_Contrato.Prorroga.HasValue)
        {
            FFin = _Contrato.Prorroga.Value;
        }
        else
        {
            FFin = _Contrato.FechaVencimiento.Value;
        }

        DateTime FechaInicio = new DateTime(_Contrato.FechaInicio.Value.Year, _Contrato.FechaInicio.Value.Month, 1);

        Helpers.GenerarHojadeRuta(Contexto, FechaInicio, FFin, _ContEmp);

        #endregion

        Contexto.SaveChanges();
        CargarSessionContratos();
        RadGrid1.Rebind();
    }
    protected void btnEliminar_Click(object sender, EventArgs e)
    {
        try
        {
            /// Logica:
            /// Dar la posibilidad de asignar y desadignar las empresas a un contrato haciendo que las hojas de ruta
            /// respondan a las fechas de ejecución de la accion:
            /// Asignacion: solo se dejan las hojas de ruta desde la fecha de sistema hasta la finalización del contratl.
            /// Desasignacion: se deben eliminar las hojas de ruta y sus relaciones desde el mes siguiente a la ejecución de dicha acción.

            Entidades.EntidadesConosud dcAux = new Entidades.EntidadesConosud();

            foreach (GridDataItem item in gvSubContratistas.Items)
            {
                if ((item.FindControl("chkSeleccion") as CheckBox).Checked)
                {
                    int      año = txtFechaBaja.SelectedDate.Value.AddMonths(1).Year;
                    int      mes = txtFechaBaja.SelectedDate.Value.AddMonths(1).Month;
                    DateTime fechaEliminacion = new DateTime(año, mes, 1, 0, 0, 0);

                    long IdContratoEmpresas = long.Parse(gvSubContratistas.Items[item.DataSetIndex].GetDataKeyValue("IdContratoEmpresas").ToString());

                    List <Entidades.CabeceraHojasDeRuta> cabEliminar = (from C in dcAux.CabeceraHojasDeRuta
                                                                        where (C.Periodo >= fechaEliminacion) &&
                                                                        C.ContratoEmpresas.IdContratoEmpresas == IdContratoEmpresas
                                                                        select C).ToList <Entidades.CabeceraHojasDeRuta>();



                    foreach (Entidades.CabeceraHojasDeRuta cab in cabEliminar)
                    {
                        long IdCabeceraEliminar = cab.IdCabeceraHojasDeRuta;

                        /// Eliminacion de los legajos asociados
                        var contratoLegajos = (from CL in dcAux.ContEmpLegajos
                                               where CL.CabeceraHojasDeRuta.IdCabeceraHojasDeRuta == IdCabeceraEliminar
                                               select CL);

                        foreach (ContEmpLegajos itemContLeg in contratoLegajos)
                        {
                            dcAux.DeleteObject(itemContLeg);
                        }

                        /// YA NO SE DEBERIAN BORRAR LOS COMENTARIO GENERALES
                        /// YA QUE ES POSIBLE QUE QUEDEN HOJAS DE RUTA ANTERIORES
                        /// AL MES ACTUAL.
                        ///// Eliminacion de los comentarios generales asociados a la hoja de ruta
                        //var ComentariosGrales = (from CL in dcAux.ComentariosGral
                        //                         where CL.ContratoEmpresas.IdContratoEmpresas == IdContratoEmpresas
                        //                         select CL);

                        //foreach (ComentariosGral itemComent in ComentariosGrales)
                        //{
                        //    dcAux.DeleteObject(itemComent);
                        //}


                        // Eliminacion del contrato empresa
                        dcAux.DeleteObject(cab);
                    }

                    dcAux.SaveChanges();


                    /// Si despues de eliminar las cabeceras seleccionadas, la empresa subcontratista
                    /// se queda sin cabeceras, entoces borro el contrato de la misma, ya que no tiene
                    /// sentido que siga asignado.
                    List <Entidades.CabeceraHojasDeRuta> CabEliminar = (from C in dcAux.CabeceraHojasDeRuta
                                                                        where C.ContratoEmpresas.IdContratoEmpresas == IdContratoEmpresas
                                                                        select C).ToList <Entidades.CabeceraHojasDeRuta>();

                    if (CabEliminar.Count == 0)
                    {
                        // Eliminacion de los comentarios Generales
                        var ComentariosGrales = (from CL in dcAux.ComentariosGral
                                                 where CL.ContratoEmpresas.IdContratoEmpresas == IdContratoEmpresas
                                                 select CL);

                        foreach (ComentariosGral itemComent in ComentariosGrales)
                        {
                            dcAux.DeleteObject(itemComent);
                        }


                        // Eliminacion del contrato empresa
                        Entidades.ContratoEmpresas ContratoEliminar = (from C in dcAux.ContratoEmpresas
                                                                       where C.IdContratoEmpresas == IdContratoEmpresas
                                                                       select C).FirstOrDefault();
                        dcAux.DeleteObject(ContratoEliminar);


                        dcAux.SaveChanges();
                    }
                }
            }

            ScriptManager.RegisterStartupScript(Page, typeof(Page), "ocultar", "CloseWindows();", true);
        }
        catch
        { }
    }