trabifant
Lt. Commander
- Registriert
- März 2004
- Beiträge
- 1.324
Hallo zusammen,
eines vorab: ich bin in Powershell und wsdl so gut wie nicht bewandert, daher kann es passieren, dass hier nicht die korrekten Termini benutzt werden.
Ich versuche derzeit, ein Powershell-Skript anzupassen, welches über https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl einen Dienst abfragt. Die Antwort des Dienstes ist folgendermaßen definiert (nur Auszüge aus der wsdl):
Der Matchcode ist als Enumeration definiert und kann VALID, INVALID oder NOT_PROCESSED enthalten. Das Skript sieht folgendermaßen aus:
Als Antwort erhalte ich dann allerdings das hier:
Meine Fragen wären daher:
1. Warum wird als "Name Match" nun auf einmal "Item1" ausgegeben und nicht einer der in der wsdl-Definition vorgesehenen Enumeration-Werte?
2. Die Methode checkVatApprox hat als Rückgabewerte offensichtlich einen DateTime-Wert, aber wie können dann zur selben Zeit weitere Datentypen zur Verfügung stehen und die vorhandenen Variablen überschreiben?
3. Wenn ich die Methoden des Dienstes über Powershell abfrage, dann stehen mehrere Methoden zur Verfügung. Per SOAP-Tool aber nur zwei zum VAT-Check. Wie erklärt sich das?
eines vorab: ich bin in Powershell und wsdl so gut wie nicht bewandert, daher kann es passieren, dass hier nicht die korrekten Termini benutzt werden.
Ich versuche derzeit, ein Powershell-Skript anzupassen, welches über https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl einen Dienst abfragt. Die Antwort des Dienstes ist folgendermaßen definiert (nur Auszüge aus der wsdl):
XML:
<xsd:element name="checkVatApproxResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="countryCode" type="xsd:string"/>
<xsd:element name="vatNumber" type="xsd:string"/>
<xsd:element name="requestDate" type="xsd:date"/>
<xsd:element name="valid" type="xsd:boolean"/>
...
<xsd:element maxOccurs="1" minOccurs="0" name="traderNameMatch" type="tns1:matchCode"/>
<xsd:element maxOccurs="1" minOccurs="0" name="traderCompanyTypeMatch" type="tns1:matchCode"/>
<xsd:element maxOccurs="1" minOccurs="0" name="traderStreetMatch" type="tns1:matchCode"/>
<xsd:element maxOccurs="1" minOccurs="0" name="traderPostcodeMatch" type="tns1:matchCode"/>
<xsd:element maxOccurs="1" minOccurs="0" name="traderCityMatch" type="tns1:matchCode"/>
<xsd:element name="requestIdentifier" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
...
<xsd:simpleType name="matchCode">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="1">
<xsd:annotation>
<xsd:documentation>VALID</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="2">
<xsd:annotation>
<xsd:documentation>INVALID</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="3">
<xsd:annotation>
<xsd:documentation>NOT_PROCESSED</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Der Matchcode ist als Enumeration definiert und kann VALID, INVALID oder NOT_PROCESSED enthalten. Das Skript sieht folgendermaßen aus:
Code:
Function Get-ViesVatNumber {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true,
Position=0)]
$CountryCode,
[Parameter(Mandatory=$true,
Position=1)]
$VatNumber
)
$Vies = New-WebServiceProxy -Uri "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl" -Class "checkVat"
$Valid = $false
$TraderName = "Comm.VA ALPRO"
$TraderAddress = ""
$Identifier = ""
$TraderCompanyType = ""
$TraderStreet = ""
$TraderPostcode = ""
$TraderCity = ""
$TraderNameMatch = 1
$TraderNameMatchSpecified = $false
$TraderCompanyTypeMatch = 1
$TraderCompanyTypeMatchSpecified = $false
$TraderStreetMatch =1
$TraderStreetMatchSpecified = $false
$TraderPostcodeMatch = 1
$TraderPostcodeMatchSpecified = $false
$TraderCityMatch = 1
$TraderCityMatchSpecified = $false
$RequesterCountryCode = "DE"
$RequesterVatNumber = "813984816"
$DateChecked = $Vies.checkVatApprox([ref]$CountryCode, [ref]$VatNumber, [ref]$TraderName, [ref]$TraderCompanyType, [ref]$TraderStreet, [ref]$TraderPostcode, [ref]$TraderCity, $RequesterCountryCode, $RequesterVatNumber, [ref]$Valid, [ref]$TraderAddress, [ref]$TraderNameMatch, [ref]$TraderNameMatchSpecified, [ref]$TraderCompanyTypeMatch, [ref]$TraderCompanyTypeMatchSpecified, [ref]$TraderStreetMatch, [ref]$TraderStreetMatchSpecified, [ref]$TraderPostcodeMatch, [ref]$TraderPostcodeMatchSpecified, [ref]$TraderCityMatch, [ref]$TraderCityMatchSpecified, [ref]$Identifier)
$Properties = @{
'CountryCode' = $CountryCode
'VatNumber' = $VatNumber
'Valid' = $Valid
'Name' = $TraderName
'Name Match' = $TraderNameMatch
'Address' = $TraderAddress
'Street' = $TraderStreet
'Postcode' = $TraderPostcode
'City' = $TraderCity
'DateChecked' = $DateChecked
'Consultation' = $Identifier
}
$Company = New-Object -TypeName PSCustomObject -Property $Properties
Write-Output $Company
}
Get-ViesVatNumber -CountryCode "BE" -VatNumber "0420429375"
Als Antwort erhalte ich dann allerdings das hier:
Code:
Name : Comm.VA ALPRO
Street :
Name Match : Item1
CountryCode : BE
DateChecked : 20.01.2022 00:00:00
VatNumber : 0420429375
Address : Vlamingstraat 28
8560 Wevelgem
City :
Valid : True
Postcode :
Consultation : WAPIAAAAX55rdpIj
Meine Fragen wären daher:
1. Warum wird als "Name Match" nun auf einmal "Item1" ausgegeben und nicht einer der in der wsdl-Definition vorgesehenen Enumeration-Werte?
2. Die Methode checkVatApprox hat als Rückgabewerte offensichtlich einen DateTime-Wert, aber wie können dann zur selben Zeit weitere Datentypen zur Verfügung stehen und die vorhandenen Variablen überschreiben?
3. Wenn ich die Methoden des Dienstes über Powershell abfrage, dann stehen mehrere Methoden zur Verfügung. Per SOAP-Tool aber nur zwei zum VAT-Check. Wie erklärt sich das?