Título: hacer dos consultas diferentes en entity framework
Publicado por: 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 (https://preview.ibb.co/byvKRQ/venta_codigobarra.jpg) (https://ibb.co/iYA8Lk) portal de imagenes gratis (https://es.imgbb.com/) 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); } }
Título: Re: hacer dos consultas diferentes en entity framework
Publicado por: TickTack en 9 Mayo 2017, 14:41 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 (https://preview.ibb.co/byvKRQ/venta_codigobarra.jpg) (https://ibb.co/iYA8Lk) portal de imagenes gratis (https://es.imgbb.com/) 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!
|