PRODUCT UNIT OF MEASUREMENT
📏 Technical Specification: Product Unit of Measurement (PUM)
📋 Feature Overview
🛠️ Technical Implementation
A. Permissions & Access Control
Note: Access is controlled via
PermissionGuard and code-level checks.| Scope | Permission Code | Description & Page Usage |
|---|---|---|
| Menu Visibility | PRODUCT_UNIT_OF_MEASUREMENT.MENU |
Sidebar menu visibility. |
| Page Access | PRODUCT_UNIT_OF_MEASUREMENT.LISTING |
Access to listing route.\product-unit-of-measurement |
| View Access | PRODUCT_UNIT_OF_MEASUREMENT.VIEW |
Controls visibility of action buttons (Edit).\product-unit-of-measurement |
| Create Action | PRODUCT_UNIT_OF_MEASUREMENT.UPDATE |
Visibility of the + Add button.\product-unit-of-measurement |
| Delete Action | PRODUCT_UNIT_OF_MEASUREMENT.DELETE |
Visibility of the Delete 🗑️ icon.\product-unit-of-measurement |
| Edit/Save Action | PRODUCT_UNIT_OF_MEASUREMENT.UPDATE |
Ability to save changes (Create/Update).\add-product-unit-of-measurement |
B. API Interaction
Base URL:
${environment.baseApiUrl}1. Retrieve PUM List
\product-unit-of-measurementEndpoint
/productUnitOfMeasurements/getQuery
Method
POST
Key Params
join: productfilter: Dynamic filters for unitOfMeasurement and productId.2. Delete PUM
\product-unit-of-measurementEndpoint
/productUnitOfMeasurements/delete
Method
POST
{ "id": Number }
3. Get Single PUM (Edit Mode)
\add-product-unit-of-measurementEndpoint
/productUnitOfMeasurements/getQuery
Method
POST
Query Params
filter: id||$eq||{id}limit: 14. Create PUM
\add-product-unit-of-measurementEndpoint
/productUnitOfMeasurements/create
Method
POST
{
"productId": Number,
"unitOfMeasurement": "String",
"conversionRate": Number,
"cimaProductCode": "String"
}
5. Update PUM
\add-product-unit-of-measurementEndpoint
/productUnitOfMeasurements/update
Method
POST
Payload is same as Create, but includes "id": Number.
6. Helper APIs (Dropdowns)
\add-product-unit-of-measurementProducts
/products/getQuery (isDeleted=0)
POST
UOM Options
/settings/getQuery (type="Unit Of Measurement")
POST
CIMA Codes
/settings/getQuery (type="CIMA Product Code")
POST
Asia Cement Codes
/settings/getQuery (type="Asia Cement Product Code")
POST
C. Validation & Business Logic
1. Mandatory Fields Validation \add-product-unit-of-measurement
- Trigger: On Save.
- Logic: Checks if
productId,unitOfMeasurement, orconversionRateare empty. - Error: Displays specific error messages (e.g., "Please select the product", "Please enter the conversion rate").
2. Conversion Logic & Constraints
Context: The conversion rate is critical for calculating tonnage vs. quantity in orders.
Note: There is no explicit backend validation check for unique Product+UOM combinations in the provided code. The system relies on the user ensuring duplicates are not created.