Source code for abstract_api.vat.vat_calculation_response
from functools import cached_property
from typing import Optional
import requests
from ..core.bases import JSONResponse
from ..core.common_entities import Country
from ..core.mixins import NestedEntitiesMixin
from ._response_fields.calculation import CALCULATION_RESPONSE_FIELDS
[docs]
class VATCalculationResponse(NestedEntitiesMixin, JSONResponse):
"""VAT calculation service response."""
_nested_entities = {
"country": Country
}
def __init__(self, response: requests.models.Response) -> None:
"""Initializes a new VATCalculationResponse."""
super().__init__(response, CALCULATION_RESPONSE_FIELDS)
@cached_property
def amount_excluding_vat(self) -> Optional[str]:
"""The amount excluding the VAT."""
return self._get_response_field("amount_excluding_vat")
@cached_property
def amount_including_vat(self) -> Optional[str]:
"""The sum of the base amount and the VAT.
It is amount_excl_vat + vat_amount.
"""
return self._get_response_field("amount_including_vat")
@cached_property
def vat_amount(self) -> Optional[str]:
"""The calculated amount of VAT."""
return self._get_response_field("vat_amount")
@cached_property
def vat_category(self) -> Optional[str]:
"""The optional category of the purchase.
Used to determine whether it qualifies for a reduced rate.
"""
return self._get_response_field("vat_category")
@cached_property
def vat_rate(self) -> Optional[str]:
"""The VAT rate, from 0.01 to 0.99."""
return self._get_response_field("vat_rate")
@cached_property
def country(self) -> Optional[Country]:
"""Details of the country the VAT is calculated from."""
return self._get_response_field("country")