fix: improve component inventory insufficient error handling
All checks were successful
NTFY Notification / notify (push) Successful in 4s
All checks were successful
NTFY Notification / notify (push) Successful in 4s
- Change component inventory insufficient from Error to Warning type in error report - Propagate productionOrderNo to M08_ComponentProcessor functions for proper error tracking - Update CheckComponentInventory to record warnings instead of errors for insufficient inventory - Pass productionOrderNo through ProcessComponentRecord call chain Changes: - M08_ComponentProcessor: Add productionOrderNo parameter to ProcessComponentRecord and CheckComponentInventory - M08_ComponentProcessor: Change insufficient inventory Record to RecordWarning - M08_ComponentProcessor: Use productionOrderNo in all error/warning recordings - M09_BOMExtractor: Pass productionOrderNo to ProcessComponentRecord call Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -143,7 +143,8 @@ Public Function ProcessComponentRecord( _
|
|||||||
ByVal params As Object, _
|
ByVal params As Object, _
|
||||||
ByVal logger As clsErrorLogger, _
|
ByVal logger As clsErrorLogger, _
|
||||||
ByVal matchedRowNum As Long, _
|
ByVal matchedRowNum As Long, _
|
||||||
ByVal orderQty As Long _
|
ByVal orderQty As Long, _
|
||||||
|
ByVal productionOrderNo As String _
|
||||||
) As Collection
|
) As Collection
|
||||||
On Error GoTo ErrorHandler
|
On Error GoTo ErrorHandler
|
||||||
|
|
||||||
@@ -173,7 +174,7 @@ Public Function ProcessComponentRecord( _
|
|||||||
Set headerMap = M07_BOMMatcher.BuildWorksheetHeaderMap(wsComponent)
|
Set headerMap = M07_BOMMatcher.BuildWorksheetHeaderMap(wsComponent)
|
||||||
|
|
||||||
' 步骤4: 检查部件库存
|
' 步骤4: 检查部件库存
|
||||||
If CheckComponentInventory(wsComponent, matchedRowNum, headerMap, orderQty) Then
|
If CheckComponentInventory(wsComponent, matchedRowNum, headerMap, orderQty, productionOrderNo) Then
|
||||||
' 库存充足,返回部件物料
|
' 库存充足,返回部件物料
|
||||||
Dim componentInfo As Object
|
Dim componentInfo As Object
|
||||||
Set componentInfo = ExtractComponentInfo(wsComponent, matchedRowNum, headerMap, "部件")
|
Set componentInfo = ExtractComponentInfo(wsComponent, matchedRowNum, headerMap, "部件")
|
||||||
@@ -197,7 +198,7 @@ Public Function ProcessComponentRecord( _
|
|||||||
|
|
||||||
ErrorHandler:
|
ErrorHandler:
|
||||||
If Not logger Is Nothing Then
|
If Not logger Is Nothing Then
|
||||||
logger.Record "", "M08.ProcessComponentRecord", "SystemError", _
|
logger.Record productionOrderNo, "M08.ProcessComponentRecord", "SystemError", _
|
||||||
"处理部件记录失败: " & Err.Description, ""
|
"处理部件记录失败: " & Err.Description, ""
|
||||||
End If
|
End If
|
||||||
|
|
||||||
@@ -244,7 +245,8 @@ Private Function CheckComponentInventory( _
|
|||||||
ByVal wsComponent As Worksheet, _
|
ByVal wsComponent As Worksheet, _
|
||||||
ByVal rowNum As Long, _
|
ByVal rowNum As Long, _
|
||||||
ByVal headerMap As Object, _
|
ByVal headerMap As Object, _
|
||||||
ByVal orderQty As Long _
|
ByVal orderQty As Long, _
|
||||||
|
ByVal productionOrderNo As String _
|
||||||
) As Boolean
|
) As Boolean
|
||||||
On Error GoTo ErrorHandler
|
On Error GoTo ErrorHandler
|
||||||
|
|
||||||
@@ -291,7 +293,7 @@ Private Function CheckComponentInventory( _
|
|||||||
If g_InventoryDict Is Nothing Or Not g_InventoryDict.Exists(componentCode) Then
|
If g_InventoryDict Is Nothing Or Not g_InventoryDict.Exists(componentCode) Then
|
||||||
' 未找到库存数据,记录警告并返回False(库存不足)
|
' 未找到库存数据,记录警告并返回False(库存不足)
|
||||||
If Not g_Logger Is Nothing Then
|
If Not g_Logger Is Nothing Then
|
||||||
g_Logger.RecordWarning "", "M08.CheckComponentInventory", "InventoryNotFound", _
|
g_Logger.RecordWarning productionOrderNo, "M08.CheckComponentInventory", "InventoryNotFound", _
|
||||||
"部件[" & componentCode & "]未找到库存数据,视为库存不足", ""
|
"部件[" & componentCode & "]未找到库存数据,视为库存不足", ""
|
||||||
End If
|
End If
|
||||||
CheckComponentInventory = False
|
CheckComponentInventory = False
|
||||||
@@ -319,9 +321,9 @@ Private Function CheckComponentInventory( _
|
|||||||
g_AccumulatedDemandDict(componentCode) = totalDemand
|
g_AccumulatedDemandDict(componentCode) = totalDemand
|
||||||
CheckComponentInventory = True
|
CheckComponentInventory = True
|
||||||
Else
|
Else
|
||||||
' 库存不足,记录错误
|
' 库存不足,记录警告(不是错误)
|
||||||
If Not g_Logger Is Nothing Then
|
If Not g_Logger Is Nothing Then
|
||||||
g_Logger.Record "", "M08.CheckComponentInventory", "InsufficientInventory", _
|
g_Logger.RecordWarning productionOrderNo, "M08.CheckComponentInventory", "InsufficientInventory", _
|
||||||
"部件[" & componentCode & "]库存不足。库存=" & stockQty & ", 累计需求=" & totalDemand, ""
|
"部件[" & componentCode & "]库存不足。库存=" & stockQty & ", 累计需求=" & totalDemand, ""
|
||||||
End If
|
End If
|
||||||
CheckComponentInventory = False
|
CheckComponentInventory = False
|
||||||
@@ -331,7 +333,7 @@ Private Function CheckComponentInventory( _
|
|||||||
|
|
||||||
ErrorHandler:
|
ErrorHandler:
|
||||||
If Not g_Logger Is Nothing Then
|
If Not g_Logger Is Nothing Then
|
||||||
g_Logger.Record "", "M08.CheckComponentInventory", "SystemError", _
|
g_Logger.Record productionOrderNo, "M08.CheckComponentInventory", "SystemError", _
|
||||||
"库存检查失败: " & Err.Description, ""
|
"库存检查失败: " & Err.Description, ""
|
||||||
End If
|
End If
|
||||||
' 出错时返回False(库存不足)
|
' 出错时返回False(库存不足)
|
||||||
|
|||||||
@@ -466,7 +466,7 @@ Private Function MatchAllMaterialTypesWithValidation( _
|
|||||||
|
|
||||||
If bomMatchResult("success") Then
|
If bomMatchResult("success") Then
|
||||||
Set componentMaterials = M08_ComponentProcessor.ProcessComponentRecord( _
|
Set componentMaterials = M08_ComponentProcessor.ProcessComponentRecord( _
|
||||||
ws, params, logger, bomMatchResult("rowNums")(1), orderQty)
|
ws, params, logger, bomMatchResult("rowNums")(1), orderQty, productionOrderNo)
|
||||||
|
|
||||||
Debug.Print " -> 返回物料数: " & componentMaterials.count
|
Debug.Print " -> 返回物料数: " & componentMaterials.count
|
||||||
End If
|
End If
|
||||||
|
|||||||
Reference in New Issue
Block a user