[
https://issues.apache.org/jira/browse/OFBIZ-12054?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yashwant Dhakad reassigned OFBIZ-12054:
---------------------------------------
Assignee: Yashwant Dhakad
> Solution Design - OFBIZ-12053: Promising against Future Supply
> --------------------------------------------------------------
>
> Key: OFBIZ-12054
> URL: https://issues.apache.org/jira/browse/OFBIZ-12054
> Project: OFBiz
> Issue Type: Task
> Components: order
> Reporter: Swapnil Shah
> Assignee: Yashwant Dhakad
> Priority: Major
> Fix For: Upcoming Branch
>
>
> *Solution Design*
> In search of answers for few basic questions around promising, here is the
> list of few possible design options to explore and build on further:
> * *How much to Promise*
> Before making any systemic or manual promise its important to know how much
> is remaining to be promised for any given order(item). It could be determined
> as follows:
> ** Let system first promise out of on hand inventory using its current
> reservation mechanism.
> ** Post inventory reservation, if Order item is still found backordered (BO)
> i.e. couldn't get any promise from Inventory then it could easily be adjudged
> how much more need to be promised yet based on summing up
> ORDER_ITEM_SHIP_GRP_INV_RES(OISGIR).QUANTIT_NOT_AVAILABLE for given order item
> * *How much is 'Promisable' or 'Available to Promise' (ATP) against supply:*
> Before systemic or manual promises against new demand/orders, It must be
> known how much is left or available to be promised. To begin with, all the
> future supply scheduled to come into the system from vendors or suppliers are
> usually gauged through Advance Shipment Notifications (ASNs) which can be
> expressed via SHIPMENT model in OFBiz. Assuming this to be true, here are few
> possible options:
> ** SHIPMENT with dedicated SHIPMENT_TYPE either as 'INCOMING_SHIPMENT' or
> 'PURCHASE_SHIPMENT' can be recognized as scheduled inbound supply on a
> certain ESTIMATED_ARRIVAL_DATE (EAD)
> ** SHIPMENT_ITEM can express the Product/SKU wise details of supply in terms
> of QUANTITY
> ** *_Extend SHIPMENT_ITEM (SI)_* _with new field_ *_'AVAILABLE_TO_PROMISE'
> (ATP)_* _to now maintain the remaining qty left to be promised at product
> level within a given shipment_
> ** All the promises to be made for any open demand/order can be based off
> SI.ATP. At the same time, all the promises made based on it needs to keep on
> reducing it so as to reflect correct supply snapshot (very much in line with
> ATP on Inventory Item in OFBiz)
> * *How to Promise*
> There can be many ways to promise the demand against supply. Few of the
> automated or manual ways that can be honored (in line with how on hand
> Inventory is promised in OFBiz) could be based on following criteria:
> ** *_FIFO_*: Order with earlier Estimated Ship Date (ESD) could get higher
> precedence in getting supply promised than that of later ESDs. In case of
> missing ESD, Order Date can be referred as fall back option
> ** _*Order Priority*_: Order with higher priority takes precedence in
> getting supply promised than that of lower priority order.
> ** _*Order Priority + FIFO*_ : Order with higher priority gets precedence
> but within same priority orders, FIFO based rules can be applied
> ** _*Fair Share*_: In this manual approach control could be more in hand of
> users to determine and set how much can be promised. It could come handy when
> sales reps or merchandisers have their own set of custom rules to be applied
> rather than having system making promises in automated fashion.
> Depending upon the any of the preferred technique, system needs to keep
> pegging the 'Promisable Supply' against 'Yet to be promised demand'. One of
> the possible ways to maintain and capture this pegging could be:
> * Add new table _*ORDER_ITEM_SHIP_GRP_SHIPMENT_RES (OISGSR)*_ with
> ** ORDER_ID (PK)
> ** SHIP_GROUP_SEQ_ID (PK)
> ** ORDER_ITEM_SEQ_ID (PK)
> ** SHIPMENT_ID (PK)
> ** SHIPMENT_ITEM_SEQ_ID (PK)
> ** RESERVE_ORDER_ENUM_ID (to capture the basis for promising i.e. FIFO,
> PRIORITY, FAIR_SHARE etc.)
> ** QUANTITY (Ordered Qty)
> ** QUANTITY_NOT_AVAILABLE (Un-promised Qty left if any)
> ** PROMISED_DATETIME (promised date based on S.EAD)
> ** PRIORITY (optional - to adjudge the shipment to be used first if same
> order item gets promised from multiple shipments. Lower the number, higher
> the priority)
> ** Standard 4 timestamps
> * All the promises for an ordered item against future supply in (the form of
> inbound shipment) could be made based off SI.ATP
> * Any promise made from Inbound shipments could keep getting captured
> through above table and get reflected on SI.ATP unless it gets completely
> exhausted i.e. goes down to ZERO.
> * *Where to Promise from*
> At times it might be required to know from which part of supply the order is
> being promised specially in case there are multiple inbound supply from one
> or more sources.
> ** OISGSR.SHIPMENT_ID and OISGSR.SHIPMENT_ITEM_SEQ_ID could help in
> determining supply from which source is pegged for given order (item)
> * *When to Promise*:
> Once its known which part of inbound supply is being used to promise order,
> what is equally important is to know what date should be promised to customer
> ** OISGSR.PROMISED_DATETIME should be able to help in suggesting the dates
> to be promised for any given order of customer
> *Points to take into consideration during implementation:*
> *A) Effect on supply side ATP due to change in Demand snapshot for a
> SKU/Product:*
> # *_Backordered (BO) line Item gets cancelled_*. It could release the ATP
> back on Scheduled Incoming Shipment item (SI) i.e. SI.ATP would increase
> which in turn might end up revising promised Qty and promised Date for other
> BO lines for same SKU through released ATP over on hand inventory and SI.
> # *_Backordered (BO) qty gets revised on line item (due to update on Order
> item's Qty)_*. If BO qty gets added then it would consume from SI.ATP (i.e.
> reduce it) and vice versa. It might end up revising the promised date for
> other BO lines for same SKU as well
> # *_Backordered (BO) line item's ESD gets updated._* If ESD gets revised to
> a later or earlier date than current ESD then all FIFO based promises made
> from shipments gets reshuffled and BO lines may get revised promised date. It
> might end up revising the SI.ATP on all shipments for same SKU as well.
> # As described above, please note that any of the above changes on given BO
> line item could have cascading effects on all other SI.ATP for given SKU and
> also on promised Qty and/or promised Date on all other BO lines for given SKU
> *B) Effects on supply side ATP due to change in Supply snapshot for a
> SKU/Product.*
> # *_New Inventory on hand gets added (via Inventory sync or actual receipt
> or returns or inventory variance or order cancellation)_*. The BO line item
> for given SKU would get actual promise/reservation from added on hand
> Inventory. This in turn would release the SI.ATP back into system. Also at
> this point of time if there are still any BOs left for given SKU then they
> might end up getting revised promised Qty and promised Date from released
> SI.ATP.
> # *_Qty to be shipped on any Scheduled Incoming SI gets revised or new
> Shipment gets loaded_*. It would update SI.ATP which in turn might end up
> revising the promises made for the BO lines for same SKU due to change in
> SI.ATP.
> # *_EAD on scheduled Incoming SI gets revised_*. if EAD gets revised to a
> later or earlier than current EAD then FIFO based promises over BO lines made
> from shipments gets reshuffled and BO lines may get revised promised Qty and
> promised Date. This would in turn might revise SI.ATP
> # *_Scheduled Incoming Shipment itself gets cancelled_*. If BO lines were
> promised from it then It might end up shifting and reducing the SI.ATP from
> other shipments. Also it would end up revising the Promised Qty and Promised
> Date on BO lines for affected SKUs.
> # As described above, please note that any of the above changes on given
> Scheduled Incoming SI could have cascading effects on all other SI.ATP for
> given SKU and also on promised Qty and/or Promised Date on all BO lines for
> given SKU
> Let's use this space to present more thoughts and possible choices before
> taking it up for implementation.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)