@gameroom/cli
Version:
A command line tool for Gameroom
72 lines (66 loc) • 2.16 kB
JavaScript
const Table = require('tabley'),
{ models: { Sale_Extended, Store } } = require('@gameroom/kit'),
{ dateAddDays, dateLocaleString, dateString, getAll, grGreen, printTable } = require('../../helpers'),
{ spinner } = require('../../refs')
module.exports = async ({ start_at, end_at }) => {
spinner.text = `generating ${grGreen('sales')} report`
spinner.start()
spinner.info(`from ${grGreen(start_at.toLocaleString())} to ${grGreen(end_at.toLocaleString())}`)
const stores = await Store.get()
const total = {
store: 'Total',
count: 0,
sales: 0,
taxable_sales: 0,
tax: 0
}
const rows = []
for (const store of stores) {
const filter = { and: [
{ key: 'current_status', value: 1},
{ key: 'status_timestamp', value: start_at, comparison: '>=' },
{ key: 'status_timestamp', value: end_at, comparison: '<' },
{ key: 'store_id', value: store.id},
{ key: 'total', value: 0, comparison: '>'}
] }
const sale_extendeds = await getAll(Sale_Extended, { filter })
const store_row = {
store: store.name,
count: 0,
sales: 0,
taxable_sales: 0,
tax: 0
}
for (const sale of sale_extendeds) {
// row
store_row.count++
store_row.sales += sale.total
if (sale.tax > 0) store_row.taxable_sales += sale.total
store_row.tax += sale.tax + sale.tax_offset
}
rows.push(store_row)
total.count += store_row.count
total.sales += store_row.sales
total.taxable_sales += store_row.taxable_sales
total.tax += store_row.tax
}
const value = (v) => `${(v * .01).toFixed(2)}`
const table = new Table(rows, {
title: grGreen('Payments Report'),
columns: [
{ key: 'store', title: 'Store' },
{ key: 'count', title: 'Count' },
{ key: 'sales', title: 'Total Sales', value },
{ key: 'taxable_sales', title: 'Total Taxable Sales', value },
{ key: 'tax', title: 'Total Tax', value }
],
meta: [ total ],
align: 'center',
margin: 4
})
spinner.stop()
console.log()
table.print()
console.log()
spinner.succeed(`generated ${grGreen('sales')} report`).stop()
}