# Path: shopkit/core/basemodels.py
# class AbstractPricedItemBase(models.Model):
#     """ Abstract base class for items with a price. This only contains
#         a `get_price` dummy function yielding a NotImplementedError. An
#         actual `price` field is contained in the `PricedItemBase` class.
# 
#         This is because we might want to get our prices somewhere else, ie.
#         using some kind of algorithm, web API or database somewhere.
#     """
# 
#     class Meta:
#         abstract = True
# 
#     def get_price(self, **kwargs):
#         """ Get price for the current product.
# 
#             This method _should_ be implemented in a subclass. """
# 
#         raise NotImplementedError
# 
# Path: shopkit/vat/simple/settings.py
# VAT_PERCENTAGE = getattr(settings, 'SHOPKIT_VAT_PERCENTAGE')
# 
# VAT_DEFAULT_DISPLAY = getattr(settings, 'SHOPKIT_VAT_DEFAULT_DISPLAY')


from shopkit.core.basemodels import AbstractPricedItemBase
from shopkit.vat.simple.settings import VAT_PERCENTAGE, VAT_DEFAULT_DISPLAY
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.




class VATItemBase(AbstractPricedItemBase):
    """ This item extends any priced item (subclasses of :class:`AbstractPricedItemBase`)
        with functions that yield the prices with and without VAT. In doing this,
        it might be imported in what order the base classes for the VAT'ed item are
        listed. Feedback about this is welcomed.

        ..todo::
            Write unittests for this piece of code.

    """

    class Meta:
       abstract = True

    def get_vat(**kwargs):
        """ Gets the amount of VAT for the current item. """

        kwargs.update({'with_vat': False})
        return self.get_price(**kwargs) * 0.01 * VAT_PERCENTAGE


# Path: shopkit/core/basemodels.py
# class AbstractPricedItemBase(models.Model):
#     """ Abstract base class for items with a price. This only contains
#         a `get_price` dummy function yielding a NotImplementedError. An
#         actual `price` field is contained in the `PricedItemBase` class.
# 
#         This is because we might want to get our prices somewhere else, ie.
#         using some kind of algorithm, web API or database somewhere.
#     """
# 
#     class Meta:
#         abstract = True
# 
#     def get_price(self, **kwargs):
#         """ Get price for the current product.
# 
#             This method _should_ be implemented in a subclass. """
# 
#         raise NotImplementedError
# 
# Path: shopkit/vat/simple/settings.py
# VAT_PERCENTAGE = getattr(settings, 'SHOPKIT_VAT_PERCENTAGE')
# 
# VAT_DEFAULT_DISPLAY = getattr(settings, 'SHOPKIT_VAT_DEFAULT_DISPLAY')


# Path: shopkit/vat/simple/models.py
from shopkit.core.basemodels import AbstractPricedItemBase
from shopkit.vat.simple.settings import VAT_PERCENTAGE, VAT_DEFAULT_DISPLAY

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.




class VATItemBase(AbstractPricedItemBase):
    """ This item extends any priced item (subclasses of :class:`AbstractPricedItemBase`)
        with functions that yield the prices with and without VAT. In doing this,
        it might be imported in what order the base classes for the VAT'ed item are
        listed. Feedback about this is welcomed.

        ..todo::
            Write unittests for this piece of code.

    """

    class Meta:
       abstract = True

    def get_vat(**kwargs):
        """ Gets the amount of VAT for the current item. """

        kwargs.update({'with_vat': False})
        return self.get_price(**kwargs) * 0.01 * VAT_PERCENTAGE


    def get_price(with_vat=VAT_DEFAULT_DISPLAY, **kwargs):