Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Removal of the word "Product" as each stakeholder in the supply chain has their own view of what a "product" is.  Therefore:
    • OrderableProduct changes to Orderable (likewise class ProgramProduct changes to ProgramOrderable)
    • ProductCategory changes to OrderableDisplayCategory
    • GlobalProduct changes to CommodityType
  • TradeItems no longer have simple associations to GlobalProducts / CommodityType.  Instead a TradeItem will have an attribute that lists all of the CommodityTypes it is (1 per classification system).  This identifier will serve as a cross-reference to CommodityType if that classification system is in use in the OpenLMIS implementation.
  • CommodityType and TradeItem now have an Orderable, rather than as a sub-class to Orderable.  This change better reflects the nature of a TradeItem not being a sub-class of an Orderable, rather it shows that a TradeItem may be the source or backing of an Orderable.
  • CommodityTypes will become heirarchical as they are a representation of a GS1 classification system.  A CommodityType knows its parent using Adjacency List (like supervisory nodes), and a parent may have multiple children.  This allows for heirarchy and branching that classification systems typically exhibit and follows GS1 best practice in allowing an implementation to mix and match existing classification systems in practice.
  • The resource /orderableProducts (now /orderables) will only return Orderables.  To further get the TradeItem or CommodityType that created the Orderable, the client will use the identifiers collection in the response of the Orderable to see if an identifier for a TradeItem or CommodityType is present.
  • Orderable's are no longer able to determine if any other Orderable may fulfill for it - atleast not alone.  Instead:
    •  A TradeItem knows if it may fulfill for a CommodityType if:
      • the TradeItem is classified by the CommodityType or one of the CommodityType's children
      • AND the CommodityType has an Orderable which has an equivalent Dispensible as the Orderable which the TradeItem has.
    • A TradeItem may be fulfillable by another TradeItem - e.g. if an EDI TradeItem Align message were received.  This is diagramed by the method TradeItem.mayFulfillFor(TradeItem), however the classes necessary for this are not yet diagrammed.

...