COMPILE ROUTINE FIX_WO_LOG(Dummy) ROWDEF(CHARSTR) DECLARE SUBROUTINE obj_Schedule,Send_Dyn,Send_Info, obj_WO_Step, obj_Tables, obj_WO_Step, Send_Dyn DECLARE SUBROUTINE Set_Status, RList, Reduce, FsMsg, Btree.Extract, obj_Order_Det DECLARE FUNCTION Get_Status, Set_Printer, obj_Tables, obj_RDS, obj_Order_Det, obj_WO_Log $INSERT WO_LOG_EQUATES $INSERT WO_STEP_EQU $INSERT PROD_SPEC_EQU $INSERT WO_MAT_EQUATES $INSERT REACT_RUN_EQUATES $INSERT RDS_EQUATES $INSERT ORDER_EQU $INSERT ORDER_DET_EQU $INSERT PROD_VER_EQUATES $INSERT COMPANY_EQUATES $INSERT REACTOR_EQUATES $INSERT DICT_EQUATES equ TARGET_ACTIVELIST$ to 5 OPEN 'WO_LOG' TO WOLogFile ELSE debug GOTO Bail END OPEN 'DICT.REACT_RUN' TO DictVar ELSE debug GOTO Bail END OPEN 'WO_MAT' TO WOMatFile ELSE debug GOTO Bail END OPEN 'DICT.WO_MAT' TO WOMatDict ELSE debug GOTO Bail END RList('SELECT WO_LOG WITH WO > "141530" AND WITH REACT_TYPE = ""',TARGET_ACTIVELIST$, "", "", "") DEBUG Done = 0 RecCnt = 0 LOOP READNEXT WONo ELSE Done = 0 UNTIL Done RecCnt += 1 Search = 'WO_NO':@VM:WONo:@FM Btree.Extract(Search,'REACT_RUN',DictVar,RDSNos,'','') IF Get_Status(errCode) THEN DEBUg rCnt = COUNT(RDSNos,@VM) + (RDSNos NE '') FOR N = 1 TO rCnt RDSNo = RDSNos<1,N> Reactor = XLATE('REACT_RUN',RDSNo,REACT_RUN_REACTOR$,'X') IF Reactor = '' THEN Reactor = XLATE('RDS',RDSNo,RDS_REACTOR$,'X') END UNTIL Reactor NE '' NEXT N IF Reactor NE '' THEN ReactType = XLATE('REACTOR',Reactor,REACTOR_REACT_TYPE$,'X') READ WORec FROM WOLogFile,WONo THEN IF WORec = '' THEN WORec = ReactType WRITE WORec ON WOLogFile,WONo THEN Send_Info(RecCnt:' ':WONo) END END END END *Send_Dyn(RecCnt:' ':WONo) * REPEAT Send_Dyn(RecCnt:' ':WONo) DEBUG GOTO Bail Done = 0 RecCnt = 0 LOOP READNEXT WONo ELSE Done = 1 UNTIL DONE READ WOLogRec FROM WOLogFile,WONo THEN RecCnt += 1 WOLogRec = XLATE('WO_LOG',WONo,'','X') WOStepKeys = WOLogRec FOR I = 1 TO COUNT(WOStepKeys,@VM) + (WOStepKeys NE '') WOStepRec = XLATE('WO_STEP',WOStepKeys<1,I>,'','X') IF WOStepRec NE '' THEN Send_Dyn(WONo:' Work Order Step currently has RDS records attached.') END IF WOStepRec NE '' THEN Send_Dyn(WONo:' Work Order Step currently has WM_IN records attached and may not be deleted.') END IF WOStepRec NE '' THEN Send_Dyn(WONo:' Work Order Step currently has WM_OUT records attached and may not be deleted.') END NEXT I FOR I = 1 TO COUNT(WOStepKeys,@VM) + (WOStepKeys NE '') WOStepKey = WOStepKeys<1,I> CONVERT '*' TO @RM IN WOStepKey Set_Status(0) obj_WO_Step('Delete',WOStepKey) IF Get_Status(errCode) THEN GOTO Skip END NEXT I WOMatKeys = WOLogRec WOMatCnt = COUNT(WOMatKeys,@VM) + (WOMatKeys NE '') FOR I = 1 TO WOMatCnt WOMatKey = WOMatKeys<1,I> Send_Dyn(WOMatKey) WOMatRec = XLATE('WO_MAT',WOMatKey,'','X') IF WOMatRec NE '' THEN Send_Dyn(WOMatKey:' RDS No in record.') END IF WOMatRec NE '' THEN Send_Dyn(WOMatKey:'WM_IN in record.') END IF WOmatRec NE '' THEN Send_Dyn(WOMatKey:' WM_OUT in record.') END Set_Status(0) *obj_WO_Mat('Delete',WOMatKey) IF Get_Status(errCode) THEN GOTO Skip END NEXT I TableVar = '' OtParms = 'WO_LOG':@RM:WONo:@RM:TableVar WOLogRec = obj_Tables('DeleteRec',OtParms) ;* Locks and reads record for update *IF Get_Status(errCode) THEN ErrMsg(errCode) Send_Info(RecCnt:' ':WONo) END ;* End of WOLogRec read Skip: REPEAT GOTO Bail * * * * * * * * * * RList('SELECT WO_LOG "152573" "152574" ',TARGET_ACTIVELIST$, "", "", "") DEBUG Done = 0 RecCnt = 0 LOOP READNEXT WONo ELSE Done = 1 UNTIL DONE READ WOLogRec FROM WOLogFile,WONo THEN SearchString = 'WO_NO':@VM:WONo:@FM Option = '' Flag = '' Btree.Extract(SearchString,'WO_MAT',WOMatDict, WOMatKeys, Option, Flag) IF Get_Status(errCode) THEN DEBUG GOTO Bail END CustPartNo = WOLogRec WOMatCnt = COUNT(WOMatKeys,@VM) + (WOMatKeys NE '') WriteFlag = 0 FOR I = 1 TO WOMatCnt WOMatKey = WOMatKeys<1,I> READ WOMatRec FROM WOMatFile,WOMatKey THEN WMCustPartNo = WOMatRec IF 1 THEN ;* WMCustPartNo NE CustPartNo THEN WriteFlag = 1 RDSNos = WOMatRec IF RDSNos NE '' THEN *obj_RDS2('SetPartNo',RDSNos:@RM:CustPartNo) SWAP @VM WITH ', ' IN RDSNos Send_Dyn(RDSNos:' updated') END WOMatRec = CustPartNo *WRITE WOMatRec ON WOMatFile,WOMatKey THEN Send_Dyn(WOMatKey:': ':WMCustPartNo:' -> ':CustPartNo) *END END ;* End of check for Cust Part No mismatch END ;* End of WOMatRec Read NEXT I IF WriteFlag = 1 THEN Send_Dyn('WO: ':WONo:' Completed') Send_DYN(' ') END END REPEAT GOTO Bail RList('SELECT WO_LOG WITH PROD_ORD_NO NE "" AND WITH CUST_PART_NO = ""',TARGET_ACTIVELIST$, "", "", "") Done = 0 RecCnt = 0 LOOP READNEXT WONo ELSE Done = 1 UNTIL DONE SearchString = 'WO_NO':@VM:WONo:@FM Option = '' Flag = '' Btree.Extract(SearchString,'WO_MAT',WOMatDict, WOMatKeys, Option, Flag) IF Get_Status(errCode) THEN DEBUG GOTO Bail END SortedWOMatKeys = '' WOMKeyCnt = COUNT(WOMatKeys,@VM) + (WOMatKeys NE '') FOR I = 1 TO WOMKeyCnt WOMatKey = WOMatKeys<1,I> LOCATE WOMatKey IN SortedWOMatKeys BY 'AR' USING @VM SETTING Pos ELSE SortedWoMatKeys = INSERT(SortedWOMatKeys,1,Pos,0,WOMatKey) END NEXT I READ WOLogRec FROM WOLogFile,WONo THEN WOLogRec = SortedWOMatKeys WRITE WOLogRec ON WOLogFile,WONo THEN Send_Dyn(WONo:' ':SortedWOMatKeys) END END REPEAT GOTO Bail OrderNo = 54439 OrderItems = 2 UQuote = 7203 WONo = obj_WO_Log('Create',OrderNo:@RM:OrderItems:@RM:UQuote) IF Get_Status(errCode) THEN DEBUG END ELSE obj_Order_Det('AddWONo',OrderNo:@RM:OrderItems:@RM:WONo) IF Get_Status(errCode) THEN DEBUG END END GOTO Bail RList('SELECT WO_LOG WITH ENTRY_ID = "SAP"',TARGET_ACTIVELIST$, "", "", "") debug Done = 0 RecCnt = 0 LOOP READNEXT WONo ELSE Done = 1 UNTIL DONE IF WONo NE 149927 AND WONo NE 149644 AND WONo NE 149954 THEN DELETE WOLogFile,WONo THEN Send_Dyn(WONo) END END REPEAT GOTO Bail RList('SELECT WO_LOG WITH ENTRY_ID = "SAP" ',TARGET_ACTIVELIST$, "", "", "") debug SelectCnt = @RECCOUNT Done = 0 RecCnt = 0 LOOP READNEXT WONo ELSE Done = 1 UNTIL Done RecCnt += 1 READ WORec FROM WOLogFile,WONo THEN OrderDetKey = WORec:'*':WORec DefPartNo = obj_Order_Det('PartNo',OrderDetKey:@RM) IF DefPartNo NE '' THEN IF WORec NE DefPartNo THEN WOMatKeys = WORec IF WORec NE DefPartNo THEN WORec = DefPartNo WRITE WORec ON WOLogFile,WONo THEN Send_Info(WONo:' -> ':DefPartNo) END END WMCnt = COUNT(WOMatKeys,@VM) + (WOMatKeys NE '') FOR I = 1 TO WMCnt Set_Status(0) WOMatKey = WOMatKeys<1,I> READ WOMatRec FROM WOMatFile,WOMatKey THEN IF WOMatRec NE DefPartNo THEN WOMatRec = DefPartNo WRITE WOMatRec ON WOMatFile,WOMatKey THEN Send_Info(RecCnt:'/':SelectCnt:' ':WOMatKey:' -> ':DefPartNo) END END END NEXT I END END END Send_Info(RecCnt) REPEAT */ * * * * * * * Bail: * * * * * * * END