Registers
Find, Filter, Import and Export Cash Book Entries
The Cash Book list is a branch-scoped expense ledger with date and field filters, pagination, CSV import, selected export, backed-up deletion and refresh controls.
- Menu path
- Manage -> Cash Book
- Verified from
- Posnic demo and current POS source reviewed on 2026-09-08
Technical source evidence
Live local POS Cash Book list and Import Expenses Details dialog audited 2026-09-10, frontend/modules/settings_write.html view_expenses table toolbar, filters and import modal, frontend/static/script/js/modules/js/expenses.js expensesTable exportExpense deleteSelectedExpense, frontend/static/script/js/core/PosnicPro.js importTableFile exportTableData JSONToCSVConvertor, frontend/static/Import_sample_files/expenses.csv, api/src/controllers/expenses.controller.js import/export permissions and payloads, api/src/models/expense.model.js import normalization, timestamping, duplicate handling, export projection and recycle-bin backup
List Controls
| Control | Source surface | Use it for |
|---|---|---|
| Rows per page | view_expenses_per_page | Show 5, 10, 25, 50 or 100 entries. |
| Date range | view_expenses_daterange | Filter entries by business date/time. |
| Field selector | view_expenses_fields | Search Type, Category, Recipient or Approved By. |
| Search input | view_expenses_input | Enter the matching text for the selected field. |
| Import | expense_import | Import Cash Book rows from a CSV file. |
| Export selected | expenses_exportbtn | Export checked rows from the table. |
| Delete selected | selected delete toolbar | Delete checked rows when permitted. |
| Refresh | refresh toolbar | Reload the list after saving or changing filters. |
Filter the List
The list is scoped to the active branch. Its table shows Amount, Type, Category, Approved by and Note; Recipient is searchable but is not a visible table column.
- Open Manage -> Cash Book.
- Confirm the active branch before interpreting the result.
- Open Filter and choose the date range when checking a shift or month.
- Select a field: Type, Category, Recipient or Approved By.
- Enter the search value.
- Click Apply.
- Review the displayed rows and the Showing ... of ... pagination total.
- Click Clear before starting a different search.
Understand the Import Contract
Cash Book import is a direct six-column load into the active branch. The dialog does not map columns or preview the result, and the importer does not apply the same validation rules as the New Entry form.
| CSV column | Required by importer | Operational rule |
|---|---|---|
| amount | Yes | Use a plain numeric value. A malformed non-empty value can be stored as zero, so reconcile every imported amount. |
| type | Yes | Use credit for Money In or debit for Money Out. Other non-empty text is not rejected but will not behave as a standard type. |
| category | No | Use one controlled spelling so filters and reports group rows consistently. |
| recipientname | No | Name the person or business when evidence requires it. |
| approvedby | No | This remains unauthenticated free text, not a manager approval event. |
| description | No | Unlike manual entry, import currently accepts a blank note. Supply a useful note for every production row. |
Import Cash Book CSV Safely
- Open Manage -> Cash Book and confirm the destination branch.
- Click Import, then download CSV Sample.
- Keep the exact header: amount,type,category,recipientname,approvedby,description.
- Remove formulas, totals, blank footer rows and currency symbols from the file.
- Use credit or debit exactly and make every amount numeric and greater than zero.
- Add a meaningful description even though the importer does not require one.
- Import a two- or three-row test file first.
- Refresh the list, clear filters and compare the inserted count and values with the source file.
- Open each test row and verify Type, Amount, Category, Recipient, Approved-by and Note before loading the remaining batch.
Import Behaviors That Affect Reconciliation
- There is no Date column in the supported Cash Book CSV. Every inserted row receives the import date and time, so this tool cannot preserve the original historical transaction date.
- Exact duplicate rows in one upload are collapsed using Amount, Type, Category, Recipient, Approved-by and Description together.
- If any row is missing Amount or Type, the importer returns a CSV error list before inserting the batch.
- The active plan may limit how many rows are considered. Count inserted rows after every batch instead of assuming the whole file loaded.
- Imported rows inherit the active branch, signed-in user and import timestamp.
- Use manual New Entry when the original business date must be retained, or confirm a separate migration process with the owner.
Export Selected Entries
The toolbar export is evidence for selected rows, not a complete audit export. Its CSV contains Amount, Type, Category, Recipient Name, Approved-by and Description only; it omits Date, Branch, Created-by and timestamps.
- Filter the list to the rows you need.
- Tick the checkbox beside each entry.
- Confirm the selected count is correct.
- Click Export Selected.
- Confirm the export dialog count and continue the download.
- Open expenses.csv and compare all six exported fields with the selected rows.
- Use the Cash Book report when the owner needs date range, branch context or a broader review.
Delete Selected Entries
Delete is controlled by Expense delete permission. The current implementation copies each selected record to the recycle_bin collection and then removes it from the live expenses collection.
- Export first if the business keeps evidence of corrections.
- Do not delete a real cash movement to make close totals look easier.
- Confirm the selected count and the deletion prompt before proceeding.
- A recycle-bin backup is created even when the Recycle Bin feature is not visible, but normal UI recovery still depends on the available restore workflow and permission.
- Prefer edit when the entry is real but one field is wrong.
Troubleshoot List, Import and Export
| Problem | Likely reason | Action |
|---|---|---|
| Expected row is missing | The active branch, date range or field filter excludes it. | Confirm branch, click Clear, refresh, then search again. |
| Import dialog has no Upload button | Import begins after a file is selected and parsed by the shared importer. | Choose the prepared CSV and wait for validation feedback; do not close the dialog during processing. |
| Imported dates are all today | Cash Book import assigns the import timestamp and has no Date column. | Use New Entry for original dates or use an owner-approved migration method. |
| Fewer rows were imported | Exact duplicates were collapsed or the plan import limit restricted the batch. | Compare unique source rows with the list count and import only the verified remainder. |
| Imported amount is zero | A malformed non-empty amount passed the import presence check and normalized to zero. | Review the source CSV, correct or remove the bad row and verify the accounting result. |
| Export button warns to select a row | No checked row is in the current selection. | Tick the required rows and retry; use the report for broad date-range evidence. |
| Export lacks Date or Branch | Selected export projects only the six Cash Book CSV fields. | Use the Cash Book report or retain a separate audit extract with branch and date context. |
| Import, export or delete is missing | The user lacks Expense Write, Read or Delete permission respectively. | Ask an administrator to review the role instead of sharing an owner login. |