Subject Area Concepts
Customer orders and their interaction with retail transactions can be moderately complicated. This complication arises from the many to many relationships that may tie orders and retail transactions together.
A CustomerOrder is a document that describes a request by a Customer to purchase merchandise and/or service items from a retailer on agreed terms and conditions (price, delivery, payments schedule, cancellation policy, etc.). A customer order is not the same thing as a sale and a customer order is not the same thing as a retail transaction.
Retail Transactions Versus Customer Orders
A RetailTransaction is a type of Transaction that records the business conducted between the retail enterprise and another party involving the exchange in ownership and/or accountability for merchandise and/or tender or involving the exchange of tender for services. Unlike customer orders, retail transactions always result in the recognition of sales revenue(or for return a debit to sales revenue). A RetailTransaction always reflects some kind of settlement and marks the point in time where the retailer and customer exchange value in the form of merchandise/services for tender of some kind.
A RetailTransaction may initiate a CustomerOrder. A typical example of this is when a customer goes into a store, wants to purchase and item and the retailer has to place an order with its supplier to secure the item. In this scenario RetailTransaction initiates a CustomerOrder. Any tender collected as part of the retail transaction is treated as an unearned revenue liability, not sales revenue. So even though a customer pays for the order it is not a sale. Continuing on with this scenario, when the supplier ships the item (either drop ships it to the customer directly or trans-ships it through the retailer for customer pickup) a second retail transaction is created and booked to debit the sale order liability and credit sales -- it is at this point when the item is shipped to the customer that the retailer can recognize sales revenue.
A CustomerOrder may initiate a RetailTransaction. A typical scenario is an Amazon order. A customer places an order for three items. The order represents a request to Amazon to ship the three items to be received by the customer at a designated location for a designated price (plus shipping and tax). If Amazon ships two items within one day it creates a retail transaction to record the sale. If Amazon ships the third item three days later it creates a second retail transaction to record the sale. Sales revenue for the customer order is recognized and recorded through two separate retail transactions at two different points in time.
Linking Customer Orders, Shipments and Retail Transactions
A CustomerOrder is composed of one or more CustomerOrderLineItem instances. There are a number of subtypes of a CustomerOrderLineItem entity type. For the purposes of relating orders to retail transactions the concern is the CustomerOrderProductLineItem entity. From a customer order standpoint this is a simple parent child relationship between an order header and order detail.
Retailers often have to ship customer orders and even single parts of customer order line items to different destinations. This means the ARTS data model has to provide a mechanism to take a customer order and its line items, disassemble that order and reassemble the parts so they can be shipped and settled as separate transactions from the customer order. This means that a customer order line item has to have a many to many relationship with a shipment line item. To handle this complex scenario, ARTS allows retailers to map individual CustomerOrderProductLineItem instances through an association entity called CustomerOrderProductAssignment to a rearranged group of line items called CustomerOrderProductGroup. Rearrangement as used here means it is possible to take a single CustomerOrderProductLineItem and map it to one or more CustomerOrderProductGroup entity instances. For shipment purposes each shipment involves picking, packing and loading product line items associated with a CustomerOrderProductAssignment which in turn is modeled as a component of a CustomerOrderProductGroup. The CustomerOrderProductGroup may be referenced by CustomerDeliveryInstruction instance which tells the retailer where to ship the items, when to deliver them plus any special handling instructions. The CustomerDeliveryInstruction entity references a RetailTransactionShipment and RetailTransactionShipmentItem which together constitute the data for a packing slip. At the time any part of a customer order is shipped, it is considered a "sale" and may be settled through a RetailTransaction. This structure provides very flexible way to map customer orders and customer order line items to different shipment destination and retail transactions.
The Logical 02315 subject area highlights the different parts of a customer order life cycle. The life cycle consists of taking an order, fulfilling the order (pick and pack), shipping the order and settling the order. This life cycle does not change for orders accepted through an order processing system or a point of sale system. The light yellow area in the entity diagram contains the customer order entities. The medium yellow area of the diagram contains the shipment entities. The light green area to the right contains the retail transaction entities. The diagram is liberally commented to help explain the interrelationship between customer orders and retail transactions.