You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.7 KiB
102 lines
2.7 KiB
<!doctype html> |
|
<html> |
|
<head> |
|
<title>Payments</title> |
|
<style> |
|
.status-badge { |
|
display: inline-block; |
|
padding: 3px 8px; |
|
border-radius: 999px; |
|
font-size: 12px; |
|
font-weight: bold; |
|
text-transform: uppercase; |
|
letter-spacing: 0.03em; |
|
} |
|
.status-confirmed { background: #dcfce7; color: #166534; } |
|
.status-reversed { background: #fee2e2; color: #991b1b; } |
|
|
|
.invoice-badge { |
|
display: inline-block; |
|
padding: 3px 8px; |
|
border-radius: 999px; |
|
font-size: 11px; |
|
font-weight: bold; |
|
text-transform: uppercase; |
|
letter-spacing: 0.03em; |
|
} |
|
.invoice-draft { background: #e5e7eb; color: #111827; } |
|
.invoice-pending { background: #dbeafe; color: #1d4ed8; } |
|
.invoice-partial { background: #fef3c7; color: #92400e; } |
|
.invoice-paid { background: #dcfce7; color: #166534; } |
|
.invoice-overdue { background: #fee2e2; color: #991b1b; } |
|
.invoice-cancelled { background: #e5e7eb; color: #4b5563; } |
|
|
|
.inline-form { |
|
display: inline; |
|
margin: 0; |
|
} |
|
.void-btn { |
|
background: #991b1b; |
|
color: white; |
|
border: 0; |
|
padding: 4px 8px; |
|
cursor: pointer; |
|
} |
|
.void-btn:hover { |
|
opacity: 0.9; |
|
} |
|
</style> |
|
</head> |
|
<body> |
|
|
|
<h1>Payments</h1> |
|
|
|
<p><a href="/">Home</a></p> |
|
<p><a href="/payments/new">Record Payment</a></p> |
|
|
|
<table border="1" cellpadding="6"> |
|
<tr> |
|
<th>ID</th> |
|
<th>Invoice</th> |
|
<th>Client</th> |
|
<th>Method</th> |
|
<th>Currency</th> |
|
<th>Amount</th> |
|
<th>CAD Value</th> |
|
<th>Payment Status</th> |
|
<th>Invoice Status</th> |
|
<th>Remaining</th> |
|
<th>Received</th> |
|
<th>Actions</th> |
|
</tr> |
|
|
|
{% for p in payments %} |
|
<tr> |
|
<td>{{ p.id }}</td> |
|
<td>{{ p.invoice_number }}</td> |
|
<td>{{ p.client_code }} - {{ p.company_name }}</td> |
|
<td>{{ p.payment_method }}</td> |
|
<td>{{ p.payment_currency }}</td> |
|
<td>{{ p.payment_amount|money(p.payment_currency) }}</td> |
|
<td>{{ p.cad_value_at_payment|money('CAD') }}</td> |
|
<td><span class="status-badge status-{{ p.payment_status }}">{{ p.payment_status }}</span></td> |
|
<td><span class="invoice-badge invoice-{{ p.invoice_status }}">{{ p.invoice_status }}</span></td> |
|
<td>{{ (p.total_amount - p.amount_paid)|money(p.invoice_currency_code) }}</td> |
|
<td>{{ p.received_at|localtime }}</td> |
|
<td> |
|
<a href="/payments/edit/{{ p.id }}">Edit</a> |
|
{% if p.payment_status == 'confirmed' %} |
|
| |
|
<form method="post" action="/payments/void/{{ p.id }}" class="inline-form" onsubmit="return confirm('Void this payment? This will reverse it from invoice totals but keep the record for history.');"> |
|
<button type="submit" class="void-btn">Void</button> |
|
</form> |
|
{% endif %} |
|
</td> |
|
</tr> |
|
{% endfor %} |
|
|
|
</table> |
|
|
|
{% include "footer.html" %} |
|
</body> |
|
</html>
|
|
|