e-bon
e-bon.ro
E-BON App

Daily operations

Issue receipts, reprint duplicates, run X and Z reports, manage cash deposits and withdrawals, and close the fiscal day from the E-BON Android app — every action wired to the operations tab on the device detail screen.

Once a printer is paired and the app is signed in, every cashier action of the day routes through two screens: the Receipts tab (creating new sale receipts and reviewing history) and the Device detail → Operations tab (one-shot fiscal commands such as duplicates, X/Z reports, cash in/out). This page walks through both, in the order a typical shift uses them.

Issue a receipt

Open the Receipts tab and tap + Create Receipt (the FAB on the bottom right; the same call-to-action shows up on the empty state on a fresh install). The app opens the New Receipt screen with two stacked sections — Add item and, once at least one line has been added, Payment.

Add the line items

For every item the cashier sells, fill in the form at the top of the screen:

  • Item name — free text, required.
  • Quantity — numeric, defaults to 1.
  • Price — unit price in RON, must be greater than zero.
  • VAT rate — pick one of the chips. The chips reflect the Romanian VAT rates (ROMANIA_VAT_RATES) configured in @e-bon/types; the default selection is the standard rate.
  • Department — chips numbered 19, default 1.

Tap Add Item. The line lands in the Items list below with its VAT {rate}% and Dept {dept} badges, and the running Total at the bottom updates immediately.

Pick the payment method and amount

When at least one item is on the receipt, the Payment section appears underneath. Pick a Method chip — Cash, Card or Voucher — and either enter the amount the customer is paying or leave the field empty to use the running total. The app rejects amounts strictly below the total with an Insufficient Payment alert that names the minimum.

Preview and print

Tap Preview & Print. The app stores the draft in ReceiptStore, navigates to the Receipt Preview screen with the item summary, VAT breakdown and payment details, and arms the Print Receipt button. Pressing Print Receipt sends the order to the first paired device for the active location (per useFilteredDevices) through FiscalPrinterService.printReceipt() — the AMEF prints the fiscal receipt, the receipt is updated with the fiscal ID and fiscal date returned by the printer, and the entry shows up in the Receipts history with a green Fiscal: … line under the total.

The VAT rate chips and the Department numbers come from the printer's fiscal configuration. If you need to change which VAT rates are programmed into the AMEF or which department maps to which product family, do that from the device detail's Fiscal Configuration section (Operations tab → Set VAT Rates), not from the New Receipt screen.

Reprint a duplicate

Sometimes the customer needs a second copy of a receipt that has just been printed. Open the device on the Devices tab, switch to Operations, expand the Receipts section, and tap Print Duplicate Receipt. The app calls fiscalDriverBridge.printReceipt() against the connected AMEF, which reprints the last receipt held in the printer's working memory and overlays it with the DUPLICATE banner mandated by the protocol — the original fiscal ID is preserved, no new fiscal counter is consumed.

Print Duplicate Receipt reprints whatever the printer considers its last receipt. If you need to reprint a specific older receipt by fiscal ID, that is not a same-day operation in the app — pull it from the receipts archive in the Portal → Receipts page, which has full search and per-receipt PDF re-export.

Void, refund, or storno a sale

Romanian fiscal regulations distinguish two corrections:

  • Storno — voiding a line before the receipt is closed. Only meaningful inside an open receipt; once the AMEF has fiscalised the receipt the storno path is no longer available for that document.
  • Refund (RETUR) — a separate fiscal document that reverses an already-closed receipt, in part or in full.

In the current app build, the Receipts tab only shows entries of type Sale, Refund and Storno in the receipts history (each tagged with a coloured badge — green for sale, amber for refund, red for storno) and the New Receipt flow only issues sale receipts. The issuance of refund and storno documents lives in the Portal, not in the controller app.

To issue a storno or a refund against a previously printed receipt:

Find the receipt in the portal

Open Portal → Receipts, search by fiscal ID, date range, customer or amount, and open the receipt detail.

Trigger the corresponding correction

The portal exposes the storno and refund flows that ultimately drive the printer through the same fiscalDriverBridge. Once the correction is fiscalised, the resulting RETUR or STORNO entry shows up in the controller app's Receipts tab on the next sync, with the matching coloured badge.

Do not treat Print Duplicate Receipt as a correction tool. A duplicate is a non-fiscal reprint of the last receipt — it does not reverse a sale, does not consume a fresh fiscal counter, and does not appear in the MF/JE export as a correction. For that you need a real refund or storno, issued from the portal.

Run an X report — a read-only snapshot

The X report is a non-resetting snapshot of the fiscal totals accumulated since the last Z close. Cashiers typically run it mid-shift to compare the printer's totals against the cash drawer or the card terminal's batch totals.

Open the device, go to Operations → Reports, and tap X Report. The app calls fiscalDriverBridge.xReport(), the printer prints the snapshot, and the operation is logged through logOperation('xReport', true) for the device's local audit trail. The X report does not reset any counters — you can run it as many times as you want during a shift.

Run the Z report to close the fiscal day

The Z report is the end-of-day fiscal close. Running it prints the day's fiscal totals and moves them out of the volatile working buffer into the AMEF's fiscal memory, where they form the next entry of the MF/JE archive. Once Z has run, the day is closed and the running totals reset to zero — there is no undo.

Open Reports and tap Z Report

Operations → Reports section → Z Report.

Confirm the destructive action

The app surfaces a confirmation alert with the wording: “This will close the fiscal day. This action cannot be undone. Are you sure?” (the deviceDetail.ops.zReportWarning copy in i18n/en.json). The Confirm button is styled as destructive to underline that this is a one-way operation. Tap Cancel if you opened the action by mistake.

Let the printer fiscalise the close

On confirm, the app calls fiscalDriverBridge.zReport(), the printer issues the Z document, and the day's totals are committed into fiscal memory. The local audit log records zReport with success: true; the same Z report is what the next Portal → Reports → MF/JE export will pick up.

Run Z exactly once at the end of the shift. Running Z mid-shift wipes the running counters even though the day is not over yet — every subsequent sale will accumulate into a new (short) fiscal day, which complicates reconciliation against the cash drawer and against the card terminal's daily batch.

Deposit and withdraw cash

The Cash Management section on the device's Operations tab lets the cashier book non-sale cash movements directly into the AMEF — the opening float at the start of the shift (cash deposit, cashIn) and any payouts during the shift (cash withdrawal, cashOut). The amount is reflected in the printer's cash counter so that the X and Z reports can reconcile the drawer.

Open the section and pick the direction

Operations → Cash Management → either Cash Deposit or Cash Withdrawal.

Enter the amount

A modal opens asking for the Amount in RON. The field is numeric and rejects empty values, zero and negative amounts; the helper text reads “Enter amount”.

Confirm

Tap Confirm. The app calls fiscalDriverBridge.cashIn(amount) for a deposit, cashOut(amount) for a withdrawal, prints the corresponding non-fiscal slip on the AMEF, and reports Operation completed successfully. Cancel dismisses the modal without booking anything.

Book the opening float as the first cash deposit of the shift, before the first sale. That way the X report you run mid-shift and the Z report at the end of the shift include the float and reconcile cleanly against the cash actually in the drawer.

Close the day end-to-end

The four operations above combine into a short, repeatable closing routine. Run them in this order:

Make sure every sale of the day is fiscalised

Open the Receipts tab and confirm there are no drafts left in New Receipt — anything still in the draft form is not in the printer's fiscal memory and will not show up on the Z report. Either complete the receipt and Preview & Print it, or Cancel the draft if it should not be issued.

Handle storno and refunds

If any sale of the day needs to be reversed, issue the storno or refund now — before Z. Use the Portal → Receipts flow. Once Z has run, any reversal will land in tomorrow's fiscal day.

Reconcile the cash drawer

Count the cash in the drawer. If you took any cash out for a payout during the day and did not book it through Cash Withdrawal, do that now. Conversely, if you added cash to the drawer mid-shift outside the opening float, book a Cash Deposit. The drawer should match the printer's cash counter when you're done.

Run an X report and verify totals

Operations → Reports → X Report. Compare the X report's printed totals against the cash drawer count, the card terminal's daily batch and any voucher slips. If anything is off, fix it (additional storno, additional cash movement) before moving to Z — the X report is read-only and you can re-run it as many times as needed.

Run the Z report to fiscally close the day

When everything reconciles, Operations → Reports → Z Report, Confirm on the destructive prompt. The printer issues the Z document, the day's totals are written into the AMEF's fiscal memory, and the running counters reset to zero. The day is now officially closed.

After Z, the day's fiscal data is sealed inside the AMEF and is what the next monthly MF/JE export in Portal → Reports will pick up. If anything in the day-end routine misbehaves — Bluetooth dropping the printer mid-print, the Z confirmation accepted by accident, the cash counter not matching the drawer — the Troubleshooting guide lists the recovery paths.