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.
40 lines
1.1 KiB
OpenEdge ABL
40 lines
1.1 KiB
OpenEdge ABL
' ========================================
|
|
' 类模块: clsCategory
|
|
' 用途: 表示物料类别及其层级关系
|
|
' ========================================
|
|
Option Explicit
|
|
|
|
Public categoryName As String
|
|
Public ParentCategoryName As String
|
|
Public materials As collection ' 存储 clsMaterialItem 对象
|
|
Public SubCategories As collection ' 存储子类别 clsCategory 对象
|
|
Public IsLeafCategory As Boolean ' 是否叶子类别(无子类别)
|
|
|
|
Private Sub Class_Initialize()
|
|
Set materials = New collection
|
|
Set SubCategories = New collection
|
|
IsLeafCategory = True
|
|
End Sub
|
|
|
|
' 添加物料
|
|
Public Sub AddMaterial(mat As clsMaterialItem)
|
|
materials.Add mat, mat.code
|
|
End Sub
|
|
|
|
' 添加子类别
|
|
Public Sub AddSubCategory(cat As clsCategory)
|
|
SubCategories.Add cat, cat.categoryName
|
|
IsLeafCategory = False
|
|
End Sub
|
|
|
|
' 获取物料(按代号)
|
|
Public Function GetMaterial(code As String) As clsMaterialItem
|
|
On Error Resume Next
|
|
Set GetMaterial = materials(code)
|
|
On Error GoTo 0
|
|
End Function
|
|
|
|
' 检查是否有子类别
|
|
Public Function HasSubCategories() As Boolean
|
|
HasSubCategories = (SubCategories.Count > 0)
|
|
End Function |