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

Pawan Verma commented on OFBIZ-10365:
-------------------------------------

Removing inventoryItemId from PK of InventoryTransferItem entity. As one 
inventoryItem can be available in single InventoryTransfer only one time as we 
are consolidating item quantity.

> Document design approaches for Inventory Transfer 
> --------------------------------------------------
>
>                 Key: OFBIZ-10365
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-10365
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: order
>    Affects Versions: Trunk
>            Reporter: Pawan Verma
>            Assignee: Pawan Verma
>            Priority: Minor
>         Attachments: InventoryTransferModelLevel1.png, 
> OrderModelActivityLevel1.png
>
>
> h2. *Design Approach #1:*
>  * Create Header entity *InventoryTransferHeader (ITH)*
>  ** inventoryTransferId*
>  ** statusId
>  ** facilityId
>  ** locationSeqId
>  ** facilityIdTo
>  ** locationSeqIdTo
>  ** primaryShipmentId
>  
>  * Refactor existing *InventoryTransfer* entity to *InventoryTransferItem* so 
> as to support item level details as follows:
>  ** inventoryTransferId*
>  ** InvtransferItemSeqId*
>  ** inventoryItemId
>  ** shipmentId
>  ** shipmentItemSeqId
>  ** quantity
>  ** unitPrice
>  
> Having InventoryItem detail at InventoryTransferItem level will help us to 
> manage multiple Items under same InventoryTransfer and each 
> InventoryTransferItem can be fulfilled via multiple Inventory items and/or 
> multiple Shipments.
>  
>  * Create *TransferItemBilling* entity to support invoicing (if needed)
>  ** inventoryTransferId*
>  ** InvtransferItemSeqId*
>  ** invoiceId*
>  ** invoiceItemSeqId*
>  ** itemIssuanceId
>  ** shipmentReceiptId
>  ** quantity
>  ** Amount
>  * Create *InventoryTransferContanctMech* entity to support InventoryTransfer 
> Contact Mechanism
>  ** inventoryTransferId*
>  ** contactMechPurposeTypeId*
>  ** contactMechId*
>  * Create *RequirementInventoryTransfer* entity
>  ** requirementId*
>  ** inventoryTransferId*
>  ** fromDate*
>  ** thruDate
>  * Refactor existing *InventoryItemDetail* entity
>  ** inventoryTransferId*
>     *Screenflow for Approach #1:* 
>  * Add a new *Find Transfer Requirements* screen.
>  ** Transfer Requirements can be searched with following parameters:
>  *** Requirement ID
>  *** Status ID
>  *** Shipment ID
>  *** Origin Facility ID
>  *** Destination Facility ID
>  *** Product ID
>  *** Description
>  *** Requirement Start Date
>  *** Required By Date
>  
>  * Option for creating Inventory Transfer for Un-approved requirements will 
> be disabled.
>  * User can select multiple Approved Transfer Requirements between any two 
> given facilities to create Single Inventory Transfer between them.
>  * When user hit ‘Create Inventory Transfer’ option new Inventory Transfers 
> would be created by consolidating all products/items requirements between any 
> two given locations.
>  * System would auto-assign the required quantity from existing 
> inventoryItems based on FIFO.
>  * Add a new *View Inventory Transfer* screen
>  ** From here user can manually override the auto-assigned InventoryItems 
> against each product.
>  ** User can Add/Edit/Delete the Transfer Items.
>  ** After assigning InventoryItems user can Approve the Inventory Transfer.
>  ** Upon Approval ATP would get reduced to the tune of assigned quantity from 
> each inventory item.
>  * Refactor the ‘Packing’ screen and allow to submit the Approved Inventory 
> Transfer Id (aka OrderId). Only Approved Inventory Transfer will be available 
> to pack.
>  * Upon completion of packing reduce the QOH from assigned inventory items to 
> the tune of packed quantity.
>  * After completing packing, shipment will be created in shipped status and 
> Inventory Transfer will be marked as 'SENT'.
>  * Once received at destination location the ATP/QOH would be increased up to 
> the transferred quantity per product and shipment will be marked as 
> 'RECEIVED' and Inventory Transfer will be marked as 'COMPLETED'.
>  
>     *To Be Business Process for Approach #1:*
> *!InventoryTransferModelLevel1.png!*
>  
> h2. *Design Approach #2:*
>  * Alter *InventoryTransfer* entity as header entity as follows:
>  ** Add primaryShipmentId
>  ** Remove inventoryItemId
>  
>  * Add new entity *InventoryTransferItem*
>  ** inventoryTransferId*
>  ** InvtransferItemSeqId*
>  ** inventoryItemId
>  ** shipmentId
>  ** shipmentItemSeqId
>  ** quantity
>  ** unitPrice
> Having InventoryItem detail at InventoryTransferItem level will help us to 
> manage multiple Items for same InventoryTransfer and each 
> InventoryTransferItem can be fulfilled via multiple Inventory items and/or 
> multiple Shipments. 
>  * Create TransferItemBilling entity to support tax invoice
>  ** inventoryTransferId*
>  ** InvtransferItemSeqId*
>  ** invoiceId*
>  ** invoiceItemSeqId*
>  ** itemIssuanceId
>  ** shipmentReceiptId
>  ** quantity
>  ** amount
>  * Create *InventoryTransferContanctMech* entity to support InventoryTransfer 
> Contact Mechanism
>  ** inventoryTransferId*
>  ** contactMechPurposeTypeId*
>  ** contactMechId*
>  * Create *RequirementInventoryTransfer* entity
>  ** requirementId*
>  ** inventoryTransferId*
>  ** fromDate*
>  ** thruDate
>  * Refactor existing *InventoryItemDetail* entity
>  ** inventoryTransferId*
>  
>     *Screenflow for Approach #2:* 
>  * Add a new *Find Transfer Requirements* screen.
>  ** Transfer Requirements can be searched with following parameters:
>  *** Requirement ID
>  *** Status ID
>  *** Shipment ID
>  *** Origin Facility ID
>  *** Destination Facility ID
>  *** Product ID
>  *** Description
>  *** Requirement Start Date
>  *** Required By Date
>  
>  * Option for creating Inventory Transfer for Un-approved requirements will 
> be disabled.
>  * User can select multiple Approved Transfer Requirements between any two 
> given facilities to create Single Inventory Transfer between them.
>  * When user hit ‘Create Inventory Transfer’ option new Inventory Transfers 
> would be created by consolidating all products/items requirements between any 
> two given locations.
>  * System would auto-assign the required quantity from existing 
> inventoryItems based on FIFO. 
>  * Add a new *View Inventory Transfer* screen
>  ** User can manually override the auto-assigned InventoryItems against each 
> product.
>  ** User can Add/Edit/Delete the Transfer Items.
>  ** After assigning InventoryItems user can Approve the Inventory Transfer.
>  ** Upon Approval ATP would get reduced to the tune of assigned quantity from 
> each inventory item.
>  * Refactor the ‘Packing’ screen and allow to submit the Approved Inventory 
> Transfer Id (aka OrderId). Only Approved Inventory Transfer will be available 
> to pack.
>  * Upon completion of packing reduce the QOH from assigned inventory items to 
> the tune of packed quantity.
>  * After completing packing, shipment will be created in shipped status and 
> Inventory Transfer will be marked as 'SENT'.
>  * Once received at destination location, the ATP/QOH would be increased upto 
> the transferred quantity per product and same shipment will be marked as 
> 'RECEIVED' and Inventory Transfer will be marked as 'COMPLETED'.
>  
>     *To Be Business Process for Approach #2:*
> !InventoryTransferModelLevel1.png!
> h2. *Design Approach #3:*
>  
> Third approach is to use Order Data Model.
>  * Introduce a new order type 'Replenishment Order (RO)' or 'Transfer Order' 
> along with new Shipment Type ‘Transfer Shipment’.
>  * We can initiate the RO from one facility to another upon approving 
> transfer requirements between any two facilities.
>  * Status of RO will be maintained in OrderStatus entity.
>  * Orderitem entity will be used to transfer multiple products under a single 
> RO.
>  * User can manually override the default reservations per order line item so 
> as to allow transferring any specific inventory items between two facilities.
>  * Perform the Reservation from assigned inventory items against each of the 
> order item as soon as RO is approved.
>  * Once RO is packed, associate a new shipment with type as ‘Transfer 
> Shipment’ to the RO.
>  * Upon successful shipping of RO, move the RO to ‘Sent’ status and 
> corresponding Transfer Shipment to ‘Sent’ status as well.
>  * Shipping will also trigger the Invoicing (for taxation purpose wherever 
> required).
>  * Allow to receive the RO at destination facility (similar to PO).
>  * Once successfully received, increase the ATP/QOH per transferred product 
> to the tune of transferred units. It would move the Order from ‘Sent’ to 
> ‘Completed’ or ‘Received’ status and corresponding shipment as well should be 
> moved to ‘Completed’ or ‘Received’ status.
>  * OrderContent entity could be used to attach Stock transfer document(legal 
> document vary according to country law) with inventorytransfer.
>  
>     *To Be Business Process for Approach #3:*
> !OrderModelActivityLevel1.png!
> h2. *Design Approach #4*
>  
> Fourth approach is to use Order Data Model as mentioned in the Mail Thread.
>  * Introduce a new order type 'Replenishment Order (RO)' or 'Transfer Order' 
> along with new Shipment Type ‘Transfer Shipment’.
>  * We can create a RO from one facility which create an automated PO for 
> another facility.
>  * Status of RO will be maintained in OrderStatus entity.
>  * Tax is applied or not, can be configurable at product level.
>  * Shipment is already associated with order data model.
>  * Order adjustment will be used to record adjustments.
>  * Orderitem entity will be used to transfer multiple products at a time.
>  * Reservation and issuance are already working in order data model.
>  * OrderContent entity could be used to attach Stock transfer document(legal 
> document vary according to country law) with inventorytransfer.
>     *To Be Business Process for Approach #4:*
> *!OrderModelActivityLevel1.png!*



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to