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); } } }
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 async Task <HttpResponse <LineaPresupuesto> > PostLineaPresupuestoAsync(LineaPresupuesto lineapresupuesto) { ctx.LineasPresupuesto.Add(lineapresupuesto); await ctx.SaveChangesAsync(); var response = new HttpResponse <LineaPresupuesto> { Status = HttpStatusCode.Created, Entity = lineapresupuesto }; return(response); }
/// <summary> /// Método de respuesta al evento de click en el botón "btAceptar". /// Intenta crear un presupuesto a partir de los datos introducidos. /// Si el cliente introducido no existe, preguntará si el usuario desea crearlo. /// Si alguno de los vehículos cuyo número de bastidor se introduce en las líneas del presupuesto no existe, preguntará si el usuario desea crearlo. /// Si no se introducen líneas al presupuesto, preguntará si el usuario desea introducir alguna. /// En caso de que se cancele cualquiera de los anteriores mensajes de error, se cancelará la operación y se cerrará el formulario. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btAceptar_Click(object sender, EventArgs e) { string aux; DialogResult drx = DialogResult.OK; int j; for (int i = 0; i < this.dgLineas.Rows.Count - 1; i++) // Comprobamos que el valor del estado de cada línea sea correcto. { aux = this.dgLineas.Rows[i].Cells[3].Value.ToString().ToUpper(); if (aux != "A" && aux != "ACEPTADO" && aux != "P" && aux != "PENDIENTE" && aux != "D" && aux != "DESESTIMADO") { // Comprueba que se haya introducido correctamente el estado en el datagrid. Si no es ninguno de los valores permitidos, informará al usuario y cancelará la operación, permitiendo modificarlos. j = i + 1; MessageBox.Show("El valor del estado en la línea " + j + " no es válido. Por favor, utilice 'A', 'P', 'D', 'Aceptado', 'Pendiente' o 'Desestimado'.", "Estado introducido erróneo", MessageBoxButtons.OK, MessageBoxIcon.Warning); drx = DialogResult.Cancel; // Cancela el resto de la operación para poder modificar los datos necesarios. } } if (drx == DialogResult.OK) // Si los datos son correctos... (no se cancela la operación) { List <LineaPresupuesto> llp = new List <LineaPresupuesto>(); LineaPresupuesto lpaux = null; Estado elinea = Estado.Pendiente, epresu = Estado.Pendiente; if (this.dgLineas.Rows.Count == 0) // Si no se han introducido líneas, pregunta si se desean introducir o si se cancela la operación { DialogResult dr0 = MessageBox.Show("No se han introducido líneas al presupuesto. ¿Desea introducirlas? Si no, se cancelará la operación.", "Sin líneas de presupuesto", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (dr0 == DialogResult.Cancel) // Si decide cancelar la operación, cierra el formulario. En caso contrario, el método no hará nada más. { this.Close(); } } else // Si se ha introducido al menos una línea... { for (int i = 0; i < this.dgLineas.Rows.Count - 1; i++) { // Recorre las líneas introducidas creando los objetos de tipo LineaPresupuesto y añadiendolos a la lista de los mismos. // Cells -> 0: id linea, 1: id veh, 2: precio, 3: estado línea string sdtov = this.dgLineas.Rows[i].Cells[1].Value.ToString(); VehiculoDTO1 vdto = new VehiculoDTO1(sdtov); if (!GestionVehiculo.existeVehiculo(vdto)) { // Si no existe el vehículo introducido en cualquiera de las líneas de presupuesto, preguntará si el usuario desea crearlo. DialogResult drveh = MessageBox.Show("El vehículo introducido en la línea " + i + " no existe. ¿Desea crearlo? Si no, se cancelará la operación.", "Vehículo inexistente", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (drveh == DialogResult.OK) { // Si acepta, creará el vehículo FAltaVehiculo fav = new FAltaVehiculo(); fav.ucDatos.tbBastidor.Text = sdtov; fav.ucDatos.tbBastidor.Enabled = false; DialogResult drcv = fav.ShowDialog(); if (drcv == DialogResult.OK) { // Si el formulario de creación tiene éxito, da de alta el vehículo en la BD. GestionVehiculo.altaVehiculo(fav.Vehic); // Y finalmente crea la línea correspondiente. elinea = DeterminaEstado(this.dgLineas.Rows[i].Cells[3].Value.ToString()); lpaux = new LineaPresupuesto(this.dgLineas.Rows[i].Cells[0].Value.ToString(), fav.Vehic, float.Parse(this.dgLineas.Rows[i].Cells[2].Value.ToString()), elinea); llp.Add(lpaux); if (elinea == Estado.Aceptado) // Si cualquiera de las líneas tiene por estado "Aceptado", entonces el estado del presupuesto será "Aceptado" { epresu = Estado.Aceptado; } } } else // Si no se acepta, cancela la operación y cierra el formulario. { this.Close(); } } else // Si no, si el vehículo existe, crea la línea correspondiente. { elinea = DeterminaEstado(this.dgLineas.Rows[i].Cells[3].Value.ToString()); lpaux = new LineaPresupuesto(this.dgLineas.Rows[i].Cells[0].Value.ToString(), GestionVehiculo.consultarVehiculo(new VehiculoDTO1(sdtov)), float.Parse(this.dgLineas.Rows[i].Cells[2].Value.ToString()), elinea); llp.Add(lpaux); if (elinea == Estado.Aceptado) // Si cualquiera de las líneas tiene por estado "Aceptado", entonces el estado del presupuesto será "Aceptado" { epresu = Estado.Aceptado; } } } // Fin de la creación del listado de LineasPresupuesto Cliente cl = GestionCliente.consultarCliente(new ClienteDTO1(this.tbIDCliente.Text)); if (cl == null) // Si el cliente no existe en la BD... { DialogResult dr = MessageBox.Show("El cliente introducido no existe. ¿Desea crearlo? Si no, se cancelará la operación.", "Cliente inexistente", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (dr == DialogResult.OK) { // Pregunta si desea crearlo. En caso afirmativo... FAltaCliente fac = new FAltaCliente(this.tbIDCliente.Text); DialogResult dr2 = fac.ShowDialog(); if (dr2 == DialogResult.OK) // Si el formulario de creación de cliente tiene éxito, prosigue creando el presupuesto y cierra el formulario. { GestionCliente.altaCliente(fac.Client); this.presu = new Presupuesto(this.tbIDPresupuesto.Text, fac.Client, StringToDate(this.tbFecha.Text), llp, epresu); this.Close(); } } else // En caso contrario, cancela la operación y cierra el formulario. { this.Close(); } } else // Si todo está en orden (cliente existente, etc.) prosigue creando el presupuesto y cierra el formulario. { this.presu = new Presupuesto(this.tbIDPresupuesto.Text, cl, StringToDate(this.tbFecha.Text), llp, epresu); this.Close(); } } } }