880c4f53b2
Add the function to get the next invoice number
de7d167e65
Add constraints to reject empty product and companies names
045bf7ff6a
Add the formnovalidate attribute to update and add products buttons
4463c7ee0b
Use array_agg to get the taxes for the product’s form
4db0a8fb5a
Refactor checking for pgx.ErrNoRows in a function
13fa1d6b89
Add PL/pgSQL functions to add and edit products
989c1717e5
Rename mustGetInvoiceEntries to mustCollectInvoiceEntries
e94e3f6ebc
Fix time layout in FormValidator.CheckValidDate
3891a01fd5
Fix use of API methods not available in Go 1.16
4903c8a3b9
Add the form to add products to an invoice and create invoices too
72fbed68ac
Add a missing StatusUnprocessableEntity HTTP response code
c2d8006748
Make FormValidator.CheckValidDate method public
6bf51d5eeb
Add discount_rate domain and invoice_product relation
96cfee6f56
Correctly test negative tax_rate
fa3ffdf19b
Truncate relation invoice in its test suite
d5fb5a4326
Fix comment on domain tax_rate
2a98b9c0af
Restart sequences for the demo
44e8f030b3
Add the invoice_status relation and its i18n
608ea16152
Document the requirement between product and tax
73ca559209
Add template for InputField of type textarea
ae1949024b
Allow optional select with empty label
60f9792e58
Convert from cents to “price” and back
e9cc331ee0
Add products section
f611162b0e
Move contacts templates in their own directory
2799fdb8db
Add companyURI for Go code too, not just templates
55980367bc
Add sample contacts to the demo
a0a3a5561d
Add breadcrumbs
7d17620f48
Add the edit contact page
1ab48cfcbc
Replace default router with github.com/julienschmidt/httprouter
80f14d5818
Use MustGetText to get the company’s slug
7a439a40cc
Use a proper struct for the contact’s form
e8523e373f
“Fix” the province for the demo’s company tax details
2883438157
Handle tax details and new tax forms with structs and validation
4f13fa58dc
Add autocomplete attributes to profile fields
b8b3d73e95
Refactor form validation into a new type