コード例 #1
0
        protected override void SelectedIndexChanged()
        {
            var id    = Convert.ToInt32(Grid.SelectedDataKey);
            var doc   = DAOFactory.DocumentoDAO.FindById(id);
            var parte = new PartePersonal(doc, DAOFactory);

            // los usuarios publicos no pueden ver los mapas de los partes sin controlar
            if (WebSecurity.AuthenticatedUser.AccessLevel <= Logictracker.Types.BusinessObjects.Usuario.NivelAcceso.Public && parte.Estado == 0)
            {
                return;
            }

            var coche = DAOFactory.CocheDAO.FindById(parte.Vehiculo);

            Session["Location"]    = coche.Linea.Id;
            Session["TypeMobile"]  = coche.TipoCoche.Id;
            Session["Mobile"]      = parte.Vehiculo;
            Session["InitialDate"] = parte.Turnos[0].AlPozoSalida;
            Session["FinalDate"]   = parte.Turnos[parte.Turnos.Count - 1].DelPozoLlegada;
            if (WebSecurity.AuthenticatedUser.AccessLevel <= Logictracker.Types.BusinessObjects.Usuario.NivelAcceso.Public)
            {
                Session["LockFilters"] = true;
            }
            OpenWin("../Monitor/MonitorDeCalidad/monitorDeCalidad.aspx", "Monitor De Calidad");
        }
コード例 #2
0
ファイル: DatosParte.ascx.cs プロジェクト: jesumarquez/lt
        public void SetData(Documento parte, DAOFactory daof)
        {
            __daoFactory = daof;
            //Coche coche = daof.CocheDAO.FindById(Convert.ToInt32(parte.Valores["Vehiculo"]));


            var pp = new PartePersonal(parte, DAOFactory);

            cocheID = pp.Vehiculo;//coche.Id;
            parteID = pp.Id;

            var dt = pp.Turnos[0].AlPozoSalida;

            dt = parte.Fecha.Date.Add(dt.Subtract(dt.Date));

            lblFecha.Text        = dt.ToDisplayDateTime().ToString("dd/MM/yyyy");
            lblCodigo.Text       = parte.Codigo;
            lblEmpresa.Text      = pp.Empresa; //daof.TransportistaDAO.FindById(Convert.ToInt32(parte.Valores["Empresa"])).Descripcion;
            lblInterno.Text      = pp.Interno; //coche.Interno;
            lblEquipo.Text       = pp.Equipo;  //parte.Valores["Equipo"].ToString();
            lblSalida.Text       = parte.Valores["Lugar Partida"].ToString();
            lblLlegada.Text      = parte.Valores["Lugar Llegada"].ToString();
            lblTipoServicio.Text = pp.TipoServicio;


            Repeater1.DataSource = pp.Turnos;
            Repeater1.DataBind();
        }
コード例 #3
0
        public IList GetData(params object[] parameters)
        {
            var aseguradora = Convert.ToInt32(parameters[0]);
            var locacion    = Convert.ToInt32(parameters[1]);
            var linea       = Convert.ToInt32(parameters[2]);
            var movil       = Convert.ToInt32(parameters[3]);
            var equipo      = Convert.ToInt32(parameters[4]);
            var inicio      = Convert.ToDateTime(parameters[5]);
            var fin         = Convert.ToDateTime(parameters[6]);
            var estado      = Convert.ToInt32(parameters[7]);

            var usuario = WebSecurity.AuthenticatedUser.Id;

            IList result = new ArrayList();
            var   list   = daoFactory.DocumentoDAO.FindParteReport(aseguradora, locacion, linea, movil, equipo, inicio, fin, estado, usuario);

            foreach (Documento doc in list)
            {
                var parte = new PartePersonal(doc, daoFactory);

                result.Add(parte);
            }

            var byEquipo = new Dictionary <string, List <PartePersonal> >();

            foreach (PartePersonal parte in result)
            {
                if (!byEquipo.ContainsKey(parte.Equipo))
                {
                    byEquipo.Add(parte.Equipo, new List <PartePersonal>());
                }

                byEquipo[parte.Equipo].Add(parte);
            }

            var transportista = daoFactory.TransportistaDAO.FindById(aseguradora);

            foreach (var eq in byEquipo.Keys)
            {
                var oEquipo = daoFactory.EquipoDAO.FindById(byEquipo[eq][0].IdEquipo);
                var tarifa  = daoFactory.TarifaTransportistaDAO.GetTarifaParaCliente(transportista.Id,
                                                                                     oEquipo.Cliente.Id);

                var tarifaCorto = tarifa != null ? tarifa.TarifaTramoCorto : transportista.TarifaTramoCorto;
                var tarifaLargo = tarifa != null ? tarifa.TarifaTramoLargo : transportista.TarifaTramoLargo;

                double kms  = (from p in byEquipo[eq] select p.KmTotal).Sum();
                var    kmsc = (from p in byEquipo[eq] select p.KmTotalCalculado).Sum();
                foreach (var parte in byEquipo[eq])
                {
                    parte.Importe = parte.KmTotal *
                                    (kms < 14000 ? tarifaCorto : tarifaLargo);
                    parte.ImporteControlado = parte.KmTotalCalculado *
                                              (kmsc < 14000 ? tarifaCorto : tarifaLargo);
                }
            }
            return(result);
        }
コード例 #4
0
ファイル: PartePersonalVo.cs プロジェクト: jesumarquez/lt
 public PartePersonalVo(PartePersonal parte)
 {
     Id           = parte.Id;
     Codigo       = parte.Codigo;
     Fecha        = parte.Fecha.ToDisplayDateTime();
     Vehiculo     = parte.Interno;
     Equipo       = parte.Equipo;
     Empresa      = parte.Empresa;
     Estado       = parte.Estado;
     TipoServicio = parte.TipoServicio;
     CentroCostos = parte.CentroCostos;
 }
コード例 #5
0
        public bool Superpuesto(TurnoPartePersonal turno, PartePersonal parte2)
        {
            foreach (var turno2 in parte2.Turnos)
            {
                if (turno2.AlPozoSalida <= turno.AlPozoSalida && turno2.AlPozoLlegada > turno.AlPozoSalida)
                {
                    return(true);
                }
                if (turno2.AlPozoSalida <= turno.AlPozoLlegada && turno2.AlPozoLlegada > turno.AlPozoLlegada)
                {
                    return(true);
                }
                if (turno2.AlPozoSalida <= turno.DelPozoSalida && turno2.AlPozoLlegada > turno.DelPozoSalida)
                {
                    return(true);
                }
                if (turno2.AlPozoSalida <= turno.DelPozoLlegada && turno2.AlPozoLlegada > turno.DelPozoLlegada)
                {
                    return(true);
                }

                if (turno2.DelPozoSalida <= turno.AlPozoSalida && turno2.DelPozoLlegada > turno.AlPozoSalida)
                {
                    return(true);
                }
                if (turno2.DelPozoSalida <= turno.AlPozoLlegada && turno2.DelPozoLlegada > turno.AlPozoLlegada)
                {
                    return(true);
                }
                if (turno2.DelPozoSalida <= turno.DelPozoSalida && turno2.DelPozoLlegada > turno.DelPozoSalida)
                {
                    return(true);
                }
                if (turno2.DelPozoSalida <= turno.DelPozoLlegada && turno2.DelPozoLlegada > turno.DelPozoLlegada)
                {
                    return(true);
                }
            }
            return(false);
        }
コード例 #6
0
ファイル: ParteReportVo.cs プロジェクト: jesumarquez/lt
 public ParteReportVo(PartePersonal parte)
 {
     Id                = parte.Id;
     TipoServicio      = parte.TipoServicio;
     Equipo            = parte.Equipo;
     Fecha             = parte.Fecha.ToDisplayDateTime();
     Empresa           = parte.Empresa;
     Codigo            = parte.Codigo;
     Interno           = parte.Interno;
     Salida            = parte.Salida;
     Llegada           = parte.Llegada;
     HorasReportadas   = parte.Horas;
     HorasControladas  = parte.HorasControladas;
     DiffHoras         = parte.DiffHoras;
     KmTotal           = parte.KmTotal;
     KmTotalCalculado  = parte.KmTotalCalculado;
     DiffKmTotal       = parte.DiffKmTotal;
     Importe           = String.Format("${0:000.00}", parte.Importe);
     ImporteControlado = String.Format("${0:000.00}", parte.ImporteControlado);
     DiffImporte       = String.Format("${0:000.00}", parte.DiffImporte);
     Estado            = parte.Estado;
     CentroCostos      = parte.CentroCostos;
 }
コード例 #7
0
        protected override void Validate(Documento doc, int idUsuario, DAOFactory daoF)
        {
            var transp = daoF.TransportistaDAO.FindById(Convert.ToInt32(doc.Valores[ParteCampos.Empresa]));
            var p      = daoF.PeriodoDAO.GetByDate(transp.Empresa != null ? transp.Empresa.Id : -1, Fecha);

            if (p != null && p.Estado > 0)
            {
                throw new ApplicationException("El periodo al que pertenece este parte ya ha sido cerrado. Periodo: " + p.Descripcion);
            }

            base.Validate(doc, idUsuario, daoF);
            doc.ResetDictionary();
            var docs = daoF.DocumentoDAO.FindByTransportistaYCodigo(Convert.ToInt32(doc.Valores[ParteCampos.Empresa]), doc.Codigo);

            if (docs.Count > 1 || (docs.Count == 1 && ((Documento)docs[0]).Id != doc.Id))
            {
                throw new ApplicationException("Ya existe un parte con este codigo para la misma empresa transportista");
            }

            var minOdometro  = Int32.MaxValue;
            var current      = new PartePersonal(doc, daoF);
            var lastOdometro = 0;

            foreach (var turno in current.Turnos)
            {
                if (turno.OdometroInicial < lastOdometro || turno.OdometroFinal < turno.OdometroInicial)
                {
                    throw new ApplicationException("El valor del Odometro no puede ser menor a uno anterior");
                }
                lastOdometro = turno.OdometroFinal;
                minOdometro  = Math.Min(minOdometro, turno.OdometroInicial);
            }

            var idVehiculo = Convert.ToInt32(doc.Valores[ParteCampos.Vehiculo]);

            var last = daoF.DocumentoDAO.FindLastForVehicle(idVehiculo, current.Turnos[0].AlPozoSalida);

            if (last != null)
            {
                var previous   = new PartePersonal(last, daoF);
                var prevTurnos = previous.Turnos.Where(t => t.DelPozoLlegada < current.Turnos[0].AlPozoSalida);
                var curTurnos  = current.Turnos;
                var maxPrev    = prevTurnos.Count() > 0 ? prevTurnos.Max(t => t.OdometroFinal) : 0;
                var minCur     = curTurnos.Count() > 0 ? curTurnos.Min(t => t.OdometroInicial) : 0;
                if (minCur < maxPrev)
                {
                    throw new ApplicationException("El parte " + last.Codigo +
                                                   " contiene un valor de odometro mayor al actual (" + maxPrev + " > " + minCur + ")");
                }
            }

            var superpuestos = daoF.DocumentoDAO.FindList(current.IdEmpresa, doc.Linea != null ? doc.Linea.Id : -1, idVehiculo,
                                                          current.Turnos[0].AlPozoSalida.Subtract(TimeSpan.FromDays(3)),
                                                          current.Turnos[current.Turnos.Count - 1].DelPozoLlegada.Add(TimeSpan.FromDays(3)), -1,
                                                          -1, null);

            if (superpuestos.Count > 0)
            {
                foreach (var turno in current.Turnos)
                {
                    foreach (Documento sdoc in superpuestos)
                    {
                        if (sdoc.Id == doc.Id)
                        {
                            continue;
                        }
                        var spar = new PartePersonal(sdoc, daoF);
                        if (Superpuesto(turno, spar))
                        {
                            throw new ApplicationException("Los horarios de este parte se superponen con los del parte " + sdoc.Codigo);
                        }
                    }
                }
            }
        }
コード例 #8
0
ファイル: ParteReportStrategy.cs プロジェクト: jesumarquez/lt
        public IList GetData(params object[] parameters)
        {
            int      linea       = Convert.ToInt32(parameters[0]);
            int      aseguradora = Convert.ToInt32(parameters[1]);
            DateTime inicio      = Convert.ToDateTime(parameters[2]);
            DateTime fin         = Convert.ToDateTime(parameters[3]);

            IList result = new ArrayList();
            IList list   = daoFactory.DocumentoDAO.FindParteReport(linea, aseguradora, inicio, fin);

            foreach (Documento doc in list)
            {
                PartePersonal parte = new PartePersonal();
                parte.Codigo        = doc.Codigo;
                parte.Descripcion   = doc.Descripcion;
                parte.Fecha         = doc.Fecha;
                parte.Id            = doc.Id;
                parte.Salida        = getValue("Lugar Partida", doc);
                parte.Observaciones = getValue("Observaciones", doc);
                parte.Llegada       = getValue("Lugar Llegada", doc);
                parte.KmTotal       = Convert.ToInt32(getValue("Kilometraje Total", doc));
                parte.Equipo        = getValue("Equipo", doc);
                parte.Empresa       = daoFactory.TransportistaDAO.FindById(Convert.ToInt32(getValue("Empresa", doc))).Descripcion;
                parte.Vehiculo      = Convert.ToInt32(getValue("Vehiculo", doc));
                parte.Turnos        = new List <TurnoPartePersonal>();

                string[] alPozoSalida   = getValueList("Hs Salida Al Pozo", doc);
                string[] alPozoLlegada  = getValueList("Hs Llegada Al Pozo", doc);
                string[] delPozoSalida  = getValueList("Hs Salida Del Pozo", doc);
                string[] delPozoLlegada = getValueList("Hs Llegada Del Pozo", doc);
                string[] km             = getValueList("Kilometraje", doc);
                string[] resp           = getValueList("Responsable", doc);

                for (int i = 0; i < alPozoSalida.Length; i++)
                {
                    TurnoPartePersonal turno = new TurnoPartePersonal();
                    turno.AlPozoSalida = Convert.ToDateTime(alPozoSalida[i], CultureInfo.InvariantCulture);
                    if (alPozoLlegada.Length > i)
                    {
                        turno.AlPozoLlegada = Convert.ToDateTime(alPozoLlegada[i], CultureInfo.InvariantCulture);
                    }
                    if (delPozoSalida.Length > i)
                    {
                        turno.DelPozoSalida = Convert.ToDateTime(delPozoSalida[i], CultureInfo.InvariantCulture);
                    }
                    if (delPozoLlegada.Length > i)
                    {
                        turno.DelPozoLlegada = Convert.ToDateTime(delPozoLlegada[i], CultureInfo.InvariantCulture);
                    }
                    if (km.Length > i)
                    {
                        turno.Km = Convert.ToInt32(km[i]);
                    }
                    if (resp.Length > i)
                    {
                        turno.Responsable = resp[i];
                    }

                    parte.Turnos.Add(turno);
                }

                parte.KmTotalCalculado = 0;
                foreach (TurnoPartePersonal turno in parte.Turnos)
                {
                    try
                    {
                        parte.KmTotalCalculado +=
                            daoFactory.CocheDAO.GetDistance(parte.Vehiculo, turno.AlPozoSalida, turno.AlPozoLlegada) +
                            daoFactory.CocheDAO.GetDistance(parte.Vehiculo, turno.DelPozoSalida, turno.DelPozoLlegada);
                    }catch
                    {
                    }
                }
                result.Add(parte);
            }
            return(result);
        }