ASNOut (Advanced Ship Notification Out of the warehouse/store) messages are published by a warehouse or stores system as part of its shipping process. These messages are published when a truck/train/… is loaded with items destined for a store or warehouse. The expectation is that the electronic ASNOut message will arrive at the store/warehouse inventory system or the merchandizing system before the shipment physically arrives at the store/warehouse. An ASNOut Rib Message node is specific to a single source/destination combination.
For the destination store or warehouse, the logic to process these incoming messages is already in place for the ASNIn (Advanced Ship Notification Into a warehouse/store). Hence, this TAFR has the purpose to transform the ASNOut message into an ASNIn message and route the output message to the correct warehouse instance or store inventory system.
Other interested parties to the ASNOut messages, such as a merchandizing system, must subscribe to the original etASNOut topic as a separate subscriber. This TAFR is only concerned with transforming and routing on behalf of a store or warehouse system.
In RMS, on-line shipping and receiving functionality allows clients to setup their system such that shipping and receiving can be done within RMS if a separate store or warehouse system is not used. Shipments created within RMS will be published out as ASNOut messages.
In RMS, shipments can also be created for wholesale/franchise returns. These wholesale franchise returns are essentially transfers from wholesale/franchise stores to company stores/warehouses. For SIM or RWMS to receive these shipments, they need to have a valid ASN to receive against. This requires RMS to publish shipments created for wholesale/franchise returns.
To appropriately route these, RMS created ASNOut messages have a routing info tag called “source app” to support TAFR functions. This TAFR look at this addition routing info tag.
The routing information may contain "source app" name set by RMS when it publishes ASNOut messages. ("source app" == RMS). The ASNOutToASNInLoc TAFR should filter these messages, and route all other messages based on the other routing info requirements.
The routing information for a message should contain the “from location” and the “to location” specification. If either the “to location” type or the “from location” type is not found in the routing info, then the message payload is searched for the location and location type values for both the “to location” and the “from location”.
1. If either the “to location” type or the “from location” type is not found in the routing info, then the message payload is searched for both values.
2. The message will be considered to be in error if both the “from location” type is a store and the “to location” type is a store.
3. Published output messages for the warehouse will be sent to a warehouse specific JMS destination. Published output messages for all stores will all be published to the same JMS destination.
4. The following output message routing info records will be added if not present on the input message:
a. facility_type – the facility type. The value used will come from the default facility type found in the configuration.
b. asn_type – a default of “C' will be used.
Outbound messages will have the same values as the input messages for the RIB message envelope tags of : <ribmessageID>, <customFlag>, <customData>, <hospitalRef>, <hospitalID>, <failure>, <id>. If one of these input fields are not present, then the output message will also not contain this tag. Nested tags within these fields will also be copied. An input message may contain a null or missing <publishTime>, while the output message may contain a set publishTime. All output message <publishTime> fields must be set to a date/time equal to or after the input publishTime.
The <messageData> or “payload” string will contain a <DOCTYPE> tag detailing the URL of a document type definition file. The directory specification in this URL will reside in the configuration, thus allowing the customer to configure his/her own value. The name of the DTD file specified will be “ASNInDesc.dtd”.
Capitalization differences of the input message <type> value will be ignored. Input messages having a <type> value of “asnoutcre” will be mapped to an output type of “ASNInCre”. The output payload class type for this set of messages will be the com.retek.payload.ASNInDesc class. The input payload class will be the com.retek.payload.ASNOutDesc class. The table below details the conversion between the ASNOutDesc fields and the ASNInDesc fields. Any ASNOutDesc field not contained in the table will be ignored.
ASNOutDesc field |
ASNInDesc field |
Required for |
Comment |
to_location |
to_location |
Both |
|
from_location |
from_location |
Both |
|
asn_nbr |
asn_nbr |
ASNIn only |
Implementation will assume this value is set on input. |
asn_type |
asn_type |
ASNIn only |
Implementation will assume this value is set on input. |
container_qty |
container_qty |
ASNIn only |
Implementation will assume this value is set. ASNOutDesc uses integer, ASNInDesc uses String |
bol_nbr |
bol_nbr |
ASNOut only |
|
shipment_date |
shipment_date |
ASNIn only |
Implementation will assume this value is set. Hour, minute, second are optional |
est_arr_date |
est_arr_date |
Neither |
Hour, minute, second are optional |
ship_address_1 |
ship_address_1 |
Neither |
|
ship_address_2 |
ShipAddress2 |
Neither |
|
ship_address_3 |
ship_address_3 |
Neither |
|
ship_address_4 |
ship_address_4 |
Neither |
|
ship_address_5 |
ship_address_5 |
Neither |
|
ship_city |
ship_city |
Neither |
|
ship_state |
ship_state |
Neither |
|
ship_zip |
ship_zip |
Neither |
|
ship_country_id |
ship_country_id |
Neither |
|
trailer_nbr |
trailer_nbr |
ASNOut only |
|
seal_nbr |
seal_nbr |
Neither |
|
carrier_code |
carrier_code |
ASNOut only |
|
|
vendor_nbr |
ASNIn only |
vendor_nbr does not exist in ASNOutDesc. However, since it is required, the TAFR will copy an empty string to this field. |
ASNOutDesc records contain zero or more ASNOutDistro elements. The ASNOutDistro elements will be copied to ASNInPO elements. Any ASNOutDistro field not included in the table below will be ignored. On input, ASNOutDistro records are included in an array of <ASNOutDistro> elements. On output, ASNInPO records are held in an array of < ASNInPO > elements.
ASNOutDistro field |
ASNInPO field |
Required for |
Comment |
distro_nbr |
po_nbr |
Both |
|
distro_doc_type |
doc_type |
Both |
|
comments |
comments |
Neither |
|
ASNOutDistro elements contain 1 or more ASNOutCtn (ASNOut container) elements. ASNOutCtn elements are copied to ASNInCtn elements contained in an ASNInPO element according to the table below. Any ASNOutCtn field not included in the table below will be ignored.
ASNOutCtn field |
ASNInCtn field |
Required |
Comment |
final_location |
final_location |
ASNOut only |
Also copied to ASNInItem if not found in ASNOutItem. |
container_id |
container_id |
Both |
|
container_weight |
container_weight |
Neither |
|
container_length |
container_length |
Neither |
|
container_width |
container_width |
Neither |
|
container_height |
container_height |
Neither |
|
container_cube |
container_cube |
Neither |
|
expedite_flag |
expedite_flag |
Neither |
|
in_store_date |
in_store_date |
Neither |
|
rma_nbr |
rma_nbr |
Neither |
|
tracking_nbr |
tracking_nbr |
Neither |
|
freight_charge |
freight_charge |
Neither |
|
comments |
comments |
Neither |
|
ASNOutCtn elements contain 1 or more ASNOutItem elements. ASNOutCtn elements are copied to ASNInItem elements contained in an ASNInPO element according to the table below. An ASNInPO record contains both the ASNInCtn and the ASNInItem element arrays for a specific purchase order. Any ASNOutItem field not included in the table below will be ignored.
ASNOutItem field |
ASNInItem field |
Required |
Comment |
item_id |
item_id |
Both |
|
unit_qty |
unit_qty |
Both |
|
priority_level |
priority_level |
Neither |
ASNOutItem uses integer, ASNInItem uses string |
order_line_nbr |
order_line_nbr |
Neither |
|
lot_nbr |
lot_nbr |
ASNInItem only |
Implementation will assume lot_nbr set on input |
comments |
comments |
Neither |
|
container_qty |
container_qty |
Neither |
ASNOutItem uses integer, ASNInItem uses string |
final_location |
final_location |
ASNInItem |
If final_location is not set in ASNOutItem, use from ASNOutCtn. |
|
distro_nbr |
ASNInItem |
Use from ASNOutCtn. |
|
distro_doc_type |
ASNInItem |
Use from ASNOutCtn. |