PRODUCT
📦 Technical Specification: Product Setup
📋 Feature Overview
🛠️ Technical Implementation
A. Permissions & Access Control
Note: Access is controlled via code-component-level checks.
PermissionGuard and | Scope | Permission Code | Description & Page Usage |
|---|---|---|
| Menu Visibility | PRODUCT.MENU |
Sidebar menu visibility.
|
| Page |
PRODUCT.LISTING |
Access to listing route.\listing-product-manage |
| Page
|
PRODUCT.VIEW |
Access
|
Create Action |
|
Visibility of the + Add button (uses Update permission). |
| View Access | PRODUCT.VIEW |
Controls visibility of action buttons (Edit).\listing-product-manage |
| Delete Action | PRODUCT.DELETE |
Visibility of the Delete 🗑️ icon.\listing-product-manage |
| Edit/Save Action | PRODUCT.UPDATE |
Ability to save changes on Add/Edit screen.\add-product-manage |
B. API Interaction
Base URL:
${environment.baseApiUrl}1. RetrieveListing Product ListManage
\listing-product-manage/products/getQuery
POST
productCode, productName, productBrand, isDeleted=0filter/orders/getQuery
POSTFilter: plusDependency searchCheck)
isDeleted||$eq||productId, isClosed=0 (sort/jobs/getQuery
POSTFilter:
productBrand,productNameproductId, isClosed=0 (Dependency Check)/products/update
POSTPurpose: Soft Delete (
isDeleted=true)2. DeleteAdd Product (Soft Delete)
\listing-product-manage{ "id": Number, "isDeleted": true }
\add-product-manage/products/getQuery
POST
filterid||$eq||{id}idjoin/products/getQuery
Filter: Master-Detail)Uniqueness
productCode (\add-product-manageCheck)/products/mdCreate
Purpose: Master-Detail Create
/products/mdUpdate
POSTPurpose: Master-Detail Update
{ "productCode": "String", "productName": "String", "productBrand": "String", "supplierProductList": [ { "supplierId": Number, "pickupAddressId": Number } ], "isDeleted": 0 }
\add-product-manageC. Validation & Business Logic
1. Dependency Checks (Pre-Delete) \listing-product-manage
Before deleting a product, the system ensures it is not currently used in active Orders or Jobs.
| ||
|
2. 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".
3. Minimum Data Requirement \add-product-manage
Trigger:On Save.Logic:CheckssupplierProductListarray.Error:If list is empty, shows: "Please add product supplier".