public static bool AsignarTareasAutomaticamente(double cant_horas_solapamiento) { List <SUBPROYECTO> subproyectosOrdenados = ControladorSubproyecto.ObtenerSubproyectosConActividadesActivos(); EliminarDetalleRecursoProyectosActivos(); bool salida = true; foreach (var item in subproyectosOrdenados) { List <Tuple <SUBPROYECTO, int> > estrucuraProyecto = new List <Tuple <SUBPROYECTO, int> >(); List <SUBPROYECTO> listaSubproyectos = ControladorSubproyecto.ObtenerEstructuraSubproyectos(estrucuraProyecto, item, 1).OrderByDescending(x => x.Item2).Select(x => x.Item1).ToList(); listaSubproyectos = listaSubproyectos.OrderByDescending(x => x.horas_estimadas).ToList(); foreach (var sub in listaSubproyectos) { if (!AsignarSubproyecto(sub, cant_horas_solapamiento)) { salida = false; } } } ControladorProyecto.ActualizarHorasProyectosActivos(); return(salida); }
private void GenerarEstructuraCATIA(Product product, int id_proyecto, int id_subproyecto, bool esProyecto) { var controladorSubproyecto = new ControladorSubproyecto(); var controladorProyecto = new ControladorProyecto(); var subproyectosHijos = new List <SUBPROYECTO>(); //Verifica que la raiz del arbol sea un proyecto, o un subroyecto, y si es este ultimo //verifica si es unidad o no. if (esProyecto) { if (id_subproyecto != null & id_subproyecto > 1) { SUBPROYECTO subproyecto = ControladorSubproyecto.BuscarPorId(id_subproyecto); { product = CreateProduct(null, subproyecto.nombre); } } else { Proyecto proyecto = ControladorProyecto.ObtenerPorID(id_proyecto); product = CreateProduct(null, ((Proyecto)proyecto).nombre_proyecto); } } subproyectosHijos = ControladorSubproyecto.ObtenerPorProyecto(id_proyecto, id_subproyecto); if (subproyectosHijos.Count > 0) { foreach (var subproyecto in subproyectosHijos) { Product prod = CreateProduct(product, subproyecto.nombre); GenerarEstructuraCATIA(prod, id_proyecto, subproyecto.id_subproyecto, false); } } }
public bool ExportarDatosProyecto(Proyecto proyecto, bool abrir) { _proyAux = proyecto; OpenFile(); IXLWorksheet _worksheetProyecto = _xlworkbook.Worksheet("PROYECTO"); List <Tuple <SUBPROYECTO, int> > estructura; estructura = _controladorProyecto.ObtenerEstructuraProyecto(proyecto); ExportarControlesPredeterminados(_worksheetProyecto, proyecto); int fila = 3; foreach (Tuple <SUBPROYECTO, int> subproyecto in estructura) { //No las unidades if (subproyecto.Item1.id_tipo_subproyecto != 4) { //Formato _worksheetProyecto.Range(_worksheetProyecto.Cell(fila, 1), _worksheetProyecto.Cell(fila, 7)).Style.Border.InsideBorder = XLBorderStyleValues.Thin; _worksheetProyecto.Range(_worksheetProyecto.Cell(fila, 1), _worksheetProyecto.Cell(fila, 7)).Style.Border.OutsideBorder = XLBorderStyleValues.Thin; _worksheetProyecto.Cell(fila, 1).Value = subproyecto.Item1.id_subproyecto; _worksheetProyecto.Cell(fila, 2).Value = subproyecto.Item2; _worksheetProyecto.Cell(fila, 3).Value = subproyecto.Item1.nombre; _worksheetProyecto.Cell(fila, 4).Value = ControladorSubproyecto.ObtenerTipoSubproyecto(subproyecto.Item1).id_tipo_subproyecto > 0 ? ControladorSubproyecto.ObtenerTipoSubproyecto(subproyecto.Item1).nombre_tipo_subproyecto : "Sin asignar"; _worksheetProyecto.Range(_worksheetProyecto.Cell(fila, 5), _worksheetProyecto.Cell(fila, 4)).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; _worksheetProyecto.Range(_worksheetProyecto.Cell(fila, 5), _worksheetProyecto.Cell(fila, 4)).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center; _worksheetProyecto.Cell(fila, 5).Value = subproyecto.Item1.genera_ot.Value & subproyecto.Item1.ot > 0 ? subproyecto.Item1.ot.ToString() : "NO"; _worksheetProyecto.Cell(fila, 6).Value = subproyecto.Item1.ot_cliente; _worksheetProyecto.Cell(fila, 7).Value = ControladorSubproyecto.ObtenerHorasOrdenCompra(subproyecto.Item1); fila++; } if (/*Simulacion*/ subproyecto.Item1.id_tipo_subproyecto == 7 || /*Dispositivo*/ subproyecto.Item1.id_tipo_subproyecto == 3) { GenerarDatosUnidades(subproyecto.Item1); } } if (CloseFile()) { if (abrir) { System.Diagnostics.Process.Start(_proyAux.path + "\\" + _proyAux.nombre_proyecto + ".xlsx"); } return(true); } else { return(false); } }
/// <summary> /// Verifica si la actividad tiene asignación automática, y si no tiene /// se lo asigna a todos sus miebros. /// </summary> /// <param name="act"></param> /// <returns></returns> public static bool VerificarAsignacionAutomatica(Actividad_proyecto act) { var subproyecto = ControladorSubproyecto.BuscarPorId(act.id_subproyecto.Value); if (subproyecto.asignacion_automatica) { Usuario_Proyecto _Usuario_proyecto = new Usuario_Proyecto(); List <USUARIO> odt_miembros_subproyectos = ControladorSubproyecto.ObtenerMiembrosIndirectos(subproyecto); foreach (USUARIO row in odt_miembros_subproyectos) { var detalle = new Detalle_recurso() { realizada = false, tipo = "automatico", porcentaje_avance = 0, id_actividad_proyecto = act.id_actividad_proyecto, motivo = "- Asignada automáticamente - ", cantidad_hora = Convert.ToDecimal(ControladorActividades.ObtenerHorasPorOrdenCompra(act)), id_usuario = Convert.ToInt32(row.id_usuario), fecha_inicio = null, fecha_fin = null }; ControladorTareas.Insertar(detalle); } return(true); } return(false); }
/// <summary> /// Asigna una OT al subproyecto. /// </summary> /// <param name="idSubproyecto"></param> /// <returns></returns> public static bool AsignarOT(int idSubproyecto) { if (ControladorSubproyecto.BuscarPorId(idSubproyecto).ot == null || ControladorSubproyecto.BuscarPorId(idSubproyecto).ot == 0) { return(SubproyectoBD.AsignarOt(idSubproyecto)); } return(false); }
/// <summary> /// Completar /// </summary> /// <param name="actividad"></param> /// <returns></returns> public static bool AsignarActividadProyecto(Actividad_proyecto actividad, double cantidad_horas_solapamiento) { List <Tuple <USUARIO, decimal> > miembros_habilitados = ControladorSubproyecto.ObtenerMiemrosHabilitadosParaAsignar(actividad); DateTime fecha_inicio; DateTime fecha_fin; double tiempo_trabajado, tiempo_total; tiempo_total = ControladorActividades.ObtenerHorasTotalesActividad(actividad); tiempo_trabajado = 0;//ControladorActividades.ObtenerHorasConsumidas(actividad); //Modificar este metodo para que verifique fecha inicio mayor a la actual. fecha_inicio = ControladorActividades.ObtenerFechaInicioMinima(actividad); //Devuelve la fecha fin ideal fecha_fin = ControladorCalendario.ObtenerFechaFinMinima(actividad, fecha_inicio).Value; List <Tuple <Tuple <USUARIO, decimal>, Tuple <DateTime, DateTime> > > listaPorFechaFin; List <Tuple <Tuple <USUARIO, decimal>, Tuple <DateTime, DateTime> > > listaPorCalifi; List <Tuple <Tuple <USUARIO, decimal>, Tuple <DateTime, DateTime> > > listaOrdenada = new List <Tuple <Tuple <USUARIO, decimal>, Tuple <DateTime, DateTime> > >(); if (!ControladorActividades.EstaCompletada(actividad)) { foreach (var miem in miembros_habilitados) { DateTime fecha = ObtenerFechaInicioMinimaUsuario(miem.Item1, fecha_inicio, tiempo_total - tiempo_trabajado, actividad, fecha_fin); DateTime?fecha_fin_usuario = ControladorCalendario.CalcularFechaFin(actividad, miem.Item1, fecha, null); listaOrdenada.Add(new Tuple <Tuple <USUARIO, decimal>, Tuple <DateTime, DateTime> >(miem, new Tuple <DateTime, DateTime>(fecha, fecha_fin_usuario.Value))); } if (listaOrdenada.Count > 0) { //Ordena la lista primero por fecha de fin, luego por calificaciones, el que tiene mas primero. listaOrdenada = listaOrdenada.OrderBy(x => x.Item2.Item2).ThenByDescending(x => x.Item1.Item2).ToList(); listaPorFechaFin = listaOrdenada.OrderBy(x => x.Item2.Item2).ToList(); listaPorCalifi = listaOrdenada.OrderByDescending(x => x.Item1.Item2).ToList(); if (listaOrdenada.ElementAt(0).Item2.Item2.Subtract(listaPorCalifi.ElementAt(0).Item2.Item2).TotalHours <= cantidad_horas_solapamiento) { AsignarActividad(actividad, listaPorCalifi.ElementAt(0).Item1.Item1, listaPorCalifi.ElementAt(0).Item2.Item1, listaPorCalifi.ElementAt(0).Item2.Item2); } else { AsignarActividad(actividad, listaOrdenada.ElementAt(0).Item1.Item1, listaOrdenada.ElementAt(0).Item2.Item1, listaOrdenada.ElementAt(0).Item2.Item2); } return(true); } return(false); } return(false); }
public List <Tuple <SUBPROYECTO, int> > ObtenerEstructuraProyecto(Proyecto proyecto) { List <Tuple <SUBPROYECTO, int> > estrucutaProyecto = new List <Tuple <SUBPROYECTO, int> >(); List <SUBPROYECTO> listaSubproyecto = ObtenerSubproyectosHijos(proyecto); foreach (var subpro in listaSubproyecto) { ControladorSubproyecto.ObtenerEstructuraSubproyectos(estrucutaProyecto, subpro, 1); } return(estrucutaProyecto); }
public static double ObtenerHorasMinimasProyecto(Proyecto proy) { List <SUBPROYECTO> subproyectos = ObtenerSubproyectosHijos(proy); double total = 0; foreach (var subp in subproyectos) { total += ControladorSubproyecto.ObtenerHorasMinimasSubproyecto(subp); } return(total); }
public List <ClaseExpGantt> ObtenerEstructuraProyectoConActividades(Proyecto proyecto) { List <ClaseExpGantt> estrucutaProyecto = new List <ClaseExpGantt>(); List <SUBPROYECTO> listaSubproyecto = ObtenerSubproyectosHijos(proyecto); foreach (var subpro in listaSubproyecto) { ControladorSubproyecto.ObtenerEstructuraSubproyectosConActividades(estrucutaProyecto, subpro, 1); } return(estrucutaProyecto); }
public static void ActualizarHorasSubproyecto(Proyecto proy) { List <SUBPROYECTO> subproyectos = ObtenerSubproyectosHijos(proy); decimal total = 0; foreach (var subp in subproyectos) { total += ControladorSubproyecto.ActualizarHorasSubproyecto(subp); } proy.total_hora = total; Update(proy); }
public static void GenerarCarpetasProyecto(string path, int id_proyecto, int?id_subproyecto, bool esProyecto) { var subproyectosHijos = new List <SUBPROYECTO>(); if (esProyecto) { path = path + "/" + ControladorProyecto.ObtenerPorID(id_proyecto).nombre_proyecto; Directory.CreateDirectory(path); } subproyectosHijos = ControladorSubproyecto.ObtenerPorProyecto(id_proyecto, id_subproyecto); if (subproyectosHijos.Count > 0) { foreach (var subproyecto in subproyectosHijos) { Directory.CreateDirectory(path + "/" + subproyecto.nombre); GenerarCarpetasProyecto(path + "/" + subproyecto.nombre, id_proyecto, subproyecto.id_subproyecto, false); } } }
public static void AsignarProyecto(int id_proyecto) { Proyecto proyecto = ControladorProyecto.ObtenerPorID(id_proyecto); List <SUBPROYECTO> lista = ControladorProyecto.ObtenerSubproyectosHijos(proyecto); EliminarDetalleRecursoProyecto(proyecto); foreach (var item in lista) { List <Tuple <SUBPROYECTO, int> > estrucuraProyecto = new List <Tuple <SUBPROYECTO, int> >(); List <SUBPROYECTO> listaSubproyectos = ControladorSubproyecto.ObtenerEstructuraSubproyectos(estrucuraProyecto, item, 1).OrderByDescending(x => x.Item2).Select(x => x.Item1).ToList(); listaSubproyectos.OrderByDescending(x => x.horas_estimadas).ToList(); foreach (var sub in listaSubproyectos) { AsignarSubproyecto(sub, 0); } } }
public static void SubirOrdenActividad(Actividad_proyecto actividad) { ActualizarOrdenActividades(ControladorSubproyecto.BuscarPorId(actividad.id_subproyecto.Value)); List <Actividad_proyecto> actividades = ObtenerActividadesProyectoDeSubproyecto(ControladorSubproyecto.BuscarPorId(actividad.id_subproyecto.Value)).OrderBy(x => x.orden).ToList(); int indexOf = actividades.IndexOf(actividades.Where(x => x.id_actividad_proyecto == actividad.id_actividad_proyecto).FirstOrDefault()); if (indexOf == 0) { return; } actividades[indexOf].orden--; ControladorActividades.ActualizarActividadProyecto(actividades[indexOf]); if (indexOf - 1 >= 0) { actividades[indexOf - 1].orden++; ControladorActividades.ActualizarActividadProyecto(actividades[indexOf - 1]); } }
internal static void ActualizarHorasProyectosActivos() { List <Proyecto> proyectos_activos = ObtenerProyectosActivos(); decimal totalProy = 0; decimal totalSub = 0; foreach (var proyecto in proyectos_activos) { totalProy = 0; List <SUBPROYECTO> subproyectos = ObtenerSubproyectosHijos(proyecto); foreach (var subpro in subproyectos) { List <SUBPROYECTO> subproyectosHijos = ControladorSubproyecto.ObtenerSubproyectosHijos(subpro); List <Actividad_proyecto> actividades = ControladorActividades.ObtenerActividadesProyectoDeSubproyecto(subpro); List <SUBPROYECTO> hijos; totalSub = 0; //Función recursiva para calcular las horas de los subproyectos hijos foreach (var sub in subproyectosHijos) { totalSub += ControladorSubproyecto.ActualizarHorasSubproyecto(sub); } //Recorre las actividades y suma sus horas foreach (var item in actividades) { item.cantidad_hora = (decimal)ControladorActividades.ObtenerHorasTotalesActividad(item); ControladorActividades.ActualizarActividadProyecto(item); totalSub += (decimal)ControladorActividades.ObtenerHorasTotalesActividad(item); } totalProy += totalSub; subpro.horas_estimadas = totalSub; ControladorSubproyecto.ActualizarSubproyecto(subpro); } proyecto.total_hora = totalProy; Update(proyecto); } }
public static DateTime?CalcularFechaFinSubproyecto(SUBPROYECTO subproyecto) { List <ClaseExpGantt> exp = new List <ClaseExpGantt>(); ControladorSubproyecto.ObtenerEstructuraSubproyectosConActividades(exp, subproyecto, 1); List <DateTime?> fecha = new List <DateTime?>(); foreach (var item in exp) { if (item.actividad != null) { Detalle_recurso tarea = ObtenerPorActividad(item.actividadProy); if (tarea != null && tarea.fecha_fin.HasValue) { fecha.Add(tarea.fecha_fin.Value); } } } fecha.Sort((a, b) => a.Value.CompareTo(b.Value)); return(fecha.Count > 0 ? fecha.ElementAt(fecha.Count - 1) : subproyecto.fecha_inicio_estimada.Value); }
private void ActualizarDesdeBaseDatos() { IXLWorksheet _worksheetProyecto = _xlworkbook.Worksheet("SOPORTE"); List <USUARIO> usuarios = ControladorUsuarios.ObtenerTodosUsuarios(); List <TIPO_SUBPROYECTO> tipoSubproyectos = ControladorSubproyecto.ObtenerTiposSubproyecto(); List <HORA_TIPO_SUBPROYECTO> horaTipoSubproyectos = ControladorSubproyecto.ObtenerHorasTipoUnidad(); List <Control> _controles = new ControladorControles().ObtenerTodos(); int fila = 2; foreach (USUARIO usuario in usuarios) { _worksheetProyecto.Cell(fila, 3).Value = usuario.nombre + " " + usuario.apellido; fila++; } fila = 2; foreach (TIPO_SUBPROYECTO tipoSub in tipoSubproyectos) { _worksheetProyecto.Cell(fila, 4).Value = tipoSub.nombre_tipo_subproyecto; fila++; } fila = 2; foreach (HORA_TIPO_SUBPROYECTO horaUnidad in horaTipoSubproyectos) { _worksheetProyecto.Cell(fila, 5).Value = horaUnidad.nombre; _worksheetProyecto.Cell(fila, 6).Value = horaUnidad.horas; fila++; } fila = 2; foreach (Control control in _controles) { _worksheetProyecto.Cell(fila, 7).Value = control.nombre_control; fila++; } //_xlworkbook.Save(); }
private void GenerarDatosUnidades(SUBPROYECTO sub) { IXLWorksheet _worksheetProyecto = _xlworkbook.Worksheet("Template Dispositivo"); IXLWorksheet _worksheetSoporte = _xlworkbook.Worksheet("Soporte"); IXLWorksheet sheetUnidad = _worksheetProyecto.CopyTo(sub.nombre.Length > 31 - sub.ot.Value.ToString().Length - 3 ? sub.ot + " - " + sub.nombre.Substring(0, 31 - sub.ot.Value.ToString().Length - 3) : sub.ot + " - " + sub.nombre, _worksheetProyecto.Position); sheetUnidad.Unhide(); List <HORA_TIPO_SUBPROYECTO> _HORAS = ControladorSubproyecto.ObtenerHorasTipoUnidad(); //Formato var dataV = sheetUnidad.Range("'+" + sheetUnidad.Name + "'!C9:C68").SetDataValidation(); dataV.List(_worksheetSoporte.Range(_worksheetSoporte.Cell(2, 5), _worksheetSoporte.Cell(_HORAS.Count + 2, 5))); dataV.IgnoreBlanks = true; dataV.InCellDropdown = true; dataV.ShowInputMessage = true; dataV.ShowErrorMessage = true; dataV.ErrorStyle = ClosedXML.Excel.XLErrorStyle.Stop; sheetUnidad.Cell(1, 3).Value = sub.ot; sheetUnidad.Cell(2, 3).Value = sub.ot_cliente; sheetUnidad.Cell(3, 3).Value = sub.horas_orden_compra.HasValue ? sub.horas_orden_compra : null; int fila = 9; List <SUBPROYECTO> subproyectos = ControladorSubproyecto.ObtenerSubproyectosHijos(sub); List <Actividad_proyecto> actividades; foreach (var subproyecto in subproyectos) { sheetUnidad.Cell(fila, 1).Value = subproyecto.id_subproyecto; sheetUnidad.Cell(fila, 2).Value = subproyecto.nombre; HORA_TIPO_SUBPROYECTO hora = ControladorSubproyecto.ObtenerHoraTipoSubproyecto(subproyecto.id_hora_tipo_subproyecto); if (hora != null) { sheetUnidad.Cell(fila, 3).Value = hora.nombre; //sheetUnidad.Cell(fila, 4).Value = hora.horas; } else { sheetUnidad.Cell(fila, 3).Value = ""; sheetUnidad.Cell(fila, 4).Value = ControladorSubproyecto.CalcularHorasOrdenCompra(subproyecto); } sheetUnidad.Cell(fila, 5).Value = decimal.Round((decimal)ControladorSubproyecto.CalcularHorasOrdenCompra(subproyecto), 2); actividades = ControladorSubproyecto.ObtenerActividades(subproyecto); int columna = 0; foreach (var acti in actividades) { switch (ControladorActividades.ObtenerActividad(acti).id_tipo_actividad) { //Concepto case 2: columna = 9; break; case 3: columna = 22; break; case 4: columna = 35; break; default: columna = -1; break; } if (columna > 0) { decimal horaConsumida = (decimal)(Math.Round(ControladorActividades.ObtenerHorasConsumidas(acti, "prod"), 2)); decimal horaAsignada = (decimal)ControladorActividades.ObtenerHorasAsignadasPorOrdenCompra(acti) * (decimal)0.85; USUARIO responsablePro = ControladorActividades.ObtenerResponsableProduccion(acti.id_actividad_proyecto); sheetUnidad.Cell(fila, columna + 1).DataType = XLCellValues.Number; sheetUnidad.Cell(fila, columna + 1).Value = horaConsumida; sheetUnidad.Cell(fila, columna + 2).Value = decimal.Round(horaAsignada, 2); sheetUnidad.Cell(fila, columna + 3).Value = horaAsignada > 0 ? decimal.Round(horaConsumida / horaAsignada * 100, 2) + "%" : "0%"; sheetUnidad.Cell(fila, columna + 4).Value = responsablePro != null ? responsablePro.nombre + " " + responsablePro.apellido : "Sin asignar"; sheetUnidad.Cell(fila, columna + 4).WorksheetColumn().AdjustToContents(); columna += 4; //Control horaConsumida = (decimal)(Math.Round(ControladorActividades.ObtenerHorasConsumidas(acti, "calidad"), 2)); horaAsignada = (decimal)(ControladorActividades.ObtenerHorasAsignadasPorOrdenCompra(acti) * 0.10); responsablePro = ControladorActividades.ObtenerResponsableControln(acti.id_actividad_proyecto); sheetUnidad.Cell(fila, columna + 1).DataType = XLCellValues.Number; sheetUnidad.Cell(fila, columna + 1).Value = horaConsumida; sheetUnidad.Cell(fila, columna + 2).Value = decimal.Round(horaAsignada, 2); sheetUnidad.Cell(fila, columna + 3).Value = horaAsignada > 0 ? decimal.Round(horaConsumida / horaAsignada * 100, 2) + "%" : "0%"; sheetUnidad.Cell(fila, columna + 4).Value = responsablePro != null ? responsablePro.nombre + " " + responsablePro.apellido : "Sin asignar"; sheetUnidad.Cell(fila, columna + 4).WorksheetColumn().AdjustToContents(); columna += 4; //Correccion horaConsumida = (decimal)(Math.Round(ControladorActividades.ObtenerHorasConsumidas(acti, "correc"), 2)); horaAsignada = (decimal)(ControladorActividades.ObtenerHorasAsignadasPorOrdenCompra(acti) * 0.05); responsablePro = ControladorActividades.ObtenerResponsableCorreccion(acti.id_actividad_proyecto); sheetUnidad.Cell(fila, columna + 1).DataType = XLCellValues.Number; sheetUnidad.Cell(fila, columna + 1).Value = horaConsumida; sheetUnidad.Cell(fila, columna + 2).Value = decimal.Round(horaAsignada, 2); sheetUnidad.Cell(fila, columna + 3).Value = horaAsignada > 0 ? decimal.Round(horaConsumida / horaAsignada * 100, 2) + "%" : "0%"; sheetUnidad.Cell(fila, columna + 4).Value = responsablePro != null ? responsablePro.nombre + " " + responsablePro.apellido : "Sin asignar"; sheetUnidad.Cell(fila, columna + 4).WorksheetColumn().AdjustToContents(); } } fila++; } //Otras actividades fila = 9; List <Actividad_proyecto> listaActividades = ControladorSubproyecto.ObtenerActividades(sub); foreach (Actividad_proyecto actividad in listaActividades) { sheetUnidad.Cell(fila, 7).Value = ControladorActividades.ObtenerActividad(actividad).nombre_actividad; fila++; } }
public static bool TieneLogueoPermitido(Detalle_recurso dr) { Actividad_proyecto ap = ActividadProyectoDB.ObtenerActividadProyecto(dr.id_actividad_proyecto.Value); SUBPROYECTO subproyecto = ControladorSubproyecto.BuscarPorId(ap.id_subproyecto.Value); Proyecto p = ControladorProyecto.ObtenerPorID(ap.id_proyecto.Value); Tipo_actividad ta = ControladorActividades.ObtenerTipoActividad(ap); Movimiento_voz mv = ControladorActividades.ObtenerMovimientoVoz(ap); bool decision = false; int orden = (int)ap.orden; if (dr.realizada.Value) { return(false); } if (dr.forzada && !dr.realizada.Value) { decision = true; } if (ap.no_conformidad) { return(false); } if (p.activo.HasValue && !p.activo.Value) { return(false); } if (orden == 1) { decision = true; } var anterior = ControladorActividades.ObtenerActividadAnterior(ap); if (anterior == null) { return(true); } if (ControladorActividades.TieneControl_prod_1_Completado(anterior)) { decision = true; } else { decision = false; } ///////// TODO - CAMBIAR A POR ORDEN //if (ta.descripcion.ToLower().Contains("conce")) //{ // if(mv == null || !mv.control_prod.Value) // { // decision = true; // } //} //else if (ta.descripcion.ToLower().Contains("prep")) //{ // Tipo_actividad tipo_act_concepto = ControladorActividades.ObtenerTipoActividad("concepto"); // Actividad_proyecto concepto = ControladorSubproyecto.ObtenerActividaHijaDeTipo(subproyecto, tipo_act_concepto); // if (ControladorActividades.TieneControl_prod_1_Completado(concepto) && !ControladorActividades.TieneControl_prod_1_Completado(ap)) // { // decision = true; // } //} //else if (ta.descripcion.ToLower().Contains("deta")) //{ // Tipo_actividad tipo_act_concepto = ControladorActividades.ObtenerTipoActividad("concepto"); // Tipo_actividad tipo_act_preparacion = ControladorActividades.ObtenerTipoActividad("preparac"); // Actividad_proyecto concepto = ControladorSubproyecto.ObtenerActividaHijaDeTipo(subproyecto, tipo_act_concepto); // Actividad_proyecto preparacion = ControladorSubproyecto.ObtenerActividaHijaDeTipo(subproyecto, tipo_act_preparacion); // if (ControladorActividades.TieneControl_prod_1_Completado(concepto) && ControladorActividades.TieneControl_prod_1_Completado(preparacion) && !ControladorActividades.TieneControl_prod_1_Completado(ap)) // { // decision = true; // } //} //else //{ // decision = true; //} ////////////// END TODO if (decision) { if (dr.id_estado.HasValue) { if (dr.id_estado <= 2) { return(true); } return(false); } else { return(decision); } } return(false); }
public static DateTime ObtenerFechaInicioMinima(Actividad_proyecto actividad) { //Si la actividad es Concepto, le fecha minima de inicio es la fecha del proyecto //Si la actividad es Preparacion, la fecha minima de inicio es la fecha del proyecto //mas el tiempo de concepto, pero si el concepto ya esta asignado, que la fecha minima de inicio sea la fecha //fin de concepto.. Lo mismo para preparacion. String tipo_actividad = ControladorActividades.ObtenerTipoActividad(actividad).descripcion.ToLower(); SUBPROYECTO sub = ControladorSubproyecto.BuscarPorId(actividad.id_subproyecto.Value); List <Detalle_recurso> tareas = new List <Detalle_recurso>(); DateTime fecha; Actividad_proyecto act_anterior = ControladorActividades.ObtenerActividadAnterior(actividad); if (act_anterior != null) { double tiempo_actividad; //Suma los tiempos del var act_anterior_aux = act_anterior; tiempo_actividad = 0; do { tiempo_actividad = ObtenerHorasTotalesActividad(act_anterior_aux); act_anterior_aux = ControladorActividades.ObtenerActividadAnterior(act_anterior_aux); } while (act_anterior_aux != null); tareas = obtenerTareasDeActividad(act_anterior); if (tareas.Count == 0) { //No esta asignada, se asigna a la fecha de proyecto + tiempo_actividad fecha = ControladorCalendario.CalcularFechaFinDesdeProyecto(actividad, tiempo_actividad).Value; } else { //Está asignada, se asigna a la fecha fin de la asignacion de actividad anterior. tareas = tareas.OrderByDescending(x => x.fecha_fin).ToList(); fecha = tareas.First().fecha_fin.Value; } } else { fecha = ControladorProyecto.ObtenerPorID(actividad.id_proyecto.Value).fecha_inicio.Value; } //if (tipo_actividad.Contains("prep") || (tipo_actividad.Contains("deta"))) //{ // List<AvanceSubproyecto> avance; // double tiempo_actividad; // if (tipo_actividad.Contains("deta")) // { // tiempo_actividad = ObtenerHorasTotalesActividad(ObtenerActividadPorTipoActividad(sub,acti_concepto)) + ObtenerHorasTotalesActividad(ObtenerActividadPorTipoActividad(sub, acti_prepa)); // tareas = obtenerTareasDeActividad(ObtenerActividadPorTipoActividad(sub, acti_prepa)); // } // else // { // tiempo_actividad = ObtenerHorasTotalesActividad(ObtenerActividadPorTipoActividad(sub, acti_concepto)); // tareas = obtenerTareasDeActividad(ObtenerActividadPorTipoActividad(sub, acti_concepto)); // } // if (tareas.Count == 0) // { // //No esta asignada, se asigna a la fecha de proyecto + tiempo_actividad // fecha = ControladorCalendario.CalcularFechaFinDesdeProyecto(actividad, tiempo_actividad).Value; // }else // { // //Está asignada, se asigna a la fecha fin de la asignacion de actividad anterior. // tareas = tareas.OrderByDescending(x => x.fecha_fin).ToList(); // fecha = tareas.First().fecha_fin.Value; // } //} //else //Es concepto, o cualquier otro tipo de actividad, inicia cuando lo hace el proyecto. //{ // fecha = ControladorProyecto.ObtenerPorID(actividad.id_proyecto.Value).fecha_inicio.Value; //} return(fecha < DateTime.Now ? DateTime.Now : fecha); }
public static double ObtenerHorasAsignadasPorOrdenCompra(Actividad_proyecto act_pto) { return(ActividadProyectoDB.ObtenerHorasAsignadasPorOrdenCompra(act_pto, (decimal)ControladorSubproyecto.ObtenerHorasMinimasSubproyecto(ControladorSubproyecto.BuscarPorId(ControladorSubproyecto.BuscarPorId(act_pto.id_subproyecto.Value).id_subproyecto_padre.Value)))); }
public bool ExportarDatosProyecto(Proyecto proyecto, bool abrir) { _proyAux = proyecto; OpenFile(); IXLWorksheet _worksheetProyecto = _xlworkbook.Worksheet("Tabla_Tareas"); List <ClaseExpGantt> estructura; estructura = _controladorProyecto.ObtenerEstructuraProyectoConActividades(proyecto); //ExportarControlesPredeterminados(_worksheetProyecto, proyecto); int fila = 2; foreach (ClaseExpGantt subproyecto in estructura) { //No las unidades //if (subproyecto.Item1.id_tipo_subproyecto != 4) //{ //Formato //_worksheetProyecto.Range(_worksheetProyecto.Cell(fila, 1), _worksheetProyecto.Cell(fila, 7)).Style.Border.InsideBorder = XLBorderStyleValues.Thin; //_worksheetProyecto.Range(_worksheetProyecto.Cell(fila, 1), _worksheetProyecto.Cell(fila, 7)).Style.Border.OutsideBorder = XLBorderStyleValues.Thin; if (subproyecto.subproyecto != null) { _worksheetProyecto.Cell(fila, 1).Value = estructura.IndexOf(subproyecto) + 1; _worksheetProyecto.Cell(fila, 2).Value = "Sí"; _worksheetProyecto.Cell(fila, 3).Value = "Programada automáticamente"; _worksheetProyecto.Cell(fila, 4).Value = subproyecto.subproyecto.nombre; _worksheetProyecto.Cell(fila, 5).Value = ControladorSubproyecto.ObtenerHorasOrdenCompra(subproyecto.subproyecto) + " horas"; _worksheetProyecto.Cell(fila, 6).Value = subproyecto.subproyecto.fecha_inicio_estimada; _worksheetProyecto.Cell(fila, 7).Value = subproyecto.subproyecto.fecha_fin_estimada; _worksheetProyecto.Cell(fila, 9).Value = subproyecto.nivel; } else { _worksheetProyecto.Cell(fila, 1).Value = estructura.IndexOf(subproyecto) + 1; _worksheetProyecto.Cell(fila, 2).Value = "Sí"; _worksheetProyecto.Cell(fila, 3).Value = "Programada automáticamente"; _worksheetProyecto.Cell(fila, 4).Value = subproyecto.actividad.nombre_actividad + " - " + subproyecto.usuario.nombre + " " + subproyecto.usuario.apellido; _worksheetProyecto.Cell(fila, 5).Value = subproyecto.tarea.cantidad_hora + " horas"; _worksheetProyecto.Cell(fila, 6).Value = subproyecto.tarea.fecha_inicio; _worksheetProyecto.Cell(fila, 7).Value = subproyecto.tarea.fecha_fin; _worksheetProyecto.Cell(fila, 9).Value = subproyecto.nivel; } fila++; } if (CloseFile()) { if (abrir) { System.Diagnostics.Process.Start(path + "\\" + "Prueba" + ".xlsx"); } return(true); } else { return(false); } }
public void AgregarProyectoExcel(Entidades.Proyecto proyecto) { var orden = new int[100]; orden[0] = 1; _proyAux = proyecto; OpenFile(proyecto.path + "\\" + proyecto.nombre_proyecto + ".xlsx"); foreach (IXLWorksheet worksheet in _xlworkbook.Worksheets) { if (worksheet.Name.ToLower().Contains("proyecto")) { ImportarControlesPredeterminados(worksheet, proyecto); SUBPROYECTO subAux; //22 es la fila donde empiezan los nombres de los subproyectos, columna 2. for (var i = 3; !string.IsNullOrEmpty(worksheet.Cell(i, 2).Value.ToString()); i++) { int id; SUBPROYECTO sub = null; bool existeSubproyecto = false; if (int.TryParse(worksheet.Cell(i, 1).Value.ToString(), out id)) { sub = ControladorSubproyecto.BuscarPorId(id); } if (sub == null) { subAux = new SUBPROYECTO { nombre = worksheet.Cell(i, 3).Value.ToString(), fecha_fin_estimada = DateTime.Today, asignacion_automatica = true, fecha_inicio_estimada = DateTime.Today, fecha_inicio_real = DateTime.Today, fecha_fin_real = DateTime.Today, ot_cliente = worksheet.Cell(i, 6).Value.ToString(), horas_estimadas = string.IsNullOrEmpty(worksheet.Cell(i, 7).Value.ToString()) ? 0 : Convert.ToInt32(worksheet.Cell(i, 7).Value.ToString()), id_tipo_subproyecto = ControladorSubproyecto.ObtenerTipoSubproyectoPorNombre(worksheet.Cell(i, 4).Value.ToString()).id_tipo_subproyecto, orden = 0, id_hora_tipo_subproyecto = 0, id_prioridad = 0, observaciones = "", ot = 0, id_estado_proyecto = 0, forzada_fecha_fin_estimada = false, forzada_fecha_inicio_estimada = false, genera_ot = worksheet.Cell(i, 5).Value.ToString() == "SI", id_proyecto = _proyAux.id_proyecto }; ControladorSubproyecto.InsertarSubproyecto(subAux); } else { //Actualizacion de datos subAux = sub; subAux.nombre = worksheet.Cell(i, 3).Value.ToString(); subAux.ot_cliente = worksheet.Cell(i, 6).Value.ToString(); subAux.horas_estimadas = string.IsNullOrEmpty(worksheet.Cell(i, 6).Value.ToString()) ? 0 : Convert.ToInt32(worksheet.Cell(i, 7).Value.ToString()); subAux.genera_ot = worksheet.Cell(i, 5).Value.ToString() != "NO"; subAux.id_tipo_subproyecto = ControladorSubproyecto.ObtenerTipoSubproyectoPorNombre(worksheet.Cell(i, 4).Value.ToString()).id_tipo_subproyecto; } if (subAux.nombre == null || subAux.nombre == "") { ControladorSubproyecto.EliminarSubproyecto(subAux); } else { //Asigna el nivel del subproyecto int nivel = Convert.ToInt32(worksheet.Cell(i, 2).Value.ToString()); orden[nivel] = subAux.id_subproyecto; subAux.id_subproyecto_padre = orden[nivel - 1]; //Actualiza la informacion ControladorSubproyecto.ActualizarSubproyecto(subAux); //Orden de trabajo. TODO verificar si ya tiene que no asigne otra if (subAux.genera_ot == true) { ControladorSubproyecto.AsignarOT(subAux.id_subproyecto); } } } } else if (!worksheet.Name.ToLower().Contains("Template Dispositivo") && !worksheet.Name.ToLower().Contains("SOPORTE")) { AgregarUnidades(worksheet); } } CloseFile(); ControladorProyecto.ActualizarHorasSubproyecto(ControladorProyecto.ObtenerPorID(_proyAux.id_proyecto)); }
private void AgregarUnidades(IXLWorksheet worksheet) { var sub = ControladorSubproyecto.BuscarPorOTDeExportacion(worksheet.Name, _proyAux.id_proyecto); if (sub == null) { return; } decimal horasOC; bool isNumericOC = decimal.TryParse(worksheet.Cell(3, 3).GetFormattedString(), out horasOC); if (isNumericOC) { sub.horas_orden_compra = horasOC; } else { sub.horas_orden_compra = null; } ControladorSubproyecto.ActualizarSubproyecto(sub); int i; //Por si las dudas hayan escrito algo en la fila 9 (no deberian) porque anda mal la exportacion de Excel int j = 9; //Que columna? for (i = j; !string.IsNullOrEmpty(worksheet.Cell(i, 2).Value.ToString()); i++) { int n; bool isNumeric = int.TryParse(worksheet.Cell(i, 4).GetFormattedString(), out n); HORA_TIPO_SUBPROYECTO hora_tipo = ControladorSubproyecto.ObtenerHoraTipoSubproyecto(worksheet.Cell(i, 3).Value.ToString()); decimal?dec = null; var subAux = new SUBPROYECTO { nombre = worksheet.Cell(i, 2).Value.ToString(), fecha_fin_estimada = DateTime.Today, asignacion_automatica = true, fecha_inicio_estimada = DateTime.Today, fecha_inicio_real = DateTime.Today, fecha_fin_real = DateTime.Today, ot_cliente = "", id_tipo_subproyecto = 4, orden = 0, id_hora_tipo_subproyecto = hora_tipo == null ? 0: hora_tipo.id_hora_tipo_subproyecto, horas_estimadas = isNumeric ? n : hora_tipo == null ? 0 : hora_tipo.id_hora_tipo_subproyecto > 0 ? ControladorSubproyecto.ObtenerHoraTipoSubproyecto(worksheet.Cell(i, 3).Value.ToString()).horas : 0, id_prioridad = 0, observaciones = "", ot = i - 9, id_estado_proyecto = 0, forzada_fecha_fin_estimada = false, forzada_fecha_inicio_estimada = false, genera_ot = false, id_proyecto = _proyAux.id_proyecto }; //mp existe //TODO ACTUALIZAR int id; SUBPROYECTO subPro = null; bool existeSubproyecto = false; SUBPROYECTO sub2 = null; if (int.TryParse(worksheet.Cell(i, 1).Value.ToString(), out id)) { sub2 = ControladorSubproyecto.BuscarPorId(id); } if (sub2 == null) { ControladorSubproyecto.InsertarSubproyecto(subAux); subAux.id_subproyecto_padre = sub.id_subproyecto; ControladorSubproyecto.ActualizarSubproyecto(subAux); //Check CrearActividades(subAux); subAux.horas_orden_compra = (decimal)ControladorSubproyecto.CalcularHorasOrdenCompra(subAux); ControladorSubproyecto.ActualizarSubproyecto(subAux); } else { sub2.nombre = worksheet.Cell(i, 2).Value.ToString(); sub2.id_hora_tipo_subproyecto = subAux.id_hora_tipo_subproyecto; sub2.horas_estimadas = ControladorSubproyecto.CalcularHorasOrdenCompra(subAux) != null?Convert.ToDecimal(ControladorSubproyecto.CalcularHorasOrdenCompra(subAux).Value.ToString("#.##")) : 0; sub2.orden = subAux.orden; //Eliminar subproyecto if (sub2.nombre == null || sub2.nombre == "") { ControladorSubproyecto.EliminarSubproyecto(sub2); } else { ControladorSubproyecto.ActualizarSubproyecto(sub2); decimal?valor = (decimal)ControladorSubproyecto.CalcularHorasOrdenCompra(sub2); sub2.horas_orden_compra = ControladorSubproyecto.CalcularHorasOrdenCompra(sub2).HasValue ? decimal.Round((decimal)ControladorSubproyecto.CalcularHorasOrdenCompra(sub2).Value, 2, MidpointRounding.AwayFromZero) : 0; ControladorSubproyecto.ActualizarSubproyecto(sub2); } } } List <Actividad> listaActividades = ControladorActividades.ObtenerActividadesDeSubproyecto(sub); for (i = 9; !string.IsNullOrEmpty(worksheet.Cell(i, 7).Value.ToString()); i++) { string nombre = worksheet.Cell(i, 7).Value.ToString(); if (listaActividades.Count == 0 || !listaActividades.Where(x => x.nombre_actividad == nombre).Any()) { CrearActividad(sub, ControladorActividades.ObtenerTipoActividad(nombre) == null ? 1 : ControladorActividades.ObtenerTipoActividad(nombre).id_tipo_actividad, nombre, listaActividades.Count == 0 ? 1 : listaActividades.Count + 1); } } }