Skip to main content

EKAJAYA - PRODUCT UNIT OF MEASUREMENT

📏 Technical Specification: Product Unit of Measurement (PUM)


📋 Feature Overview

AttributeDetail
Module📂 Directory (PRODUCT_UNIT_OF_MEASUREMENT)
Feature NameProduct Unit of Measurement (PUM)
DescriptionDefines 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]

đŸ•šī¸ Functional Workflow

  • 📍 Navigation  Go to Directory > Product Unit of Measurement 
  • đŸ‘ī¸ Listing View Paginated table displaying Product Name, UOM, and Conversion Rate. Filters by Product/UOM.
  • ➕ Add Action Click the + button to define a new PUM for a product.
  • âœī¸ Edit Action Click the Pencil icon to modify conversion rates or external codes.
  • đŸ—‘ī¸ Delete Action Click the Trash icon to remove a PUM entry.

đŸ› ī¸ Technical Implementation

A. Permissions & Access Control

Note: Access is controlled via PermissionGuard and code-level checks.
ScopePermission CodeDescription
Menu VisibilityPRODUCT_UNIT_OF_MEASUREMENT.MENUSidebar menu visibility.
Page AccessPRODUCT_UNIT_OF_MEASUREMENT.LISTINGAccess to /product-unit-of-measurement.
View AccessPRODUCT_UNIT_OF_MEASUREMENT.VIEWAccess to /add-product-unit-of-measurement.
Create ActionPRODUCT_UNIT_OF_MEASUREMENT.UPDATEVisibility of the + Add button.
Edit/Save ActionPRODUCT_UNIT_OF_MEASUREMENT.UPDATEAbility to save changes (Create/Update).
Delete ActionPRODUCT_UNIT_OF_MEASUREMENT.DELETEVisibility 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)
UOM Options
/settings/getQuery (type="Unit Of Measurement")
CIMA Codes
/settings/getQuery (type="CIMA Product Code")
Asia Cement Codes
/settings/getQuery (type="Asia Cement Product Code")

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.