-
Notifications
You must be signed in to change notification settings - Fork 9
Description
Overview
The BOM section of projects on Finishline provides a way for users to track different materials required in the production of that project, but it currently has inconsistent usage across engineers. While the current implementation tracks useful information in a relevant structure, it lacks a useful way to track BOMs through the full engineering lifecycle, and it lacks integration with other Finishline tools that could increase its value to users. This epic is a collection of changes to BOMs that will increase their usability and integration.
Stakeholders
Product Stakeholder: @chpy04
Software Stakeholder: @chpy04 @walker-sean
Reference Users: @chpy04
User Story
As an engineer, I want to input BOM items for which I do not have all the details, so that I can use the BOM as a collaborative list that can be iterated on as the project changes.
As an engineer, I want to generate a reimbursement request for a BOM line item with a single click that autofills as much information as possible, so I don't have to re-enter all the information.
As an engineer, I want a BOM line item to be automatically generated by a reimbursement request if the line item does not already exist, so that the BOM will more accurately represent all the items used for the creation of that project
Success Metrics
The primary success metric for this epic is an increased usage of the BOM feature on Finishline. More specifically, there should be an increase in usage during the planning stages of projects. Additionally, there should be a much more obvious link between BOM line items and reimbursement requests, that is intuitive and clear to users.
Rollout Plan
This epic should be rolled out continuously throughout development with incremental merges into Develop. For more coupled tickets, mini-feature branches can be used to group functionality, but these should be as short-lived as possible.
Out of Scope
Integration BOMs with finance views to display projected costs are out of scope for this epic. In addition, changes to the overarching frontend design are out of scope.
Background / Context
The current BOM system allows users to track line items and assemblies in the BOM tab of projects. While the system tracks most of the necessary information needed for these line items, it requires many pieces of information that might not be known until the item is actually being purchased, such as the manufacturer, part number, and price. This makes it difficult and unintuitive to keep track of line items that aren't ready to be purchased yet, or aren't fully decided on in terms of specific details. As a result, most users do not use the BOM in the planning stages of projects, and by the time they have all the details about the BOM, they just make reimbursement requests rather than enter into a BOM that serves no purpose. Additionally, linking reimbursement requests to BOMs can only be done through the BOM page with a dropdown of RR numbers. This is counter-intuitive as BOM items would typically be made before corresponding reimbursement requests. Finally, users have to re-enter all the information from the line item when filling out a reimbursement request, so there is little motivation to keep BOMs up to date. All of these have led to a feature that tracks the right information, but lacks a cohesive user experience that increases productivity, which is what this epic aims to accomplish.
Acceptance Criteria & Mock-ups
Required and Optional Fields
In order to allow users to add materials to the BOM as early in the development process as they like, many of the fields in the BOM materials should be made optional. Specifically, manufacturer, all part details, and all price information should be optional. Additionally, in the form to create a BOM material, the reimbursement # field should be moved to the bottom of the form in the additional information section, and it should be clear to the user that only the top section with name, status, and type are required to create the material.
Copying From Existing BOM materials
When a user selects "New Entry" and the form to create a material opens, in the bottom left of the form there should be a button to "Copy From Existing BOM". If the user clicks this button, a new form modal should pop up on top of the existing one with the title "Select Material to Copy". This form modal should have three autocompletes on top of each other. The first autocomplete should be to select a car, should show the cars number in the options, and should default to the latest car. The second one should be for the user to select a project, where the autocomplete option shows the wbs number, and the project name. This should not have a default. The third autocomplete should show all the material entries within the BOM for the selected project (or be disabled if no project has been selected). Each material in the autocomplete should show the name, manufacturer, material type, and if it is a part of an assembly, the assembly's name. Once a line item is selected, there should be a green "Copy" button at the bottom. Selecting this button should take the user back to the original form, where the name, material type, manufacturer, manufacturer part number, pdm file name, link, quantity, unit, price, and notes have been pre-filled with the copied materials values. If the user had already entered values into the form before selecting the copy button, these values should be overwritten. The reimbursement number, status, and assemblies should never be copied over.
Copying From Entire BOMs
Similar to how users should be able to copy specific BOM materials from other projects, they should also be able to copy entire BOMs, for example, if they wanted to iterate on top of a previous year's BOM. To do this, there should be a button at the bottom to the right of the "Show All Columns" button with the text "Copy Existing BOM". Clicking this button should open a form modal with two side by side autocomplete drop-downs for a car and project similar to the ones in the form above. When a project is selected, a grid should appear on the form modal with the all the materails, including each material's name, manufacturer, material type, and if it part of an assembly the assemblies name. There should then be a check box on the left side of every material in the grid determining if that material should be included in the copied version of the BOM. By default, ever material should be selected. After the user has unselected any materials they do not want to be included in the copied BOM, there should be a "Copy BOM" button at the bottom right which when clicked opens a confirmation modal with the text "Are you sure you want to copy materials from to ". If the user confirms this modal, all the selected materials and assemblies should be copied into the new BOM. Similar to copying individual materials above, the reimbursement numbers and statuses should not be copied over, and instead all statuses should be set to "not ready to order".
Selecting BOM materials when Creating Reimbursement Requests
In the "Purchased Items" section of the reimbursement request form, if the user adds a project, instead of a text box for "Product Name/Description", there should now be an autocomplete dropdown with all the materials in that project that shows the name, manufacturer, and type. To the right of the autocomplete, there should be a "Create New Material" button where the user can add a material directly from the RR page. If the user clicks this button, the same create material form as above should pop up. After the user fills out the form and hits "Submit", the material should be added to that project's BOM, and selected in the RR form's autocomplete. The user should not be taken to the BOM page at any point, and should instead be directed back to the RR page after filling out the form. When the user finishes the material form, a toast popup should make it clear that a new material has been created. Upon submitting the reimbursement request, any selected materials should be linked with the created RR and marked as "Ready to Order". When payment details are added to the RR, all linked materials should be marked as "Ordered".
From a technical perspective, this means that reimbursement products will no longer be strings and instead will be relations to BOMs. In order to preserve backwards compatibility, the database should support both, and if the user edits a RR with a product that has a string, it should allow them to edit the name as the current implementation supports. However, with all RRs going forward, the string should not be an option for the user and they should be forced to add or create materials. Note that this is only products on projects. Products on other categories should still be strings.
Creating Reimbursements From Line Items
Users should be able to automatically generate a reimbursement request from a line item. To do this, in the RR# column, if there is a linked RR it should show a clickable number that takes the user to that RR, but if there is no linked RR this column should have a "Create RR" button. If a user clicks this button, they should be taken to the create reimbursement request page, and the project should be selected with the BOM material selected from the dropdown and the price pre-filled as the quantity * unit price if those fields exist.
Tickets
- #
- #