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.
92 lines
2.5 KiB
92 lines
2.5 KiB
<!doctype html> |
|
<html> |
|
<head> |
|
<title>Revenue Report</title> |
|
<style> |
|
body { font-family: Arial, sans-serif; } |
|
.report-grid { |
|
display: grid; |
|
grid-template-columns: repeat(2, minmax(260px, 1fr)); |
|
gap: 18px; |
|
max-width: 900px; |
|
} |
|
.card { |
|
border: 1px solid #ccc; |
|
padding: 16px; |
|
} |
|
.card h2 { |
|
margin-top: 0; |
|
margin-bottom: 10px; |
|
} |
|
.value { |
|
font-size: 28px; |
|
font-weight: bold; |
|
} |
|
.action-links a { |
|
margin-right: 16px; |
|
} |
|
</style> |
|
<link rel="icon" type="image/png" href="/static/favicon.png"> |
|
</head> |
|
<body> |
|
|
|
<h1>Revenue Report</h1> |
|
{% if request.args.get('email_sent') == '1' %} |
|
<div style="border:1px solid #166534;background:#dcfce7;padding:10px;margin-bottom:15px;max-width:900px;"> |
|
Revenue report JSON emailed successfully. |
|
</div> |
|
{% endif %} |
|
{% if request.args.get('email_failed') == '1' %} |
|
<div style="border:1px solid #991b1b;background:#fee2e2;padding:10px;margin-bottom:15px;max-width:900px;"> |
|
Revenue report email failed. Check SMTP settings or server log. |
|
</div> |
|
{% endif %} |
|
{% if request.args.get('email_failed') == '1' %} |
|
<div style="border:1px solid #991b1b;background:#fee2e2;padding:10px;margin-bottom:15px;max-width:900px;"> |
|
Revenue report email failed. Check SMTP settings or server log. |
|
</div> |
|
{% endif %} |
|
|
|
<p><a href="/">Home</a></p> |
|
|
|
<div class="action-links"> |
|
<a href="/reports/revenue.json">Export JSON</a> |
|
<a href="/reports/revenue/print">Print Report Now</a> |
|
<form method="post" action="/reports/revenue/email" style="display:inline;"> |
|
<button type="submit">Email JSON Report</button> |
|
</form> |
|
</div> |
|
|
|
<p> |
|
Frequency: <strong>{{ report.frequency }}</strong><br> |
|
Period: <strong>{{ report.period_label }}</strong> |
|
</p> |
|
|
|
<div class="report-grid"> |
|
<div class="card"> |
|
<h2>Collected (CAD)</h2> |
|
<div class="value">{{ report.collected_cad|money('CAD') }}</div> |
|
</div> |
|
|
|
<div class="card"> |
|
<h2>Invoices Issued</h2> |
|
<div class="value">{{ report.invoice_count }}</div> |
|
<div>{{ report.invoiced_total|money('CAD') }} CAD total</div> |
|
</div> |
|
|
|
<div class="card"> |
|
<h2>Outstanding Invoices</h2> |
|
<div class="value">{{ report.outstanding_count }}</div> |
|
<div>{{ report.outstanding_balance|money('CAD') }} CAD outstanding</div> |
|
</div> |
|
|
|
<div class="card"> |
|
<h2>Overdue Invoices</h2> |
|
<div class="value">{{ report.overdue_count }}</div> |
|
<div>{{ report.overdue_balance|money('CAD') }} CAD overdue</div> |
|
</div> |
|
</div> |
|
|
|
{% include "footer.html" %} |
|
</body> |
|
</html>
|
|
|