예제 #1
0
 public static void CancelarDespacho(List <int> id_carro)
 {
     foreach (int id in id_carro)
     {
         Carro.Liberar(id);
     }
 }
예제 #2
0
        /// <summary>
        /// Si ocurre un llamado 10-2, 10-8 o 10-9 en alguna de las áreas correspondiente a compañías que cuentan con ‘B’ y ‘BX’,
        /// debe ser despachado el ‘BX’ en lugar del ‘B’ que indica la pauta. Si al momento del despacho de alguna de estas claves
        /// (10-2, 10-8 o 10-9), el ‘BX’ se encuentra fuera de servicio, debe ser despachado el ‘B’ de la misma compañía en caso que
        /// se encuentre disponible o el ‘B’ de la compañía que corresponda según la prioridad.
        /// </summary>
        /// <param name="exp"></param>
        /// <param name="id_carros"></param>
        private static void CBMS_CasoEspecialBXporB(e_expedientes exp, ICollection <int> id_carros)
        {
            // verificar llamado 10-2, 10-8 o 10-9
            DataTable llamados = new z_llamados().Getz_llamados().Tables[0];

            DataRow[] res =
                llamados.Select("codigo_llamado=" + exp.codigo_principal +
                                " and (clave='10-2' or clave='10-8' or clave='10-9')");
            if (res.Length != 0)
            {
                // verificar que no haya BX
                //bool salio_bx = false;
                int  compania          = exp.id_area / 100;
                bool compania_tiene_bx = false;
                //bool bx_en_llamado_es_de_compañia = false;
                //int id_bx = 0;
                z_carros  bx         = null;
                DataTable tipo_carro = new z_tipo_carro().Getz_tipo_carro().Tables[0];
                DataTable carros     = new z_carros().Getz_carros().Tables[0];
                int       tipo_b     = (int)(tipo_carro.Select("tipo_carro_letra='B'")[0]["id_tipo_carro"]);
                int       tipo_bx    = (int)(tipo_carro.Select("tipo_carro_letra='BX'")[0]["id_tipo_carro"]);

                // salio un bx?
                foreach (int id in id_carros)
                {
                    DataRow dr = carros.Select("id_carro=" + id)[0];
                    if ((int)dr["id_tipo_carro"] == tipo_bx)
                    {
                        //salio_bx = true;
                        //id_bx = id;
                        bx = new z_carros().getObjectz_carros(id);
                        break;
                    }
                }

                // compañia tiene bx?
                foreach (DataRow dr in carros.Select("id_tipo_carro=" + tipo_bx))
                {
                    if ((int)dr["id_compania"] == compania)
                    {
                        compania_tiene_bx = true;
                        break;
                    }
                }
                // si salio el bx que no era, o no salio bx, (liberar bx y) asignar B segun prioridad
                if ((bx != null && bx.id_compania != compania && compania_tiene_bx) || bx == null && compania_tiene_bx)
                {
                    // liberar BX si habia
                    if (bx != null)
                    {
                        Carro.Liberar(bx.id_carro);
                        id_carros.Remove(bx.id_carro);
                    }
                    // obtener carro B
                    z_carros carro_b = Despacho.ObtenerCarro(tipo_b, exp.id_area);
                    if (carro_b.id_carro != 0)
                    {
                        Carro.Despachar(carro_b);
                        //Conductor.FueraServicio(carro_b.id_conductor, carro_b.id_carro);
                        id_carros.Add(carro_b.id_carro);
                    }
                }
            }
        }