[ 
https://issues.apache.org/jira/browse/OFBIZ-7356?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15338505#comment-15338505
 ] 

Pierre Smits commented on OFBIZ-7356:
-------------------------------------

Having a fix version will ensure that this issue is visual in the appropriate 
release.

> OFBIZ-6964: Document finalized design to support replenishment planning 
> through any inter-company facility
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: OFBIZ-7356
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-7356
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: manufacturing, order, product
>            Reporter: Swapnil Shah
>
> Here are high level design notes to based on the requirement specified under 
> OFBIZ-7355 to support the product level replenishment from any inter-company 
> facility before raising the ordering from an outside vendor.
> * We could extend the MRP logic (MrpEvent,Requirenent) to honor these new 
> types and create corresponding event & requirement for Stock transfer between 
> facilities.
> * Introduce two new entities ProductFacilityAssoc & FacilityAssocType and use 
> them in conjunction with MrpEventType and corresponding RequirementType to 
> serve the requirement for replenishing the store's via Inter-facility 
> transfers mode.  The data model & UI could be extended as follows:
> {code}
> <!-- New Entity ProductFacilityAssoc (Product-wise associations between 
> facilities to define from what all facilities a given product can be 
> replenished)-->
> <entity entity-name="ProductFacilityAssoc"
> title="Define associations between Product facilities">
> <field name="productId" type="id-ne"/>
> <field name="facilityId" type="id-ne"/>
> <field name="facilityIdTo" type="id-ne"/>
> <field name="facilityAssocTypeId" type="id-ne"/>
> <field name="fromDate" type="date-time"/>
> <field name="thruDate" type="date-time"/>
> <field name="sequenceNum" type="numeric"/> 
> <prim-key field="productId"/>
> <prim-key field="facilityId"/>
> <prim-key field="facilityIdTo"/>
> <prim-key field="facilityAssocTypeId"/>
> <prim-key field="fromDate"/>
> <relation type="one" fk-name="PRFACASSOC_PRO" rel-entity-name="Product">
> <key-map field-name="productId"/>
> </relation>
> <relation type="one" fk-name="PRFACASSOC_FAC" title="From" 
> rel-entity-name="Facility">
> <key-map field-name="facilityId"/>
> </relation>
> <relation type="one" fk-name="PRFACASSOC_FACTO" title="To" 
> rel-entity-name="Facility">
> <key-map field-name="facilityIdTo" rel-field-name="facilityId"/>
> </relation>
> <relation type="one" fk-name="PRFACASSOC_TYPE" 
> rel-entity-name="FacilityAssocType">
> <key-map field-name="facilityAssocTypeId"/>
> </relation>
> </entity>
> <!-- New Entity FacilityAssocType (type of associations between facilities)-->
> <entity entity-name="FacilityAssocType"
> title="Define associations between facilities">
> <field name="FacilityAssocType" type="id-ne"/>
> <field name="description" type="description"/>
> <prim-key field="facilityAssocTypeId"/> 
> </entity>
> <!-- Extend Entity MrpEvent (for destination facility)-->
> <entity entity-name="MrpEvent"
> <field name="facilityIdTo" type="id-ne"/>
> </entity>
> <!-- Extend Entity Requirement (for destination facility)-->
> <entity entity-name="Requirement"
> <field name="facilityIdTo" type="id-ne"/>
> </entity>
> <!-- New FacilityAssocType (type of association between facilities)-->
> <ProductFacilityAssocType productFacilityAssocTypeId="BACKUP_WAREHOUSE" 
> description="Facility that serves another facility in terms of inventory"/>
> <!-- New ProductFacilityAssoc (Association between facilities)-->
> <ProductFacilityAssoc productId="GZ-8544" facilityId ="RegionalWarehouse_01" 
> facilityIdTo="StoreWarehouse_01" facilityAssocTypeId="BACKUP_WAREHOUSE" 
> sequenceNum="01" fromDate="2001-01-01 12:00:00"/>
> <ProductFacilityAssoc productId="GZ-8544" facilityId ="RegionalWarehouse_02" 
> facilityIdTo="StoreWarehouse_01" facilityAssocTypeId="BACKUP_WAREHOUSE" 
> sequenceNum="02" fromDate="2001-01-01 12:00:00"/>
> <ProductFacilityAssoc productId="GZ-8544" facilityId ="CentralWarehouse" 
> facilityIdTo="StoreWarehouse_01" facilityAssocTypeId="BACKUP_WAREHOUSE" 
> sequenceNum="03" fromDate="2001-01-01 12:00:00"/>
> <ProductFacilityAssoc productId="GZ-8544" facilityId ="CentralWarehouse" 
> facilityIdTo="RegionalWarehouse_01" facilityAssocTypeId="BACKUP_WAREHOUSE" 
> sequenceNum="01" fromDate="2001-01-01 12:00:00"/>
> <ProductFacilityAssoc productId="GZ-8544" facilityId ="CentralWarehouse" 
> facilityIdTo="RegionalWarehouse_02" facilityAssocTypeId="BACKUP_WAREHOUSE" 
> sequenceNum="01" fromDate="2001-01-01 12:00:00"/>
> <!-- New MRPEventType (apart from existing ones in Ofbiz)-->
> <MrpEventType description="Initial ATP" mrpEventTypeId="INITIAL_ATP"/>
> <MrpEventType description="Proposed stock transfer if ATP is less than 
> minimum quantity" mrpEventTypeId="PROP_ATP_STOCK_TRANSFER"/>
> <!-- New RequirementType (apart from existing ones in Ofbiz)-->
> <RequirementType description="Inter-facility Transfer Requirement" 
> requirementTypeId="TRANSFER_REQUIREMENT"/>
> <!-- New Enumeration for Product Store Facility's requirementhMethodEnumId to 
> be used to trigger inter-facility transfer -->
> <Enumeration description="When ATP Reaches Minimum Stock for 
> Product-Store-Facility" enumCode="XFER_STOCK_ATP" enumId="XFERRQM_STOCK_ATP" 
> enumTypeId="PROD_REQ_METHOD"/>
> <!-- Existing ProductStore for setting primary facility for each store -->
> <ProductStore productStoreId="9100" inventoryFacilityId="StoreWarehouse_01" 
> checkInventory="N" oneInventoryFacility="N" requireInventory="N" 
> reserveInventory="Y" reserveOrderEnumId="INVRO_FIFO_REC" /> 
> <!-- Extended ProductStoreFacility for setting RMEI)-->
> <ProductStoreFacility productStoreId="9100" facilityId=="StoreWarehouse_01" 
> requirementMethodEnumId="XFERRQM_STOCK_ATP" fromDate="2001-04-13 12:00:00"/>
> <!-- Existing ProductFacility (with Minimum Stock and ATP) -->
> <ProductFacility facilityId="StoreWarehouse_01" 
> lastInventoryCount="20.000000" minimumStock="100.000000" productId="GZ-8544"/>
> <ProductFacility facilityId="RegionalWarehouse_01" 
> lastInventoryCount="40.000000" minimumStock="200.000000" productId="GZ-8544"/>
> <ProductFacility facilityId="RegionalWarehouse_02" 
> lastInventoryCount="60.000000" minimumStock="200.000000" productId="GZ-8544"/>
> <ProductFacility facilityId="CentralWarehouse" 
> lastInventoryCount="200.000000" minimumStock="300.000000" 
> productId="GZ-8544"/>
> {code}
> MRP engine would start creating event beginning with store's primary facility 
> based on set RMEI under ProductStoreFacility e.g, XFERRQM_STOCK_ATP for 
> StoreWarehouse_01, In other words if MinStock < ATP , then MRP algorithm 
> would: 
> # Look up and consume the respective ATP from all the eligible "facilityIdTo" 
> (based on ProductFacilityAssoc), from where given product is transferable. 
> Based on their priorities start allocating ATP unless it meet the 
> (MinStock-ATP) requirement for a given store e.g., 'StoreWarehouse_01' .
> # Create new MRP Event with Event type "PROP_ATP_STOCK_TRANSFER" with 
> Proposed Quantity = MINIMUM STOCK - ATP from the facility (with highest 
> priority i.e.,RegionalWarehouse_01) to the destination facility.
> ## If demand for (MinStock-ATP) is still not fully met by any facility with 
> higher priority then repeat step#1 for all the associated facilities in 
> descending order of priority unless ATP from all eligible facilities is 
> exhausted.
> # Based on above MRP Event Type and proposed quantity, In turn create the new 
> Requirement with type TRANSFER_REQUIREMENT between originating and 
> destination facility.
> # Over Requirement screen (UI) we can provide the "Transfer" button against 
> all the requirement with type TRANSFER_REQUIREMENT
> # On hitting the "Transfer" button, The new 'Stock Transfer' requests could 
> be created for a product between eligible facilities based on above step. 
> # The created Stock Transfer request can be completed by shipping and 
> receiving given product from originating facility and destination facility 
> respectively.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to