cT91XML ;BTW-aangifte naar XML ; [ 02/02/10 10:11:42 ]
;
G 1
;
T1 ;VATConsignment;
T2 ;Declarant;
T3 ;VATNumber;Name;Street;PostCode;City;SENDINGREFERENCE;CountryCode;EmailAddress;
T4 ;VATRECORD;
T5 ;RECNUM;VATNUMBER;Period;Ask;Data;
T6 ;Month;Quarter;Year;
T7 ;Payment;Restitution;
T8 ;DATA_ELEM;
T9 ;\0\1\2\3\45\46\47\48\49\54\55\56\57\59\61\62\63\64\71\72\81\82\83\84\85\86\87\91\;\0\1\2\3\45\46\47\48\49\54\55\56\57\59\61\62\63\64\71\72\81\82\83\84\85\86\87\;
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 ;ClientListingNihil;
T17 ;VATDeclarationsNbr;
T18 ;VATDeclaration;
T19 ;SequenceNumber;
T20 ;DeclarantReference;
T21 ;Amount;GridNumber;
T22 ;http://www.minfin.fgov.be/InputCommon;
T23 ;E-mail ondertekenaar werd niet ingevuld.;
T24 ;Representative;RepresentativeID;issuedBy;identificationType;Phone;
T25 ;Telefoon ondertekenaar werd niet ingevuld.;
;
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.;
;
1 N SC,NVAK,I1,NVAKVAL,XMLFILE,RECNUM,VAKLIST,SENDREF,TEMP,IDINDEX,POSTCODE,XMLPATH
S $ZT="TRAP^cAN000"
;
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 TXT^cAFA1(250) G YZ
S RECNUM=1
;
;------------------------------------------------------------------------------
; Bestanden voorbereiden
;------------------------------------------------------------------------------
; Vakkenbestand aanpassen = numerisch ordenen
11 S I1="" F S I1=$O(VAK(I1)) Q:I1="" 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,POSTCODE=$P($G(@("^"_Q_"BA(""%T"",13,""E"",1)")),D,2) I POSTCODE'?4N S K=$P($T(@("T14"_QT)),U,2),TEMPOK=0 D TXT^cAFA1(250) G YZ
; Nakijken of telefoon is ingevuld
I $P(B(1),D,15)="" S K=$P($T(@("T25"_QT)),U,2),TEMPOK=0 D TXT^cAFA1(250) G YZ
; Nakijken of e-mail adres is ingevuld
I $P(B(1),D,14)="" S K=$P($T(@("T23"_QT)),U,2),TEMPOK=0 D TXT^cAFA1(250) G YZ
; KD - 20.06.07 - adresgegevens nakijken
13 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 S XMLFILE=$G(@("^"_Q_"BA(""%T"",13,""E"")"))
; Parameter niet ingevuld
I XMLFILE="" S K=$P($T(@("T12"_QT)),U,2) D TXT^cAFA1(250) 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 TXT^cAFA1(250) 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($P($T(@("T17")),U,2),"1")
. S SC=XMLWRITER.WriteAttribute("xmlns","http://www.minfin.fgov.be/VATConsignment")
. D ENDLN
. ; Representative
. D
.. S SC=XMLWRITER.Element($P($T(@("T24")),U,2)) D ENDLN
.. ; BTW nummer van de belastingplichtige in 10 posities [[0]+[0-9]{9}]
.. S SC=XMLWRITER.Element($P($T(@("T24")),U,3)),SC=XMLWRITER.WriteAttribute($P($T(@("T24")),U,4),"BE"),SC=XMLWRITER.WriteAttribute($P($T(@("T24")),U,5),"NVAT"),SC=XMLWRITER.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),SC=XMLWRITER.WriteChars($E($P(B(1),D,7),3,999)),SC=XMLWRITER.EndElement() D ENDLN
.. ; naam of benaming []
.. S SC=XMLWRITER.Element($P($T(@("T3")),U,3)),SC=XMLWRITER.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),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.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),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.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),SC=XMLWRITER.WriteChars(POSTCODE),SC=XMLWRITER.EndElement() D ENDLN
.. ; Gemeente [maxLength 100]
.. S SC=XMLWRITER.Element($P($T(@("T3")),U,6)),SC=XMLWRITER.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),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.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),SC=XMLWRITER.WriteChars($E($P(B(1),D,7),1,2)),SC=XMLWRITER.EndElement() D ENDLN
.. ; E-mail
.. S SC=XMLWRITER.Element($P($T(@("T3")),U,9)),SC=XMLWRITER.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),SC=XMLWRITER.WriteChars($P(B(1),D,14)),SC=XMLWRITER.EndElement() D ENDLN
.. ; Phone
.. S SC=XMLWRITER.Element($P($T(@("T24")),U,6)),SC=XMLWRITER.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),SC=XMLWRITER.WriteChars($$DP^cAFA1($P(B(1),D,15))),SC=XMLWRITER.EndElement() D ENDLN
.. S SC=XMLWRITER.EndElement() D ENDLN
. ; VATDelcaration
. S SC=XMLWRITER.Element($P($T(@("T18")),U,2))
. S SC=XMLWRITER.WriteAttribute($P($T(@("T19")),U,2),RECNUM)
. S SC=XMLWRITER.WriteAttribute($P($T(@("T20")),U,2),SENDREF)
. D ENDLN
. ; Declarant
. 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.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),SC=XMLWRITER.WriteChars($E($P(B(1),D,7),3,999)),SC=XMLWRITER.EndElement() D ENDLN
.. I $$DC^cAFD1(DT)<20100205 S SC=XMLWRITER.Element($P($T(@("T3")),U,2)),SC=XMLWRITER.WriteAttribute("xmlns",$P($T(@("T22")),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.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),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.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),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.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),SC=XMLWRITER.WriteChars(POSTCODE),SC=XMLWRITER.EndElement() D ENDLN
.. ; Gemeente [maxLength 100]
.. S SC=XMLWRITER.Element($P($T(@("T3")),U,6)),SC=XMLWRITER.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),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.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),SC=XMLWRITER.WriteChars($E($P(B(1),D,7),1,2)),SC=XMLWRITER.EndElement() D ENDLN
.. ; E-mail
.. S SC=XMLWRITER.Element($P($T(@("T3")),U,9)),SC=XMLWRITER.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),SC=XMLWRITER.WriteChars($P(B(1),D,14)),SC=XMLWRITER.EndElement() D ENDLN
.. ; Phone
.. S SC=XMLWRITER.Element($P($T(@("T24")),U,6)),SC=XMLWRITER.WriteAttribute("xmlns",$P($T(@("T22")),U,2)),SC=XMLWRITER.WriteChars($$DP^cAFA1($P(B(1),D,15))),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
.. ;------------------------------------------------------------------------------
.. ; 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
. ;------------------------------------------------------------------------------
. ; 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:"")_"44\88\" ; 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)'[("\"_+I1_"\") Q
... ; Ofwel vak D71 ofwel vak D72 mag in de xml voorkomen
... ; I ("\71\72\")[(I1),+NVAK(I1)=0 Q
... ; Indien vak 91 = 0 niet printen
... I I1=91,(+NVAK(I1)=0) Q
... ; S NVAKVAL=NVAK(I1)*100
... ; S NVAKVAL=$P(NVAK(I1),".")*100+$P(NVAK(I1),".",2)
... S NVAKVAL=NVAK(I1)
... ; S SC=XMLWRITER.Element("D"_+I1),SC=XMLWRITER.WriteChars(+NVAKVAL),SC=XMLWRITER.EndElement() D ENDLN
... S SC=XMLWRITER.Element($P($T(@("T21")),U,2)),SC=XMLWRITER.WriteAttribute($P($T(@("T21")),U,3),+I1),SC=XMLWRITER.WriteChars(+NVAKVAL),SC=XMLWRITER.EndElement() D ENDLN
. S SC=XMLWRITER.EndElement() D ENDLN
. ;------------------------------------------------------------------------------
. ; Vragen
. ;------------------------------------------------------------------------------
. ; ClientListNihil
. I $$DC^cAFD1(DT)'<20100205 S SC=XMLWRITER.Element($P($T(@("T15")),U,2)),SC=XMLWRITER.WriteChars("NO"),SC=XMLWRITER.EndElement() D ENDLN
. S SC=XMLWRITER.Element($P($T(@("T5")),U,5)) D
.. ; aanvraag om terugbetaling [YES/NO]
.. S SC=XMLWRITER.WriteAttribute($P($T(@("T7")),U,3),$S($P(B(2),D,7)=1:"YES",1:"NO"))
.. ; aanvraag van betaalformulieren [YES/NO]
.. S SC=XMLWRITER.WriteAttribute($P($T(@("T7")),U,2),$S($P(B(2),D,8)=1:"YES",1:"NO"))
. S 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 5^cT91
YZ Q
;
ENDLN S SC=XMLWRITER.WriteChars($C(13,10))
ENDLNZ Q
;
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 ; 02.02.10 - 14 u 30 * V9.06