public UnidadesProd Calculos(double ancho, double alto, int espesor1, int espesor2) { UnidadesProd Valores = new UnidadesProd { MetroCuad = Math.Round(((ancho / 1000) * (alto / 1000)), 2), MetroLi = ((ancho / 1000) + (alto / 1000)) * 2, Kilos = Math.Round((espesor1 + espesor2) * (Math.Round(((ancho / 1000) * (alto / 1000)), 2) * 5 / 2), 0), }; return(Valores); }
private DataTable DetalleOtrosCli(string rutafile, string Tipodesp) { Pedido Pedido = new Pedido(); TablaEncabezado(); DataTable retorno = (DataTable)ViewState["tabla"]; DataRow drow = null; OleDbConnection cnn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source = " + rutafile + "; " + "Extended Properties='Excel 8.0;HDR=No';"); Pedido.Archivo = rutafile; string sql = "select * from [Sheet1$A6:N1000]"; OleDbDataAdapter da = new OleDbDataAdapter(sql, cnn); //Variables de item string detalleProducto; double Ancho; double Alto; double kg; double precioProd; double NetoItem; double NetoItemCDesp; double metroLineal; string modelo; kilosPedido = 0; NetoPedido = 0; double Margen = iNFOcli.FactorMargen(); try { cnn.Open(); OleDbDataReader leerCadena = da.SelectCommand.ExecuteReader(); while (leerCadena.HasRows) { while (leerCadena.Read()) { if (leerCadena[1] != DBNull.Value && leerCadena[2] != DBNull.Value) { detalleProducto = Convert.ToString(leerCadena[1]); ValDiccionario InfodelDicc = Funciones.BuscaValDicc(detalleProducto); if (InfodelDicc.Existe) { CodigoAlfakProd = InfodelDicc.CodigoAlfakProd; EspCristal1 = InfodelDicc.EspCRistal1; EspCristal2 = InfodelDicc.EspCRistal2; EspSeparador = InfodelDicc.EspSeparador; } else { Response.Redirect("~/Diccionario/agregar-Modelo-DVH.aspx?Producto=" + detalleProducto + "&Archivo=" + Pedido.Archivo + "&ID=" + id_temp.Value); } Ancho = 0; Alto = 0; kg = 0; precioProd = 0; NetoItem = 0; NetoItemCDesp = 0; metroLineal = 0; Ancho = Convert.ToDouble(leerCadena[2].ToString()); Alto = Convert.ToDouble(leerCadena[3].ToString()); CalculosProd CalProd = new CalculosProd(); UnidadesProd Datos = CalProd.Calculos(Ancho, Alto, EspCristal1, EspCristal2); kg = Datos.Kilos; m2 = Datos.MetroCuad; metroLineal = Datos.MetroLi; modelo = Convert.ToString(leerCadena[0]).Trim(); int digitos = 22 - modelo.Length; drow = retorno.NewRow(); drow["Modelo"] = Convert.ToString(leerCadena[0]) + " - " + NombrePedido.Substring(0, digitos); drow["Detalle producto"] = Convert.ToString(leerCadena[1]); drow["Cantidad"] = Convert.ToInt32(leerCadena[4]); int cantidad = Convert.ToInt32(leerCadena[4]); drow["Ancho"] = Convert.ToDecimal(leerCadena[2]); drow["Alto"] = Convert.ToDecimal(leerCadena[3]); drow["mt2"] = (m2 * cantidad).ToString("0.##"); drow["Kilos"] = (kg * cantidad); drow["Esp c1"] = EspCristal1; drow["Esp sep"] = EspSeparador; drow["Esp c2"] = EspCristal2; drow["Codigo"] = CodigoAlfakProd; kilosPedido = kilosPedido + (Convert.ToInt32(kg) * cantidad); m2Pedido = m2Pedido + (m2 * cantidad); CalculosProd Precio = new CalculosProd(); //traer precio unitado por producto precioProd = Precio.PrecioProd(CodigoAlfakProd, Ancho, Alto); //sumar proceso al precio uinitario NetoItem = precioProd + Precio.PrecioProcesoDVH("Corte", m2, metroLineal, kg) + Precio.PrecioProcesoDVH("Armado", m2, metroLineal, kg); //incluir Margen y cantidad double factorC = iNFOcli.FactorMargen(); NetoItem = NetoItem * factorC * cantidad; //Castigo por dimension pequeña if (Ancho <= 250 || Alto <= 250) { NetoItem = NetoItem + 20000; } else { if (Ancho <= 350 || Alto <= 350) { NetoItem = NetoItem + 5000; } } //Neto con despacho incluido NetoItemCDesp = NetoItem + Precio.CostoDespacho(Tipodesp, kg); NetoDespacho = NetoDespacho + Precio.CostoDespacho(Tipodesp, kg); drow["Neto"] = Math.Round(NetoItem); drow["NetoCDesp"] = Math.Round(NetoItemCDesp); NetoPedido = NetoPedido + Math.Round(NetoItem); NetoPedidoCdesp = NetoPedidoCdesp + Math.Round(NetoItemCDesp); retorno.Rows.Add(drow); } else { } } leerCadena.NextResult(); } leerCadena.Close(); cnn.Close(); } catch (Exception e) { } ViewState["tabla"] = retorno; return(retorno); }