[ 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)