invoice-fs
Version:
Nostalgic command-line invoicing application producing plain text invoices and JSON data structures. Uses the file system as a database
26 lines (22 loc) • 1.18 kB
JavaScript
var fs = require('fs'),
state = require('../lib/state'),
paths = state.get('paths'),
out = require('../lib/out'),
colors = require('colors'),
Invoice = require('../lib/invoice');
module.exports = function(command, extraArguments, flags) {
var showPaid = !!flags.indexOf('--paid');
fs.readdir(paths.invoices, function(err, files){
out.writeCliTitle("List Invoices");
for (file in files) {
var details = fs.lstatSync(paths.invoices + files[file]);
var invoice = new Invoice(files[file].replace('.json', ''));
if (showPaid && !invoice.data.isPaid() || !showPaid && invoice.data.isPaid()) {
var name = invoice.data.isLocked() ? out.leftColumn(invoice.data.number,12).red : out.leftColumn(invoice.data.number,12).green;
out.write(name + out.leftColumn(invoice.data.customer.companyName, 21) + out.rightColumn(invoice.data.total.toFixed(2), 10) + out.rightColumn(new Date(details.mtime.toString()).toDateString(),17));
}
}
out.writeCliDivider();
out.write(files.length + " invoices" + (files.length > 1 ? "s" : "") + "\n");
});
};