EKAJAYA - PRODUCT
📦 Technical Specification: Product Setup
📋 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.MENU |
Sidebar menu visibility. |
| Page Access | PRODUCT.LISTING |
Access to listing route. |
|
View Access |
PRODUCT.VIEW |
|
|
Create Action |
|
|
| Edit/Save Action | PRODUCT.UPDATE |
Ability to save changes on Add/Edit screen.\add-product-manage |
| Delete Action | PRODUCT.DELETE |
Visibility of the Delete 🗑️ icon.\listing-product-manage |
B. API Interaction
Base URL:
${environment.baseApiUrl}1. Retrieve Product List
\listing-product-manageEndpoint
/products/getQuery
Method
POST
Key Params
filter: isDeleted||$eq||0 (plus search on Code, Name, Brand).sort: productBrand,productName2. Get Single Product (Edit Mode)
\add-product-manageEndpoint
/products/getQuery
Method
POST
Query Params
filter: id||$eq||{id}join: supplierProductList, supplierProductList.pickupAddress...3. Create Product (Master-Detail)
\add-product-manageEndpoint
/products/mdCreate
Method
POST
{
"productCode": "String",
"productName": "String",
"productBrand": "String",
"supplierProductList": [
{ "supplierId": Number, "pickupAddressId": Number }
],
"isDeleted": 0
}
4. Update Product
\add-product-manageEndpoint
/products/mdUpdate
Method
POST
Payload is same as Create, but includes "id": Number.
5. Delete Product (Soft Delete)
\listing-product-manageEndpoint
/products/update
Method
POST
Prerequisite
Must pass dependency checks (Order & Job) first.
{
"id": Number,
"isDeleted": true
}
C. Validation & Business Logic
1. Unique Code Validation \add-product-manage
- Trigger: On Save.
- Logic: Calls
/products/getQuery. Filter:productCode||$eq||{inputCode};isDeleted||$eq||0. - Error: Blocking error: "Product code already exists".
2. Dependency Checks (Pre-Delete) \listing-product-manage
Before deleting a product, the system ensures it is not currently used in active Orders or Jobs.
| Module | Endpoint | Filter Logic |
|---|---|---|
| 📦 Orders | /orders/getQuery |
productId |
| 🔧 Jobs | /jobs/getQuery |
productId |
Error: "Unable to delete Product due to tagging to [order/job]."
3. Minimum Data Requirement \add-product-manage
- Trigger: On Save.
- Logic: Checks
supplierProductListarray. - Error: If list is empty, shows: "Please add product supplier".