Quotations
Build, send, and track price quotes — catalog-driven line items, bilingual templates, secure share links, and one-click conversion to a sales order.
Quotations
The Organization → Quotes page is where your team prepares a priced proposal for a client or payer, sends it as a secure link, and turns an accepted quote into a billable sales order. Quotes are gated by the Quotes module — enable it under Organization → Settings → Modules if you don't see the menu item.
Browsing the quotes list
The list page works just like the Clients page, so the toolbar will feel familiar:
- Search the number, recipient, or title from the box on the left; results update as you type.
- Views — switch between Cards, Table, and Grid with the toggle on the right. Table view supports drag-to-reorder, show/hide, and sortable columns, including clickable Client and Created by columns that jump to the client's record and the staff member who created the quote.
- Filters — click Filters to open the controls panel (it's collapsed by default). The Status filter is multi-select: tick any combination of statuses (Draft, Sent, Accepted, …) to narrow the list, and Clear all to reset.
- Refresh re-pulls the list and shows when it was last updated.
Acting on several quotes at once
Tick the checkboxes on one or more rows and a floating action bar appears (drag it anywhere on screen by its handle). From there you can:
- Switch scope between This page and All pages — "All pages" selects every quote matching your current filters, even ones not yet loaded, with Select all confirming the full count.
- Update status — pick a lifecycle action (Send, Accept, Decline, …) to apply to every selected quote. Quotes that can't make that move from their current status are skipped and reported.
- Delete — soft-deletes the selected quotes. Only drafts and closed quotes can be deleted; in-flight ones are skipped and reported.
Creating a quote
Click New quote to open the authoring page. It collects everything a proposal needs:
- Authoring language — toggle EN / AR at the top. Every translatable field below (the title and each line description) is stored per language, so you can write the quote once in English, switch to Arabic, and add the translation without losing what you typed. Arabic inputs render right-to-left.
- Title — the heading the recipient sees.
- Client — search and link the client the quote is for. The link carries through to the sales order on conversion.
- Attending doctor — optional; recorded on the quote for reference.
- Recipient name / email — optional, for a quote addressed to someone who isn't a registered client.
- Template — pick a layout (see Templates). Selecting one
reveals the custom fields the template defines, each with its placeholder,
help text, and unit; required fields are marked with a
*and must be filled before you can create the quote, and any default values are prefilled. - Line items — see below; a running subtotal is shown.
- Currency — defaults to USD; a catalog pick sets it from the item.
- Valid until — optional expiry date for the quote.
Switch to the Preview tab at the top to see the quote rendered with your chosen template and current data before you create it.
Catalog-backed line items
Each line can be typed by hand or filled from your catalog. Use the Search catalog box, then open a line's dropdown to pick an active Service or Product. The pick fills the description, unit price, and tax rate, and binds the line to that catalog item — which is what later lets the quote convert into a sales order. Choose Custom line to type a free description and price instead. Add as many lines as you need with Add line; totals, tax, and any client/insurer split are computed by the server.
Sending and sharing
- Send issues the quote: it gets a permanent quote number, an immutable version snapshot is frozen, and a PDF is queued.
- Share mints a secure, single-use link (
/q/…) and copies it to your clipboard. The link is backed by a hashed token, can carry an optional password, and expires. The recipient sees a clean, branded view with no internal data and can accept or decline from there.
Duplicating
Any quote — in any status — has a Duplicate action. It clones the title, recipient, template, field values, currency, and every line item into a brand new draft that starts its own lifecycle (no number, no share links). Handy for recurring proposals or for revising a sent quote without disturbing the original. The copy's title is suffixed with “(copy)”.
Converting to a sales order
Once a quote is Accepted, a Convert action appears. Converting:
- Creates a draft sales order from the quote's catalog-bound lines.
- Records the link back on the quote and moves it to Converted.
Pick the branch the order belongs to. Only lines bound to a Service or Product transfer — a sales-order line must reference a catalog item — so any custom, free-text lines are listed as “won't transfer”. Re-add those from the catalog first if you need them on the order. Confirming the resulting sales order (in Products & Services → Sales orders) opens the invoice and posts its line items, so conversion is also the start of the billing trail.
Appointments: a quote does not auto-book a visit — scheduling needs a procedure, a slot, and resources a quote doesn't carry. Book the appointment in the calendar and link it from the order if needed.
Templates
Open Quotes → Templates to manage layouts. System templates ship read-only; Fork one to get an editable copy, or New template to start your own. Creating or editing a template opens a dedicated editor page with:
- Form fields — the inputs an author fills when using the template. Each
field has a key, a type (text, number, currency, date, a select
with options, a repeater, or a computed total), a bilingual
label, a placeholder, help text, a suffix (a unit such as
%orkg), a default value, and a required flag. The new-quote form renders all of these, and required fields block creation until filled.- A repeater field is a list of rows the author adds (like the legacy
"services" field). Define the row columns (each a key + type +
label;
selectcolumns get their own options) and the add-row button label. On a quote the author clicks Add row to enter as many rows as needed, and the template body renders them as a table. - Select options can carry a price. A computed field is read-only on the quote and live-sums every selected option's price plus each repeater's number columns — the auto-calculated total from the legacy template. Give your option dropdowns prices and add a computed field for a running total. Set the computed field's base currency and point it at the dropdown that holds the total currency; the total is then converted live using daily exchange rates (refreshed by a background job from an FX provider and stored in the database), so picking a different total currency reprices it.
- Every label is translatable. Use the EN / AR toggle at the top of the field builder to author each field's label, placeholder, help text, suffix, option labels, and column labels per language; the quote form shows them in the author's chosen language.
- A repeater field is a list of rows the author adds (like the legacy
"services" field). Define the row columns (each a key + type +
label;
- Body — built two ways via the Builder / HTML tabs:
- Builder (drag and drop): drag blocks from the palette into the canvas — Quote header, Recipient, Heading, Text, Field value, Line items, Totals, Divider, Spacer — or click one to append it. Drag the grip on a block to reorder, and use its inline settings (e.g. heading level, which form field to show). The document regenerates as you go.
- HTML: the generated Handlebars, editable directly for advanced layouts.
Helpers:
{{t … locale}},{{money cents currency}},{{date …}},{{bps …}}; field values render via{{fieldValues.key}}. Output is sanitized. - Preview: the body rendered with sample data — including a sample computed total — so you can check the layout as you edit (no save needed).
Your block layout is saved with the template, so re-opening it returns you to the builder. Use Preview on the list to render a template with sample data before using it on a real quote.
Bookable resources & procedure roles
Add doctors, staff, rooms, and equipment to your resource catalogue, then define which roles each procedure needs and which one is the primary role.
Leads (sales pipeline)
Track prospective clients from first contact through conversion, see where they came from, and win back patients who've drifted away.