Technical Notes
Note: This is a technical working document and always under draft.
DOCUMENTATION
Existing Documentation:
- P:\Development\MCS\# Documentation\MCS Technical Details v1.0.docx
- P:\Development\MCS\# Guides\Calidus MCS Development Setup.docx
- P:\Development\MCS\# Guides\MCS Cleardown Instructions v1.0.docx
- P:\Development\MCS\# Guides\MCS Development Guide v1.0.doc
User Guides:
- P:\Development\MCS\# Guides\User Guide\CMCS User Guide - Refresh MCS v1.0.doc
- P:\Development\MCS\# Guides\User Guide\UG 320722 CALIDUS MCS C-TMS User Guide v1.0.pdf
- P:\Development\MCS\# Guides\User Guide\UG 320722 CALIDUS MCS Device User Guide v1.0.pdf
Also, on this guide:
- MCS Device User Guide
- CTMS-MCS User Guide
C-TMS NOTES
PARAMETERS
System-wide:
- MCS_PREVENT_UNPLANNED - Prevent unplanned items being scanned for pallet building, despatch and receipt although expected for the route (Y/N)?
System-wide parameters like this are maintained in CTMS.
Location-specific:
- MCS Active
- Receipt Only
- Despatch Only
PACKAGES
MCS is mentioned in several places in CTMS code.
The business logic is all based in DP_MCS_SCANNING, although there are several functions that contain some (duplicated?) code as well:
- fn_add_3rd_party_label
- fn_add_to_pallet
- fn_cancel_booking
- fn_create_pallet
- fn_damages
- fn_desp_comp
- fn_desp_conf
- fn_goods_rec
- fn_goods_rec_comp
- fn_goods_rec_tmp
- fn_open_pallets_data
- fn_package_data
- fn_pallet_swapping
- fn_print_pallet_label
- fn_remove_from_pallet
- fn_update_pallet_status
- fn_update_service
- fn_validate_piece
Most are duplicated in DP_MCS_SCANNING and these are the ones that are called from MCS (at least for all the ones that I have checked). Also the following package (not yet checked).
- RECEIVED_OFF_PLAN
MCS PROCESSING AND VALIDATION IN C-TMS
Logging On
Logging on:
- User:
- Straight list of users, user_based_at plus others from ADMIN_USERS. Must have:
- COST_CENTRE parameter set up
- Site:
- must be a location on geo_location with DEPOT = "RDC" and MCS_ACTIVE = "Y".
Pallet Building
Pallet Building:
- Previously-configured pallets:
- DP_MCS_SCANNING.FN_VALID_ITEM_FOR_PALL
- Carrier must be set to allow pallets (res_carrier.allow_pallets = Y). If hazardous product, must also allow_dg_pallets=Y.
- Package must be on a trip which matches locations for packages already on the pallet.
- Class must be compatible (not on prd_non_compatible, comparing the packages SOI.class to each soi for sch_ship_pall_item on the shipment pallet)
- Product type must be compatible (not on prd_prod_non_comp, comparing the packages SOI.prod_type_id to each soi for sch_ship_pall_item on the shipment pallet)
- Counting hazardous classes, the count of classes on the pallet must not exceed the maximum amount (res_carrier_haz_qty.max_qty)
- New pallets:
- DP_MCS_SCANNING.FN_CREATE_PALLET
- The pallet is simply created with pallet status "OPEN" and location_id (the from location) set as the depot at which it was built.
- IMP: We need a sequence setting in the database: SEQ_SCH_SHIP_PALL. It's quite obviously a global thing, so we would need to make sure that the pre-printed stationary are outside that range.
- Adding items to pallets:
- DP_MCS_SCANNING.FN_ADD_TO_PALLET
- Pallet must exist on sch_ship_pall.
- Validation exists whereby items cannot be added to the pallet if the pallet status is not OPEN (sch_ship_pall.pallet_status).
- Package must not already be on the pallet.
- Calls FN_VALIDATE_PIECE (is this the one in the package or the one in FUNCTIONS? TBC)
- Package and pallet must match trips.
- The pallet locations are updated with the from location being the depot at which the pallet is built, and the to location being the next unload for that order at an RDC depot.
- If an unload at a depot is not found, then the location returned is the destination location of the item's order
- Printers - printers must be set up on ADM_DFLT_PRINTER for the user in C-TMS
- Pallet Label:
- DP_MCS_SCANNING.FN_PRINT_PALLET_LABEL
- Report is fixed to "LFS_PALLET_LABEL"
Receipt
Receipt:
- Trips
- SQL to validate is in V_MCS_TRIP_ITEM which is very complex - needs checking
- Items:
- SQL to validate is in V_MCS_TRIP_ITEM which is very complex - needs checking
- DP_MCS_SCANNING.FN_GOODS_REC
- Updates items as reason code SU (Successfully Unloaded)
- Sets SCH_ORDER_ITEMS.qty_delivered = 1 if this is the final destination for the order.
- Checks system adm flag MCS_PREVENT_UNPLANNED. If set, will not allow receipt of items from another order not planned on this trip. If set, allows this and splits the original order and adds it to this trip.
- Checks specific FNR (Freight Not Received) reason code. Sets qty_to_deliver to 0. If all items on that order are not received, the order is unscheduled from the trip and audited.
- Note: The actual reason code used for FNR processing can be changed in C-MCS (in the web.config file) but this is fixed in C-TMS packages, so it should never be changed.
- Checks reason.at_fault of reason code applied to an item. If "LATE", sets the late_order flag against the OMS ref. Automatically unschedules the order from the onward delivery trip.
- Completing:
- DP_MCS_SCANNING.FN_GOODS_REC_COMP
- Any items not received are marked with reason code NU (Not Unloaded) - needs to be set up as Item_Non_Con
- Updates the trip/stop with actual arrive (now) and actual depart (now + 15) only for DL/CL stop types.
- Updates any missing stop times (not sure how)
- Completes any prior flight trips (which shouldn't fire - defined as immediately prior trip with AWB/Consignment ID)
- Sets trip status to COMPLETED.
Despatch
Despatch:
- Trips
- SQL to validate is in V_MCS_TRIP_ITEM which is very complex - needs checking
- Items
- SQL to validate is in V_MCS_TRIP_ITEM which is very complex - needs checking
- DP_MCS_SCANNING.FN_DESP_CONF
- Updates items as reason code SL (Successfully Loaded)
- Completing:
- DP_MCS_SCANNING.FN_DESP_COMP
- Any items not despatched are marked with reason code NL - needs to be set up as Item_Non_Con
- If gl.despatch_only = Y
- Updates the trip/stop with actual arrive (now-15) and actual depart (now) only for SU stop types
- Sets trip status to EN-ROUTE.
- Else
- Updates the trip/stop with actual arrive (now-15) and actual depart (now) only for SU/PK stop types
- Sets trip status to COMPLETED.
- Completes any onward flight trips (which shouldn't fire - defined as immediately following trip with AWB/Consignment ID)
Damages
Damages:
- Reason codes - item non-con codes from SCH_REASON_CODES for the default MCS cost centre, set up in MCS_CONTROL_PARAM.CTP_KEY = "DEFAULT_COST_CENTRE"
Q&A
FAQ
Can we trigger SmartPOD journey from completion of MCS despatch?
- There is a SYSTEM flag MIC_SEND_ACCEPTED to determine the sending at ACCEPTED status.
- Used in TRG_SCH_TRIP_XML_INT, which fires when SCH_TRIP is updated.
- SCH_TRIP is updated for status EN-ROUTE by MCS DESPATCH, for loading at SU.
Can we change triggering of SmartPOD to be at EN ROUTE?
- There is a SYSTEM flag MIC_SEND_ACCEPTED to determine the sending at ACCEPTED status.
- Used in TRG_SCH_TRIP_XML_INT
- Set this to "N" (or unset) to get messages triggered from EN-ROUTE status.
What criteria is required against the locations to generate MCS items?
- Generates onto SCH_TRIP_ITEMS, per stop ID.
- Created in the following packages:
- DP LOGIX_CONFIG - when adding, deleting or moving SCH_HAULAGE_ACTIVITY records (SHA).
- TRM - when adding, deleting or moving SCH_HAULAGE_ACTIVITY records (SHA)
- Only on Load or Unload where the location is MCS_ACTIVE="Y"
Is there already a mechanism of MCS pallet closure?
- There is a function FN_UPDATE_PALLET_STATUS, but this is not called by any code in C-TMS or C-MCS, so partially completed code.
Removing items from pallets?
- There is functionality to do this (FN_REMOVE_FROM_PALLET in .NET DPMcsScanningPKG1.cs and in C-TMS DP_MCS_SCANNING) but it seems that it's never called. We should bear this in mind for the future. For now, simply scan the package to another pallet if incorrectly placed.
What trip status are items available to be received/despatched/pallet Built?
- ACCEPTED
OUTSTANDING QUESTIONS
Can we generate pallets without AWB?
- Unknown
Can we use MCS at non-SU stops i.e. loading at warehouse?
- ??? It appears so, but requires testing.