OS.ST  |  ACCOUNTING

OS.ST Accounting  User Manual

This manual explains every feature of the system and how to use it. Roles: ADMIN (company administrator), STAFF / ACCOUNTING (accounting staff), STAFF / STOREKEEPER (warehouse staff), ROOT (platform account).

1. Signing in and navigation

  • Sign in with company code + username + password (e.g. BSC / admin). Closing the browser logs you out - the session ends with the browser window, and reopening always starts at the login screen. While you keep working the session renews itself automatically (no mid-work sign-outs); a session that stays idle for the full token lifetime (default 7 days) requires signing in again.
  • The top bar groups: Invoice, Quotation, Inventory, Customer, About. Each group's items follow your role; hidden modules can be switched on/off in Company Settings → Navigation.
  • The build number appears in the top bar (hover for details).

2. License and Live Update (About → LIC)

  • The License page shows activation state, machine fingerprint and the software update card.
  • Feature licences: which features are enabled on this machine is determined by your licence key. For licences of more features, please contact the OS.ST Sales & Technical Support team.
  • Check compares your version with the release pool (admin.os.st). Updating is the SERVICE entitlement, not the product right: a PRODUCT key (OST-...) alone does NOT permit updates - a SERVICE key (OSTS-..., issued by the vendor as a separate key for a support window) must be activated on this machine, match its product key, and not be expired. Without an active service licence the card explains that support is required; your data and the installed version keep working unchanged.
  • Update now = one click: the server downloads the release, verifies its SHA-256, swaps the application files, applies any pending database migrations automatically, restarts, and this page reloads by itself. An animated progress overlay shows the version transition while it runs.
  • The Update now button appears to administrators (ADMIN) only. Staff users can still check; when an update exists the card shows a hint that an administrator must sign in to apply it.
  • Your private data (uploads, appsettings) is never touched by an update.

3. Documents: Invoice / Quotation / Proforma / Cash Memo / Debit / Credit / Delivery Note

Both ACCOUNTING and STOREKEEPER staff can create and manage all document types.

3.1 Issuing a document

  1. Open the group (e.g. Invoice → INV) and press New.
  2. Customer field: type to search customers by name, code, phone, ATTN… — and by their users: typing a user name finds the user's customer; the row shows USER: <name> and clicking it selects the customer AND auto-fills the USER field. Type a brand-new name and use the + Create row to quick-add the customer.
  3. USER field: with a customer picked, the dropdown immediately lists that customer's users (scoped — other customers' users never appear). You can pick, quick-add (+ Create user), edit (name / email / phone — record-only, never printed) or remove users. Leave it blank for none.
  4. Products: the single search box accepts name / code / barcode (scanner input works). A total miss auto-creates the product. Each line shows the CODE field (left of the product name; blank = auto-derived), then name (line 1), description (line 2), remark (line 3; optional, up to 65,536 characters — long packing lists / hotel terms fit comfortably), quantity, unit price, line discount (% or $).
  5. Hotel / Air Ticket / Other series (opt-in): when enabled in Company Settings, each line offers three checkboxes. Ticking Hotel Series expands a Hotel column with fields for Country, City, Hotel Name, Booking ID, Guest Full Name (the reservation holder - printed on the invoice and the Exchange Order as Guest: …), Check-in/Check-out dates, Room Quantity, Room Type (Single/Twin/Double/Triple/Quad) and a Remark for the stay. The number of nights is computed automatically from the dates: the dates line prints as Check-in: 2026-10-21 Check-out: 2026-10-23 (2 nights) and the line quantity follows the nights (2 nights × the nightly rate = the stay total - exactly how hotel folios are billed); you can still override the quantity afterwards - City / Booking ID are typed by hand (the system never invents a booking reference), Hotel Name and Country / area autocomplete (country and area names with Chinese translations are in the built-in directory, migration 081). The Booking ID is the reference the vendor needs to know WHICH reservation to issue or amend, so always fill it in for a hotel order (it never prints on customer documents - the Exchange Order carries it to the vendor). The three air-ticket checkboxes ONE-WAY / ROUND-TRIP / MULTI-CITY (no "Series" wording) open the Air Ticket itinerary builder on the line in that mode; faster still, the buttons + ONE-WAY AIR TICKET / + ROUND-TRIP AIR TICKET / + MULTI-CITY AIR TICKET beside "+ Add item" add a ready-made ticket line (name pre-filled, quantity 1, builder open) in one click. The builder's header carries the current mode title and its three-way switcher - One-Way / Round-Trip / Multi-City (default: Round-Trip). Every mode is built from Flight Legs cards (the counter beside the section shows how many are active): One-Way = one FLIGHT card; Round-Trip = an OUTBOUND FLIGHT card plus a RETURN FLIGHT card (its date prints as "Returning on"; the return cities are pre-filled mirrored from the outbound and stay editable); Multi-City = any number of FLIGHT cards with + Add Flight and Remove on each - exactly like the airline websites' multi-city booking form. Each card holds Leaving from / Going to / Departing on with the same airport autocomplete. Below the legs, the Ticket & Passenger Details group collects Airline (one line may name several carriers, e.g. GA/CX/OM/MR), Cabin Class, Passenger Name, GDS (Amadeus / Sabre / Online) + RLOG - the reference your vendor / airline needs to issue or re-issue the ticket, so always fill it in for an air ticket. Customer-facing documents never print these vendor references (RLOG / GDS / Booking ID): when you raise the Exchange Order the system carries them into its tracking block, which is the document the vendor works from - plus Made by and Approved by (the rest of that same block on the paper form). Printed ticket blocks always use the SHORT city codes (the IATA code carried by the airport search, e.g. Air Ticket: HKG → NRT); a typed place with no code prints as typed. A Multi-City ticket prints as the routing line Airfare:TIM/DPS/HKG/ICN/UBN/ALA/UBN, the carriers line, the cabin class and the Travel date line (identical to the other modes - Travel: 2026-11-03 → 2026-11-17, first flight to last flight); One-Way and Round-Trip print the classic ticket block. Ticking Other Series adds the reference for service / handling-fee lines - one field, RLOG / Booking ID, quoting the vendor's own order reference so the order can be matched. The checkboxes are independent - tick several to put a whole package (ticket + hotel) on ONE line, or use + Package: add Air + Hotel lines to split it into two component lines in one click. The Destination / Hotel / city / country fields autocomplete from the built-in local directory (world cities with Chinese names, IATA airports, hotels, countries / areas with Chinese names) - type to search, or just type any place freely; nothing external is called. Your own frequently used hotels can be saved to the company list ("+ Save this hotel to my list", ADMIN) and they rank first in searches. The fields compile into a clean multi-line detail block printed under the item name on the PDF, and are stored as structured data so they re-open when you edit the document.
  6. CODE field per line: blank = the code is derived automatically (the linked product's SKU, or {document number}-{line} for auto-created products); type a value to override what prints in the document's Code column.
  7. Payment term (due-date + deposit formula), global discount, remarks. Deposit split: tick the Deposit split (deposit + balance) checkbox next to the payment term to split ANY document into a deposit leg and a balance (e.g. total $10,000, deposit $5,000 → the document prints Deposit / Balance Due). Deposit terms in the catalog prefill this automatically; the checkbox works with any term. (For deposits collected as their own document, use the DEP invoice instead - see §3.5.)
  8. Preview renders the exact PDF before saving (nothing is written); Issue saves.

3.2 The list

  • Filters: customer, unified search box (document no / product code/name/description / customer name, phone, address, user, customer code — e.g. typing "深圳" finds every Shenzhen customer's documents), status, payment/confirmation state, date range. Typing a search term auto-expands the record table.
  • The customer filter also matches the document's customer-user snapshot.
  • Quick actions: mark paid / unpaid (invoices), confirm quotations, generate the Statement / Outstanding report (field-selectable Description; each line item prints on its own Description: line).

3.3 The detail page

  • Edit (issued, not receipted), Duplicate, Convert to Invoice (quotation / proforma / cash memo — a memo only when it is unpaid or was paid by CHEQUE / BANK TRANSFER), Convert to Cash Memo (invoice / quotation / proforma), confirm/unconfirm, deposit received.
  • Void is ADMIN-only (other roles don't see the button).
  • Preview / Download: the PDF is named {document number}-{customer user}.pdf (just the number when no user). The Save As checkbox (per user, default on) decides whether the browser asks where to save.
  • Print: read-only INVOICE or OFFICIAL RECEIPT (a one-shot payment event that posts the accounting entry); chop / signature toggles per print. On multi-page documents the signature / customer-confirmation block prints ONLY on the last page (the address and page number repeat on every page).

3.4 What the PDF shows

  • NAME field: line 1 customer name, then the customer user on the next line when present and enabled in Company Settings; second/alternate name likewise. ATTN, ADDRESS, TEL, EMAIL print when present.
  • The Statutory Recycling Fee Notice (Cap. 603) block is controlled by the Company Settings checkbox.

3.5 Deposit Invoices (Invoice → DEP)

A deposit can be collected as its own document, numbered DEP-… and printed with the title DEPOSIT INVOICE.

  • From a confirmed quotation: open the quotation and press Deposit Invoice. The form pre-fills the customer and one deposit line ("Deposit for quotation QUO-…"); choose 30% / 50% or type any percentage (it fills the line amount), or edit the amount directly. The quotation stays linked on the deposit.
  • Standalone: Invoice → DEP → New. No quotation link - write the deposit description and amount freely.
  • Collect it like any invoice (mark paid). A deposit invoice never touches stock and never creates catalog products.
  • Balance tracking: when the quotation is converted to the final invoice, its PAID deposits are applied automatically; the final invoice then shows Deposit Received (-X) and the accurate Balance Due - on screen and on the PDF. For standalone deposits, open the final invoice and use the deposits panel to apply/release any paid deposit of that customer. Voiding or un-paying a deposit re-opens it for re-application.

3.6 Cash Memos (Invoice → CM)

A cash memo is a money-received document: numbered CM-…, printed with the title CASH MEMO. Each document family counts independently - INV / QUO / PRO / CM each have their own counter and never consume each other's numbers.

  • Issue directly: Invoice → CM → New. The payment TERM is always Cash (immediate settlement - the term dropdown is locked; the money-received METHOD - CASH / CHEQUE / BANK_TRANSFER / … - is still recorded normally). Mark it paid like any invoice.
  • Convert an existing document: open an INVOICE / QUOTATION / PROFORMA and press Convert to Cash Memo. The document ITSELF becomes the memo (same id, lines, amounts and paid state) and gets a new CM-… number; its accounting/stock references follow the new number. If it held the LAST number of its family, that number is released - the next document of the family reuses it (a middle number stays a gap; numbers are never reused while a higher one exists).
  • Convert back to an invoice: open the cash memo and press Convert to Invoice - allowed only when the memo is unpaid or was paid by CHEQUE or BANK TRANSFER (cash / e-wallet receipts stay memos). The invoice is a NEW document (fresh INV number) that carries the paid state over; the memo stays as the receipt record.
  • Cash memos never touch stock and never create catalog products.
  • Counted in or separate: Company Settings → Count cash memos in on the INVOICE side (DEFAULT ticked). Ticked = INVOICE lists, the Statement of Account and outstanding reports also include cash memos; unticked = cash memos are a fully separate account and never appear with invoices. The CM list and CM report always show only cash memos either way.

3.7 Purchase Orders & Exchange Orders (Invoice → PUR / EXO)

Travel-agency purchasing documents: numbered PO-… / EO-…, printed with the titles PURCHASE ORDER / EXCHANGE ORDER. Each family counts independently (its own counter).

  • Issue: Invoice → PUR (or EXO) → New. The counterparty field is VENDOR - it searches the vendor list (Purchase → Suppliers), NOT the customer list. Pick an existing vendor to prefill its address / phone / email / contact, or use Create as new vendor to add it to the vendor list on the spot. The USER field (customer users) does not appear on these documents.
  • Air-ticket routing: on a line, tick Air ticket routing and fill the legs (From / To, via carrier, flight, class, date, status) plus PNR / STATUS / FARE DETAILS. The From / To cells autocomplete on IATA codes (type hkg and pick - the cell fills with HKG; free text still allowed). The PDF prints a structured ROUTING table cleanly under the line - never overlapping text.
  • GDS / Payment / Tracking section (all optional, shown only when the document prints with the TRAVEL panel): GDS (Sabre / Amadeus / Others), credit-card charge (Visa / Master / Amex, card number - printed MASKED with only the last 4 digits, holder, expiry, remarks), settlement mode (Cash / Bank Transfer / Cheque No.), RLOG, Made by, Approved by.
  • Financial breakdown: TOTAL FARE (lines) − FARE LESS % (the global discount) + TAXES + SURCHARGE = TOTAL AMOUNT - computed server-side and printed line by line.
  • Vendor invoice (OPTIONAL - 無單 SKIP): record its number / date / amount on the form, then attach the actual file (PDF/PNG/JPEG, max 5 MB) on the document page - Upload vendor invoice / View vendor invoice. When there is no vendor invoice, leave it blank and note it in the remarks.
  • Payment: press Mark paid - that IS the payment event: it posts the accounting entry (Debit 5000 Cost of Purchases / Credit 1000 Cash and Bank, settlement mode cited) and cannot be un-marked (void the document to reverse). Official-receipt printing is not available on these documents.
  • Purchase / exchange orders never touch stock and never create catalog products.
  • Print layout panel (dual-PO): PO/EO print using an industry layout panel. By default this is AUTO - the system detects the vendor name (contains travel / tour / 旅遊 / 旅行社 → the TRAVEL panel with GDS / card / RLOG / taxes / vendor-invoice blocks; otherwise the STANDARD procurement panel). You can pin the default in Company Settings → PO / EO layout panel (AUTO / STANDARD / TRAVEL - e.g. a product-selling company pins STANDARD), and override per document with the Print layout panel selector on the PO/EO form - any industry may use any panel. A custom template you saved in Company Settings always wins over the built-in panels; new industry panels arrive with product updates.
  • Travel-only fields follow the panel: when the document will print with the STANDARD panel, the form shows only the layout selector and the Ship to / delivery address - the GDS / card / RLOG / settlement / taxes / surcharge / vendor-invoice fields are hidden entirely (a STANDARD PO never stores them). Switching the selector to TRAVEL brings them back; switching an existing TRAVEL document to STANDARD keeps its stored travel details untouched (they reappear if you switch back). Exchange Orders are the exception: the GDS / RLOG / Made by / Approved by block is always editable on an EO whatever panel it prints with (the vendor cannot action a ticket or reservation without the reference), and it prints on the document - the remaining travel extras (credit card / settlement / taxes / surcharge / vendor invoice) still follow the panel.
  • Exchange Order rules (EXO only): every Exchange Order must choose ONE category - Hotel, Air Ticket or Other (service / handling fees); the three are mutually exclusive. While your company's Require an invoice for Exchange Orders setting is on (§8, DEFAULT on), the form also asks for the Invoice being exchanged: type an invoice number or a customer name and pick one of YOUR OWN issued INVOICE documents - other tenants' documents, quotations, cash memos and void invoices are never offered. The natural way in is the other direction: open the issued INVOICE and press Issue Exchange Order - the EO form opens already linked to that invoice (the link is locked, and its number is what the reference is built from). While the setting is on, pressing New in the Exchange Order list works the same way: it first asks which invoice this Exchange Order is for (a picker of your issued invoices) - a blank Exchange Order is never started. On save the system writes the document's reference by itself: the last 5 characters of that invoice number plus a sequence - INV-2026-41234 gives 41234-1 for the first Exchange Order on it, 41234-2 for the second, and so on. The reference is read-only: you cannot type or change it, it is never re-numbered when the document is edited, and each company counts its own sequences (a void Exchange Order still consumes its number - sequences are never reused). Untick the setting to raise Exchange Orders without an invoice link (no reference is generated in that case). When the linked invoice carries an air ticket with routing legs (a Multi-City ticket or a saved routing table), the EO's Air ticket routing table opens pre-filled with all of the trip's segments - delete the rows that do not belong to this supplier and keep the ones it is being ordered for (one Exchange Order per carrier is the usual pattern).
  • Choosing which lines belong to which vendor (EXO): one invoice can contain lines from several DIFFERENT vendors, so an Exchange Order never covers a whole invoice - it covers only the lines you pick. Once the EO is linked to an invoice, the form lists that invoice's lines under Invoice lines: tick the lines this vendor supplies and press Add selected lines - each chosen line is copied onto the Exchange Order with its name, quantity and ticket / hotel detail (an air line also opens its ROUTING table pre-filled from the trip, ready to trim to this carrier). The invoice's unit prices are never carried over - the Exchange Order price is the vendor's cost, so type it on each line. Each invoice line can only be exchanged once: a line already covered by another live Exchange Order is marked Already exchanged by EO-… and locked (void that order to release the line again). On the exchanged invoice, every line shows the Exchange Order that covers it.

4. Customers (Customer → CUST)

  • Create / edit / delete customers (name, code, second name, ATTN, contacts, payment terms, remarks).
  • USERS column: every customer's user names are shown directly in the list.
  • The Users button per row opens the management dialog: list / add / edit / remove users (name required; email / phone optional and record-only). A customer may have many users; names must be unique within the customer.

5. Products (Inventory → Products)

One page, tabs Products / Stock / Locations / Movements.

  • Products: full catalog — search & status filter, SKU (re-codable), barcode, category, list price, unit, series (families), product images (upload / URL), status active / discontinued, and Delete: clicking Delete removes the product immediately. Already-issued documents are never rewritten — invoice lines keep their printed text and purchase-receipt lines keep their frozen SKU/name snapshots; only the product's own stock levels and movement history go with it. To stop selling a product while keeping its history, set it discontinued instead.
  • Stock: stock in / out / transfer between locations; levels per (product, location); safe-stock alerts.
  • Locations: shops / warehouses; default location; retire by deactivating (never delete while holding stock).
  • Movements: the append-only ledger (every in/out/transfer, with the level after each move).

6. Purchase (Inventory → PO)

Goods receipts (入貨): receive lines by SKU/name search, quick-create products or series on the fly; each receipt records stock-in at the receiving location. Suppliers are managed here (retire by status, no delete).

7. Payment Terms (Invoice → TERM)

ADMIN maintains the catalog (C.O.D., 7 Days, EOM, deposit splits…). The invoice form reads active rows and computes due dates / deposit legs from them.

8. Company Settings (Customer → CO) — ADMIN/ROOT

  • Business data (BR, address, contacts), currency, stock alert threshold.
  • Document settings: localized name, website, invoice terms, cheque payable-to, hide short code when no logo, Cap. 603 notice (tick/untick), Show customer user (USER) on PDF (tick/untick), Hotel / Air Ticket series on invoice lines (tick/untick, default OFF), Recurring subscription on invoice lines (tick/untick, default OFF), Count cash memos in on the INVOICE side (tick/untick, DEFAULT TICKED - untick to keep cash memos a fully separate account: INVOICE lists / statement / outstanding reports then exclude them; see §3.6), Allow zero prices on document lines (tick/untick, DEFAULT UNTICKED - every invoice / quotation / order line must carry a price greater than zero; a 0.00 document cannot be issued. Tick only if your business needs complimentary / pass-through 0.00 lines; see §3.1), Require an invoice for Exchange Orders (tick/untick, DEFAULT TICKED - every Exchange Order must then be linked to one of your issued INVOICE documents and the system writes its read-only reference; untick to allow Exchange Orders without an invoice link; see §3.7).
  • PDF custom layout (JSON templates) (an additional licensed feature - if it is not enabled on your key the card shows a short "not enabled" note instead; for licences of more features, please contact the OS.ST Sales & Technical Support team): choose a document type and build the layout with the Visual builder - add blocks (Text / Table / Image / Side-by-side row / Spacer / Divider), edit each with simple form fields (content, size, bold, alignment, colours, logo/chop images), reorder with ↑↓. No JSON writing needed; a JSON (advanced) tab is there for direct editing. Preview renders your CURRENT design through the REAL print engine (enter a document's internal ID - visible in the document list URL - to see it with real data; blank = layout-only), so what you see is exactly what prints. Save template stores it (validated first - an invalid design is refused and names the exact block that failed); saved = every print of that type follows it, including documents already saved before the template existed; Remove restores the standard layout. The Use built-in layout checkbox switches a saved template OFF without deleting it - tick it to print with the standard layout, untick to follow your template again (the design is kept). Types without a template always use the built-in layout, so this feature never breaks existing printing. In text/table cells you can insert tokens like {{Invoice.No}}, {{Customer.Name}}, {{Items.0.Amount}}, {{Total}}; image blocks can use your company logo/chop. (The chop/signature print-time checkboxes and the OFFICIAL RECEIPT document belong to the built-in layout.)
  • Invoice numbering: every document family (Invoice, Quotation, Proforma, Cash Memo, Deposit, DN/DR/CR) counts INDEPENDENTLY - a quotation always starts at its own 1 and never consumes the invoice sequence. Set the current year's invoice counter (e.g. 8888 → next document is INV-2026-A-008889); Reset to 1 next year checkbox (unticked default = the sequence continues across the year boundary, per family).
  • Navigation: show/hide modules per tenant.
  • Bank register: receiving accounts printed in the PDF Payment Instructions (default account; users may prefer their own).
  • Assets: company logo and chop uploads.

9. Staff (Customer → STF) — ADMIN/ROOT

Create accounts (STAFF with function ACCOUNTING / STOREKEEPER, or ADMIN), disable/enable, reset passwords. What each role may do:

Feature ADMIN ACCOUNTING STOREKEEPER
Issue / edit / list documents ✅ ✅ ✅
Void a document ✅ ❌ ❌
Official receipt (payment event) ✅ ✅ ✅
Customers & users ✅ ✅ ✅
Products / stock / purchase ✅ ❌ (reads via invoice form) ✅
Accounting surfaces ✅ ✅ (read; posting ADMIN-only) ❌
Company settings / staff / payment terms / counter ✅ ❌ ❌

10. Accounting (Invoice → A/C)

Ledger (journal entries), tax estimate, fixed assets, payroll & MPF, expense claims, petty cash — read by ADMIN/ACCOUNTING; posting entries is ADMIN-only. Documents (official receipts, renewals) post automatically.

11. Rental (Quotation → RNT)

Properties, contracts, tenants, notices and subscription renewals (renewal invoices are generated automatically with fresh numbers and stock settlement).

12. Language and manuals (About → LANG / MANUAL)

The UI language switches per user (5 languages); documents print in the company's configured language. This manual and the i18n guide live here.

Tips

  • Invoice numbers are never reused; editing a document re-adjusts stock by the line difference; voiding compensates stock.
  • Search users from the Customer field to fill both customer and user in one click.
  • Keep the "Save As" tick on if you choose the PDF filename/location each time; turn it off for direct downloads.