diff --git a/tasks.py b/tasks.py index eb874de..4685c84 100644 --- a/tasks.py +++ b/tasks.py @@ -130,11 +130,7 @@ async def _handle_payment(payment: Payment) -> None: data = parse_settlement( machine=machine, payment_hash=payment.payment_hash, - # `payment.sat` is signed by protocol direction (negative for an - # outbound cash-in payout, positive for an inbound cash-out - # receipt). The settlement's `wire_sats` is a magnitude — direction - # is carried separately by `tx_type` — so pass the absolute value. - wire_sats=abs(payment.sat), + wire_sats=payment.sat, extra=extra, super_config=super_config, ) @@ -209,8 +205,7 @@ async def _record_rejected(payment: Payment, machine: Machine, exc: Exception) - data = CreateDcaSettlementData( machine_id=machine.id, payment_hash=payment.payment_hash, - # Magnitude, not the signed `payment.sat` (negative for outbound). - wire_sats=abs(payment.sat), + wire_sats=payment.sat, fiat_amount=0.0, fiat_code=machine.fiat_code, exchange_rate=0.0, @@ -218,11 +213,11 @@ async def _record_rejected(payment: Payment, machine: Machine, exc: Exception) - fee_sats=0, platform_fee_sats=0, operator_fee_sats=0, - # The parsed tx_type is unavailable on the rejection path, but the - # authenticated protocol direction is: an outbound payment is a - # cash-in, an inbound one a cash-out. Use that so a rejected row shows - # the right direction instead of always reading "cash-out". - tx_type="cash_in" if not payment.is_in else "cash_out", + # tx_type is unknown for rejection paths; default to cash_out + # (the only direction currently wired). When S8 lands the + # listener will branch on tx_type from extra, and this default + # gets revisited. + tx_type="cash_out", ) rejected = await create_settlement_idempotent( data, initial_status="rejected", error_message=str(exc)