Skip to main content

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

    Every 
  1. Pick10 oldestmin Pending└─ getTaskToProcess('Auto Update CIMA Supplier Data By Supplier Data') └─ If task andfound: mark Running
  2. ├─
  3. Step 1: Fetch all CimaDeliveryInfo where status = Pending'Pending' AND deliveryDatetime >= now - 1 month, ordered byORDER BY id ASC
  4. │ └─ For each recordsupplierDataprocessedeach in its ownOWN individualtransaction: transaction:
      ├─
    • Step 2: Find OrderDocument where referenceKey = DO#supplierData.deliveryOrderNumber AND autoUpdateFor = CIMA'CIMA' AND plateNo = supplierData.plateNo
    • │ ├─ If notNOT found → log warning and skip
    • │ ├─ If foundfound, butcheck documentStatusdocumentStatus: not inAllowed: allowed'Approved' list| 'Auto Approved' | 'Pending Auto Update (CIMA)' │ Otherwise → log debug and skip
    • If order├─ notFind foundOrder by orderDocument.orderId ├─ If NOT found → log warning and skip (Steps 4–6 are not executed)
    • │ ├─ Step 3: Update Order fieldsfields: │ actualLoadedQuantity = supplierData.netWeight │ grossWeight, netWeight, tareWeight │ sealNumber = supplierData.sealNo │ supplierDoDatetime = supplierData.deliveryDatetime │ supplierDoPlateNo = supplierData.plateNo │ deliveryOrderNumber = supplierData.deliveryOrderNumber │ (withoutsendTo overridingis sendTo)
    • NOT
    • overridden) │ ├─ Step 4: MarkUpdate CimaDeliveryInfo.statusCompleted
    • 'Completed'
    • │ ├─ Step 5: If documentStatus = 'Pending Auto Update (CIMA)' │updateUpdate OrderDocument.documentStatus'Auto ApprovedApproved' │ (skipped if already Approved'Approved' or 'Auto ApprovedApproved')
    • │ └─ Step 6: InsertLog ato recordOrderJobTrackingLog intoaction: OrderJobTrackingLog with action 'CIMA Supplier Data Auto Update by Supplier Data
    • Data'
    └─
  5. Finally:finally: update task status → Success'Success' or Fail'Fail'

Allowed documentStatus values

  • Approved
  • Auto Approved
  • Pending 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

sendTo is not updated — preserved from original order value.