public LineaPresupuesto DTOALineaPresupuesto(LineaPresupuestoDTO pLinea) // TESTEAR CUANDO HAYA UN PRESUPUESTO EN BASE DE DATOS { LineaPresupuesto lin = new LineaPresupuesto(); Repositorio repo = new Repositorio(); lin.Id = pLinea.Id; lin.Cantidad = pLinea.Cantidad; lin.PorcentajeDescuento = pLinea.PorcentajeDescuento; Presupuesto presupuesto = repo.Presupuestos.Find(pLinea.IdPresupuesto); if (presupuesto == null) { throw new Exception("Id " + pLinea.IdPresupuesto + " no existe en Presupuestos"); } lin.Presupuesto = presupuesto; Producto producto = repo.Productos.Find(pLinea.IdProducto); if (presupuesto == null) { throw new Exception("Id " + pLinea.IdProducto + " no existe en Productos"); } lin.Producto = producto; lin.Subtotal = pLinea.Subtotal; return(lin); }
/// <summary> /// Método que permite agregar una línea correspondiente a un presupuesto y un producto, pasando los siguientes parámetros. /// </summary> /// <param name="pPrecioVenta"></param> /// <param name="pCantidad"></param> /// <param name="pDescripcion"></param> /// <param name="pIdPresupuesto"></param> /// <param name="pIdProducto"></param> public int AgregarModificarLinea(LineaPresupuestoDTO pLineaPresupuestoDTO) { using (var repo = new Repositorio()) { List <LineaPresupuesto> lineapresupuestos = repo.LineaPresupuestos.Include("Presupuesto").Include("Producto").Where(p => p.Presupuesto.Id == pLineaPresupuestoDTO.IdPresupuesto && p.Producto.Id == pLineaPresupuestoDTO.IdProducto).ToList(); LineaPresupuesto lineapres = new LineaPresupuesto(); if (lineapresupuestos.Count != 0) { lineapres = lineapresupuestos.First(); } LineaPresupuesto lineaAAgregar = this.DTOALineaPresupuesto(pLineaPresupuestoDTO); Producto pro = repo.Productos.Find(pLineaPresupuestoDTO.IdProducto); lineaAAgregar.Producto = pro; Presupuesto pres = repo.Presupuestos.Find(pLineaPresupuestoDTO.IdPresupuesto); lineaAAgregar.Presupuesto = pres; if (lineapres.Id == 0) // Crear linea presupuesto (si no existe) { repo.LineaPresupuestos.Add(lineaAAgregar); repo.SaveChanges(); return(lineaAAgregar.Id); } else // Modificar linea presupuesto (si ya existe) { lineapres.Cantidad = lineaAAgregar.Cantidad; lineapres.PorcentajeDescuento = lineaAAgregar.PorcentajeDescuento; lineapres.Subtotal = lineaAAgregar.Subtotal; return(lineapres.Id); } } }
/// <summary> /// El primer elemento de la tupla indica el idPresupuesto, el segundo indica si se guardó correctamente /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <returns></returns> private Tuple <int, Boolean> GuardarPresupuesto(object sender, EventArgs e) { Boolean Guardado = false; Boolean errorCantidad = false; foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.Cells[2].Value.ToString() == "0" && !errorCantidad) { errorCantidad = true; } } if (IdCliente == 0) { MessageBox.Show("Debe seleccionar un cliente"); } else if (dataGridView1.Rows.Count < 1) { MessageBox.Show("Debe seleccionar al menos un producto"); } else if (errorCantidad) { MessageBox.Show("Hay al menos un producto que tiene cantidad 0, modifiquelo"); } else if (FechaVencimiento.Date < DateTime.Now.Date) { MessageBox.Show("Debe seleccionar una fecha de Vencimiento posterior a la seleccionada"); } else if (DescuentoTotal.Text == "") { DescuentoTotal.Text = "0"; } else { PresupuestoDTO pre = new PresupuestoDTO(); pre.FechaGeneracion = DateTime.Now; pre.IdCliente = IdCliente; pre.FechaVencimiento = FechaVencimiento; pre.Id = IdPresupuesto; pre.Descuento = Convert.ToDouble(DescuentoTotal.Text); pre.Observacion = Observacion.Text; IdPresupuesto = controladorFachada.AgregarModificarPresupuesto(pre); foreach (DataGridViewRow row in dataGridView1.Rows) { LineaPresupuestoDTO lin = new LineaPresupuestoDTO(); lin.Cantidad = int.Parse(row.Cells[2].Value.ToString()); lin.IdPresupuesto = IdPresupuesto; lin.IdProducto = int.Parse(row.Cells[0].Value.ToString()); lin.PorcentajeDescuento = double.Parse(row.Cells[4].Value.ToString()); lin.Subtotal = double.Parse(row.Cells[5].Value.ToString()); controladorFachada.AgregarLinea(lin); } Guardado = true; } return(Tuple.Create(IdPresupuesto, Guardado)); }
public LineaPresupuestoDTO LineaPresupuestoADTO(LineaPresupuesto lineaPresupuesto) { LineaPresupuestoDTO linea = new LineaPresupuestoDTO(); linea.Id = lineaPresupuesto.Id; linea.Cantidad = lineaPresupuesto.Cantidad; linea.PorcentajeDescuento = lineaPresupuesto.PorcentajeDescuento; linea.IdProducto = lineaPresupuesto.Producto.Id; linea.Subtotal = lineaPresupuesto.Subtotal; linea.NombreProducto = lineaPresupuesto.Producto.Nombre; //Precio unitario se calcula en base al subtotal precio de descuento y cantidad. linea.PrecioUnitario = linea.Subtotal / (linea.Cantidad * (1 - (linea.PorcentajeDescuento / 100))); return(linea); }
public LineaPresupuestoDTO RowALineaPresupuestoDTO(DataGridViewRow row) { var linea = new LineaPresupuestoDTO() { Id = Convert.ToInt32(row.Cells[1].Value), NombreProducto = Convert.ToString(row.Cells[2].Value), Cantidad = Convert.ToInt32(row.Cells[3].Value), PrecioUnitario = Convert.ToDouble(row.Cells[4].Value), PorcentajeDescuento = Convert.ToDouble(row.Cells[5].Value), Subtotal = Convert.ToDouble(row.Cells[6].Value) }; return(linea); }
public List <LineaPresupuestoDTO> ListarLineasPresupuesto(int pIdPresupuesto) { List <LineaPresupuestoDTO> ADevolver = new List <LineaPresupuestoDTO>(); List <LineaPresupuesto> lineas = new List <LineaPresupuesto>(); using (var repo = new Repositorio()) { lineas = repo.LineaPresupuestos.Include("Producto").Where(p => p.Presupuesto.Id == pIdPresupuesto).ToList(); } foreach (LineaPresupuesto lin in lineas) { LineaPresupuestoDTO lineaPresupuestoDTO = this.LineaPresupuestoADTO(lin); ADevolver.Add(lineaPresupuestoDTO); } return(ADevolver); }
public List <LineaPresupuestoDTO> ListarLineasConLotePresupuesto(int pIdPresupuesto) { ControladorFachada controladorFachada = new ControladorFachada(); List <LineaPresupuestoDTO> ADevolver = new List <LineaPresupuestoDTO>(); List <LineaPresupuesto> lineas = new List <LineaPresupuesto>(); using (var repo = new Repositorio()) { lineas = repo.LineaPresupuestos.Include("Producto").Where(p => p.Presupuesto.Id == pIdPresupuesto).ToList(); } foreach (LineaPresupuesto lin in lineas) { if (controladorFachada.VerificarSiCategoriaVence(lin.Producto.Id)) { LineaPresupuestoDTO lineaPresupuestoDTO = new LineaPresupuestoDTO(); lineaPresupuestoDTO.NombreProducto = lin.Producto.Nombre; lineaPresupuestoDTO.Cantidad = lin.Cantidad; lineaPresupuestoDTO.LoteYCantidad = DeterminarLotes(lin.Producto.Id, lin.Cantidad); ADevolver.Add(lineaPresupuestoDTO); } } return(ADevolver); }
/// <summary> /// Método que permite agregar una línea correspondiente a un presupuesto y un producto, pasando los siguientes parámetros. /// </summary> /// <param name="pPrecioVenta"></param> /// <param name="pCantidad"></param> /// <param name="pDescripcion"></param> /// <param name="pIdPresupuesto"></param> /// <param name="pIdProducto"></param> public void AgregarLinea(LineaPresupuestoDTO pPresupuestoDTO) { controladorPresupuesto.AgregarModificarLinea(pPresupuestoDTO); }