- Update GetValidMaterialsByModel to aggregate and return missing
category names under the "MissingCategories" key.
- Remove debug print statements and unused variables to improve
code cleanliness.
- Enhance result visualization to display completeness status
with color formatting and detailed material tables.
Implemented logic to retrieve materials based on a model string and verify if the resulting set is complete.
Added:
- `GetValidMaterialsByModel`: Parses the model, extracts conditions, and matches materials against root categories.
- `CheckCategoryCompleteness`: Recursively validates categories to ensure exactly one material match per required category (leaf or parent).
This enables the BOM Manager to return a collection of materials alongside a boolean flag indicating if the collection satisfies the structural completeness rules.
Added the `autoFallback` optional parameter to `GetMaterialsByModel`.
This flag controls whether the search automatically descends to
subcategories when no matches are found in the target category.
- Defaults to True to maintain previous recursive behavior.
- When False, the search is restricted strictly to the specified category.
- Updated documentation with usage examples and logic explanations.
Refactored the material retrieval logic in GetMaterialsByModel to
automatically search within subcategories if no matches are found in the
specified parent category.
- Added FilterCategoryWithSubcategories helper function to handle recursive
searching and fallback logic.
- Restructured main function to delegate filtering to the new helper.
- Enhanced code comments to clarify the step-by-step matching process.
Enhanced the documentation for the GetMaterialsByModel method in clsBOMManager to clarify the core BOM logic. Replaced brief comments with a structured explanation covering the workflow (model parsing, condition extraction, material matching), detailed parameter descriptions, return value specifications (clsMaterialItem properties), and usage notes. This helps developers better understand the interaction between clsModelParser, clsConditionExtractor, and clsConditionMatcher.
Refine project overview to include specific business context (Blaidy Company) and the main workbook file. Restructure the architecture section into a layered object-oriented design (Data, Processing, Application layers) and define the responsibilities of core VBA classes.
Add new technical documentation sections covering:
- Model number format parsing structure
- Condition expression language syntax
- Category hierarchy logic and picking strategies
- Material matching pipeline flow
Include VBA code examples for key methods such as CollectAllMaterials and GetMaterialsByCategoryAndModel to illustrate recursive traversal and material retrieval logic. Clarify the structure of key Excel configuration sheets.
- Created clsBOMManager for managing BOM data
- Added clsCategory and clsMaterialItem for category and material representation
- Implemented methods for loading and organizing BOM data from Excel
- Introduced .gitignore to exclude unnecessary files
- Added metadata JSON for module tracking