@@ 1,61 0,0 @@
-An invoice contains a lot of information, most of which doesn't change very
-much. When writing an invoice, I should only have to focus on the part that
-changes: the items, each of which consists of a description, an hourly rate,
-and a duration. The tedious parts, such as the customer information, date,
-invoice number, my contact info, and the total, should be handled for me
-by the system. Of course, I need to specify who the customer is, but that
-shouldn't require entering all the details by hand.
-
-It should be possible to modify some of these tedious details if necessary;
-for instance, changing the date.
-
-I could use codes to identify customers. BEC Systems, LLC. could be referred
-to as BEC. The part of the invoice I write might look like this:
-
- customer: BEC
- seller: KS
- items:
- -
- description: Preliminary research
- rate: 0
- hours: 5
- -
- description: Embedded Linux development
- rate: 100
- hours: 10
-
-For convenience, a tool could generate incomplete YAML invoices:
-
- date: 2020-02-22
- number: efeb3056-9924-4a31-ba19-db0163b11767
- seller: KS
- customer:
- items:
- -
- description:
- rate:
- hours:
-
-After I fill in the fields, I'd submit the file to the system, which would
-validate and insert it in a database.
-
-Later, I could query the system to produce reports, such as HTML or PDF
-invoices to be sent to the customer. There would be no need for me to
-save these documents, as the database (such as SQLite) already contains all
-of their information.
-
-Because the system is backed by a database, I can run all sorts of queries
-that might be useful for accounting or planning.
-
-
-
-In summary, the system has the following features:
-
-- generate partially completed invoice.yaml files
-- manage invoices and customers through a command-line interface
-- generate beautiful HTML or PDF invoices from the database
-
-It should be possible to pipe the invoices through a text editor:
-
- invoice new | vis - | invoice add
-