cT763 ;WEGSCHRIJVEN KALENDERMAAND-DETAIL ;%T70 ; [ 13/03/2002 - 15:13:54 - 58876,54834 ] ; T0 ;Wegschrijven kalendermaand-detail ; ; T0F ;Enregistrement détail par mois ; ; T0E ;Wegschrijven kalendermaand-detail ; ;via ^QAFS(0,1.1,100-199 G 1 ; ; regime=0 (lineair) ; HL = looptijd (aantal jaren) ; HA = aanschaffingswaarde ; JRBD = jaarbedrag per jaar ; HS = startmaand ; EBJ = boekjaar van startmaand ; EBM = eerste maand van 1e boekjaar ; ATL = aantal maanden nog in 1e boekjaar ; MND = telvariabele voor maand ; HR = restbedrag ivm laatste maand ; S0 ; FB - 18.08.03 - ivm looptijd 0 jaar (FRB) G S0Z:'HL ; F I=1:1:HL S JRBD(I)=$J(HA/HL,0,QD) S JRBD(HL)=JRBD(HL)+(HA-(JRBD(1)*HL)) ; event.versch. bij ltste jaar D IBJ^cT00A(Q,"","KM1","KM2") ; opbouwen KM1 en KM2 S EBJ=$$BJ^cAFE1(Q,HS),EBM=$G(KM1(EBJ)) I EBM="" S EBM=EBJ_"."_$P(KM1(DJ),".",2) G S0A:HS=EBM ; indien startmaand = 1e maand 1e boekjaar ; ; indien startmaand '= 1e maand boekjaar ; bepalen aantal maanden 1e boekjaar S ATL=1,MND=HS S0VOL S MND=MND+.01 S:$P(MND,".",2)>12 MND=MND+.88 I MND'>$S($G(KM2(EBJ)):KM2(EBJ),1:EBJ_"."_$P(KM2(DJ),".",2)) S ATL=ATL+1 G S0VOL S HM=HS,HR=JRBD(1) F HT=1:1:ATL S HB=$S(HT'=ATL:$J(JRBD(1)/ATL,0,QD),1:HR) D . ; S @("^"_Q_"AFS(INV,CAT,RRZ_"" "",+HM)")=HB,HR=HR-HB,HM=HM+.01 . I $L($G(DESBP)) S DESBJ=$$BJ^cAFE1(Q,DESBP),DESM1=KM1(DESBJ) I HM'.12 HM=HM\1+1.01 ; ; voor de andere jaren vanaf 2 tot HL ; F JR=2:1:HL D . S HR=JRBD(JR),HM=$G(KM1(EBJ+JR-1)) . I HM="" S HM=(EBJ+JR-2)_"."_$P(KM2(DJ),".",2)+.01 S:HM#1>.12 HM=HM\1+1.01 . F HT=1:1:12 S HB=$S(HT'=12:$J(JRBD(JR)/12,0,QD),1:HR) D .. ; S @("^"_Q_"AFS(INV,CAT,RRZ_"" "",+HM)")=HB,HR=HR-HB,HM=HM+.01 .. I $L($G(DESBP)) S DESBJ=$$BJ^cAFE1(Q,DESBP),DESM1=KM1(DESBJ) I HM'.12 HM=HM\1+1.01 G S0Z ; ; indien startmaand = 1e maand 1e boekjaar ; S0A F JR=1:1:HL D . S HR=JRBD(JR),HM=$G(KM1(EBJ+JR-1)) . I HM="" S HM=(EBJ+JR-2)_"."_$P(KM2(DJ),".",2)+.01 S:HM#1>.12 HM=HM\1+1.01 . F HT=1:1:12 S HB=$S(HT'=12:$J(JRBD(JR)/12,0,QD),1:HR) D .. ; S @("^"_Q_"AFS(INV,CAT,RRZ_"" "",+HM)")=HB,HR=HR-HB,HM=HM+.01 .. I $L($G(DESBP)) S DESBJ=$$BJ^cAFE1(Q,DESBP),DESM1=KM1(DESBJ) I HM'.12 HM=HM\1+1.01 S0Z K HR,HT Q ; ; regime=1 (lineair pro rata temporis) ; S1 S HR=HA,HM=HS ; FB - 18.08.03 - ivm looptijd 0 jaar (FRB) G S1Z:'HL ; F HT=1:1:(HL*12) S HB=$S(HT'=(HL*12):$J(HA/(HL*12),0,QD),1:HR) D . ; S ^(+HM)=HB,HR=HR-HB,HM=HM+.01 . I $L($G(DESBP)),HM'.12 HM=HM\1+1.01 S1Z K HR,HT Q ; ; regime=2 (degressief) ; S2 N SW S SW=HA<0 S:SW HA=-HA ; FB - 18.08.03 - ivm looptijd 0 jaar (FRB) G S2Z:'HL ; D IBJ^cT00A(Q,"","KM1","KM2") ; opbouwen KM1 en KM2 S HR=HA,HIL=100/HL,HJ="" F H=1:1:HL S HB=$J(HR*HIL/100*2,0,QD),HID=HB/HA*100 D I HR=0 Q . S:HIDHR HB=HR . S HJ=HJ_HB_D,HR=HR-HB S2A S HM=HS F HT=1:1:HL S HR=$P(HJ,D,HT) Q:HR="" d . F H=1:1:12 S HB=$J($S(H'=12:$P(HJ,D,HT)/12,1:HR),0,QD) d .. ; s ^(+HM)=HB*$S(SW:-1,1:1),HR=HR-HB,HM=HM+.01 .. I $L($G(DESBP)) S DESBJ=$$BJ^cAFE1(Q,DESBP),DESM1=KM1(DESBJ) I HM'.12 HM=HM\1+1.01 I SW S HA=-HA S2Z K HR,HIL,HID,HJ,HB,HM Q ; ; FB - 18.03.03 S3 ; regime=3 (pro rata per dag) ; ; HS = 1e boekingsperiode ; EHS = 1e dag van de boekingsperiode ; HD = startdatum afschrijving (uit veld 23) ; VERS = aantal dagen tussen HS en HD ; HB = bedrag per maand ; AFT = af te trekken bedrag 1e maand ; SOM = som alle afschrijvingsbedragen ; LAMND=laatste maand afschrijving ; EXMDN=extra, bijkomende maand ; N EHS,R,AFT,SOM,MND,LAMND,EXMND S $ZT="TRAP^cAN000" ; FB - 18.08.03 - ivm looptijd 0 jaar (FRB) G S3Z:'HL ; D IBJ^cT00A(Q,"","KM1","KM2") ; opbouwen KM1 en KM2 S EHS=$$DCO^cAFD1($TR(HS,".")_"01") ; 1e dag van de startmaand S HD=$P(B(1),D,23) ; eerste boekingsdag I HD=EHS G S3N ; normale pro rata als startdag = 1e dag van de startmaand ; ; aantal dagen verschil tussen 1e dag startmaand en startdatum afschr. S R=HD_D_EHS D ^cA326 S VERS=R ; ; opbouwen tabel AFS met gelijke bedragen S HR=HA,HM=HS F HT=1:1:(HL*12) S HB=$J(HA/(HL*12),0,QD) D . S AFS(+HM)=HB,HR=HR-HB,HM=HM+.01 . S:HM#1>.12 HM=HM\1+1.01 ; ; aanpassen eerste en opzetten extra maand in tabel AFS ; S AFT=$J(HB*12*VERS/365,0,QD) ; berekening af te trekken bedrag 1e maand S AFS(+HS)=AFS(+HS)-AFT ; aanpassen 1e maand S SOM=0,MND="" F S MND=$O(AFS(MND)) Q:MND="" S SOM=SOM+AFS(MND) S LAMND=$O(AFS(""),-1) ; bepalen laatste maand S EXMND=LAMND+.01 ; bepalen extra maand I EXMND#1>.12 S EXMND=EXMND\1+1.01 S AFS(+EXMND)=HA-SOM ; ; wegschrijven van AFS in bestand afschrijvingen S MND="" F S MND=$O(AFS(MND)) Q:MND="" D . I $L($G(DESBP)),MND'.12 HM=HM\1+1.01 S3Z K HR,HT Q ; S4 ; FB - 04.04.03 ; regime=4 (degressief per dag) ; ; SW : switch negatief ; HA : aanschafwaarde ; HR : restwaarde ; HL : looptijd ; HB : maandbedrag ; HJ : string met jaarbedragen ; HS : staartmaand ; AF(...) : af te trekken waarde per jaar ; AFS : tabel met bijgewerkte maandbedragen ; TOT : totaal alle bijgewerkte jaarbedragen ; EXM : extra maand N SW,AFS S $ZT="TRAP^cAN000" ; FB - 18.08.03 - ivm looptijd 0 jaar (FRB) G S4Z:'HL ; D IBJ^cT00A(Q,"","KM1","KM2") ; opbouwen KM1 en KM2 S SW=HA<0 S:SW HA=-HA S HR=HA,HIL=100/HL,HJ="" F H=1:1:HL S HB=$J(HR*HIL/100*2,0,QD),HID=HB/HA*100 D I HR=0 Q . S:HIDHR HB=HR . S HJ=HJ_HB_D,HR=HR-HB S4A S HM=HS F HT=1:1:HL S HR=$P(HJ,D,HT) Q:HR="" d . F H=1:1:12 S HB=$J($S(H'=12:$P(HJ,D,HT)/12,1:HR),0,QD) d .. s AFS(HM)=HB,HR=HR-HB,HM=HM+.01 .. S:HM#1>.12 HM=HM\1+1.01 ; ; check of 1e boekingsdag = dag 1 van startmaand ; S EHS=$$DCO^cAFD1($TR(HS,".")_"01") ; 1e dag van de startmaand S HD=$P(B(1),D,23) ; eerste boekingsdag I HD=EHS G S4B ; startdag = 1e dag van de startmaand -> geen herrekening nodig ; ; aantal dagen verschil tussen 1e dag startmaand en 1e boekingsdag. S R=HD_D_EHS D ^cA326 S VERS=R ; ; berekening aanpassingsbedragen en aanpassing maandbedragen ; K AF,JAAR F I=1:1 S JAAR(I)=$P(HJ,D,I) Q:JAAR(I)="" S AF(I)=$J(JAAR(I)*VERS/365,0,QD) ; aanpassing jaarbedragen F I=1:1 Q:$P(HJ,D,I)="" D . S $P(HJ,D,I)=$P(HJ,D,I)+$G(AF(I-1)) . I ($P(HJ,D,I)+$G(AF(I-1))-AF(I))>(HA*HIL/100) S $P(HJ,D,I)=$P(HJ,D,I)-AF(I) F I=1:1 Q:$P(HJ,D,I)="" D . S AFS(HS+I-1)=$G(AFS(HS+I-1))+$G(AF(I-1)) . I ($P(HJ,D,I)+$G(AF(I-1))-AF(I))>(HA*HIL/100) S AFS(HS+I-1)=AFS(HS+I-1)-AF(I) S TOT=0 F I=1:1 S JAAR(I)=$P(HJ,D,I) Q:JAAR(I)="" S TOT=TOT+JAAR(I) S HR=HA-TOT ; restwaarde voor extra maand ; bepalen extra maand en invullen restwaarde S EXM=$O(AFS(""),-1)+.01 I $P(EXM,".",2)>12 S EXM=EXM+.88 S AFS(EXM)=HR ; ; invullen maandbedragen in ^TEMP S4B S MND="" F S MND=$O(AFS(MND)) Q:MND="" D . I $L($G(DESBP)) S DESBJ=$$BJ^cAFE1(Q,DESBP),DESM1=KM1(DESBJ) I HM'