UNPKG

invoice-fs

Version:

Nostalgic command-line invoicing application producing plain text invoices and JSON data structures. Uses the file system as a database

57 lines (50 loc) 1.68 kB
var out = require('../lib/out'), Invoice = require('../lib/invoice'), InvoiceItem = require('../lib/invoiceItem'), EditFlow = require('../lib/editFlow'), EditFlowStep = require('../lib/editFlowStep'), state = require('../lib/state'), router = require('route-cli'); module.exports = function(command, extraArgs, flags) { var invoice = new Invoice(extraArgs[0] !== undefined ? extraArgs[0] : state.get('invoice')), model = new InvoiceItem(invoice); if (invoice.data.isLocked()) { out.error("INVOICE #" + invoice.data.number + " HAS ALREADY BEEN FINISHED"); return; } out.writeCliTitle("Add Invoice Item"); var flow = new EditFlow({ model: model, steps: [ new EditFlowStep({ label: "Quantity", property: "units", matches: /^\d*(\.\d+)?$/, type: "decimal", required: true, default: 1 }), new EditFlowStep({ label: "Price", property: "unitPrice", matches: /^\d*(\.\d+)?$/, type: "decimal", required: true, default: "0.00" }), new EditFlowStep({ label: "Description", property: "description", type: "string", required: true }) ], onSave: function() { out.write("\nThe item was added!\n"); invoice.save(); out.writeCliDivider(); router.execute(['show', 'invoice']); } }); flow.start(); };