Technical Notes

From MCS

Note 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:


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"
  • Calls process FN_DAMAGES.
  • Creates or updated SOIRC at the depot to reason code or 'MI' if not provided.
  • Sets SOI to qty 0.
  • This triggers an update of STI through trigger TRG_SCH_ORD_ITEMS_ACTUALS. This sets ALL STI records (that have a null delivered qty) to the DAMAGED reason code on the SOIRC (set above), or 'MI'.


PROCESSING ON MOBILE DEVICE

Sites are loaded initially into the local storage database in the browser. To remove or refresh them, the database cookie must be deleted.

MCS DESPATCH

  • A loaded item may be unloaded by scanning it again, with confirmation
  • A loaded item cannot be marked as an exception (damaged) - it must be unloaded first.
  • Despatch cannot be completed (through the Comp button) unless all items have been scanned, manually loaded through the Load button or marked as exception through the EXC button or scanned as Exception using the EXC slider.
  • To mark all items remaining on a trip with an exception code, click the EXC button. Select a Reason Code from the drop-down list and click Confirm. The device will ask you to confirm.
  • Clicking on the list removes the floating header and fixes it to the top of the list. Clicking again restores it as a floating header.
  • To show loaded items on a trip, click the Show button - they are shown at the end of the list. Note that, if the screen is limited, and there are more pending items to scan that can be shown on a single screen, the Loaded items are not shown. Use the LIM slider to show all items on a trip.
  • To show all items remaining, click the LIM slider to ALL. This will show all items, including any loaded, if Showing all items including Loaded ones.


MCS RECEIPT

  • Clicking on the list removes the floating header and fixes it to the top of the list. Clicking again restores it as a floating header.
  • LIM slider controls whether only limited numbers of items are displayed on the screen. Click it to slide to ALL to show all items.
  • Items may be scanned as Exception using the EXC slider.
  • To mark all items remaining on a trip with an exception code, click the EXC button. Select a Reason Code from the drop-down list and click Confirm. The device will ask you to confirm.
  • Receipt confirmation is through the Update button.
  • If not all items have been received when the Update button is pressed, the application will confirm whether they will be marked as reason "Freight Not Received".
  • To show received items on a trip, click the Show button - they are shown at the end of the list. Note that, if the screen is limited, and there are more pending items to scan that can be shown on a single screen, the received items are not shown. Use the LIM slider to show all items on a trip.
  • To show all items remaining, click the LIM slider to ALL. This will show all items, including any received, if Showing all items including received ones.


MCS DAMAGES

To trigger the Damages (Exception) process

  • At Despatch:
    • Enter an item then click EXC.
    • Switch the ITM/EXC slider to EXC, then scan an item or key an item and hit Enter.
  • From the menu:
    • Select Damages
  • Reason codes are ITEM_NON_CON reason codes from the default cost centre, defined in the MCS system parameters in CTMS.


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 the C-TMS database or C-MCS. It may be called from the C-TMS Shipment Pallet screen itself.

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.