[
https://issues.apache.org/jira/browse/OFBIZ-10365?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16727299#comment-16727299
]
Pawan Verma edited comment on OFBIZ-10365 at 12/22/18 9:00 AM:
---------------------------------------------------------------
As per the discussion on the [mailing
thread|[https://markmail.org/message/7qrjhpuvkc3n6hk4]] I am choosing Approach
#1 for the implementation.
I will create sub tickets under OFBIZ-10353 and upload patches as I complete
them so that it would be easy to review the whole effort.
If everyone is fine with Approach #1, we can close this task.
was (Author: pawan.verma):
As per the discussion on the [mailing
thread|[https://markmail.org/message/7qrjhpuvkc3n6hk4],] I am choosing Approach
#1 for the implementation.
I will create sub tickets under
[OFBIZ-10353|https://issues.apache.org/jira/browse/OFBIZ-10353] and upload
patches as I complete them so that it would be easy to review the whole effort.
> 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. Here is the link for the
> [discussion|https://markmail.org/message/7qrjhpuvkc3n6hk4].
> 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*
> * Refactor existing *InventoryItemDetail* entity
> ** inventoryTransferId
> ** invTransferItemSeqId
> *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 *Items* screen for Inventory Transfer
> ** From here user can manually override the auto-assigned InventoryItems
> against each product.
> ** User can Add/Edit/Delete the Transfer Items.
> ** User can merge transfer requirement of Created status of same facilities
> as Inventory Transfer Item.
> * Add a new *View Inventory Transfer* screen
> ** 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*
> * Refactor existing *InventoryItemDetail* entity
> ** inventoryTransferId
> ** invTransferItemSeqId
>
> *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 *Items* screen for Inventory Transfer
> ** From here user can manually override the auto-assigned InventoryItems
> against each product.
> ** User can Add/Edit/Delete the Transfer Items.
> ** User can merge transfer requirement of Created status of same facilities
> as Inventory Transfer Item.
> * Add a new *View Inventory Transfer* screen
> ** 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)