private void CrearActividad(SUBPROYECTO Subproyecto, int idTipoActividad, string nombre, int orden) { //TODO controlar duplicaciones var actAux = ControladorActividades.InsertarActividad( new Entidades.Actividad( ControladorActividades.ObtenerTipoActividad(idTipoActividad).criticidad, idTipoActividad, nombre, 1)); var actpro = ControladorActividades.InsertarActividadProyecto(new Actividad_proyecto( _proyAux.id_proyecto, actAux.id_actividad, fecha_inicio: DateTime.Now, fecha_fin_previsto: DateTime.Now, fecha_fin_real: DateTime.Now, cantidad_hora: 0,//Se actualiza después objetivo: "", prioridad: 1, complejidad: 1, avance: 0, observacion: "", orden: orden, id_controlador_1: 8, id_controlador_2: 8, nro: 0, id_cliente: _proyAux.id_cliente.HasValue ? _proyAux.id_cliente.Value : 0, id_subproyecto: Subproyecto.id_subproyecto, horas: 0, id_estado_proyecto: 0, porcentaje_avance: 0, fecha_inicio_real: DateTime.Now, asignada: false, id_cadista: 0, id_prioridad: 1, id_control: 0, id_proveedor: 0, forzada_fecha_fin: false, forzada_fecha_inicio: false, no_conformidad: false, motivo_no_conformidad: "", asignable: true)); //ControladorTareas.VerificarAsignacionAutomatica(actpro); }
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); }
private void CrearActividades(SUBPROYECTO Subproyecto) { CrearActividad(Subproyecto, ControladorActividades.ObtenerTipoActividad("Concepto") == null ? 1 : ControladorActividades.ObtenerTipoActividad("Concepto").id_tipo_actividad, "Concepto", 1); CrearActividad(Subproyecto, ControladorActividades.ObtenerTipoActividad("Preparación") == null ? 1 : ControladorActividades.ObtenerTipoActividad("Preparación").id_tipo_actividad, "Preparación", 2); CrearActividad(Subproyecto, ControladorActividades.ObtenerTipoActividad("Detallado") == null ? 1 : ControladorActividades.ObtenerTipoActividad("Detallado").id_tipo_actividad, "Detallado", 3); }
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); } } }
public void ExportarTodosProyectos() { List <Proyecto> proyectos = ControladorProyecto.ObtenerProyectosActivos(); if (OpenFile()) { IXLWorksheet _worksheetProyecto = _xlworkbook.Worksheet("Tabla_Tareas"); List <ClaseExpGantt> estructura; int fila = 2; int filaAsig = 2; CrearRecursos(); foreach (var item in proyectos) { estructura = _controladorProyecto.ObtenerEstructuraProyectoConActividades(item); _worksheetProyecto.Cell(fila, 1).Value = fila - 1; _worksheetProyecto.Cell(fila, 2).Value = "Sí"; _worksheetProyecto.Cell(fila, 3).Value = "Programada manualmente"; _worksheetProyecto.Cell(fila, 4).Value = item.nombre_proyecto; _worksheetProyecto.Cell(fila, 5).Value = item.total_hora + " horas"; _worksheetProyecto.Cell(fila, 6).Value = ControladorTareas.CalcularFechaInicioProyecto(item); _worksheetProyecto.Cell(fila, 7).Value = ControladorTareas.CalcularFechaFinProyecto(item); _worksheetProyecto.Cell(fila, 9).Value = 1; fila++; foreach (ClaseExpGantt subproyecto in estructura) { filaAsig = CrearAsignacion(subproyecto, filaAsig, fila - 1); if (subproyecto.subproyecto != null) { _worksheetProyecto.Cell(fila, 1).Value = fila - 1; _worksheetProyecto.Cell(fila, 2).Value = "Sí"; _worksheetProyecto.Cell(fila, 3).Value = "Programada manualmente"; _worksheetProyecto.Cell(fila, 4).Value = subproyecto.subproyecto.nombre; _worksheetProyecto.Cell(fila, 5).Value = subproyecto.subproyecto.horas_estimadas + " horas";// ControladorSubproyecto.ObtenerHorasOrdenCompra(subproyecto.subproyecto) + " horas"; _worksheetProyecto.Cell(fila, 6).Value = ControladorTareas.CalcularFechaInicioSubproyecto(subproyecto.subproyecto); _worksheetProyecto.Cell(fila, 7).Value = ControladorTareas.CalcularFechaFinSubproyecto(subproyecto.subproyecto); _worksheetProyecto.Cell(fila, 9).Value = subproyecto.nivel + 1; } else { _worksheetProyecto.Cell(fila, 1).Value = fila - 1; _worksheetProyecto.Cell(fila, 2).Value = "Sí"; _worksheetProyecto.Cell(fila, 3).Value = "Programada automáticamente"; _worksheetProyecto.Cell(fila, 4).Value = subproyecto.actividad.nombre_actividad; if (subproyecto.tarea != null) { if (subproyecto.actividad.id_tipo_actividad == ControladorActividades.ObtenerTipoActividad("prepa").id_tipo_actividad || subproyecto.actividad.id_tipo_actividad == ControladorActividades.ObtenerTipoActividad("deta").id_tipo_actividad) { //Predecesores //_worksheetProyecto.Cell(fila, 8).Value = fila - 2; } _worksheetProyecto.Cell(fila, 4).Value = subproyecto.actividad.nombre_actividad + " - " + subproyecto.usuario.FullName; _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, 11).Value = subproyecto.actividadProy.id_actividad_proyecto; } _worksheetProyecto.Cell(fila, 9).Value = subproyecto.nivel + 1; } fila++; } } if (CloseFile()) { System.Diagnostics.Process.Start(path + "\\" + "Gantt" + ".xlsx"); } } }
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); }