Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 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);
 }
Пример #4
0
        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");
                }
            }
        }
Пример #6
0
        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);
        }