|
1 | 1 | #!/usr/bin/env python |
2 | 2 | # -*- coding: iso8859-15 -*- |
3 | 3 |
|
| 4 | + |
| 5 | +## Start of parameters ## |
| 6 | + |
| 7 | +_sellerOrganisationName = { |
| 8 | + 'FI': 'Pullis Musiken Oy', |
| 9 | + 'SV': 'Pullis Musiken Ab', |
| 10 | + 'EN': 'Pullis Musiken Ltd', |
| 11 | +} |
| 12 | +_sellerAddress = 'Puukatu 2 F' |
| 13 | +_sellerTown = 'HELSINKI' |
| 14 | +_sellerPostCode = '00112' |
| 15 | +_sellerCountryCode = 'FI' |
| 16 | +_sellerCountryName = 'Suomi' |
| 17 | +_sellerAccounts = [ |
| 18 | + { 'IBAN': 'FI2757800750155448', 'BIC': 'OKOYFIHH' }, |
| 19 | + { 'IBAN': 'FI2721221222212227', 'BIC': 'NDEAFIHH' }, |
| 20 | + { 'IBAN': 'FI2781232323312334', 'BIC': 'PSPBFIHH' }, |
| 21 | +] |
| 22 | + |
| 23 | +_sellerWebAddressNameText = _sellerOrganisationName['FI'] |
| 24 | +_sellerWebAddress = 'https://www.pullinmusiikki.fi/' |
| 25 | +_sellerInvoiceAddress = '00371999207' |
| 26 | +_sellerInvoiceIntermediatorAddress = 'OKOYFIHH' |
| 27 | +_sellerYTunnus = '0199920-7' |
| 28 | +_sellerIndustryCode = '62020' |
| 29 | + |
| 30 | +_sellerInvoiceTypeDetails = { |
| 31 | + 'FI': { |
| 32 | + 'text': 'Kirjanpito palvelu', |
| 33 | + 'validation': |
| 34 | + [ |
| 35 | + { |
| 36 | + 'type': '02', |
| 37 | + 'min': None, |
| 38 | + 'hyphens': None, |
| 39 | + 'spaces': None, |
| 40 | + 'max': None, |
| 41 | + 'text': 'Viitenumero' |
| 42 | + }, |
| 43 | + { |
| 44 | + 'type': '09', |
| 45 | + 'min': 10, |
| 46 | + 'hyphens': True, |
| 47 | + 'spaces': None, |
| 48 | + 'max': 10, |
| 49 | + 'text': 'Asiakasnumero' |
| 50 | + }, |
| 51 | + ], |
| 52 | + }, |
| 53 | + 'SV': { |
| 54 | + 'text': 'Bokföring tjänster', |
| 55 | + 'validation': |
| 56 | + [ |
| 57 | + { |
| 58 | + 'type': '02', |
| 59 | + 'min': None, |
| 60 | + 'hyphens': None, |
| 61 | + 'spaces': None, |
| 62 | + 'max': None, |
| 63 | + 'text': 'Referensnummer' |
| 64 | + }, |
| 65 | + { |
| 66 | + 'type': '09', |
| 67 | + 'min': 10, |
| 68 | + 'hyphens': True, |
| 69 | + 'spaces': None, |
| 70 | + 'max': 10, |
| 71 | + 'text': 'Kundnummer' |
| 72 | + }, |
| 73 | + ], |
| 74 | + }, |
| 75 | + 'EN': { |
| 76 | + 'text': 'Bookkeeping service', |
| 77 | + 'validation': |
| 78 | + [ |
| 79 | + { |
| 80 | + 'type': '02', |
| 81 | + 'min': None, |
| 82 | + 'hyphens': None, |
| 83 | + 'spaces': None, |
| 84 | + 'max': None, |
| 85 | + 'text': 'Reference number' |
| 86 | + }, |
| 87 | + { |
| 88 | + 'type': '09', |
| 89 | + 'min': 10, |
| 90 | + 'hyphens': True, |
| 91 | + 'spaces': None, |
| 92 | + 'max': 10, |
| 93 | + 'text': 'Customer number' |
| 94 | + }, |
| 95 | + ], |
| 96 | + }, |
| 97 | +} |
| 98 | + |
| 99 | +_paymentInstructionId = 'Bookkeeping service' |
| 100 | + |
| 101 | +_proposedDueDate = 'NO' |
| 102 | +_proposedPaymentPeriod = 'YES' |
| 103 | + |
| 104 | +_messageId = '001' |
| 105 | +_messageActionCode = 'ADD' |
| 106 | + |
| 107 | +## End of parameters ## |
| 108 | + |
4 | 109 | import sys |
5 | 110 | import datetime, time |
6 | 111 |
|
7 | | -reload(sys) |
| 112 | +reload( sys ) |
8 | 113 |
|
9 | | -sys.setdefaultencoding("iso8859-15") |
| 114 | +sys.setdefaultencoding( 'iso8859-15' ) |
10 | 115 | sys.path.append( './' ) |
11 | 116 |
|
12 | 117 | from finvoice.sender.senderinfo import ExternalEncoding |
|
36 | 141 |
|
37 | 142 | # Seller Postal Address |
38 | 143 | # SellerStreetName=None, SellerTownName=None, SellerPostCodeIdentifier=None, CountryCode=None, CountryName=None, SellerPostOfficeBoxIdentifier=None |
39 | | -sellerPostalAddress = SellerPostalAddressDetailsType( "Puukatu 2 F", "HELSINKI", 00112, "FI", "Suomi" ) |
| 144 | +sellerPostalAddress = SellerPostalAddressDetailsType( _sellerAddress, _sellerTown, _sellerPostCode, _sellerCountryCode, _sellerCountryName ) |
40 | 145 |
|
| 146 | +sellerOrganisationNames = {} |
41 | 147 | # Seller Organization Name |
42 | 148 | # LanguageCode=None, SellerOrganisationName=None |
43 | | -sellerOrganisationNamesFi = SellerOrganisationNamesType( "FI" ) |
44 | | -sellerOrganisationNamesFi.add_SellerOrganisationName( "Pullis Musiken Oy" ) |
45 | | -sellerOrganisationNamesSv = SellerOrganisationNamesType( "SV" ) |
46 | | -sellerOrganisationNamesSv.add_SellerOrganisationName( "Pullis Musiken Ab" ) |
47 | | -sellerOrganisationNamesEn = SellerOrganisationNamesType( "EN" ) |
48 | | -sellerOrganisationNamesEn.add_SellerOrganisationName( "Pullis Musiken Ltd" ) |
| 149 | +for (_langCode, _orgName) in _sellerOrganisationName.items(): |
| 150 | + sellerOrganisationNames[_langCode] = SellerOrganisationNamesType( _langCode ) |
| 151 | + sellerOrganisationNames[_langCode].add_SellerOrganisationName( _orgName ) |
49 | 152 |
|
| 153 | +sellerAccountDetails = [] |
50 | 154 | # SellerAccountID=None, SellerBic=None, NewSellerAccountID=None, NewSellerBic=None |
51 | | -sellerAccountDetailsOKOYFIHH = SellerAccountDetailsType( SellerAccountIDType( "IBAN", "FI2757800750155448" ), SellerBicType( "BIC", "OKOYFIHH" ) ) |
52 | | -sellerAccountDetailsNDEAFIHH = SellerAccountDetailsType( SellerAccountIDType( "IBAN", "FI2721221222212227" ), SellerBicType( "BIC", "NDEAFIHH" ) ) |
53 | | -sellerAccountDetailsNDEAFIHH = SellerAccountDetailsType( SellerAccountIDType( "IBAN", "FI2781232323312334" ), SellerBicType( "BIC", "PSPBFIHH" ) ) |
| 155 | +for _account in _sellerAccounts: |
| 156 | + sellerAccountDetails.append( SellerAccountDetailsType( SellerAccountIDType( 'IBAN', _account['IBAN'] ), SellerBicType( 'BIC', _account['BIC'] ) ) ) |
54 | 157 |
|
55 | 158 | # Sender Information |
56 | 159 | # Version=None, MessageDetails=None, SellerPartyDetails=None, SellerOrganisationUnitNumber=None, InvoiceSenderInformationDetails=None, |
57 | 160 | # SellerAccountDetails=None, SellerInvoiceDetails=None, ProposedDueDateAccepted=None, ProposedInvoicePeriodAccepted=None |
58 | | -senderInfo = FinvoiceSenderInfo( "2.0" ) |
59 | | - |
60 | | -_messageId = "001" |
| 161 | +senderInfo = FinvoiceSenderInfo( '2.0' ) |
61 | 162 |
|
62 | 163 | # Message Details |
63 | 164 | # MessageTypeCode=None, MessageTypeText=None, MessageActionCode=None, MessageActionCodeIdentifier=None, MessageDate=None, SenderInfoIdentifier=None |
64 | | -senderInfo.set_MessageDetails( MessageDetailsType( "SENDERINFO", "Sender information", "ADD", "00", nowDate, _messageId ) ) |
| 165 | +senderInfo.set_MessageDetails( MessageDetailsType( 'SENDERINFO', 'INVOICER NOTIFICATION', _messageActionCode, None, nowDate, _messageId ) ) |
65 | 166 |
|
66 | 167 | # Seller Party Details |
67 | 168 | # SellerPartyIdentifier=None, SellerOrganisationNames=None, SellerOrganisationBankName=None, SellerPostalAddressDetails=None, IndustryCode=None |
68 | | -sellerPartyDetails = SellerPartyDetailsType( "0199920-7", None, None, sellerPostalAddress, 62020 ) |
69 | | -sellerPartyDetails.add_SellerOrganisationNames( sellerOrganisationNamesFi ) |
70 | | -sellerPartyDetails.add_SellerOrganisationNames( sellerOrganisationNamesSv ) |
71 | | -sellerPartyDetails.add_SellerOrganisationNames( sellerOrganisationNamesEn ) |
| 169 | +sellerPartyDetails = SellerPartyDetailsType( _sellerYTunnus, None, None, sellerPostalAddress, _sellerIndustryCode ) |
| 170 | + |
| 171 | +for (_langCode, _orgName) in sellerOrganisationNames.items(): |
| 172 | + sellerPartyDetails.add_SellerOrganisationNames( _orgName ) |
72 | 173 |
|
73 | 174 | senderInfo.set_SellerPartyDetails( sellerPartyDetails ) |
74 | 175 |
|
75 | 176 | # SellerWebaddressNameText=None, SellerWebaddressText=None, InvoiceSenderAddress=None, InvoiceSenderIntermediatorAddress=None, NewInvoiceSenderAddress=None, NewInvoiceSenderIntermediatorAddress=None |
76 | | -senderInfo.set_InvoiceSenderInformationDetails( InvoiceSenderInformationDetailsType( "Pullin Musiikki Oy", "https://www.pullinmusiikki.fi/", "00371999207", "OKOYFIHH" ) ) |
| 177 | +senderInfo.set_InvoiceSenderInformationDetails( InvoiceSenderInformationDetailsType( _sellerWebAddressNameText, _sellerWebAddress, _sellerInvoiceAddress, _sellerInvoiceIntermediatorAddress ) ) |
77 | 178 |
|
78 | | -senderInfo.add_SellerAccountDetails( sellerAccountDetailsOKOYFIHH ) |
79 | | -senderInfo.add_SellerAccountDetails( sellerAccountDetailsNDEAFIHH ) |
| 179 | +for _account in sellerAccountDetails: |
| 180 | + senderInfo.add_SellerAccountDetails( _account ) |
80 | 181 |
|
81 | | -# SellerInvoiceTypeText=None, SellerInvoiceIdentifierText=None |
82 | | -sellerInvoiceTypeDetailsFi = SellerInvoiceTypeDetailsType( SellerInvoiceTypeTextType( "FI", "Kirjanpito palvelu" ) ) |
83 | | -sellerInvoiceTypeDetailsSv = SellerInvoiceTypeDetailsType( SellerInvoiceTypeTextType( "SV", "Bokföring tjänster" ) ) |
84 | | -sellerInvoiceTypeDetailsEn = SellerInvoiceTypeDetailsType( SellerInvoiceTypeTextType( "EN", "Bookkeeping service" ) ) |
| 182 | +# SellerDirectDebitIdentifier=None, PaymentInstructionIdentifier=None, SellerInstructionFreeText=None, SellerInvoiceTypeDetails=None, SellerServiceCode=None |
| 183 | +sellerInvoiceDetails = SellerInvoiceDetailsType( None, _paymentInstructionId ) |
85 | 184 |
|
86 | | -#LanguageCode=None, SellerInvoiceIdentifierType=None, SellerInvoiceIdentifierMinLength=1, SellerInvoiceIdentifierHyphens=False, SellerInvoiceIdentifierSpaces=False, SellerInvoiceIdentifierMaxLength=35, valueOf_=None, extensiontype_=None |
87 | | -sellerInvoiceTypeDetailsFi.add_SellerInvoiceIdentifierText( SellerInvoiceIdentifierTextType( "FI", "02", None, None, None, None, "Viitenumero" ) ) |
88 | | -sellerInvoiceTypeDetailsFi.add_SellerInvoiceIdentifierText( SellerInvoiceIdentifierTextType( "FI", "09", 10, True, False, 10, "Asiakasnumero" ) ) |
| 185 | +sellerInvoiceTypeDetails = {} |
| 186 | +for (_langCode, _type) in _sellerInvoiceTypeDetails.items(): |
| 187 | + # SellerInvoiceTypeText=None, SellerInvoiceIdentifierText=None |
| 188 | + sellerInvoiceTypeDetails[_langCode] = SellerInvoiceTypeDetailsType( SellerInvoiceTypeTextType( _langCode, _type['text'] ) ) |
89 | 189 |
|
90 | | -sellerInvoiceTypeDetailsSv.add_SellerInvoiceIdentifierText( SellerInvoiceIdentifierTextType( "SV", "02", None, None, None, None, "Referensnummer" ) ) |
91 | | -sellerInvoiceTypeDetailsSv.add_SellerInvoiceIdentifierText( SellerInvoiceIdentifierTextType( "SV", "04", 10, True, False, 10, "Kundnummer" ) ) |
| 190 | + for _validation in _type['validation']: |
| 191 | + #LanguageCode=None, SellerInvoiceIdentifierType=None, SellerInvoiceIdentifierMinLength=1, SellerInvoiceIdentifierHyphens=False, SellerInvoiceIdentifierSpaces=False, SellerInvoiceIdentifierMaxLength=35, valueOf_=None, extensiontype_=None |
| 192 | + sellerInvoiceTypeDetails[_langCode].add_SellerInvoiceIdentifierText( SellerInvoiceIdentifierTextType( _langCode, _validation['type'], _validation['min'], _validation['hyphens'], _validation['spaces'], _validation['max'], _validation['text'] ) ) |
92 | 193 |
|
93 | | -sellerInvoiceTypeDetailsEn.add_SellerInvoiceIdentifierText( SellerInvoiceIdentifierTextType( "EN", "02", None, None, None, None, "Reference number" ) ) |
94 | | -sellerInvoiceTypeDetailsEn.add_SellerInvoiceIdentifierText( SellerInvoiceIdentifierTextType( "EN", "04", 10, True, False, 10, "Customer number" ) ) |
| 194 | + sellerInvoiceDetails.add_SellerInvoiceTypeDetails( sellerInvoiceTypeDetails[_langCode] ) |
95 | 195 |
|
96 | | -# SellerDirectDebitIdentifier=None, PaymentInstructionIdentifier=None, SellerInstructionFreeText=None, SellerInvoiceTypeDetails=None, SellerServiceCode=None |
97 | | -sellerInvoiceDetails = SellerInvoiceDetailsType( None, "Bookkeeping service" ) |
98 | | -sellerInvoiceDetails.add_SellerInvoiceTypeDetails( sellerInvoiceTypeDetailsFi ) |
99 | | -sellerInvoiceDetails.add_SellerInvoiceTypeDetails( sellerInvoiceTypeDetailsSv ) |
100 | | -sellerInvoiceDetails.add_SellerInvoiceTypeDetails( sellerInvoiceTypeDetailsEn ) |
101 | | - |
102 | | -sellerInvoiceDetails.set_SellerServiceCode( "00" ) |
| 196 | +# = e-invoicer |
| 197 | +sellerInvoiceDetails.set_SellerServiceCode( '00' ) |
103 | 198 |
|
104 | 199 | senderInfo.set_SellerInvoiceDetails( sellerInvoiceDetails ) |
105 | 200 |
|
106 | | -senderInfo.set_ProposedDueDateAccepted( "NO" ) |
107 | | -senderInfo.set_ProposedInvoicePeriodAccepted( "YES" ) |
| 201 | +senderInfo.set_ProposedDueDateAccepted( _proposedDueDate ) |
| 202 | +senderInfo.set_ProposedInvoicePeriodAccepted( _proposedPaymentPeriod ) |
| 203 | + |
| 204 | +_recepients = [ |
| 205 | + { |
| 206 | + 'Receiver': 'SENDERINFO', |
| 207 | + 'Intermediator': 'OKOYFIHH', |
| 208 | + }, |
| 209 | + { |
| 210 | + 'Receiver': 'SENDERINFO', |
| 211 | + 'Intermediator': 'NDEAFIHH', |
| 212 | + }, |
| 213 | + { |
| 214 | + 'Receiver': 'SENDERINFO', |
| 215 | + 'Intermediator': 'DABAFIHH', |
| 216 | + }, |
| 217 | + { |
| 218 | + 'Receiver': 'SENDERINFO', |
| 219 | + 'Intermediator': 'HELSFIHH', |
| 220 | + }, |
| 221 | + { |
| 222 | + 'Receiver': 'SENDERINFO', |
| 223 | + 'Intermediator': 'TAPIFI22', |
| 224 | + }, |
| 225 | + { |
| 226 | + 'Receiver': 'SENDERINFO', |
| 227 | + 'Intermediator': 'AABAFI22', |
| 228 | + }, |
| 229 | + { |
| 230 | + 'Receiver': 'SENDERINFO', |
| 231 | + 'Intermediator': 'HANDFIHH', |
| 232 | + }, |
| 233 | + { |
| 234 | + 'Receiver': 'SENDERINFO', |
| 235 | + 'Intermediator': 'SBANFIHH', |
| 236 | + }, |
| 237 | + { |
| 238 | + 'Receiver': 'SENDERINFO', |
| 239 | + 'Intermediator': 'DNBAFIHX', |
| 240 | + } |
| 241 | +] |
108 | 242 |
|
109 | | -# Header=None, Body=None |
110 | | -envelope = Envelope( ) |
| 243 | +_now = datetime.datetime.now( reference.LocalTimezone() ) |
| 244 | +_nowS = datetime.datetime( _now.year, _now.month, _now.day, _now.hour, _now.minute, _now.second, 0, _now.tzinfo ) |
111 | 245 |
|
112 | | -# mustUnderstand=None, version=None, From=None, To=None, CPAId=None, ConversationId=None, Service=None, Action=None, MessageData=None |
113 | | -messageHeader = MessageHeader( 1, "2.0" ) |
| 246 | +for (i, _recepient) in enumerate(_recepients): |
| 247 | + envelope = Envelope( ) |
114 | 248 |
|
115 | | -header = Header( ) |
116 | | -header.add_anytypeobjs_( messageHeader ) |
| 249 | + # mustUnderstand=None, version=None, From=None, To=None, CPAId=None, ConversationId=None, Service=None, Action=None, MessageData=None |
| 250 | + messageHeader = MessageHeader( 1, "2.0" ) |
117 | 251 |
|
118 | | -# PartyId=None, Role=None |
119 | | -msgFrom = From( None, "Sender" ) |
120 | | -msgFrom.add_PartyId( PartyId( None, "00371999207" ) ) |
| 252 | + # Header=None, Body=None |
| 253 | + header = Header( ) |
| 254 | + header.add_anytypeobjs_( messageHeader ) |
121 | 255 |
|
122 | | -msgFromI = From( None, "Intermediator" ) |
123 | | -msgFromI.add_PartyId( PartyId( None, "OKOYFIHH" ) ) |
| 256 | + # PartyId=None, Role=None |
| 257 | + msgFrom = From( None, "Sender" ) |
| 258 | + msgFrom.add_PartyId( PartyId( None, _sellerInvoiceAddress ) ) |
124 | 259 |
|
125 | | -messageHeader.add_anytypeobjs_( msgFrom ) |
126 | | -messageHeader.add_anytypeobjs_( msgFromI ) |
| 260 | + msgFromI = From( None, "Intermediator" ) |
| 261 | + msgFromI.add_PartyId( PartyId( None, _sellerInvoiceIntermediatorAddress ) ) |
127 | 262 |
|
128 | | -msgTo = To( None, "Receiver" ) |
129 | | -msgTo.add_PartyId( PartyId( None, "SENDERINFO" ) ) |
| 263 | + messageHeader.add_anytypeobjs_( msgFrom ) |
| 264 | + messageHeader.add_anytypeobjs_( msgFromI ) |
130 | 265 |
|
131 | | -msgToI = To( None, "Intermediator" ) |
132 | | -msgToI.add_PartyId( PartyId( None, "OKOYFIHH" ) ) |
| 266 | + msgTo = To( None, "Receiver" ) |
| 267 | + msgTo.add_PartyId( PartyId( None, _recepient['Receiver'] ) ) |
133 | 268 |
|
134 | | -messageHeader.add_anytypeobjs_( msgTo ) |
135 | | -messageHeader.add_anytypeobjs_( msgToI ) |
| 269 | + msgToI = To( None, "Intermediator" ) |
| 270 | + msgToI.add_PartyId( PartyId( None, _recepient['Intermediator'] ) ) |
136 | 271 |
|
137 | | -messageHeader.set_CPAId( "yoursandmycpa" ) |
| 272 | + messageHeader.add_anytypeobjs_( msgTo ) |
| 273 | + messageHeader.add_anytypeobjs_( msgToI ) |
138 | 274 |
|
139 | | -messageHeader.set_Service( Service( None, "Routing" ) ) |
140 | | -messageHeader.set_Action( "ProcessInvoice" ) |
| 275 | + messageHeader.set_CPAId( "yoursandmycpa" ) |
141 | 276 |
|
142 | | -_now = datetime.datetime.now( reference.LocalTimezone() ) |
143 | | -_nowS = datetime.datetime( _now.year, _now.month, _now.day, _now.hour, _now.minute, _now.second, 0, _now.tzinfo ) |
144 | | -msgData = MessageData( _messageId + '/1', _nowS ) |
| 277 | + messageHeader.set_Service( Service( None, "Routing" ) ) |
| 278 | + messageHeader.set_Action( "ProcessInvoice" ) |
145 | 279 |
|
146 | | -messageHeader.set_MessageData( msgData ) |
| 280 | + msgData = MessageData( '{0}/{1}'.format(_messageId, i), _nowS ) |
147 | 281 |
|
148 | | -# messageHeader.export( sys.stdout, 0, namespace_='eb:', name_='MessageHeader', namespacedef_='xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd msg-header-2_0.xsd"', pretty_print=True ) |
| 282 | + messageHeader.set_MessageData( msgData ) |
149 | 283 |
|
150 | | -envelope.set_Header( header ) |
| 284 | + envelope.set_Header( header ) |
151 | 285 |
|
152 | | -manifest = Manifest( "2.0", "Manifest" ) |
153 | | -reference = Reference( None, _messageId, None, "FinvoiceSenderInfo" ) |
154 | | -manifest.add_Reference( reference ) |
155 | | -reference.add_Schema( Schema( "2.0", "http://www.pankkiyhdistys.fi/verkkolasku/finvoice/FinvoiceSenderInfo.xsd" ) ) |
| 286 | + manifest = Manifest( "2.0", "Manifest" ) |
| 287 | + reference = Reference( None, _messageId, None, "FinvoiceSenderInfo" ) |
| 288 | + manifest.add_Reference( reference ) |
| 289 | + reference.add_Schema( Schema( "2.0", "http://www.pankkiyhdistys.fi/verkkolasku/finvoice/FinvoiceSenderInfo.xsd" ) ) |
156 | 290 |
|
157 | | -body = Body( ) |
158 | | -body.add_anytypeobjs_( manifest ) |
| 291 | + body = Body( ) |
| 292 | + body.add_anytypeobjs_( manifest ) |
159 | 293 |
|
160 | | -envelope.set_Body( body ) |
| 294 | + envelope.set_Body( body ) |
161 | 295 |
|
162 | | -envelope.export( sys.stdout, 0, pretty_print=True ) |
| 296 | + envelope.export( sys.stdout, 0, pretty_print=True ) |
163 | 297 |
|
164 | | -encodingHeader = '<?xml version="1.0" encoding="' + ExternalEncoding + '" ?>\n' |
165 | | -sys.stdout.write( encodingHeader ) |
166 | | -sys.stdout.write( '<?xml-stylesheet type="text/xsl" href="FinvoiceSenderInfo.xsl"?>\n' ) |
167 | | -senderInfo.export( sys.stdout, 0, name_='FinvoiceSenderInfo', namespacedef_='xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FinvoiceSenderInfo.xsd"', pretty_print=True ) |
| 298 | + encodingHeader = '<?xml version="1.0" encoding="' + ExternalEncoding + '" ?>\n' |
| 299 | + sys.stdout.write( encodingHeader ) |
| 300 | + sys.stdout.write( '<?xml-stylesheet type="text/xsl" href="FinvoiceSenderInfo.xsl"?>\n' ) |
| 301 | + senderInfo.export( sys.stdout, 0, name_='FinvoiceSenderInfo', namespacedef_='xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FinvoiceSenderInfo.xsd"', pretty_print=True ) |
0 commit comments