cTN101 ; Dagboek/Registraties : Boekhoudkundige verwerking ; cTN101 ; T1 ;Document;Leverancier ;Klant ;Financiële rekening ; ; T1F ;Document;Fournisseur ;Client ;Compte financier ; ; T1E ;Document;Supplier ;Customer ;Financial Account ; ; YZ Q ; DB(GRIDID,IDOCNR,PAR) ; Registreren van een document in dagboek en registraties ; Input: *** Verplicht *** ; GRIDID: GridId van te verwerken mtemp99 met hoofding en registraties ; ; *** Optioneel *** ; IDOCNR: Intern documentnummer ; Indien doorgegeven: bestaand dagboek-entry wordt gewijzigd ; Indien "": nieuw dagboek-entry wordt aangemaakt ; PAR: Parameters, gescheiden door "\" ; 1. Switch omrekenen ; "" of 0: munt BH opzetten aan de hand van munt document ; 1: munt document opzetten aan de hand van munt BH ; 2. Factuur bestaat reeds in oude BH ; 0: Neen, doorschrijven naar nieuwe én "oude" BH ; 1: Ja, enkel doorschrijven naar nieuwe BH ; 3. Switch éénmalige conversie ; "" of 0: online gelijkhouden ; 1: éénmalige conversie ; ; Output: 0\Errorboodschap\ ; 1\ \Intern documentnr\Extern documentnr ; "": Geen verwerking gebeurd N RZR,REG,I3,i,DB,TAB,BR,RZR,K,DB,EDOCNR,OK,N,DEL,TDB,LE,KL,LOCK,WIJZ N MNTI,MNTO,MPAR,SWOM,KK,TOTBH,TOTOP,SWCONV S $ZT="TRAP^cAN000" S @%Q1=0 ; ; Onthouden last reference DB1 D S1^cAFA1 ; ; Controle parameters DB2 I '$L($G(GRIDID)) S OK="" G DBY S PAR=$G(PAR),IDOCNR=$G(IDOCNR) S WIJZ=0 I $L(IDOCNR) S WIJZ=1 S SWCONV=+$P(PAR,D,3) ; ; --- Hoofding --- ; ; Copy nemen van Mtemp99: BH.xx(x) DB3 S OK=1,DB=$O(^mtemp99(GRIDID,"DB","")) I '$L(DB) X "STOP" S DB(1)=$G(^mtemp99(GRIDID,"DB",DB,0)) F N=1:1:6 S DB(N+1)=$G(^(N)) K ^mtemp99(GRIDID,"BH.DB"),^mtemp99(GRIDID,"BH.REG") M ^mtemp99(GRIDID,"BH.DB")=^mtemp99(GRIDID,"DB") M ^mtemp99(GRIDID,"BH.REG")=^mtemp99(GRIDID,"REG") ; ; Algemene controles DB30 S OK=$$CHK^cTN1012(GRIDID) I 'OK G DBY ; ; Document-type specifieke controles DB301 S TDB=$P(DB(1),D) I TDB="A" S OK=$$CHK^cTN1101(GRIDID,$P(PAR,D)) G DB309 ; Aankoop I TDB="V" S OK=$$CHK^cTN1201(GRIDID,$P(PAR,D)) G DB309 ; Verkoop I TDB="D" G DB309 ; Diversen I TDB="F" G DB309 ; Financieel ; ... DB309 I 'OK G DBY ; ; Algemene locks ********************************************************** ; OPMERKING: bij het wijzigen worden de rekeningen op dit moment nog NIET ; gelockt. Het is namelijk nog niet mogelijk om registraties te ; wijzigen (manuele of automatische). ; ************************************************************************* DB31 I WIJZ G DB32 S OK=$$LOCK^cTN1012(GRIDID,.LOCK) I 'OK G DBY ; ; Document-type specifieke locks DB311 S TDB=$P(DB(1),D) I TDB="A" S OK=$$LOCK^cTN1101(GRIDID,.LOCK) G DB312 ; Aankoop I TDB="V" S OK=$$LOCK^cTN1201(GRIDID,.LOCK) G DB312 ; Verkoop I TDB="D" G DB312 ; Diversen I TDB="F" G DB312 ; Financieel ; ... DB312 I 'OK G DBY ; ; Extra B-indexen opzetten DB32 I $$ISBB^cTN9102(TDB) G DB321 ; Document begin BH DB321 S $P(DB(1),D,30)=+$P(DB(1),D,30) ; Niveau I WIJZ S EDOCNR=$P(DB(1),D,3) G DB33 S $P(DB(1),D,49)=$$Q49^cAFVBA03(Q,"DB") ; Vennootschap I $L($P(DB(1),D,3)) S EDOCNR=$P(DB(1),D,3) G DB33 S EDOCNR=$$FNR^cTN002(.Q,$P(DB(1),D,2),$P(DB(1),D,5)) ; Extern documentnummer I 'EDOCNR S OK=0_D_$P(EDOCNR,D,2) G DBY S $P(DB(1),D,3)=EDOCNR ; ; Bedragen in munt document omzetten naar munt BH DB33 I $$ISBB^cTN9102(TDB) G DB39 ; Document begin BH S SWOM=0 I $P(PAR,D) S SWOM=1 ; Omreken switch S MPAR=$P(DB(1),D,15),MNTI=$P(DB(1),D,14),MNTO="" I SWOM S MNTO=MNTI,MNTI="" S TOTBH=$P(DB(1),D,19-(SWOM*3)),KK=$P(DB(1),D,20-(SWOM*3)),TOTOP=$P(DB(1),D,21-(SWOM*3)) F i="KK","TOTBH","TOTOP" S @i=$$OMREK^cTN001(.Q,@i,MNTI,MNTO,"",$S(MNTI="":"",1:MPAR),$S(MNTO="":"",1:MPAR)) S $P(DB(1),D,16+(SWOM*3))=TOTBH,$P(DB(1),D,17+(SWOM*3))=KK,$P(DB(1),D,18+(SWOM*3))=TOTOP ; Totaal doc.+ KK + Totaal openst. S $P(DB(1),D,22)=(+TOTOP'=0) ; Openstaand: ja/neen? ; ; Aanpassingen in mtemp99 opslaan DB39 S ^mtemp99(GRIDID,"BH.DB",DB,0)=DB(1) ; ; Document-type specifieke zaken oproepen DB4 S TDB=$P(DB(1),D) I TDB="A" D DB^cTN1101(GRIDID,$P(PAR,D)) G DB43 ; Aankoop I TDB="V" D DB^cTN1201(GRIDID,$P(PAR,D)) G DB43 ; Verkoop I TDB="D" D DB^cTN1301(GRIDID,IDOCNR) G DB43 ; Diversen I TDB="F" D DB^cTN1301(GRIDID,IDOCNR) G DB43 ; Financieel I TDB="AD" D DB^cTN1301(GRIDID,IDOCNR) G DB43 ; Analytisch divers I TDB="ID" D DB^cTN1301(GRIDID,IDOCNR) G DB43 ; Segment divers ; ... ; ; Aanpassingen in ^mtemp99 opslaan DB43 S DB(1)=$G(^mtemp99(GRIDID,"BH.DB",DB,0)) F N=1:1:9 S DB(N+1)=$G(^(N)) ; Intern documentnummer bepalen + locken DB45 I '$L(IDOCNR) S IDOCNR=$$UI1DB($P(DB(1),D)) ; Intern documentnummer ophalen S OK=$$LOCK^cAFVBA01(.Q,"DB",IDOCNR,1,$P($T(@("T1"_QT)),U,2)) I 'OK G DBY S L=($O(LOCK("zzz"),-1)+1) S LOCK(L)="DB"_D_IDOCNR ; Hooofding opslaan DB47 I WIJZ G DB475 ; Nieuw D P^cAN220("DB","",IDOCNR,"DB","") I $L(K) X "STOP" ; Stoppen indien boeking niet gelukt G DB479 ; Wijzigen DB475 K TAB F N=1:1:6 F BI=1:1:99 S TAB(N*100+BI)=$P($G(DB(N)),D,BI) D B^cAN220("DB","",IDOCNR,"TAB") I $L(K) X "STOP" ; Stoppen indien boeking niet gelukt DB479 S OK=1 ;_D_D_IDOCNR_D_EDOCNR ; ; Voorlopig *************************************************************** I (TDB="A")!(TDB="V") I WIJZ G DBY ; ************************************************************************* ; ; --- Registraties --- ; D REG(GRIDID,IDOCNR,"",$P(PAR,D)) ; ; --- Link met "oude" BH --- ; DB6 I WIJZ G DBY ; Bestaand dagboek gewijzigd I $P(PAR,D,2) G DBY ; Bestaat reeds in "oude" boekhouding I TDB="A" S OK=$$AA^cTN1109(Q,IDOCNR) G DB69 ; Aankoop I TDB="V" G DB69 ; Verkoop I TDB="D" G DB69 ; Diversen I TDB="F" G DB69 ; Financieel ; ... DB69 I 'OK X "STOP" ; Stoppen indien er fouten zijn in link ; ; Opkuis DBY I $L($G(GRIDID)) K ^mtemp99(GRIDID,"BH.DB"),^mtemp99(GRIDID,"BH.REG") ; ; Unlocken D UNLOCK^cTN1012(.LOCK) ; ; Terugzetten last reference D S2^cAFA1 ; ; Opzetten output (indien alles OK) I OK S OK="1"_D_D_$G(IDOCNR)_D_$G(EDOCNR) ; DBZ S @%Q1=1 Q OK ; LOCK(Q,DBUI1,LOCK,EXCL) ; Locks bij wijzigen dagboek ; Input: Q: Q-waarde (doorgeven als referentie) ; DBUI1: UI1 van dagboek ; LOCK: 0 : unlock ; 1 of onbestaand : lock ; EXCL: 0 of "": Meerde locks toegelaten binnen dezelfde $J ; 1: Exclusieve lock S $ZT="^dmERROR" N @$$INITVAR^cAFVBA01("Q,DBUI1,LOCK,EXCL") ; ; Parameters LOCK1 S OK=1 I '$L($G(DBUI1)) G LOCKZ S:'$L($G(LOCK)) LOCK=1 S:'$L($G(EXCL)) EXCL=0 ; ; Dagboek (nieuwe BH) (un)locken LOCK2 S TXT=$P($T(@("T1"_QT)),U,2) S OK=$$LOCK^cAFVBA01(.Q,"DB",DBUI1,LOCK,TXT_"~"_EXCL) I 'OK G LOCKY I LOCK S LOCK(0)="DB"_D_DBUI1 ; ; Document-type specifieke locks LOCK3 S DB(1)=$$SIGN^cAFA1("DB",DBUI1,0) I '$L(DB(1)) G LOCKY I $P(DB(1),D)="A" G LOCK4 ; Aankoop I $P(DB(1),D)="V" G LOCK5 ; Verkoop I $P(DB(1),D)="D" G LOCK6 ; Divers I $P(DB(1),D)="F" G LOCK7 ; Financieel G LOCKY ; ; Aankoop LOCK4 ; "Oud" dagboek S LREF="^"_$P(DB(1),D,49)_"AA("_$P(DB(1),D,5)_","_$P(DB(1),D,3)_")" I 'LOCK L -@LREF G LOCK42 S TXT=$P($T(@("T1"_QT)),U,2) S OK=$$PLUS^cANLOCK(LREF,"",TXT,0,2,EXCL) I 'OK G LOCKY S LOCK(1)=""_D_""_D_LREF G LOCK42 ; Leverancier LOCK42 S TXT=$P($T(@("T1"_QT)),U,3)_$$SIG^cAFA1("LE.A",$P(DB(1),D,10),101) S OK=$$LOCK^cAFVBA01(.Q,"LE.A",$P(DB(1),D,10),LOCK,TXT_"~"_EXCL) I 'OK G LOCKY I LOCK S LOCK(0)="LE.A"_D_$P(DB(1),D,10) G LOCKY ; ; Verkoop LOCK5 S LREF="^"_$P(DB(1),D,49)_"VE("_$P(DB(1),D,5)_","_$P(DB(1),D,3)_")" I 'LOCK L -@LREF G LOCK52 S TXT=$P($T(@("T1"_QT)),U,2) S OK=$$PLUS^cANLOCK(LREF,"",TXT,0,2,EXCL) I 'OK G LOCKY S LOCK(1)=""_D_""_D_LREF G LOCK52 ; Leverancier LOCK52 S TXT=$P($T(@("T1"_QT)),U,4)_$$SIG^cAFA1("KL.A",$P(DB(1),D,10),101) S OK=$$LOCK^cAFVBA01(.Q,"KL.A",$P(DB(1),D,10),LOCK,TXT_"~"_EXCL) I 'OK G LOCKY I LOCK S LOCK(0)="KL.A"_D_$P(DB(1),D,10) G LOCKY ; ; Divers LOCK6 ; .. G LOCKY ; ; Financieel LOCK7 ; "Oud" dagboek ; ; ??? MOET DIT OOK GELOCKED WORDEN ??? ; ; Financiële rekening LOCK72 S TXT=$P($T(@("T1"_QT)),U,5)_$$SIG^cAFA1("AR.A",$P(DB(1),D,11),101) S OK=$$LOCK^cAFVBA01(.Q,"AR.A",$P(DB(1),D,11),LOCK,TXT_"~"_EXCL) I 'OK G LOCKY I LOCK S LOCK(0)="AR.A"_D_$P(DB(1),D,11) G LOCKY ; ; Unlocken van reeds gelockte UI1's LOCKY I 'OK I LOCK D UNLOCK^cTN1012(.LOCK) ; LOCKZ Q OK ; UI1DB(TDB) ; UI1 dagboek bepalen ; Input: TDB: Type dagboek (A,V,F,...) ; Output: Type dagboek_" "_volgnummer ; N UI1,UQC,USC,UREF,DIN,NR S $ZT="TRAP^cAN000" ; ; Ophalen definities UI1DB1 S UI1="" D DMS^cAN000("UQC","USC","DB",1) I (UQC="")!(USC="") G UI1DBZ S UREF=$G(^DMC(UQC,USC,"DATA","REF")) I '$L(UREF) G UI1DBZ S DIN=$G(^DMC(UQC,USC,"DIN")) I '$L(DIN) G UI1DBZ ; ; Nieuw nummer bepalen UI1DB2 L +@DIN@(TDB) F S NR=$G(@DIN@(TDB),"1000000"),^(TDB)=NR+1,UI1=TDB_" "_NR Q:'$D(@UREF) L -@DIN@(TDB) ; UI1DBZ Q UI1 ; UI1REG(TREG) ; UI1 registratie bepalen ; Input: TREG: Type registratie (A,V,F,...) ; Output: type registratie_" "_volgnummer ; N UI1,UQC,USC,UREF,DIN,NR S $ZT="TRAP^cAN000" ; ; Ophalen definities UI1REG1 S UI1="" D DMS^cAN000("UQC","USC","REG",1) I (UQC="")!(USC="") G UI1REGZ S UREF=$G(^DMC(UQC,USC,"DATA","REF")) I '$L(UREF) G UI1REGZ S DIN=$G(^DMC(UQC,USC,"DIN")) I '$L(DIN) G UI1REGZ ; ; Nieuw nummer bepalen UI1REG2 L +@DIN@(TREG) F S NR=$G(@DIN@(TREG),"1000000"),^(TREG)=NR+1,UI1=TREG_" "_NR Q:'$D(@UREF) L -@DIN@(TREG) ; UI1REGZ Q UI1 ; REG(GRIDID,IDOCNR,IREGNR,PAR) ; Opzetten registraties ; Input: GRIDID: GridId van de mtemp99 met hoofding en registratie-lijn(en) ; IDOCNR: Intern documentnummer (hoofding) ; IREGNR: Intern registratienummer ; PAR: extra parameters gescheiden door "\" ; 1. Switch omrekenen ; Uitleg: zie REG^cTN1010 N I3,REG,i,WREG S $ZT="TRAP^cAN000" ; ; Stoppen indien geen registraties (bv. bij voorschotten) I '$G(GRIDID) G REGZ I '$D(^mtemp99(GRIDID,"BH.REG")) G REGZ ; ; Niewe registratie(s) of bestaande? REG1 I $L($G(IREGNR)) G REG6 ; ; ********************* ; Nieuwe registratie(s) ; ********************* ; ; Registraties bijwerken (deelboekingen, munt BH, maatstaven, ...) REG2 I '$L($G(IREGNR)) D REG^cTN1010(GRIDID,IDOCNR,$P(PAR,D)) ; ; Registraties bewaren REG3 S I3="" REG4 S I3=$O(^mtemp99(GRIDID,"BH.REG",I3)) G:'$L(I3) REGZ S REG(1)=^(I3,0) I $P(REG(1),D,30)=2 G REG4 ; Verwijderd D P^cAN220("REG","",$$UI1REG($P(REG(1),D)),"REG","") I $L(K) X "STOP" ; Stoppen indien boeking niet gelukt REG5 G REG4 ; ; ********************* ; Bestaande registratie ; ********************* ; REG6 S I3=$O(^mtemp99(GRIDID,"BH.REG","")) G:'$L(I3) REGZ S REG(1)=^(I3,0) I $P(REG(1),D,30)=2 G REGZ ; Verwijderd F i=1:1:100 S WREG(100+i)=$P(REG(1),D,i) D B^cAN220("REG","",IREGNR,"WREG") I $L(K) X "STOP" ; Stoppen indien boeking niet gelukt ; REGZ Q ; ; Executes bij openen dagboek XO() N OK S $ZT="TRAP^cAN000" ; I $P(B(1),D)="A" S OK=$$XO^cTN1102 G XOZ ; Aankoop I $P(B(1),D)="V" S OK=$$XO^cTN1202 G XOZ ; Verkoop I $P(B(1),D)="D" S OK=2 G XOZ ; Diversen I $P(B(1),D)="F" S OK=2 G XOZ ; Fincancieel ; ... S OK=2 ; XOZ Q OK ; XW(Q,DBUI1,A,B) ; xecutes bij wijzigen dagboek ; Q = Q-waarde ; DBUI1 = UI1 uit ^DBH("EA","DB" ; A = tabel met oude nodes ; B = tabel met nieuwe nodes ; S $ZT="TRAP^cAN000" N OK,Q S Q=$P(B(1),D,49),Q(49)=Q S OK=2 I $$SIG^cAFA1("Q",Q,201)=2 G XWZ ; enkel nog nieuwe registratie XWA I $P(B(1),D)="A" S OK=$$WAA^cTN1109(.Q,DBUI1,.A,.B) G XWZ XWZ Q OK ; ZZ ; 29.08.07 - 10 u 22 * V8.09