int anchoTotal;                                                           // Para calcular el ancho total de la grilla

        public ImpresorDePlanillas(PlanillaHorariaBE planillaHoraria, DataGridView dataGridView, FormGeneral formGeneral)
        {
            this.dataGridView = dataGridView;
            this.formGeneral  = formGeneral;

            printDocument.PrintPage  += PrintDocument_PrintPage;
            printDocument.BeginPrint += PrintDocument_BeginPrint;

            datosPlanilla = new Dictionary <string, string>
            {
                { "lblNumeroPlanilla", planillaHoraria.Id.ToString() },
                { "lblChofer", planillaHoraria.Chofer.Nombre },
                { "lblRecorrido", planillaHoraria.Recorrido.ToString() },
                { "lblFecha", planillaHoraria.Fecha.ToString("dd/MM/yyyy") },
                { "lblCoche", formGeneral.ObtenerLeyenda("valInterno") + " " + planillaHoraria.Vehiculo.NumeroInterno +
                  " (" + planillaHoraria.Vehiculo.Patente + ")" },
            };

            columnasAImprimir = new List <string>
            {
                "colOrigen",
                "colHoraSalida",
                "colDestino",
                "colHoraEstimadaLlegada",
                "colHoraRealLlegada",
                "colCompletado",
                "colDensidadPasajeros"
            };
        }
Ejemplo n.º 2
0
        private void DividirEnDosTurnos()
        {
            // Cada planilla generada hay que dividirla en dos turnos de 10 hs cada una.
            // Esto es porque a las 10 hs termina la jornada laboral de los choferes y vienen otros.
            List <PlanillaHorariaBE> planillasDivididas = new List <PlanillaHorariaBE>();

            foreach (PlanillaHorariaBE planilla in _planillasGeneradas)
            {
                List <ViajeBE> viajesPrimerTurno  = planilla.Viajes.Where(v => v.HoraSalida.Hour < 14).ToList();
                List <ViajeBE> viajesSegundoTurno = planilla.Viajes.Where(v => v.HoraSalida.Hour >= 14).ToList();

                // Se deja como está la planilla de la colección, pero con los viajes del primer turno
                planilla.Viajes = viajesPrimerTurno;
                planillasDivididas.Add(planilla);

                // Se crea una planilla igual pero con los viajes del segundo turno
                PlanillaHorariaBE planillaSegundoTurno = new PlanillaHorariaBE
                {
                    Fecha     = planilla.Fecha,
                    Recorrido = planilla.Recorrido,
                    Vehiculo  = planilla.Vehiculo,
                    Viajes    = viajesSegundoTurno
                };
                planillasDivididas.Add(planillaSegundoTurno);
            }

            // Sobreescribo la colección de planillas horarias
            _planillasGeneradas = planillasDivididas;
        }
        private static void Guardar(PlanillaHorariaBE planillaHoraria)
        {
            PlanillaHorariaDAL.Guardar(planillaHoraria);

            // Guardo todos los viajes
            foreach (ViajeBE viaje in planillaHoraria.Viajes)
            {
                Viaje.Guardar(viaje, planillaHoraria);
            }
        }
        public static void GuardarViajes(PlanillaHorariaBE planillaHoraria)
        {
            foreach (ViajeBE viaje in planillaHoraria.Viajes)
            {
                Viaje.Guardar(viaje, planillaHoraria);
            }

            Viaje.RecalcularDVV();

            Bitacora.Loguear("Se actualizaron los viajes de la planilla N° " + planillaHoraria.Id);
        }
Ejemplo n.º 5
0
        public static List <ViajeBE> ObtenerPorPlanilla(PlanillaHorariaBE planilla)
        {
            List <ViajeBE> viajes = ViajeDAL.ObtenerPorPlanillaHoraria(planilla.Id);

            foreach (ViajeBE viaje in viajes)
            {
                viaje.TerminalOrigen  = viaje.EsIda ? planilla.Recorrido?.TerminalInicio : planilla.Recorrido?.TerminalFin;
                viaje.TerminalDestino = viaje.EsIda ? planilla.Recorrido?.TerminalFin : planilla.Recorrido?.TerminalInicio;
            }

            return(viajes);
        }
Ejemplo n.º 6
0
        private void DgvResultadoBusqueda_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView grid = (DataGridView)sender;

            if (grid.Columns[e.ColumnIndex] is DataGridViewButtonColumn & e.RowIndex >= 0)
            {
                // Se clickeó en un botón de Detalle
                PlanillaHorariaBE     planilla = (grid.Rows[e.RowIndex].DataBoundItem as GridItem).Planilla;
                DetalleDePlanillaForm detalleDePlanillaForm = new DetalleDePlanillaForm(planilla)
                {
                    MdiParent = MdiParent
                };
                detalleDePlanillaForm.Show();
            }
        }
        public static void Guardar(PlanillaHorariaBE planillaHoraria)
        {
            string query = "INSERT INTO planilla_horaria (chofer_id, coche_id, recorrido_id, fecha, dvh) " +
                           "OUTPUT INSERTED.id VALUES (@choferId, @cocheId, @recorridoId, @fecha, 0)";

            SqlParameter[] parameters = new SqlParameter[]
            {
                new SqlParameter("@choferId", planillaHoraria.Chofer.Id),
                new SqlParameter("@cocheId", planillaHoraria.Vehiculo.Id),
                new SqlParameter("@recorridoId", planillaHoraria.Recorrido.Id),
                new SqlParameter("@fecha", planillaHoraria.Fecha)
            };

            planillaHoraria.Id = SqlHelper.Insertar(query, parameters);

            string registro = string.Format("{0}{1}{2}{3}{4}", planillaHoraria.Id, planillaHoraria.Chofer.Id,
                                            planillaHoraria.Vehiculo.Id, planillaHoraria.Recorrido.Id, planillaHoraria.Fecha.ToString("yyyyMMdd"));
            int dvh = DigitoVerificadorDAL.CalcularDV(registro);

            DigitoVerificadorDAL.ActualizarDVH("planilla_horaria", dvh, planillaHoraria.Id);
        }
Ejemplo n.º 8
0
 public static void Guardar(ViajeBE viaje, PlanillaHorariaBE planillaHoraria)
 {
     ViajeDAL.Guardar(viaje, planillaHoraria.Id);
 }
 public DetalleDePlanillaForm(PlanillaHorariaBE planillaHoraria)
 {
     InitializeComponent();
     this.planillaHoraria = planillaHoraria;
 }
Ejemplo n.º 10
0
        private void GenerarViajesYPlanillas(CalculoDeRecorrido calcRecorrido)
        {
            // Una vez que termino con el cálculo de cada intervalo genero viajes
            // El primer viaje del día es a las 4 AM
            DateTime    inicioProximoViaje = new DateTime(1, 1, 1, 4, 0, 0);
            RecorridoBE recorrido          = calcRecorrido.Recorrido;
            int         descansoChoferes   = int.Parse(ConfigurationManager.AppSettings["descansoChoferes"]);

            foreach (int intervalo in calcRecorrido.FrecuenciaPorIntervalo.Keys)
            {
                while (inicioProximoViaje.Hour - inicioProximoViaje.Hour % 2 == intervalo)
                {
                    ViajeBE viajeIda = new ViajeBE
                    {
                        HoraSalida          = inicioProximoViaje,
                        HoraEstimadaLlegada = inicioProximoViaje.Add(calcRecorrido.DuracionPorIntervalo[intervalo]),
                        EsIda           = true,
                        TerminalOrigen  = recorrido.TerminalInicio,
                        TerminalDestino = recorrido.TerminalFin
                    };

                    // Busco la planilla cuyo último viaje termine en la terminal de salida antes de que
                    // salga este micro (más el descanso de los choferes)
                    PlanillaHorariaBE planillaIda = _planillasGeneradas.Where(p =>
                                                                              p.Recorrido == recorrido &&
                                                                              p.Viajes.Last().TerminalDestino == recorrido.TerminalInicio &&
                                                                              p.Viajes.Last().HoraEstimadaLlegada.AddMinutes(descansoChoferes) < inicioProximoViaje).FirstOrDefault();

                    if (planillaIda == null)
                    {
                        planillaIda = new PlanillaHorariaBE
                        {
                            Fecha     = _fechaAGenerar,
                            Recorrido = recorrido,
                            Viajes    = new List <ViajeBE>()
                        };
                        _planillasGeneradas.Add(planillaIda);
                    }
                    planillaIda.Viajes.Add(viajeIda);

                    // Hago lo mismo con el viaje de vuelta
                    ViajeBE viajeVuelta = new ViajeBE
                    {
                        HoraSalida          = inicioProximoViaje,
                        HoraEstimadaLlegada = inicioProximoViaje.Add(calcRecorrido.DuracionPorIntervalo[intervalo]),
                        EsIda           = false,
                        TerminalOrigen  = recorrido.TerminalFin,
                        TerminalDestino = recorrido.TerminalInicio,
                    };

                    PlanillaHorariaBE planillaVuelta = _planillasGeneradas.Where(p =>
                                                                                 p.Recorrido == recorrido &&
                                                                                 p.Viajes.Last().TerminalDestino == recorrido.TerminalFin &&
                                                                                 p.Viajes.Last().HoraEstimadaLlegada.AddMinutes(descansoChoferes) < inicioProximoViaje).FirstOrDefault();

                    if (planillaVuelta == null)
                    {
                        planillaVuelta = new PlanillaHorariaBE
                        {
                            Fecha     = _fechaAGenerar,
                            Recorrido = recorrido,
                            Viajes    = new List <ViajeBE>()
                        };
                        _planillasGeneradas.Add(planillaVuelta);
                    }
                    planillaVuelta.Viajes.Add(viajeVuelta);

                    inicioProximoViaje = inicioProximoViaje.AddMinutes(calcRecorrido.FrecuenciaPorIntervalo[intervalo]);
                }
            }
        }