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); }
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); } }
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); }