private static factura procesaHoja(Worksheet sheet) { int fila = 0; factura o = new factura(); object dato = null; #region Datos Generales dato = sheet.get_Range("G12", "G12").Value2; if (dato != null) { o.Referencia = dato.ToString(); o.PEntInv = EntradaCtrl.InventarioGetCtaContable(o.Referencia); _maxColCuentasCont = o.PEntInv.PLstCteMercCta.Count > _maxColCuentasCont ? o.PEntInv.PLstCteMercCta.Count : _maxColCuentasCont; } #endregion #region Maniobra entrada y salida for (fila = 17; fila <= 19; fila++) { dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2; if (dato != null) { o.CapacidadFlete = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2.ToString(); o.ManiobraEntradaSalida = Convert.ToDouble(sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2); o.ManiobraEntradaSalidaCantidad = Convert.ToInt32(dato); o.ManiobraEntradaSalidaTotal = Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2); break; } } #endregion #region Etiquetas aduana dato = sheet.get_Range("E23", "E23").Value2; if (dato != null) { o.Piezas19x10 = Convert.ToInt32(dato); o.EtiquetaAduana19x10 = Convert.ToDouble(sheet.get_Range("D23", "D23").Value2); } dato = sheet.get_Range("E27", "E27").Value2; if (dato != null) { o.Piezas10x10 = Convert.ToInt32(dato); o.EtiquetaAduana10x10 = Convert.ToDouble(sheet.get_Range("D27", "D27").Value2); } #endregion #region Transportes //Busca el inicio de la fila que contiene la información del transporte (TRANSPORTES) fila = 30; fila = getFila(fila, "B", "TRANSPORTES", sheet); dato = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2; string tipo = string.Empty; //Los transportes y maniobras se van a diferenciar por la columna que le antecede T transprote, M maniobra object cantidad; while (dato != null) { tipo = sheet.get_Range("A" + fila.ToString(), "A" + fila.ToString()).Value2; cantidad = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2; switch (tipo) { case "T": Transporte t = new Transporte( Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2), Convert.ToInt32(cantidad), Convert.ToDouble(sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2.ToString())); o.LstTransporte.Add(t); break; case "M": Maniobra m = new Maniobra( Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2), Convert.ToInt32(cantidad), Convert.ToDouble(sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2.ToString())); o.LstManiobra.Add(m); break; default: break; } fila++; dato = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2; } //bool esTransporte = !dato.ToString().StartsWith("Maniobra"); //while (esTransporte) //{ // dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2; // if (dato != null) // { // Transporte t = new Transporte( // Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2), // Convert.ToInt32(dato), // getTarifaTransporte(sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2.ToString()) // ); // o.LstTransporte.Add(t); // } // fila++; // dato = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2; // esTransporte = !dato.ToString().StartsWith("Maniobra"); //} _maxColTransportes = o.LstTransporte.Count > _maxColTransportes ? o.LstTransporte.Count : _maxColTransportes; #endregion #region Maniobras //bool esManiobra = dato.ToString().StartsWith("Maniobra"); //while (esManiobra) //{ // dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2; // if (dato != null) // { // Maniobra m = new Maniobra( // Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2), // Convert.ToInt32(dato), // getTarifaManiobra(sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2.ToString()) // ); // o.LstManiobra.Add(m); // } // fila++; // dato = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2; // if (dato != null) // esManiobra = dato.ToString().StartsWith("Maniobra"); // else // esManiobra = false; //} _maxColManiobras = o.LstManiobra.Count > _maxColManiobras ? o.LstManiobra.Count : _maxColManiobras; #endregion #region Otros (Parte 1) dato = sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2; if (dato == null) { dato = string.Empty; } while (!dato.ToString().StartsWith("SUBTOTAL")) { dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2; if (dato != null) { OtrosServicios os = new OtrosServicios(); os.Cantidad = Convert.ToInt32(dato); os.Valor = Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2); os.Nombre = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2.ToString(); o.LstOtros.Add(os); } fila++; dato = sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2; if (dato == null) { dato = string.Empty; } } #endregion #region Tarimas y Emplayado fila = getFila(fila, "B", "OTROS", sheet); dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2; if (dato != null) { o.PTarima.Cantidad = Convert.ToInt32(dato); o.PTarima.Valor = Convert.ToDouble(sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2); } fila++; dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2; if (dato != null) { o.PEmplayado.Cantidad = Convert.ToInt32(dato); o.PEmplayado.Valor = Convert.ToDouble(sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2); } #endregion #region #region Otros (Parte 2) fila = getFila(fila, "B", "UVA", sheet); dato = sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2; while (!dato.ToString().StartsWith("SUBTOTAL")) { dato = sheet.get_Range("E" + fila.ToString(), "E" + fila.ToString()).Value2; if (dato != null) { OtrosServicios os = new OtrosServicios(); os.Cantidad = Convert.ToInt32(dato); os.Valor = Convert.ToDouble(sheet.get_Range("F" + fila.ToString(), "F" + fila.ToString()).Value2); os.Nombre = sheet.get_Range("B" + fila.ToString(), "B" + fila.ToString()).Value2.ToString(); o.LstOtros.Add(os); } fila++; dato = sheet.get_Range("D" + fila.ToString(), "D" + fila.ToString()).Value2; } #endregion #region Total fila = getFila(fila, "G", "GRAN TOTAL", sheet); fila--; //El método get fila incrementa en una unidad dato = sheet.get_Range("I" + fila.ToString(), "I" + fila.ToString()).Value2; if (dato != null) { o.Total = Convert.ToDouble(dato); } #endregion return(o); }