replaced global variables with local variables to prevent dictionary getting clobbered

This commit is contained in:
Infineon\StieberD
2025-09-11 13:27:31 -07:00
parent 26198b343a
commit 3acaf60a5f
2 changed files with 67 additions and 57 deletions

View File

@ -50,6 +50,7 @@ Compile function NDW_MATERIAL_TRACK_PRO_REPORT_EVENTS(CtrlEntId, Event, @PARAMS)
Declare function Form_Services, Database_Services, RTI_Task_Submit, RTI_Task_Status, MemberOf Declare function Form_Services, Database_Services, RTI_Task_Submit, RTI_Task_Status, MemberOf
Declare subroutine SRP_Show_Window, Send_Message, Set_Property, Database_Services, Material_Track, Report_Services Declare subroutine SRP_Show_Window, Send_Message, Set_Property, Database_Services, Material_Track, Report_Services
Declare subroutine PlaceDialog
$Insert EVENT_SETUP $Insert EVENT_SETUP
$Insert LOGICAL $Insert LOGICAL
@ -97,8 +98,7 @@ Event WINDOW.CREATE(CreateParam)
GoSub Setup_OLE_Controls GoSub Setup_OLE_Controls
GoSub EnableGenerateReportButton GoSub EnableGenerateReportButton
FormSize = '' PlaceDialog(-2, -2)
SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize)
End Event End Event
@ -127,7 +127,7 @@ Event PUB_GEN_REPORT.CLICK()
LocationEnabled = Flags<0, vPos> LocationEnabled = Flags<0, vPos>
If LocationEnabled then RptLocations<0, -1> = Location If LocationEnabled then RptLocations<0, -1> = Location
Next Location Next Location
Report_Services('PrintMaterialTrackReport', RptColumns, RptLocations, NoMatFlag, OldReport) Report_Services('PrintMaterialTrackReport', RptColumns, RptLocations, NoMatFlag, OldReport)
end event end event

View File

@ -1446,8 +1446,11 @@ Service GenerateMaterialTrackRows()
ErrCode = '' ErrCode = ''
ErrorMsg = '' ErrorMsg = ''
SchedDetTable = ''
SchedDetDict = ''
OPEN 'SCHED_DET_NG' TO SchedDetTable then OPEN 'SCHED_DET_NG' TO SchedDetTable then
OPEN 'DICT.SCHED_DET_NG' TO @DICT then OPEN 'DICT.SCHED_DET_NG' TO SchedDetDict then
Today = Datetime() Today = Datetime()
ReactList = '' ReactList = ''
@ -1466,12 +1469,12 @@ Service GenerateMaterialTrackRows()
END END
Done = 0 Done = 0
@ID = '' CurrSchedDetKey = ''
LOOP LOOP
PrevSchedDetKey = @ID PrevSchedDetKey = CurrSchedDetKey
READNEXT @ID ELSE Done = 1 READNEXT CurrSchedDetKey ELSE Done = 1
UNTIL Done UNTIL Done
READ SchedDetRec FROM SchedDetTable,@ID THEN READ SchedDetRec FROM SchedDetTable,CurrSchedDetKey THEN
ReactNo = SchedDetRec<SCHED_DET_NG.REACT_NO$> ReactNo = SchedDetRec<SCHED_DET_NG.REACT_NO$>
WONo = SchedDetRec<SCHED_DET_NG.WO_NO$> WONo = SchedDetRec<SCHED_DET_NG.WO_NO$>
If ReactNo NE '' then If ReactNo NE '' then
@ -1482,20 +1485,20 @@ Service GenerateMaterialTrackRows()
If WONo NE '' then If WONo NE '' then
LOCATE WONo IN WOList<Pos> USING @VM SETTING WPos ELSE LOCATE WONo IN WOList<Pos> USING @VM SETTING WPos ELSE
WOList = INSERT(WOList,Pos,-1,0,WONo) WOList = INSERT(WOList,Pos,-1,0,WONo)
SchedDetKeys = INSERT(SchedDetKeys,-1,0,0,@ID) SchedDetKeys = INSERT(SchedDetKeys,-1,0,0,CurrSchedDetKey)
END END
END END
END END
REPEAT REPEAT
CALL Make.List(0,SchedDetKeys,SchedDetTable,@DICT) CALL Make.List(0, SchedDetKeys, SchedDetTable, SchedDetDict)
DateRange = 'Effective ':OCONV(Date(),'D4') DateRange = 'Effective ':OCONV(Date(),'D4')
RowIndex = 0 RowIndex = 0
AllReportData = '' AllReportData = ''
@RECCOUNT = 0 RecCount = 0
FirstPass = 1 FirstPass = 1
LastRecord = 0 LastRecord = 0
FirstLine = 1 FirstLine = 1
@ -1506,48 +1509,50 @@ Service GenerateMaterialTrackRows()
Prev.ReactNo = '' Prev.ReactNo = ''
Last.ReactNo.Break = 1 Last.ReactNo.Break = 1
CurrSchedDetRec = ''
Loop Loop
ReactNo.Break = 0 ReactNo.Break = 0
READNEXT @ID, Which.Value ELSE READNEXT CurrSchedDetKey, Which.Value ELSE
LastRecord = 1 LastRecord = 1
ReactNo.Break = 1 ReactNo.Break = 1
ReactNo = Prev.ReactNo ReactNo = Prev.ReactNo
END END
S.ATID = @ID S.ATID = CurrSchedDetKey
Abort = (FirstPass and LastRecord) Abort = (FirstPass and LastRecord)
If Not(Abort) then If Not(Abort) then
If Not(LastRecord) then If Not(LastRecord) then
READO @RECORD FROM SchedDetTable,@ID then READO CurrSchedDetRec FROM SchedDetTable,CurrSchedDetKey then
// GOTO ReadRecord // GOTO ReadRecord
@RECCOUNT += 1 RecCount += 1
* Calculate Value(s) For Column(s) * Calculate Value(s) For Column(s)
S.StartDtm = {START_DTM} S.StartDtm = CurrSchedDetRec<SCHED_DET_NG.START_DTM$>
S.ATID = {@ID} S.ATID = CurrSchedDetKey
I.ATID = S.ATID I.ATID = S.ATID
S.ReactNo = {REACT_NO} S.ReactNo = CurrSchedDetRec<SCHED_DET_NG.REACT_NO$>
I.ReactNo = S.ReactNo I.ReactNo = S.ReactNo
S.WoNo = {WO_NO} S.WoNo = CurrSchedDetRec<SCHED_DET_NG.WO_NO$>
I.WoNo = S.WoNo I.WoNo = S.WoNo
S.SubPartNo = XLATE('WO_LOG', S.WoNo, 'ORD_SUB_PART_NO', 'X') S.SubPartNo = XLATE('WO_LOG', S.WoNo, 'ORD_SUB_PART_NO', 'X')
I.SubPartNo = S.SubPartNo I.SubPartNo = S.SubPartNo
S.EpiPartNo = XLATE('WO_LOG', S.WoNo, WO_LOG_EPI_PART_NO$, 'X') S.EpiPartNo = XLATE('WO_LOG', S.WoNo, WO_LOG_EPI_PART_NO$, 'X')
I.EpiPartNo = S.EpiPartNo I.EpiPartNo = S.EpiPartNo
S.WO_Qty = Xlate('WO_LOG', {WO_NO}, WO_LOG_WO_QTY$, 'X') S.WO_Qty = Xlate('WO_LOG', S.WoNo, WO_LOG_WO_QTY$, 'X')
I.WO_Qty = S.WO_Qty I.WO_Qty = S.WO_Qty
S.WO_RX_Qty = Xlate('WO_LOG', {WO_NO}, 'RX_QTY', 'X') S.WO_RX_Qty = Xlate('WO_LOG', S.WoNo, 'RX_QTY', 'X')
I.WO_RX_Qty = S.WO_RX_Qty I.WO_RX_Qty = S.WO_RX_Qty
S.WO_UnRel_QTY = Xlate('WO_LOG', {WO_NO}, 'UNREL_QTY', 'X') S.WO_UnRel_QTY = Xlate('WO_LOG', S.WoNo, 'UNREL_QTY', 'X')
I.WO_UnRel_QTY = S.WO_UnRel_QTY I.WO_UnRel_QTY = S.WO_UnRel_QTY
S.REACT_TYPE = Xlate('WO_LOG', {WO_NO}, 'REACT_TYPE', 'X') S.REACT_TYPE = Xlate('WO_LOG', S.WoNo, 'REACT_TYPE', 'X')
S.ProdOrdNo = Xlate('WO_LOG', {WO_NO}, 'PROD_ORD_NO', 'X') S.ProdOrdNo = Xlate('WO_LOG', S.WoNo, 'PROD_ORD_NO', 'X')
Locate 'SR*KTR]' in LocationFilter using @VM setting vPos then Locate 'SR*KTR]' in LocationFilter using @VM setting vPos then
KitData = Location_Services('GetLocationCassInfo', S.WONo, 'SR*KTR]') KitData = Location_Services('GetLocationCassInfo', S.WONo, 'SR*KTR]')
@ -1898,9 +1903,12 @@ Service PrintMaterialTrackReport(RptColumns, LocationFilter, NoMatFlag, OldRepor
ErrorTitle = 'Error in service ':Service ErrorTitle = 'Error in service ':Service
ErrCode = '' ErrCode = ''
ErrorMsg = '' ErrorMsg = ''
SchedDetTable = ''
SchedDetDict = ''
OPEN 'SCHED_DET_NG' TO SchedDetTable then OPEN 'SCHED_DET_NG' TO SchedDetTable then
OPEN 'DICT.SCHED_DET_NG' TO @DICT then OPEN 'DICT.SCHED_DET_NG' TO SchedDetDict then
Today = Datetime() Today = Datetime()
ReactList = '' ReactList = ''
@ -1921,13 +1929,13 @@ Service PrintMaterialTrackReport(RptColumns, LocationFilter, NoMatFlag, OldRepor
RETURN RETURN
END END
Done = 0 Done = 0
@ID = '' CurrSchedDetKey = ''
LOOP LOOP
PrevSchedDetKey = @ID PrevSchedDetKey = CurrSchedDetKey
READNEXT @ID ELSE Done = 1 READNEXT CurrSchedDetKey ELSE Done = 1
UNTIL Done UNTIL Done
READ SchedDetRec FROM SchedDetTable,@ID THEN READ SchedDetRec FROM SchedDetTable,CurrSchedDetKey THEN
ReactNo = SchedDetRec<SCHED_DET_NG.REACT_NO$> ReactNo = SchedDetRec<SCHED_DET_NG.REACT_NO$>
WONo = SchedDetRec<SCHED_DET_NG.WO_NO$> WONo = SchedDetRec<SCHED_DET_NG.WO_NO$>
If ReactNo NE '' then If ReactNo NE '' then
@ -1938,14 +1946,14 @@ Service PrintMaterialTrackReport(RptColumns, LocationFilter, NoMatFlag, OldRepor
If WONo NE '' then If WONo NE '' then
LOCATE WONo IN WOList<Pos> USING @VM SETTING WPos ELSE LOCATE WONo IN WOList<Pos> USING @VM SETTING WPos ELSE
WOList = INSERT(WOList,Pos,-1,0,WONo) WOList = INSERT(WOList,Pos,-1,0,WONo)
SchedDetKeys = INSERT(SchedDetKeys,-1,0,0,@ID) SchedDetKeys = INSERT(SchedDetKeys,-1,0,0,CurrSchedDetKey)
END END
END END
END END
REPEAT REPEAT
CALL Make.List(0,SchedDetKeys,SchedDetTable,@DICT) CALL Make.List(0,SchedDetKeys,SchedDetTable,SchedDetDict)
Header = "'D'":@VM:obj_Install('Get_Prop','CompTitle'):' Material Tracking by Reactor':@VM:"Page 'P'" Header = "'D'":@VM:obj_Install('Get_Prop','CompTitle'):' Material Tracking by Reactor':@VM:"Page 'P'"
MinDemand = 0 MinDemand = 0
@ -1988,7 +1996,7 @@ Service PrintMaterialTrackReport(RptColumns, LocationFilter, NoMatFlag, OldRepor
Footer = " 'D' 'T'":@VM:@VM:"Page: 'P'" Footer = " 'D' 'T'":@VM:@VM:"Page: 'P'"
stat = Set_Printer('FOOTER',Footer) stat = Set_Printer('FOOTER',Footer)
If Stat GE 0 then If Stat GE 0 then
@RECCOUNT = 0 RecCount = 0
FirstPass = 1 FirstPass = 1
LastRecord = 0 LastRecord = 0
FirstLine = 1 FirstLine = 1
@ -2010,48 +2018,48 @@ Service PrintMaterialTrackReport(RptColumns, LocationFilter, NoMatFlag, OldRepor
Prev.ReactNo = '' Prev.ReactNo = ''
Last.ReactNo.Break = 1 Last.ReactNo.Break = 1
CurrSchedDetRec = ''
Loop Loop
* Zero Break Flags To False * Zero Break Flags To False
ReactNo.Break = 0 ReactNo.Break = 0
READNEXT @ID, Which.Value ELSE READNEXT CurrSchedDetKey, Which.Value ELSE
LastRecord = 1 LastRecord = 1
ReactNo.Break = 1 ReactNo.Break = 1
ReactNo = Prev.ReactNo ReactNo = Prev.ReactNo
END END
S.ATID = @ID S.ATID = CurrSchedDetKey
Abort = (FirstPass AND LastRecord) Abort = (FirstPass AND LastRecord)
IF Not(Abort) THEN IF Not(Abort) THEN
IF Not(LastRecord) then IF Not(LastRecord) then
READO @RECORD FROM SchedDetTable,@ID then READO CurrSchedDetRec FROM SchedDetTable,CurrSchedDetKey then
@RECCOUNT += 1 RecCount += 1
* Calculate Value(s) For Column(s) * Calculate Value(s) For Column(s)
S.ATID = CurrSchedDetKey
S.ATID = {@ID} I.ATID = S.ATID
I.ATID = S.ATID S.ReactNo = CurrSchedDetRec<SCHED_DET_NG.REACT_NO$>
S.ReactNo = {REACT_NO} I.ReactNo = S.ReactNo
I.ReactNo = S.ReactNo S.WoNo = CurrSchedDetRec<SCHED_DET_NG.WO_NO$>
S.WoNo = {WO_NO} I.WoNo = S.WoNo
I.WoNo = S.WoNo S.SubPartNo = XLATE('WO_LOG', S.WoNo, 'ORD_SUB_PART_NO', 'X')
S.SubPartNo = XLATE('WO_LOG', S.WoNo, 'ORD_SUB_PART_NO', 'X') I.SubPartNo = S.SubPartNo
I.SubPartNo = S.SubPartNo S.EpiPartNo = XLATE('WO_LOG', S.WoNo, WO_LOG_EPI_PART_NO$, 'X')
S.EpiPartNo = XLATE('WO_LOG', S.WoNo, WO_LOG_EPI_PART_NO$, 'X') I.EpiPartNo = S.EpiPartNo
I.EpiPartNo = S.EpiPartNo S.WO_Qty = Xlate('WO_LOG', S.WoNo, WO_LOG_WO_QTY$, 'X')
S.WO_Qty = Xlate('WO_LOG', {WO_NO}, WO_LOG_WO_QTY$, 'X') I.WO_Qty = S.WO_Qty
I.WO_Qty = S.WO_Qty S.WO_RX_Qty = Xlate('WO_LOG', S.WoNo, 'RX_QTY', 'X')
S.WO_RX_Qty = Xlate('WO_LOG', {WO_NO}, 'RX_QTY', 'X') I.WO_RX_Qty = S.WO_RX_Qty
I.WO_RX_Qty = S.WO_RX_Qty S.WO_UnRel_QTY = Xlate('WO_LOG', S.WoNo, 'UNREL_QTY', 'X')
S.WO_UnRel_QTY = Xlate('WO_LOG', {WO_NO}, 'UNREL_QTY', 'X') I.WO_UnRel_QTY = S.WO_UnRel_QTY
I.WO_UnRel_QTY = S.WO_UnRel_QTY S.REACT_TYPE = Xlate('WO_LOG', S.WoNo, 'REACT_TYPE', 'X')
S.REACT_TYPE = Xlate('WO_LOG', {WO_NO}, 'REACT_TYPE', 'X') S.ProdOrdNo = Xlate('WO_LOG', S.WoNo, 'PROD_ORD_NO', 'X')
S.ProdOrdNo = Xlate('WO_LOG', {WO_NO}, 'PROD_ORD_NO', 'X')
If OldReport then If OldReport then
@ -2332,7 +2340,9 @@ Service PrintMaterialTrackReport(RptColumns, LocationFilter, NoMatFlag, OldRepor
end service end service
Service GetOpenNCRReportJson() Service GetOpenNCRReportJson()
ErrorMessage = '' ErrorMessage = ''
OpenNCRReportJson = '' OpenNCRReportJson = ''
OpenNCRKeyList = NCR_Services('GetOpenNCRKeys') OpenNCRKeyList = NCR_Services('GetOpenNCRKeys')