cTN1010 ; Registraties ; cTN101 ; YZ Q ; REG(GRIDID,IDOCNR,PAR) ; Aanpassen registraties ; Input: *** Verplicht *** ; GRIDID ; IDOCNR: Intern documentnummer ; ; *** Optioneel *** ; PAR: extra parameters gescheiden door "\" ; 1. Switch omrekenen ; "" of 0: munt BH opzetten aan de hand van munt document + ; koersverschil wegwerken ; 1: munt document opzetten aan de hand van munt BH + ; koersverschil wegwerken ; 2: munt BH opzetten aan de hand van munt document maar ; koersverschil NIET wegwerken ; 3: NIET omrekenen ; 2. 2de mtemp99-subscript van hoofding ; "" = BH.DB ; 3. 2de mtemp99-subscript van hoofding ; "" = REG.DB ; 4. Deelboekingen samentellen? ; "" of 0: ja ; 1: neen N RZR,GVENT,NETG,NETD,NETI,NETA,NABTW,MAXV,MAXB,V,SALDO,BASISB,DB,MNTI,MNTO N BEDR,MPAR,N0,SVENT,UI1,SV,BEDRVN,i,SUB2DB,SUB2REG,MAXDC,DEB,CRE,BSW,ON S $ZT="TRAP^cAN000" ; ; Onthouden last reference REG1 D S1^cAFA1 ; ; Controle parameters + variabelen opzetten REG2 I '$L($G(GRIDID)) G REGY I '$L($G(IDOCNR)) G REGY S PAR=$G(PAR),SUB2REG="BH.REG" I $L($P(PAR,D,3)) S SUB2REG=$P(PAR,D,3) S GVENT="^mtemp99(GRIDID,SUB2REG)" S SUB2DB="BH.DB" I $L($P(PAR,D,2)) S SUB2DB=$P(PAR,D,2) S DB=$O(^mtemp99(GRIDID,SUB2DB,"")) I '$L(DB) G REGY S DB(1)=$G(^(DB,0)) S TDB=$P(DB(1),D) I TDB="A" S DB(4)=$G(^(3)),DB(5)=$G(^(4)) S ON=4,BSW=0 I $P(PAR,D)=1 S ON=5,BSW=2 ; aankoop I TDB="V" S DB(2)=$G(^(1)),DB(3)=$G(^(2)) S ON=2,BSW=0 I $P(PAR,D)=1 S ON=3,BSW=2 ; verkoop I (TDB'="A"),(TDB'="V") G REG5 ; Enkel voor aankoop/verkoop ; ; Munt BH opzetten aan de hand van munt document REG3 G:$P(PAR,D)=3 REG4 G:$P(PAR,D)=2 REG33 S NETG=$P(DB(ON),D),NETD=$P(DB(ON),D,2),NETI=$P(DB(ON),D,3),NETA=$P(DB(ON),D,4),NABTW=$P(DB(ON),D,11) I TDB="A" S SALDO=NETG+NETD+NETI+NETA+NABTW I TDB="V" S SALDO=-NETG S (MAXV,MAXB)="" REG33 S (V,BASISB)="",MPAR=$P(DB(1),D,15),MNTI=$P(DB(1),D,14),MNTO="" I TDB="A",ON=5 S MNTO=MNTI,MNTI="" I TDB="V",ON=3 S MNTO=MNTI,MNTI="" REG35 S V=$O(@GVENT@(V)) I '$L(V) G REG39 S N0=^(V,0) I $P(N0,D,30)=2 G REG35 I '$P(N0,D,32) S BASISB=1 ; Boeking op basisrekening (geen sprake van koersverschillen) S BEDR=$P(N0,D,17-BSW),DC=0 I 'BEDR S BEDR=$P(N0,D,18-BSW),DC=1 S BEDR=$$OMREK^cTN001(.Q,BEDR,MNTI,MNTO,"",$S(MNTI="":"",1:MPAR),$S(MNTO="":"",1:MPAR)) S $P(@GVENT@(V,0),D,15+DC+BSW)=BEDR I BASISB!($P(PAR,D)'<2) G REG35 S SALDO=SALDO-(BEDR*$S(DC:-1,1:1)) I BEDR>MAXB S MAXV=V,MAXB=BEDR,MAXDC=DC S:'$L(MAXV) MAXV=V G REG35 REG39 I $P(PAR,D)<2,'BASISB,SALDO,$L($G(MAXV)) D . S V=MAXV . S $P(@GVENT@(V,0),D,15+MAXDC+BSW)=$P(@GVENT@(V,0),D,15+MAXDC+BSW)+(SALDO*$S(MAXDC=1:-1,1:1)) ; Wegwerken omrekenverschil ; ; Samennemen deelboekingen REG4 S V="" I $P(PAR,D,4) G REG5 REG40 S V=$O(@GVENT@(V)) I '$L(V) G REG5 S N0=^(V,0) I $P(N0,D,30)=2 G REG40 S UI1="" F j=8:1:12,19,24,25 S UI1=UI1_"~"_$P(N0,D,j) ; Samennemen per rekeningen,omschr.,project en afschr. ; Eerste unieke lijn I $D(SVENT(UI1)) G REG43 S BEDR=$P(N0,D,15)-$P(N0,D,16) I +BEDR=0 K @GVENT@(V) G REG40 ; Nul-lijnen verwijderen S SVENT(UI1)=V G REG40 ; Samennemen REG43 S SV=SVENT(UI1),i=13 K @GVENT@(V) REG45 S i=i+2 I i>17 G REG49 S DEB=$P(@GVENT@(SV,0),D,i)+$P(N0,D,i) S CRE=$P(@GVENT@(SV,0),D,i+1)+$P(N0,D,i+1) S BEDR=DEB-CRE I +BEDR=0 K @GVENT@(SV),SVENT(UI1) G REG40 ; Nul-lijnen verwijderen S $P(@GVENT@(SV,0),D,i)=$S(BEDR<0:0,1:BEDR) ; Debet S $P(@GVENT@(SV,0),D,i+1)=$S(BEDR<0:-BEDR,1:0) ; Credit REG47 G REG45 REG49 G REG40 ; ; Hoofdinggegevens overnemen + verwijderde lijnen filteren REG5 S V="" REG50 S V=$O(@GVENT@(V)) I '$L(V) G REGY S N0=^(V,0) I $P(N0,D,30)=2 K @GVENT@(V) G REG50 ; Niveau 2 -> effectief verwijderen S $P(@GVENT@(V,0),D,3)=IDOCNR ; Intern documentnummer S $P(@GVENT@(V,0),D,36)=$P(DB(1),D,7) ; Documentdatum F i=1,2,5,6,49 S $P(@GVENT@(V,0),D,i)=$P(DB(1),D,i) ; Diverse REG51 G REG50 ; ; Terugzetten last reference REGY D S2^cAFA1 ; REGZ Q ; ; ZZ ; 29.08.07 - 10 u 22 * V8.09