airgproducts / eurovat

A python library to get the vat right in the EU.
1 stars 1 forks source link

Eurovat

A python library to get the vat right in the EU.

Features

Planned features

Installation

just use pip:

pip install eurovat

Vat rates

you can query the vat-registry with the following arguments:

import eurovat
import datetime

registry = eurovat.VatRuleRegistry()
registry.date_begin = datetime.datetime(1970, 1, 1)

# This will try to write to vat_rules.json in the package directory
registry.update()

# This will update the in-memory database, all changes will be lost
registry.fetch()

# get a historic vat-rate

rate1 = registry.get_vat_rate("AT", "49020000", date=datetime.datetime(year=2019, month=10, day=5))
# rate1 = 10

rate2 = registry.get_vat_rate("AT", "49020000", date=datetime.datetime(year=2016, month=10, day=5))
# rate2 = 20

Update the registry

keep the registry up-to-date from time to time:

registry.update()

this will require write access to the package-file vat_rules.json. There are alternative storage locations available:

Filesystem cache

when writing to package data is not an option, you can use a custom cache-file:

import eurovat
import datetime

class Registry(eurovat.VatRuleRegistry):
    cache = eurovat.FilesystemCache("/tmp/vat_rules.json")
    date_begin = datetime.datetime(1970, 1, 1)

registry = Registry()
registry.update()

Django cache

This will use Django's cache backend to store vat-rules

import eurovat
import datetime

from eurovat.cache.django import DjangoCache

class Registry(eurovat.VatRuleRegistry):
    cache = DjangoCache("eurovat_rates")
    date_begin = datetime.datetime(1970, 1, 1)

registry = Registry()
registry.update()

Custom cache

You can use a custom cache too. Find an example in eurovat.cache.django