Skip to content

cchantep/turvy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Turvy

Little Scala (2.11) client to check VAT number (or some Economist at the Royal Bank of Ankh-Morpork)

Base on WSDL service exposed by the European Commission.

Setup

In Maven project:

<project>
  <!-- ... -->
  
  <repository>
    <id>tatami-release</id>
    <name>Tatami Releases</name>
    <url>https://raw.github.com/cchantep/tatami/master/releases/</url>
  </repository>

  <!-- ... -->

  <dependency>
    <groupId>turvy</groupId>
    <artifactId>vat-client_2.11</artifactId>
    <version>1.0</version>
  </dependency>

  <dependency><!-- If mixing WS stub with dispatch impl -->
    <groupId>net.databinder.dispatch</groupId>
    <artifactId>dispatch-core_2.11</artifactId>
    <version>0.11.1</version>
  </dependency>

  <!-- ... -->
</project>

In SBT project:

resolvers ++= Seq(
  "Tatami Releases" at "https://raw.github.com/cchantep/tatami/master/releases/")

libraryDependencies ++= Seq(
  "turvy" %% "vat-client" % "1.0",
  "net.databinder.dispatch" %% "dispatch-core" % "0.11.1"/* If mixing WS with
    displatch implementation */

Usage

lazy val vatService = (new eu.europa.ec.CheckVatBindings with
    scalaxb.Soap11ClientsAsync with
    scalaxb.DispatchHttpClientsAsync {}).service

VAT service is providing following functions.

checkVat

Check a VAT number is registered for a european company.

def checkVat(countryCode: String, vatNumber: String): Future[eu.europa.ec.CheckVatResponse]

Deployed as REST at https://turvy-demo.herokuapp.com/check/{country}/{num}, with {country} to be replaced with a 2-letters country code (e.g. FR) and {num} with a company number. It returns a JSON response:

// If VAT number is not registered
{"valid":false}

// If VAT number is registered
{"valid":true,"name":"COMPANY NAME","address":"COMPANY ADDRESS","requestDate":"0000-00-00Z"}
// With jQuery
$.getJSON("https://turvy-demo.herokuapp.com/check/"+country+"/"+number,function(r){...})

Try it online

checkVatApprox

def checkVatApprox(countryCode: String, vatNumber: String, traderName: Option[String], traderCompanyType: Option[String], traderStreet: Option[String], traderPostcode: Option[String], traderCity: Option[String], requesterCountryCode: Option[String], requesterVatNumber: Option[String]): Future[eu.europa.ec.CheckVatApproxResponse]

Data types CheckVatResponse and CheckVatApproxResponse are defined as following in eu.europa.ec namespace/package.

case class CheckVatResponse(countryCode: String,
  vatNumber: String,
  requestDate: javax.xml.datatype.XMLGregorianCalendar,
  valid: Boolean,
  name: Option[Option[String]],
  address: Option[Option[String]])

case class CheckVatApprox(countryCode: String,
  vatNumber: String,
  traderName: Option[String],
  traderCompanyType: Option[String],
  traderStreet: Option[String],
  traderPostcode: Option[String],
  traderCity: Option[String],
  requesterCountryCode: Option[String],
  requesterVatNumber: Option[String])

Build

Built using SBT: sbt publish-local

About

Little Scala/WSDL client to check VAT number (or some Economist at the Royal Bank of Ankh-Morpork)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages