---
title: Utilities
order: 6
updated: 2026-07-12
---

# Utilities

*Utilities* is one home for the shared reference lists your firm reuses everywhere — *Manufacturers* (brands/makes), *Product Units* (units of measure), and *Warehouses* (godowns). These used to be scattered: manufacturers were buried behind a *Manage Manufacturers* button inside *Suppliers*, product units behind a *Manage Units* button inside *Products*, and warehouses had their own sidebar entry. They now live together on one screen with secondary tabs, so there is a single, predictable place to maintain them. Nothing about how each list works changed — only where you find it.

Each list is firm-wide: everyone in the firm shares the same manufacturers, units, and warehouses, and a change one person makes is what the next person sees.

## Open Utilities

Open *Data Entry* in the sidebar and click *Utilities*. The page opens on the first tab you have permission to see.

Which tabs appear depends on your permissions:

- *Manufacturers* — shown to a firm administrator, or to anyone with *Edit Product Head* (`database.editProductHead`).
- *Product Units* — shown to a firm administrator, or to anyone with *Edit Product Head* (`database.editProductHead`).
- *Warehouses* — shown to a firm administrator, or to anyone with any one of *CRUD Godowns* (`inventory.crudGodown`), *Manage Stock in Godowns* (`inventory.manageGodown`), *CRUD Rooms* (`inventory.crudRoom`), or *Manage Stock in Rooms* (`inventory.manageRoom`).

Only the active tab's list is loaded, so opening *Utilities* never pulls all three lists at once. If you have access to none of them, the page reads *You don't have access to any utilities.* and there is nothing to do here.

## Manufacturers

Manufacturers — also called *makes* — are the brands behind the products you sell or source (for example `Siemens`, `ABB`, `Schneider`). Maintaining the list lets you tag suppliers with the brands they carry and shortlist them faster during procurement. The tab header shows a live count of how many makes are loaded (with a `+` while more remain to scroll in). For the standalone walkthrough see [Manufacturers](/docs/records/manufacturers).

### Add a manufacturer

Click *+ Add Manufacturer* (top-right). The *Add Manufacturer* form opens with a single *Manufacturer Name* field.

- Type the name and press *Add* (or hit `Enter`). Press `Escape` to close without saving.
- *Add* stays disabled until the field has non-blank text; leading/trailing spaces are trimmed before saving.
- The server also rejects a blank name, so an empty make can never be created even by a forged request.

There is no separate description or code — a make is just a name.

### Find a manufacturer

Use the *Search manufacturers…* box. Typing runs a firm-wide search after a short pause (about `350 ms` after you stop typing) and shows up to `30` matches. Clearing the box returns to the full scrolling list. While a search is active the infinite-scroll list is paused — clear the search to load more.

### Edit (rename) a manufacturer

Each row has an *Edit* button that opens *Edit Manufacturer*. Change the name and press *Update*.

Because a make's name is shown on every supplier and product where it is referenced, saving a new name first pops a *Confirm Update* step:

> Renaming "*old name*" to "*new name*" will update this manufacturer name across all associated enquiries and suppliers. This action cannot be undone.

Press *Confirm Update* to apply, or *Go Back* to return to the edit form without changing anything. The rename takes effect immediately across the firm.

### Documents

Each row has a *Documents* button that opens the attachments screen for that manufacturer, where you can upload and manage files attached to the brand (for example an authorised-dealer certificate or a datasheet pack). See [Manufacturers](/docs/records/manufacturers) for the surrounding detail.

### Delete a manufacturer

Each row has a *Delete* button. It asks *Delete Manufacturer* — *Are you sure you want to delete "name"? This action cannot be undone.* — with *Cancel* and *Delete*.

Deletion is guarded server-side. It requires the *Edit Product Head* permission, and it is **blocked while the make is still referenced anywhere** — not just on suppliers and enquiries, but on product codes, product heads' allowed-makes, stock transfers, conversions, deliveries, vendor quotation lines, and more. If any reference exists, the delete is held back and the *Where Is This Used?* window opens listing every place that still depends on the make; resolve those first, then try again. See [Deleting records safely](/docs/records/deleting-records).

## Product Units

Product units are the units of measure used across your catalogue — for example *Kilogram* (`kg`) or *Metre* (`m`). Each unit has two parts:

- *Display Name* — the readable name, e.g. `Kilogram`.
- *Shortform* — the compact symbol printed on documents and tables, e.g. `kg`.

The whole list loads at once (there is no paging here), sorted as stored. Units are picked when adding or editing a product head, product code, or enquiry line — see [Products](/docs/records/products) and [Product codes](/docs/records/product-codes).

### Add a unit

Click *Add Unit*. The form has *Display Name* and *Shortform*; both are required and *Add Unit* stays disabled until both are filled. Values are trimmed before saving.

The **shortform must be unique** across the firm, checked case-insensitively — adding a second unit whose shortform matches an existing one (e.g. a second `kg`) is rejected with *Unit with shortform "…" already exists.* Display names are **not** forced unique, so two units may share a display name as long as their shortforms differ. The server re-checks this uniqueness, so a forged request cannot slip a duplicate through.

Adding, editing, and deleting units all require the *Edit Product Head* permission (`database.editProductHead`) server-side, in addition to the tab only appearing for holders of that permission.

### Edit a unit

Each row's *Edit* button opens the edit form pre-filled with the current *Display Name* and *Shortform*. Change either and press *Update*, or *Cancel* to discard. Changing the shortform re-runs the same case-insensitive uniqueness check (excluding the unit itself); if the new shortform collides with another unit it is rejected.

### Delete a unit

Each row's *Delete* button asks *Delete Unit* — *Are you sure you want to delete "name"? This action cannot be undone. The unit must be removed from all product heads, product codes, and enquiries first.* — with *Cancel* and *Delete*.

Like manufacturers, deletion is **blocked while the unit is still referenced** — across product heads, product codes, enquiries, orders, purchase orders, and stock-movement line items. If any reference exists the *Where Is This Used?* window opens with the full list; clear those references, then delete. See [Deleting records safely](/docs/records/deleting-records).

## Warehouses

A warehouse — labelled *Godown* on the buttons and in the system (the local term for a store) — is a physical place where you keep stock. This tab lists your godowns, lets you search them, manage the rooms inside each, generate QR codes, and (with the right permission) add, rename, and delete them. For the full room-and-rack walkthrough see [Warehouses](/docs/records/warehouses) and [Warehouse rooms](/docs/records/warehouse-rooms).

Each godown row shows:

- The godown *name* and, underneath, its *description* if one was set.
- A *Structure* count — how many `rooms` and `racks` it contains (the two-level hierarchy is godown → rooms → racks).
- A *Generate QR* button and a *Manage Rooms* button.
- If you can create godowns, an *Edit* button and a delete (trash) icon on the right.

The header shows a chip with the total godown count, a *Bulk QR* button (only when at least one godown exists), and an *Add Godown* button (only when you can create).

### Who can add, edit, or delete a godown

The *Add Godown*, *Edit*, and delete controls appear only for a firm administrator, or for a user who holds *CRUD Godowns* (`inventory.crudGodown`) **with a godown scope of `all`**. A user who only has *Manage Stock in Godowns* / *Manage Stock in Rooms* still sees the *Warehouses* tab and can search, view structure, open rooms, and generate QR codes — but the create/edit/delete controls stay hidden. The server enforces the same rule, so those actions are rejected for anyone without admin or `all`-scope CRUD rights even if the request is forged.

### Add a godown

Click *Add Godown*. The form has:

- *Name* (required) — must be non-blank. Godown names are unique within the firm, checked case-insensitively, so `Main Warehouse` and `main warehouse` count as the same and the second is rejected with *A godown named "…" already exists*.
- *Description* (optional) — free text; any HTML is sanitised server-side before it is stored.

Press *Create Godown* to save. The new godown appears in the list with `0 rooms` and `0 racks` until you add rooms to it.

### Find a godown

Use the *Search godowns…* box. Like the manufacturers search it runs after a short pause and returns up to `30` matches; clear it to return to the full list.

### Manage rooms

Each row's *Manage Rooms* button opens the rooms screen for that godown, where you add rooms and, inside them, racks. See [Warehouse rooms](/docs/records/warehouse-rooms) for that flow.

### Edit or delete a godown

*Edit* reopens the name/description form (the same uniqueness and sanitisation rules apply). The delete (trash) icon asks *Delete "name"?* with a single *Delete* action.

Deleting a godown is guarded in two stages:

1. **Rooms first.** If the godown still contains any rooms, the delete is refused and a plain warning toast tells you to remove the rooms first — the room deletions each cascade to their racks. (This does not open the *Where Is This Used?* window; it is a simple "empty it first" guard.)
2. **Historical references.** Even when empty, a godown that is referenced by past stock movements (arrivals, deliveries, transfers, adjustments, conversions) cannot be deleted; the *Where Is This Used?* window opens with the breakdown. See [Deleting records safely](/docs/records/deleting-records).

### Generate QR codes

*Generate QR* on a row opens the QR modal for that single godown; *Bulk QR* in the header opens it preloaded with every godown in the list. Each code encodes the firm, the location type, and the location's ID, so scanning it with the Intigra mobile app jumps straight to that godown's stock. The codes are rendered in black on white with the Intigra logo in the centre and high error-correction so they stay scannable even if the logo covers part of them.

The modal offers two controls and three export buttons:

- *QR Size (inches)* — the printed size of each code. Range `0.5`–`8`, step `0.25`, default `2`.
- *Paper Size (PDF)* — the sheet the PDF is laid out on: `A4`, `A4 Half`, `A4 Quarter`, `Letter`, or `Custom`. This only affects the *PDF* export; *PNG* and *SVG* ignore it.
- *PNG* — downloads a single high-resolution image (rendered at `300` DPI) of the previewed code.
- *SVG* — downloads a single scalable vector of the previewed code.
- *PDF* — lays codes out as labelled tiles (name above, location type below) and, in a bulk export, automatically fits as many per sheet as the chosen paper and QR size allow, adding pages as needed.

Because *PNG* and *SVG* each export only the one previewed code, use *PDF* when you want every godown from a *Bulk QR* on one document. QR generation works the same in the desktop app and the web app.

## Common questions

### Where did the *Manage Manufacturers* and *Manage Units* buttons go?

They moved. Manufacturers used to open as a pop-up from inside *Suppliers*, and product units from inside *Products*. Both now have their own tabs here under *Utilities*. How they work is unchanged — only the location is different.

### Why was Warehouses moved under Utilities?

To keep the sidebar tidy and group all the firm's shared reference lists in one predictable place. Warehouses behave exactly as before; they are now the third tab on this screen.

### Why can't I see all three tabs?

Each tab is permission-gated. *Manufacturers* and *Product Units* need *Edit Product Head*; *Warehouses* needs any godown/room permission (CRUD or stock-management). A firm administrator sees all three. If you hold none of these, the page says you have no utilities access.

### I can see the Warehouses tab but there is no *Add Godown* button — why?

Adding, renaming, and deleting godowns need admin rights or *CRUD Godowns* with an `all` scope. Managing *stock inside* godowns (a different permission) lets you view and open warehouses but not create or delete them, so the create/edit/delete controls stay hidden for you.

### It won't let me delete a manufacturer, unit, or godown.

The record is still in use. The app blocks the delete and opens the *Where Is This Used?* window (for a godown that still holds rooms, it shows a plain "remove rooms first" toast instead). Follow the list, clear each reference, then delete. See [Deleting records safely](/docs/records/deleting-records).

### Can I have two units called the same thing?

Two units can share a *Display Name*, but the *Shortform* must be unique across the firm (compared case-insensitively). Adding or editing a unit to a shortform that already exists is rejected.

### Does renaming a manufacturer change it everywhere?

Yes — that is why renaming shows a *Confirm Update* step first. The new name reflects on every supplier and product where the make is referenced, immediately after you confirm.

### The QR modal doesn't have the styling options I expected.

The QR modal is deliberately simple: you choose the *QR Size* and, for PDF output, the *Paper Size*, then export as PNG, SVG, or PDF. The dot style, centred logo, and colours are fixed so every code scans reliably.
