summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bla.py13
-rw-r--r--trade_queue.py12
2 files changed, 18 insertions, 7 deletions
diff --git a/bla.py b/bla.py
index a915102..309a0b0 100644
--- a/bla.py
+++ b/bla.py
@@ -76,13 +76,14 @@ def process_trade(refid: str, trades: List[LedgerAction]):
if eur_amount < 0: # Purchase of cryptocurrency
stake_amount = -eur_amount - eur_fee # Account for EUR fees
crypto_amount -= crypto_fee # Adjust for crypto fees
- fifo_queues[crypto_asset].add(crypto_amount, stake_amount, date_sold)
+ fifo_queues[crypto_asset].add_trade(Trade(crypto_amount, stake_amount, date_sold, refid=refid))
elif eur_amount > 0: # Sale of cryptocurrency
- proceeds = eur_amount - eur_fee # Account for EUR fees
- sale_entries = fifo_queues[crypto_asset].remove_coins(-crypto_amount)
- report.extend(
- generate_report(sale_entries, proceeds, crypto_asset, date_sold)
- )
+ proceeds = eur_amount - eur_fee
+ fifo_queues[crypto_asset].add_trade(Trade(crypto_amount, -proceeds, date_sold, refid=refid))
+ # sale_entries = fifo_queues[crypto_asset].remove_coins(-crypto_amount)
+ # report.extend(
+ # generate_report(sale_entries, proceeds, crypto_asset, date_sold)
+ # )
else:
raise ValueError(f"Unexpected trade grouping for refid {refid}")
else:
diff --git a/trade_queue.py b/trade_queue.py
index 73640bf..ae21f95 100644
--- a/trade_queue.py
+++ b/trade_queue.py
@@ -41,6 +41,14 @@ class FIFOQueue:
self._cache_valid = False
logger.info(f"Added trade: {trade}.")
+ def add_trade(self, trade: Trade) -> None:
+ """
+ Add a trade to the queue.
+ """
+ self.__queue.append(trade)
+ self._cache_valid = False
+ logger.info(f"Added trade: {trade}.")
+
def remove_coins(self, amount: float | Decimal) -> List[Trade]:
"""
Remove a specified amount of coins from the queue, returning the
@@ -121,7 +129,9 @@ class FIFOQueue:
raise ValueError("No trade matches the given predicate.")
elif len(matching_trades) > 1:
logger.error("Multiple matching trades found for removal.")
- raise ValueError("Multiple trades match the given predicate. Please refine your criteria.")
+ raise ValueError(
+ "Multiple trades match the given predicate. Please refine your criteria."
+ )
# Locate the exact match in the original queue
trade_to_remove = matching_trades[0]