fix corporate action replay and trade filtering

This commit is contained in:
2026-09-13 14:17:32 +09:00
parent cb19c35d23
commit 925c6b4fa4
3 changed files with 20 additions and 2 deletions
+2 -1
View File
@@ -290,6 +290,7 @@ def corporate_action_portfolio(
"""Record an auditable stock consolidation without a trade."""
from datetime import date
from decimal import Decimal
import uuid
from app.domain.corporate_actions import calculate_stock_consolidation, canonical_payload_hash
from app.domain.models import CorporateAction
if action_type != "stock_consolidation":
@@ -312,7 +313,7 @@ def corporate_action_portfolio(
payload = {"action_type": action_type, "effective_date": day.isoformat(), "quantity_before": str(quantity_before), "quantity_after": str(quantity_after), "evidence_ref": evidence_ref, "confirm_daemon_managed": False}
digest = canonical_payload_hash(payload)
calc = calculate_stock_consolidation(Decimal(str(quantity_before)), Decimal(str(quantity_after)), Decimal("0"))
action = CorporateAction("", portfolio_id, portfolio.asset_id, action_type, day, calc.quantity_before, calc.quantity_after, calc.average_price_before, calc.average_price_after, calc.total_cost_basis, Decimal(str(portfolio.cash_balance)), Decimal(str(portfolio.profit_buffer)), evidence_ref, idempotency_key, digest, 0, user)
action = CorporateAction(str(uuid.uuid4()), portfolio_id, portfolio.asset_id, action_type, day, calc.quantity_before, calc.quantity_after, calc.average_price_before, calc.average_price_after, calc.total_cost_basis, Decimal(str(portfolio.cash_balance)), Decimal(str(portfolio.profit_buffer)), evidence_ref, idempotency_key, digest, 0, user)
return repository.record_corporate_action(portfolio_id, action=action, idempotency_key=idempotency_key, payload_hash=digest)
detail = _with_service_and_repo(ctx, _callback)
render_output(ctx.obj.console, ctx.obj.output_format, detail)