static public Hashtable ObtenerPesos()
        {
            Hashtable   tiempos = new Hashtable();
            XmlDocument doc     = new XmlDocument();

            try
            {
                doc.Load("PesosNissan.xml");
            }
            catch (Exception e)
            {
                throw new Exception("No se ha encontrado el archivo 'PesosNissan.xml', favor de reinstalar aplicacion o contactar a " + ConfigurationManager.AppSettings["CorreoSoporte"] + ". " + e.Message);
            }
            XmlElement  xelRoot  = doc.DocumentElement;
            XmlNodeList xmlNodes = xelRoot.SelectNodes("/Pesos/Articulo");

            foreach (XmlNode Articulo in xmlNodes)
            {
                MedidasArticulo Medida = new MedidasArticulo();
                try
                {
                    Medida.Peso        = Convert.ToDouble(Articulo["Peso"].InnerText);
                    Medida.Largo       = Convert.ToDouble(Articulo["Largo"].InnerText);
                    Medida.Ancho       = Convert.ToDouble(Articulo["Ancho"].InnerText);
                    Medida.Altura      = Convert.ToDouble(Articulo["Altura"].InnerText);
                    Medida.PiezasXcaja = Convert.ToInt32(Articulo["PiezasCaja"].InnerText);
                }
                catch (Exception e)
                {
                    throw new Exception("Formato incorrecto en archivo 'PesosNissan.xml', favor de validar nodo '" + Articulo.OuterXml + "' o contactar a " + ConfigurationManager.AppSettings["CorreoSoporte"] + ". " + e.Message);
                }
                try
                {
                    Medida.Clave = Articulo["ClaveAlterna"].InnerText;
                    tiempos[Articulo["ClaveAlterna"].InnerText] = Medida;
                }
                catch (Exception e)
                {
                    throw new Exception("'Clave Alterna de Articulo' duplicada en archivo 'PesosNissan.xml', favor de validar nodo '" + Articulo.OuterXml + "' o contactar a " + ConfigurationManager.AppSettings["CorreoSoporte"] + ". " + e.Message);
                }
            }
            return(tiempos);
        }
Esempio n. 2
0
        //Comentando temporalmente para que no truene durante los cambios al RANDataset
        static public RemisionesDataSet ObtenerRemisiones(DatosFiltro filtros, Registrador.IRegistroEjecucion registrador)
        {
            RemisionesDataSet ds     = new RemisionesDataSet();
            string            CveDoc = "";
            string            RAN    = "";

            //string claves = "";
            //string clavesAlternas = "";
            try
            {
                bool      PorFechas     = filtros.Filtro == TipoFiltro.Fecha; //Determina si es por fechas el filtro
                Hashtable PesosArticulo = CargadorXMLPesosNissan.ObtenerPesos();
                List <List <RANDBData> > ListaRemisiones = null;

                if (PorFechas)
                {
                    ListaRemisiones = DBManager.ObtenerRemisiones(filtros.FechaInicio, filtros.FechaFinal, registrador);
                    //ListaRemisiones = DBManager.ObtenerRemisiones(new DateTime(2017,08,01) , new DateTime(2018, 10, 30));
                }
                else
                {
                    ListaRemisiones = DBManager.ObtenerRemisiones(filtros.Folios, registrador);
                    //ListaRemisiones = DBManager.ObtenerRemisiones("2888,123abc,2942,2b#^--12,3003,ab123");
                }

                foreach (List <RANDBData> ListaDeRANs in ListaRemisiones)
                {
                    RemisionesDataSet.RemisionesDataTableRow rowRemision = ds.RemisionesDataTable.NewRemisionesDataTableRow();
                    string strListaRANs = "";
                    float  PesoTotal    = 0;

                    CveDoc = ListaDeRANs[0].Remision;
                    rowRemision.FolioRemision   = ListaDeRANs[0].Remision;
                    rowRemision.CantidadTotal   = ListaDeRANs[0].CantidadTotal;
                    rowRemision.PartidasTotales = ListaDeRANs.Count;
                    rowRemision.FechaDocumento  = ListaDeRANs[0].FechaCreacion;
                    rowRemision.FechaEntrega    = ListaDeRANs[0].FechaEnvio;
                    rowRemision.ClaveCliente    = ListaDeRANs[0].ClaveCliente;
                    rowRemision.NombreCliente   = ListaDeRANs[0].NombreCliente;
                    rowRemision.Status          = ListaDeRANs[0].Status;

                    ds.RemisionesDataTable.Rows.Add(rowRemision);

                    foreach (RANDBData ran in ListaDeRANs)
                    {
                        float PesoPartida = 0;
                        RemisionesDataSet.PartidasDataTableRow rowPartida = ds.PartidasDataTable.NewPartidasDataTableRow();
                        MedidasArticulo MedidaArticulo = new MedidasArticulo();

                        //if (ran.ClaveProducto.Substring(0, 5) != "NIMEX" && ran.ClaveProductoAlterna.Substring(0, 5) != "NIMEX")
                        //{
                        //    claves = claves + ran.ClaveProducto + ",";
                        //    clavesAlternas = clavesAlternas + ran.ClaveProductoAlterna + ",";
                        //}

                        if (ran.ClaveProducto.Substring(0, 5) == "NIMEX")
                        {
                            MedidaArticulo = (MedidasArticulo)PesosArticulo[ran.ClaveProducto];
                        }
                        else
                        {
                            MedidaArticulo = (MedidasArticulo)PesosArticulo[ran.ClaveProductoAlterna];
                        }

                        RAN = ran.RAN;
                        if (MedidaArticulo == null)
                        {
                            registrador.RegistrarAdvertencia("No se encontro el articulo '" + ran.ClaveProducto + "' dentro del archivo de pesos.");
                        }
                        else
                        {
                            PesoPartida = (float)(ran.Cantidad / MedidaArticulo.PiezasXcaja * MedidaArticulo.Peso);
                        }

                        rowPartida.FolioRemision        = ran.Remision;
                        rowPartida.ClaveProducto        = ran.ClaveProducto;
                        rowPartida.CantidadPartida      = ran.Cantidad;
                        rowPartida.PesoPartida          = PesoPartida;
                        rowPartida.RAN                  = ran.RAN;
                        rowPartida.ClaveProductoAlterna = ran.ClaveProductoAlterna;

                        PesoTotal += PesoPartida;
                        ds.PartidasDataTable.Rows.Add(rowPartida);

                        strListaRANs += "," + ran.RAN;

                        if (string.IsNullOrEmpty(ran.RAN.Trim()))
                        {
                            registrador.RegistrarAdvertencia("No se encontro RAN para la clave de remisión '" + ran.Remision + "' con clave de articulo '" + ran.ClaveProducto + "'.");
                        }
                        if (string.IsNullOrEmpty(ran.ClaveProductoAlterna.Trim()))
                        {
                            registrador.RegistrarAdvertencia("No se encontro 'Clave Alterna' para la clave de producto '" + ran.ClaveProducto + "'.");
                        }
                    }
                    rowRemision.ListaRANs = strListaRANs.Trim().Length > 1 ? strListaRANs.Substring(1) : "";
                    rowRemision.PesoTotal = Convert.ToInt32(Math.Round(PesoTotal));
                }
            }
            catch (Exception ex)
            {
                registrador.RegistrarError("Ocurrio un error desconocido al procesar la remisión '" + CveDoc + "' con RAN '" + RAN + "'. Detalles '" + ex.Message + "'");
            }

            return(ds);
        }