hacer dos consultas diferentes en entity framework

Iniciado por djnilo, 1 Mayo 2017, 23:43 PM

0 Miembros y 1 Visitante están viendo este tema.

djnilo

buenas
tardes amigos del foro estoy haciendo una aplicación de venta de productos
esta mi tabla con los campos productos
idproducto, codigobarra, precio , idmedida,stock,idsubfamilia
y tengo un formulario  ventas me problema surge cuando quiero vender productos granel
entonces estaba pensando cuando el codigo = codigobusqueda y el idmedida = 3 que es lo mismo a kilogramo me muestre un formulario modal
entoces un else que sea distinto a kilogramo por que no seria a granel si no = unidad
codigo para
buscar productos por codigo esto funciona correctamente
entoces quiero agregar un else para que me busque segun la otra condicion que seria por el idmedida = 3 esto es kilogramo

en esta linea busco el producto eProd = objProducto.GetByCodigoBarras(TxtCodigoBarras.Text);
y lo me trae
  public PRODUCTO GetByCodigoBarras(string Codigo)
        {
            DAL.IRepository repository = new Modelo.Repository();
            try
            {
                var producto = repository.FindEntity<PRODUCTO>(a => a.CodigoBarras ==Codigo, "Venta_Detalles", "Compras_Detalle", "Medida", "SubFamiliaProducto");
                if (producto != null)
                {
                    producto.IdFamilia = producto.SubFamiliaProducto.IdFamilia;
                    var fami = new FamiliaProducto();
                    fami = repository.FindEntity<FamiliaProducto>(x => x.IdFamilia == producto.SubFamiliaProducto.IdFamilia);
                    producto.NombreFamilia = fami.NombreFamilia;
                    producto.NombreMedida = producto.Medida.Medida1;
                    producto.NombreSubFamilia = producto.SubFamiliaProducto.NombreSubFamilia;
                           

                }
                else
                {
                    producto = null;
                }
                return producto;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }



private void TxtCodigoBarras_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(TxtCodigoBarras.Text.Length>0)
            {
                if (e.KeyChar == Convert.ToChar(Keys.Return))
                {

                    DetalleVentaDTO eDeta = new DetalleVentaDTO();
                    PRODUCTO eProd = new PRODUCTO();
                    eProd = objProducto.GetByCodigoBarras(TxtCodigoBarras.Text);
                    if (eProd == null)
                    {
                        if (MessageBox.Show("Producto no existe, ¿Desea agregarlo?", "Confirme", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                        {
                            Form frm = this.MdiChildren.FirstOrDefault(x => x is FrmProductos);
                            if (frm != null)
                            {
                                frm.BringToFront();
                                return;
                            }
                            frm = new FrmProductos(idUsuario);
                            frm.MdiParent = this.MdiParent;
                            frm.Show();
                        }
                        return;
                    }
                    if (eProd.Stock <= 0)
                    {
                        MessageBox.Show("No existe stock suficiente para vender", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }





                    eDeta.Cantidad = 1;

                    eDeta.CodigoBarras = eProd.CodigoBarras;
                    eDeta.FechaReg = DateTime.Now;
                    eDeta.IdDetalle = 0;
                    eDeta.IdProducto = eProd.IdProducto;
                    eDeta.IdVenta = 0;
                    eDeta.Importe = eProd.Precio * eDeta.Cantidad;
                    eDeta.NombreProducto = eProd.NombreProducto;
                    eDeta.PorcentajeIVA = eImpuesto.TasaImpuesto;
                    eDeta.Precio = eProd.Precio;
                    Detalles.Add(eDeta);
                    //DgvDetalle.DataSource = null;
                    DgvDetalle.DataSource = Detalles;
                    TxtCodigoBarras.Clear();
                    TxtCodigoBarras.Focus();
                }

este lo carga en la grilla perfecto lo que necesito con la condicion



portal de imagenes gratis

el codigo que quiero insertar con else para que cumpla la condicion que sea igual a idmedida = 3 kilogramo
PRODUCTO eProds = new PRODUCTO();
                    eProds = objProducto.GetByCodigoBarrasKilogramo(TxtCodigoBarras.Text);
                    if (eProds == null)

                    {
                        if (MessageBox.Show("Producto no existe, ¿Desea agregarlo?", "Confirme", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                        {
                            Form frm = this.MdiChildren.FirstOrDefault(x => x is FrmProductos);
                            if (frm != null)
                            {
                                frm.BringToFront();
                                return;
                            }
                            frm = new FrmProductos(idUsuario);
                            frm.MdiParent = this.MdiParent;
                            frm.Show();
                        }
                        return;
                    }
                    if (eProds.Stock <= 0)
                    {
                        MessageBox.Show("No existe stock suficiente para vender", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    string idbusqueda = Convert.ToString(TxtCodigoBarras.Text);
                    NombreProductos = eProds.NombreProducto;
                    Precioss = Convert.ToString(eProds.Precio);



                    FrmGranel form = new FrmGranel(idbusqueda, NombreProductos, Precioss);
                    form.MdiParent = this.MdiParent;
                    form.Show();


codigo busqueda idmedida = 3
public PRODUCTO GetByCodigoBarrasKilogramo(string Codigo)
        {
           

            DAL.IRepository repository = new Modelo.Repository();
            try
            {
                var producto = repository.FindEntity<PRODUCTO>(a => a.CodigoBarras == Codigo, "Venta_Detalles", "Compras_Detalle", "Medida", "SubFamiliaProducto");
                if (producto != null)
                {
                 
                    producto.IdMedida = producto.Medida.IdMedida;
                    var Medidas = new Medida();
                    Medidas = repository.FindEntity<Medida>(x => x.IdMedida == 3);
                   
                    producto.NombreSubFamilia = producto.SubFamiliaProducto.NombreSubFamilia;



                }
                else
                {
                    producto = null;
                }
                return producto;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }






TickTack

Cita de: djnilo en  1 Mayo 2017, 23:43 PM
buenas
tardes amigos del foro estoy haciendo una aplicación de venta de productos
esta mi tabla con los campos productos
idproducto, codigobarra, precio , idmedida,stock,idsubfamilia
y tengo un formulario  ventas me problema surge cuando quiero vender productos granel
entonces estaba pensando cuando el codigo = codigobusqueda y el idmedida = 3 que es lo mismo a kilogramo me muestre un formulario modal
entoces un else que sea distinto a kilogramo por que no seria a granel si no = unidad
codigo para
buscar productos por codigo esto funciona correctamente
entoces quiero agregar un else para que me busque segun la otra condicion que seria por el idmedida = 3 esto es kilogramo

en esta linea busco el producto eProd = objProducto.GetByCodigoBarras(TxtCodigoBarras.Text);
y lo me trae
  public PRODUCTO GetByCodigoBarras(string Codigo)
        {
            DAL.IRepository repository = new Modelo.Repository();
            try
            {
                var producto = repository.FindEntity<PRODUCTO>(a => a.CodigoBarras ==Codigo, "Venta_Detalles", "Compras_Detalle", "Medida", "SubFamiliaProducto");
                if (producto != null)
                {
                    producto.IdFamilia = producto.SubFamiliaProducto.IdFamilia;
                    var fami = new FamiliaProducto();
                    fami = repository.FindEntity<FamiliaProducto>(x => x.IdFamilia == producto.SubFamiliaProducto.IdFamilia);
                    producto.NombreFamilia = fami.NombreFamilia;
                    producto.NombreMedida = producto.Medida.Medida1;
                    producto.NombreSubFamilia = producto.SubFamiliaProducto.NombreSubFamilia;
                           

                }
                else
                {
                    producto = null;
                }
                return producto;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }



private void TxtCodigoBarras_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(TxtCodigoBarras.Text.Length>0)
            {
                if (e.KeyChar == Convert.ToChar(Keys.Return))
                {

                    DetalleVentaDTO eDeta = new DetalleVentaDTO();
                    PRODUCTO eProd = new PRODUCTO();
                    eProd = objProducto.GetByCodigoBarras(TxtCodigoBarras.Text);
                    if (eProd == null)
                    {
                        if (MessageBox.Show("Producto no existe, ¿Desea agregarlo?", "Confirme", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                        {
                            Form frm = this.MdiChildren.FirstOrDefault(x => x is FrmProductos);
                            if (frm != null)
                            {
                                frm.BringToFront();
                                return;
                            }
                            frm = new FrmProductos(idUsuario);
                            frm.MdiParent = this.MdiParent;
                            frm.Show();
                        }
                        return;
                    }
                    if (eProd.Stock <= 0)
                    {
                        MessageBox.Show("No existe stock suficiente para vender", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }





                    eDeta.Cantidad = 1;

                    eDeta.CodigoBarras = eProd.CodigoBarras;
                    eDeta.FechaReg = DateTime.Now;
                    eDeta.IdDetalle = 0;
                    eDeta.IdProducto = eProd.IdProducto;
                    eDeta.IdVenta = 0;
                    eDeta.Importe = eProd.Precio * eDeta.Cantidad;
                    eDeta.NombreProducto = eProd.NombreProducto;
                    eDeta.PorcentajeIVA = eImpuesto.TasaImpuesto;
                    eDeta.Precio = eProd.Precio;
                    Detalles.Add(eDeta);
                    //DgvDetalle.DataSource = null;
                    DgvDetalle.DataSource = Detalles;
                    TxtCodigoBarras.Clear();
                    TxtCodigoBarras.Focus();
                }

este lo carga en la grilla perfecto lo que necesito con la condicion



portal de imagenes gratis

el codigo que quiero insertar con else para que cumpla la condicion que sea igual a idmedida = 3 kilogramo
PRODUCTO eProds = new PRODUCTO();
                    eProds = objProducto.GetByCodigoBarrasKilogramo(TxtCodigoBarras.Text);
                    if (eProds == null)

                    {
                        if (MessageBox.Show("Producto no existe, ¿Desea agregarlo?", "Confirme", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                        {
                            Form frm = this.MdiChildren.FirstOrDefault(x => x is FrmProductos);
                            if (frm != null)
                            {
                                frm.BringToFront();
                                return;
                            }
                            frm = new FrmProductos(idUsuario);
                            frm.MdiParent = this.MdiParent;
                            frm.Show();
                        }
                        return;
                    }
                    if (eProds.Stock <= 0)
                    {
                        MessageBox.Show("No existe stock suficiente para vender", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    string idbusqueda = Convert.ToString(TxtCodigoBarras.Text);
                    NombreProductos = eProds.NombreProducto;
                    Precioss = Convert.ToString(eProds.Precio);



                    FrmGranel form = new FrmGranel(idbusqueda, NombreProductos, Precioss);
                    form.MdiParent = this.MdiParent;
                    form.Show();


codigo busqueda idmedida = 3
public PRODUCTO GetByCodigoBarrasKilogramo(string Codigo)
        {
           

            DAL.IRepository repository = new Modelo.Repository();
            try
            {
                var producto = repository.FindEntity<PRODUCTO>(a => a.CodigoBarras == Codigo, "Venta_Detalles", "Compras_Detalle", "Medida", "SubFamiliaProducto");
                if (producto != null)
                {
                 
                    producto.IdMedida = producto.Medida.IdMedida;
                    var Medidas = new Medida();
                    Medidas = repository.FindEntity<Medida>(x => x.IdMedida == 3);
                   
                    producto.NombreSubFamilia = producto.SubFamiliaProducto.NombreSubFamilia;



                }
                else
                {
                    producto = null;
                }
                return producto;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }







Entonces, cual es tu problema. Creo que estas haciendo un tutorial de como solucionar tu problema. Es eso asi?

Saludos!
Citar
"Ninguna mentira puede inventarse lo suficientemente patán: el pueblo hispanohablante la cree. Por una consigna que se les dio, persiguieron a sus compatriotas con mayor encarnizamiento que a sus verdaderos enemigos."