ERP modules
Every module registers in app/models/module_registry.rb, which drives the navigation and the permission gate. Features ship in seven areas.
Overview
Dashboard — a per-user customizable widget layout: key sales stats, per-channel revenue, attention items, stock alerts, and sync / reconcile / goal history. Widgets can be reordered and hidden.
Commerce
- Sales — daily sales journal in spreadsheet style: an hourly × location pivot plus every sale of the day in arrival order, with a tracking indicator per order.
- Registers — POS cash-drawer sessions: open a register, see sales per tender, and settle with a physical cash count at end of day.
- Customers — unified CRM across channels with Ransack search, pagination, and lifetime value. Add, edit, and view each customer's order history.
- Inventory — products and variants with independent per-location quantities, platform totals, and SKU linkage status.
- Inventory counts — manual count sheets with a prepared-blank workflow, then submit / approve / reject / reopen.
- Orders — detail page per order with a printable invoice and packing slip, shipping address, line items, payments, and fulfillment tracking.
Operations
- Reports — sales, financial (P&L), inventory, and operations reports with 7/30/90/365-day windows and CSV export.
- Reconcile — read-only SKU identity audit between Shopify and Square; independent quantities are never automatically equalized.
- Ledger — the central transaction stream across both platforms, filterable by window and source.
- Projects — simple project + task tracking with status transitions (start, hold, complete, archive).
- Goals & KPIs — goals with activate / achieve / abandon, each with key performance indicators and reading history.
Purchasing
- Vendors — supplier directory with payment terms and purchase-order history.
- Purchase orders — draft → placed → received lifecycle, partial receiving, and what's owed to the vendor.
Finance
- Chart of accounts — the account tree (assets, liabilities, equity, revenue, expenses) with archive / restore.
- Accounts — balance sheet and P&L overview built from the chart of accounts and sales.
- Expenses — a money-out register with categories and soft delete.
- Payments (AP) — vendor payments recorded against what's owed.
Team
The full People (HR) module set covers the staff lifecycle from directory to payroll:
- Staff — HR records: contact details, department & position, employment type, and a status lifecycle (active / on leave / terminated / rehire) with emergency contacts.
- Departments — the org chart: name, code, manager, and headcount per team.
- Positions — job titles and pay grades, optionally tied to a department.
- Timesheets — weekly hours per staff member with per-day entries (regular / overtime / PTO), moving draft → submitted → approved / rejected / reopened.
- Leave & PTO — time-off requests (vacation / sick / personal / unpaid) with approve / deny / cancel and annual balance tracking.
- Payroll — pay runs built from approved timesheets and current pay rates (hourly + salary), finalized and paid, with per-employee payslips (gross / deductions / net).
- Accounts — login accounts (who can sign in) and role assignment.
- Permissions — a role × permission matrix with save and reset-to-defaults, plus per-person overrides on each account.
System
- Alerts — low-stock and attention flags that can be resolved or ignored per row.
- Sync — run full, Shopify-only, or Square-only syncs; review run history and the log tail.
- SwipeSimple import — import sales from a SwipeSimple CSV export (it has no public API) into the canonical sales stream, idempotently.
- System health — server load, memory, swap, disk, database, and slow-query monitoring.
- Connections — a plain-language guide to every service's keys: what's configured, where to find each key, and how to renew it.
- Settings — env import/export, database backup/restore, Google Drive backup, the Buzz agent, and office feature flags.
- Warehouse — secret vendor links with price multipliers and bulk tiers, plus a public token-gated storefront for each vendor.