loo=CREATEOBJECT("_VAT_EU") loo.Check("CZ00030325") DEFINE CLASS _VAT_EU AS CUSTOM Name="_VAT_EU" cErrMessage="" KC_KC113_CHECK="http://ec.europa.eu/taxation_customs/vies/services/checkVatService" KC_KC113_CHECK_WSDL="http://ec.europa.eu/taxation_customs/vies/services/checkVatService.wsdl" PROCEDURE Check(lcVAT) LOCAL lcURL,lcKC113,lcCount,liData,lcKC_KC113_CHECK,lcKC_KC113_CHECK_WSDL,loRun,lcEnvelop,loHTTP,llNext This.cErrMessage="" IF EMPTY(lcVAT) RETURN ENDIF TEXT TO lcEnvelop NOSHOW TEXTMERGE <?xml version="1.0" encoding="UTF-8" standalone="no"?> <SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <checkVat xmlns="urn:ec.europa.eu:taxud:vies:services:checkVat:types"> <countryCode xmlns:SOAPSDK4="urn:ec.europa.eu:taxud:vies:services:checkVat:types"><<LEFT(lcVAT,2)>></countryCode> <vatNumber xmlns:SOAPSDK5="urn:ec.europa.eu:taxud:vies:services:checkVat:types"><<RTRIM(SUBSTR(lcVAT,3))>></vatNumber> </checkVat> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ENDTEXT TEXT TO lcEnvelop NOSHOW TEXTMERGE <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types"> <soapenv:Header/> <soapenv:Body> <urn:checkVat> <urn:countryCode><<LEFT(lcVAT,2)>></urn:countryCode> <urn:vatNumber><<RTRIM(SUBSTR(lcVAT,3))>></urn:vatNumber> </urn:checkVat> </soapenv:Body> </soapenv:Envelope> ENDTEXT llNext=.T. loHTTP=CREATEOBJECT("Msxml2.XMLHTTP.6.0") loHTTP.Open ("POST", This.KC_KC113_CHECK,"False") IF loHTTP.ReadyState # 1 This.cErrMessage="_KC113_EU_FAILED" RETURN ENDIF loHTTP.setRequestHeader ("Content-Type", "text/xml; charset=utf-8") loHTTP.setRequestHeader ("SOAPAction", This.KC_KC113_CHECK_WSDL) loHTTP.send(lcEnvelop) IF (loHTTP.readyState <> 4) This.cErrMessage="_KC113_EU_FAILED" RETURN ENDIF lcData=loHTTP.responseXML.xml IF This.GetValid(lcData) ?"VAT",This.GetVAT(lcData) ?"Name",This.GetName(lcData) ?"Address",This.GetAddress(lcData) ELSE ? "VAT "+lcVAT+" is not Valid" ENDIF ENDPROC PROCEDURE GetName(lcData) RETURN STREXTRACT(lcData,"<urn:name>","</urn:name>") ENDPROC PROCEDURE GetVAT(lcData) RETURN STREXTRACT(lcData,"<urn:countryCode>","</urn:countryCode>")+STREXTRACT(lcData,"<urn:vatNumber>","</urn:vatNumber>") ENDPROC PROCEDURE GetAddress(lcData) RETURN STREXTRACT(lcData,"<urn:address>","</urn:address>") ENDPROC PROCEDURE GetValid(lcData) RETURN STREXTRACT(lcData,"<urn:valid>","</urn:valid>")="true" ENDPROC ENDDEFINE>Hi Martina,