cTN1112 ; Aankoop : Inschrijven aankoopdocumenten: hoofding; cTN1112; ; T1 ;Opgevraagd document is geen aankoopdocument.; T2 ;U heeft geen licentie voor de dagboeken.; T3 ;Opgelet: het definitieve documentnummer is ; T4 ;Totaal document klopt niet (; i.p.v. ;).; T5 ;Een factuur moet positief ingegeven worden.; T6 ;Een credit nota moet negatief ingegeven worden.; T7 ;Korting contant op een factuur moet negatief ingegeven worden.; T8 ;Korting contant op een credit nota moet positief ingegeven worden.; T9 ;Rekening bij BTW-soort ;Rekening aftrekbare BTW ; T10 ;Uitsplitsing netto bedragen klopt niet (; i.p.v. ;). T11 ;Het teken van de maatstaf dient overeen te komen met het teken van de som van goederen, diensten en investeringen.; T12 ;OK;Volledige heringave; ; T1F ; ; T1E ; ; T1D ; ; YZ Q ; BTEMP(GRIDID,DB) ; Opbouwen mtemp99 voor aankoopdocumenten ; Input: GRIDID: Gridid van mtemp99 met registraties (indien "": nieuw gridid ophalen) ; DB: UI1 van het dagboek (aankoop) ; Output: GRIDID ; of ; 0\Foutboodschap S $ZT="ERR^cAFVBF01" N @$$INITVAR^cAFVBA01("GRIDID,DB") ; ; Controle parameters BTEMP1 F i="GRIDID","DB" S @i=$G(@i) I '$L(GRIDID) S GRIDID=$$GRIDID^cAFVBF01() S OK=GRIDID I '$L(DB) G BTEMPZ I $E(DB)'="A" S OK="0\"_$P($T(@("T1"_QT)),U,2) G BTEMPZ K ^mtemp99(GRIDID,"DB") ; ; Opslag BTEMP2 S REF=$$REF^cAFA10(.Q,"DB"),UREF=$P(REF,D) I '$L(UREF) S OK="0\"_$P($T(@("T2"_QT)),U,2) G BTEMPZ ; ; Mtemp99 opbouwen BTEMP3 S UI1=DB M ^mtemp99(GRIDID,"DB",DB)=@UREF ; ... ; ... ; ... ; BTEMPZ Q OK ; BTWBDR(MST,TYPE) ; Bepaalt bedrag type BTW (+ eventueel aftrekbare BTW) ; Input: MST: Maatstaf van heffing ; TYPE: Type BTW (CODE.9032) ; Output: gescheiden door "\" ; 1. Bedrag Type BTW ; 2. Bedrag Aftrekbare BTW N @$$INITVAR^cAFVBA01("MST,TYPE") S $ZT="^dmERROR" ; ; Check parameters BTWBDR1 S R="",D="\" I '$L($G(MST)) G BTWBDRZ I '$L($G(TYPE)) G BTWBDRZ ; ; BTW-type definities ophalen BTWBDR2 S TYPEN=$$SIGN^cAFA1("CODE.9032",TYPE,0) I '$L(TYPEN) G BTWBDRZ S PCT=$P(TYPEN,D,5) I '$L(PCT) G BTWBDRZ ; BTW-percentage S S1=1 S:$P(TYPEN,D,8) S1=-1 ; Omgekeerd teken maatstaf? S SW=$P(TYPEN,D,9) ; Switch aftrekbare BTW ; ; Bedragen berekenen BTWBDR3 S R=(MST*PCT/100)*S1 I SW S R=R_D_-R ; BTWBDRZ Q R ; CHKBA(BTWSRT,FC) ; Check op basisrekeningen aankoop ; Input: BTWSRT: UI1 BTW-soort ; FC: Type document ; F = Factuur ; C = Credit nota ; Output: 1: Alles OK ; 0\Foutboodschap S $ZT="^dmERROR" N @$$INITVAR^cAFVBA01("BTWSRT,FC") ; ; Basisrekeningen aankoop CHKBA1 S OK=$$CTRLBA^cTN003(.Q,"A",1) I 'OK G CHKBAZ ; ; Rekening bij BTW-soort CHKBA2 I '$L($G(BTWSRT)) G CHKBA3 S N0=$$SIGN^cAFA1("CODE.9032",BTWSRT,0) S TXT=$P($T(@("T9"_QT)),";",2)_$P(N0,D) S OK=$$CTRLREK^cTN003("",$P(N0,D,6+(FC="C")),"AR.A",TXT) I 'OK G CHKBAZ ; ; Aftrekbare BTW CHKBA3 S AFBTW=$$UI1OP^cAFA1("CODE.9032","104","",1004) S N0=$$SIGN^cAFA1("CODE.9032",AFBTW,0) S TXT=$P($T(@("T9"_QT)),";",3)_$P(N0,D) S OK=$$CTRLREK^cTN003("",$P(N0,D,6+(FC="C")),"AR.A",TXT) I 'OK G CHKBAZ ; CHKBAZ Q OK ; CHKFC(FC,TOTD) ; Check of totaal document met het juiste teken is ingegeven ; Input: FC: Type document ; F = Factuur ; C = Credit nota ; TOTD: Totaal document ; Output: 1: Alles ok ; 0\Foutboodschap N OK S $ZT="^dmERROR" ; ; Check parameters CHKFC1 S OK=1 I '$L($G(FC)) G CHKFCZ I '$L($G(TOTD)) G CHKFCZ ; ; Check of factuur/CN positief/negatief is ingegeven CHKFC2 I FC="F",(TOTD<0) S OK=0_"\"_$P($T(@("T5"_QT)),";",2) G CHKFCZ I FC="C",(TOTD>0) S OK=0_"\"_$P($T(@("T6"_QT)),";",2) G CHKFCZ ; CHKFCZ Q OK ; CHKFCK(FC,KK) ; Check op teken korting contant ; Input: FC: Type document ; F = Factuur ; C = Credit nota ; KK: Korting contant N OK S $ZT="^dmERROR" ; ; Check parameters CHKFCK1 S OK=1 I '$L($G(FC)) G CHKFCKZ I '$L($G(KK)) G CHKFCKZ ; ; Check of factuur/CN positief/negatief is ingegeven CHKFCK2 I FC="F",(KK>0) S OK=0_"\"_$P($T(@("T7"_QT)),";",2) G CHKFCKZ I FC="C",(KK<0) S OK=0_"\"_$P($T(@("T8"_QT)),";",2) G CHKFCKZ ; CHKFCKZ Q OK ; CHKJRN(TJRN) ; Checkt of er maar één operationeel journaal van het doorgegeven ; type bestaat. ; Input: TJRN: Type journaal (A,V,...) ; Output: JRN: indien slechts één op. journaal van het doorgegeven type bestaat ; "": indien geen of meerdere journalen bestaan N JRN,REF,NODE,NOK S $ZT="^dmERROR" ; ; Check parameters CHKJRN1 I '$L($G(TJRN)) G CHKJRNZ ; ; Opslagstructuur ophalen CHKJRN2 S (JRN,NOK)="",REF=$$REF^cAFA10(.Q,"JRN"),UREF=$P(REF,D),IREF=$P(REF,D,3) I '$L(UREF) G CHKJRNZ ; ; Check uitvoeren CHKJRN3 S I1="" F S I1=$O(@IREF@("M7",$$Q^cAFA10(),TJRN,I1)) Q:'$L(I1) D Q:NOK . S UI1=$P(^(I1),D),NODE=@UREF@(0) I $P(NODE,D,30) Q . I $L(JRN) S JRN="",NOK=1 Q ; Meerdere journalen gevonden . S JRN=UI1 ; CHKJRNZ Q JRN ; CHKMNT(MNT) ; Checkt of muntparteit gewijzigd mag worden ; Dit mag niet indien de munt = EUR aangezien er steeds tegenover de ; EUR moet worden ingegeven. N R S $ZT="^dmERROR" ; S R=$G(MNT)'="EUR" ; CHKMNTZ Q R ; CHKMST(MST,NETG,NETD,NETI) ; Checkt of teken maatstaf = teken som G+D+I ; Input: MST: Maatstaf ; NETG: Goederen ; NETD: Diensten ; NETI: Investeringen ; NETA: Andere ; Output: 1: Tekens komen overeen ; 0\Foutboodschap N R S $ZT="^dmERROR" ; ; Parameters CHKMST1 F i="MST","NETG","NETD","NETI","NETA" S @i=$G(@i) ; CHKMST2 S R=1 I +MST>=0 I +(NETG+NETD+NETI)>=0 G CHKMSTZ I +MST<0 I +(NETG+NETD+NETI)<0 G CHKMSTZ S R="0\"_$P($T(@("T11"_QT)),";",2)_"\"_$P($T(@("T12"_QT)),";",2)_"\"_$P($T(@("T12"_QT)),";",3) ; CHKMSTZ Q R ; CHKGDIA(NETG,NETD,NETI,NETA,TOT) ; Checkt of de som van G+D+I+A = Totaal document ; Input: NETG: Goederen ; NETD: Diensten ; NETI: Investeringen ; NETA: Andere ; TOT: Totaal ; Output: 0: Totaal doc. en som G+D+I+A zijn NIET gelijk ; 1: Totaal doc. en som G+D+I+A zijn gelijk N R,i S $ZT="^dmERROR" ; ; Parameters CHKGDIA1 F i="NETG","NETD","NETI","NETA","TOT" S @i=$G(@i) ; ; Check CHKGDIA2 S R=(+TOT=+(NETG+NETD+NETI+NETA)) ; CHKGDIAZ Q R ; CHKTOT(TOT,NETG,NETD,NETI,NETA,AFBTW,NABTW,TBTW) ; Check of totalen kloppen ; Input: TOT: Totaal document ; NETG: Goederen ; NETD: Diensten ; NETI: Investeringen ; NETA: Andere ; AFBTW: Aftrekbare BTW ; NABTW: Niet-aftrekbare BTW ; TBTW: Bedrag type BTW ; Output: 1: alles OK ; 0\Foutboodschap\button text 1\button text 2 N R,i S $ZT="^dmERROR" ; ; Parameters CHKTOT1 F i="TOT","NETG","NETD","NETI","NETA","AFBTW","NABTW","TBTW" S @i=$G(@i) ; ; Controle: Totaal doc = G+D+I+A+AFBTW+NABTW+TBTW CHKTOT2 S CHK=(NETG+NETD+NETI+NETA+AFBTW+NABTW+TBTW) S R=1 I +TOT=+CHK G CHKTOTZ S R="0\"_$P($T(@("T4"_QT)),";",2)_+CHK_$P($T(@("T4"_QT)),";",3)_+TOT_$P($T(@("T4"_QT)),";",4) S R=R_"\"_$P($T(@("T12"_QT)),";",2)_"\"_$P($T(@("T12"_QT)),";",3) ; CHKTOTZ Q R ; CHKKK(LE) ; Check of er een KK is ingevuld bij de leverancier ; Input: LE: Leveranciersid (LE.A) ; Ouput: 0: Geen KK ingvuld bij LE ; 1: Wel KK ingevuld bij LE N @$$INITVAR^cAFVBA01("LE") S $ZT="^dmERROR" ; I '$L($G(LE)) S R=0 G CHKKKZ S R=$$SIG^cAFA1("LE.A",LE,117) S R=$S(R:1,1:0) ; CHKKKZ Q R ; DEFMST(NETG,NETD,NETI,KK) ; Default maatstaf bepalen N MST S $ZT="^dmERROR" ; ; Parameters DEFMST1 F i="NETG","NETD","NETI","KK" S @i=$G(@i) ; ; Default MST = NETG+NETD+NETI (KK default niet verwerken in MST) DEFMST2 S MST=NETG+NETD+NETI ;+KK ; DEFMSTZ Q +MST ; DEFAF(TOT,NETG,NETD,NETI,NETA) ; Default aftrekbare BTW bepalen N AFBTW S $ZT="^dmERROR" ; ; Parameters DEFAF1 F i="TOT","NETG","NETD","NETI","NETA" S @i=$G(@i) ; ; Default AFBTW = TOT-NETG-NETD-NETI-NETA DEFAF2 S AFBTW=TOT-NETG-NETD-NETI-NETA ; DEFAFZ Q AFBTW ; DEFNA(TOT,NETG,NETD,NETI,NETA,AFBTW,TBTW) ; Default niet-aftrekbare BTW bepalen N NABTW S $ZT="^dmERROR" ; ; Parameters DEFNA1 F i="TOT","NETG","NETD","NETI","NETA","AFBTW","TBTW" S @i=$G(@i) ; ; Default NABTW = TOT-NETG-NETD-NETI-NETA-AFBTW-TBTW DEFNA2 S NABTW=TOT-NETG-NETD-NETI-NETA-AFBTW-TBTW ; DEFNAZ Q NABTW ; OMREK(BE,MI,PAR) ; Wrapper rond omrekenfunctie ; Input: BE: Bedrag in MI ; MI: Munt input ; PAR: Pariteit (1 EUR=) ; Output: bedrag in munt boekhouding S $ZT="^dmERROR" N @$$INITVAR^cAFVBA01("BE,MI,PAR") ; ; Aantal decimalen: default van bij firma ; Munt output: munt boekhouding OMREKZ Q $$OMREK^cTN001(.Q,$G(BE),$G(MI),"","",$G(PAR)) ; SAVE() ; Aankoopdocument verwerken in de boekhouding ; Output: 0\Foutboodschap\ \ ; 1\ \Intern docnr\Extern docnr ; -1\Waarschuwing \Intern docnr\Extern docnr S $ZT="^dmERROR" ; ; ; TAB-samenstellen + intialiseren SAVE1 D ..%NormalizeObject() D ..ObjToCacheSQL("O") S GRIDID=..GridId,UI1=..DbId S:'$L(UI1) UI1=0 N @$$INITVAR^cAFVBA01("TAB,GRIDID,UI1") ; ; Volgende B-indexen opzetten SAVE2 I UI1'=0 G SAVE6 S $P(TAB(1),D)="A" ; Aankoopdocument S $P(TAB(1),D,21)=$P(TAB(1),D,19) ; Totaal openstaand = totaal document ; ; Opslaan in mtemp99 SAVE6 S ^mtemp99(GRIDID,"DB",UI1,0)=TAB(1),^(1)=$G(TAB(2)) S ^(2)=$G(TAB(3)),^(3)=$G(TAB(4)),^(4)=$G(TAB(5)) I UI1=0 S $P(^mtemp99(GRIDID,"DB",UI1,0),D,3)="" ; Extern document nr uitblanken ; ; Document boekhoudkundig verwerken SAVE7 S OK=$$DB^cTN101(GRIDID,$S(UI1=0:"",1:UI1)) I 'OK G SAVEZ ; Mtemp99 opnieuw opbouwen D BTEMP(GRIDID,$P(OK,D,3)),BTEMP^cTN1113(GRIDID,$P(OK,D,3)) ; ; Is waarschijnlijk documentnr = definitief documentnr? SAVE8 I $P(TAB(1),D,3)'=$P(OK,D,4) S OK="-1"_D_$P($T(@("T3"_QT)),U,2)_$P(OK,D,4)_"."_D_$P(OK,D,3,99) G SAVEY ; ; SAVEY ; SAVEZ Q OK ; UITSPL(GRIDID,NETG,NETD,NETI,NETA) N OK,i,DB S $ZT="^dmERROR" ; Controle parameters UITSPL1 F i="GRIDID","NETG","NETD","NETI","NETA" S @i=$G(@i) I '$L(GRIDID) G UITSPLZ S OK=1,D="\",DB=$O(^mtemp99(GRIDID,"DB","")) I '$L(DB) G UITSPLZ S DB(4)=$G(^mtemp99(GRIDID,"DB",DB,4)) ; ; Controle of uitsplitsing nog klopt UITSPL2 S OTOT=0 F i=1:1:4 S OTOT=OTOT+$P(DB(4),D,i) S NTOT=NETG+NETD+NETI+NETA I +OTOT=+NTOT G UITSPLZ S OK=0_D_$P($T(@("T10"_QT)),U,2) S OK=OK_$$IP^cAFA1(+NTOT,QD,"")_$P($T(@("T10"_QT)),U,3)_$$IP^cAFA1(+OTOT,QD,"")_$P($T(@("T10"_QT)),U,4) ; UITSPLZ Q OK ; VENT(NETG,NETD,NETI,NETA,NABTW) ; Totaal te ventileren N R S $ZT="^dmERROR" ; S R=$G(NETG)+$G(NETD)+$G(NETI)+$G(NETA)+$G(NABTW) ; VENTZ Q R ; ZZ ; 29.08.07 - 10 u 22 * V8.09