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

View File

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