[613] | 1 | FBAAUTL6 ;WCIOFO/SAB-UTILITY ROUTINE ;9/11/97
|
---|
| 2 | ;;3.5;FEE BASIS;**9,36**;JAN 30, 1995
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | VGRP(FBDA) ; Validate/Correct Socioeconomic Groups Extrinsic Function
|
---|
| 5 | ; called by input templates FBAA NEW VENDOR, FBAA EDIT VENDOR
|
---|
| 6 | ; input FBDA - ien of vendor in 161.2
|
---|
| 7 | ; returns - True when groups were changed or False when groups were OK
|
---|
| 8 | N FB,FBBT,FBCHG,FBFDA,FBG,FBIENS
|
---|
| 9 | S FBCHG=0
|
---|
| 10 | ; get current business type and groups
|
---|
| 11 | S FBBT=$$GET1^DIQ(161.2,FBDA,24,"I")
|
---|
| 12 | D GETS^DIQ(161.2,FBDA_",","25*","IE","FB")
|
---|
| 13 | ; check groups against type
|
---|
| 14 | S FBIENS="" F S FBIENS=$O(FB(161.225,FBIENS)) Q:FBIENS="" D
|
---|
| 15 | . I FBBT]"",$$GET1^DIQ(420.6,FB(161.225,FBIENS,.01,"I"),5)[FBBT Q ; OK
|
---|
| 16 | . W !," Group ",FB(161.225,FBIENS,.01,"E")," inappropriate for Business Type. Deleting..."
|
---|
| 17 | . S FBFDA(161.225,FBIENS,.01)="@"
|
---|
| 18 | . K FB(161.225,FBIENS)
|
---|
| 19 | I $D(FBFDA) D FILE^DIE("","FBFDA") D MSG^DIALOG() S FBCHG=1
|
---|
| 20 | ; check group combinations
|
---|
| 21 | ; first build list by group codes
|
---|
| 22 | S FBIENS="" F S FBIENS=$O(FB(161.225,FBIENS)) Q:FBIENS="" D
|
---|
| 23 | . S FBG(FB(161.225,FBIENS,.01,"E"))=FBIENS
|
---|
| 24 | . S FBG=$G(FBG)+1
|
---|
| 25 | ; check use of OO with others
|
---|
| 26 | I $D(FBG("OO")),$G(FBG)>1 D
|
---|
| 27 | . W !," Group OO can't be used with other groups. Deleting OO..."
|
---|
| 28 | . S FBFDA(161.225,FBG("OO"),.01)="@"
|
---|
| 29 | I $D(FBFDA) D FILE^DIE("","FBFDA") D MSG^DIALOG() S FBCHG=1
|
---|
| 30 | ; check S
|
---|
| 31 | I $D(FBG("RV")),'$D(FBG("S")) D
|
---|
| 32 | . W !," Group S must be specified with group RV. Adding S..."
|
---|
| 33 | . S FBFDA(161.225,"+1,"_FBDA_",",.01)="S"
|
---|
| 34 | . D UPDATE^DIE("E","FBFDA") D MSG^DIALOG() S FBCHG=1
|
---|
| 35 | Q FBCHG
|
---|
| 36 | ;
|
---|
| 37 | GETGRP(FBDA,FBMAX) ; Get Socioeconomic Groups for a Vendor
|
---|
| 38 | ; in FBDA - vendor ien
|
---|
| 39 | ; FBMAX - (optional) maximum number of groups to retrieve
|
---|
| 40 | ; out FBSG( array - i.e. FBSG(1)=code, FBSG(2)=code, etc.
|
---|
| 41 | N FB,FBC,FBIENS
|
---|
| 42 | K FBSG
|
---|
| 43 | I '$G(FBMAX) S FBMAX=999
|
---|
| 44 | D GETS^DIQ(161.2,FBDA_",","25*","","FB")
|
---|
| 45 | S FBC=0,FBIENS=""
|
---|
| 46 | F S FBIENS=$O(FB(161.225,FBIENS)) Q:FBIENS="" D Q:(FBC=FBMAX)
|
---|
| 47 | . S FBC=FBC+1,FBSG(FBC)=FB(161.225,FBIENS,.01)
|
---|
| 48 | Q
|
---|
| 49 | ;
|
---|
| 50 | GRPDIF(FBDA) ; Socioeconomic Groups Different Extrinsic Function?
|
---|
| 51 | ; in FBDA - vendor ien
|
---|
| 52 | ; FBSG( array of groups
|
---|
| 53 | ; returns True (when different) or False (when equivalent)
|
---|
| 54 | N FB,FBARRAY,FBFILE,FBG,FBX,FBY
|
---|
| 55 | ; create sorted list of groups from array
|
---|
| 56 | S FBX="" F S FBX=$O(FBSG(FBX)) Q:FBX="" D
|
---|
| 57 | . S FBY=FBSG(FBX) Q:FBY=""
|
---|
| 58 | . S FBG(FBY)=""
|
---|
| 59 | S (FBARRAY,FBY)="" F S FBY=$O(FBG(FBY)) Q:FBY="" S FBARRAY=FBARRAY_FBY
|
---|
| 60 | ; create sorted list of groups from file
|
---|
| 61 | D GETS^DIQ(161.2,FBDA_",","25*","","FB")
|
---|
| 62 | K FBG
|
---|
| 63 | S FBX="" F S FBX=$O(FB(161.225,FBX)) Q:FBX="" D
|
---|
| 64 | . S FBY=FB(161.225,FBX,.01) Q:FBY=""
|
---|
| 65 | . S FBG(FBY)=""
|
---|
| 66 | S (FBFILE,FBY)="" F S FBY=$O(FBG(FBY)) Q:FBY="" S FBFILE=FBFILE_FBY
|
---|
| 67 | ; compare
|
---|
| 68 | Q FBFILE'=FBARRAY
|
---|
| 69 | ;
|
---|
| 70 | UPDGRP(FBDA) ; Update Socioeconomic Groups of Vendor
|
---|
| 71 | ; in FBDA - vendor ien
|
---|
| 72 | ; FBSG( array
|
---|
| 73 | N FB,FBBT,FBFDA,FBI,FBIENS
|
---|
| 74 | ; delete current vendor groups
|
---|
| 75 | D GETS^DIQ(161.2,FBDA_",","25*","","FB")
|
---|
| 76 | S FBIENS="" F S FBIENS=$O(FB(161.225,FBIENS)) Q:FBIENS="" D
|
---|
| 77 | . S FBFDA(161.225,FBIENS,.01)="@"
|
---|
| 78 | I $D(FBFDA) D FILE^DIE("","FBFDA")
|
---|
| 79 | ; store groups from array in vendor
|
---|
| 80 | N FBVNCOD,FBVNDAT,FBVNDBL
|
---|
| 81 | S FBBT=$$GET1^DIQ(161.2,FBDA,24,"I") ;get business type
|
---|
| 82 | S FBI=0 F S FBI=$O(FBSG(FBI)) Q:'FBI D
|
---|
| 83 | . Q:FBSG(FBI)=""
|
---|
| 84 | . ; find internal values with correct business type and effective date
|
---|
| 85 | . S FBVNCOD=0
|
---|
| 86 | . F S FBVNCOD=$O(^PRCD(420.6,"B",FBSG(FBI),FBVNCOD)) Q:+FBVNCOD=0 S FBVNDAT=$G(^PRCD(420.6,FBVNCOD,0)) Q:$P(FBVNDAT,"^",6)[$G(FBBT)&($P(FBVNDAT,"^",3)=1)
|
---|
| 87 | . Q:+FBVNCOD=0
|
---|
| 88 | . ;do not file "Q" for SMALL BUSINESS - file "S" instead
|
---|
| 89 | . S:FBVNCOD=158 FBVNCOD=162
|
---|
| 90 | . ;R->RV for SMALL BUSINESS
|
---|
| 91 | . S:FBVNCOD=159 FBVNCOD=167
|
---|
| 92 | . ; place internal value in FBFDA if it is not already in there
|
---|
| 93 | . D Q:FBVNDBL'="" S FBFDA(161.225,"+"_FBI_","_FBDA_",",.01)=FBVNCOD
|
---|
| 94 | . . S FBVNDBL=0 F S FBVNDBL=$O(FBFDA(161.225,FBVNDBL)) Q:'FBVNDBL Q:FBFDA(161.225,FBVNDBL,".01")=FBVNCOD
|
---|
| 95 | ; file internal values in file
|
---|
| 96 | I $D(FBFDA) D UPDATE^DIE("","FBFDA")
|
---|
| 97 | Q
|
---|