public void Add(VentaRequest model) { var transaction = _dbContext.Database.BeginTransaction(); try { var venta = new Venta(); venta.Total = model.Conceptos.Sum(d => d.Cantidad * d.PrecioUnitario); venta.Fecha = DateTime.Now; venta.IdCliente = model.IdCliente; _dbContext.Venta.Add(venta); _dbContext.SaveChanges(); foreach (var modelconcepto in model.Conceptos) { var concepto = new Models.Concepto(); concepto.Cantidad = modelconcepto.Cantidad; concepto.IdProducto = modelconcepto.IdProducto; concepto.PrecioUnitario = modelconcepto.PrecioUnitario; concepto.Importe = modelconcepto.Importe; concepto.IdVenta = venta.Id; _dbContext.Conceptos.Add(concepto); _dbContext.SaveChanges(); } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw new Exception("Ocurrió un error en la inserción", ex); } }
public VentaResponse Add(VentaRequest request) { Vendedor vendedor = _unitOfWork.VendedorRepository.FindFirstOrDefault(x => x.Persona.Documento.Numero == request.DocumentoVendedor); if (vendedor == null) { return(new VentaResponse($"Vendedor con documento {request.DocumentoVendedor} no encontrado")); } if (ExisteFactura(request.NumeroFactura)) { return(new VentaResponse($"La factura {request.NumeroFactura} ya está registrada")); } VentaBuilder ventaBuilder = new VentaBuilder(request.NumeroFactura); foreach (var item in request.Detalles) { ProductoBodega producto = _productoService.ProductoEnBodega(item.CodigoProducto, item.CodigoBodega); if (producto == null) { return(new VentaResponse($"Producto {item.CodigoProducto} no está disponible en bodega {item.CodigoBodega}")); } if (_productoService.Disponible(item.CodigoProducto, item.CodigoBodega, item.Cantidad) == false) { return(new VentaResponse ( mensaje: $"El producto {item.CodigoProducto} no está disponible para esa cantidad." )); } ventaBuilder = ventaBuilder.AgregarDetalle(producto, item.Cantidad, item.Precio, item.Descuento); } if (ventaBuilder.IsOk().Any()) { return(new VentaResponse(string.Join(',', ventaBuilder.IsOk()))); } Venta venta = ventaBuilder.Build(request.Abonado, request.Impuesto); vendedor.Vender(venta); _unitOfWork.VendedorRepository.Edit(vendedor); if (_unitOfWork.Commit() > 0) { return(new VentaResponse ( mensaje: "Venta registrada correctamente", entidad: venta )); } return(new VentaResponse("No se pudo registrar la venta")); }
public IActionResult Add(VentaRequest model) { Respuesta respuesta = new Respuesta(); try { _venta.Add(model); respuesta.Exito = 1; } catch (Exception ex) { respuesta.Mensaje = ex.Message; } return(Ok(respuesta)); }
public async Task <ActionResult> InsertarVenta([FromBody] VentaRequest vr) { var response = new ResponseBase(); try { response = await this.ventas.InsertarVenta(vr); } catch (Exception ex) { response.success = false; response.message = ex.Message; } return(Ok(response)); }
public IActionResult Add(VentaRequest model) { Respuesta respuesta = new Respuesta(); try { using (VentaRealContext db = new VentaRealContext()) { using (var transaction = db.Database.BeginTransaction()) { try { var venta = new Venta(); venta.Total = model.Conceptos.Sum(d => d.Cantidad * d.PrecioUnitario); venta.Fecha = DateTime.Now; venta.IdCliente = model.idCliente; db.Venta.Add(venta); db.SaveChanges(); foreach (var modelConcepto in model.Conceptos) { var concepto = new Models.Concepto(); concepto.Cantidad = modelConcepto.Cantidad; concepto.IdProducto = modelConcepto.IdProducto; concepto.PrecioUnitario = modelConcepto.PrecioUnitario; concepto.Importe = modelConcepto.Importe; concepto.IdVenta = venta.Id; db.Concepto.Add(concepto); db.SaveChanges(); } transaction.Commit(); respuesta.Exito = 1; } catch (Exception) { transaction.Rollback(); } } } } catch (Exception ex) { respuesta.Mensaje = ex.Message; } return(Ok(respuesta)); }
public IActionResult Add(VentaRequest model) { var respuesta = new Respuesta(); try { _venta.Add(model); respuesta.Success = 1; respuesta.Message = "Venta agregada correctamente."; } catch (Exception ex) { respuesta.Success = 0; respuesta.Message = ex.Message; } return(Ok(respuesta)); }
public IActionResult Add(VentaRequest requestModel) { Respuesta respuesta = new Respuesta(); try { //var venta = new VentaService(); _ventaService.Add(requestModel); respuesta.Exito = 1; } catch (Exception ex) { respuesta.Mensaje = ex.Message; return(BadRequest(respuesta)); } return(Ok(respuesta)); }
public void Add(VentaRequest model) { using (var db = new VentasContext()) { using (var transaction = db.Database.BeginTransaction()) { try { var venta = new Ventum() { Fecha = DateTime.UtcNow, IdCliente = model.IdCliente, Total = model.Detalle.Any() ? model.Detalle.Sum(c => c.Cantidad * c.PrecioUnitario) : 0 }; var detalle = model.Detalle.Select(c => new DBModels.Detalle() { IdProducto = c.IdProducto, Cantidad = c.Cantidad, PrecioUnitario = c.PrecioUnitario, Importe = c.Cantidad * c.PrecioUnitario }); venta.Detalles = detalle.ToList(); db.Venta.Add(venta); db.SaveChanges(); transaction.Commit(); //respuesta.Success = 1; //respuesta.Message = "Venta agregada correctamente."; } catch (Exception ex) { //respuesta.Success = 0; //respuesta.Message = ex.Message; transaction.Rollback(); throw new Exception("Ocurrió un error en la inserción. " + ex.Message); } } } }
public void Add(VentaRequest model) { using (VentaRealContext db = new VentaRealContext()) { //primero se guarda los elementos de la tabla padre using (var transaction = db.Database.BeginTransaction()) { try { var venta = new Venta(); venta.Total = model.Conceptos.Sum(s => s.Cantidad * s.Importe); venta.Fecha = DateTime.Now; venta.IdCliente = model.IdCliente; db.Venta.Add(venta); db.SaveChanges(); //recorrido de todos los conectos uno or uno , guardado del detalle de la venta foreach (var modelConcepto in model.Conceptos) { var concepto = new Models.Concepto(); concepto.Cantidad = modelConcepto.Cantidad; concepto.IdProducto = modelConcepto.IdProducto; concepto.PrecioUnitario = modelConcepto.PrecioUnitario; concepto.IdVenta = venta.Id; concepto.Importe = modelConcepto.Importe; db.Concepto.Add(concepto); db.SaveChanges(); } transaction.Commit(); // si no se pone se va a bloquear la base de datos } catch { transaction.Rollback(); throw new Exception("ocurrio un error en la inserción"); } } } }
public void Add(VentaRequest model) { using (VentaRealContext db = new VentaRealContext()) { using (var transaction = db.Database.BeginTransaction()) { try { var venta = new Venta(); venta.Total = model.Conceptos.Sum(d => d.Cantidad * d.PrecioUnitario); venta.Fecha = DateTime.Now; venta.IdCliente = model.IdCliente; db.Venta.Add(venta); db.SaveChanges(); foreach (var modelConcepto in model.Conceptos) { var concepto = new Models.Concepto(); concepto.Cantidad = modelConcepto.Cantidad; concepto.IdProducto = modelConcepto.IdProducto; concepto.PrecioUnitario = modelConcepto.PrecioUnitario; concepto.IdVenta = venta.Id; db.Concepto.Add(concepto); db.SaveChanges(); } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw new Exception("Ocurrio un error en la inserción de datos. " + ex.Message); } } } }
public void Add(VentaRequest requestModel) { using (VentaRealContext db = new VentaRealContext()) { using (var transaction = db.Database.BeginTransaction()) { try { var venta = new Venta(); venta.Total = requestModel.Conceptos.Sum(x => x.Cantidad * x.PrecioUnitario); venta.Fecha = DateTime.Now; venta.IdCliente = requestModel.IdCliente; db.Venta.Add(venta); db.SaveChanges(); foreach (var modelConcepto in requestModel.Conceptos) { var concepto = new Concepto(); concepto.Cantidad = modelConcepto.Cantidad; concepto.IdProducto = modelConcepto.IdProducto; concepto.PrecioUnitario = modelConcepto.PrecioUnitario; concepto.IdVenta = venta.Id; concepto.Importe = modelConcepto.Importe; db.Concepto.Add(concepto); db.SaveChanges(); } transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw new Exception("Error en el proceso de insercion de la venta", e); } } } }
public async Task <ResponseBase> InsertarVenta(VentaRequest vr) { var response = new ResponseBase(); List <string> insertVenta = new List <string>(); StringBuilder insercmd = new StringBuilder(); var encabezado = "DECLARE @idTicket INT; BEGIN TRANSACTION venta BEGIN TRY "; var variable = " SET @idTicket = SCOPE_IDENTITY(); "; var encabezadoVenta = " INSERT INTO Reporte.venta(idTicket, idProducto, cantidad, total) VALUES "; var pie = " COMMIT TRANSACTION END TRY BEGIN CATCH ROLLBACK TRANSACTION venta RAISERROR('ERROR', 16, 1) END CATCH"; try { var insertTicket = " INSERT INTO Reporte.ticket(fecha, hora, total, descripcion, comentario,idEstatus, idUsuario, idEmpresa) VALUES" + string.Format("( convert(date,'{0}',105), convert(time,'{1}',105) , '{2}', '{3}', '{4}', '{5}', '{6}' , '{7}' ) ", vr.ticket.fecha , vr.ticket.hora , vr.ticket.total , vr.ticket.descripcion , vr.ticket.comentario , vr.ticket.idEstatus , vr.ticket.idUsuario , vr.ticket.idEmpresa); foreach (Venta venta in vr.productos) { insertVenta.Add(string.Format(" ( {0} ,'{1}' ,'{2}' ,'{3}' )", "@idTicket" , venta.idProducto , venta.cantidad , venta.total)); } insercmd.Append(encabezado); insercmd.Append(insertTicket); insercmd.Append(variable); insercmd.Append(encabezadoVenta); insercmd.Append(string.Join(",", insertVenta)); insercmd.Append(pie); using (var connection = new SqlConnection(con.getConnection())) { using (var command = new SqlCommand(insercmd.ToString(), connection)) { command.CommandType = CommandType.Text; connection.Open(); var result = await command.ExecuteNonQueryAsync(); if (result > 1) { response.success = true; response.message = "Venta Ingresada Correctamente"; } } } } catch (Exception ex) { response.success = false; response.message = ex.Message; } return(response); }
public ActionResult <VentaResponse> Nueva(VentaRequest request) { var response = _service.Add(request); return(response); }
public ActionResult add(VentaRequest request) { try { using (var transaccion = _context.Database.BeginTransaction()) { try { var venta = new Venta(); venta.Total = request.detalleRequests.Sum(item => item.Cantidad * item.PrecioUnitario); venta.Fecha = DateTime.Now; venta.IdEstado = request.IdEstado; foreach (var ventadetalle in request.detalleRequests) { var producto = _context.Producto.FindAsync(ventadetalle.IdProducto); if (producto.Result.IdProducto > 0) { var detalle = new Modelo.DetalleVenta(); detalle.Cantidad = ventadetalle.Cantidad; detalle.IdProducto = ventadetalle.IdProducto; detalle.CostoUnitario = producto.Result.Costo; detalle.PrecioUnitario = ventadetalle.PrecioUnitario; detalle.IdVenta = ventadetalle.IdVenta; Modelo.Producto product = new Modelo.Producto { Existencia = producto.Result.Existencia - ventadetalle.Cantidad, }; // actualizarProducto(producto.Result.IdProducto, product); _context.DetalleVenta.Add(detalle); _context.SaveChanges(); // venta.Total = detalle.Cantidad * detalle.PrecioUnitario; } } _context.Venta.Add(venta); _context.SaveChanges(); transaccion.Commit(); } catch (Exception ex) { transaccion.Rollback(); } } } catch (Exception ex) { return(null); } return(Ok()); }