Skip to main content

EKAJAYA - PRODUCT UNIT OF MEASUREMENT

📏 Technical Specification: Product Unit of Measurement (PUM)


📋 Feature Overview

Attribute Detail
Module 📂 Directory (PRODUCT_UNIT_OF_MEASUREMENT)
Feature Name Product Unit of Measurement (PUM)
Description Defines specific units of measurement (e.g., Bags, MT) for products and their conversion rates. Links products to external codes for integration.
User Guide 📄 [Ekajaya Admin User Guide - Directory Module, Section 8]

🛠️ Technical Implementation

A. Permissions & Access Control

Note: Access is controlled via PermissionGuard and code-level checks.
Scope Permission Code Description
Menu Visibility PRODUCT_UNIT_OF_MEASUREMENT.MENU Sidebar menu visibility.
Page Access PRODUCT_UNIT_OF_MEASUREMENT.LISTING Access to /product-unit-of-measurement.
View Access PRODUCT_UNIT_OF_MEASUREMENT.VIEW Access to /add-product-unit-of-measurement.
Create Action PRODUCT_UNIT_OF_MEASUREMENT.UPDATE Visibility of the + Add button.
Edit/Save Action PRODUCT_UNIT_OF_MEASUREMENT.UPDATE Ability to save changes (Create/Update).
Delete Action PRODUCT_UNIT_OF_MEASUREMENT.DELETE Visibility of the Delete 🗑️ icon.

B. API Interaction

Base URL: ${environment.baseApiUrl}
1. Retrieve PUM List
Endpoint
/productUnitOfMeasurements/getQuery
Method
POST
Key Params
join: product
filter: Dynamic filters for unitOfMeasurement and productId.
2. Get Single PUM (Edit Mode)
Endpoint
/productUnitOfMeasurements/getQuery
Method
POST
Query Params
filter: id||$eq||{id}
limit: 1
3. Create PUM
Endpoint
/productUnitOfMeasurements/create
Method
POST
{
  "productId": Number,
  "unitOfMeasurement": "String",
  "conversionRate": Number,
  "cimaProductCode": "String"
}
4. Update PUM
Endpoint
/productUnitOfMeasurements/update
Method
POST
Payload is same as Create, but includes "id": Number.
5. Delete PUM
Endpoint
/productUnitOfMeasurements/delete
Method
POST
{ "id": Number }
6. Helper APIs (Dropdowns)
Products
/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

  • Trigger: On Save.
  • Logic: Checks if productId, unitOfMeasurement, or conversionRate are 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.