Sponsored Development: Libero Product Configuration BOM
Contents
Project Team
Coordinator
Functional Design
- Victor Perez (contribute with work) of e-Evolution
- Miguel Jimenez (contribute with work) of e-Evolution
Developers
- Fernando Jimenez (contribute with work) of e-Evolution
- Tim Heath (contribute with work)
Testers
- Miguel Jimenez (contribute with work) of e-Evolution
- Fernando Jimenez (contribute with work) of e-Evolution
- Tim Heath (contribute with work)
Sponsors
- e-Evolution,SC (with work)
- Tim Heath (with work)
others welcome
Requirements
Is necessary a new functionality to be able to reschedule the visual form (Drag&Drop)
- Current Functionality- reproduce in Garden World
- Define a resource under Libero manufacturing
- Increase daily capacity by multiples depending on how many resources there are that do the exact same thing
Note: Current in Libero you can define rough capacity using the field Daily Capacity, but also you can use the Resource Type to configure (Time Slot & Day Slot)
I have think use the Tab Unavailable to increase or decrease the capacity to specific resource.
Current the hierarchy is support partiality, the reason is that a resource is created as a product and you can define a product as Summary Level here we create the hierarchy, now we need implement the summary capacity levels
Theres is a hierarchy in defining workstations as follows:
- A Plant
- A Line
- A Workcenter
- A Workstation
- A Workcenter
- A Line
Important Concepts
# | Name | Description | Notes | |
---|---|---|---|---|
1 | Logical Product Configuration | The Logical Product Configuration concept deals with the templating of a product. The templating of a product involves Product Configuration BOM's, Alternate groups, bom lines of Product Configuration BOM's with bom component types of optional, Alternate, and Alternate Default | This idea of a logical view is borrowed from Entity Relational Diagramming in the Database Paradigm. A database designer creates a logical view of the database defining entities and relationships between those entities. In this logical view of a product we are specifying the possibilities for the end product that will be built via manufacturing resources, planning, and scheduling via manufacturing orders, inventory and sales orders. The product possiblities involve optional products and multiple choices for a product. An example of this would be a computer. A computer may or may not have a Monitor, but this part/product is not required to create a computer. However a computer must have RAM. Choices for RAM could be 512MB or 1024MB etc... | |
2 | Physical Product Configuration | The Physical Product Configuration concept deals with implementing the chosen configurations of a templated product via a real product definition. The actualizing of a product's chosen configuration involve Product Configuration BOM Instances, bom lines of Product Configuration BOM Instances with a bom component type of Standard Product | This idea of a physical view is borrowed from Entity Relational Diagramming in the Database Paradigm. A database designer creates a logical view of the database defining entities and relationships between those entities. The database designer then converts this logical diagram to an actual physical diagram with real tables implementing the entities and relationships between them. In order for Libero to actually create a product it must have a product with real parts specified via BOM's and Routes without ambiguity. If the real parts/real BOM's were not defined for a product instance, the workers would not know whether to make a computer with 512MB Ram or 1024MB of Ram. |
Requirements
Add new functionality to management of Product Configuration with features & Option BOM functionality to Adempiere Libero
- Current Functionality- reproduce in Garden World
- Have a need for a product with difference choices for different parts defined in a BOM(s)
- You must define a BOM for each of the possible combinations currently in libero to handle this
- Enhancements Needed
- Instead of defining a BOM for every combination, define one Product Configuration BOM with different choices for each part
- Enable the product configuration when you entry a sales order, such a way the salesman can be able to configure a product and create a BOM to use the features and options
Note: currently Libero can create a BOM for making to order in a manual way, you can define a BOM as Make to Order Libero create automatically the Manufacturing Order.
Formal Requirements
# | Description | Notes | Difficulty |
---|---|---|---|
1 | Allow for a product configuration Master BOM Type | Necessary so that when this BOM type is chosen in a sales order the appropriate choices can be shown to the user. The user must choose a configuration that exists as an instance of the product configuration Master BOM or an error should be produced to the user saying that such a product configuration is not valid | Low |
2 | Allow for a component group | Basically the same as an alternative group in the Adempiere BOM area but for Libero | Low |
3 | Allow for a bom component type of option that belong to a component group | Basically the same as an alternative bom component type in the Adempiere BOM area but for Libero | Low |
4 | Allow for a bom component type of optional | Basically the same as an optional product bom component type in the Adempiere BOM area but for Libero | Low |
5 | Allow for a bom component type of an option that can be a default choice of a component group | Basically the same as an alternative (default) bom component type in the Adempiere BOM area but for Libero | Low |
6 | Allow for a product configuration Master BOM instance that is associated with one product configuration Master BOM | A product configuration Master BOM instance has no optional or component group entries in it. It must also contain only those parts that are defined/possible in the product configuration Master BOM | Low |
7 | Allow for changes in the product configuration Master BOM to cause changes in the product configuration Master BOM instances | For example, if you added a required part to the product configuration Master BOM it should automatically update all product configuration Master BOM instances associated with that product configuration Master BOM | Low |
8 | Allow for validation of a possible configuration of a product to make sure that a product configuration Master BOM instance exists | If a user chose a possible product configuration that did not have an instance, that would be an error. | Low |
9 | Allow for custom product configuration through a sales order | The user should see a list of parts with the appropriate radio buttons, check boxes, etc... for a product configuration type BOM, similar to what a Drop BOM would show | Low |
10 | The hierarchy of a product that is a product bom configuration instance should be the same hierarchy (BOM's, and sub BOM's) as the product configuration BOM. | The user should see a list of parts with the appropriate radio buttons, check boxes, etc... for a product configuration type BOM, similar to what a Drop BOM would show | Low |
Design Ideas
- Add a new BOM Product Configuration
- Add a new Component Type Called Option
- Add a new Field Component Group
- Re-factoring the current ADempiere Drop BOM and Kits , and use the infrastructure of Libero
Note: Show a Drop BOM into Sales Order Line when you are entry a product configure, It functionality need are create and it is the more complex
I have a great question How we should integrate the Instance Attributes into management Product configuration?
GUI Design Ideas
- Add a new tab under the Sales Order Line Tab that is titled product configuration. It will only enable when the user picks a product that is associated with a product configuration BOM. Fernando Jimenez said that maybe with the display logic field on the tabs this tab enabling can be done.
- Within the product configuration tab a button will exist to press to bring up the Libero Drop BOM Form (I would like to embed the form into the tab somehow but this functionality doesn't appear to be supported)
Testing
Test Scenarios
# | Given | Steps | Notes | Expected Result |
---|---|---|---|---|
1 | No product configuration BOM's are in the system | Open the Libero BOM Drop gui and select the product drop down | The product drop down is populated with product configuration BOM's | The product drop down should be empty |
2 | One product configuration BOM with one bom line of bom component type standard product | Open the Libero BOM Drop gui and select the product drop down and one entry should be shown with the name of the one product configuration BOM, click on it | Because a bom line of bom component type standard product is mandatory and needs no user input for choices, it is unnecessary to show the user this information | The select product area should still be blank |
3 | One product configuration BOM is in the system with 1 bom line of bom component type optional product | Open the Libero BOM Drop gui and select the product drop down and select the one product configuration BOM name | The product drop down is populated with product configuration BOM's | The product drop down should show one entry with a checkbox that is unchecked |
4 | One product configuration BOM is in the system with 2 bom lines associated with an alternative group of test group. The first bom line is of bom component type Alternative with name choice1. The second bom line is of bom component type Alternative (Default) with name choice2. Both bom lines are associated with the one production configuration BOM in the system. There is also one open sales order in the system | Open the Libero BOM Drop gui and select the product drop down and select the one product configuration BOM name. Then choose the sales order in the drop down named Order. Now click on the green arrow button. | A product configuration BOM is a template for choosing real products with that chosen configuration. When the green check mark is checked a product is earch for that satisfies the chosen configuration. Obviously this would be a product that is associated with product configuration BOM instances. If a product is not found meeting that chosen configuration, then there are two possibilities. The first possiblitiy is that the product configuration is not valid. The second possibility is that the chosen configuration is valid but a mistake has been made by the user who has not created a product configuration bom instance that is associated with a product of this chosen configuration. | The product drop down should show two entries in the select product area with names: test group: choice1, test group: choice2 with the choice2 radio button selected. An error message should be shown saying "No product found for this chosen configuration" |
5 | One product configuration BOM is in the system with 2 bom lines associated with an alternative group of test group. The first bom line is of bom component type Alternative with name choice1. The second bom line is of bom component type Alternative (Default) with name choice2. Both bom lines are associated with the one production configuration BOM in the system. There is also one open sales order in the system. There is one product configuration BOM instance associated with a product named testgroupchoice1, with a bom line of type standard product associated with product named testgroupchoice1 | Open the Libero BOM Drop gui and select the product drop down and select the one product configuration BOM name. Then choose the sales order in the drop down named Order. Now click on the green arrow button. | A product configuration BOM is a template for choosing real products with that chosen configuration. When the green check mark is checked a product is earch for that satisfies the chosen configuration. Obviously this would be a product that is associated with product configuration BOM instances. If a product is not found meeting that chosen configuration, then there are two possibilities. The first possiblitiy is that the product configuration is not valid. The second possibility is that the chosen configuration is valid but a mistake has been made by the user who has not created a product configuration bom instance that is associated with a product of this chosen configuration. | The product drop down should show two entries in the select product area with names: test group: choice1, test group: choice2 with the choice2 radio button selected. An entry should be shown in the sales order line tab of the one open sales order in the system with product named testgroupchoice1 |
6 | There is one open sales order in the system. One product configuration BOM is in the system with 2 bom lines associated with an alternative group of test group. The first bom line is of bom component type Alternative with name choice1. The second bom line is of bom component type Alternative (Default) with name choice2. Both bom lines are associated with the one production configuration BOM in the system. There is one product configuration BOM instance associated with a product named testgroup1choice1, with a bom line of type standard product associated with product named testgroupchoice1. Another product configuration BOM is in the system with 2 bom lines associated with an alternative group of test group 2. The first bom line is of bom component type Alternative with name choice1. The second bom line is of bom component type Alternative (Default) with name choice2. Both bom lines are associated with the second production configuration BOM in the system. There is one product configuration BOM instance associated with a product named testgroup2choice1, with a bom line of type standard product associated with product named testgroup2choice1. There is a product named productbominstance with two product bom instances underneath it at the same level with bom lines of type standard product with products testgroupchoice1 and testgroup2choice1 respectively | Open the Libero BOM Drop gui and select the product drop down and select the one product configuration BOM name. Then choose the sales order in the drop down named Order. Now click on the green arrow button. | A product configuration BOM is a template for choosing real products with that chosen configuration. When the green check mark is checked a product is earch for that satisfies the chosen configuration. Obviously this would be a product that is associated with product configuration BOM instances. If a product is not found meeting that chosen configuration, then there are two possibilities. The first possiblitiy is that the product configuration is not valid. The second possibility is that the chosen configuration is valid but a mistake has been made by the user who has not created a product configuration bom instance that is associated with a product of this chosen configuration. | The product drop down should show two entries in the select product area with names: test group: choice1, test group: choice2 with the choice2 radio button selected. There should also be another two entries in the select product area with names: test group 2: choice1, test group 2: choice2 with the choice2 radio button selected. An entry should be shown in the sales order line tab of the one open sales order in the system with product named productbominstance |
FAQ
How do I make sure that a product does not have an invalid product configuration?
When you define the physical product configuration instances, just make sure that you don't define a configuration that is invalid. Remember that the end result of the Libero BOM Drop is a real product that is inserted into the order line of a sales order. The sales configurator finds this real product by looking through the products associated with product configuration bom instances that match the configuration chosen. If it can't find this instance there is no way it can be created and therefore is an invalid configuration.
Why must I add a part to a product configuration BOM and not just add the part to a product configuration BOM instance?
Remember that there could be many product configuration BOM instances and if you added a part to a particular instance of a product and that part was required by all instances of the product, this would be an error. By requiring the user to add a part in the product configuration BOM all instances of the product are updated.
Coding Strategy
Libero Drop BOM
Overview
Requirement#(s) | Test#(s) | Highlevel Algorithm | Lowlevel Algorithm | Notes | Difficulty |
---|---|---|---|---|---|
8 | 4,5,6 | Search for a product that has the chosen configuration | Each choice is associated with a Product Configuration BOM. Each choice is shown in a depth first search order of the Product Configuration BOM hierarchy. I can search for a product BOM configuration instance(s) for each choice chosen by looking for a product configuration BOM instance with a bomline of that product with bom component type of standard product that is associated with that group (if a choice) or just the product if optional but also associated with the product configuration BOM. It is important that the hierarchy and # of expected bom lines be correct and based on the product configuration BOM. That is the tedious part. It may be easy to just find the highest level product configuration BOM in the hierarchy then find all products associated with that product configuration BOM, then analyze each of them in turn to find the product that satisfies the configuration. This would be quicker then the initial algorithm I thought about. | I have a feeling that this could be time consuming but hopefully not. I also have a feeling that it could be implemented via a recursive algorithm. We know that every product bom configuration instance is associated with a product configuration bom. What is also interesting to understand is the required parts in product configuration BOM instance are not duplicated but just referenced in the product configuration BOM. As a result I believe this dictates that the product confguration BOM instance will only contain choices and not required parts. | High |
Future Enhancements
Overview
# | Enhancement Description | Notes | Difficulty |
---|---|---|---|
1 | A request to actually create production BOM instances via a gui automatically would a significant time saving enhancement | Implementing such an enhancement would not be that difficult. Basically you would have the exact same interface as the Libero Bom Drop but when you clicked on the green check mark it would create a production BOM instance(s). Right now people have to manually enter in all the actual instances which can be quite time consuming | Low |
2 | A request was made to make the sales configurator act in a more interactive user friendly way. If somehow the Sales Configurator could ask questions and based on the answers ask other questions until after all questions were answered the product was fully configured. I call this a kind of decision tree/expert system | To implement such an expert system would required an interference/rules engine. A free library that would allow for this kind of expert system could be JCLIPS, or ECLIPSE-CLP. I have actually thought of a way to implement this functionality without a formal inference/rules engine. Because the product configuration BOM's and product Configuration BOM instances are hierarchical they form a kind of decision tree. The Libero BOM Drop sales configurator shows choices in the hierarchical order that the product configuration BOM is defined. The Libero BOM Drop could present a choice and then search for all product configuration BOM instances with just that choice and determine the next possible choices the user could make to choose a valid configuration. It might also be useful to show how many valid possible choices exist as well. | High |
Videos of Deliverables
http://www.youtube.com/watch?v=yL3HRtEcRpU
Reference: