⚙️

Settings

Configure application-wide settings including company information, invoice headers, printing preferences, email/SMTP setup, FBR integration, theme, backup paths, and advanced options.
How to Open
Menu → System → Settings
Keyboard Shortcuts
F12 Save   F5 New/Clear   Esc Close
📝

How to Use

➕ Adding a New Setting

  1. Open Settings from the menu
  2. Fill in the required fields
  3. Add optional details as needed
  4. Press F12 or click Save
  5. Confirm when prompted

✏️ Editing an Existing Setting

  1. Type the name in the Search box on the left
  2. Select the record from the search results grid
  3. The form fields will load with the selected data
  4. Modify the fields you need to change
  5. 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

FieldValue
Namedfs_report — lowercase and underscores only. Type the same name in Template Name.
CategoryUtility
LanguageEnglish — enter en in Template Language.
HeaderDocument
BodyAssalam-o-Alaikum,
{{1}}
Thank you for your business.
⚠️
Template rules: The body must have exactly one variable — DFS sends one value, and a template with none or two fails with a parameter-count error. Meta also rejects a body that starts or ends with a variable, so keep text before and after {{1}}. Approval takes from minutes to a day; Test Connection does not check the template, so a wrong name shows up on the first send.

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

  1. 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.
  2. Template: in WhatsApp Manager → Message templates, create dfs_report as shown above and wait until it is Approved.
  3. 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.
  4. 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.
  5. 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.
ℹ️
API costs: Meta charges per conversation for Business API messages. If an API send fails, DFS offers to send through the WhatsApp app instead.
📋

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:

RulePriority
License status and company type both setHighest
License status onlyNext
Company type onlyNext
The Default blockLowest — 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

ButtonShortcutWhat it Does
🔍 SearchF2Opens the search panel to find an existing record by name.
💾 SaveF12Saves all changes. The system will ask for confirmation before saving.
❌ CloseEscCloses the Settings screen.
💡

Important Notes

⚠️
Admin Only: The Settings screen is typically restricted to administrator users. Changes affect all users on the system.
ℹ️
FBR Integration: To enable FBR POS integration, enter the API Key and Token provided by FBR. Contact your FBR representative for credentials.
💡
Email Setup: For Gmail, use an App Password instead of your regular password. See the "2-Step Verification Url" link on the form for setup instructions.
💡
Test Email: Click Test to send a test email and verify your SMTP configuration before saving.