| [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 | 
|---|