autoUpdateCIMASupplierDataBySupplierData
Overview
A cron job that processes queued tasks to sync CIMA supplier delivery data into the Order table. It matches CIMA records against order documents and updates order fields with the supplier-provided data.
| Function | autoUpdateCIMASupplierDataBySupplierData |
| Task Code | Auto Update CIMA Supplier Data By Supplier Data |
| Schedule | Every 10 minutes |
| Source File | src/_cron/cron.service.ts |
Changelog
| Date | Author | Description |
|---|---|---|
| 2026-02-25 | sf | Fixed transaction scope, added null guards, added plateNo matching, restored schedule to 10 min, removed sendTo override, added deliveryDatetime 1-month filter |
Previous versions are preserved in Page Revisions (top-right menu → Revisions).
Current Logic
Schedule
EVERY_10_MINUTES
Processing Flow
Pick10oldestminPending└─ getTaskToProcess('Auto Update CIMA Supplier Data By Supplier Data') └─ If taskandfound:mark│Running├─ - Step 1: Fetch
allCimaDeliveryInfowhere│ status ='Pending'PendingAND│deliveryDatetime >= now - 1 month,ordered│byORDER BY id ASC - │
└─ For each
recordsupplierData —processedeach in itsownOWNindividualtransaction:transaction:│- ├─
- Step 2: Find
OrderDocumentwhere│ referenceKey =supplierData.deliveryOrderNumberDO#AND│autoUpdateFor ='CIMA'CIMAAND│plateNo = supplierData.plateNo - │
├─ If
notNOT found → log warning and skip - │
├─ If
foundfound,butcheckdocumentStatus:documentStatusnot│inAllowed:allowed'Approved'list| 'Auto Approved' | 'Pending Auto Update (CIMA)' │ Otherwise → log debug and skip If│├─ordernotFindfoundOrder byorderDocument.orderId├─ If NOT found → log warning and skip (Steps 4–6arenot executed)- │ ├─ Step 3:
fieldsfields: │ actualLoadedQuantity = supplierData.netWeight │ grossWeight, netWeight, tareWeight │ sealNumber = supplierData.sealNo │ supplierDoDatetime = supplierData.deliveryDatetime │ supplierDoPlateNo = supplierData.plateNo │ deliveryOrderNumber = supplierData.deliveryOrderNumber │ (withoutsendTooverridingissendTo)NOT - Step 2: Find
- overridden)
│
├─ Step 4:
MarkUpdateCimaDeliveryInfo.status→Completed'Completed'
- │
├─ Step 5: If
documentStatus = 'Pending Auto Update (CIMA)' │ →updateUpdateOrderDocument.documentStatus→'AutoApproved' │ (skipped if alreadyApproved'Approved' orApproved'AutoApproved')Approved - │
└─ Step 6:
InsertLogatorecordOrderJobTrackingLogintoaction:OrderJobTrackingLogwith action'CIMA Supplier Data Auto Update by SupplierDataData'
└─ Finally:finally: update task status →'Success' orSuccessFail'Fail'
Every
Allowed documentStatus values
ApprovedAuto ApprovedPending Auto Update (CIMA)
Order Fields Updated
| Field | Source |
|---|---|
| actualLoadedQuantity | supplierData.netWeight |
| grossWeight | supplierData.grossWeight |
| netWeight | supplierData.netWeight |
| tareWeight | supplierData.tareWeight |
| sealNumber | supplierData.sealNo |
| supplierDoDatetime | supplierData.deliveryDatetime |
| supplierDoPlateNo | supplierData.plateNo |
| deliveryOrderNumber | supplierData.deliveryOrderNumber |
| updatedBy | System |
sendTois not updated — preserved from original order value.