Skip to content

Sales Inquiry (Internal)

Records what a customer has asked about before anything is committed — customer, sales agent, lines with quantities and prices, delivery detail, optional collection and contra lines — at the front of the sales chain, before a quotation or an order. It moves no stock and posts no journal; FINAL locks the document and nothing else, there is no VOID, and a quotation or sales order is raised separately. The Convert tab is literal about its warning: it builds a receipt voucher from the inquiry’s Collection lines — not its item lines — and then deletes the inquiry, so export the PDF first if you need a record.

Overview

Sales Inquiry (Internal) records what a customer has asked about before anything is committed: the customer, the sales agent, line items with quantities and prices, delivery detail, optional collection and contra lines, and attachments. It sits at the front of the sales chain, before a quotation or a sales order.

Server document type INTERNAL_SALES_INQUIRY. The applet is fully localised — English, Chinese, Malay, Arabic, Hindi and Indonesian bundles ship with it — and it renders either as a tab strip or as a stack of expansion panels, depending on the tenant’s orientation settings.

A sales inquiry moves no stock and posts no journal. Its quantity signum and amount signum are both 0 and the type has no entry in the journal posting handler. Setting one to FINAL locks the document and nothing else. There is no VOID on this document — the only ways out of a draft are DELETE (before FINAL) or CONVERT.

Where it fits

DocumentWhat it does
Upstream—An inquiry is normally the first document; lines can be seeded from a jobsheet, a quotation or an earlier inquiry
Line sourcesJobsheet (Internal), Sales Quotation (Internal), other sales inquiriesThe Select Line Item panel has a tab for each
This appletSales Inquiry (Internal)Records the inquiry. No stock, no journal
DownstreamInternal Receipt VoucherThe Convert tab creates one — and deletes the inquiry
Usual next stepSales Quotation (Internal), Sales Order (Internal)Raised separately once the customer commits; there is no automated conversion into either

Screens and menus

The left menu has two entries:

Menu itemRouteWhat it shows
Sales Inquiryinternal-sales-inquiryThe listing, the create panel and the view/edit panel
Line Itemsline-itemsA cross-document listing of inquiry lines with its own edit panel

Listing

Columns: Sales Order No, Posting Status, Branch, Customer Name, Sales Agent, Amount Txn, Status, Updated Date, Created Date, Transaction Date. One button above the grid, FINAL, which posts every selected row whose posting status is not already FINAL; rows already final are skipped silently.

The first column is labelled Sales Order No, not Sales Inquiry No — the label is inherited from the Sales Order applet this one was cloned from. It shows the inquiry’s own document number.
Create Internal Sales Inquiry on the Line Items tab, with the Select Line Item panel open showing its four tabs
The Select Line Item panel: Search Item, Jobsheet Item, Quotation Item and Previous Sales Inquiry.

Create

Seven tabs: Main Details, Account, Line Items, Delivery Details, Collection, Department Hdr, Contra. Buttons: RESET and CREATE. CREATE stays disabled while the Main Details form is invalid.

View / edit

The same seven tabs plus Attachments, Export and Convert. Buttons: RESET, FINAL and SAVE (SAVE is hidden by HIDE_GENDOC_SAVE_BUTTON), with a DELETE button under the tab strip that appears only when the document is not FINAL and the applet-wide SHOW_DOCUMENT_DELETE_BUTTON setting is on. No permission brings it back. Once posting status is FINAL the Main Details form is disabled except for Remarks.

Export offers four buttons; only Export as PDF works. Export as CSV, Export as DOCX and Export as ZIP are hard-disabled in the template — they are not configuration-dependent.

Convert shows one button, CONVERT TO INTERNAL RECEIPT VOUCHER, under the warning “This will cancel the current sales inquiry”. The warning is literal:

  1. A new document is built from this inquiry’s header, with server_doc_type and client_doc_type set to INTERNAL_RECEIPT_VOUCHER, amount_signum −1, all amount fields zeroed, and the document numbers, reference, remarks, member and contact links cleared. Every other header field — including posting_status — is copied across as-is.
  2. Its lines are the inquiry’s Collection (settlement) lines. The item lines are not carried over.
  3. The receipt voucher is POSTed. If that succeeds, the inquiry is DELETEd.

Convert while the inquiry is still a draft. The tab is offered on a FINAL inquiry too, and because the posting status is copied, converting one creates a receipt voucher that is born FINAL without ever running the FINAL step: it gets a tenant number but no company or branch number, no posting job is queued, and no cashbook or journal line is written — while the inquiry is gone. The deposit looks final in the receipt-voucher listing and never reaches the books. If a FINAL inquiry has already been converted, look in Receipt Voucher (Internal) for a FINAL voucher with no company or branch number and no cashbook line, and raise the deposit again properly (a known issue, reported to engineering).

If the POST succeeds and the delete fails you keep both documents; if the POST fails nothing is deleted and a failure toast is shown.

Panels instead of tabs

When the tenant has VERTICAL_ORIENTATION on and the user’s personal Default Tab Orientation is not HORIZONTAL, every screen renders as a stack of expansion panels instead of a tab strip. Which panels start expanded is controlled by the EXPAND_* settings below.

Side panels

The applet’s panel stack, in the order the pages service declares it: Internal Sales Inquiry Listing, View, Create, Select Line Item, Select Shipping Address, Select Customer, Select Billing Address, Add Line Item, Add Collection, Edit Line Item, Add Related Documents, Add Contra, Add Attachments, Edit Issue, Select Member, Create Customer, Select CRM Contact, Log Time.

Add Line Item has its own tabs: Item Details, Costing Details (when HIDE_COSTING_DETAILS is off or the SHOW_COSTING_DETAILS permission is granted), Pricing Details and Issue Link. The Serial Number, Batch Number and Bin Number tabs are commented out of the template.

Issue Link, Edit Issue and Log Time are mock-ups. The Issue Link grid always shows the same sample row (Dummy Project, ABC-123). Clicking that row opens Edit Issue, a nine-screen Jira-style sub-application — Main Details, Planning, Attachment, Comment, Subtasks, Linked Issues, Activity, Worklog, Log Time — in which nothing is loaded or saved, and the Worklog grid carries a fixed sample row. Nothing typed there is stored.

Configuration

Before you can use it

WhatWhereWhy
Branch and locationOrganisationRequired on Main Details; CREATE stays disabled without them
A sales agent (employee)Employee MaintenanceRequired on Main Details
A currencyOrganisationRequired on Main Details
A customer entityCustomerEntity Id is required on the Account tab, and Credit Terms offers nothing until one is chosen
Document numbering for the inquiryOrganisationSupplies the number shown in the listing
ItemsDoc Item MaintenanceWhat Select Line Item → Search Item returns
Tax codesTax ConfigurationLine tax; the selector is hidden by HIDE_TAX_CONFIG_SELECTION
A default printable formatSettings → Printable Format Settings, or Branch Settings → Printable FormatExport as PDF needs one

No GL code is needed: this document posts nothing.

Applet settings

Settings live on the shared settings screen, Settings → Application Settings.

The settings menu has four entries: Application Settings (the shared screen), Default Selection, Printable Format Settings and Branch Settings. Personalization has one, Default Selection.

The shared settings screen and the applet’s model offer 99 keys for applet code internal_sales_inquiry_applet (re-counted 2026-10-04 from the field-configuration export plus the model). 36 are read by the applet’s code and the other 63 by nothing. The keys below are the ones that are both offered on the screen and read:

GroupKeysWhat they control
LayoutVERTICAL_ORIENTATIONSwitches every screen from tabs to expansion panels (unless the user’s personal orientation is HORIZONTAL)
Which panels openEXPAND_MAIN_DETAILS, EXPAND_ACCOUNT, EXPAND_LINE_ITEMS, EXPAND_DELIVERY_DETAILS, EXPAND_DEPARTMENT_HDR, EXPAND_ATTACHMENT, EXPAND_EXPORTIn panel mode, which sections start expanded
ButtonsHIDE_GENDOC_SAVE_BUTTON, SHOW_DOCUMENT_DELETE_BUTTONHide SAVE on the view screen; show the DELETE button (this one is opt-in — the control appears only when the setting is on; no permission overrides it)
Line grid and item formHIDE_QTY_BASE, HIDE_QTY_UOM, HIDE_UOM_TO_BASE_RATIO, HIDE_AMOUNT_TXN, HIDE_AMOUNT_NET_EXCL_TAX, HIDE_AMOUNT_STD_EXCL_TAX, HIDE_DISCOUNT_AMOUNT_EXCL_TAX, HIDE_UNIT_DISCOUNT, HIDE_UNIT_DISCOUNT_UOM_EXCL_TAX, and the eight HIDE_UNIT_PRICE_* keysHide individual quantity, price, discount and amount columns and fields
Line extrasHIDE_COSTING_DETAILS, HIDE_TAX_CONFIG_SELECTION, HIDE_WHT_CONFIG_SELECTION, HIDE_UNIT_PRICE_STD_PRICING_SCHEMEHide the Costing Details tab, the tax and withholding-tax selectors and the pricing-scheme picker

Each HIDE_* key above is paired with a SHOW_* client-side permission, and for this applet those permissions are seeded — see below — so a tenant-wide hide can genuinely be reopened per role.

Read at runtime with no control on the shared screen:

  • EXPAND_CONTRA — the Contra panel asks for this key, but the shared screen only offers EXPAND_MAIN_CONTRA. The Contra panel can therefore never be made to start expanded.
  • HIDE_DEPARTMENT_HDR_TAB — the panel list can hide the Department Hdr section with this key, but the shared screen does not offer its toggle for this applet.
  • PRINTABLE, DEFAULT_BRANCH, DEFAULT_LOCATION, DEFAULT_COMPANY, DEFAULT_LANGUAGE_CODE, DEFAULT_ORIENTATION, DEFAULT_TOGGLE_COLUMN — set on the other settings screens below.

Default Selection (applet-wide) renders two controls, Default Branch and Default Location, and saves DEFAULT_BRANCH, DEFAULT_LOCATION and DEFAULT_COMPANY (the company is derived from the branch). There is no control for the default language — the applet-wide default language cannot be set from here.

Personalization → Default Selection overrides those for one user and adds three more controls: Default Language (DEFAULT_LANGUAGE_CODE), Default Toggle Column (DEFAULT_TOGGLE_COLUMN, SINGLE or DOUBLE) and Default Tab Orientation (DEFAULT_ORIENTATION, HORIZONTAL or VERTICAL).

Branch Settings opens a branch listing; picking a branch opens a read-titled View Branch Settings screen with five tabs — Branch Details, Item Category Filter, Pricing Scheme, Printable Format and Default Settlement Method. The container’s own SAVE button is commented out; Branch Details, Item Category Filter, Printable Format and Default Settlement Method each carry their own SAVE, and Pricing Scheme is a listing with none. A Menu List tab exists in the template but is commented out.

Printable Format Settings manages the formats offered to Export as PDF.

Document behaviour settings

BehaviourGoverned byEffect
SAVE visible on the view screenHIDE_GENDOC_SAVE_BUTTONHides SAVE; the button is also disabled while Main Details is invalid
DELETE visibleSHOW_DOCUMENT_DELETE_BUTTON setting on, and posting status not FINALTwo-click confirm (CLICK AGAIN TO CONFIRM)
Fields locked after FINALnot configurableThe Main Details form is disabled, with Remarks re-enabled
FINAL from the listingnot configurableActs on the selection, skipping rows already FINAL

There is no approval flow, no workflow designer and no VOID on this document.

Settings in other applets that control this applet

SettingWhere it is setEffect here
Branch pricing scheme, item category filter, default settlement method, default printable formatThis applet’s own Branch Settings, per branchOverride the applet-wide equivalents for documents raised at that branch
The item recordDoc Item MaintenanceSearch Item offers product-and-service items only, and the price in its grid is the first base-unit price stored on the item record. A wrong price there is corrected on the item, not on the inquiry.
Credit terms on the customerCustomerCredit Terms offers only the terms held on the chosen customer’s own record. A customer with none leaves the list empty and the inquiry saves without terms, so whoever maintains customers adds the terms there, before the salesperson needs them.

Feature visibility and permissions

Twenty-three client-side permission codes are seeded for this applet and twenty-three are checked in code — they line up almost exactly:

  • Twenty-two SHOW_* counterparts to the HIDE_* line and pricing settings, plus SHOW_COSTING_DETAILS and SHOW_TRANSACTION_DATE (which unlocks the Transaction Date field — without it the date is fixed).
  • One code is checked but not seeded: EXCLUDE_ACCOUNT_CODE_ITEM_TYPE_AT_ITEM_SEARCH, which filters account-code item types out of the item search. No screen offers it for granting.
  • SHOW_QTY_BASE is seeded twice; the duplicate row is harmless but should be cleaned up.

Server-side, the applet uses the generic-document permissions TNT_API_DOC_INTERNAL_SALES_INQUIRY_CREATE_TGT_GUID, …_READ_…, …_UPDATE_… and …_DELETE_….

Fields

Main Details

The left column holds Branch, Transaction Date, Reference, Credit Terms, Sales Agent, Permit No, Sales Lead, Tracking ID and Due Date; the right column holds Location, Currency, CRM Contact and MemberCard; Remarks runs across the bottom. The form insists on four of them — Branch, Location, Sales Agent and Currency — and CREATE waits until all four are filled. The asterisks do not tell you which: Credit Terms is labelled with one and is optional, while Sales Agent carries none and is required (read from the code).

FieldRequiredWhat the screen does not tell you
BranchYesPicking it fills Currency with the branch’s currency and Location with the branch’s main location, if the branch has one, and sets the company behind the scenes. Pick the branch first, then change Location or Currency if this inquiry needs something else.
Sales AgentYesThe list is your employees, searchable by name or employee code. If the Sales Man box on the Main Details tab of this applet’s field settings names employee categories, only employees in those categories are offered. The listing shows the agent’s name as it is on the employee record today, looked up each time the listing loads. The Sales Agent box under Branch Settings → Branch Details saves a default onto the branch record itself, not into this applet, and this applet does not use it to fill a new inquiry — choose the agent every time.
Transaction Date—Editable only with the SHOW_TRANSACTION_DATE permission
Credit Terms—The list is empty until a customer is chosen on the Account tab — the hint under the box says Entity ID must be selected first — and then offers only the terms on that customer’s record. Choosing a different customer clears it. Choosing a term fills Due Date, worked out from the date settings stored on the term itself rather than counted from the Transaction Date, and changing the Transaction Date afterwards does not move it. That calculation is read from the code, not tried: on one draft, pick a term, compare Due Date with the date you expected and overwrite it if it is wrong.
Due Date—A follow-up date, typed or filled by Credit Terms. Nothing acts on it: the listing has no Due Date column and Advanced Search cannot filter on it, so no one is reminded. The follow-up belongs to the sales agent’s own calendar, and the sales manager’s check is to open the listing each week, look at the inquiries still in DRAFT by Transaction Date and ask about the old ones.
Reference, Remarks—The listing’s keyword search looks in both, as well as the document number, so the customer’s own enquiry number or a project code typed into Reference is how anyone finds the inquiry again. It does not look in Permit No or Tracking ID. Remarks is the one field that stays editable after FINAL. Convert leaves both empty on the receipt voucher it builds.
Sales Lead—Two values, Corporate or Non-Corporate: a label on the inquiry, not a link to a lead in CRM. A new inquiry starts as Corporate, and one saved with none shows Corporate when it is opened, so a Corporate inquiry may simply be one nobody changed. If you intend to count inquiries by it, agree first that the salesperson sets it on every one.
MemberCard—Opens Select Member, which lists loyalty members and searches card number, name and phone. Once a member is linked the screen can replace it but cannot remove it, and Convert does not carry it to the receipt voucher (the removal is read from the code, not tried). If the wrong member went on a draft, pick the right one; if no member should be linked, delete the draft where DELETE is enabled and raise it again, or say so in Remarks.
CRM Contact—Opens Select CRM Contact, which searches a contact’s name, phone, e-mail or ID number. It behaves like MemberCard: it can be replaced but not removed, and Convert drops it.

A Credit Limit entry exists in the field list but its template case is commented out, so no Credit Limit control renders. Group Discount and Group Discount Amount are likewise commented out.

Account

Three sub-tabs. Entity Details — Entity Id (required), Entity Name, Status, Entity Type, Identity Type, ID Number, Currency, GL Code, Description, Email, Phone Number, filled from the selected customer. Bill To and Ship To hold the two addresses, each with its own selection panel. A Create Customer panel lets you add a customer without leaving the applet.

Line items

Item Code, Item Name, UOM, UOM-to-base ratio, pricing scheme, the eight unit-price variants, Quantity Base, unit and amount discounts, tax and withholding-tax codes and Remarks — each hideable by its HIDE_* setting and re-showable by the matching permission. Costing Details and Pricing Details are separate tabs on the add-line panel.

Collection and Contra

Collection holds settlement lines against the inquiry — and these, not the item lines, are what the Convert action copies onto the receipt voucher. Contra holds offset lines.

Lifecycle and effects

Status (posting_status)MeaningAllowed next
empty / DRAFTSaved and editableFINAL, DELETE, or CONVERT
FINALLocked; only Remarks stays editableCONVERT (which deletes the inquiry — and from FINAL leaves a receipt voucher with no journal or cashbook line; see View / edit)

An inquiry posts nothing: it moves no money and no stock, so no journal is built, no GL code is needed, and no inventory transaction is written. There is no VOID — nothing in the applet voids an inquiry, and there is nothing posted to reverse.

FINAL is available from the view screen or from the listing’s bulk button. It is one-way: nothing in the applet moves a document back to draft.

CONVERT is the only other exit, and it removes the inquiry — see View / edit above.

Related applets

Troubleshooting

SymptomCauseFix
CREATE stays greyed outMain Details is invalid — Branch, Location, Sales Agent and Currency are all requiredFill all four
Credit Terms offers nothing, with the hint Entity ID must be selected firstNo customer has been chosen on the Account tab, or the chosen customer has no credit terms on its recordChoose the customer first; if the list is still empty, add the terms to the customer record
Transaction Date cannot be changedThe SHOW_TRANSACTION_DATE client-side permission is not grantedGrant it under Settings → Client-Side Permission
Export as CSV / DOCX / ZIP do nothingThose three buttons are hard-disabled in the template; only PDF is implementedUse Export as PDF
Export as PDF produces nothingNo default printable format is set for the applet or the branchSet one under Settings → Printable Format Settings, or Branch Settings → Printable Format
The inquiry disappeared after ConvertConvert creates the receipt voucher and then deletes the inquiry — that is what the on-screen warning meansExport the PDF first if you need a record
The receipt voucher created by Convert has no item linesConvert copies the Collection (settlement) lines, not the item linesAdd the items to the receipt voucher directly
Both an inquiry and a receipt voucher exist after ConvertThe receipt voucher was created but the inquiry delete failedDelete the inquiry manually
Everything on a line’s Issue Link tab is the same dummy rowThe grid is a mock-up with fixed sample data, and the Edit Issue screens behind it store nothingIgnore them.
The Contra panel never starts expanded in panel modeThe panel reads EXPAND_CONTRA; the settings screen only offers EXPAND_MAIN_CONTRANo workaround from the UI
No Department Hdr toggle on Application SettingsThe shared screen does not offer tab-hide toggles for this appletThe key keeps whatever value the tenant already holds
An item you expect is missing from Search ItemItem search filtering, possibly EXCLUDE_ACCOUNT_CODE_ITEM_TYPE_AT_ITEM_SEARCH — which is checked, but no screen offers it for granting, so in practice it stays offCheck the item in Doc Item Maintenance
DELETE is not offered on a draftThe SHOW_DOCUMENT_DELETE_BUTTON setting is off, or the document is already FINALSwitch the setting on; a FINAL inquiry cannot be deleted from the applet
The screen is a stack of panels instead of tabsVERTICAL_ORIENTATION is on for the tenant and the user’s personal Default Tab Orientation is not HORIZONTALSet Personalization → Default Selection → Default Tab Orientation to Horizontal

Related documentation

Last updated on