Settings
How to Use
➕ Adding a New Setting
- Open Settings from the menu
- Fill in the required fields
- Add optional details as needed
- Press F12 or click Save
- Confirm when prompted
✏️ Editing an Existing Setting
- Type the name in the Search box on the left
- Select the record from the search results grid
- The form fields will load with the selected data
- Modify the fields you need to change
- Press F12 or click Save
Profile Tab
Address Optional
Company address displayed on invoices and reports.
Heading 1 Optional
Primary heading line for invoice printouts.
Heading 2 Optional
Secondary heading line for invoice printouts.
NTN Optional
National Tax Number for the distributor. Required for tax compliance.
STRN Optional
Sales Tax Registration Number.
DSL Optional
Distributor Sale License number. Available to every report through the shared report header, alongside NTN and STRN.
Contact 1 / Contact 2 Optional
Phone numbers displayed on printed documents.
City Optional
Distributor city, printed on documents alongside the headings.
Signature Optional
Digital signature text or label for printed invoices.
Logo Optional
Company logo image. Click the box to browse for a picture.
Logo Print Checkbox
Include the logo on printed documents.
FBR API Key Optional
API key for Federal Board of Revenue (FBR) POS integration.
FBR Token Optional
Authentication token for FBR POS integration.
Invoice Tab
Invoice Note Optional
Free text note printed on invoices.
Warranty Optional
Warranty terms text printed on invoices when Warranty mode is enabled.
Invoice Limit Optional
Maximum number of line items allowed per invoice.
Thermal Printer Optional
Configure thermal/POS printer for receipt printing. Click Browse to select.
Mode Optional
Order entry mode — Bookingman, Customer, or Order.
Filer Rate Optional
WHT rate for filer customers.
Non-Filer Rate Optional
WHT rate for non-filer customers (typically higher than filer rate).
No Stock Check Checkbox
Allow selling items even when stock is zero or insufficient.
Footer Checkbox
Include footer section on printed invoices.
Auto Assign Checkbox
Automatically assign new invoices to the booking man who created them.
Product Search Checkbox
Enable the product search popup when adding items to invoices.
Invoice Receipt Checkbox
Print a separate receipt slip along with each invoice.
Other Tab
Theme Optional
Select the application UI theme (color scheme).
Font Size Optional
Default font size for printed reports and invoices.
Stock Expiry Days Optional
0 to 180. On every start, batches with stock expiring within this many days are marked unsaleable. 0 marks only stock that has already expired. Lowering the number does not make stock saleable again.
Report Zoom Optional
Default zoom level for the report viewer.
Datalink Path Optional
Path to the Datalink shared resources folder for multi-station setup.
Receipt on Customer Checkbox
Print receipt under customer name instead of invoice-level receipts.
Lookup Search Starts With Checkbox
When checked, dropdown lookups (banks, towns, groups, booking men, companies, reps, etc.) match by name only, from the beginning of the name, and the ID column is hidden from the dropdown list. When unchecked, they match by exact ID or by name containing the typed text. Customer and product searches always match by ID or containing text, regardless of this setting.
Cascade Deactivate Sub Setups Checkbox
Controls what happens when you deactivate a setup record that still has active records beneath it — a town with sub towns or customers, a company with groups, products or representatives, a group with representatives or products, a role with user profiles.
Unchecked (default): the save is refused and a message reports how many records are blocking it, grouped by kind — for example "KARACHI — 3 active Sub Towns". You deactivate those records first, then the parent.
Checked: the same counts are shown as a question — "Do you want to deactivate them as well?" — and answering Yes deactivates the parent and everything under it in one step. The answer defaults to No.
Leave this off unless you regularly retire whole areas or product lines. A confirmed cascade is wide and cannot be undone: the system does not record which records were already inactive beforehand, so reactivating the parent will not restore the previous state.
This setting never applies to stock. A product, group, or company that still holds stock is always refused, whether this box is checked or not — inventory is never written off as a side effect of a setup change. Clear or transfer the stock first.
Backup Checkbox
Enable automatic database backup. Requires a valid backup path.
Backup Path Optional
Folder path for automatic database backups. Click Browse to select.
Price Sync Checkbox
Synchronize product prices from a central server.
Email Tab
Email Optional
SMTP email address for sending automated emails (e.g., reports, notifications).
Password Optional
SMTP email password or app-specific password.
Host Optional
SMTP server hostname (e.g., smtp.gmail.com).
Port Optional
SMTP server port (e.g., 587 for TLS).
SSL Checkbox
Enable SSL/TLS encryption for SMTP connections.
WhatsApp Tab
Decides how the Share via WhatsApp button (Reprint Invoice → Share) delivers the PDF. Nothing else in DFS changes with this tab.
Mode Required
Free (WhatsApp app) — the default. DFS opens the recipient's chat in WhatsApp Desktop (WhatsApp Web if the app is not installed) and copies the PDF; press Ctrl+V, then Enter to send. No setup, no cost. WhatsApp Business API — DFS sends the PDF itself, with no step in WhatsApp. Needs the fields below.
Country Code Optional
Added to local numbers such as 0300-1234567. Defaults to 92.
Phone Number ID API only
The sender number's ID from Meta WhatsApp Manager (not the phone number itself).
Access Token API only
A permanent system-user token from Meta Business. Stored encrypted.
Template Name / Template Language API only
The name and language code of a message template approved in Meta WhatsApp Manager. Meta only lets a business start a conversation with an approved template, so every API send uses it: DFS puts the PDF in the template's Document header and the popup's Message into the body variable {{1}} (line breaks become " | "). Language defaults to en and must match the template's language.
Template to create in Meta WhatsApp Manager
| Field | Value |
|---|---|
| Name | dfs_report — lowercase and underscores only. Type the same name in Template Name. |
| Category | Utility |
| Language | English — enter en in Template Language. |
| Header | Document |
| Body | Assalam-o-Alaikum, {{1}} Thank you for your business. |
Test Connection Button
Checks the Phone Number ID and Access Token with Meta and shows the verified business name. It sends no message.
Setting up the Business API
- Test for free: at developers.facebook.com create an app of type Business with the Connect with customers through WhatsApp use case. Its API Setup page gives a test sender number, its Phone number ID and a 24-hour access token. Add your own mobile to the To list; the test number only delivers to numbers on that list.
- Template: in WhatsApp Manager → Message templates, create dfs_report as shown above and wait until it is Approved.
- DFS: enter the Phone Number ID, Access Token, Template Name and Language here, press Test Connection, then Save. Share an invoice to your own number to prove it.
- Permanent token: in Business Settings → System users, add an Admin system user, assign it the app and the WhatsApp account, and generate a token that never expires with the whatsapp_business_messaging and whatsapp_business_management permissions.
- Go live: in WhatsApp Manager → Phone numbers, add the business number (it must not be in use in the WhatsApp app), set a display name, add a payment method and complete Business Verification. Then put the new number's Phone Number ID here.
Print Rules Tab
This tab decides which template a sale invoice prints on, and whether the alert, heading and warranty options are switched on. It replaces the old licence grid, which could only vary these by customer licence status. Rules can now also depend on the company type — Promotion or Trading, set per company in Company Setup.
Default
The block at the top of the tab. It applies to every invoice that no override below matches, so there is always a usable answer. It cannot be deleted.
Overrides
Each row is an exception to the default. Leave License Status or Company Type as (ANY) to match anything in that column. Use Add Rule to add one, and the delete icon at the end of a row to remove it. Most setups need only one or two rows — you do not need a row for every combination.
Which rule wins
The most specific matching rule wins:
| Rule | Priority |
|---|---|
| License status and company type both set | Highest |
| License status only | Next |
| Company type only | Next |
| The Default block | Lowest — used when nothing else matches |
Two rules cannot share the same combination; saving one reports the conflict and saves nothing. A rule left as (ANY) in both columns matches every invoice, which is exactly what the Default block does — its values are saved as the Default instead of being stored as a separate rule.
How company type is decided
It comes from the products already on the invoice. If every line belongs to Trading companies the invoice counts as Trading; if every line is Promotion it counts as Promotion. An invoice with no lines yet, or one mixing both types, matches only rules whose Company Type is (ANY).
Note: because the type is read from the lines, adding or removing a product can change which rule applies. When that happens the alert, heading, warranty and template are all re-read from the winning rule — including a template you had selected by hand. Set the template last, after the invoice lines are complete.
Sale returns are not affected by company type. A return resolves its heading, warranty and print template from the customer's licence status alone.
Buttons
| Button | Shortcut | What it Does |
|---|---|---|
| 🔍 Search | F2 | Opens the search panel to find an existing record by name. |
| 💾 Save | F12 | Saves all changes. The system will ask for confirmation before saving. |
| ❌ Close | Esc | Closes the Settings screen. |