Fix bug where error messages from previous orders were accumulating:
- Add ClearErrorMessages() public method to BomExtractor class
- Initialize pErrorMessages as new collection in ExtractBom()
- Replace commented-out pErrorMessages.Clear with proper initialization
- Ensures each order's error information is independent
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Update MainModule to support component priority field:
- Read component priority from column E of [产品订单] worksheet
- Pass component priority to ProcessSingleModel function
- Apply category exclusion logic based on priority flag:
- When "否"/"0"/"FALSE", exclude "部件" category
- Only extract sub-category materials when disabled
- Consistent with BIPUploadModule implementation
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add support for excluding "部件" category based on component priority flag:
- BomExtractor: Add exclude categories functionality
- Add pExcludeCategories collection member
- Add SetExcludeCategories() and ClearExcludeCategories() methods
- Modify DetermineRequiredCategories() to skip excluded categories
- BIPUploadModule: Read and use component priority field
- Read component priority from column E of [产品订单] worksheet
- Pass component priority to ProcessSingleOrder()
- When priority is "否"/"0"/"FALSE", exclude "部件" category
- Only extract sub-category materials when component priority is disabled
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add BIPUploadModule to process product orders and generate BIP upload format:
- Read order data from [产品订单] worksheet
- Extract BOM using existing BomExtractor and ProductModelParser
- Output to [BIP上传模板] with formatted fields:
- Source document number, product code, quantity
- Line number (base 7000 + index)
- Material code (66 code from BOM)
- Supply method, required date, issue organization
- Planned outbound quantity, remarks for errors
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Changes:
1. Update all modules to use LoadData(wsPlatform) instead of LoadData(wsConfig, wsPlatform)
- modModelParserExamples.bas: Update 7 example procedures
- modBOMProcessor.bas: Update 4 procedures
- modModelParserTest.bas: Update 2 test procedures
2. Fix completeness check logic in GetValidMaterialsByModel
- Only check root categories to avoid duplicate checking of subcategories
- Previously, all required categories (including subcategories) were checked,
causing subcategories to be added to missing list multiple times
- Now only checks categories with ParentCategoryName = ""
- CheckCategoryCompleteness already recursively checks all subcategories
3. Improve completeness judgment logic for categories with subcategories
- Method 1: Parent category has 1 matching material → Complete
- Method 2: Parent category has 0 matching materials, but all subcategories are complete → Complete
- Other cases → Incomplete
Impact:
- Fixes "category missing" errors in Example9_BatchProcessOrders_WithCheck
- Eliminates duplicate entries in missing categories list
- Properly handles category hierarchy where parent categories are satisfied through subcategories
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Major changes:
- Remove dependency on separate [领料配置] sheet
- Load all data from [平台配置清单] in a single pass
- Add "类别选用条件" (CategorySelectCondition) field to support dynamic category filtering
- Add "66代码" (Code66) field for 66-system integration
- Refactor completeness check logic to only verify required categories
Data model changes:
- clsMaterialItem: Add CategorySelectCondition and Code66 properties
- clsCategory: Add CategorySelectCondition property and IsRequiredForModel() method
- clsBOMManager: Refactor LoadData() to use single data source
- clsBOMManager: Add GetRequiredCategories() method
- clsBOMManager: Update GetValidMaterialsByModel() to use category selection conditions
New workflow:
- LoadData() now takes only wsPlatform parameter (removed wsConfig)
- Categories are filtered by "类别选用条件" before completeness check
- Categories with empty selection condition are always required
- Categories with non-empty condition are checked against model specifications
Documentation:
- Update CLAUDE.md with new sheet structure
- Add comprehensive refactoring plan document
- Add v2.0 LoadData flow analysis with Mermaid diagrams
- Add platform configuration sheet reference
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove ThisWorkbook and worksheet class modules (Sheet1-4, Sheet8, Sheet9, Sheet11, Sheet16) from the VBA metadata as these document modules do not need to be tracked separately.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added two new extraction rules to clsConditionExtractor:
- azxs (安装形式): Extract installation form code from InstallForm field
- bkxs (表壳形式): Extract shell form code from ShellForm field
Examples:
- azxs: A0 (径向无边), Z0 (中轴向无边)
- bkxs: 532 (53=304外壳+安装式, 2=外卡式)
These new conditions can now be used in material selection expressions.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated the source Excel workbook path from YTHN-100.A0.532-BOM-1.2版 Claude.xlsm to YTHN-100.xlsm to reflect the renamed workbook file.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Commented out verbose Debug.Print statements in `GetMaterialsByModel` and `FilterCategoryWithSubcategories` to reduce console noise.
- Added validation checks to ensure required worksheets ('平台配置清单', '产品订单') exist before loading data.
- Refactored order processing logic to aggregate results into a Collection for structured output generation, including headers.
- 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.
- Introduced a comprehensive document detailing the project overview, goals, core functionalities, and technical architecture for the order material extraction feature.
- Defined the product model coding rules and extraction logic for selection conditions.
- Designed class structures for model parsing, condition evaluation, and order material list management.
- Outlined implementation steps, testing plans, and risk assessments for the development process.
- 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