[Flask] Simple ERP for a farm.
Jinja2 templates.
Changed files
- app/templates/add-invoice.html
- app/templates/add-item.html
- app/templates/add_product.html
- app/templates/base.html
- app/templates/errors/item-not-found.html
- app/templates/home.html
- app/templates/modules/calculator.html
- app/templates/modules/catalog.html
- app/templates/modules/creator.html
- app/templates/modules/customers.html
- app/templates/modules/invoices.html
- app/templates/modules/logger.html
- app/templates/modules/orders.html
- app/templates/modules/products.html
- app/templates/preview-invoice.html
app/templates/add-invoice.html
@@ -0,0 +1,48 @@
1
Added:
{# -*- mode: web; -*- #}
2
Added:
3
Added:
{% extends "base.html" %}
4
Added:
5
Added:
6
Added:
{% block title %}Add a new invoice{% endblock %}
7
Added:
{% block content %}
8
Added:
9
Added:
{% if message %}
10
Added:
{# the form was submitted and message exists #}
11
Added:
<p><strong>{{ item }}</strong></p>
12
Added:
{# links #}
13
Added:
<p><a href="{{ url_for('add_item', item=item) }}" class="button">Submit another {{ item }}</a></p>
14
Added:
<p><a href="/fapg/home">Return to the index</a></p>
15
Added:
16
Added:
{% else %}
17
Added:
{# the form is displayed when template opens via GET not POST #}
18
Added:
19
Added:
{# show flash - based on WTForms validators see
20
Added:
https://pythonprogramming.net/flash-flask-tutorial/
21
Added:
get_flashed_messages() exists here because of flash() in the route
22
Added:
function #}
23
Added:
24
Added:
{% with errors = get_flashed_messages() %} {% if errors %}
25
Added:
{% for err in errors %}
26
Added:
<div class="alert alert-danger alert-dismissible" role="alert">
27
Added:
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
28
Added:
{{ err }}
29
Added:
</div>
30
Added:
{% endfor %}
31
Added:
{% endif %}
32
Added:
{% endwith %}
33
Added:
{# end of flash #}
34
Added:
35
Added:
36
Added:
{# the form #}
37
Added:
<form action="{{ url_for('add_item', item=item) }}" method="POST">
38
Added:
<fieldset>
39
Added:
<legend>Add a new {{ item }} to our database.</legend>
40
Added:
{% for field in form %}
41
Added:
{{ field.label() }}
42
Added:
{{ field() }}<br/>
43
Added:
{% endfor %}
44
Added:
</fieldset>
45
Added:
</form>
46
Added:
47
Added:
{% endif %}
48
Added:
{% endblock %}
app/templates/add-item.html
@@ -0,0 +1,20 @@
1
Added:
{# -*- mode: web; -*- #}
2
Added:
3
Added:
{% extends "base.html" %}
4
Added:
5
Added:
6
Added:
{% block title %}Add a new {{ item }}{% endblock %}
7
Added:
{% block content %}
8
Added:
9
Added:
{# the form #}
10
Added:
<form action="{{ url_for('add_item', item=item) }}" method="POST">
11
Added:
<fieldset>
12
Added:
<legend>Add a new {{ item }} to our database.</legend>
13
Added:
{% for field in form %}
14
Added:
{{ field.label() }}
15
Added:
{{ field() }}<br/>
16
Added:
{% endfor %}
17
Added:
</fieldset>
18
Added:
</form>
19
Added:
20
Added:
{% endblock %}
app/templates/add_product.html
@@ -1,44 +0,0 @@
1
Removed:
{# -*- mode: jinja2; -*- #}
2
Removed:
3
Removed:
{% extends "base.html" %}
4
Removed:
{% import "bootstrap/wtf.html" as wtf %}
5
Removed:
6
Removed:
{% block content %}
7
Removed:
8
Removed:
{% block title %}Add a New Product{% endblock %}
9
Removed:
10
Removed:
{% if message %}
11
Removed:
12
Removed:
{# the form was submitted and message exists #}
13
Removed:
<p class="lead"><strong>{{ message }}</strong></p>
14
Removed:
{# links #}
15
Removed:
<p><a href="{{ url_for('add_product') }}" class="button">Submit another product.</a></p>
16
Removed:
<p><a href="/fapg/home">Return to the index.</a></p>
17
Removed:
18
Removed:
{% else %}
19
Removed:
20
Removed:
{# the form is displayed when template opens via GET not POST #}
21
Removed:
<p class="lead alert alert-primary">Add a new sock to our inventory.</p>
22
Removed:
<p class="ml-4"><a href="/fapg/home" class="button">Return to the index.</a></p>
23
Removed:
{# show flash - based on WTForms validators
24
Removed:
see https://pythonprogramming.net/flash-flask-tutorial/
25
Removed:
get_flashed_messages() exists here because of flash()
26
Removed:
in the route function
27
Removed:
#}
28
Removed:
{% with errors = get_flashed_messages() %}
29
Removed:
{% if errors %}
30
Removed:
{% for err in errors %}
31
Removed:
<div class="alert alert-danger alert-dismissible" role="alert">
32
Removed:
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
33
Removed:
{{ err }}
34
Removed:
</div>
35
Removed:
{% endfor %}
36
Removed:
{% endif %}
37
Removed:
{% endwith %}
38
Removed:
{# end of flash #}
39
Removed:
40
Removed:
{# the form, thanks to WTForms #}
41
Removed:
{{ wtf.quick_form(form) }}
42
Removed:
43
Removed:
{% endif %}
44
Removed:
{% endblock %}
app/templates/base.html
@@ -1,30 +1,40 @@
1
Removed:
{# -*- mode: jinja2; -*- #}
1
Added:
{# -*- mode: web; -*- #}
2
2
3
3
<!doctype html>
4
4
5
5
<html lang="en">
6
Removed:
<head>
7
Removed:
<meta charset="utf-8">
8
Removed:
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to">
9
Removed:
<title>Farm Manager</title>
10
Removed:
<meta name="author" content="Marius Peter">
11
Removed:
<meta name="description" content="A draft page for Farm Manager.">
12
Removed:
<!-- <link rel="icon" href="/favicon.ico"> -->
13
Removed:
<link rel="stylesheet" href="{{ url_for('static', filename='styles/style.css') }}">
14
Removed:
</head>
15
Removed:
<body>
16
Removed:
<nav>
17
Removed:
<a href="/" class="button">Home</a>
18
Removed:
<h1>{% block title %}{% endblock %}</h1>
19
Removed:
<ul>
20
Removed:
{% for module in modules %}
21
Removed:
<li><a href="/module/{{ module.name }}" class="button">{{ module.name }}</a></li>
22
Removed:
{% endfor %}
23
Removed:
</ul>
24
Removed:
</nav>
25
Removed:
<div id="content">
26
Removed:
{% block content %}{% endblock %}
27
Removed:
</div>
28
Removed:
<!-- <script src="js/scripts.js"></script> -->
29
Removed:
</body>
6
Added:
<head>
7
Added:
<meta charset="utf-8">
8
Added:
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to">
9
Added:
<title>Farm Manager</title>
10
Added:
<meta name="author" content="Marius Peter">
11
Added:
<meta name="description" content="A draft page for Farm Manager.">
12
Added:
<!-- <link rel="icon" href="{{ url_for('static', filename='img/favicon.png') }}"> -->
13
Added:
<link rel="stylesheet" href="{{ url_for('static', filename='styles/style.css') }}">
14
Added:
</head>
15
Added:
<body>
16
Added:
<nav>
17
Added:
<a href="/" class="button">Home</a>
18
Added:
<h1>{% block title %}{% endblock %}</h1>
19
Added:
<ul>
20
Added:
{% for module in modules %}
21
Added:
<li><a href="/modules/{{ module.name }}" class="button">{{ module.name }}</a></li>
22
Added:
{% endfor %}
23
Added:
</ul>
24
Added:
</nav>
25
Added:
<div id="content">
26
Added:
{% block content %}{% endblock %}
27
Added:
</div>
28
Added:
{# Flashed messages added last, so that they appear on top of the content. #}
29
Added:
{% with messages = get_flashed_messages(with_categories=true) %}
30
Added:
{% if messages %}
31
Added:
<ul class="flashes">
32
Added:
{% for category, message in messages %}
33
Added:
<li class="alert alert-{{ category }}">{{ message }}</li>
34
Added:
{% endfor %}
35
Added:
</ul>
36
Added:
{% endif %}
37
Added:
{% endwith %}
38
Added:
<!-- <script src="js/scripts.js"></script> -->
39
Added:
</body>
30
40
</html>
app/templates/errors/item-not-found.html
@@ -0,0 +1,14 @@
1
Added:
{% extends "base.html" %}
2
Added:
3
Added:
{% block title %}
4
Added:
Item not found
5
Added:
{% endblock %}
6
Added:
7
Added:
{% block content %}
8
Added:
<p>
9
Added:
Item <strong>{{item }}</strong> could not found.
10
Added:
</p>
11
Added:
<p>
12
Added:
If you'd like to suggest a feature, please send us an e-mail.
13
Added:
</p>
14
Added:
{% endblock %}
app/templates/home.html
@@ -1,22 +1,22 @@
1
Removed:
<!-- -*- mode: jinja2; -*- -->
1
Added:
{# -*- mode: web; -*- #}
2
2
3
3
{% extends "base.html" %}
4
4
5
5
{% block title %}
6
Removed:
Welcome, {{ user.name_first }}!
6
Added:
Welcome, {{ user.name_first }}!
7
7
{% endblock %}
8
8
9
9
10
10
{% block content %}
11
11
12
Removed:
<p>You are logged in as <strong>{{ user }}</strong> on
12
Added:
<p>You are logged in as <strong>{{ user }}</strong> on
13
13
project <strong>{{ project }}</strong>.</p>
14
14
15
Removed:
<h2>Available modules</h2>
16
Removed:
<dl>
17
Removed:
{% for module in modules %}
18
Removed:
<dt style="font-weight: bold">{{ module.name }}</dt><dd>{{ module.description }}<dd>
19
Removed:
{% endfor %}
20
Removed:
</dl>
15
Added:
<h2>Available modules</h2>
16
Added:
<dl>
17
Added:
{% for module in modules %}
18
Added:
<dt style="font-weight: bold">{{ module.name }}</dt><dd>{{ module.description }}<dd>
19
Added:
{% endfor %}
20
Added:
</dl>
21
21
22
22
{% endblock %}
app/templates/modules/calculator.html
@@ -1,8 +0,0 @@
1
Removed:
{% extends "base.html" %}
2
Removed:
{% block title %}
3
Removed:
Calculator
4
Removed:
{% endblock %}
5
Removed:
6
Removed:
{% block content %}
7
Removed:
<i>insert module content here.</i>
8
Removed:
{% endblock %}
app/templates/modules/catalog.html
@@ -1,35 +0,0 @@
1
Removed:
<!-- -*- mode: jinja2; -*- -->
2
Removed:
3
Removed:
{% extends "base.html" %}
4
Removed:
{% block title %}
5
Removed:
Catalog
6
Removed:
{% endblock %}
7
Removed:
8
Removed:
{% block content %}
9
Removed:
<i>insert module content here.</i>
10
Removed:
11
Removed:
<p>
12
Removed:
<a href="{{ url_for('add_product') }}" class="button">Add product to your catalog</a>
13
Removed:
</p>
14
Removed:
15
Removed:
<table>
16
Removed:
<thead>
17
Removed:
<tr>
18
Removed:
<th>Name</th>
19
Removed:
<th>Price</th>
20
Removed:
<th>Supplier</th>
21
Removed:
<th>Updated</th>
22
Removed:
</tr>
23
Removed:
</thead>
24
Removed:
<tbody>
25
Removed:
{% for product in catalog %}
26
Removed:
<tr>
27
Removed:
<td>{{ product.name }}</td>
28
Removed:
<td>{{ product.price }}</td>
29
Removed:
<td>{{ product.supplier }}</td>
30
Removed:
<td>{{ product.updated }}</td>
31
Removed:
</tr>
32
Removed:
{% endfor %}
33
Removed:
</tbody>
34
Removed:
</table>
35
Removed:
{% endblock %}
app/templates/modules/creator.html
@@ -1,8 +0,0 @@
1
Removed:
{% extends "base.html" %}
2
Removed:
{% block title %}
3
Removed:
Creator
4
Removed:
{% endblock %}
5
Removed:
6
Removed:
{% block content %}
7
Removed:
<i>insert module content here.</i>
8
Removed:
{% endblock %}
app/templates/modules/customers.html
@@ -0,0 +1,43 @@
1
Added:
{# -*- mode: web; -*- #}
2
Added:
3
Added:
{% extends "base.html" %}
4
Added:
{% block title %}
5
Added:
Customers
6
Added:
{% endblock %}
7
Added:
8
Added:
{% block content %}
9
Added:
<div id="actions">
10
Added:
<a href="{{ url_for('add_item', item='customer') }}" class="button">Add customer</a>
11
Added:
</div>
12
Added:
13
Added:
<table>
14
Added:
<thead>
15
Added:
<tr>
16
Added:
<th></th>
17
Added:
<th>Name</th>
18
Added:
<th>City</th>
19
Added:
<th>Phone</th>
20
Added:
<th>E-mail</th>
21
Added:
</tr>
22
Added:
</thead>
23
Added:
<tbody>
24
Added:
{% for customer in customers %}
25
Added:
<tr>
26
Added:
<td><button>edit</button></td>
27
Added:
{% if customer.website %}
28
Added:
<td><a href="{{ customer.website }}">{{ customer.name }}</a></td>
29
Added:
{% else %}
30
Added:
<td>{{ customer.name }}</td>
31
Added:
{% endif %}
32
Added:
<td>{{ customer.city }}</td>
33
Added:
<td>{{ customer.phone }}</td>
34
Added:
{% if customer.email %}
35
Added:
<td><a href="mailto:{{ customer.email }}">{{ customer.email }}</a></td>
36
Added:
{% else %}
37
Added:
<td></td>
38
Added:
{% endif %}
39
Added:
</tr>
40
Added:
{% endfor %}
41
Added:
</tbody>
42
Added:
</table>
43
Added:
{% endblock %}
app/templates/modules/invoices.html
@@ -0,0 +1,44 @@
1
Added:
{# -*- mode: jinja2; -*- #}
2
Added:
3
Added:
{% extends "base.html" %}
4
Added:
{% block title %}
5
Added:
Products
6
Added:
{% endblock %}
7
Added:
8
Added:
{% block content %}
9
Added:
10
Added:
<div id="actions">
11
Added:
<a href="{{ url_for('add_invoice') }}" class="button">New invoice</a>
12
Added:
</div>
13
Added:
14
Added:
<i>Track your invoices and create new ones here.</i>
15
Added:
16
Added:
<table>
17
Added:
<thead>
18
Added:
<tr>
19
Added:
<th colspan=2><i>Actions</i></th>
20
Added:
<th>Name</th>
21
Added:
<th>Price (net)</th>
22
Added:
<th>Price (gross)</th>
23
Added:
<th>Updated</th>
24
Added:
</tr>
25
Added:
</thead>
26
Added:
<tbody>
27
Added:
{% for invoice in invoices %}
28
Added:
<tr>
29
Added:
<td><button>edit</button></td>
30
Added:
<td><button formaction="/">delete</button></td>
31
Added:
<td>{{ product.name }}</td>
32
Added:
<td>{{ product.price_net }}</td>
33
Added:
<td>{{ product.price_gross }}</td>
34
Added:
{% if product.date_time_updated %}
35
Added:
<td>{{ product.date_time_updated }}</td>
36
Added:
{% else %}
37
Added:
<td>{{ product.date_time_created }}</td>
38
Added:
{% endif %}
39
Added:
40
Added:
</tr>
41
Added:
{% endfor %}
42
Added:
</tbody>
43
Added:
</table>
44
Added:
{% endblock %}
app/templates/modules/logger.html
@@ -1,8 +1,142 @@
1
Added:
{# -*- mode: web; -*- #}
2
Added:
1
3
{% extends "base.html" %}
4
Added:
2
5
{% block title %}
3
6
Logger
4
7
{% endblock %}
5
8
6
9
{% block content %}
7
Removed:
<i>insert module content here.</i>
10
Added:
11
Added:
12
Added:
<div id="actions">
13
Added:
<a href="{{ url_for('add_item', item='log') }}" class="button">Add log</a>
14
Added:
</div>
15
Added:
16
Added:
<i>Track operating logs.</i>
17
Added:
18
Added:
<p>Most recent target</p>
19
Added:
<table>
20
Added:
<thead>
21
Added:
<tr>
22
Added:
<th colspan=2><i>Actions</i></th>
23
Added:
<th>ID</th>
24
Added:
<th>Type</th>
25
Added:
<th>Updated</th>
26
Added:
<th>NNO3</th>
27
Added:
<th>P</th>
28
Added:
<th>K</th>
29
Added:
<th>Ca</th>
30
Added:
<th>Mg</th>
31
Added:
<th>S</th>
32
Added:
<th>Na</th>
33
Added:
<th>Cl</th>
34
Added:
<th>Fe</th>
35
Added:
<th>Zn</th>
36
Added:
<th>B</th>
37
Added:
<th>Mn</th>
38
Added:
<th>Cu</th>
39
Added:
<th>Mo</th>
40
Added:
<th>Si</th>
41
Added:
<th>NNH4</th>
42
Added:
</tr>
43
Added:
</thead>
44
Added:
<tbody>
45
Added:
<tr>
46
Added:
<td>
47
Added:
<button>edit</button>
48
Added:
</td>
49
Added:
<td>
50
Added:
<form method="post" action="{{ url_for('delete_item', pk=target.primary_key, table='Log' ) }}">
51
Added:
<button>delete</button>
52
Added:
</form>
53
Added:
</td>
54
Added:
<td>{{ target.primary_key }}</td>
55
Added:
<td>Target</td>
56
Added:
<td>{{ target.date_time_updated }}</td>
57
Added:
<td>{{ target.nno3 }}</td>
58
Added:
<td>{{ target.p }}</td>
59
Added:
<td>{{ target.k }}</td>
60
Added:
<td>{{ target.ca }}</td>
61
Added:
<td>{{ target.mg }}</td>
62
Added:
<td>{{ target.s }}</td>
63
Added:
<td>{{ target.na }}</td>
64
Added:
<td>{{ target.cl }}</td>
65
Added:
<td>{{ target.fe }}</td>
66
Added:
<td>{{ target.zn }}</td>
67
Added:
<td>{{ target.b }}</td>
68
Added:
<td>{{ target.mn }}</td>
69
Added:
<td>{{ target.cu }}</td>
70
Added:
<td>{{ target.mo }}</td>
71
Added:
<td>{{ target.si }}</td>
72
Added:
<td>{{ target.nnh4 }}</td>
73
Added:
</tr>
74
Added:
</tbody>
75
Added:
</table>
76
Added:
77
Added:
<p>Logs</p>
78
Added:
79
Added:
<table>
80
Added:
<thead>
81
Added:
<tr>
82
Added:
<th colspan=2><i>Actions</i></th>
83
Added:
<th>ID</th>
84
Added:
<th>Type</th>
85
Added:
<th>Updated</th>
86
Added:
<th>NNO3</th>
87
Added:
<th>P</th>
88
Added:
<th>K</th>
89
Added:
<th>Ca</th>
90
Added:
<th>Mg</th>
91
Added:
<th>S</th>
92
Added:
<th>Na</th>
93
Added:
<th>Cl</th>
94
Added:
<th>Fe</th>
95
Added:
<th>Zn</th>
96
Added:
<th>B</th>
97
Added:
<th>Mn</th>
98
Added:
<th>Cu</th>
99
Added:
<th>Mo</th>
100
Added:
<th>Si</th>
101
Added:
<th>NNH4</th>
102
Added:
</tr>
103
Added:
</thead>
104
Added:
<tbody>
105
Added:
{% for log in logs %}
106
Added:
<tr>
107
Added:
<td>
108
Added:
<button>edit</button>
109
Added:
</td>
110
Added:
<td>
111
Added:
<form method="post" action="{{ url_for('delete_item', pk=log.primary_key, table='Log' ) }}">
112
Added:
<button>delete</button>
113
Added:
</form>
114
Added:
</td>
115
Added:
<td>{{ log.primary_key }}</td>
116
Added:
{% if log.target == "True" %}
117
Added:
<td>Target</td>
118
Added:
{% else %}
119
Added:
<td>Log</td>
120
Added:
{% endif %}
121
Added:
<td>{{ log.date_time_updated }}</td>
122
Added:
<td>{{ log.nno3 }}</td>
123
Added:
<td>{{ log.p }}</td>
124
Added:
<td>{{ log.k }}</td>
125
Added:
<td>{{ log.ca }}</td>
126
Added:
<td>{{ log.mg }}</td>
127
Added:
<td>{{ log.s }}</td>
128
Added:
<td>{{ log.na }}</td>
129
Added:
<td>{{ log.cl }}</td>
130
Added:
<td>{{ log.fe }}</td>
131
Added:
<td>{{ log.zn }}</td>
132
Added:
<td>{{ log.b }}</td>
133
Added:
<td>{{ log.mn }}</td>
134
Added:
<td>{{ log.cu }}</td>
135
Added:
<td>{{ log.mo }}</td>
136
Added:
<td>{{ log.si }}</td>
137
Added:
<td>{{ log.nnh4 }}</td>
138
Added:
</tr>
139
Added:
{% endfor %}
140
Added:
</tbody>
141
Added:
</table>
8
142
{% endblock %}
app/templates/modules/orders.html
@@ -0,0 +1,37 @@
1
Added:
{# -*- mode: web; -*- #}
2
Added:
3
Added:
{% extends "base.html" %}
4
Added:
{% block title %}
5
Added:
Orders
6
Added:
{% endblock %}
7
Added:
8
Added:
{% block content %}
9
Added:
<i>Track your orders and their payment status here.</i>
10
Added:
11
Added:
<p>
12
Added:
<a href="{{ url_for('add_item', item='order') }}" class="button">Add order</a>
13
Added:
</p>
14
Added:
15
Added:
<table>
16
Added:
<thead>
17
Added:
<tr>
18
Added:
<th>ID</th>
19
Added:
<th>Date</th>
20
Added:
<th>Customer</th>
21
Added:
<th>Content</th>
22
Added:
<th>Updated</th>
23
Added:
</tr>
24
Added:
</thead>
25
Added:
<tbody>
26
Added:
{% for order in orders %}
27
Added:
<tr>
28
Added:
<td>{{ order.id }}</td>
29
Added:
<td>{{ order.date }}</td>
30
Added:
<td>{{ order.customer }}</td>
31
Added:
<td>{{ order.content }}</td>
32
Added:
<td>{{ order.updated }}</td>
33
Added:
</tr>
34
Added:
{% endfor %}
35
Added:
</tbody>
36
Added:
</table>
37
Added:
{% endblock %}
app/templates/modules/products.html
@@ -0,0 +1,51 @@
1
Added:
{# -*- mode: web; -*- #}
2
Added:
3
Added:
{% extends "base.html" %}
4
Added:
{% block title %}
5
Added:
Products
6
Added:
{% endblock %}
7
Added:
8
Added:
{% block content %}
9
Added:
10
Added:
11
Added:
<div id="actions">
12
Added:
<a href="{{ url_for('add_item', item='product') }}" class="button">Add product</a>
13
Added:
</div>
14
Added:
15
Added:
<i>Track products you sell here.</i>
16
Added:
17
Added:
<table>
18
Added:
<thead>
19
Added:
<tr>
20
Added:
<th colspan=2><i>Actions</i></th>
21
Added:
<th>Name</th>
22
Added:
<th>Price (net)</th>
23
Added:
<th>Price (gross)</th>
24
Added:
<th>Updated</th>
25
Added:
</tr>
26
Added:
</thead>
27
Added:
<tbody>
28
Added:
{% for product in products %}
29
Added:
<tr>
30
Added:
<td>
31
Added:
<button>edit</button>
32
Added:
</td>
33
Added:
<td>
34
Added:
<form method="post" action="{{ url_for('delete_item', pk=product.primary_key, table='Product' ) }}">
35
Added:
<button>delete</button>
36
Added:
</form>
37
Added:
</td>
38
Added:
<td>{{ product.name }}</td>
39
Added:
<td>{{ product.price_net }}</td>
40
Added:
<td>{{ product.price_gross }}</td>
41
Added:
{% if product.date_time_updated %}
42
Added:
<td>{{ product.date_time_updated }}</td>
43
Added:
{% else %}
44
Added:
<td>{{ product.date_time_created }}</td>
45
Added:
{% endif %}
46
Added:
47
Added:
</tr>
48
Added:
{% endfor %}
49
Added:
</tbody>
50
Added:
</table>
51
Added:
{% endblock %}
app/templates/preview-invoice.html
@@ -0,0 +1,106 @@
1
Added:
{# -*- mode: web; -*- #}
2
Added:
3
Added:
<!doctype html>
4
Added:
5
Added:
<html lang="en">
6
Added:
<head>
7
Added:
<meta charset="utf-8">
8
Added:
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to">
9
Added:
<title>New Invoice for {{ customer.name }}</title>
10
Added:
<meta name="author" content="Marius Peter">
11
Added:
<meta name="description" content="A new invoice for your project.">
12
Added:
<!-- <link rel="icon" href="{{ url_for('static', filename='img/favicon.png') }}"> -->
13
Added:
<link rel="stylesheet" href="{{ url_for('static', filename='styles/invoice.css') }}">
14
Added:
</head>
15
Added:
<body>
16
Added:
<div id="content">
17
Added:
<header class="clearfix">
18
Added:
<div id="logo">
19
Added:
<img src="{{ url_for('static', filename='img/logo.png') }}">
20
Added:
</div>
21
Added:
<div id="company">
22
Added:
<h2 class="name">Company Name</h2>
23
Added:
<div>455 Foggy Heights, AZ 85004, US</div>
24
Added:
<div>(602) 519-0450</div>
25
Added:
<div><a href="mailto:company@example.com">company@example.com</a></div>
26
Added:
</div>
27
Added:
28
Added:
</header>
29
Added:
<main>
30
Added:
<div id="details" class="clearfix">
31
Added:
<div id="client">
32
Added:
<div class="to">INVOICE TO:</div>
33
Added:
<h2 class="name">John Doe</h2>
34
Added:
<div class="address">796 Silver Harbour, TX 79273, US</div>
35
Added:
<div class="email"><a href="mailto:john@example.com">john@example.com</a></div>
36
Added:
</div>
37
Added:
<div id="invoice">
38
Added:
<h1>INVOICE 3-2-1</h1>
39
Added:
<div class="date">Date of Invoice: 01/06/2014</div>
40
Added:
<div class="date">Due Date: 30/06/2014</div>
41
Added:
</div>
42
Added:
</div>
43
Added:
<table cellspacing="0" cellpadding="0" border="0">
44
Added:
<thead>
45
Added:
<tr>
46
Added:
<th class="no">#</th>
47
Added:
<th class="desc">DESCRIPTION</th>
48
Added:
<th class="unit">UNIT PRICE</th>
49
Added:
<th class="qty">QUANTITY</th>
50
Added:
<th class="total">TOTAL</th>
51
Added:
</tr>
52
Added:
</thead>
53
Added:
<tbody>
54
Added:
<tr>
55
Added:
<td class="no">01</td>
56
Added:
<td class="desc"><h3>Website Design</h3>Creating a recognizable design solution based on the company's existing visual identity</td>
57
Added:
<td class="unit">$40.00</td>
58
Added:
<td class="qty">30</td>
59
Added:
<td class="total">$1,200.00</td>
60
Added:
</tr>
61
Added:
<tr>
62
Added:
<td class="no">02</td>
63
Added:
<td class="desc"><h3>Website Development</h3>Developing a Content Management System-based Website</td>
64
Added:
<td class="unit">$40.00</td>
65
Added:
<td class="qty">80</td>
66
Added:
<td class="total">$3,200.00</td>
67
Added:
</tr>
68
Added:
<tr>
69
Added:
<td class="no">03</td>
70
Added:
<td class="desc"><h3>Search Engines Optimization</h3>Optimize the site for search engines (SEO)</td>
71
Added:
<td class="unit">$40.00</td>
72
Added:
<td class="qty">20</td>
73
Added:
<td class="total">$800.00</td>
74
Added:
</tr>
75
Added:
</tbody>
76
Added:
<tfoot>
77
Added:
<tr>
78
Added:
<td colspan="2"></td>
79
Added:
<td colspan="2">SUBTOTAL</td>
80
Added:
<td>$5,200.00</td>
81
Added:
</tr>
82
Added:
<tr>
83
Added:
<td colspan="2"></td>
84
Added:
<td colspan="2">TAX 25%</td>
85
Added:
<td>$1,300.00</td>
86
Added:
</tr>
87
Added:
<tr>
88
Added:
<td colspan="2"></td>
89
Added:
<td colspan="2">GRAND TOTAL</td>
90
Added:
<td>$6,500.00</td>
91
Added:
</tr>
92
Added:
</tfoot>
93
Added:
</table>
94
Added:
<div id="thanks">Thank you!</div>
95
Added:
<div id="notices">
96
Added:
<div>NOTICE:</div>
97
Added:
<div class="notice">A finance charge of 1.5% will be made on unpaid balances after 30 days.</div>
98
Added:
</div>
99
Added:
</main>
100
Added:
<footer>
101
Added:
Invoice was created on a computer and is valid without the signature and seal.
102
Added:
</footer>
103
Added:
104
Added:
</div>
105
Added:
</body>
106
Added:
</html>