# Path: exactonline/elements/base.py
# class ExactElement(object):
#     def __init__(self, api=None, **kwargs):
#         super(ExactElement, self).__init__(**kwargs)
# 
#         self._api = api
# 
#     def get_guid(self):
#         # Raises ObjectDoesNotExist if it cannot be found remotely.
#         raise NotImplementedError()
# 
#     def commit(self):
#         # This needs API specific work.
#         raise NotImplementedError()
# 
# Path: exactonline/exceptions.py
# class ExactOnlineError(Exception):
#     pass
# 
# class ObjectDoesNotExist(ExactOnlineError):
#     """
#     Exception named Django style.
#     """
#     pass
# 
# Path: exactonline/resource.py
# class DELETE(_Resource):
#     pass
# 
# class POST(_Resource):
#     pass


from datetime import timedelta
from .base import ExactElement
from ..exceptions import ExactOnlineError, ObjectDoesNotExist
from ..resource import DELETE, POST
    class BossoExactInvoice(ExactInvoice):
        def __init__(self, bosso_invoice=None, **kwargs):
            super(BossoExactInvoice, self).__init__(**kwargs)

            self._bosso_invoice = bosso_invoice

        def get_customer(self):
            return BossoExactCustomer(
                bosso_relation=self._bosso_invoice.relation, api=self._api)

        def get_created_data(self):
            return self._bosso_invoice.open_date

        # ...

This file is part of the Exact Online REST API Library in Python
(EORALP), licensed under the LGPLv3+.
Copyright (C) 2015-2018 Walter Doekes, OSSO B.V.
"""



class UnknownLedgerCodes(ExactOnlineError):
    def __init__(self, ledger_codes):
        super(UnknownLedgerCodes, self).__init__(
            'One or more ledger codes are not found in Exact: %s' % (
                ', '.join(ledger_codes),))
        self.ledger_codes = ledger_codes



# Path: exactonline/elements/base.py
# class ExactElement(object):
#     def __init__(self, api=None, **kwargs):
#         super(ExactElement, self).__init__(**kwargs)
# 
#         self._api = api
# 
#     def get_guid(self):
#         # Raises ObjectDoesNotExist if it cannot be found remotely.
#         raise NotImplementedError()
# 
#     def commit(self):
#         # This needs API specific work.
#         raise NotImplementedError()
# 
# Path: exactonline/exceptions.py
# class ExactOnlineError(Exception):
#     pass
# 
# class ObjectDoesNotExist(ExactOnlineError):
#     """
#     Exception named Django style.
#     """
#     pass
# 
# Path: exactonline/resource.py
# class DELETE(_Resource):
#     pass
# 
# class POST(_Resource):
#     pass


# Path: exactonline/elements/invoice.py
from datetime import timedelta
from .base import ExactElement
from ..exceptions import ExactOnlineError, ObjectDoesNotExist
from ..resource import DELETE, POST

    class BossoExactInvoice(ExactInvoice):
        def __init__(self, bosso_invoice=None, **kwargs):
            super(BossoExactInvoice, self).__init__(**kwargs)

            self._bosso_invoice = bosso_invoice

        def get_customer(self):
            return BossoExactCustomer(
                bosso_relation=self._bosso_invoice.relation, api=self._api)

        def get_created_data(self):
            return self._bosso_invoice.open_date

        # ...

This file is part of the Exact Online REST API Library in Python
(EORALP), licensed under the LGPLv3+.
Copyright (C) 2015-2018 Walter Doekes, OSSO B.V.
"""



class UnknownLedgerCodes(ExactOnlineError):
    def __init__(self, ledger_codes):
        super(UnknownLedgerCodes, self).__init__(
            'One or more ledger codes are not found in Exact: %s' % (
                ', '.join(ledger_codes),))
        self.ledger_codes = ledger_codes



class ExactInvoice(ExactElement):