| 1 | ENWOLD ;(WIRMFO)/DH-Delete Old Incomplete PM Work Orders ;12/1/1999 | 
|---|
| 2 | ;;7.0;ENGINEERING;**35,64**;Aug 17,1993 | 
|---|
| 3 | ; | 
|---|
| 4 | ;  Check for old incomplete PM work orders | 
|---|
| 5 | ;    If count>500 user may schedule automatic deletion | 
|---|
| 6 | ; | 
|---|
| 7 | ;  Sets global node if appropriate | 
|---|
| 8 | ;  User prompted for cut-off date and execution time | 
|---|
| 9 | ;  Cut-off date may not be more recent than T-365 | 
|---|
| 10 | EN ; | 
|---|
| 11 | I $P($G(^ENG(6920,0)),U,4)'>300 G EXIT ;Why bother? | 
|---|
| 12 | N DA,SHOP,COUNT,LINE | 
|---|
| 13 | D HOME^%ZIS | 
|---|
| 14 | S Y=$$FMADD^XLFDT(DT,-365) S %DT(0)=-Y X ^DD("DD") S %DT("B")=Y | 
|---|
| 15 | W !!,"NOTE: Creation Dates more recent than "_%DT("B")_" will not be",!,"      accepted.",!,*7 | 
|---|
| 16 | S %DT="AEP" S %DT("A")="Delete Incomplete PM Work Orders created prior to: " | 
|---|
| 17 | D ^%DT I X=U!($D(DTOUT)) G EXIT | 
|---|
| 18 | G:Y'>0 EN ;Shouldn't happen | 
|---|
| 19 | S ENSTART=+Y ;Inverse start date (counting backwards) | 
|---|
| 20 | X ^DD("DD") S ENSTART("E")=Y | 
|---|
| 21 | S DA=$O(^ENG(6920,9999999999),-1),COUNT("TOT")=0,ENX=1 | 
|---|
| 22 | W !,"Counting." | 
|---|
| 23 | F  S DA=DA-50 Q:DA'>0  S X=$P($G(^ENG(6920,DA,0)),U,2) I X]"",X<ENSTART Q | 
|---|
| 24 | F  Q:$P($G(^ENG(6920,DA+1,0)),U,2)>(ENSTART-1)  S DA=DA+1 | 
|---|
| 25 | S ENDA("START")=DA ;Starting point for 'AINC' x-ref, inverse chronology | 
|---|
| 26 | S SHOP=0 F  S SHOP=$O(^ENG(6920,"AINC",SHOP)) Q:'SHOP  D | 
|---|
| 27 | . S ENDA=9999999999-ENDA("START"),COUNT(SHOP)=0 | 
|---|
| 28 | . F  S ENDA=$O(^ENG(6920,"AINC",SHOP,ENDA)) Q:'ENDA  D | 
|---|
| 29 | .. S DA=9999999999-ENDA | 
|---|
| 30 | .. I $E($P($G(^ENG(6920,DA,0)),U),1,3)="PM-" S COUNT("TOT")=COUNT("TOT")+1,COUNT(SHOP)=COUNT(SHOP)+1 | 
|---|
| 31 | .. I '(DA#100) W "." S ENX=ENX+1 I ENX>IOM W ! | 
|---|
| 32 | I COUNT("TOT")>500 D  G EXIT | 
|---|
| 33 | . S Y=ENSTART X ^DD("DD") | 
|---|
| 34 | . W @IOF,"There are about "_COUNT("TOT")_" incomplete PM work orders on your system that were" | 
|---|
| 35 | . W !,"created prior to "_ENSTART("E")_". The following is a breakout by shop:" | 
|---|
| 36 | . K X S $P(X,"-",79)="-" W !,X S LINE=4 | 
|---|
| 37 | . S SHOP=0 F  S SHOP=$O(COUNT(SHOP)) Q:'SHOP  D:COUNT(SHOP)>0 | 
|---|
| 38 | .. S ENSHOP(SHOP)=COUNT(SHOP) | 
|---|
| 39 | .. I $D(^DIC(6922,SHOP,0)) W !,$P(^(0),U),?30,COUNT(SHOP) S LINE=LINE+1 | 
|---|
| 40 | .. I (IOSL-LINE)'>2 R !,"Press <RETURN> to continue...",X:DTIME S LINE=2 | 
|---|
| 41 | . K DIR S DIR(0)="Y",DIR("A")="Would you like to schedule a task to delete these work orders",DIR("B")="YES" | 
|---|
| 42 | . D ^DIR K DIR Q:$D(DIRUT)!('Y) | 
|---|
| 43 | . S ZTRTN="DEQUE^ENWOLD",ZTDESC="Delete old incomplete PM work orders" | 
|---|
| 44 | . S ZTSAVE("EN*")="",ZTIO="" D ^%ZTLOAD K ZTSK | 
|---|
| 45 | W !!,"Fewer than 500 existing incomplete PM work orders were created prior to ",!,ENSTART("E")_". No need to continue." | 
|---|
| 46 | R !!,"Press <RETURN> to continue...",X:DTIME | 
|---|
| 47 | EXIT K %DT,ENDA,ENSTART,ENSHOP,ENX | 
|---|
| 48 | Q | 
|---|
| 49 | ; | 
|---|
| 50 | DEQUE N EN,SHOP,DA,DIK,COUNT S COUNT=0 | 
|---|
| 51 | S DIK="^ENG(6920,",SHOP=0 | 
|---|
| 52 | F  S SHOP=$O(ENSHOP(SHOP)) Q:'SHOP  D | 
|---|
| 53 | . S ENDA=9999999999-ENDA("START") | 
|---|
| 54 | . F  S ENDA=$O(^ENG(6920,"AINC",SHOP,ENDA)) Q:'ENDA  D | 
|---|
| 55 | .. S DA=9999999999-ENDA | 
|---|
| 56 | .. I $E($P($G(^ENG(6920,DA,0)),U),1,3)="PM-" S COUNT=COUNT+1 D ^DIK | 
|---|
| 57 | MSG ; | 
|---|
| 58 | S XMY(DUZ)="",XMDUZ=.5,XMSUB="Deletion of Old Incomplete PM Work Orders" | 
|---|
| 59 | S EN(1)=COUNT_" old incomplete PM work orders were just deleted." | 
|---|
| 60 | S XMTEXT="EN(" | 
|---|
| 61 | D ^XMD | 
|---|
| 62 | K XMY,XMDUZ,XMTEXT,XMSUB,ENDA,ENSTART,ENSHOP | 
|---|
| 63 | I $D(ZTQUEUED) S ZTREQ="@" | 
|---|
| 64 | Q | 
|---|
| 65 | ;ENWOLD | 
|---|