UNPKG

@gameroom/cli

Version:

A command line tool for Gameroom

72 lines (66 loc) 2.16 kB
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() }