cT66ESE ;Leveranciersbetalingen: exporteren; cT66ESE [ 01/02/10 18:45:38 ] ; T0 ;Bestand uitlezen ; T3 ;Station voor het bestand\"a of b[] = floppy c, d, ..., of z[] = harde schijf; .[] = netwerk; T4 ;Directory of pad\"[] = root (hoofd-directory) xxxxxxxx[] = bepaalde directory",!?2,"dir1/dir2/.../dirn[] = path"; T5 ;Bestandsnaam\"xxxxxxxx of xxxxxxxx.xxx[] = naam"; T6 ;Bestandslocatie =; T7 ;Het bestand mag overgezet worden\".[] = ok ,[] = hernemen"; T14 ;Path\"drive:/dir1/dir2/...[] = lokale pc //computernaam/dir1/...[] = netwerk"; T15 ;Path\"drive:/dir1/dir2/...[] = server //computernaam/dir1/...[] = netwerk"; T16 ;De leveranciersbetaling werd geëxporteerd naar ;.; T17 ;Gelieve de map en bestand in te vullen bij de financiële rekening.; T18 ;Het pad bij de financiële rekening is niet correct ingevuld.; T19 ;Er moet een geldig IBAN nummer worden ingevuld bij de financiële rekening.; ; T0F ;Exportation d'un fichier ; T3F ;Station du fichier\"a ou b[] = disquette c, d, ..., ou z[] = disque dure; .[] = réseau; T4F ;Répertoire\"[] = root (répertoire principale) xxxxxxxx[] = repértoire spécifique",!?2,"rep1/rep2/.../repn[] = path"; T5F ;Nom du fichier\"xxxxxxxx ou xxxxxxxx.xxx[] = nom"; T6F ;Location fichier =; T7F ;Le fichier peut être exporté\".[] = oui ,[] = reprendre"; T14F ;Path\"station:/rép1/rép2/...[] = PC local //nom de PC/rép1/...[] = réseau"; T15F ;Path\"station:/rép1/rép2/...[] = serveur //nom de PC/rép1/...[] = réseau"; T16F ;L'ordre de paiement a été exporté vers ;.; T17F ;Veuillez informer le directoire et le nom de fichier dans la signalétique du compte financier.; T18F ;Le chemin n'a pas été rempli correctement dans la signalétique du compte financier.; T19F ;Numéro IBAN du compte financier n'est pas valable.; ; T0E ;Export file ; T3E ;Drive\"a of b[] = floppy c, d, ..., of z[] = harddisk; .[] = network; T4E ;Directory or path\"[] = root (parent directory) xxxxxxxx[] = specific directory",!?2,"dir1/dir2/.../dirn[] = path"; T5E ;Filename\"xxxxxxxx of xxxxxxxx.xxx[] = name"; T6E ;File location =; T7E ;Export file\".[] = ok ,[] = retry"; T14E ;Path\"drive:/dir1/dir2/...[] = local pc //computer/dir1/...[] = network"; T15E ;Path\"drive:/dir1/dir2/...[] = server //computer/dir1/...[] = network"; T16E ;The Supplier Payment is exported to ;.; T17E ;Please fill in directory and file at the financial account.; T18E ;The directory at the financial account is not filled in correctly.; T19E ;No valid IBAN-number had been filled in at the financial account.; ; T0D ;Dossier auslesen ; T3D ;Stelle für den Dossier\"a oder b[] = floppy c, d, ..., oder z[] = Harddisk; .[] = Netzwerk; T4D ;Directory oder pad\"[] = Root (Hauptdirectory) xxxxxxxx[] = bestimmte Directory",!?2,"dir1/dir2/.../dirn[] = path"; T5D ;Dossiername\"xxxxxxxx oder xxxxxxxx.xxx[] = Name"; T6D ;Bestandslocatie =; T7D ;Der Dossier darf übertragen werden\".[] = ok ,[] =wiedernehmen"; T14D ;Path\"drive:/dir1/dir2/...[] = lokale pc //Komputername/dir1/...[] = Netzwerk"; T15D ;Path\"drive:/dir1/dir2/...[] = Server //Komputername/dir1/...[] = Netzwerk"; T16D ;De leveranciersbetaling werd geëxporteerd naar ;.; T17D ;Gelieve de map en bestand in te vullen bij de financiële rekening.; T18D ;Het pad bij de financiële rekening is niet correct ingevuld.; T19D ;Er moet een geldig IBAN nummer worden ingevuld bij de financiële rekening.; ; YZ Q ; FILE(BR) ; ophalen of vraag naar path en file S SWNT=$ZV["NT"!($ZV'["MSM") S FILE=$$BEST^cT67(BR,"","") S B=FILE D S2 I $L($TR(FILE,D)) S DIR=$TR($S(SWNT:$P(B,D,1,$L(B,D)-1),1:$P($E(B,3,999),D,1,$L(B,D)-1)),D,"/") G FILE6 ; FILE3 I $P($G(^cLOG(boot,"DAM",3)),D)=1 D G FILEZ:K="-",FILE5 . K BB . I '$D(PTS) D .. D DMS^cAN000("UQC","USC","SYS.LOC") .. S IREF=^DMC(UQC,USC,"DATA","INDEX") I $O(@IREF@(101,""))="" D ^cAN3250(QU) .. S K=$$^cANSYN("SYS.LOC") Q:K="-" .. S $P(^HULP("TR",Q,TNR,0),D,10)=K .. S B=$$SIG^cAFA1("SYS.LOC",K,104) Q:'$L(B) . S B=B_"/" . D S3 . I '$$SIG^cAFA1("SYS.LOC",$P(^HULP("TR",Q,TNR,0),D,10),105) Q . S BB=$TR(B,D,"/"),SWNT=$ZV["NT"!($ZV'["MSM") . S R="BB\22\3\"_$P($T(@("T"_($ZV'["MSM"+14)_QT)),U,2)_"\68\\$E(K,1,2)?1A1"":""!($E(K,1,2)?2""/""&$L($P(K,""/"",3))&SWNT)!(K=""-"")",$P(R,D,13)=1 D R0 Q:K="-" . S B=BB,B=B_"/" D S3 ; oude manier ; drive S DR=$E(B) S:DR="" DR="C" S:DR=D DR="" S SWNT=$ZV["NT"!($ZV'["MSM") FILE31 S R="DR\22\3\"_$P($T(@("T3"_QT)),U,2)_$P($T(@("T3"_QT)),U,4-SWNT)_"""\1\\K=""-""!(K?1U)!(K="".""&SWNT)\\\1\\1" D R0 FILE33 G FILEZ:K="-" S DR=$TR(DR,"."),SWNT='$L(DR) S:'SWNT DR=DR_":" S B=DR D S2 ; ; path FILE4 S DIR=$TR($S(SWNT:$P(B,D,1,$L(B,D)-1),1:$P($E(B,3,999),D,1,$L(B,D)-1)),D,"/") FILE40 ; I SWNT,DIR="" S DIR=parameter FILE41 S R="DIR\22\3\"_$P($T(@("T4"_QT)),U,2)_"\50\\\\\\\1" D R0 G FILEZ:K="-"!(K=",") FILE43 S DIR=$TR(DIR,"/",D) FILE45 S B=$S(SWNT:DIR,1:DR_D_DIR) D S2 ; ; file FILE5 S KR=$S(K="-":$P(B,D,$L(B,D)),1:"") I K="-" S B=$P(B,D,1,$L(B,D)-1) FILE51 I $ZV["MSM",'SWNT S R="KR\22\3\"_$P($T(@("T5"_QT)),U,2)_"\12\\K=""-""!(K="","")!(K?1.8ANP)!(K?1.8ANP1"".""1.3ANP)\\\\\1" FILE53 I $ZV'["MSM"!SWNT S R="KR\22\3\"_$P($T(@("T5"_QT)),U,2)_"\30\\$L(K)\\\\\1" FILE55 D R0 I K="-" G FILE4:$P($G(^cLOG(boot,"DAM",3)),D),FILE3 S:K'["." K=K_".TXT" S FILE=K FILE57 S (FILE,B)=$S(SWNT:DIR,1:DR_D_DIR)_D_K D S2 ; ; overzetten (SWBV=1 -> automatische bevestiging) FILE6 S R="K\22\3\"_$P($T(@("T7"_QT)),U,2)_"\1\\""-,.""[K&$L(K)" D R0 G FILE5:K="-",FILEZ:K="," ; FILEZ Q $$BEST^cA710(FILE) ; R0 S $P(R,D,12)=$T(+0) D ^cAN1000 Q ; v12 23.01.95 ; S2 N R S R=$E(B),B=$E(B,2,$L(B)) S2A I B["\\" S B=$P(B,"\\")_D_$P(B,"\\",2,99) G S2A S B=R_B,B=$$UC^cAFA1(B) S FP=1503 W @F,$P($T(@("T6"_QT)),U,2),@F92,B,@F93,@F1 S2Z Q ; S3 S B=$TR(B,U,D),B=$TR(B,"/",D),SWNT=$E(B)=D G S3Z:'$L(B) D S2 S DR=$E(B,1,2),DIR=$E(B,3,999),DIR=$P(DIR,D,1,$L(DIR,D)-1) S:SWNT DIR=DR_DIR,DR="" S3Z Q ; ; EXP(UI1BET,SW) ; Exporteren betaling ; Input : UI1BET = UI1 betaling ; SW = 0 : check geëxporteerd ; 1 : geëxporteerd reeds gecontroleerd EXP(FILE,GRIDIDO,BVB) ; ; Input : FILE : exportbestand ; GRIDIDO van de ^mtemp99(,"BET" en (,"BET.DET" ; BVB : nummer van de betaling in ^mtemp99(GRIDID ; ; Output: 1 : alles OK ; 0\foutboodschap ; -1\waarschuwing ; EXP1 S $ZT="TRAP^cAN000" S OK=1,DMS="BET" ; EXP2 S UREFBET="^mtemp99(GRIDIDO,""BET"",BVB)" S BETN0=@UREFBET@(0) S BETN1=@UREFBET@(1) ; ; Testen status EXP3 S STAT=$P(BETN0,D,7) ; Controleren of reeds geexporteerd I $G(SW) G EXP30 ; ; Controle: Rekening moet geldige IBAN-NR hebben bij een europese overschrijving EXP30 S UI1AR=$P(BETN0,D,4),ARN0=$$SIGN^cAFA1("AR",UI1AR,0),ARN1=$G(^(1)) I $P(BETN0,D,6)=0 G EXP4 ; Geen europese overschrijving I '$L($P(ARN0,D,9))!'$$IBAN^cAFI2($P(ARN0,D,9)) S K=$P($T(@("T19"_QT)),U,2) D TXT^cAFA1(250) S K="-" G EXPY ; ; Ophalen pad + filenaam voor export EXP4 I $L($G(FILE)) S PAD=$P(FILE,D,1,$L(FILE,D)-1),FILE=$P(FILE,D,$L(FILE,D)) G EXP41 ; als FILE doorgegeven werd ; S PAD=$P(ARN1,D,2),FILE=$P(ARN1,D,3) EXP41 ; Testen of pad en filenaam zijn ingevuld I '$L(PAD)!'$L(FILE) S K=$P($T(@("T17"_QT)),U,2) D TXT^cAFA1(250) S K="-" G EXPY ; I $E($$UC^cAFA1(FILE),$L(FILE)-3,$L(FILE))'=".XML" S FILE=FILE_".xml" I $P($$UC^cAFA1(FILE),".",2)'="XML" S FILE=$P(FILE,".")_".XML" ; Testen of pad bestaat, indien niet aanmaken. Indien fout bij aanmaken fout doorgeven I $$TST^cA710(PAD)<0&($$CRED^cA710($TR(PAD,"/",D))<0) S K=$P($T(@("T18"_QT)),U,2) D TXT^cAFA1(250) S K="-" G EXPY S FILE=$$BEST^cA710(PAD_D_FILE) ; ; Voorbereidende mtemp opbouwen EXP5 S GRIDID=$$MTEMP(GRIDIDO,BVB) I 'GRIDID S OK=GRIDID G EXPY ; XML aanmaken EXP6 S OUTPXML=$$MKXML(+GRIDID,FILE) I 'OUTPXML S OK=OUTPXML G EXPY ; Tonen boodschap 'Export goed verlopen' EXP8 I OK S K=$P($T(@("T16"_QT)),U,2)_$TR($G(FILE),D,"/")_$P($T(@("T4"_QT)),U,3) D TXT^cAFA1(250) ; ; Opkuis EXPY L -@UREFBET ; Unlocken I $L($G(GRIDID)) K ^mtemp99(GRIDID) ; Mtemp99 opkuisen EXPZ Q ; ; MTEMP(GRIDIDO,UI1BET) ; Voorbereidende mtemp99 voor XML-file betalingen ; INPUT ; GRIDIDO : GRIDID van tijdelijk opgebouwde ^mtemp99 ; UI1BET: Unieke Id betaling ; OUTPUT ; 0\foutmelding ; GRIDID ; S $ZT="TRAP^cAN000" N @$$INITVAR^cAFVBA01("GRIDIDO,UI1BET") ; ; Controle parameters MTEMP0 I '$L($G(UI1BET)) S R=0 G MTEMPZ ; ; Opzetten variabelen MTEMP1 S GRIDID=$$GRIDID^cAFVBF01(),R=GRIDID S GLGROUP="^mtemp99(GRIDID,""GROUP"",0,INDEX)" MTEMP15 S UREFBET="^mtemp99(GRIDIDO,""BET"",BVB)" S UREFBET=$$REPL^cAFA10(UREFBET,"BVB","UI1BET") S UREFQ=$$REPL^cAFA10($P($$REF^cAFA10(Q,"Q"),D),"UI1",""""_Q_"""") I '$L(UREFBET)!'$L(UREFQ) S R=0 G MTEMPZ S QNODE=@UREFQ@(0),QNODE1=@UREFQ@(1),QNODE2=@UREFQ@(2),BETNODE=@UREFBET@(0) ; MTEMP2 S INDEX="1.0",@GLGROUP="" ; Groupheader S INDEX="1.1",@GLGROUP=$P(BETNODE,D) ; Nummer betaling S DATUM=$$DC^cAFD1($$HD^cAFD1($H)) S DATUM=$E(DATUM,1,4)_"-"_$E(DATUM,5,6)_"-"_$E(DATUM,7,8)_"T"_$$HT^cAFD1($H,1) ; YYYY-MM-DDThh:mm:ss S DATUM=$TR(DATUM," ",0) ; Geen spaties,$$HT geeft bij uren < 10 eerst een spatie S INDEX="1.2",@GLGROUP=DATUM ; Datum creatie S INDEX="1.7",@GLGROUP="MIXD" ; Groepering (= betalingsrekening) S $P(VELD18,D)=$P(QNODE,D,2) ; Naam vennootschap S $P(VELD18,D,4)=$E($P(@UREFQ@(1),D,7),3,$L($P(@UREFQ@(1),D,7))) ; Ondernemingsnummer firma, zonder BE S $P(VELD18,D,5)="KBO-BCE" ; Issuer: Vast op KBO-BCE S INDEX="1.8",@GLGROUP=VELD18 ; Initiating Party ; ; Detaillijnen (individuele betalingen) MTEMP3 S DET=$$MTEMPD(UI1BET,GRIDID,GRIDIDO) I 'DET S R=DET G MTEMPZ ; Transactielijnen uitvoeren en aantal invullen S INDEX="1.5",@GLGROUP=$P(DET,D,2) ; Controle getal ; ; Specifieke execute "DB 111": Aanpassingen na opbouw mtemp XML-bestand MTEMPY ; S SPEC=$$EXEC^cTN005(Q,"DB 111") I 'SPEC S R=SPEC G MTEMPZ ; MTEMPZ Q R ; ; PAYMENT(UI1BET,GRIDID,KOST) ; Betalingsinformatie opzetten per kostencode ; Input: UI1BET: Betaling (BET) ; GRIDID: GridId van de op te zetten mtemp99 ; KOST: Kostencode (SLEV of SHAR/DEBT/CRED) S $ZT="TRAP^cAN000" N GLPAYM,BETNODE,EURO,QNODE,QNODE1,QNODE2,INDEX,DATUM,VELD15,UI1ARA,REKNR,VELD16,ARN0,RES ; ; Betalingsinformatie reeds opgezet? PAYMENT1 I '$L($G(KOST))!'$L($G(GRIDID))!'$L($G(UI1BET)) G PAYMENTZ I $D(^mtemp99(GRIDID,"PAYMENT",KOST)) G PAYMENTZ ; ; Opzetten variabelen PAYMENT2 S GLPAYM="^mtemp99(GRIDID,""PAYMENT"",KOST,INDEX)" ; S BETNODE=$$SIGN^cAFA1("BET",UI1BET,0) S BETNODE=@UREFBET@(0) S EURO=+$P(BETNODE,D,6) S QNODE=$$SIGN^cAFA1("Q",Q,0),QNODE1=$G(^(1)),QNODE2=$G(^(2)) ; ; Indexen opzetten PAYMENT3 S INDEX="2.0",@GLPAYM="" ; Betalingsinformatie S INDEX="2.1",@GLPAYM=$P(BETNODE,D)_" "_KOST ; Nummer betaling S INDEX="2.2",@GLPAYM="TRF" ; Betalingsmethode S INDEX="2.5",@GLPAYM="" ; Servicelevel I EURO G PAYMENT4 S INDEX="2.6",@GLPAYM="PRPT" ; Niet-Europese overschrijving G PAYMENT5 PAYMENT4 S INDEX="2.6",@GLPAYM="SEPA" ; Europese overschrijving PAYMENT5 ;S DATUM=$P(BETNODE,D,3),DATUM=$$DC^cAFD1(DATUM) ; JK - 16.06.10 - Er is nu een veld uitvoeringsdatum voorzien op de form van de betalingen S DATUM=$P(BETNODE,D,11) ; Uitvoeringsdatum S RES=$$CHKDAT(DATUM) I 'RES!'$L(DATUM) S DATUM=DT ; Indien datum in het verleden ligt of indien niet ingevuld dagdatum gebruiken S DATUM=$$DC^cAFD1(DATUM) S INDEX="2.13",@GLPAYM=$E(DATUM,1,4)_"-"_$E(DATUM,5,6)_"-"_$E(DATUM,7,8) ; Datum van de betaling (YYYY-MM-DD) S VELD15="" S $P(VELD15,D,1)=$P(QNODE,D,2) ; Naam vennootschap S $P(VELD15,D,2)=$P(QNODE2,D) ; Adres S $P(VELD15,D,3)=$P(QNODE2,D,2)_" "_$P(QNODE2,D,3) ; Postcode + gemeente I $L($P(QNODE1,D,6)) S $P(VELD15,D,4)=$$SIG^cAFA1("ISO.LAND",$P(QNODE1,D,6),101) ; Iso land S INDEX="2.15",@GLPAYM=VELD15 ; ; Financiële rekening waarmee de betaling wordt uitgevoerd PAYMENT6 S UI1ARA=$P(BETNODE,D,4),ARN0=$$SIGN^cAFA1("AR",UI1ARA,0) S REKNR=$TR($$BANK^cAFVBO01(Q,$P(ARN0,D,9))," ") S VELD16="" I $$IBAN^cAFI2(REKNR) S $P(VELD16,D)=REKNR G PAYMENT7 ; Rekeningnr. in IBAN-structuur S $P(VELD16,D,2)=$TR($P(ARN0,D,9),"-") ; Rekeningnr. niet in IBAN-structuur PAYMENT7 S INDEX="2.16",@GLPAYM=VELD16 ; Account debiteur I $L($P(ARN0,D,69)) S INDEX="2.17",@GLPAYM=$TR($$SIG^cAFA1("SWIFT",$P(ARN0,D,69),101)," ") ; BIC I EURO S INDEX="2.20",@GLPAYM="SLEV" G MTEMPZ ; Kostencode voor Europese overschrijving S INDEX="2.20",@GLPAYM=$$SIG^cAFA1("CODE.9046",KOST,101) ; Kostencode voor niet-Europese overschrijving ; PAYMENTZ Q ; MTEMPD(UI1BET,GRIDID,GRIDIDO) ; Voorbereidende mtemp99 voor XML-file betalingen (detaillijnen) ; INPUT ; UI1BET: Unieke Id betaling ; GRIDID: GridId van de mtemp99 ; GIRIDO : GRIDID van tijdelijke ^mtemp99 ; OUTPUT ; 0\foutmelding ; 1\aantal lijnen ; S $ZT="TRAP^cAN000" N (UI1BET,GRIDID,GRIDIDO,Q,D) ; ; Opzetten variabelen MTEMPD1 S R=1,AANTAL=0,UI1BETDET=UI1BET_" " I '$L($G(UI1BET)) S R=0 G MTEMPDY S UREFQ=$$REPL^cAFA10($P($$REF^cAFA10(Q,"Q"),D),"UI1",""""_Q_"""") S QNODE=@UREFQ@(0),QNODE2=@UREFQ@(2) S GLTRANS="^mtemp99(GRIDID,""TRANSACTION"",KOST,VOLGNR,INDEX)" S UREFBET="^mtemp99(GRIDIDO,""BET"",BVB)" S UREFBET=$$REPL^cAFA10(UREFBET,"BVB","UI1BET") S UREFBETDET="^mtemp99(GRIDIDO,""BET.DET"",BVB)" S UREFBETDET=$$REPL^cAFA10(UREFBETDET,"BVB","UI1BETDET") ; ; Detaillijnen van de betalingen doorlopen MTEMPD2 S UI1BETDET=$O(@UREFBETDET) I $P(UI1BETDET," ")'=UI1BET G MTEMPDY S DETN=^(UI1BETDET,0) I $P(DETN,D,30) G MTEMPD2 ; Enkel operationele I '$P(DETN,D,8) G MTEMPD2 ; 0-betalingen overslaan S KOST=$$KOST($P(DETN,D,7),$P(@UREFBET@(0),D,6)) ; I $P(DETN,D,12)&$L($P($G(DETN),D,3)) G MTEMPD21 ; Verwijst naar groeperingslijn D PAYMENT(UI1BET,GRIDID,KOST) ; Betalingsinformatie opzetten G MTEMPD22 MTEMPD21 ; UI1 Lev. bijhouden in tabel zodat we later bij een groeperingslijn de correcte leveranciersgegevens kunnen zetten ;S UI1DAGB=$P(DETN,D,3) ; UI1 van dagboek ophalen ;S UI1LEV=$P(@UREFBETDET@(0),D,50) ; S UI1LEV=$$SIG^cAFA1("DB",UI1DAGB,110) ; UI1 van leverancier ophalen adhv dagboek ;S GRLEMTEMP($P(DETN,D,12))=UI1LEV ;G MTEMPD2 ; Gegroepeerde lijnen (buiten de groeperingslijn zelf) niet exporteren MTEMPD22 S VOLGNR=$P(UI1BETDET," ",2) S INDEX="2.23",@GLTRANS="" ; CreditTransferTransactionInformation S INDEX="2.24",@GLTRANS="" ; PaymentIdentification S INDEX="2.26",@GLTRANS="" ; EndToEndIdentification S INDEX="2.37",@GLTRANS="" ; Amount S VELD238="" I '$P(@UREFBET@(0),D,6) G MTEMPD23 ; Europese overschrijving: bedragen in EUR doorgeven S $P(VELD238,D)=$P(@UREFBET@(0),D,5) ; Muntcode financiële rekening = EUR S $P(VELD238,D,2)=$$REPLAM($P(DETN,D,9)) ; Bedrag in munt financiële rekening = EUR G MTEMPD24 ; Geen Europese overschrijving: bedragen in munt document doorgeven MTEMPD23 S $P(VELD238,D)=$P(@UREFBETDET@(0),D,16) ; Muntcode document ; S $P(VELD238,D)=$$SIG^cAFA1("DB",$S($L($P(DETN,D,3)):$P(DETN,D,3),1:UI1DAGB),114) ; Muntcode document S $P(VELD238,D,2)=$$REPLAM($P(DETN,D,8)) ; Bedrag in munt document MTEMPD24 S INDEX="2.38",@GLTRANS=VELD238 ; ; Niet-Europese overschrijving: bank-gegevens doorgeven MTEMPD25 I $P(@UREFBET@(0),D,6) G MTEMPD3 S $P(VELD255,D,2)=$P(DETN,D,14) ; Naam bank S $P(VELD255,D,3)=$P(DETN,D,15) ; Adres S $P(VELD255,D,4)=$P(DETN,D,16) ; Stad S $P(VELD255,D,5)=$$SIG^cAFA1("ISO.LAND",$P(DETN,D,17),101) ; ISO landcode S INDEX="2.55",@GLTRANS=VELD255 G MTEMPD4 ; Europese overschrijving: BIC-code volstaat MTEMPD3 S INDEX="2.55",@GLTRANS=$TR($$SIG^cAFA1("SWIFT",$P(DETN,D,6),101)," ","")_"\" ; Europese overschrijving: BIC ; ; Leveranciers-gegevens MTEMPD4 ; I $P(DETN,D,12)&'$L($P($G(DETN),D,3)) G MTEMPD42 ; Is groeperingslijn? S UI1DB=$P(DETN,D,3) ; S UI1LE=$$SIG^cAFA1("DB",UI1DB,110) S UI1LE=$P(@UREFBETDET@(0),D,50) G MTEMPD43 ; Individuele lijn: leverancier uit document MTEMPD42 ; S UI1LE=GRLEMTEMP($P(DETN,D,12)) ; Groeperingslijn: leverancier via opgezette tabel MTEMPD43 S LENODE=$$SIGN^cAFA1("LE",UI1LE,0) S $P(VELD257,D)=$P(LENODE,D,2) ; Naam S $P(VELD257,D,2)=$P(LENODE,D,5) ; Adres S $P(VELD257,D,3)=$P(LENODE,D,6)_" " _$P(LENODE,D,7) ; Postcode + Gemeente S $P(VELD257,D,4)=$$SIG^cAFA1("ISO.LAND",$P(LENODE,D,8),101) ; Iso land S INDEX="2.57",@GLTRANS=VELD257 S REKNR=$P(DETN,D,4),VELD258="" ; Rekeningnummer I $$IBAN^cAFI2(REKNR) S $P(VELD258,D)=$TR($$BANK^cAFVBO01(Q,REKNR)," ") G MTEMPD44 ; IBAN-structuur S $P(VELD258,D,2)=$TR($P(DETN,D,4),"-") ; Niet IBAN-structuur MTEMPD44 S INDEX="2.58",@GLTRANS=VELD258 ; Rekening waarop gaat betaald worden S BOODSCHP=$P(DETN,D,10) I '$L(BOODSCHP) G MTEMPD5 ; Mededeling S INDEX=$S($P(DETN,D,11)="1":"2.86",$P(DETN,D,11)="0":"2.85"),@GLTRANS=BOODSCHP ; Gestr./Niet-gestructureerd MTEMPD5 I '$P(DETN,D,11) G MTEMPD6 ; Geen gestructureerde mededeling S INDEX="2.101",@GLTRANS="SCOR" ; CreditorReferenceType S INDEX="2.104",@GLTRANS="BBA" ; Issuer for Creditor reference type S INDEX="2.105",@GLTRANS=BOODSCHP ; Gestructureerde mededeling MTEMPD6 S AANTAL=AANTAL+1 G MTEMPD2 ; lus ; ; Output samenstellen MTEMPDY I R=1 S R=R_"\"_AANTAL MTEMPDZ Q R ; ; MKXML(GRIDID,FILENAME) ; XML bestand aanmaken aan de hand van de gegevens uit mtemp99 ; INPUT ; GRIDID ; FILENAME: volledig pad van bestand waarin opgeslagen moet worden ; OUTPUT ; 0\Foutmelding ; 1\alles ok S $ZT="^dmERROR" N @$$INITVAR^cAFVBA01("GRIDID,FILENAME") ; ; Controle parameters S R=1 I '$L($G(GRIDID))!'$L($G(FILENAME)) S R=0 G MKXMLZ S GLGROUP="^mtemp99(GRIDID,""GROUP"",0,INDEX)" S GLATTR="^mtemp99(GRIDID,""ROOT.ATTR"")" S GLPAYMK="^mtemp99(GRIDID,""PAYMENT"",KOST)" S GLPAYM="^mtemp99(GRIDID,""PAYMENT"",KOST,INDEX)" ; MKXML0 S XMLWRITER=##class(%XML.Writer).%New() S XMLWRITER.Charset="UTF-8" S SC=XMLWRITER.OutputToFile(FILENAME) S SC=XMLWRITER.StartDocument() S SC=XMLWRITER.RootElement("Document") ; ; Standaard root-attributes MKXML01 I $D(@GLATTR) G MKXML03 S SC=XMLWRITER.WriteAttribute("xmlns","urn:iso:std:iso:20022:tech:xsd:pain.001.001.02") S SC=XMLWRITER.WriteAttribute("xmlns:xs","http://www.w3.org/2001/XMLSchema") G MKXML1 ; Specifieke root-attributes MKXML03 S ATTR="" MKXML031 S ATTR=$O(@GLATTR@(ATTR)) I '$L(ATTR) G MKXML1 S ATTRN=$P(^(ATTR,0),D),ATTRV=$P(^(0),D,2) S SC=XMLWRITER.WriteAttribute(ATTRN,ATTRV) MKXML039 G MKXML031 ; MKXML1 S SC=XMLWRITER.Element("pain.001.001.02") S SC=XMLWRITER.Element("GrpHdr") MKXML2 S INDEX="1.1" S SC=$$ELEMCHARS(XMLWRITER,"MsgId",@GLGROUP) S INDEX="1.2" S SC=$$ELEMCHARS(XMLWRITER,"CreDtTm",@GLGROUP) S INDEX="1.5" S SC=$$ELEMCHARS(XMLWRITER,"NbOfTxs",@GLGROUP) S INDEX="1.7" S SC=$$ELEMCHARS(XMLWRITER,"Grpg",@GLGROUP) S SC=XMLWRITER.Element("InitgPty") S INDEX="1.8" S INITPTY=@GLGROUP S SC=$$ELEMCHARS(XMLWRITER,"Nm",$P(INITPTY,D)) S SC=XMLWRITER.Element("Id") S SC=XMLWRITER.Element("OrgId") S SC=$$ELEMCHARS(XMLWRITER,"BEI","") S SC=$$ELEMCHARS(XMLWRITER,"TaxIdNb","") S SC=XMLWRITER.Element("PrtryId") S SC=$$ELEMCHARS(XMLWRITER,"Id",$P(INITPTY,D,4)) S SC=$$ELEMCHARS(XMLWRITER,"Issr",$P(INITPTY,D,5)) S SC=XMLWRITER.EndElement() ;PrtryId S SC=XMLWRITER.EndElement() ;OrgId S SC=XMLWRITER.EndElement() ;Id S SC=XMLWRITER.EndElement() ; Initpty S SC=XMLWRITER.EndElement() ; GrpHdr ; MKXML21 S KOST="" MKXML22 S KOST=$O(@GLPAYMK) I '$L(KOST) G MKXML4 S SC=XMLWRITER.Element("PmtInf") S INDEX="2.1" S SC=$$ELEMCHARS(XMLWRITER,"PmtInfId",@GLPAYM) S INDEX="2.2" S SC=$$ELEMCHARS(XMLWRITER,"PmtMtd",@GLPAYM) ; Payment Type Information S INDEX="2.6" I $L($G(@GLPAYM)) G MKXML225 ; Checken of ServiceLevel is ingevuld S INDEX="2.12" I $L($G(@GLPAYM)) G MKXML225 ; Checken of CategoryPurpose is ingevuld G MKXML23 MKXML225 S SC=XMLWRITER.Element("PmtTpInf") ; Service Level S INDEX="2.6" I '$L($G(@GLPAYM)) G MKXML227 S SC=XMLWRITER.Element("SvcLvl") S INDEX="2.6" S SC=$$ELEMCHARS(XMLWRITER,"Cd",@GLPAYM) S SC=XMLWRITER.EndElement() ; SvcLvl ; Category Purpose MKXML227 S INDEX="2.12" I '$L($G(@GLPAYM)) G MKXML229 S INDEX="2.12" S SC=$$ELEMCHARS(XMLWRITER,"CtgyPurp",@GLPAYM) MKXML229 S SC=XMLWRITER.EndElement() ; PmtTpInf MKXML23 S INDEX="2.13" S SC=$$ELEMCHARS(XMLWRITER,"ReqdExctnDt",@GLPAYM) S SC=XMLWRITER.Element("Dbtr") S INDEX="2.15", DBTR=@GLPAYM S SC=$$ELEMCHARS(XMLWRITER,"Nm",$P(DBTR,D)) S SC=XMLWRITER.Element("PstlAdr") S SC=$$ELEMCHARS(XMLWRITER,"AdrLine",$P(DBTR,D,2)) S SC=$$ELEMCHARS(XMLWRITER,"AdrLine",$P(DBTR,D,3)) S SC=$$ELEMCHARS(XMLWRITER,"Ctry",$P(DBTR,D,4)) S SC=XMLWRITER.EndElement() ;PstlAdr S SC=XMLWRITER.EndElement() ; Dbtr ; S SC=XMLWRITER.Element("DbtrAcct") S SC=XMLWRITER.Element("Id") S INDEX="2.16",DBTACCT=@GLPAYM I $L($P(DBTACCT,D)) S SC=$$ELEMCHARS(XMLWRITER,"IBAN",$P(DBTACCT,D)) I $L($P(DBTACCT,D,2))&'$L($P(DBTACCT,D)) S SC=$$ELEMCHARS(XMLWRITER,"BBAN",$P(DBTACCT,D,2)) ; Aangepast S SC=XMLWRITER.EndElement() ; Id S SC=XMLWRITER.EndElement() ; DbtrAcct ; S SC=XMLWRITER.Element("DbtrAgt") S SC=XMLWRITER.Element("FinInstnId") S INDEX="2.17" S SC=$$ELEMCHARS(XMLWRITER,"BIC",$G(@GLPAYM)) S SC=XMLWRITER.EndElement() ; FinInstnId S SC=XMLWRITER.EndElement() ; DbtrAgt ; S INDEX="2.20" S SC=$$ELEMCHARS(XMLWRITER,"ChrgBr",@GLPAYM) MKXML3 S GLTRANS="^mtemp99(GRIDID,""TRANSACTION"",KOST,VOLGNR)" S VOLGNR="" MKXML31 S VOLGNR=$O(@GLTRANS) I '$L(VOLGNR) G MKXML35 ; S SC=XMLWRITER.Element("CdtTrfTxInf") S SC=XMLWRITER.Element("PmtId") S ENDTOEND=VOLGNR S INDEX="2.26" I $D(@GLPAYM) S ENDTOEND=@GLPAYM S SC=$$ELEMCHARS(XMLWRITER,"EndToEndId",ENDTOEND) S SC=XMLWRITER.EndElement() ;PmtId ; S SC=XMLWRITER.Element("Amt") S INDEX="2.38", AMT=@GLTRANS@(INDEX) S SC=$$ELEMATTR(XMLWRITER,"InstdAmt","Ccy",$P(AMT,D),$P(AMT,D,2)) S SC=XMLWRITER.EndElement() ; Amt ; S SC=XMLWRITER.Element("CdtrAgt") S INDEX="2.55",CRDTAG=@GLTRANS@(INDEX) S SC=XMLWRITER.Element("FinInstnId") I '$L($P(CRDTAG,D)) G MKXML311 ; Niet-Europese betaling S SC=$$ELEMCHARS(XMLWRITER,"BIC",$P(CRDTAG,D)) ; Europese betaling G MKXML32 MKXML311 ; Niet-Europese betaling S SC=XMLWRITER.Element("NmAndAdr") S SC=$$ELEMCHARS(XMLWRITER,"Nm",$P(CRDTAG,D,2)) S SC=XMLWRITER.Element("PstlAdr") S SC=$$ELEMCHARS(XMLWRITER,"AdrLine",$P(CRDTAG,D,3)) S SC=$$ELEMCHARS(XMLWRITER,"AdrLine",$P(CRDTAG,D,4)) S SC=$$ELEMCHARS(XMLWRITER,"Ctry",$P(CRDTAG,D,5)) S SC=XMLWRITER.EndElement() ; PstlADr S SC=XMLWRITER.EndElement() ; NmAndAdr MKXML32 S SC=XMLWRITER.EndElement() ; FinInstId S SC=XMLWRITER.EndElement() ; CdtrAgt MKXML33 S SC=XMLWRITER.Element("Cdtr") S INDEX="2.57", CDTR=@GLTRANS@(INDEX) S SC=$$ELEMCHARS(XMLWRITER,"Nm",$P(CDTR,D)) S SC=XMLWRITER.Element("PstlAdr") S SC=$$ELEMCHARS(XMLWRITER,"AdrLine",$P(CDTR,D,2)) S SC=$$ELEMCHARS(XMLWRITER,"AdrLine",$P(CDTR,D,3)) S SC=$$ELEMCHARS(XMLWRITER,"Ctry",$P(CDTR,D,4)) S SC=XMLWRITER.EndElement() ; PstlAdr S SC=XMLWRITER.EndElement() ; Cdtr ; S SC=XMLWRITER.Element("CdtrAcct") S SC=XMLWRITER.Element("Id") S INDEX="2.58",CDRACC=@GLTRANS@(INDEX) ; IBAN of BBAN nemen, afh van dewelke ingevuld I $L($P(CDRACC,D)) S SC=$$ELEMCHARS(XMLWRITER,"IBAN",$P(CDRACC,D)) I $L($P(CDRACC,D,2))&'$L($P(CDRACC,D)) S SC=$$ELEMCHARS(XMLWRITER,"BBAN",$P(CDRACC,D,2)) S SC=XMLWRITER.EndElement() ; Id S SC=XMLWRITER.EndElement() ; CdtrAcct ; ; één van beide nemen, afhankelijk van dewelke ingevuld -> $G want altijd één leeg ; 2.85=unstructured, 2.86=structured S INDEX="2.85" I $L($G(@GLTRANS@(INDEX))) S SC=XMLWRITER.Element("RmtInf") S SC=$$ELEMCHARS(XMLWRITER,"Ustrd",@GLTRANS@(INDEX)) S SC=XMLWRITER.EndElement() G MKXML34 S INDEX="2.86" I '$L($G(@GLTRANS@(INDEX))) G MKXML34 ; Als geen gestructureerde mededeling ; MKXML331 ; Gestructureerde mededeling S SC=XMLWRITER.Element("RmtInf") S SC=XMLWRITER.Element("Strd") S SC=XMLWRITER.Element("CdtrRefInf") S SC=XMLWRITER.Element("CdtrRefTp") ; S INDEX="2.101" S SC=$$ELEMCHARS(XMLWRITER,"Cd",@GLTRANS@(INDEX)) S INDEX="2.104" S SC=$$ELEMCHARS(XMLWRITER,"Issr",@GLTRANS@(INDEX)) S SC=XMLWRITER.EndElement() ; CdtrRefTp S INDEX="2.105" S SC=$$ELEMCHARS(XMLWRITER,"CdtrRef",$$REPLREF(@GLTRANS@(INDEX))) ; S SC=XMLWRITER.EndElement() ; CdtrRefInf S SC=XMLWRITER.EndElement() ; Strd S SC=XMLWRITER.EndElement() ; RmtInf MKXML34 S SC=XMLWRITER.EndElement() ; CdtTrfTxInf G MKXML31 MKXML35 S SC=XMLWRITER.EndElement() ; PmtInf G MKXML22 ; MKXML4 S SC=XMLWRITER.EndElement() ; Pain CstmrCdtTrfInitn S SC=XMLWRITER.EndRootElement() ; Document S SC=XMLWRITER.EndDocument() S SC=XMLWRITER.%Close() ; MKXMLY ; MKXMLZ Q R ; REPLREF(REF) ; Scheidingstekens uit gestructureerde referentie halen Q $P($$DI^cAN000(REF,"")," ") ; REPLAM(AMOUNT) ; Aanpassen bedrag zodat positief en als decimaalteken ; INPUT: bedrag, evt komma als decimaalteken en evt negatief ; OUTPUT: bedrag, komma vervangen door punt (indien komma), en negatief teken weg ; N (AMOUNT) S AMOUNT=$TR(AMOUNT,",",".") ; Munt bedrag (. als decimaal) S AMOUNT=$TR(AMOUNT,"-") ; Niet negatief REPLAMZ Q AMOUNT ; ELEMATTR(W,ELEM,ATTRN,ATTRV,CHARS) ; Vereenvoudiging wegschrijven element met attributen en inhoud ; INPUT ; W: XMLWRITER gebruikt voor wegschrijven xml-berichten ; ELEM: het element dat aangemaakt moet worden ; ATTRN: Naam van attribuut wat aan element moet toegevoegd worden ; ATTRV: Waarde van attribuut ; CHARS: inhoud van Xml-element ; ; Verplichte velden: W, ELEM ; OUTPUT ; 0\fout ; 1 ; N (W,ELEM,ATTRN,ATTRV,CHARS) S R=1 F i="ELEM","ATTRN","ATTRV","CHARS" S @i=$G(@i) I '$L(W)!'$L(ELEM) S R=0 G ELEMATTRZ S SC=W.Element(ELEM) S SC=W.WriteAttribute(ATTRN,ATTRV) S SC=W.WriteChars(CHARS) S SC=W.EndElement() ; ELEMATTRZ Q R ; ; Wegschrijven xml-element gecombineerd met inhoud, zonder attributen ELEMCHARS(W,ELEM,CHARS) N (W,ELEM,CHARS) S R=1 F i="ELEM","CHARS" S @i=$G(@i) I '$L(ELEM) S R=0 G ELEMCHARSZ I '$L(CHARS) S R=0 G ELEMCHARSZ S SC=W.Element(ELEM) S SC=W.WriteChars(CHARS) S SC=W.EndElement() ELEMCHARSZ Q R ; KOST(KOST,EURO) ; Kostencode bepalen ; Input: KOST: UI1 kostencode (CODE.9046) ; EURO: Europese overschrijving? ; 0,"": neen ; 1 : ja ; Output: Kostencode S $ZT="TRAP^cAN000" KOST1 I $G(EURO) S KOST=$$UI1OP^cAFA1("CODE.9046",101,"","SLEV") G KOSTZ ; Voor Europese overschrijving: steeds SLEV I $L($G(KOST)) G KOSTZ ; Kostencode bekend S KOST=$$UI1OP^cAFA1("CODE.9046",101,"","SHAR") ; Kostencode = SHARED KOSTZ Q $G(KOST) ; CHKDAT(UITDAT) ; Uitvoeringsdatum man niet in het verleden liggen ; Input: ; - UITDAT : Uitvoeringsdatum ; ; Output: ; 1: OK ; 0\Foutboodschap ; CHKDAT1 S $ZT="TRAP^cAN000" N @$$INITVAR^cAFVBA01("UITDAT") F i="UITDAT" S @i=$G(@i) S R=1 I '$L(UITDAT) G CHKDATZ ; Uitvoeringsdatum is niet verplicht I $$DH^cAFD1(UITDAT)<+$H S R=0_D_$P($T(@("T41"_QT)),U,2) G CHKDATZ ; CHKDATZ Q R ; ZZ ; 02.02.10 - 14 u 30 * V9.06