# Users

<p class="doc-lead">Users are login accounts for Freespace ERP. Create users, assign roles, link employees, and configure per-user defaults and data visibility on the User Settings form.</p>

<div class="doc-toc">
<p class="doc-toc-title">On this page</p>
<div class="doc-toc-section">
<span class="doc-toc-group-title">Getting started</span>
<div class="doc-toc-links">
<a href="#/settings/user-management?id=overview">Overview &amp; List View</a>
<a href="#/settings/user-management?id=quick-start">Quick Start</a>
<a href="#/settings/user-management?id=fields">User Fields</a>
</div>
</div>
<div class="doc-toc-section">
<span class="doc-toc-group-title">User Settings</span>
<div class="doc-toc-links">
<a href="#/settings/user-management?id=user-settings">User Settings</a>
<a href="#/settings/user-management?id=default-values">Defaults &amp; filters</a>
<a href="#/settings/user-management?id=employee-data-filters">Employee data filters</a>
<a href="#/settings/user-management?id=scenarios">Common setups</a>
</div>
</div>
<div class="doc-toc-section">
<span class="doc-toc-group-title">More</span>
<div class="doc-toc-links">
<a href="#/settings/user-management?id=actions">Actions</a>
<a href="#/settings/user-management?id=troubleshooting">Troubleshooting</a>
<a href="#/settings/user-management?id=faq">FAQ</a>
<a href="#/settings/user-management?id=related">Related</a>
</div>
</div>
</div>

<hr class="doc-section-divider">

<h2 id="overview">Overview &amp; List View</h2>

Go to <b>Settings → Users</b> from the left menu.

<!-- screenshot pending -->

<b>List columns</b>

| **Column** | **Description** |
|------------|-----------------|
| Id | User record ID. |
| Name | Display name. |
| Email | Login email. |
| Username | Alternate login name. |
| Role | Assigned user role (permissions). |
| Employee Id | Linked HR employee, if any. |
| Email Verified | Whether the user confirmed their email. |
| Status | Active or Suspended. |

<b>Quick filter tabs</b>

| **Tab** | **Shows** |
|---------|-----------|
| Active | Active users (default). |
| Suspended | Suspended users. |

<b>Advanced filters</b>

| **Filter** | **Description** |
|------------|-----------------|
| Status | Active or Suspended. |

<b>List actions</b>

| **Action** | **Description** |
|------------|-----------------|
| New | Create a user. |
| View | Read-only user profile. |
| Edit | Change user details, role, or open User Settings. |
| Delete | Remove users (multi-select supported). |

<hr class="doc-section-divider">

<h2 id="quick-start">Quick Start</h2>

<h3>1. Navigate</h3>
Go to <b>Settings → Users</b> and click <b>New</b>.

<h3>2. Create the user</h3>
Enter name, email, username, password, and assign a <b>Role</b>. Link an <b>Employee</b> when the user is a staff member.

<h3>3. Configure User Settings</h3>
After save, open <b>Settings</b> (gear) on the user to set defaults, Field Sale access, and data filters.

<h3>4. Save</h3>
Click <b>Save</b> on the user form and <b>Update</b> on User Settings.

<hr class="doc-section-divider">

<h2 id="fields">User Fields</h2>

| **Field** | **Description** |
|-----------|-----------------|
| Name * | Display name across the system. |
| Email * | Primary login and notification address. |
| Username | Optional login identifier. |
| Password | Set on create or via Change Password. |
| Role * | Determines module and action permissions. |
| Employee | Links attendance, payroll, and field-sale identity. |
| Status | Active users can log in; Suspended users cannot. |

<hr class="doc-section-divider">

<h2 id="user-settings">User Settings</h2>

Use this section after the user account is created. The user form stores login details; <b>User Settings</b> stores that user's defaults, restrictions, and data filters.

Open from <b>Users → Edit → Settings</b> (gear) or <b>My Profile → Settings</b> on the top bar.

<img src="settings/images/user-setting.webp" alt="User Settings form" loading="lazy">

<p><b>Use User Settings for</b></p>

| **Need** | **Use** |
|----------|---------|
| Control menus and actions | <a href="#/settings/user-role">User Role</a> |
| Set default center, branch, employee, payment mode | User Settings |
| Lock price, back-date, cancel, clone, or FOC sale | User Settings |
| Hide data outside branch, route, employee, or account | User Settings filters |
| Give one extra permission | <a href="#/settings/custom-access">Custom Access</a> |

<p><b>How it fits with roles</b></p>
<ul>
<li><b><a href="#/settings/user-role">Role</a></b> — what modules and actions the user can use.</li>
<li><b>User Settings</b> — defaults, locked fields, and which data they see. Cannot add permissions the role blocks.</li>
<li><b><a href="#/settings/custom-access">Custom Access</a></b> — one-off extra permission for a specific user.</li>
</ul>

<h3 id="access-control">Access Control</h3>

| **Field** | **Description** |
|-----------|-----------------|
| Has Field Sale App Access | Mobile app login. |
| Prevent previous date transaction entries | Blocks back-dated transaction entry. When enabled, configure the day window and/or from-date below. |
| Previous date entry allowed days | Rolling number of past days the user may enter (shown when prevent entry is on). Leave blank to skip the rolling window when a from-date is set. |
| Previous date entry allowed from | Earliest date allowed for new or edited transactions (shown when prevent entry is on). Dates before this are blocked. |
| Prevent cancelling previous date transactions | Blocks cancelling older transactions. When enabled, configure the cancel day window and/or from-date below. |
| Previous date cancel allowed days | Rolling number of past days the user may cancel (shown when prevent cancel is on). Leave blank to skip the rolling window when a from-date is set. |
| Previous date cancel allowed from | Earliest transaction date that may still be cancelled (shown when prevent cancel is on). |

<p><b>How entry and cancel date limits work</b></p>
<ul>
<li>If <b>allowed days</b> is set, the transaction date must fall within that many days before today.</li>
<li>If <b>allowed from</b> is set, the transaction date must be on or after that date.</li>
<li>If both are set, both rules apply.</li>
<li>If prevent is on but both fields are blank, only <b>today's date</b> is allowed (legacy behaviour).</li>
<li>If prevent is on, allowed days is blank, and only <b>allowed from</b> is set, only the from-date rule applies — older dates within the from-date range are allowed.</li>
</ul>

<p><i>Example:</i> Web cashier — Field Sale off; prevent previous date entry with allowed days blank and <b>Previous date entry allowed from</b> set to the start of the open period; prevent cancel with allowed days = 7.</p>

<h3 id="transaction-restrictions">Transaction Restrictions</h3>

| **Field** | **Description** |
|-----------|-----------------|
| Disable price / discount / rounding edit | User cannot change prices or discounts. |
| Prevent FOC sale | Blocks zero-price sale lines. |

<p><i>Example:</i> Counter staff — enable both; set Sale Type default to Retail (Disabled).</p>

<h3 id="advanced-options">Advanced Options</h3>

| **Field** | **Description** |
|-----------|-----------------|
| Hide item name | Hides item name on line grids (code still shows). |
| Hide clone | Removes Clone on transactions. |
| Disable inventoryless CRN/DEN | Blocks credit/debit notes without inventory. |

<h3 id="field-sale-app">Field Sale App</h3>

| **Field** | **Description** |
|-----------|-----------------|
| Geolocation | GPS tracking on mobile (Android). |
| Auto location / check-in on transaction | Saves location or check-in on invoice/receipt. |
| Allow sale type / employee / branch editing | User can change these on mobile. |

<p><i>Example:</i> Van salesman — app access on, geolocation on, employee editing off, set Employee + Inventory Center defaults. See <a href="#/field-sale-app/settings">Field Sale App Setup</a>.</p>

<h3 id="default-values">Defaults, visibility &amp; filters</h3>

Each field row has three columns: <b>Default</b> (pre-filled value), <b>Visibility</b>, and <b>Data filter</b> (limits the dropdown).

<p><b>Visibility</b></p>

| **Option** | **Meaning** |
|------------|-------------|
| Editable | Shown; user can change it. |
| Hide | Hidden; default still applies. |
| Disabled | Shown but locked. |

<h4 id="center-defaults">Centers</h4>

<p>Each center type is set separately. They can be the same place or different — e.g. ship from warehouse, print bill with shop address.</p>

| **Field** | **Used for** |
|-----------|--------------|
| Inventory Center | Stock out on sales and inventory docs; Field Sale stock list and Day Report. |
| Billing Center | Address on printed sale invoices and orders. |
| Sale Return Center | Where returns are received (credit notes). Uses Inventory Center if blank. |
| Production Center | WIP on production docs (Production module only; web only). |

<p>Field Sale App uses Inventory Center, Sale Return Center, Sale Return Reason, and Billing Center among the defaults below.</p>

<p><b>Other common defaults</b></p>

| **Field** | **Used for** |
|-----------|--------------|
| Sale Return Reason | Pre-fills <a href="#/sales/sale-return-reason">Return Reason</a> on new Credit Notes and Sale Return Orders (web and Field Sale App). With <b>Data filter</b> on, lists are limited to that reason. If the reason has <b>Is Return To Return Center</b>, inventory uses Sale Return Center. |
| Sale Type / Purchase Type | Document type on new bills. |
| Payment Mode | Cash or credit default. |
| Branch | Branch on transactions (multi-branch). |
| Cash / Bank Account | Payment account default. |
| Employee | Salesman on transactions and reports. |
| Customer / Supplier / Brand | Limits or pre-fills master pickers. |

<p><i>Example:</i> Branch cashier — Inventory Center and Cash Account = Disabled; Billing Center and Branch = Hide.</p>

<h3 id="data-filters">Data filters (bottom of form)</h3>

<p>Multi-select lists that hide data outside the selection — branches, brands, cash/bank accounts, employees, departments, groups, modules.</p>

<p>Filters hide data; they do not add permissions. Use <a href="#/settings/custom-access">Custom Access</a> for extra actions.</p>

<p><i>Examples:</i> Sales manager — filter Employees to their team. Cashier — filter cash accounts to one ledger. Branch user — filter Branches to Branch A.</p>

<h4 id="employee-data-filters">Advanced employee data filters</h4>

<p>Employee filters control <b>which employees a user can see and act on</b> — in pickers, lists, and reports such as Pay Run, Payslip, Attendance, and Expense Claim. You can filter by individual employees, by department, or by employee group.</p>

<p>Each row pairs an employee selection with a <b>module</b>, so the same user can have different employee access per module.</p>

| **Filter** | **What it does** |
|------------|------------------|
| Employees | Limits to the selected employees only. |
| Departments | Limits to employees in the selected departments. |
| Employee Groups | Limits to employees in the selected <a href="#/hr/employee-group">groups</a> (e.g. Junior Staff, Management). |
| Module | The module the filter applies to (e.g. Payroll, HRMS). Leave blank to apply everywhere. |

<p><b>With module vs without module</b></p>
<ul>
<li><b>With module</b> — the filter applies only inside that module. Example: a Payroll filter limits visible employees on Pay Run and Payslip, but the same user still sees all employees in HRMS attendance.</li>
<li><b>Without module (blank)</b> — the filter applies across every module the user opens.</li>
</ul>

<p>If no employee filter is set, the user sees all employees their role allows.</p>

<p><b>Use cases</b></p>

| **User** | **Filter setup** | **Result** |
|----------|------------------|------------|
| Junior accountant | Employee Group = <b>Junior Staff</b>, Module = <b>Payroll</b> | Can create and view pay runs and payslips for junior-level employees only; senior and director payroll is hidden. |
| Senior accountant | Employee Group = <b>Management + Directors</b>, Module = <b>Payroll</b> | Sees and processes payslips for top-level employees and directors only. |
| Department payroll clerk | Department = <b>Production</b>, Module = <b>Payroll</b> | Pay Run and payroll reports show Production staff only. |
| HR officer (attendance) | Department = <b>Sales, Support</b>, Module = <b>HRMS</b> | Edits attendance and leave for those departments; payroll figures stay hidden. |
| Team lead | Employees = their 5 reports, Module = blank | Sees only their team across all modules (attendance, expense claims, reports). |
| Company-wide auditor | No employee filter | Sees every employee the role allows. |

<p>Tip: keep payroll separated by seniority by tagging employees with an <a href="#/hr/employee-group">Employee Group</a> (e.g. Junior Staff vs Management), then filter each accountant's Payroll module to the matching group.</p>

<hr class="doc-section-divider">

<h2 id="scenarios">Common setups</h2>

<p><b>Field salesman</b> — Field Sale role; app access on; defaults: van Inventory Center, linked Employee, van Cash Account; optional customer/route filter.</p>

<p><b>Branch cashier</b> — Sales role; app access off; prevent back-dating; lock price/discount; defaults: branch Inventory Center + counter Cash Account (Disabled).</p>

<p><b>Read-only auditor</b> — View-only role with Reports; no User Settings restrictions needed.</p>

<p><b>Sales supervisor (two branches)</b> — Branch filter = both branches; default Branch = primary (Editable) for new bills.</p>

<hr class="doc-section-divider">

<h2 id="actions">Actions</h2>

| **Action** | **Description** |
|------------|-----------------|
| New / Edit / Delete | Standard list CRUD on users. |
| Settings (gear) | Opens User Settings for the selected user. |
| Update / Reset / Cancel | On User Settings form. |

<hr class="doc-section-divider">

<h2 id="troubleshooting">Troubleshooting</h2>

| **Problem** | **Check** |
|-------------|-----------|
| Cannot see a customer | Customer filter, route, zone, or branch filter |
| Cannot back-date or cancel old bills | Prevent previous date transaction entries / Prevent cancelling previous date transactions — check allowed days and allowed from |
| Cannot edit price or discount | Disable price / discount / rounding edit |
| No Clone button | Hide clone |
| Field Sale — no stock or login fails | Field Sale access, Inventory Center default, role report permissions |
| Day Report — missing employee | Link Employee on user form; set Employee default |
| Menu missing after role change | User must log out and back in |
| Need extra Approve permission | <a href="#/settings/custom-access">Custom Access</a>, not User Settings |

<hr class="doc-section-divider">

<h2 id="faq">FAQ</h2>

<p><b>How do Previous date entry allowed from and allowed days work together?</b> Both can be used at once. Allowed days is a rolling window from today; allowed from is a fixed earliest date. With only a from-date and blank allowed days, dates on or after the from-date are allowed. With prevent on and both blank, only today is allowed.</p>

<p><b>Users vs My Profile?</b> <b>Users</b> is for admins. <a href="#/settings/user-profile">My Profile</a> is your own account on the top bar.</p>

<p><b>Hide vs Disabled?</b> <b>Hide</b> = field not shown, default still applies. <b>Disabled</b> = shown but locked.</p>

<p><b>Inventory Center vs Billing Center?</b> Inventory Center = where stock moves from. Billing Center = address on the printed bill. They can be different.</p>

<p><b>Reset password?</b> Use reset on the user record — email is sent when mail is configured.</p>

<p><b>Field Sale App access?</b> Turn on under Access Control; set Employee + Inventory Center defaults. See <a href="#/field-sale-app/settings">Field Sale App Setup</a>.</p>

<p><b>Can User Settings add Approve?</b> No — use <a href="#/settings/custom-access">Custom Access</a> or change the <a href="#/settings/user-role">Role</a>.</p>

<p><b>How do I let an accountant see only some employees' payslips?</b> Add an employee data filter with <b>Module = Payroll</b> and select the employees, department, or <a href="#/hr/employee-group">group</a>. Junior accountant → Junior Staff group; senior accountant → Management group. See <a href="#/settings/user-management?id=employee-data-filters">Advanced employee data filters</a>.</p>

<p><b>What does the module column on an employee filter do?</b> It scopes the filter to one module. With a module set, the limit applies only there (e.g. Payroll); left blank, it applies everywhere.</p>

<p><b>Web visibility on mobile?</b> No — Field Sale uses its own toggles and defaults. See <a href="#/field-sale-app/settings">Field Sale user defaults</a>.</p>

<hr class="doc-section-divider">

<h2 id="related">Related Topics</h2>

<ul>
<li><a href="#/settings/user-role">User Roles</a></li>
<li><a href="#/settings/custom-access">Custom Access</a></li>
<li><a href="#/settings/user-profile">My Profile</a></li>
<li><a href="#/field-sale-app/settings">Field Sale App Setup</a></li>
</ul>
