public static List<odts.DetalleDeterminacion> GetAsociados(int artiId1) { List<odts.DetalleDeterminacion> lista = new List<odts.DetalleDeterminacion>(); using (SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["conexionQ"])) { try { SqlCommand cmd = new SqlCommand(@" SELECT B.ARTI_ID, B.ARTI_ID1, B.ARTI_DESCRIPCION, B.ARTI_PNT_METODOLOGIA, B.ARTI_DETERMINACIONES, B.TIPAR_ID, ISNULL(M.DEPA_ID, ISNULL(D.DEPA_ID,0)) DEPA_ID FROM ARTICULO_ASOCIADO A INNER JOIN ARTICULOS B ON B.ARTI_ID1 = A.ASOCIADO_ID1 LEFT OUTER JOIN MODELOS M ON M.ARTI_ID = B.ARTI_ID LEFT OUTER JOIN DETERMINACION_TIAN DT ON DT.ARTI_ID = B.ARTI_ID LEFT OUTER JOIN DETERMINACIONES D ON D.DETE_ID = DT.DETE_ID WHERE A.ARTI_ID1 = @ARTI_ID1 ", cn); cmd.CommandType = System.Data.CommandType.Text; cmd.Parameters.AddWithValue("@ARTI_ID1", artiId1); cn.Open(); SqlDataReader reader = cmd.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { odts.DetalleDeterminacion a = new odts.DetalleDeterminacion(); a.DetalleDescripcion = Utilidades.UtilsBD.DBValueToRequiredValue<string>(reader["ARTI_DESCRIPCION"]); a.ArtiId1 = Utilidades.UtilsBD.DBValueToRequiredValue<int>(reader["ARTI_ID1"]); a.ArtiDeterminaciones = Utilidades.UtilsBD.DBValueToRequiredValue<string>(reader["ARTI_DETERMINACIONES"]); a.ArtiPNTMetodologia = Utilidades.UtilsBD.DBValueToRequiredValue<string>(reader["ARTI_PNT_METODOLOGIA"]); a.DepartamentoId = Utilidades.UtilsBD.DBValueToRequiredValue<int>(reader["DEPA_ID"]); lista.Add(a); } } cn.Close(); } catch (System.StackOverflowException ex) { MessageBox.Show("Existe un bucle entre los artículos asociados" + Environment.NewLine + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop); } catch (Exception ex) { MessageBox.Show("Ocurrió un error al buscar los artículos asociados" + Environment.NewLine + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop); } } return lista; }
// Devuelve las lineas (detalle) de un bloque public static List<odts.PresupuestoVentaDetalle> GetDetalleByBloque(string docuId, string presuvId, int bloqueId) { List<odts.PresupuestoVentaDetalle> lista = new List<odts.PresupuestoVentaDetalle>(); using (SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["conexionQ"])) { SqlCommand cmd = new SqlCommand( @"SELECT A.LIDO_ID, A.PRESUVL_LINEA, A.PRESUVL_SUBLINEA, A.ARTI_ID1, A.PRESUVL_DESCRIPCION, A.PRESUVL_CANTIDAD, A.UNID_ID, B.UNID_DESCRIPCION, A.PRESUVL_PRECIO, A.GRDE_ID, C.GRDE_DESCRIPCION, A.COMP_ID, A.ARTI_DETERMINACIONES, A.ARTI_PNT_METODOLOGIA FROM PRESUPUESTOSV_LI A INNER JOIN UNIDADES B ON B.UNID_ID = A.UNID_ID LEFT OUTER JOIN GRUPOS_DESCUENTOS C ON C.GRDE_ID = A.GRDE_ID WHERE A.DOCU_ID = @DOCU_ID AND A.PRESUV_ID = @PRESUV_ID AND A.BLOQUE_ID = @BLOQUE_ID AND A.LIDO_ID <> 'T' ", cn); cmd.CommandType = System.Data.CommandType.Text; cmd.Parameters.AddWithValue("@DOCU_ID", docuId); cmd.Parameters.AddWithValue("@PRESUV_ID", presuvId); cmd.Parameters.AddWithValue("@BLOQUE_ID", bloqueId); cn.Open(); SqlDataReader reader = cmd.ExecuteReader(); if (reader.HasRows) { odts.DetalleModelo p = new odts.DetalleModelo(); while (reader.Read()) { string tipoLinea = Utilidades.UtilsBD.DBValueToRequiredValue<string>(reader["LIDO_ID"]); if (tipoLinea == "N") { p = new odts.DetalleModelo(); p.Linea = Utilidades.UtilsBD.DBValueToRequiredValue<int>(reader["PRESUVL_LINEA"]); p.Sublinea = Utilidades.UtilsBD.DBValueToRequiredValue<int>(reader["PRESUVL_SUBLINEA"]); p.ArtiId1 = Utilidades.UtilsBD.DBValueToRequiredValue<int>(reader["ARTI_ID1"]); p.DetalleDescripcion = Utilidades.UtilsBD.DBValueToRequiredValue<string>(reader["PRESUVL_DESCRIPCION"]); p.Cantidad = Utilidades.UtilsBD.DBValueToRequiredValue<decimal>(reader["PRESUVL_CANTIDAD"]); p.UnidadId = Utilidades.UtilsBD.DBValueToRequiredValue<string>(reader["UNID_ID"]); p.UnidadDescripcion = Utilidades.UtilsBD.DBValueToRequiredValue<string>(reader["UNID_DESCRIPCION"]); p.Precio = Utilidades.UtilsBD.DBValueToRequiredValue<decimal>(reader["PRESUVL_PRECIO"]); p.DescuentoId = Utilidades.UtilsBD.DBValueToOptionalValue<int>(reader["GRDE_ID"]); p.DescuentoDescripcion = Utilidades.UtilsBD.DBValueToOptionalString(reader["GRDE_DESCRIPCION"]); p.ComportamientoIVA = Utilidades.UtilsBD.DBValueToRequiredValue<int>(reader["COMP_ID"]); p.ArtiDeterminaciones = Utilidades.UtilsBD.DBValueToOptionalString(reader["ARTI_DETERMINACIONES"]); p.ArtiPNTMetodologia = Utilidades.UtilsBD.DBValueToOptionalString(reader["ARTI_PNT_METODOLOGIA"]); lista.Add(p); } else if (tipoLinea == "N+") { odts.DetalleDeterminacion dd = new odts.DetalleDeterminacion(); dd.Linea = Utilidades.UtilsBD.DBValueToRequiredValue<int>(reader["PRESUVL_LINEA"]); dd.Sublinea = Utilidades.UtilsBD.DBValueToRequiredValue<int>(reader["PRESUVL_SUBLINEA"]); dd.ArtiId1 = Utilidades.UtilsBD.DBValueToRequiredValue<int>(reader["ARTI_ID1"]); dd.DetalleDescripcion = Utilidades.UtilsBD.DBValueToRequiredValue<string>(reader["PRESUVL_DESCRIPCION"]); dd.Cantidad = Utilidades.UtilsBD.DBValueToRequiredValue<decimal>(reader["PRESUVL_CANTIDAD"]); dd.UnidadId = Utilidades.UtilsBD.DBValueToRequiredValue<string>(reader["UNID_ID"]); dd.UnidadDescripcion = Utilidades.UtilsBD.DBValueToRequiredValue<string>(reader["UNID_DESCRIPCION"]); dd.Precio = Utilidades.UtilsBD.DBValueToRequiredValue<decimal>(reader["PRESUVL_PRECIO"]); dd.DescuentoId = Utilidades.UtilsBD.DBValueToOptionalValue<int>(reader["GRDE_ID"]); dd.DescuentoDescripcion = Utilidades.UtilsBD.DBValueToOptionalString(reader["GRDE_DESCRIPCION"]); dd.ComportamientoIVA = Utilidades.UtilsBD.DBValueToRequiredValue<int>(reader["COMP_ID"]); dd.ArtiDeterminaciones = Utilidades.UtilsBD.DBValueToOptionalString(reader["ARTI_DETERMINACIONES"]); dd.ArtiPNTMetodologia = Utilidades.UtilsBD.DBValueToOptionalString(reader["ARTI_PNT_METODOLOGIA"]); //lista.Add(p); p.Determinaciones.Add(dd); } else { MessageBox.Show("Tipo de línea no contemplado, coméntalo con el responsable del desarrollo"); } } } cn.Close(); } return lista; }