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 |
| Source File | src/_cron/cron.service.ts |
Changelog
| Date | Author | Description |
|---|---|---|
| 2026-02-25 | sf |
Previous versions are preserved in Page Revisions (top-right menu → Revisions).
v2 — Current Logic (After Changes)
Schedule
EVERY_10_MINUTES
Processing Flow
- Pick oldest Pending task and mark Running
- Fetch all
CimaDeliveryInfowherestatus = PendingANDdeliveryDatetime >= now - 1 month, ordered by id ASC - For each record — processed in its own individual transaction:
- Find
OrderDocumentwherereferenceKey = DO#ANDautoUpdateFor = CIMAANDplateNo = supplierData.plateNo - If not found → log warning and skip
- If found but
documentStatusnot in allowed list → log debug and skip - If
ordernot found byorderId→ log warning and skip (Steps 4–6 are not executed) - Step 3: Update Order fields (without overriding
sendTo) - Step 4: Mark
CimaDeliveryInfo.status→Completed - Step 5: If
documentStatus = Pending Auto Update (CIMA)→ updateOrderDocument.documentStatus→Auto Approved(skipped if alreadyApprovedorAuto Approved) - Step 6: Insert a record into
OrderJobTrackingLogwith actionCIMA Supplier Data Auto Update by Supplier Data
- Find
- Finally: update task status →
SuccessorFail
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.
Changes from v1
| ||
| ||
| | |
| ||
|
v1 — Original Logic (Before Changes)
Schedule
EVERY_10_SECONDS (temp override of original EVERY_10_MINUTES)
Processing Flow
Pick oldest Pending task and mark RunningFetch ALLCimaDeliveryInfowherestatus = Pending—no date filter, no limitAll records processed in asingle transaction(one failure rolls back everything):FindOrderDocumentwherereferenceKey = DO#ANDautoUpdateFor = CIMA—no plateNo matchingIf not found → silently skip (no log)If found butdocumentStatusnot in allowed list → log debug and skipStep 3:Update Order fields includingorder.sendTo = order.clientName(unconditional override)If order is null, Steps 4–6 still execute— meaningCimaDeliveryInfogets markedCompletedandOrderDocumentgets set toAuto Approvedeven though the order fields were never actually updatedStep 4:MarkCimaDeliveryInfo.status→Completed— runs regardless of whether Step 3 succeededStep 5:IfdocumentStatus = Pending Auto Update (CIMA)→ updateOrderDocument.documentStatus→Auto Approved— runs regardless of whether Step 3 succeededStep 6:Insert a record intoOrderJobTrackingLogwith actionCIMA Supplier Data Auto Update by Supplier Data— logs as success even if the order was not found or updated
Finally: update task status →SuccessorFail