Skip to main content

Categories & Types

This page covers the four classification masters that organize your stock and project data and carry custom fields:

  • Stock Categories and Stock Subcategories — classify your land and asset inventory.
  • Subproject Types — classify the kinds of subproject you build (Layout, Apartment, Villa…).
  • Unit Types — classify the saleable units within a subproject, mapped to subproject types.

They form two small dependency chains: a stock category must exist before its subcategories, and a subproject type must exist before the unit types that map to it.

All four masters support the Custom Fields system — the six field types (TEXT, TEXT_AREA, NUMBER, DATE, DROPDOWN, BOOLEAN), the immutable-type rule, and the soft-delete-on-removal behaviour described in the overview apply identically here.


Stock Categories

Where to find it: Masters → Stock Category.

A stock category is the top level of your inventory classification — for example Agricultural Land, Residential Plot, or Commercial Building.

Fields

FieldRequiredNotes
CodeAutoSystem-generated and read-only. Never entered by you and never changes on edit.
NameYesUnique within your organization (case-insensitive).
DescriptionNoFree text.
StatusYesActive or Inactive. Inactive categories cannot be chosen when creating new stock.
Custom FieldsNoDefine the attributes that every stock in this category should capture.

Behaviour

  • Code is auto-generated on creation and cannot be edited.
  • Deactivation is guarded: a category in use by existing stocks cannot be set to Inactive (you are blocked with a message). Deactivation otherwise requires a confirmation.
  • Deletion is guarded: a category referenced by any stock cannot be deleted. Unused categories are soft-deleted after confirmation.
  • The list supports search and a status filter.

Custom fields on a category

Use the Custom Fields section to add fields such as Survey Number (TEXT), Extent in Acres (NUMBER), or Soil Type (DROPDOWN with a fixed option list). Every stock created under this category will then prompt for these values. Remember: a field's type is fixed once saved — to change it, retire the field and add a new one.


Stock Subcategories

Where to find it: Masters → Stock Subcategory.

A subcategory is the second level of classification and belongs to exactly one stock category — for example, under Agricultural Land you might have Wet Land and Dry Land.

Fields

FieldRequiredNotes
CodeAutoSystem-generated, read-only, immutable.
NameYesUnique within its parent stock category (case-insensitive). The same name may be reused under a different category.
Stock CategoryYesThe parent category. Only Active categories can be selected.
DescriptionNoFree text.
StatusYesActive, Inactive, or Archived.
Custom FieldsNoSubcategory-specific attributes.

When you create a subcategory you must pick its parent category from a dropdown that lists only active categories. This is what enforces the "category before subcategory" dependency. A subcategory cannot exist on its own.

Status and lifecycle

  • Active — selectable when creating stock.
  • Inactive — not selectable for new stock, but stays visible on existing records.
  • Archived — hidden from the list by default (there is a Show Archived toggle) and fully disabled. Archiving a subcategory automatically inactivates all of its custom fields.

Deletion

A subcategory that is referenced anywhere cannot be hard-deleted; the system blocks the action and suggests you Archive it instead. Unreferenced subcategories may be deleted outright.


Subproject Types

Where to find it: Masters → Subproject Type.

A subproject type describes the kind of subproject you develop — common examples are Layout, Apartment, and Villa. The type drives which custom fields a subproject captures and (via unit types) which unit types are available within it.

Fields

FieldRequiredNotes
NameYesUnique within your organization (case-insensitive).
StatusYesActive / Inactive. Inactive types are hidden from new subproject creation but remain visible on existing subprojects.
Custom FieldsNoType-specific attributes that subprojects of this type will render.

Behaviour

  • The list supports search by name and sorting by name or status.
  • Choice-based (DROPDOWN) custom fields must have their options configured.
  • Deletion is guarded: a subproject type that is referenced by existing subprojects (or by unit types) cannot be deleted. Deleting a type never cascades into deleting subprojects.

Unit Types

Where to find it: Masters → Unit Type.

A unit type classifies the saleable units inside a subproject — for example 2BHK Flat, Corner Plot, or Shop. Crucially, every unit type must be mapped to one or more subproject types, which is how the system knows which unit types are valid within a given subproject.

Fields

FieldRequiredNotes
NameYesUnique within your organization (case-insensitive).
Subproject Type MappingYesAt least one subproject type must be mapped. Mapping values are pulled from the Subproject Type master.
StatusYesActive / Inactive. Defaults to Active.
Custom FieldsNoUnit-type-specific attributes that units will render.

How the mapping to subproject types works

The mapping is the heart of the unit type. When you create or edit a unit type, you select the subproject types it applies to from a dropdown sourced from the Subproject Type master (this is why subproject types must be configured first). The rule is enforced on save:

At least one mapping is mandatory. Saving without a mapping returns the error "Subproject Type Mapping is required."

Later, when a project manager adds units to a subproject of type Apartment, only the unit types mapped to Apartment appear as choices. This keeps unit selection relevant and prevents, say, a "Villa" unit type being used inside an apartment block.

Behaviour

  • The list shows the unit type name, a summary of its subproject-type mappings, status, and last updated time.
  • Custom field keys must be unique within the unit type.
  • Deletion is guarded: a unit type referenced by existing units cannot be deleted.

Quick comparison

Stock CategoryStock SubcategorySubproject TypeUnit Type
Auto codeYesYesNoNo
Parent / mappingStock CategorySubproject Type(s)
StatusesActive / InactiveActive / Inactive / ArchivedActive / InactiveActive / Inactive
Custom fieldsYesYesYesYes
Delete guardedYesYes (suggests Archive)YesYes