Exemplo n.º 1
0
        public PlanningTaller(string codigoTaller)
        {
            // Consultas
            DataSet dsConsulta = new DataSet();

            DBFunctions.Request(dsConsulta, IncludeSchema.NO, "SELECT DISTINCT DOR.pven_codigo,PVE.pven_nombre FROM dordenoperacion DOR INNER JOIN morden MOR ON DOR.pdoc_codigo=MOR.pdoc_codigo AND DOR.mord_numeorde=MOR.mord_numeorde INNER JOIN pvendedor PVE ON DOR.pven_codigo=PVE.pven_codigo WHERE MOR.test_estado = 'A' AND MOR.palm_almacen='" + codigoTaller + "' AND PVE.pven_vigencia = 'V';" +                                                                                                                                                                                                                                                 //0
                                "SELECT DOR.pdoc_codigo, DOR.mord_numeorde, DOR.ptem_operacion, DOR.pven_codigo, MOR.mord_entrada, MOR.mord_horaentr, DOR.tiempo_calculado FROM vtaller_dordenoperacion DOR INNER JOIN morden MOR ON DOR.pdoc_codigo=MOR.pdoc_codigo AND DOR.mord_numeorde=MOR.mord_numeorde WHERE DOR.test_estado = 'A' AND MOR.test_estado = 'A' AND MOR.palm_almacen = '" + codigoTaller + "' ORDER BY MOR.mord_entrada,DOR.pven_codigo ASC;" +                                                                                                                                                                                           //1
                                "SELECT DOR.pdoc_codigo, DOR.mord_numeorde, DOR.ptem_operacion, DOR.pven_codigo, DEO.test_estado, DEO.destoper_hora, DOR.tiempo_calculado FROM vtaller_dordenoperacion DOR INNER JOIN morden MOR ON DOR.pdoc_codigo=MOR.pdoc_codigo AND DOR.mord_numeorde=MOR.mord_numeorde LEFT JOIN destadisticaoperacion DEO ON DOR.pdoc_codigo=DEO.pdoc_codigo AND DOR.mord_numeorde=DEO.mord_numeorde AND DOR.ptem_operacion=DEO.ptem_operacion WHERE DOR.test_estado = 'A' AND MOR.test_estado = 'A' AND MOR.palm_almacen = '" + codigoTaller + "' ORDER BY MOR.mord_entrada,DOR.pven_codigo ASC;" +                                   //2
                                "SELECT DOR.pdoc_codigo, DOR.mord_numeorde, DOR.ptem_operacion, PTE.ptem_descripcion, DOR.pven_codigo as codigo_mecanico, DOR.test_estado, TES.test_nombre as estado_operacion FROM vtaller_dordenoperacion DOR INNER JOIN morden MOR ON DOR.pdoc_codigo=MOR.pdoc_codigo AND DOR.mord_numeorde=MOR.mord_numeorde INNER JOIN testadooperacion TES ON DOR.test_estado = TES.test_estaoper INNER JOIN ptempario PTE ON DOR.ptem_operacion = PTE.ptem_operacion WHERE DOR.test_estado IN ('M','R','T') AND MOR.test_estado = 'A' AND MOR.palm_almacen = '" + codigoTaller + "' ORDER BY MOR.mord_entrada,DOR.pven_codigo ASC;" + //3
                                "SELECT DOR.pdoc_codigo as prefijo_orden, DOR.mord_numeorde as numero_orden, DOR.ptem_operacion as codigo_operacion, PTE.ptem_descripcion as descripcion_operacion FROM vtaller_dordenoperacion DOR INNER JOIN morden MOR ON DOR.pdoc_codigo=MOR.pdoc_codigo AND DOR.mord_numeorde=MOR.mord_numeorde INNER JOIN ptempario PTE ON DOR.ptem_operacion = PTE.ptem_operacion WHERE DOR.test_estado = 'S' AND MOR.test_estado = 'A' AND MOR.palm_almacen = '" + codigoTaller + "' ORDER BY MOR.mord_entrada,DOR.pven_codigo ASC;" +                                                                                               //4
                                "SELECT DOR.pdoc_codigo, DOR.mord_numeorde, DOR.ptem_operacion, PTE.ptem_descripcion, DOR.pven_codigo as codigo_mecanico, DOR.test_estado, TES.test_nombre as estado_operacion FROM vtaller_dordenoperacion DOR INNER JOIN morden MOR ON DOR.pdoc_codigo=MOR.pdoc_codigo AND DOR.mord_numeorde=MOR.mord_numeorde INNER JOIN testadooperacion TES ON DOR.test_estado = TES.test_estaoper INNER JOIN ptempario PTE ON DOR.ptem_operacion = PTE.ptem_operacion WHERE DOR.test_estado = 'C' AND MOR.test_estado = 'A' AND MOR.palm_almacen = '" + codigoTaller + "' ORDER BY MOR.mord_entrada,DOR.pven_codigo ASC;" +            //5
                                "SELECT DOR.pdoc_codigo as prefijo_orden, DOR.mord_numeorde as numero_orden, DOR.ptem_operacion as codigo_operacion, PTE.ptem_descripcion as descripcion_operacion FROM vtaller_dordenoperacion DOR INNER JOIN morden MOR ON DOR.pdoc_codigo=MOR.pdoc_codigo AND DOR.mord_numeorde=MOR.mord_numeorde INNER JOIN ptempario PTE ON DOR.ptem_operacion = PTE.ptem_operacion WHERE DOR.test_estado = 'X' AND MOR.test_estado = 'A' AND MOR.palm_almacen = '" + codigoTaller + "' ORDER BY MOR.mord_entrada,DOR.pven_codigo ASC;");                                                                                               //6
            PrepararDtSalida();
            // Fin Consultas
            // Inicio Construcción de Intervalo de Atención
            horaInicioTaller = Convert.ToDateTime(DBFunctions.SingleData("SELECT ctal_himec FROM ctaller"));
            horaFinalTaller  = Convert.ToDateTime(DBFunctions.SingleData("SELECT ctal_hfmec FROM ctaller"));
            // Fin Construcción de Intervalo de Atención
            // Inicio Construccion Asignaciones Mecanico
            for (int i = 0; i < dsConsulta.Tables[0].Rows.Count; i++)
            {
                CollectionEstudioOperacion a = RealizarEstudioOperaciones(dsConsulta.Tables[0].Rows[i][0].ToString(), dsConsulta.Tables[1].Select("pven_codigo='" + dsConsulta.Tables[0].Rows[i][0] + "'", "mord_entrada,mord_horaentr ASC"), dsConsulta.Tables[2]);
                for (int j = 0; j < a.Count; j++)
                {
                    DataRow dr = dtSalida.NewRow();
                    dr[0] = a[j].CodigoMecanico;
                    dr[1] = DBFunctions.SingleData("SELECT pven_nombre FROM pvendedor WHERE pven_codigo='" + a[j].CodigoMecanico + "'");
                    dr[2] = a[j].PrefijoOrdenTrabajo;
                    dr[3] = a[j].NumeroOrdenTrabajo;
                    dr[4] = a[j].CodigoOperacion;
                    dr[5] = DBFunctions.SingleData("SELECT ptem_descripcion FROM ptempario WHERE ptem_operacion='" + a[j].CodigoOperacion + "'");
                    dr[6] = a[j].FechorInicio;
                    dr[7] = a[j].FechorFin;
                    dr[8] = a[j].TiempoPlanificado;
                    dr[9] = a[j].TiempoGastado;
                    dtSalida.Rows.Add(dr);
                }
            }
            // Fin Construccion Asignaciones Mecanico
            // Inicio de Asignación de tabla de mecanicos general
            dtMecanicos = dsConsulta.Tables[0].Copy();
            // Fin de Asignación de tabla de mecanicos general
            // Inicio de Asignación de tabla de operaciones paralizadas
            dtParalizadas = dsConsulta.Tables[3].Copy();
            // Fin de Asignación de tabla de operaciones paralizadas
            // Inicio de Asignación de tabla de operaciones sin asignar
            dtSinAsignar = dsConsulta.Tables[4].Copy();
            // Fin de Asignación de tabla de operaciones sin asignar
            // Inicio de Asignación de tabla de operaciones cumplidas
            dtCumplidas = dsConsulta.Tables[5].Copy();
            // Fin de Asignación de tabla de operaciones cumplidas
            // Inicio de Asignación de tabla de operaciones cumplidas
            dtNoAutorizadas = dsConsulta.Tables[6].Copy();
            // Fin de Asignación de tabla de operaciones cumplidas
        }
Exemplo n.º 2
0
 private void RevisionColisionTiemposSecundarios(CollectionEstudioOperacion salida, double tiempo, ref DateTime fechaInicio, ref DateTime fechaFin)
 {
     for (int i = 0; i < salida.Count; i++)
     {
         if ((fechaInicio >= salida[i].FechorInicio && fechaInicio <= salida[i].FechorFin) || (fechaFin >= salida[i].FechorInicio && fechaFin <= salida[i].FechorFin))
         {
             fechaInicio = salida[i].FechorFin;
             fechaFin    = fechaInicio.AddHours(tiempo);
         }
     }
 }
Exemplo n.º 3
0
        private CollectionEstudioOperacion RealizarEstudioOperaciones(string codigoMecanico, DataRow[] draOperacionesAsignadas, DataTable dtEstadisticasOperaciones)
        {
            int       i = 0;
            ArrayList operacionesParalizadas  = new ArrayList();
            CollectionEstudioOperacion salida = new CollectionEstudioOperacion();
            DateTime fechaPivote = DateTime.Now;

            if (draOperacionesAsignadas.Length > 0)
            {
                for (i = 0; i < draOperacionesAsignadas.Length; i++)
                {
                    double   tiempoGastado             = 0;
                    bool     estadoOperacionParalizado = false;
                    DateTime fechaEntrada           = Convert.ToDateTime(draOperacionesAsignadas[i][4]);
                    string   horaEntrada            = draOperacionesAsignadas[i][5].ToString();
                    DateTime fechaPivoteAnt         = fechaPivote;
                    DateTime fechaSalida            = fechaPivote;
                    DateTime fechaUltimaEstadistica = fechaPivote;
                    if (i == 0)
                    {
                        fechaPivote    = Convert.ToDateTime(fechaEntrada.ToString("yyyy-MM-dd") + " " + horaEntrada);
                        fechaPivoteAnt = fechaPivote;
                        fechaSalida    = CalculoFechafinalizacion(fechaPivote, false, ref tiempoGastado, dtEstadisticasOperaciones.Select("pdoc_codigo='" + draOperacionesAsignadas[i][0] + "' AND mord_numeorde=" + draOperacionesAsignadas[i][1] + " AND ptem_operacion='" + draOperacionesAsignadas[i][2] + "'", "destoper_hora ASC"), Convert.ToDateTime(fechaEntrada.ToString("yyyy-MM-dd") + " " + horaEntrada), ref estadoOperacionParalizado, ref fechaUltimaEstadistica);
                    }
                    else
                    {
                        fechaSalida = CalculoFechafinalizacion(fechaPivote, true, ref tiempoGastado, dtEstadisticasOperaciones.Select("pdoc_codigo='" + draOperacionesAsignadas[i][0] + "' AND mord_numeorde=" + draOperacionesAsignadas[i][1] + " AND ptem_operacion='" + draOperacionesAsignadas[i][2] + "'", "destoper_hora ASC"), Convert.ToDateTime(fechaEntrada.ToString("yyyy-MM-dd") + " " + horaEntrada), ref estadoOperacionParalizado, ref fechaUltimaEstadistica);
                    }
                    if (estadoOperacionParalizado)
                    {
                        operacionesParalizadas.Add(new EstudioOperacion(codigoMecanico, draOperacionesAsignadas[i][2].ToString(), draOperacionesAsignadas[i][0].ToString(), Convert.ToInt32(draOperacionesAsignadas[i][1]), Convert.ToDouble(draOperacionesAsignadas[i][6]), tiempoGastado, fechaSalida, fechaSalida));
                    }
                    else
                    {
                        fechaPivote = fechaSalida;
                        //Ahora se revisa si la fecha de pivoteAnt es mayor a la fecha de entrada de la orden de trabajo asociada a la operacion
                        if (fechaPivoteAnt >= fechaUltimaEstadistica)
                        {
                            salida.Add(new EstudioOperacion(codigoMecanico, draOperacionesAsignadas[i][2].ToString(), draOperacionesAsignadas[i][0].ToString(), Convert.ToInt32(draOperacionesAsignadas[i][1]), Convert.ToDouble(draOperacionesAsignadas[i][6]), tiempoGastado, fechaPivoteAnt, fechaPivote));
                        }
                        else
                        {
                            if (Convert.ToDouble(draOperacionesAsignadas[i][6]) - tiempoGastado > 0)
                            {
                                salida.Add(new EstudioOperacion(codigoMecanico, draOperacionesAsignadas[i][2].ToString(), draOperacionesAsignadas[i][0].ToString(), Convert.ToInt32(draOperacionesAsignadas[i][1]), Convert.ToDouble(draOperacionesAsignadas[i][6]), tiempoGastado, fechaUltimaEstadistica, AjustarFechaHorario(fechaUltimaEstadistica.AddHours(Convert.ToDouble(draOperacionesAsignadas[i][6]) - tiempoGastado), Convert.ToDateTime(fechaUltimaEstadistica.ToString("yyyy-MM-dd") + " " + horaFinalTaller.ToString("HH:mm:ss")))));
                            }
                            else
                            {
                                salida.Add(new EstudioOperacion(codigoMecanico, draOperacionesAsignadas[i][2].ToString(), draOperacionesAsignadas[i][0].ToString(), Convert.ToInt32(draOperacionesAsignadas[i][1]), Convert.ToDouble(draOperacionesAsignadas[i][6]), tiempoGastado, fechaUltimaEstadistica, AjustarFechaHorario(fechaUltimaEstadistica.AddHours(0.5), Convert.ToDateTime(fechaUltimaEstadistica.ToString("yyyy-MM-dd") + " " + horaFinalTaller.ToString("HH:mm:ss")))));
                            }
                        }
                    }
                }
                for (i = 0; i < operacionesParalizadas.Count; i++)
                {
                    double   tiempo      = 0;
                    DateTime fechaInicio = ((EstudioOperacion)operacionesParalizadas[i]).FechorInicio;
                    DateTime fechaFin    = ((EstudioOperacion)operacionesParalizadas[i]).FechorFin;
                    if ((((EstudioOperacion)operacionesParalizadas[i]).TiempoPlanificado - ((EstudioOperacion)operacionesParalizadas[i]).TiempoGastado) <= 0)
                    {
                        tiempo = 0.5;
                        //((EstudioOperacion)operacionesParalizadas[i]).FechorFin = fechaPivote = AjustarFechaHorario(((EstudioOperacion)operacionesParalizadas[i]).FechorInicio.AddHours(tiempo),Convert.ToDateTime(((EstudioOperacion)operacionesParalizadas[i]).FechorInicio.ToString("yyyy-MM-dd")+" "+horaFinalTaller.ToString("HH:mm:ss")));
                        fechaFin = fechaPivote = AjustarFechaHorario(((EstudioOperacion)operacionesParalizadas[i]).FechorInicio.AddHours(tiempo), Convert.ToDateTime(((EstudioOperacion)operacionesParalizadas[i]).FechorInicio.ToString("yyyy-MM-dd") + " " + horaFinalTaller.ToString("HH:mm:ss")));
                    }
                    else
                    {
                        tiempo = ((EstudioOperacion)operacionesParalizadas[i]).TiempoPlanificado - ((EstudioOperacion)operacionesParalizadas[i]).TiempoGastado;
                        //((EstudioOperacion)operacionesParalizadas[i]).FechorFin = fechaPivote = AjustarFechaHorario(((EstudioOperacion)operacionesParalizadas[i]).FechorInicio.AddHours(tiempo), Convert.ToDateTime(((EstudioOperacion)operacionesParalizadas[i]).FechorInicio.ToString("yyyy-MM-dd")+" "+horaFinalTaller.ToString("HH:mm:ss")));
                        fechaFin = fechaPivote = AjustarFechaHorario(((EstudioOperacion)operacionesParalizadas[i]).FechorInicio.AddHours(tiempo), Convert.ToDateTime(((EstudioOperacion)operacionesParalizadas[i]).FechorInicio.ToString("yyyy-MM-dd") + " " + horaFinalTaller.ToString("HH:mm:ss")));
                    }
                    RevisionColisionTiemposSecundarios(salida, tiempo, ref fechaInicio, ref fechaFin);
                    ((EstudioOperacion)operacionesParalizadas[i]).FechorInicio = fechaInicio;
                    ((EstudioOperacion)operacionesParalizadas[i]).FechorFin    = fechaFin;
                    salida.Add((EstudioOperacion)operacionesParalizadas[i]);
                }
            }
            return(salida);
        }