private void btnConsulta3_Click(object sender, EventArgs e) { txtConsulta.Text = "Mostrar tipo, medida y precio de el/los producto(s) más barato(s)"; using (ventaEntities objBd = new ventaEntities()) { var compuestos = from p in objBd.productospack select p.idproductocompuesto; var precios = from p in objBd.productos where compuestos.Contains(p.idproducto) select new { p.precio }; var precioMin = precios.Min(x => x.precio); var query = from p in objBd.productos join t in objBd.tipos on p.idtipo equals t.idtipo join m in objBd.medidas on p.idmedida equals m.idmedida where compuestos.Contains(p.idproducto) && p.precio == precioMin select new { t.tipo, m.medida, p.precio }; dgvConsulta.DataBindings.Clear(); dgvConsulta.DataSource = query.ToList(); dgvConsulta.Refresh(); } }
private void btnConsulta4_Click(object sender, EventArgs e) { txtConsulta.Text = "Mostrar tipo y medida de los productos compuestos junto con el tipo y la medida de los productos simple que los componen."; using (ventaEntities objBd = new ventaEntities()) { var query = from pp in objBd.productospack from prod1 in objBd.productos from tip1 in objBd.tipos from med1 in objBd.medidas from prod2 in objBd.productos from tip2 in objBd.tipos from med2 in objBd.medidas where pp.idproductocompuesto == prod1.idproducto && prod1.idtipo == tip1.idtipo && prod1.idmedida == med1.idmedida && pp.idproductosimple == prod2.idproducto && prod2.idtipo == tip2.idtipo && prod2.idmedida == med2.idmedida orderby tip1.tipo, med1.medida, tip2.tipo, med2.medida select new { TipoCompuesto = tip1.tipo, MedidaCompuesto = med1.medida, TipoSimple = tip2.tipo, MedidaSimple = med2.medida, pp.cantidad }; dgvConsulta.DataBindings.Clear(); dgvConsulta.DataSource = query.ToList(); dgvConsulta.Refresh(); } }
private void btnEliminar_Click(object sender, EventArgs e) { // Comprobar antes si hay algún producto que esté relacionado con esa materia prina, // si lo hay, mensaje de aviso using (ventaEntities objBd = new ventaEntities()) { int id = int.Parse(txtId.Text); //Recuperamos el objeto de la bd, filtrando por el campo categoría. materiasprimas objMP = objBd.materiasprimas.First(x => x.idmateriaprima.Equals(id)); var consulta = from p in objBd.productosmp select p.idmateriaprima; if (consulta.Contains(id)) { MessageBox.Show("No se puede eliminar, porque está asignado a productos"); } else { //se elimina el objeto de la tabla, para quitarlo como registro. objBd.materiasprimas.Remove(objMP); //Se guardan los cambios objBd.SaveChanges(); MessageBox.Show("Materia prima eliminada correctamente"); } } }
private void btnInsertar_Click(object sender, EventArgs e) { //Comprobar que no exista ninguna categoría con ese mismo nombre antes //(independientemente de las mayúsculas/minúsculas y espacios en blanco al principio/final) using (ventaEntities objBd = new ventaEntities()) { //creamos el objeto categoria materiasprimas objMatPrima = new materiasprimas(); String materia = txtDescripcion.Text; var materias = from m in objBd.materiasprimas select m.materiaprima; if (materias.Contains(materia.Trim().ToUpper())) { MessageBox.Show("La materia ya existe, y no se puede añadir"); } else { objMatPrima.materiaprima = materia; //se añade el objeto a la tabla, para incluirlo como nuevo registro objBd.materiasprimas.Add(objMatPrima); //se guardan cambios objBd.SaveChanges(); MessageBox.Show("Materia prima insertada correctamente. "); } } }
private void cargarMaterias() { using (ventaEntities BDventas = new ventaEntities()) { int productoSelected = listaIdProductos[cmbProductos.SelectedIndex]; var materias = from m in BDventas.materiasprimas join p in BDventas.productosmp on m.idmateriaprima equals p.idmateriaprima where p.idproducto == productoSelected select new { idmateria = m.idmateriaprima }; desmarcarMaterias(); foreach (var m in materias) { for (int i = 0; i < listaIdMaterias.Count(); i++) { if (m.idmateria == listaIdMaterias[i]) { clbMaterias.SetItemChecked(i, true); } } } } }
private void MateriaPrima_Load(object sender, EventArgs e) { using (ventaEntities objBd = new ventaEntities()) { iniciarProductos(); iniciarMaterias(); cargarMaterias(); } }
private void iniciarMaterias() { using (ventaEntities BDventas = new ventaEntities()) { var materias = from m in BDventas.materiasprimas select new { materia = m.materiaprima, id = m.idmateriaprima }; foreach (var m in materias) { clbMaterias.Items.Add(m.materia); listaIdMaterias.Add(m.id); } cmbProductos.Text = cmbProductos.Items[0].ToString(); } }
private void btnConsulta1_Click(object sender, EventArgs e) { using (ventaEntities objBd = new ventaEntities()) { txtConsulta.Text = "Consultar todos los productos simples que hayan sido borrados logicamente."; var subconsulta = from pp in objBd.productospack select pp.idproductocompuesto; var consulta1 = from prod in objBd.productos where prod.borrado == -1 && !subconsulta.Contains(prod.idproducto) select new { prod.idproducto, prod.idtipo, prod.idmedida, prod.precio, prod.borrado }; dgvConsulta.DataBindings.Clear(); dgvConsulta.DataSource = consulta1.ToList(); dgvConsulta.Refresh(); } }
private void iniciarProductos() { using (ventaEntities BDventas = new ventaEntities()) { var productos = from p in BDventas.productos join t in BDventas.tipos on p.idproducto equals t.idtipo select new { producto = t.tipo, id = p.idproducto }; foreach (var p in productos) { cmbProductos.Items.Add(p.producto); listaIdProductos.Add(p.id); } cmbProductos.Text = cmbProductos.Items[0].ToString(); } }
private void btnConsulta6_Click(object sender, EventArgs e) { txtConsulta.Text = "Sacar tipo y medida, de los productos borrados logicamente, el que fuera más caro."; using (ventaEntities objBd = new ventaEntities()) { var subconsultaPrecioBorrados = from prod in objBd.productos where prod.borrado == -1 select prod.precio; var maxPrecio = subconsultaPrecioBorrados.Max(); var query = from prod in objBd.productos join tip in objBd.tipos on prod.idtipo equals tip.idtipo join med in objBd.medidas on prod.idmedida equals med.idmedida where prod.borrado == -1 && prod.precio == maxPrecio select new { tip.tipo, med.medida, prod.precio } ; dgvConsulta.DataBindings.Clear(); dgvConsulta.DataSource = query.ToList(); dgvConsulta.Refresh(); } }
private void btnModificar_Click(object sender, EventArgs e) { //Comprobar que no exista ninguna categoría con ese mismo nombre antes //(independientemente de las mayúsculas/minúsculas y espacios en blanco al principio/final) using (ventaEntities objBd = new ventaEntities()) { int id = int.Parse(txtId.Text); //Recuperamos el objeto de la bd, filtrando por el campo categoría. materiasprimas objMP = objBd.materiasprimas.First(x => x.idmateriaprima.Equals(id)); //creamos el objeto categoria String materia = txtDescripcion.Text; var idMaterias = from m in objBd.materiasprimas select m.idmateriaprima; var materias = from m in objBd.materiasprimas select m.materiaprima.ToUpper(); if (idMaterias.Contains(id)) { if (!materias.Contains(materia.ToUpper().Trim())) { MessageBox.Show("No puedes poner esta descripción, ya existe."); } else { //se elimina el objeto de la tabla, para quitarlo como registro. objMP.materiaprima = materia; //Se guardan los cambios objBd.SaveChanges(); MessageBox.Show("Materia prima modificada correctamente"); } } else { MessageBox.Show("La materia no existe, por eso no se puede modificar"); } } }
private void btnGrabar_Click(object sender, EventArgs e) { using (ventaEntities BDventas = new ventaEntities()) { int idProducto = listaIdProductos[cmbProductos.SelectedIndex]; //Creamos el objeto categoria productosmp nuevo = new productosmp(); nuevo.idproducto = idProducto; var materias = from p in BDventas.productosmp where p.idproducto == idProducto select p.idmateriaprima; var lista = clbMaterias.CheckedIndices; for (int i = 0; i < clbMaterias.CheckedItems.Count; i++) { int idMateria = listaIdMaterias[lista[i]]; if (!materias.Contains(idMateria)) { nuevo.idmateriaprima = idMateria; nuevo.cantidad = 1; //Se añade el objeto a la tabla, para incluirlo como nuevo registro BDventas.productosmp.Add(nuevo); //Se guardan los cambios BDventas.SaveChanges(); } else { productosmp modificado = BDventas.productosmp.First(x => x.idproducto == idProducto && x.idmateriaprima == idMateria); modificado.cantidad += 1; BDventas.SaveChanges(); } } MessageBox.Show("Proceso completado con éxito."); } }
private void btnConsulta2_Click(object sender, EventArgs e) { txtConsulta.Text = "Mostrar el tipo y la medida de los productos simples junto con las materias primas que utilizan"; using (ventaEntities objBd = new ventaEntities()) { var compuestos = from p in objBd.productospack select p.idproductocompuesto; var query = from p in objBd.productos join t in objBd.tipos on p.idtipo equals t.idtipo join m in objBd.medidas on p.idmedida equals m.idmedida join pmd in objBd.productosmp on p.idproducto equals pmd.idproducto join mat in objBd.materiasprimas on pmd.idmateriaprima equals mat.idmateriaprima where !compuestos.Contains(p.idproducto) select new { t.tipo, m.medida, mat.materiaprima, pmd.cantidad }; dgvConsulta.DataBindings.Clear(); dgvConsulta.DataSource = query.ToList(); dgvConsulta.Refresh(); } }
private void btnConsulta7_Click(object sender, EventArgs e) { txtConsulta.Text = "Sacar tipo, medida y precio, de los productos simples, el que esté formado por más materias primas."; using (ventaEntities objBd = new ventaEntities()) { var subconsultaCompuestos = from pp in objBd.productospack select pp.idproductocompuesto; var subconsultaProductosSimples = from prod in objBd.productos where !subconsultaCompuestos.Distinct().Contains(prod.idproducto) select prod.idproducto; var consultaProdSimplesMMPPAgrupadas = from pmp in objBd.productosmp where subconsultaProductosSimples.Contains(pmp.idproducto) group pmp by pmp.idproducto into g select new { idProducto = g.Key, NumMateriasPrimas = g.Count() }; /*var maxValue = consultaProdSimplesMMPPAgrupadas.Max(x => x.NumMateriasPrimas); * var subconsultaProductosMasMMPP = consultaProdSimplesMMPPAgrupadas.Where(x => NumMateriasPrimas == maxValue); * * * var query = from pmasmpp in subconsultaProductosMasMMPP.toList() * from prod in objBd.productos * join tip in objBd.tipos on prod.idtipo equals tip.idtipo * join med in objBd.medidas on prod.idmedida equals med.idmedida * where pmasmpp.IdProducto == prod.idproducto * select * new { tip.tipo, med.medida, pmasmmpp.NumMateriasPrimas }; * * dgvConsulta.DataBindings.Clear(); * dgvConsulta.DataSource = query.ToList(); * dgvConsulta.Refresh();*/ } }
private void btnConsulta5_Click(object sender, EventArgs e) { txtConsulta.Text = "Mostrar para cada producto compuesto el tipo, la medida y el ahorro conseguido al comprar el producto compuesto directamente."; using (ventaEntities objBd = new ventaEntities()) { var consultaPrecioCompuestos = (from pp in objBd.productospack join prod1 in objBd.productos on pp.idproductocompuesto equals prod1.idproducto select new { pp.idproductocompuesto, PrecioCompuesto = prod1.precio }).Distinct(); var consultaPrecioSimples = from pp in objBd.productospack join prod2 in objBd.productos on pp.idproductosimple equals prod2.idproducto select new { pp.idproductocompuesto, pp.idproductosimple, pp.cantidad, PrecioSimple = prod2.precio }; var consultaPrecioSimplesAgrupados = from cs in consultaPrecioSimples.ToList() group cs by cs.idproductocompuesto into g select new { IdProductoCompuesto = g.Key, CosteTotalPorSeparado = g.Sum(x => x.cantidad * x.PrecioSimple) }; var query = from pc in consultaPrecioCompuestos.ToList() from psa in consultaPrecioSimplesAgrupados.ToList() from prod in objBd.productos join tip in objBd.tipos on prod.idtipo equals tip.idtipo join med in objBd.medidas on prod.idmedida equals med.idmedida where pc.idproductocompuesto == psa.IdProductoCompuesto && prod.idproducto == pc.idproductocompuesto select new { tip.tipo, med.medida, Ahorro = (psa.CosteTotalPorSeparado - pc.PrecioCompuesto) }; dgvConsulta.DataBindings.Clear(); dgvConsulta.DataSource = query.ToList(); dgvConsulta.Refresh(); } }