cAFA10 ;Algemene functies ; cAFA10; [ 20/11/09 09:37:08 ] ; YZ Q ; DMQ49(Q,DMS) ; bepalen of er een ^DMQ opstaat S $ZT="TRAP^cAN000" N R S R="" I '$L($G(Q)) G DMQ49Z I '$L($G(DMS)) G DMQ49Z I DMS?1"TEXT."1.4N S R=0 G DMQ49Z ; teksten : steeds zonder Q49 I $L(Q),$L(DMS) S R=$G(^DMQ(Q,DMS,0)) I $L(R),$P($G(^(0)),D,30) S R=D I '$L(R),$L(DMS) S R=$G(^DMQ(0,DMS,0)) I $L(R),$P($G(^(0)),D,30) S R=D S R=$P(R,D) DMQ49Z Q R ; Q49(R,DMS) ; set nieuwe Q(49) op voor R (=Q) K Q(49) I $L($$DMQ49(R,DMS)) S Q(49)=$$Q49^cAFVBA03(R,DMS) Q ; ; Oproepen bij begin van functie: nieuwe Q(49) bepalen ; Opgelet: "oQ" newen binnen functie Q1(DMS) K oQ M oQ=Q K Q(49) I $L($G(DMS)) D Q49^cAFA10(Q,DMS) Q1Z Q ; ; Oproepen bij einde van functie: oorspronkelijke Q(49) terugzetten Q2 K Q M Q=oQ Q2Z Q ; QD(Q) ; ophalen QD ; komt naked met de juiste referentie naar buiten S $ZT="TRAP^cAN000" S R="" I '$$PAR(Q,201) G QDY ; enkel oude boekhouding I '$D(^(1)) G QDY S R=$P($G(^(1)),D,3) ; ophalen in ^DATA(,"Q",Q G QDZ QDY I '$L(R) S R=$G(@("^"_Q_"BA(34)")) ; ophalen in "^"_Q_"BA(39)" QDZ Q +R ; QN(Q) ; ophalen QN (firmanaam) ; komt naked met de juiste referentie naar buiten S $ZT="TRAP^cAN000" S R="" I '$$PAR(Q,201) G QNY ; enkel oude boekhouding I '$D(^(0)) G QNY S R=$P($G(^(0)),D,2) ; ophalen in ^DATA(,"Q",Q G QNZ QNY I '$L(R) S R=$G(@("^"_Q_"BA(99,1)")) ; ophalen in "^"_Q_"BA(99,1)" QNZ Q R ; BA39(Q,BIN) ; ophalen parameters firma ; komt naked met de juiste referentie naar buiten N R,I S $ZT="TRAP^cAN000" S R="" I "\202\204\205\206\222\122\214\"'[(D_$G(BIN)_D) G BA39Z I '$$PAR(Q,201) G BA39Y ; enkel oude boekhouding I '$D(^((BIN\100)-1)) G BA39Y S R=$P($G(^((BIN\100)-1)),D,BIN#100) ; ophalen in ^DATA(,"Q",Q G BA39Z BA39Y I '$L(R) D . ; munt firma, taalcode, taalcode ivm printen landcode (niet mr gebruikt), landcode, landcode BTW-adm, EAN-code, kenletters BTW-nr . S I=$S(BIN=202:1,BIN=204:2,BIN=205:15,BIN=206:3,BIN=222:3,BIN=122:14,BIN=214:4,1:"") . I 'I Q . S R=$P($G(@("^"_Q_"BA(39)")),D,I) ; ophalen in "^"_Q_"BA(39)" ; BA39Z Q R ; PAR(UI1,BIN) ; parameters firma N UQC,USC,R S $ZT="TRAP^cAN000" S R="" D DMS^cAN000("UQC","USC","Q",1) I '$L(UQC)!'$L(USC) G PARZ ; geen licentie S R=$$SIG^cAFA1("Q",UI1,BIN) PARZ Q R ; NR(I1,I2,I3,UREF,INITNR,DIN) ; ophalen vrij nummer als UI1 ; I1 = index 1 uit ^DIN ; I2 = index 2 uit ^DIN ; I3 = index 3 uit ^DIN (niet verplicht) ; UREF = databestand (met var UI1 erin) : indien ingevuld wordt op $d(@UREF) getest (niet verplicht) ; INITNR = initieel nr als ^DIN niet opstaat (niet verplicht) ; DIN = bestand indien verschillend van ^DIN (niet verplicht) ; S $ZT="TRAP^cAN000" N RZR,UI1 D S1^cAFE5 I '$L($G(INITNR)) S INITNR=1000 I '$L($G(DIN)) S DIN="^DIN" NRA S DIN=DIN_"("""_I1_""","""_I2_"""" I $L($G(I3)) S DIN=DIN_","""_I3_"""" S DIN=DIN_")" NRB L +@DIN NRC S UI1=$G(@DIN,INITNR),@DIN=UI1+1 I $L($G(UREF)),$D(@UREF) G NRC L -@DIN D S2^cAFE5 NRZ Q UI1 ; NR101(Q,DMS,B,BIN,UQC,USC) ; ophalen klantnummer, leveranciersnummer, ... en in B-101 wegschrijven ; via het nieuw bestand ^DKL, ^DLE maar nummer is <> van UI1 ; gebeurt normaal vanuit DMA en dus zijn de standaardvar. gekend ; B = door te geven via .B ; BIN = B-index (niet doorgegeven = 101) ; UQC en USC : indien niet doorgegeven : worden opgehaald adhv DMS indien ; ; Uitgang : OK = 2 : nummer goed opgevuld ; OK = 0 : nummer niet gevonden ; S $ZT="TRAP^cAN000" N DMSQ,R,OK S R="",OK=0 I '$L($G(BIN)) S BIN=101 NR101A I $L($P(B(BIN\100),D,BIN#100)) S OK=2 G NR101Z I '$L($G(UQC))!'$L($G(USC)) D DMS^cAN000("UQC","USC",DMS,1) S DMSQ=$$DMSQ^cAN008(DMS) ; moet er een bestand gelijk gehouden worden? ; indien ja, overschakelen naar dit bestand voor nummer op te halen I $L(DMSQ) S UQC=$P(^DMS(DMSQ,DMS,2),D),USC=$P(^(2),D,2) NR101B I '$L(UQC)!'$L(USC) G NR101Z S R=$$NR^cAN000 I $E(R,1,$L(R))=" " S R=$P(R," ") ; AR, ARA I $L($P(R," ",2)) S R=$P(R," ",2) ; KL, LE I '$L(R) G NR101Z NR101Y S $P(B(BIN\100),D,BIN#100)=R,OK=2 NR101Z Q OK ; REF(Q,DMS,BI,UQC,USC,PAR) ; ophalen data- en indexbestanden ; Q = Q-waarde en dient best doorgegeven te worden als referentie (.Q) ; om zo ook Q(49) door te geven. ; Indien Q(49) bestaat wordt gekeken of er een multiple ; voor B-index 149 en BI opstaat. ; DMS = DMS ; BI = B-index ; UQC = UQC | -> indien deze leeg zijn worden ze berekend ; USC = USC | via DMS^cAN000 ; PAR = gescheiden door \ ; 1. geen rekening houden met Q(49) of DMQ(,DMS) ; 2. Indien geen data in de index : var. leeg maken ; ; Dient initieel om de juiste indexbestanden te vinden ; om via de input in een codetextbox de UI1 te bepalen ; en dan bevindt zich in IREF* ook reeds BI of Multiple + Q ; UREF_D_IREF_D_IREF2_D_UDD_D_DIN_D_DLOG ; ; Vb : ; $$REF("EA","KL.A",101) ; -> ^DATA("EA","KL.A",UI1)_D_^INDEX("EA","KL.A",101)_D_^IND("EA","KL.A",101)_D_4_D_^DIN("EA","KL.A")_D_^DLOG("EA","KL.A") ; ; $$REF(.Q,"KL.A",101) en Q="EA" en Q(49)="EA" ; en er bestaat een ^DMC(0,"KL.A","MULTI2","M1") op 149 en 101 ; -> ^DATA("EA","KL.A",UI1)_D_D_^IND("EA","KL.A","M1","EA")_D_4 ; ; in het hoofdprogr. kan dan via @IREF@(waarde) het indexbestand gebruikt worden ; ; Maar kan ook algemeen gebruikt worden om de UREF, IREF, IREF2 ; voor een DMS te bepalen door BI niet door te geven waardoor ook ; geen rekening gehouden wordt met Q(49) : ; UREF_D_IREF_D_IREF2_D_UDD ; ; $$REF("EA","KL.A") ; -> ^DATA("EA","KL.A",UI1)_D_^INDEX("EA","KL.A")_D_^IND("EA","KL.A")_D_4_D_^DIN("EA","KL.A")_D_^DLOG("EA","KL.A") ; ; in het hoofdprogr. kan dan via @IREF@(BI,waarde) het indexbestand gebruikt worden ; S $ZT="TRAP^cAN000" N R,S1,IREF,IREF2,UREF,MULTI,MULTI2,i,j,APP,APP2,DIN,DLOG S R="",PAR=$G(PAR) REFA I '$L($G(UQC))!'$L($G(USC)) D DMS^cAN000("UQC","USC",DMS,1) I '$L(UQC)!'$L(USC) G REFZ I '$D(^DMC(UQC,USC)) G REFZ S S1=^DMC(UQC,USC,"DATA"),IREF=$G(^("DATA","INDEX")),IREF2=$G(^("INDEX2")),UREF=^("REF"),DIN=$G(^DMC(UQC,USC,"DIN")),DLOG=$G(^("LOGGING")) F i="IREF","IREF2","UREF","DIN" I $$UC^cAFA1(@i)="DUMMY" S @i="" I '$L(IREF)&'$L(IREF2) G REFY I '$L($G(BI)) G REFY ; enkel maar bestanden bepalen I BI'?1.N,BI'["""" S BI=""""_BI_"""" ; indexbestand + subscripts samenstellen REFB S (APP,APP2)=","_BI_")" I BI'?1.N G REFE ; reeds Multiple I $P(PAR,D) G REFE ; geen rekening houden met Q(49) of DMQ(,DMS) I '$D(Q(49)) G REFE I '$L($TR($$DMQ49(Q,DMS),0)) G REFE ; er bestaat geen ^DMQ(,DMS) REFC ; via de multiples lopen F i="",2 D . S j="",@("MULTI"_i)="" . I $L(@("IREF"_i)) F S j=$O(^DMC(UQC,USC,"MULTI"_i,j)) Q:j="" D I $L(@("MULTI"_i)) Q .. I $P($G(^(j,1)),D)'=149 Q .. I $P($G(^(2)),D)'=BI Q .. I '$L($O(^(2))) S @("MULTI"_i)=j Q I '$L(MULTI)&'$L(MULTI2) G REFE ; geen multiples gevonden : proberen op B-indexen lopen S (APP,APP2)="" REFD F i="",2 I $L(@("MULTI"_i)) D . S @("APP"_i)=Q(49) . I @("APP"_i)="",$P(^DMC(UQC,USC,"MULTI"_i,@("MULTI"_i),1),D,2) S @("APP"_i)=$P("0\ ",D,$P(^(1),D,2)) . I @("APP"_i)="" S @("IREF"_i)="" Q . S @("APP"_i)=","""_@("MULTI"_i)_""","""_@("APP"_i)_""")" REFE F i="",2 D . I '$L(@("APP"_i)) S @("IREF"_i)="" Q . I '$L(@("IREF"_i)) Q . S @("IREF"_i)=$E(@("IREF"_i),1,$L(@("IREF"_i))-1)_@("APP"_i) . I $P(PAR,D,2),'$D(@(@("IREF"_i))) S @("IREF"_i)="" ; indexbestand bestaat niet REFY S R=UREF_D_IREF_D_IREF2_D_S1_D_DIN_D_DLOG REFZ Q R ; REPL(R,OLD,NEW) ; Deze functie gaat in de string R de string OLD vervangen door een string NEW ; R : string ; OLD : de te vervangen string in R ; NEW : door welke string je deze gaat vervangen N i S OLD=$G(OLD),NEW=$G(NEW) I $L(OLD) S i=0 F S i=$F(R,OLD,i) Q:'i S R=$E(R,1,i-$L(OLD)-1)_NEW_$E(R,i,$L(R)),i=i-$L(OLD)+$L(NEW) REPLZ Q R ; Q() ; bepalen Q Q $S($L($G(Q(49))):Q(49),1:Q) ; ZZ ; 29.07.08 - 11 u 27 * V9.02