コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
        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");
                }
            }
        }
コード例 #4
0
        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. ");
                }
            }
        }
コード例 #5
0
        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);
                        }
                    }
                }
            }
        }
コード例 #6
0
 private void MateriaPrima_Load(object sender, EventArgs e)
 {
     using (ventaEntities objBd = new ventaEntities())
     {
         iniciarProductos();
         iniciarMaterias();
         cargarMaterias();
     }
 }
コード例 #7
0
        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();
            }
        }
コード例 #8
0
        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();
            }
        }
コード例 #9
0
        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();
            }
        }
コード例 #10
0
        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();
            }
        }
コード例 #11
0
        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");
                }
            }
        }
コード例 #12
0
        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.");
            }
        }
コード例 #13
0
        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();
            }
        }
コード例 #14
0
        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();*/
            }
        }
コード例 #15
0
        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();
            }
        }