cTN8026 ;BTW-aangifte naar XML ; [ 02/02/10 10:31:04 ] ; G 1 ; VB(KW,JAAR,MAAND,PCVB,FILEVB,B,VAK) ; Exporteren BTW-aangifte vanuit VB S $ZT="TRAP^cAN000" S SWVB=1 G 1 VBZ Q ; ; T1 ;VATSENDING;SIGNATURE; T2 ;DECLARER; T3 ;VATNUMBER;NAME;ADDRESS;POSTCODE;CITY;SENDINGREFERENCE;COUNTRY; T4 ;VATRECORD; T5 ;RECNUM;VATNUMBER;DPERIODE;ASK;DATA; T6 ;MONTH;QUARTER;YEAR; T7 ;PAYMENT;RESTITUTION; T8 ;DATA_ELEM; T9 ;\D0\D1\D2\D3\D45\D46\D47\D48\D49\D54\D55\D56\D57\D59\D61\D62\D63\D64\D71\D72\D81\D82\D83\D84\D85\D86\D87\D91\;\D0\D1\D2\D3\D45\D46\D47\D48\D49\D54\D55\D56\D57\D59\D61\D62\D63\D64\D71\D72\D81\D82\D83\D84\D85\D86\D87\; T10 ;SIGNATURE; T11 ;DATE;NAME;ROLE;TELEPHONENUMBER;EMAIL T12 ;Het pad voor de electronische btw-aangifte is niet correct ingevuld.; T13 ;Kan het uniek nummer voor de aangifte niet bepalen.; T14 ;Postcode niet gevonden, gelieve in te vullen bij parameters boekhouding.; T15 ;DATE;NAME;ROLE;TELEPHONENUMBER;EMAIL; T16 ;ClientListingNihil; ; T12F ;Le chemin d’exportation de la déclaration électronique est incorrect.; T13F ;Impossible de définir le numéro unique de la déclaration.; T14F ;Code postal pas trouvé, s.v.p. le remplir dans param. comptables.; ; T12E ;The path for the electronic VAT declaration is not correct.; T13E ;Could not get unique number for the declaration.; T14E ;Could not find the postal code. Please fill in at accounting param.; ; 1 N SC,NVAK,I1,NVAKVAL,XMLFILE,RECNUM,VAKLIST,SENDREF,TEMP,IDINDEX,POSTCODE,XMLPATH S $ZT="TRAP^cAN000" ; S OK=1 S SENDREF=$$SENDREF(JAAR(1)_JAAR(2)_JAAR(3)_JAAR(4),KW,MAAND(1)_MAAND(2)) I SENDREF="" S K=$P($T(@("T13"_QT)),U,2) D:'$G(SWVB) TXT^cAFA1(250) S:$G(SWVB) K="0\"_K G YZ S RECNUM=1 ; ;------------------------------------------------------------------------------ ; Bestanden voorbereiden ;------------------------------------------------------------------------------ ; Vakkenbestand aanpassen = numerisch ordenen 11 S I1="" F S I1=$O(VAK(I1)) Q:I1="" I I1?1.N S NVAK(+I1)=$FNUMBER(VAK(I1),"",2) I $G(NVAK(71)) K NVAK(72) ; vak 71 en 72 mogen niet beide op de aangifte I $G(NVAK(72)) K NVAK(71) I '$G(NVAK(71)),'$G(NVAK(72)) K NVAK(72) S NVAK(71)=$FNUMBER(VAK(71),"",2) ; KD - 29.08.07 - Postcode ophalen uit parameters boekhouding S TEMPOK=1 I '$G(SWVB) S POSTCODE=$P($G(@("^"_Q_"BA(""%T"",13,""E"",1)")),D,2) I $G(SWVB) S POSTCODE=PCVB I POSTCODE'?4N S K=$P($T(@("T14"_QT)),U,2),TEMPOK=0 D:'$G(SWVB) TXT^cAFA1(250) S:$G(SWVB) K="0\"_K G YZ ; KD - 20.06.07 - adresgegevens nakijken 13 I $G(SWVB) S IDINDEX=5 G 2 S IDINDEX=4 15 S TEMP=$P(B(1),D,IDINDEX) I '$L(TEMP),IDINDEX=4 S IDINDEX=5 G 15 S TEMP=$P(TEMP," ") I TEMP'?4N,IDINDEX=4 S IDINDEX=5 G 15 2 ;------------------------------------------------------------------------------ ; XML instantie maken ;------------------------------------------------------------------------------ S XMLWRITER=##class(%XML.Writer).%New() S XMLWRITER.Charset="UTF-8" ; Output file 21 I '$G(SWVB) S XMLFILE=$G(@("^"_Q_"BA(""%T"",13,""E"")")) I $G(SWVB) S XMLFILE=FILEVB ; Parameter niet ingevuld I XMLFILE="" S K=$P($T(@("T12"_QT)),U,2) D:'$G(SWVB) TXT^cAFA1(250) S:$G(SWVB) K="0\"_K G Y ; Nakijken of het pad bestaat - 26.06.07 S XMLPATH=$P(XMLFILE,D,1,$L(XMLFILE,D)-1) ; KD - 23.07.07 Test op pad mag niet aangezien de TST routine geen shares kan aftesten. I $$TST^cA710(XMLPATH)'=0 S K=$P($T(@("T12"_QT)),U,2) D:'$G(SWVB) TXT^cAFA1(250) S:$G(SWVB) K="0\"_K G Y ; Bestandsnaam samenstellen S XMLFILE=XMLFILE_JAAR(1)_JAAR(2)_JAAR(3)_JAAR(4) I 'KW S XMLFILE=XMLFILE_"M"_MAAND(1)_MAAND(2)_".xml" G 23 S XMLFILE=XMLFILE_"Q"_KW_".xml" 23 S SC=XMLWRITER.OutputToFile(XMLFILE) ; Document starten S SC=XMLWRITER.StartDocument() D ENDLN D . ; Root element . S SC=XMLWRITER.RootElement($P($T(@("T1")),U,2)) . S SC=XMLWRITER.WriteAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance") . ; S SC=XMLWRITER.WriteAttribute("xsi:noNamespaceSchemaLocation","http://minfin.fgov.be/portail1/nl/intervat/MultiDeclarationTVA-NoSignature-14.xsd") . D ENDLN . D .. S SC=XMLWRITER.Element($P($T(@("T2")),U,2)) D ENDLN .. ; BTW nummer van de belastingplichtige in 10 posities [[0]+[0-9]{9}] .. I $$DC^cAFD1(DT)'<20100205 S SC=XMLWRITER.Element($P($T(@("T3")),U,2)),SC=XMLWRITER.WriteChars($P(B(1),D,7)),SC=XMLWRITER.EndElement() D ENDLN .. I $$DC^cAFD1(DT)<20100205 S SC=XMLWRITER.Element($P($T(@("T3")),U,2)),SC=XMLWRITER.WriteChars($TR($P(B(1),D,7),"BE","")),SC=XMLWRITER.EndElement() D ENDLN .. ; naam of benaming [] .. S SC=XMLWRITER.Element($P($T(@("T3")),U,3)),SC=XMLWRITER.WriteChars($P(B(1),D,2)),SC=XMLWRITER.EndElement() D ENDLN .. ; Adres: straat, nr, postbus [] .. S SC=XMLWRITER.Element($P($T(@("T3")),U,4)),SC=XMLWRITER.WriteChars($P(B(1),D,3)),SC=XMLWRITER.EndElement() D ENDLN .. ; Postcode [maxLength 4] .. S SC=XMLWRITER.Element($P($T(@("T3")),U,5)),SC=XMLWRITER.WriteChars(POSTCODE),SC=XMLWRITER.EndElement() D ENDLN .. ; Gemeente [maxLength 100] .. S SC=XMLWRITER.Element($P($T(@("T3")),U,6)),SC=XMLWRITER.WriteChars($P($P(B(1),D,IDINDEX)," ",2,99)),SC=XMLWRITER.EndElement() D ENDLN .. ; Country .. I $$DC^cAFD1(DT)'<20100205 S SC=XMLWRITER.Element($P($T(@("T3")),U,8)),SC=XMLWRITER.WriteChars($E($P(B(1),D,7),1,2)),SC=XMLWRITER.EndElement() D ENDLN .. ; uniek referentie nr van de zending van de fiduciaire [<99999999999999] .. S SC=XMLWRITER.Element($P($T(@("T3")),U,7)),SC=XMLWRITER.WriteChars(SENDREF),SC=XMLWRITER.EndElement() D ENDLN .. S SC=XMLWRITER.EndElement() D ENDLN . S SC=XMLWRITER.Element($P($T(@("T4")),U,2)) D .. D ENDLN .. ; volgnummer van de aangifte [1-999] .. S SC=XMLWRITER.Element($P($T(@("T5")),U,2)),SC=XMLWRITER.WriteChars(RECNUM),SC=XMLWRITER.EndElement() D ENDLN .. ; BTW nummer van de belastingplichtige in 10 posities [[0]+[0-9]{9}] .. S SC=XMLWRITER.Element($P($T(@("T5")),U,3)),SC=XMLWRITER.WriteChars($TR($P(B(1),D,7),"BE","")),SC=XMLWRITER.EndElement() D ENDLN .. ;------------------------------------------------------------------------------ .. ; Periode .. ;------------------------------------------------------------------------------ .. S SC=XMLWRITER.Element($P($T(@("T5")),U,4)) D ... D ENDLN ... ; maand van de periode [1-12] ... I 'KW S SC=XMLWRITER.Element($P($T(@("T6")),U,2)),SC=XMLWRITER.WriteChars(MAAND(1)_MAAND(2)),SC=XMLWRITER.EndElement() D ENDLN ... ; kwartaal van de periode [1-4] ... I KW S SC=XMLWRITER.Element($P($T(@("T6")),U,3)),SC=XMLWRITER.WriteChars(KW),SC=XMLWRITER.EndElement() D ENDLN ... ; jaar van de periode (formaat YYYY) [] ... S SC=XMLWRITER.Element($P($T(@("T6")),U,4)),SC=XMLWRITER.WriteChars(JAAR(1)_JAAR(2)_JAAR(3)_JAAR(4)),SC=XMLWRITER.EndElement() D ENDLN .. S SC=XMLWRITER.EndElement() D ENDLN .. ;------------------------------------------------------------------------------ .. ; Vragen .. ;------------------------------------------------------------------------------ .. S SC=XMLWRITER.Element($P($T(@("T5")),U,5)) D ... ; aanvraag van betaalformulieren [YES/NO] ... S SC=XMLWRITER.WriteAttribute($P($T(@("T7")),U,2),$S($P(B(2),D,8)=1:"YES",1:"NO")) ... ; aanvraag om terugbetaling [YES/NO] ... S SC=XMLWRITER.WriteAttribute($P($T(@("T7")),U,3),$S($P(B(2),D,7)=1:"YES",1:"NO")) .. S SC=XMLWRITER.EndElement() D ENDLN .. ; ClientListNihil .. I $$DC^cAFD1(DT)'<20100205 S SC=XMLWRITER.Element($P($T(@("T16")),U,2)),SC=XMLWRITER.WriteChars("NO"),SC=XMLWRITER.EndElement() D ENDLN .. ;------------------------------------------------------------------------------ .. ; Vakken .. ;------------------------------------------------------------------------------ .. S SC=XMLWRITER.Element($P($T(@("T5")),U,6)) D ENDLN D ... S SC=XMLWRITER.Element($P($T(@("T8")),U,2)) D ENDLN D .... ; Lijst met vakken ophalen; vak D91 MAG ALLEEN IN DECEMBER INGEVULD WORDEN .... S VAKLIST=$P($T(@("T9")),U,3) .... I 'KW,(MAAND(1)_MAAND(2))=12 S VAKLIST=$P($T(@("T9")),U,2) .... I $$DC^cAFD1(DT)'<20100205,BP2>2010 D ..... S VAKLIST=VAKLIST_$S($E(VAKLIST,$L(VAKLIST))'=D:D,1:"")_"D44\D88\" ; KU : 12.11.09 ..... I '$L($G(NVAK(44))) S NVAK(44)=0 ..... I '$L($G(NVAK(88))) S NVAK(88)=0 .... ; Door de vakken lopen .... S I1="" F S I1=$O(NVAK(I1)) Q:I1="" D ..... ; Nakijken of het nummer mag gebruikt worden in deze aangifte ..... I (VAKLIST)'[("D"_+I1) Q ..... ; Ofwel vak D71 ofwel vak D72 mag in de xml voorkomen ..... ; I ("\71\72\")[(I1),+NVAK(I1)=0 Q ..... S NVAKVAL=NVAK(I1)*100 ..... S SC=XMLWRITER.Element("D"_+I1),SC=XMLWRITER.WriteChars(+NVAKVAL),SC=XMLWRITER.EndElement() D ENDLN ... S SC=XMLWRITER.EndElement() D ENDLN .. S SC=XMLWRITER.EndElement() D ENDLN . S SC=XMLWRITER.EndElement() D ENDLN . ; KU : Door Intervat bevestigd dat dit NIET in de XML mag gezet worden. . ; KU : 04.01.08 : Signature : identificatie van de ondertekenaar . ; S SC=XMLWRITER.Element($P($T(@("T1")),U,3)) D ENDLN . ; datum (formaat YYYY-MM-DD) . ; S SC=XMLWRITER.Element($P($T(@("T15")),U,2)),SC=XMLWRITER.WriteChars($$DATE($P(B(1),D,15))),SC=XMLWRITER.EndElement() D ENDLN . ; naam van de ondertekenaar : 50 lang . ; S SC=XMLWRITER.Element($P($T(@("T15")),U,3)),SC=XMLWRITER.WriteChars($P(B(1),D,9)),SC=XMLWRITER.EndElement() D ENDLN . ; hoedanigheid van de ondertekenaar : 50 lang . ; S SC=XMLWRITER.Element($P($T(@("T15")),U,4)),SC=XMLWRITER.WriteChars($P(B(1),D,12)),SC=XMLWRITER.EndElement() D ENDLN . ; telefoonnummer van de ondertekenaar : 50 lang . ; S SC=XMLWRITER.Element($P($T(@("T15")),U,5)),SC=XMLWRITER.WriteChars($P(B(1),D,13)),SC=XMLWRITER.EndElement() D ENDLN . ; e-mail adres van de ondertekenaar : 50 lang . ; S SC=XMLWRITER.Element($P($T(@("T15")),U,6)),SC=XMLWRITER.WriteChars($P(B(1),D,14)),SC=XMLWRITER.EndElement() D ENDLN . ; S SC=XMLWRITER.EndElement() D ENDLN . S SC=XMLWRITER.EndRootElement() D ENDLN S SC=XMLWRITER.EndDocument() ; Y S SC=XMLWRITER.%Close() ; Terugkeren naar het programma Y1 K NVAK G:'$G(SWVB) 5^cT91 YZ Q OK ; DATE(R) ; omzetten datum naar I '$L(R) G DATEZ S R=$$DC^cAFD1(R) S R=$E(R,1,4)_"-"_$E(R,5,6)_"-"_$E(R,7,8) DATEZ Q R ; ENDLN S SC=XMLWRITER.WriteChars($C(13,10)) ; SENDREF(JAAR,KW,MAAND) N OUT,I2,SJAAR S OUT="" S I2="Q"_KW I 'KW S I2="M"_MAAND ; Nakijken of er al een nr is voor dit kwartaal of maand S OUT=$G(@("^"_Q_"BA(""%T"",13,""E"","_JAAR_","""_I2_""")")) I $L(OUT) G SENDREFZ ; Nog geen nummer beschikbaar I '$$LOCK^cANLOCK("^"_Q_"BA(""%T"",13,""E"")","","",1) G SENDREFZ S $P(@("^"_Q_"BA(""%T"",13,""E"",1)"),D)=$P($G(@("^"_Q_"BA(""%T"",13,""E"",1)")),D)+1,@("^"_Q_"BA(""%T"",13,""E"","_JAAR_","""_I2_""")")=$P(@("^"_Q_"BA(""%T"",13,""E"",1)"),D) S OUT=@("^"_Q_"BA(""%T"",13,""E"","_JAAR_","""_I2_""")") L -@("^"_Q_"BA(""%T"",13,""E"")") SENDREFZ Q OUT ; ; ZZ ; 16.10.08 - 14 u 11 * V9.04