:-) Thank you Jacques!
On Wed, Feb 26, 2025 at 1:40 PM Jacques Le Roux <jler...@apache.org> wrote: > Hi, > > I'm quite happy sot see some recent activity in the wiki, including > Jacopo's > > :) > > Jacques > Le 26/02/2025 à 12:31, Yashwant Dhakad (Confluence) a écrit : > > > <https://cwiki.apache.org/confluence/display/~yashwant.dhakad?src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e> > Yashwant > Dhakad *created* a page > > [image: page icon] > <https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=340037431&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=view> > Apache > OFBiz Manufacturing – Parts Assembly Process > <https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=340037431&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=view> > > This guide explains how to set up the data for assembling a part > comprising of multiple components and subsequently how to execute the > assembly process using Manufacturing module available in *Apache OFBiz > suite. * > > For understanding it better let us take an example of assembling a *Skateboard > Deck* by first defining its structure. > *Step 1: Defining Products and Components* *1.1 Products List* > > *Product ID* > > *Name* > > *Type* > > *BoM Level* > > 1000 > > Skateboard Deck FG > > FINISHED_GOOD > > 0 > > 1001 > > Skateboard Deck Sub Assembly > > FINISHED_GOOD > > 1 > > 1002 > > Sticker > > FINISHED_GOOD > > 1 > > 1003 > > Warranty Card > > FINISHED_GOOD > > 1 > > 1004 > > Glue > > FINISHED_GOOD > > 2 > > 1005 > > Veneer Maple Face > > FINISHED_GOOD > > 2 > > 1006 > > Veneer Maple X Ply > > FINISHED_GOOD > > 2 > > 1007 > > Veneer Maple Core > > FINISHED_GOOD > > 2 > *1.2 Defining Products in XML* > > <entity-engine-xml> > <Product productId="1000" productTypeId="FINISHED_GOOD" > internalName="Skateboard Deck FG"/> > <Product productId="1001" productTypeId="FINISHED_GOOD" > internalName="Skateboard Deck Sub Assembly"/> > <Product productId="1002" productTypeId="FINISHED_GOOD" > internalName="Sticker"/> > <Product productId="1003" productTypeId="FINISHED_GOOD" > internalName="Warranty Card"/> > <Product productId="1004" productTypeId="FINISHED_GOOD" > internalName="Glue"/> > <Product productId="1005" productTypeId="FINISHED_GOOD" > internalName="Veneer Maple Face"/> > <Product productId="1006" productTypeId="FINISHED_GOOD" > internalName="Veneer Maple X Ply"/> > <Product productId="1007" productTypeId="FINISHED_GOOD" > internalName="Veneer Maple Core"/> > </entity-engine-xml> > > *1.3 Defining Products in SQL* > > INSERT INTO PRODUCT (PRODUCT_ID, PRODUCT_TYPE_ID, INTERNAL_NAME) VALUES > ('1000', 'FINISHED_GOOD', 'Skateboard Deck FG'), > ('1001', 'FINISHED_GOOD', 'Skateboard Deck Sub Assembly'), > ('1002', 'FINISHED_GOOD', 'Sticker'), > ('1003', 'FINISHED_GOOD', 'Warranty Card'), > ('1004', 'FINISHED_GOOD', 'Glue'), > ('1005', 'FINISHED_GOOD', 'Veneer Maple Face'), > ('1006', 'FINISHED_GOOD', 'Veneer Maple X Ply'), > ('1007', 'FINISHED_GOOD', 'Veneer Maple Core'); > > > *Step 2: Setting Up Bill of Materials (BoM)* *2.1 BoM Structure* > > *Parent Product* > > *Component Product* > > *Quantity* > > 1000 > > 1001 > > 1.000000 > > 1000 > > 1002 > > 1.000000 > > 1000 > > 1003 > > 1.000000 > > 1001 > > 1004 > > 0.830000 > > 1001 > > 1005 > > 2.000000 > > 1001 > > 1006 > > 2.000000 > > 1001 > > 1007 > > 3.000000 > > > *2.2 Defining BoM in XML* > > <entity-engine-xml> > <ProductAssoc productId="1000" productIdTo="1001" > productAssocTypeId="MANUF_COMPONENT" quantity="1.000000"/> > <ProductAssoc productId="1000" productIdTo="1002" > productAssocTypeId="MANUF_COMPONENT" quantity="1.000000"/> > <ProductAssoc productId="1000" productIdTo="1003" > productAssocTypeId="MANUF_COMPONENT" quantity="1.000000"/> > <ProductAssoc productId="1001" productIdTo="1004" > productAssocTypeId="MANUF_COMPONENT" quantity="0.830000"/> > <ProductAssoc productId="1001" productIdTo="1005" > productAssocTypeId="MANUF_COMPONENT" quantity="2.000000"/> > <ProductAssoc productId="1001" productIdTo="1006" > productAssocTypeId="MANUF_COMPONENT" quantity="2.000000"/> > <ProductAssoc productId="1001" productIdTo="1007" > productAssocTypeId="MANUF_COMPONENT" quantity="3.000000"/> > </entity-engine-xml> > *2.3 Defining BoM in SQL* > > INSERT INTO PRODUCT_ASSOC (PRODUCT_ID, PRODUCT_ID_TO, ASSOC_TYPE_ID, > QUANTITY) VALUES > ('1000', '1001', 'MANUF_COMPONENT', 1.000000), > ('1000', '1002', 'MANUF_COMPONENT', 1.000000), > ('1000', '1003', 'MANUF_COMPONENT', 1.000000), > ('1001', '1004', 'MANUF_COMPONENT', 0.830000), > ('1001', '1005', 'MANUF_COMPONENT', 2.000000), > ('1001', '1006', 'MANUF_COMPONENT', 2.000000), > ('1001', '1007', 'MANUF_COMPONENT', 3.000000); > *2.4 Screenshot For BoM * > > *2.5 Screenshot for BoM Simulation* > > > *2.6 Screenshot of BoM for Sub-Assembly* > > *2.7 Screenshot of BoM Simulation for Sub-Assembly* > > *Step 3: Configuring Manufacturing Routing & Tasks* > > Each *Work effort (Task)* represents a *step in skateboard assembly*. > *3.1 Routing for Skateboard Assembly* > > *WorkEffort ID* > > *Name* > > *Type* > > 2000 > > Apply Transfer to deck > > ROUTING > > 2001 > > Apply Transfer > > ROU_TASK > > > *3.2 Defining Routing in XML* > > <entity-engine-xml> > <WorkEffort workEffortId="2000" workEffortTypeId="ROUTING" > currentStatusId="ROU_ACTIVE" workEffortName="Apply Transfer to deck" > description="Apply Transfer to deck" quantityToProduce="0.000000"/> > <WorkEffort workEffortId="2001" workEffortTypeId="ROU_TASK" > currentStatusId="ROU_ACTIVE" workEffortPurposeTypeId="ROU_ASSEMBLING" > workEffortName="Apply Transfer" description="Apply Transfer"/> > > > <WorkEffortAssoc workEffortIdFrom="2000" workEffortIdTo="2001" > workEffortAssocTypeId="ROUTING_COMPONENT" sequenceNum="10" > fromDate="2016-11-10 16:28:27.529"/> > > > <WorkEffortGoodStandard workEffortId="2000" productId="1000" > workEffortGoodStdTypeId="ROU_PROD_TEMPLATE" fromDate="2016-11-01 > 12:00:00.0"/> > </entity-engine-xml> > *3.3 Defining Routing in SQL* > > INSERT INTO WORK_EFFORT (WORK_EFFORT_ID, WORK_EFFORT_NAME, > WORK_EFFORT_TYPE_ID) VALUES > ('2000', 'Apply Transfer to deck', 'ROUTING'), > ('2001', 'Apply Transfer', 'ROU_TASK'); > *3.4 Screenshot of Routing* > > *3.5 Screenshot of Routing Task * > > *3.6 Screenshot of Routing with Routing task Assoc:* > > *3.7 Screenshot of Routing with Deliverable Product Assoc:* > > *Step 4: Configuring Manufacturing Routing & Tasks For Sub Assembly* > > Each *WorkEffort* represents a *manufacturing step* in *Skateboard Deck > Assembly*. > *4.1 Routing for Skateboard Assembly * > > *WorkEffort ID* > > *Name* > > *Type* > > 3000 > > Skateboard Sub Assembly > > ROUTING > > 3001 > > LAM > > ROU_TASK > > 3002 > > Shape Deck > > ROU_TASK > > > *4.2 Defining Routing in XML* > > <entity-engine-xml> > <WorkEffort workEffortId="3000" workEffortTypeId="ROUTING" > currentStatusId="ROU_ACTIVE" workEffortName="Skateboard Deck Sub Assembly" > description="Skateboard Deck Sub Assembly" quantityToProduce="0.000000"/> > <WorkEffort workEffortId="3001" workEffortTypeId="ROU_TASK" > currentStatusId="ROU_ACTIVE" workEffortPurposeTypeId="ROU_ASSEMBLING" > workEffortName="LAM" description="LAM" quantityToProduce="0.000000"/> > <WorkEffort workEffortId="3002" workEffortTypeId="ROU_TASK" > currentStatusId="ROU_ACTIVE" workEffortPurposeTypeId="ROU_ASSEMBLING" > workEffortName="Shape Deck" description="Shape Deck"/> > > <WorkEffortAssoc workEffortIdFrom="3000" workEffortIdTo="3001" > workEffortAssocTypeId="ROUTING_COMPONENT" sequenceNum="10" > fromDate="2016-11-01 12:00:00.0"/> > <WorkEffortAssoc workEffortIdFrom="3000" workEffortIdTo="3002" > workEffortAssocTypeId="ROUTING_COMPONENT" sequenceNum="20" > fromDate="2016-11-01 12:00:00.0"/> > > <WorkEffortGoodStandard workEffortId="MANUF10169" > productId="DSK15144-00" workEffortGoodStdTypeId="ROU_PROD_TEMPLATE" > fromDate="2016-11-01 12:00:00.0"/> > </entity-engine-xml> > *4.3 Defining Routing in SQL* > > INSERT INTO WORK_EFFORT (WORK_EFFORT_ID, WORK_EFFORT_NAME, > WORK_EFFORT_TYPE_ID) VALUES > ('3000', 'Skateboard Deck Sub Assembly', 'ROUTING'), > ('3001', 'LAM', 'ROU_TASK'), > ('3003', 'Shape Deck', 'ROU_TASK'); > *4.4 Screenshot of Routing for Sub-Assembly* > > *4.5 Screenshot of Routing Task for Sub-Assembly* > > *4.6 Screenshot of Routing Assoc with Routing Task for Sub-Assembly * > > *4.7 Screenshot of Routing Assoc with Deliverable Product for Sub-Assembly* > > *5.4 Screenshot of Routing with Routing Task* *Step 6: Running Production* > > Now that we have *Products, BoM, Routing, and Tasks*, we can create a > *Production > Run*. > *6.1 Create Production Run* > > *6.2 View Production Run * > > *6.2 Creating a Production Run in XML* > > <entity-engine-xml> > <WorkEffort currentStatusId="PRUN_CREATED" > facilityId="WebStoreWarehouse" quantityToProduce="2.000000" > revisionNumber="2" workEffortId="10013" workEffortName="1000-Apply Transfer > to deck" workEffortPurposeTypeId="WEPT_PRODUCTION_RUN" > workEffortTypeId="PROD_ORDER_HEADER"/> > > > <WorkEffort currentStatusId="PRUN_CREATED" description="Apply > Transfer" facilityId="WebStoreWarehouse" priority="10" > quantityToProduce="2.000000" revisionNumber="1" workEffortId="10014" > workEffortName="Apply Transfer" workEffortParentId="10013" > workEffortPurposeTypeId="WEPT_PRODUCTION_RUN" > workEffortTypeId="PROD_ORDER_TASK"/> > > > <WorkEffort currentStatusId="PRUN_CREATED" > facilityId="WebStoreWarehouse" quantityToProduce="2.000000" > revisionNumber="2" workEffortId="10010" workEffortName="1001-Skateboard > Deck Sub Assembly" workEffortPurposeTypeId="WEPT_PRODUCTION_RUN" > workEffortTypeId="PROD_ORDER_HEADER"/> > > <WorkEffort currentStatusId="PRUN_CREATED" > facilityId="WebStoreWarehouse" quantityToProduce="2.000000" > revisionNumber="1" workEffortId="10011" workEffortName="LAM" > workEffortPurposeTypeId="WEPT_PRODUCTION_RUN" > workEffortTypeId="PROD_ORDER_TASK"/> > <WorkEffort currentStatusId="PRUN_CREATED" > facilityId="WebStoreWarehouse" quantityToProduce="2.000000" > revisionNumber="1" workEffortId="10012" workEffortName="Shape Deck" > workEffortPurposeTypeId="WEPT_PRODUCTION_RUN" > workEffortTypeId="PROD_ORDER_TASK"/> > > <WorkEffortGoodStandard workEffortId="10010" productId="1001" > workEffortGoodStdTypeId="PRUN_PROD_DELIV" fromDate="2025-02-24 > 16:56:56.000" statusId="WEGS_CREATED" estimatedQuantity="2"/> > <WorkEffortGoodStandard workEffortId="10011" productId="1004" > workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01 > 12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="1.66"/> > <WorkEffortGoodStandard workEffortId="10011" productId="1005" > workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01 > 12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="4"/> > <WorkEffortGoodStandard workEffortId="10011" productId="1006" > workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01 > 12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="4"/> > <WorkEffortGoodStandard workEffortId="10011" productId="1007" > workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01 > 12:00:01.000" throughDate="2025-02-25 08:35:00.004" statusId="WEGS_CREATED" > estimatedQuantity="6"/> > > > <WorkEffortGoodStandard workEffortId="10013" productId="1000" > workEffortGoodStdTypeId="PRUN_PROD_DELIV" fromDate="2016-11-01 > 12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="2"/> > <WorkEffortGoodStandard workEffortId="10014" productId="1001" > workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01 > 12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="2"/> > <WorkEffortGoodStandard workEffortId="10014" productId="1002" > workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01 > 12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="2"/> > <WorkEffortGoodStandard workEffortId="10014" productId="1003" > workEffortGoodStdTypeId="PRUNT_PROD_NEEDED" fromDate="2016-11-01 > 12:00:01.000" statusId="WEGS_CREATED" estimatedQuantity="2"/> > </entity-engine-xml> > *Step 7: Completing Production & Inventory Issue* > > Once production is complete: > > - *Inventory is issued from raw materials* > - *Finished goods (1000 - Skateboard Deck) are added to stock* > > *7.1 Issue Raw Materials data in XML* > > <entity-engine-xml> > <WorkEffortInventoryAssign workEffortId="10011" > inventoryItemId="10000" quantity="1.66"/> > <WorkEffortInventoryAssign workEffortId="10011" > inventoryItemId="10001" quantity="4"/> > <WorkEffortInventoryAssign workEffortId="10011" > inventoryItemId="10002" quantity="4"/> > <WorkEffortInventoryAssign workEffortId="10011" > inventoryItemId="10003" quantity="6"/> > > > <WorkEffortInventoryAssign workEffortId="10014" > inventoryItemId="10004" quantity="2"/> > <WorkEffortInventoryAssign workEffortId="10014" > inventoryItemId="10005" quantity="2"/> > <WorkEffortInventoryAssign workEffortId="10014" > inventoryItemId="10006" quantity="2"/> > </entity-engine-xml> > *7.2 Add Finished Product to Inventory in XML* > > <entity-engine-xml> > <WorkEffortInventoryProduced workEffortId="10010" > inventoryItemId="10004"/> > > <WorkEffortInventoryProduced workEffortId="10013" > inventoryItemId="10007"/> > </entity-engine-xml> > > > > [image: View page Icon] > <https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=340037431&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=view> > View > page > <https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=340037431&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=view> > • > [image: Add comment Icon] > <https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=340037431&showComments=true&showCommentArea=true&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=comment#addcomment> > Add > comment > <https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=340037431&showComments=true&showCommentArea=true&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=comment#addcomment> > • > [image: Like Icon] > <https://cwiki.apache.org/confluence/plugins/likes/like.action?contentId=340037431&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=like&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4c3JmOjhhYTk4MDg3NGUzNmExZWIwMTRlMzZhMjlkZjEyYTJlIiwicXNoIjoiYTVmNTJkNWYwYjZjOGE1NDUwM2VjM2ZiMWY3NDQ0ZWY4MGJlNWFjMGMyMGNiYTc3YTRlYWExMzAxZjViNTBiNCIsImlzcyI6ImNvbmZsdWVuY2Vfbm90aWZpY2F0aW9uc0FSRUgtWFVEMS1QT1FHLUNTQU8iLCJleHAiOjE3NDExNzQzMTIsImlhdCI6MTc0MDU2OTUxMn0.ocFgeMfe7lcrlS2VV-JYhpzJbUVvoz3_KoQ_Up_kAfo> > Like > <https://cwiki.apache.org/confluence/plugins/likes/like.action?contentId=340037431&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=like&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4c3JmOjhhYTk4MDg3NGUzNmExZWIwMTRlMzZhMjlkZjEyYTJlIiwicXNoIjoiYTVmNTJkNWYwYjZjOGE1NDUwM2VjM2ZiMWY3NDQ0ZWY4MGJlNWFjMGMyMGNiYTc3YTRlYWExMzAxZjViNTBiNCIsImlzcyI6ImNvbmZsdWVuY2Vfbm90aWZpY2F0aW9uc0FSRUgtWFVEMS1QT1FHLUNTQU8iLCJleHAiOjE3NDExNzQzMTIsImlhdCI6MTc0MDU2OTUxMn0.ocFgeMfe7lcrlS2VV-JYhpzJbUVvoz3_KoQ_Up_kAfo> > > Stop watching space > <https://cwiki.apache.org/confluence/users/removespacenotification.action?spaceKey=OFBIZ&src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=stop-watching&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4c3JmOjhhYTk4MDg3NGUzNmExZWIwMTRlMzZhMjlkZjEyYTJlIiwicXNoIjoiOTdhYTcyYWMyMGI2OGNhZjRiYzk5NzkyOWNiY2NhMDM3OWE4NGUyNmQ1YWJmNzU5NWY4MzAwMDEzNWY5MTlkNiIsImlzcyI6ImNvbmZsdWVuY2Vfbm90aWZpY2F0aW9uc0FSRUgtWFVEMS1QT1FHLUNTQU8iLCJleHAiOjE3NDExNzQzMTIsImlhdCI6MTc0MDU2OTUxMn0.D1am8TjqbSI6U8rF25gI3KMTMTvqroFwhgDdQvDN4GI> > • > Manage notifications > <https://cwiki.apache.org/confluence/users/editmyemailsettings.action?src=mail&src.mail.product=confluence-server&src.mail.timestamp=1740569512444&src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Apage-created-notification&src.mail.recipient=8aa980874e36a1eb014e36a29df12a2e&src.mail.action=manage> > [image: Confluence logo big] > This message was sent by Atlassian Confluence 7.19.30 > >