cT410 ;Pointeren voorschotten: opbouwen ^TEMP;cT41 ; G 1 ; T0 ;Pointeren voorschotten; ; T0F ;Pointage des acomptes; ; 1 N REK,I1,LIJN,I2,I,HIST,SUB2 11 S $ZT="TRAP^cAN000" 13 S REK=$P(@("^"_Q_"BA(""%F"",21)"),D)_" " 15 K ^TEMP(boot,$J) ; Aflopen van detailhistoriek in ^_Q_AR binnen het gekozen jaar (KJ) 17 S I1=1_(KM1(KJ)*100) 19 F S I1=$O(@("^"_Q_"AR(REK,I1)")) Q:I1=""!(I1'?.N1".".N)!(I1>(1_((KM2(KJ)*100))+.999)) D . W /CUP(18,2),I1 . S LIJN=^(I1) . S I2=$L(LIJN,D)-1 . S LIJNP=$G(@("^"_Q_"ARP(REK,I1)")) . ; Opzoeken of veld reeds werd gepointeerd . F I=1:1:I2 D .. ; Reeds gepointeerde velden worden overgeslaan .. I $L($P(LIJNP,D,I)) Q .. ; Opbouwen van een lijn in ^TEMP(boot,$J,1 .. S HIST=$P(LIJN,D,I) .. D BOUW(I1,HIST,I) ; ; Berekenen subtotaal 2 van deel 2 van de lijst 2 S KC="",SUB2=0 21 F S KC=$O(^TEMP(boot,$J,1,2,KC)) Q:KC="" D . S SUB2=SUB2+$P(^(KC),D,2) 23 S ^TEMP(boot,$J,1,2,0)=SUB2 ; ; Opzetten nog te pointeren bedrag van het beginsaldo 3 S $P(^TEMP(boot,$J,1,1,0),D,2)=$$BSAL(KJ) ; Beginsaldo optellen in subtotaal 1 31 S $P(^TEMP(boot,$J,1,1,0),D)=$P($G(^TEMP(boot,$J,1,1,0)),D)+$P(^TEMP(boot,$J,1,1,0),D,2) ; ; Opzetten 2e hulpbestand voor sortering op naam van de klant 4 F I1=1,2 D . S KC=0 . F S KC=$O(^TEMP(boot,$J,1,I1,KC)) Q:KC="" D .. S KLNAAM=$$SG^cAFA1("KL",KC,102),KLNR=$P(^(0),D) .. S INDKL=$$DI^cAN000(KLNAAM,KLNR) .. S ^TEMP(boot,$J,2,INDKL)=KC ; YZ Q ; BOUW(IND,HIST,PLAATS) ; Opbouwen van een lijn in ^TEMP(boot,$J N I1,I2,I3,FILIJN,KC,VNR,BEDR,FNR,INDKL,KLNAAM,KLNR,KCF,US,UGL,UR,URSTR,SWOK,K S $ZT="TRAP^cAN000" ; Opzoeken van de overeenkomstige lijn in ^_Q_FI I $E(HIST)'="B" G BOUWZ ; Opzoeken 1e ind. ^_Q_FI: boekingsperiode S I1=$E(IND,2,5)_"."_$E(IND,6,7) ; Opzoeken 2e ind. ^_Q_FI: nr. grootboekrek. S I2=$E($P(HIST,"#"),2,99) ; Opzoeken 3e ind. ^_Q_FI: volgnummer S I3=$P(HIST,"#",2) S FILIJN=$G(@("^"_Q_"FI(I1,I2,I3)")) S KC=$P(FILIJN,D,32) S US=$P(FILIJN,D,33) S BEDR=$P(FILIJN,D,5) S FNR=$P(FILIJN,D,13) S UGL=$P(FILIJN,D,31) S UR=$P(FILIJN,D,34) I FNR,$$VSKCF^cFW100(Q) S KC=$P($$KCF(FNR,KC),D,2) ; ophalen factuurklant I $P(FILIJN,D,6)="C" S BEDR=-BEDR ; Lijnen zonder KC = manuele lijnen, komen op deel 3 van de lijst I '$L(KC) D . ; Bepalen van het volgnummer voor het wegschrijven van een lijn in ^TEMP . S VNR=$O(^TEMP(boot,$J,1,3,"Z",""),-1)+1 . S ^TEMP(boot,$J,1,3,"Z",VNR)=IND_D_PLAATS_D_HIST_D_BEDR_D . ; Bijhouden subtotaal 3 . S ^TEMP(boot,$J,1,3,0)=$P($G(^TEMP(boot,$J,1,3,0)),D)+BEDR ; Lijnen met KC komen op deel 1 of deel 2 van de lijst I $L(KC) D . ; Indien er een factuurnummer aanwezig is er is nog niet geboekt in deel 2 ---> deel 1 tabel . I $L(FNR)&('$D(^TEMP(boot,$J,1,2,KC))) D Q .. ; opzoeken factuurklant .. I '$L($P($G(TEMP(boot,$J,1,1,KC)),D))&($L(FNR)) D ... S KCF=$P($$KCF(FNR,KC),D,2) ... I KC'=KCF S $P(^TEMP(boot,$J,1,1,KC),D)=KCF .. S VNR=$O(^TEMP(boot,$J,1,1,KC,""),-1)+1 .. S ^TEMP(boot,$J,1,1,KC,VNR)=IND_D_PLAATS_D_HIST_D_BEDR_D_D_BEDR_D_UR .. ; Bijhouden subtotaal 1 .. S $P(^TEMP(boot,$J,1,1,0),D)=$P($G(^TEMP(boot,$J,1,1,0)),D)+BEDR . ; Indien er geen factuurnummer aanwezig is (voorschot) of er is reeds geboekt in deel 2 . ; opzoeken factuurklant . I '$L($P($G(TEMP(boot,$J,1,2,KC)),D))&($L(FNR)) D .. S KCF=$P($$KCF(FNR,KC),D,2) .. I KC'=KCF S $P(^TEMP(boot,$J,1,2,KC),D)=KCF . S VNR=$O(^TEMP(boot,$J,1,2,KC,""),-1)+1 . ; Bepalen van het saldo . S SALDO=$P($G(^TEMP(boot,$J,1,2,KC)),D,2) . S SALDO=SALDO+BEDR . S $P(^TEMP(boot,$J,1,2,KC),D,2)=SALDO . S ^TEMP(boot,$J,1,2,KC,VNR)=IND_D_PLAATS_D_HIST_D_SALDO_D_0_D_BEDR_D_UR . ; Als twee lijnen elkaar opheffen qua bedrag en het nummer van de leveringsbon stemt overeen . ; dan mogen deze lijnen gepointeerd worden . ; Testen deel 2 van de lijst . S I1=0,SWOK=0 . I UR,VNR>1 F S I1=$O(^TEMP(boot,$J,1,2,KC,I1)) Q:I1=""!(I1=VNR) D .. I $P(^(I1),D,5) Q .. ; I $P(^(I1),D,6)+BEDR'=0 Q .. I ($P(^(I1),D,6)+BEDR)>0.01!(($P(^(I1),D,6)+BEDR)<-0.01) Q .. S K=$P(^(I1),D,7) I 'K Q .. I (U_UR_U)[(U_K_U)!((U_K_U)[(U_UR_U)) S $P(^(I1),D,5)=1,SWOK=1 . ; Testen deel 1 van de lijst . S I1=0 . I UR,$D(^TEMP(boot,$J,1,1,KC)) F S I1=$O(^TEMP(boot,$J,1,1,KC,I1)) Q:I1="" D .. I $P(^(I1),D,6)+BEDR'=0 Q .. S K=$P(^(I1),D,7) I 'K Q .. I (U_UR_U)[(U_K_U)!((U_K_U)[(U_UR_U)) S $P(^(I1),D,5)=1,SWOK=1 .. ; Bedrag terug aftrekken van subtotaal 1 .. S $P(^TEMP(boot,$J,1,1,0),D)=$P($G(^TEMP(boot,$J,1,1,0)),D)-$P(^TEMP(boot,$J,1,1,KC,I1),D,6) .. ; Lijn overzetten van deel 1 van de lijst naar deel 2 van de lijst .. S ^TEMP(boot,$J,1,2,KC,(VNR+1))=^TEMP(boot,$J,1,1,KC,I1) .. K ^TEMP(boot,$J,1,1,KC,I1) .. S SALDO=$P($G(^TEMP(boot,$J,1,2,KC)),D,2) .. S SALDO=SALDO+$P(^TEMP(boot,$J,1,2,KC,(VNR+1)),D,6) .. S $P(^TEMP(boot,$J,1,2,KC),D,2)=SALDO .. S $P(^TEMP(boot,$J,1,2,KC,(VNR+1)),D,4)=SALDO .. I $O(^TEMP(boot,$J,1,1,KC,""))="" K ^TEMP(boot,$J,1,1,KC) . I SWOK=1 S $P(^TEMP(boot,$J,1,2,KC,VNR),D,5)=1 . ; Als saldo op 0 komt te staan kan deze lijn en alle voorgaande lijnen van de klant worden . ; gepointeerd . I SALDO=0!(SALDO=0.01)!(SALDO=-0.01) D .. S VNR=0 .. F S VNR=$O(^TEMP(boot,$J,1,2,KC,VNR)) Q:VNR="" D ... S $P(^(VNR),D,5)=1 BOUWZ Q ; KCF(FNR,KC) ; ophalen US en KCF van een factuur N OK,US,KCF S US="",KCF=KC F S US=$O(@("^"_Q_"FA(US)")) Q:US="" D I OK Q . I '$D(@("^"_Q_"FA(US,FNR,0,0)")) Q . S KCF=$P(^(0),D),OK=1 KCFZ Q US_D_KCF ; BSAL(BJ) ; Opzoeken van het nog te pointeren beginsaldo N R,VNR S $ZT="TRAP^cAN000" S R=$P($G(@("^"_Q_"AR(REK,BJ)")),D) S VNR=$P($G(@("^"_Q_"ARP(REK,BJ)")),D) I '$L(VNR) G BSALZ S R=$P($G(@("^"_Q_"ARP(REK,0,VNR)")),D,4) BSALZ Q R ; ZZ ; 19.03.07 - 15 u 31 * V8.08