---
title: Advanced search
order: 12
updated: 2026-07-12
---

# Advanced search

The five filter controls at the top of the *Enquiry Bank* (Customer, Contact Person, Product Head, Product Code, Status) cover everyday lookups. When you need to combine several conditions at once — a customer *and* a date range *and* an amount band *and* a manufacturer — open the *Advanced Filters* modal. It exposes every filter the list understands in one place, plus the sort controls, and it is the only place to reach filters that have no top-row picker (offer number, enquiry number, folders, makes, associated parties, and amount).

Everything you set here is written into the page's URL (as a compact encoded `q` parameter), so a filtered view can be bookmarked or shared, and the *Back* button steps through your filter history. Every filter is also re-checked on the server — the API rebuilds the query from scratch from whatever it receives, so a hand-edited URL can only ever return your own firm's data, never break the list or leak another tenant's records.

## Open advanced search

1. On the *Enquiry Bank* page, click the options button (the sliders icon) at the top right.
2. Open the *Search* submenu.
3. Choose *Advanced Search* (*Filter enquiries with advanced rules*). The *Advanced Filters* modal opens.

The modal is seeded with whatever filters are already active — so if you have a customer and a status selected in the top row, they are already filled in when the modal opens. Clicking outside the modal closes it without applying.

## How the filters combine

- **All active filters are combined with AND.** An enquiry must satisfy *every* filled-in filter to appear. Two multi-select filters (*Manufacturers* and *Associated Parties*) additionally require **all** of their own selected values on the same enquiry (see each section below); *Folders* is the exception and matches **any** of the selected folders.
- **The modal is the single source of truth when you apply.** *Apply filters* replaces the entire active query with exactly what the modal shows — including the top-row pickers, because they were pre-loaded into the modal. So if you clear the customer inside the modal and apply, the top-row customer clears too. Anything you leave blank in the modal ends up blank on the page.
- **Active-filter count.** The modal header shows a `N active` badge counting how many distinct filter groups are set, so you can tell at a glance whether a stray filter is still on. (This badge lives in the modal header, not next to the options button.)
- **Nothing is applied until you press *Apply filters*.** Editing fields — even pressing *Reset all* — only changes the form; the list does not change until you apply.

## Reference filters

The *References* block has four linked pickers. Each is a type-to-search box that resolves to a single record.

### Customer

Matches enquiries raised for one specific customer. Selecting (or changing) the customer **clears the Contact Person** below it, because a contact person only makes sense within the chosen customer. Default: none (all customers).

### Contact Person

Matches enquiries against one specific contact person. The picker is scoped to the selected customer when one is set. Default: none.

### Product Head

Matches enquiries that contain at least one line item whose product belongs to this product head (category). Changing the head **clears the Product Code** below it. Default: none.

On the server, when a Product Head is set without a Product Code, the API first looks up every product code under that head and matches enquiries containing any of them. If the head has no product codes at all, the result is simply empty.

### Product Code

Matches enquiries containing this one specific product. The picker is scoped to the selected Product Head when one is set. If both a Product Code and a Product Head are set, the **Product Code wins** (the head is ignored for matching). Default: none.

## Status

A dropdown that narrows the list to a single enquiry state. Options: `All` (default — no filter), `Pending`, `Submitted`, `Regret`, `Lost`, `PO Arrived`. These are the only recognised statuses; the server matches the enquiry's `currentStatus` exactly.

## Show queued only

A checkbox (*Only enquiries awaiting send*) that limits the list to enquiries still queued to have their quotation sent. Off by default. This is the same toggle as the *Show queued only* shortcut in the options menu and the *Queued* chip under the top-row pickers — all three drive one flag, so turning it on in any of them lights up the others. See [Browse the enquiry bank](/docs/enquiry-bank/enquiry-bank-list) for the queued-row *Send Mail* shortcut.

## Identifier filters

The *Identifiers* block filters on the enquiry number and the offer (quotation) number.

### Enquiry No. contains

A free-text box (placeholder `e.g. ENQ-2024`). The server matches it as a **case-insensitive pattern** against the enquiry number, so a partial fragment like `2024` finds every enquiry whose number contains it. Because it is treated as a pattern, ordinary text works as a "contains" search; regular-expression metacharacters are interpreted literally by the engine, so stick to plain fragments for predictable results. Default: empty.

### Offer No. from / Offer No. to

Two number fields that bound the numeric **offer (quotation) counter** — the running base number a quotation gets when it is sent, *without* any year prefix, padding, or revision suffix. So to find quotations `10,200`–`10,300` you enter `10200` and `10300`. Either bound may be left empty for an open-ended range. Minimum accepted value is `0`. The server applies `from` as a `≥` bound and `to` as a `≤` bound on the offer number.

> To jump straight to one quotation by its full printed number (with dashes, padding, and revision letter), use *Search Quotation Number* instead — see [below](#search-by-quotation-number).

## Folders

Appears only when your firm has at least one [folder](/docs/enquiry-bank/folders) defined. Each folder is a toggle button (showing its colour dot and name); click to include it, click again to drop it. Selecting several folders matches an enquiry filed in **any** of them (OR). Leave every folder off to include all folders. Default: none selected.

## Manufacturers (Makes)

A multi-select search box (*Match enquiries containing all selected makes*). Type to find a make/brand and add it. When you pick more than one, the filter requires an enquiry to contain **all** of the selected makes across its line items (AND, not any). Default: none.

## Associated Parties

A multi-select search box for the people recorded on an enquiry's associated-party (commission / revenue-share) list. Like Makes, selecting several requires an enquiry to include **all** of the chosen people on its associated-party list (AND).

This whole section is **permission-gated**: it only appears if you hold the *View commissions list* permission (`enquiry.viewCommisionsList`). Without it the section is hidden and the filter is stripped from the request even if it somehow reached the query — the server re-checks the same permission. See [Revenue share](/docs/enquiry-bank/revenue-share) for what these entries are. Default: none.

## Amount Range

Bounds the enquiry's total value. Two currency fields (formatted in `INR`):

- *Min Amount* — lower bound (`≥`). Minimum `0`.
- *Max Amount* — upper bound (`≤`). Minimum `0`.

Either may be left empty for an open-ended band. Default: both empty (no amount filter).

Two checkboxes sit below, and they are **disabled until at least one amount bound is entered**:

- *Apply discount before comparing* — off by default. When on, each line's per-item discount percentage is deducted from that line before the enquiry total is compared to your range.
- *Apply tax before comparing* — off by default. When on, each line's tax percentage is likewise deducted from the line before comparison.

With **neither** box ticked, the amount compared is the plain sum of `price per unit × quantity` across all line items (before any discount or tax adjustment). Ticking a box lowers each line by that percentage before the sum is taken. The comparison is computed server-side in a single aggregation, so it stays accurate over large lists.

> The amount used here is computed from the line items, which can differ from the *Total* column shown in the table (that column is a display total excluding tax). If a result surprises you, check which adjustment boxes are ticked.

## Created By

A dropdown listing every user in the firm, plus *Anyone* (default). Restricts the list to enquiries raised by that one user. The server matches on the enquiry's creator.

## Date Ranges

Three independent range pickers, each a from–to calendar. A range filters on the whole day span you pick (inclusive of both ends).

- *Enquiry Date* — when the enquiry was originally received. Filters the enquiry's `dateOfEnquiry`.
- *Offer Date* — when the quotation was sent. Filters `offerDate`.
- *Order Date* — when the enquiry became an order. Filters the enquiry's `orderDate`.

Each range is independent; clear a picker to remove that one date filter. Default: all three empty.

> *Order Date* here is distinct from the *PO Date* sort option below — the range filters the enquiry's order date, while the *PO Date* sort orders by the purchase-order date on the record.

## Sorting

The *Sort* block sets how the returned list is ordered. Sorting is controlled **here (and via the URL)** — not by clicking table column headers.

### Sort By

Choose the field to order by. Options:

- `Enquiry Date` — the default when nothing is chosen.
- `Enquiry No.`
- `Offer No.`
- `Offer Date`
- `PO Date` — orders by the purchase-order date on the record.
- `Created At`
- `Updated At`
- `Amount` — the computed enquiry total (uses the same line-item calculation as the amount filter).

### Direction

`Ascending` or `Descending`. Default: `Ascending`.

## Apply and reset

At the bottom of the modal:

- *Apply filters* — commits the modal's current state to the list (replacing the whole active query) and closes the modal.
- *Reset all* — clears every field in the modal back to empty. This only clears the **form**; press *Apply filters* afterwards to actually clear the list. (Reset also drops the sort back to the defaults.)

To remove a single filter, blank that one field and press *Apply filters* again.

## Search by quotation number

A separate, faster shortcut lives right next to *Advanced Search* in the *Search* submenu: *Search Quotation Number* (*Find an enquiry/order by its offer number, any format*). Use this when you already know the quotation reference and just want to open that record.

1. Open the options menu → *Search* → *Search Quotation Number*.
2. Type the offer number in **any** form — with or without dashes, zero-padding, spaces, or the revision letter. All of these resolve to the same quotation: `2026-10234-R01`, `10234R01`, `10234 r 01`, `10234r1`, `202610234R01`.
3. Press *Search* (or Enter).

What happens next:

- **One clear match** — the app navigates straight to that enquiry (or, if the enquiry was already converted, its order) without another click.
- **Several plausible matches** — they are listed as cards showing the quotation number, an *Enquiry* or *Order* badge, the customer, the enquiry number, and the send date. Pick the right one to open it.
- **No match** — an empty-state message suggests removing dashes, padding, or the revision suffix and trying again.

Under the hood the matcher is deliberately forgiving about padding zeros, separators, letter case, and the year prefix; the only things it trusts are the base counter number and the revision. Input is capped at `80` characters, it scans the most recent quotation records, and it returns at most `20` candidates. It needs the same *view enquiries* permission as the list itself, and every lookup is scoped to your firm's database.

## Common questions

### Can I save a filter set as a preset?

There is no named-preset feature. But because the whole filter set is encoded into the page URL, you can **bookmark a filtered view** and return to it later, or copy the URL to a colleague. The browser *Back* button also walks back through your recent filter changes.

### Why do I get zero results after applying filters?

Every active filter is ANDed, so one over-narrow condition empties the list. Common causes: a date range that misses the records, an amount band that excludes them (check the *discount*/*tax* boxes), a customer with no enquiries in the selected folder, or two multi-select values (*Makes* / *Associated Parties*) that never appear together on the same enquiry. Press *Reset all*, apply, and re-add filters one at a time.

### Do the top-row pickers and the advanced modal work together?

Yes — they are the same filter set. The modal opens pre-filled with the top-row pickers, and *Apply filters* writes the modal's state back over the whole query. So they never conflict, but remember the modal is authoritative on apply: clearing a field in the modal clears it on the page too.

### Why don't the table column headers sort the list?

Sorting is driven by the *Sort By* and *Direction* controls inside *Advanced Filters* (and by the URL), not by clicking column headers. Open the modal, set the sort, and apply.

### The Offer No. filter and Search Quotation Number seem similar — which do I use?

Use *Offer No. from / to* in *Advanced Filters* to list **a band** of quotations by their raw counter number (and combine it with other filters). Use *Search Quotation Number* to jump to **one** record when you have its full printed number in any format. See [Generate a quotation](/docs/enquiry-bank/generate-quotation) and the [Quotation number format](/docs/settings/document-templates#quotation-number-format) for how that number is built.

### The Associated Parties filter isn't showing for me — why?

That section needs the *View commissions list* permission (`enquiry.viewCommisionsList`). Without it the filter is hidden and ignored. Ask a firm administrator if you need it. See [Revenue share](/docs/enquiry-bank/revenue-share).
