Sales

Find and Inspect a Sale in Sales History

Sales History is the source list for saved sales in the active outlet. Find the exact bill with its identifier, customer, date, item count, total and status, then open the invoice pane before printing, editing, returning or collecting payment.

Menu path
Home -> Sales History
Verified from
Posnic demo and current POS source reviewed on 2026-09-08
Technical source evidence

frontend/modules/sales_read.html current Sales History list and split-detail shell, frontend/static/script/js/core/list-filter.js search exact and date filter encoding, frontend/static/script/js/modules/js/sales.js history filtering sorting pagination status rendering and invoice pane, api/src/controllers/sales.controller.js getAll and getOne access branch session sort and cancelled-sale rules, api/src/helpers/sales.helper.js filter parsing date normalization and list field mapping, demo.posnic.io Sales History captured on 2026-09-11

Sales History listLive demo captured 2026-09-11. Fourteen current saved sales are shown in the active outlet with the list's six decision columns.
Search and period controlsThe current filter searches bill number, customer or phone and can narrow results to a preset or custom updated-date period.
Selected sale invoice paneSelecting a row keeps the list at the left and opens the saved receipt at the right with customer, item, quantity, price, total, payment and action controls.

Find the Exact Bill

  1. Open Home, then Sales History.
  2. Start with the Bill # printed on the receipt whenever it is available.
  3. Select Filter to expose the search, field, Exact and period controls.
  4. Choose Bill no, Customer, Phone or All fields.
  5. Enter the search text. Multiple words must all be present, but they can appear in any order.
  6. Enable Exact only when the complete selected field must match; matching is case-insensitive.
  7. Choose All time, a preset period or Custom range.
  8. Select the matching row and verify the invoice pane before taking any action.

Understand Search and Date Scope

ControlCurrent behaviorUse it safely
All fieldsSearches sales_id, customer_name and customer_phone with an OR condition.Use a specific field when a number or name could match more than one field.
Bill noCase-insensitive search of the saved sales_id.Exact is best when the complete receipt number is known.
CustomerSearches the customer name saved on the sale.Walk-in sales may have a generic or blank stored name.
PhoneSearches the customer phone saved on the sale.Formatting differences can affect matches; try the stored digit sequence.
ExactAnchors the entire selected value while remaining case-insensitive.Do not use Exact for a partial bill number or part of a name.
PeriodThe list sends the selected range against updated_date and extends the end through 23:59:59.999.An edited historical sale can appear in the edit period rather than only its original sale period.
ClearRemoves applied search and period values.Use it before concluding that the outlet has no sales.

Read the List

ColumnWhat it showsImportant detail
Bill #Saved sales_id, with invoice number or alternative ID used as backend fallbacks.This is the strongest identifier for selecting the correct transaction.
CustomerSaved customer name, otherwise Walk-in.The visible fallback does not prove a customer record was attached.
Date & TimeA normalized date chosen from updated_date, then sale date, created timestamp or created_date.The displayed date can therefore differ from the record's original business date.
ItemsSaved number_of_items, otherwise the number of stored item lines.It is not necessarily total unit quantity.
TotalSaved sales_total, with legacy total fields as fallbacks, formatted to two decimals.Open the bill to inspect line totals, tax and discount.
StatusReturn process text takes priority; otherwise an unpaid or paid pill is shown.Partial payment labels can be simplified by the list renderer; confirm the invoice and pending balance.

Which Sales Appear

  • Sales Read permission is required for both the list and the individual invoice.
  • The API scopes results to the current license and valid selected or active branch. The current Sales History filter bar does not expose a branch picker, so it normally uses the active outlet.
  • Cancelled sales are hidden by default unless a caller explicitly requests a status filter; the current filter bar offers no cancelled-status control.
  • Users with Sales Session Filter can be restricted to their permitted login-session time window.
  • The default API order is newest created record first, but the screen's active sort can replace that order.
  • A zero-result list says either that no sale exists yet or that no sale matches the current filter; clear filters and check access before treating it as missing data.

Sort and Page the List

Sort optionServer orderUse
Business date: newestdate descending, then newest record ID.Review the latest business-dated bills.
Business date: oldestdate ascending, then oldest record ID.Work forward through a historical period.
Highest bill firstsales_total descending.Investigate high-value transactions.
Lowest bill firstsales_total ascending.Find low-value or test sales.
Most items firstnumber_of_items descending.Find bills with the largest saved item count.

Pagination Behavior

  • Sales History requests 25 records per page; there is no page-size selector on the current screen.
  • The footer shows the total sale count and, when required, the current page and total pages.
  • Up to five numbered page buttons are shown around the current position, with previous and next arrows.
  • Changing search, period or sort returns to page 1.
  • The total counts sale records, not line items or units.

Open and Verify the Invoice Pane

  1. Select any list row; Posnic opens a split view and marks that row active.
  2. Confirm the Bill # and Paid, Unpaid or return status in the pane toolbar.
  3. Verify seller identity, receipt date and customer details.
  4. Review every item name, quantity, unit, price and line amount.
  5. Reconcile subtotal, optional discount, optional tax and total.
  6. Check payment method, pending amount when unpaid, payment description and sale notes when present.
  7. Only after those checks use Settle payment, Edit, Share or More.
  8. Select X to close the pane and restore the full list.

Available Actions

ActionWhen shownBoundary
Settle paymentOnly when payment_status renders as unpaid.Collect against the existing bill; do not create a duplicate sale.
EditWhen Sales Write access permits it.Editing can change stock, money and reporting periods.
Share -> PrintFor the selected bill.Confirm the printer and receipt format before handing it over.
Share -> Download PDFFor the selected bill.Verify the downloaded bill number and total.
Share -> EmailUses an entered address or the saved customer email.Confirm customer consent and destination.
Share -> WhatsApp or SMSWhen the respective channel is configured.Confirm the saved phone and message policy.
Share -> Copy invoice linkFor the selected sale ID.Treat the link as customer transaction information.
More -> Return itemsHidden when sale_process already contains Return.Use the dedicated return workflow and verify stock and refund outcomes.

Known Limits and Troubleshooting

ProblemCheckAction
A recent sale is not at the topSelected business-date sort versus record creation orderClear or change Sort, then search by exact Bill #.
An old sale appears in a recent periodWhether updated_date changed after edit or return activityOpen the bill and reconcile its history and original business date.
A cancelled sale is missingDefault cancelled-record exclusionUse audit or administrative records; the current list filter cannot request cancelled status.
Item count differs from unitsSaved number_of_items and line quantitiesOpen the invoice and sum quantities where unit count matters.
Partial payment looks Paid or UnpaidStored payment_status, partial_balance and paid amountOpen the invoice and payment reports before collection.
No sales match this filterSearch field, Exact, date period, outlet, permission and session scopeClear filters, test the exact bill ID and confirm the active outlet.
Could not open this saleWhether the record still exists and Sales Read remains allowedReload, search again and escalate with the bill ID rather than acting on another transaction.