예제 #1
0
        public static IEnumerable <ImportData> FromDat(FileInfo file, ImportConfiguration configuration, int expirationDays)
        {
            List <ImportData> orders        = new List <ImportData>();
            string            line          = "";
            Boolean           final         = false;
            ImportData        Orden         = new ImportData();
            ImportData        OrdenCabecera = new ImportData();
            int    VersionEnvioPedido       = 0;
            string cabecera       = "";
            int    contadorlinias = -1;

            try
            {
                //leemos el fichero seleccionado linea por linea
                using (System.IO.StreamReader sr = new System.IO.StreamReader(file.FullName))
                {
                    while ((line = sr.ReadLine()) != null && !final)
                    {
                        //contamos linias leidas
                        contadorlinias = contadorlinias + 1;
                        //segun el tipo de registro insertamos unos campos o otros al objeto creado
                        string Tipo = line.Substring(11, 2).Trim();
                        //cada 4 filas insertamos los datos sin contar la cabecera inicial tipo 00

                        switch (Tipo)
                        {
                        //registro primer orden de suministro
                        case "00":
                            cabecera = line;
                            break;

                        case "05":
                            //Literal
                            Orden.SetLiteral05(line.Substring(0, 3).Trim());
                            //Numero envio
                            Orden.SetNumEnvio(line.Substring(3, 4).Trim());
                            //Contador
                            Orden.SetContador05(line.Substring(7, 4).Trim());
                            //Tipo
                            Orden.SetTipo05(line.Substring(11, 2).Trim());
                            //Instalacion
                            Orden.SetInstalacion05(line.Substring(13, 8).Trim());
                            //Codigo cepsa
                            Orden.SetCodCepsa(line.Substring(21, 9).Trim());
                            //Cliente
                            Orden.SetCliente(line.Substring(30, 8).Trim());
                            //Destinatario
                            Orden.SetDestinatario(line.Substring(38, 40).Trim());
                            //Cae
                            Orden.SetCae(line.Substring(78, 12).Trim());
                            //Registro Fiscal
                            Orden.SetRegistroFiscal(line.Substring(90, 1).Trim());
                            //IEE
                            Orden.SetIee(line.Substring(91, 10).Trim());
                            //Fecha Desde
                            Orden.SetFechaDesde(line.Substring(101, 8).Trim());
                            //Fecha Hasta
                            Orden.SetFechaHasta(line.Substring(109, 8).Trim());
                            //Duracion
                            Orden.SetDuracion(line.Substring(117, 3).Trim());
                            //Condiciones
                            Orden.SetCondiciones05(line.Substring(120, 5).Trim());
                            //Hora Desde
                            Orden.SetHoraDesde(line.Substring(125, 4).Trim());
                            //Hora Hasta
                            Orden.SetHoraHasta(line.Substring(129, 4).Trim());
                            //Observaciones 1
                            Orden.SetObservaciones1(line.Substring(133, 30).Trim());
                            //Observaciones 2
                            Orden.SetObservaciones2(line.Substring(163, 30).Trim());
                            break;

                        //registro segundo orden de suministro
                        case "06":
                            //Literal
                            Orden.SetLiteral06(line.Substring(0, 3).Trim());
                            //Numero envio
                            Orden.SetNumEnvio(line.Substring(3, 4).Trim());
                            //Contador
                            Orden.SetContador06(line.Substring(7, 4).Trim());
                            //Tipo
                            Orden.SetTipo06(line.Substring(11, 2).Trim());
                            //Instalacion
                            Orden.SetInstalacion06(line.Substring(13, 9).Trim());
                            //Contacto
                            Orden.SetContacto(line.Substring(22, 30).Trim());
                            //Cargo
                            Orden.SetCargo(line.Substring(52, 30).Trim());
                            //Telefono
                            Orden.SetTelefono(line.Substring(82, 15).Trim());
                            //Fax
                            Orden.SetFax(line.Substring(97, 15).Trim());
                            //Nif
                            Orden.SetNif(line.Substring(112, 14).Trim());
                            break;

                        //registro tercer orden de suministro
                        case "07":
                            //Literal
                            Orden.SetLiteral07(line.Substring(0, 3).Trim());
                            //Numero envio
                            Orden.SetNumEnvio(line.Substring(3, 4).Trim());
                            //Contador
                            Orden.SetContador07(line.Substring(7, 4).Trim());
                            //Tipo
                            Orden.SetTipo07(line.Substring(11, 2).Trim());
                            //Instalacion
                            Orden.SetInstalacion07(line.Substring(13, 9).Trim());
                            //Calle 1
                            Orden.SetCalle1(line.Substring(22, 35).Trim());
                            //Calle 2
                            Orden.SetCalle2(line.Substring(57, 35).Trim());
                            //Calle 3
                            Orden.SetCalle3(line.Substring(92, 35).Trim());
                            //Municipio
                            Orden.SetMunicipio(line.Substring(127, 5).Trim());
                            //Localidad
                            Orden.SetLocalidad(line.Substring(132, 35).Trim());
                            //Codigo Postal
                            Orden.SetCodigoPostal(line.Substring(167, 5).Trim());
                            //Provincia
                            Orden.SetProvincia(line.Substring(172, 2).Trim());
                            //Pais
                            Orden.Setpais(line.Substring(174, 3).Trim());
                            //Codigo postal internacional
                            Orden.SetCodigoPostalInternacional(line.Substring(177, 10).Trim());
                            //Region
                            Orden.SetRegion(line.Substring(187, 3).Trim());
                            //Ruta
                            Orden.SetRuta(line.Substring(193, 3).Trim());
                            break;

                        //registro cuarto orden de suministro
                        case "14":
                            //Literal
                            Orden.SetLiteral14(line.Substring(0, 3).Trim());
                            //Numero envio
                            Orden.SetNumEnvio(line.Substring(3, 4).Trim());
                            //Contador
                            Orden.SetContador14(line.Substring(7, 4).Trim());
                            //Tipo
                            Orden.SetTipo14(line.Substring(11, 2).Trim());
                            //Operador
                            Orden.SetOperador14(line.Substring(13, 6).Trim());
                            //Suministrador
                            Orden.SetSuministrador14(line.Substring(19, 6).Trim());

                            if (VersionEnvioPedido == 0)
                            {
                                //Transportista
                                Orden.SetTransportista14(line.Substring(25, 6).Trim());
                                //Pedido
                                Orden.SetPedido(line.Substring(31, 15).Trim());
                                //Instalacion
                                Orden.SetInstalacion14(line.Substring(47, 10).Trim());
                                //Material
                                Orden.SetMaterial(line.Substring(57, 9).Trim());
                                //Cantidad
                                Orden.SetCantidad(line.Substring(66, 11).Trim());
                                //Unidad de medida
                                Orden.SetUnidadDeMedida(line.Substring(77, 2).Trim());
                                //Fecha incial
                                Orden.SetFechaInicial(line.Substring(79, 8).Trim());
                                //Fecha Final
                                Orden.SetFechaFinal(line.Substring(87, 8).Trim());
                                //Tipo de operacion
                                Orden.SetTipoDeOperador(line.Substring(95, 1).Trim());
                                //Centro
                                Orden.SetCentro(line.Substring(96, 4).Trim());
                                //Condiciones
                                Orden.SetCondiciones14(line.Substring(100, 5).Trim());
                                //Horario
                                Orden.SetHorario(line.Substring(105, 8).Trim());
                                //obervaciones 1
                                Orden.SetObservaciones1(line.Substring(113, 30).Trim());
                                //observaciones 2
                                Orden.SetObservaciones2(line.Substring(143, 30).Trim());
                                //ultima descarga
                                Orden.SetUltimaDescarga(line.Substring(173, 1).Trim());
                                //volumen 1
                                Orden.SetVolumen1(line.Substring(174, 6).Trim());
                                //volumen 2
                                Orden.SetVolumen2(line.Substring(180, 6).Trim());
                                //volumne 3
                                Orden.SetVolumen3(line.Substring(186, 6).Trim());
                                //nivel de deposito 1
                                Orden.SetNivelDeDeposito1(line.Substring(192, 2).Trim());
                                //nivel de deposito 2
                                Orden.SetNivelDeDeposito2(line.Substring(194, 2).Trim());
                                //nivel de deposito 3
                                Orden.SetNivelDeDeposito3(line.Substring(196, 2).Trim());
                                //llenado
                                Orden.SetLlenado(line.Substring(198, 1).Trim());
                                //vaciado
                                Orden.SetVaciado(line.Substring(199, 1).Trim());
                            }
                            else if (VersionEnvioPedido == 1)
                            {
                                //Transportista
                                Orden.SetTransportista14(line.Substring(25, 10).Trim());
                                //Pedido
                                Orden.SetPedido(line.Substring(35, 15).Trim());
                                //Instalacion
                                Orden.SetInstalacion14(line.Substring(51, 10).Trim());
                                //Material
                                Orden.SetMaterial(line.Substring(61, 9).Trim());
                                //Cantidad
                                Orden.SetCantidad(line.Substring(70, 11).Trim());
                                //Unidad de medida
                                Orden.SetUnidadDeMedida(line.Substring(81, 2).Trim());
                                //Fecha incial
                                Orden.SetFechaInicial(line.Substring(83, 8).Trim());
                                //Fecha Final
                                Orden.SetFechaFinal(line.Substring(91, 8).Trim());
                                //Tipo de operacion
                                Orden.SetTipoDeOperador(line.Substring(99, 1).Trim());
                                //Centro
                                Orden.SetCentro(line.Substring(100, 4).Trim());
                                //Condiciones
                                Orden.SetCondiciones14(line.Substring(104, 5).Trim());
                                //Horario
                                Orden.SetHorario(line.Substring(109, 8).Trim());
                                //obervaciones 1
                                Orden.SetObservaciones1(line.Substring(117, 30).Trim());
                                //observaciones 2
                                Orden.SetObservaciones2(line.Substring(147, 30).Trim());
                                //ultima descarga
                                Orden.SetUltimaDescarga(line.Substring(177, 1).Trim());
                                //volumen 1
                                Orden.SetVolumen1(line.Substring(178, 6).Trim());
                                //volumen 2
                                Orden.SetVolumen2(line.Substring(184, 6).Trim());
                                //volumne 3
                                Orden.SetVolumen3(line.Substring(190, 6).Trim());
                                //nivel de deposito 1
                                Orden.SetNivelDeDeposito1(line.Substring(196, 2).Trim());
                                //nivel de deposito 2
                                Orden.SetNivelDeDeposito2(line.Substring(198, 2).Trim());
                                //nivel de deposito 3
                                Orden.SetNivelDeDeposito3(line.Substring(200, 2).Trim());
                                //llenado
                                Orden.SetLlenado(line.Substring(202, 1).Trim());
                                //vaciado
                                Orden.SetVaciado(line.Substring(203, 1).Trim());
                            }
                            break;

                        //marca finalización fichero
                        case "91":
                            final = true;
                            break;
                        }

                        //insertamos los datos del objeto en base de datos(de todos los registros cabecera/suministros orden 1,2,3,4)
                        if (contadorlinias == 4)
                        {
                            //insertamos la cabecera por el rgistro a introducir (order, order_Cepsa)
                            Orden.SetCabeceraOrder(cabecera);
                            //obtenemos los datos de geolocalización de latitud y longitud de google maps.
                            string   direccion    = Orden.Calle1;
                            string   provincia    = CodeProvinceTostring(Orden.Provincia).Trim();
                            string   codigopostal = Orden.Cod_Postal;
                            string   latitud      = "0";
                            string   longitud     = "0";
                            string[] gps          = Geocode(direccion, codigopostal, provincia);

                            //validación de los valores de geocalización
                            if (!string.IsNullOrEmpty(gps[0]) && !string.IsNullOrEmpty(gps[1]))
                            {
                                latitud  = gps[0];
                                longitud = gps[1];
                            }



                            //conversion del opeardor de cepsa
                            if (Orden.Operador00 == "910106")
                            {
                                Orden.Operador00 = "500";
                                Orden.Operador14 = "500";
                            }
                            Orden.InsertDatasOrderView(expirationDays, latitud, longitud);
                            orders.Add(Orden);
                            Orden          = new ImportData();
                            contadorlinias = 0;
                        }
                    }
                    sr.Close();
                }
            }
            catch (Exception exp)
            {
                MessageBox.Show("fichero no se ha importado correctamente: " + exp.ToString());
            }
            return(orders);
        }
예제 #2
0
        public static IEnumerable <ImportData> FromExcel(FileInfo file, ImportConfiguration configuration, int expirationDays)
        {
            List <ImportData> orders = new List <ImportData>();

            using (ExcelPackage package = new ExcelPackage(file))
            {
                int numeropaginas = package.Workbook.Worksheets.Count;

                if (numeropaginas > 1)
                {
                    MessageBox.Show("El documento Excel no puede tener más de una página");
                    return(null);
                }

                ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
                var            startRow  = 2;
                for (int rowNum = startRow; rowNum <= worksheet.Dimension.End.Row; rowNum++)
                {
                    var worksheetRow = worksheet.Cells[rowNum, 1, rowNum, worksheet.Dimension.End.Column];

                    if (configuration.IgnoreFirstRow && rowNum == 1)
                    {
                        continue;
                    }

                    ImportData order = new ImportData();
                    var        date  = DateTime.ParseExact(worksheetRow["AD" + rowNum].Text.PadLeft(4, '0'), "ddMM", null);
                    order.StartDate   = date > DateTime.Today ? date.AddYears(-1) : date;
                    order.FinalDate   = order.StartDate.AddDays(expirationDays);
                    order.FactoryCode = worksheetRow["AF" + rowNum].Text;
                    order.Reference   = worksheetRow["C" + rowNum].Text;
                    order.ClientCode  = worksheetRow["A" + rowNum].Text;
                    order.ClientName  = worksheetRow["L" + rowNum].Text;
                    order.ClientCif   = worksheetRow["D" + rowNum].Text;
                    order.Contact     = worksheetRow["AN" + rowNum].Text;
                    order.City        = worksheetRow["O" + rowNum].Text;
                    order.PostCode    = worksheetRow["N" + rowNum].Text;
                    order.Address     = worksheetRow["M" + rowNum].Text;
                    order.Email       = null;
                    var phone = worksheetRow["AM" + rowNum].Text;
                    if (phone.Contains("/"))
                    {
                        String[] split = phone.Split('/');
                        order.Phone  = split[0];
                        order.Phone2 = split[1];
                    }
                    else
                    {
                        order.Phone = phone;
                    }


                    string[] gps = Geocode2(order.Address, order.PostCode, order.City);

                    if (string.IsNullOrEmpty(gps[0]) && string.IsNullOrEmpty(gps[1]))
                    {
                        order.Latitude  = "0";
                        order.Longitude = "0";
                    }
                    else
                    {
                        order.Latitude  = gps[0];
                        order.Longitude = gps[1];
                    }
                    order.TankVolume      = "0";
                    order.TankNum         = worksheetRow["R" + rowNum].Text;
                    order.TankLevel       = worksheetRow["AG" + rowNum].Text;
                    order.Amount          = worksheetRow["AH" + rowNum].Text;
                    order.ProductCode     = "GALP";
                    order.MeasureUnit     = "KG";
                    order.VehicleSizeCode = "3";
                    order.Description     = worksheetRow["AI" + rowNum].Text + " " + worksheetRow["AL" + rowNum].Text;

                    orders.Add(order);
                }

                return(orders);
            }
        }
예제 #3
0
        public static IEnumerable <ImportData> FromCSV(FileInfo file, ImportConfiguration configuration, int expirationDays)
        {
            StreamReader      reader = new StreamReader(file.FullName, Encoding.Default);
            List <ImportData> orders = new List <ImportData>();

            int rows = 0;

            while (reader.Peek() > 0)
            {
                string lStrLine = reader.ReadLine();
                rows++;

                if (configuration.IgnoreFirstRow && rows == 1)
                {
                    continue;
                }

                byte[] bytes = Encoding.UTF8.GetBytes(lStrLine);
                lStrLine = Encoding.UTF8.GetString(bytes);
                if (lStrLine == null)
                {
                    break;
                }
                if (lStrLine.Trim() == "")
                {
                    continue;
                }
                string[] lArrStrCells = null;
                lArrStrCells = lStrLine.Split(configuration.Delimiter);
                if (lArrStrCells == null)
                {
                    continue;
                }

                ImportData order = new ImportData();
                order.StartDate   = Convert.ToDateTime(lArrStrCells[1]);
                order.FinalDate   = order.StartDate.AddDays(expirationDays);
                order.FactoryCode = lArrStrCells[21];
                order.Reference   = lArrStrCells[0];
                order.ClientCode  = lArrStrCells[3];
                order.ClientName  = lArrStrCells[2];
                order.ClientCif   = lArrStrCells[5];
                order.Contact     = lArrStrCells[4];
                order.City        = lArrStrCells[6];
                order.PostCode    = lArrStrCells[7];
                order.Address     = lArrStrCells[8] + " " + lArrStrCells[9];
                order.Email       = lArrStrCells[10];
                var phone = lArrStrCells[11];
                if (phone.Contains("/"))
                {
                    String[] split = phone.Split('/');
                    order.Phone  = split[0];
                    order.Phone2 = split[1];
                }
                else
                {
                    order.Phone = phone;
                }
                order.Latitude        = lArrStrCells[19];
                order.Longitude       = lArrStrCells[20];
                order.TankVolume      = lArrStrCells[12];
                order.TankNum         = lArrStrCells[14];
                order.TankLevel       = lArrStrCells[15];
                order.Amount          = lArrStrCells[16];
                order.ProductCode     = lArrStrCells[17];
                order.MeasureUnit     = "KG";
                order.VehicleSizeCode = lArrStrCells[22];
                order.Description     = lArrStrCells[18];

                orders.Add(order);
            }
            reader.Close();
            return(orders);
        }