Adds functionality to pay users (Castle pays)
Implements the ability for the super user (Castle) to pay other users for expenses or liabilities. Introduces a new `PayUser` model to represent these payments, along with API endpoints to process and record them. Integrates a "Pay User" button into the user list, allowing the super user to initiate payments through either lightning or manual methods (cash, bank transfer, check). Adds UI elements and logic for handling both lightning payments (generating invoices and paying them) and manual payment recording. This functionality allows Castle to manage and settle debts with its users directly through the application.
This commit is contained in:
parent
f0257e7c7f
commit
60aba90e00
4 changed files with 560 additions and 1 deletions
13
models.py
13
models.py
|
|
@ -194,6 +194,19 @@ class SettleReceivable(BaseModel):
|
|||
amount_sats: Optional[int] = None # Equivalent amount in sats (for reference/conversion tracking)
|
||||
|
||||
|
||||
class PayUser(BaseModel):
|
||||
"""Pay a user (castle pays user for expense/liability)"""
|
||||
|
||||
user_id: str
|
||||
amount: Decimal # Amount in the specified currency (or satoshis if currency is None)
|
||||
payment_method: str # "cash", "bank_transfer", "lightning", "check", "other"
|
||||
description: Optional[str] = None # Description of the payment
|
||||
reference: Optional[str] = None # Optional reference (receipt number, transaction ID, etc.)
|
||||
currency: Optional[str] = None # If None, amount is in satoshis. Otherwise, fiat currency code (EUR, USD, etc.)
|
||||
amount_sats: Optional[int] = None # Equivalent amount in sats (for reference/conversion tracking)
|
||||
payment_hash: Optional[str] = None # For lightning payments
|
||||
|
||||
|
||||
class AssertionStatus(str, Enum):
|
||||
"""Status of a balance assertion"""
|
||||
PENDING = "pending" # Not yet checked
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue