diff --git a/ft-app/app/routers/trades.py b/ft-app/app/routers/trades.py index b075faa..ff7e199 100644 --- a/ft-app/app/routers/trades.py +++ b/ft-app/app/routers/trades.py @@ -152,6 +152,29 @@ def edit_trade( return RedirectResponse("/trades/", status_code=303) +@router.post("/bulk-close") +def bulk_close( + request: Request, + product_code: str = Form(...), + close_date: str = Form(...), + close_price: float = Form(...), + close_fee: float = Form(0.0), + db: Session = Depends(get_db), +): + trades = ( + db.query(Trade) + .filter(Trade.product_code == product_code.upper(), Trade.status == "open") + .all() + ) + for t in trades: + t.close_date = date.fromisoformat(close_date) + t.close_price = close_price + t.close_fee = close_fee + t.status = "closed" + db.commit() + return RedirectResponse("/trades/", status_code=303) + + @router.post("/{trade_id}/delete") def delete_trade(trade_id: int, db: Session = Depends(get_db)): t = db.query(Trade).filter(Trade.id == trade_id).first() diff --git a/ft-app/app/templates/trades.html b/ft-app/app/templates/trades.html index f05f52a..f77a53f 100644 --- a/ft-app/app/templates/trades.html +++ b/ft-app/app/templates/trades.html @@ -138,6 +138,14 @@ {% endif %} {% endif %} {% endfor %} + + {% if product_tab != '全部' and open_trades %} +