4 changed files with 256 additions and 2 deletions
@ -0,0 +1,113 @@
|
||||
<!doctype html> |
||||
<html> |
||||
<head> |
||||
<title>Edit Invoice</title> |
||||
</head> |
||||
|
||||
<body> |
||||
|
||||
<h1>Edit Invoice</h1> |
||||
|
||||
<p><a href="/">Home</a></p> |
||||
<p><a href="/invoices">Back to Invoices</a></p> |
||||
|
||||
{% if errors %} |
||||
<div style="border:1px solid red; padding:10px; margin-bottom:15px;"> |
||||
<strong>Please fix the following:</strong> |
||||
<ul> |
||||
{% for error in errors %} |
||||
<li>{{ error }}</li> |
||||
{% endfor %} |
||||
</ul> |
||||
</div> |
||||
{% endif %} |
||||
|
||||
{% if locked %} |
||||
<div style="border:1px solid #aa6600; padding:10px; margin-bottom:15px; background:#fff4dd;"> |
||||
<strong>This invoice is locked for core edits because payments exist.</strong><br> |
||||
Core accounting fields cannot be changed after payment activity begins. |
||||
</div> |
||||
{% endif %} |
||||
|
||||
<form method="post"> |
||||
|
||||
<p> |
||||
Invoice Number<br> |
||||
<input value="{{ invoice.invoice_number }}" readonly> |
||||
</p> |
||||
|
||||
{% if not locked %} |
||||
<p> |
||||
Client *<br> |
||||
<select name="client_id" required> |
||||
{% for c in clients %} |
||||
<option value="{{ c.id }}" {% if invoice.client_id == c.id %}selected{% endif %}> |
||||
{{ c.client_code }} - {{ c.company_name }} |
||||
</option> |
||||
{% endfor %} |
||||
</select> |
||||
</p> |
||||
|
||||
<p> |
||||
Service *<br> |
||||
<select name="service_id" required> |
||||
{% for s in services %} |
||||
<option value="{{ s.id }}" {% if invoice.service_id == s.id %}selected{% endif %}> |
||||
{{ s.service_code }} - {{ s.service_name }} |
||||
</option> |
||||
{% endfor %} |
||||
</select> |
||||
</p> |
||||
|
||||
<p> |
||||
Currency *<br> |
||||
<select name="currency_code" required> |
||||
<option value="CAD" {% if invoice.currency_code == 'CAD' %}selected{% endif %}>CAD</option> |
||||
<option value="ETHO" {% if invoice.currency_code == 'ETHO' %}selected{% endif %}>ETHO</option> |
||||
<option value="EGAZ" {% if invoice.currency_code == 'EGAZ' %}selected{% endif %}>EGAZ</option> |
||||
<option value="ALT" {% if invoice.currency_code == 'ALT' %}selected{% endif %}>ALT</option> |
||||
</select> |
||||
</p> |
||||
|
||||
<p> |
||||
Total Amount *<br> |
||||
<input type="number" step="0.00000001" min="0" name="total_amount" value="{{ invoice.total_amount }}" required> |
||||
</p> |
||||
{% else %} |
||||
<p>Client<br><input value="{{ invoice.client_id }}" readonly></p> |
||||
<p>Service<br><input value="{{ invoice.service_id }}" readonly></p> |
||||
<p>Currency<br><input value="{{ invoice.currency_code }}" readonly></p> |
||||
<p>Total Amount<br><input value="{{ invoice.total_amount|money(invoice.currency_code) }}" readonly></p> |
||||
{% endif %} |
||||
|
||||
<p> |
||||
Due Date *<br> |
||||
<input type="date" name="due_at" value="{{ invoice.due_at.strftime('%Y-%m-%d') if invoice.due_at else '' }}" required> |
||||
</p> |
||||
|
||||
<p> |
||||
Status *<br> |
||||
<select name="status" required> |
||||
<option value="draft" {% if invoice.status == 'draft' %}selected{% endif %}>draft</option> |
||||
<option value="pending" {% if invoice.status == 'pending' %}selected{% endif %}>pending</option> |
||||
<option value="partial" {% if invoice.status == 'partial' %}selected{% endif %}>partial</option> |
||||
<option value="paid" {% if invoice.status == 'paid' %}selected{% endif %}>paid</option> |
||||
<option value="overdue" {% if invoice.status == 'overdue' %}selected{% endif %}>overdue</option> |
||||
<option value="cancelled" {% if invoice.status == 'cancelled' %}selected{% endif %}>cancelled</option> |
||||
</select> |
||||
</p> |
||||
|
||||
<p> |
||||
Notes<br> |
||||
<textarea name="notes" rows="5" cols="60">{{ invoice.notes or '' }}</textarea> |
||||
</p> |
||||
|
||||
<p> |
||||
<button type="submit">Save Invoice</button> |
||||
</p> |
||||
|
||||
</form> |
||||
|
||||
{% include "footer.html" %} |
||||
</body> |
||||
</html> |
||||
Loading…
Reference in new issue