When using the build_comp_addr() method 'person' argument, we need
to pass in a PersonName object, and not a string name of the contact.
Add a public build_pers_name() method to produce that PersonName object,
and use it from the example code.
- since multiple vouchers yield one PDF, storing it directly in the
result object makes more sense
- the manifest is also available when buying PDFs, thus retrieve it as
well
Otherwise, you can't have multiple connections with different
authentications and basket contents. Also, re-constructing the
object didn't clear the positions which isn't very intuitive.
the result still is compatible with Python 2 (tested with 2.7)
- use relative import in `__init__.py` such that the import of `inema`
also works with `PYTHONPATH` set to the repository
- use another method to load the json file, i.e. one that also works
when the package isn't installed
- replace some deprecated imports (that aren't available in Python 3)
with their sucessors
- replace some Python 2 specific constructs (e.g. `map` that implicitly
converts to a list in Python 2 but just returns a map object in Python 3)
Prior to this commit, we useda custom modified versin of python-zeep
that accepts a list of headesr as part of the _soapheader argument.
Recent changes to python-zeep include that support natively using the
_soapeheaders [plural] argument. Port the code to that.
The 1C4A hash is computed based (among other things) the current German
time. Let's use German time no matter which timezone the executing
system is using.