python-easyverein 2.1.1__tar.gz → 2.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/PKG-INFO +1 -1
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/__init__.py +1 -1
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/api.py +3 -1
- python_easyverein-2.2.0/easyverein/models/billing_account.py +65 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/booking.py +4 -2
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/contact_details.py +1 -1
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/custom_field.py +1 -1
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/invoice.py +2 -2
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/invoice_item.py +2 -2
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/member.py +17 -13
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/member_group.py +4 -1
- python_easyverein-2.2.0/easyverein/modules/billing_account.py +27 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/pyproject.toml +1 -1
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/LICENSE +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/README.md +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/core/__init__.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/core/client.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/core/exceptions.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/core/protocol.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/core/responses.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/core/types.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/core/validators.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/__init__.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/base.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/member_custom_field.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/member_member_group.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/mixins/__init__.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/mixins/empty_strings_mixin.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/mixins/required_attributes.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/__init__.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/booking.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/contact_details.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/custom_field.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/invoice.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/invoice_item.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/member.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/member_custom_field.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/member_group.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/member_member_group.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/mixins/__init__.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/mixins/crud.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/mixins/helper.py +0 -0
- {python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/mixins/recycle_bin.py +0 -0
|
@@ -7,6 +7,7 @@ from typing import Callable, cast
|
|
|
7
7
|
|
|
8
8
|
from .core.client import EasyvereinClient
|
|
9
9
|
from .core.responses import BearerToken
|
|
10
|
+
from .modules.billing_account import BillingAccountMixin
|
|
10
11
|
from .modules.booking import BookingMixin
|
|
11
12
|
from .modules.contact_details import ContactDetailsMixin
|
|
12
13
|
from .modules.custom_field import CustomFieldMixin
|
|
@@ -23,7 +24,7 @@ class EasyvereinAPI:
|
|
|
23
24
|
def __init__(
|
|
24
25
|
self,
|
|
25
26
|
api_key,
|
|
26
|
-
api_version="
|
|
27
|
+
api_version="v2.0",
|
|
27
28
|
base_url: str = "https://easyverein.com/api/",
|
|
28
29
|
logger: logging.Logger | None = None,
|
|
29
30
|
auto_retry=False,
|
|
@@ -59,6 +60,7 @@ class EasyvereinAPI:
|
|
|
59
60
|
|
|
60
61
|
# Add methods
|
|
61
62
|
self.booking = BookingMixin(self.c, self.logger)
|
|
63
|
+
self.billing_account = BillingAccountMixin(self.c, self.logger)
|
|
62
64
|
self.contact_details = ContactDetailsMixin(self.c, self.logger)
|
|
63
65
|
self.custom_field = CustomFieldMixin(self.c, self.logger)
|
|
64
66
|
self.invoice = InvoiceMixin(self.c, self.logger)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, PositiveInt
|
|
4
|
+
|
|
5
|
+
from ..core.types import EasyVereinReference, FilterIntList, FilterStrList, PositiveIntWithZero
|
|
6
|
+
from .base import EasyVereinBase
|
|
7
|
+
from .mixins.empty_strings_mixin import EmptyStringsToNone
|
|
8
|
+
from .mixins.required_attributes import required_mixin
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class BillingAccountBase(EasyVereinBase):
|
|
12
|
+
"""
|
|
13
|
+
| Representative Model Class | Update Model Class | Create Model Class |
|
|
14
|
+
| --- | --- | --- |
|
|
15
|
+
| `BillingAccount` | `BillingAccountUpdate` | `BillingAccountCreate` |
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
name: str | None = None
|
|
19
|
+
excludeInEur: bool | None = None
|
|
20
|
+
number: PositiveInt | None = None
|
|
21
|
+
defaultSphere: PositiveInt | None = None
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class BillingAccount(BillingAccountBase, EmptyStringsToNone):
|
|
25
|
+
"""
|
|
26
|
+
Pydantic model representing an BillingAccount
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
skr: str | None = None
|
|
30
|
+
accountingPlans: list[EasyVereinReference] | None = None
|
|
31
|
+
numberLength: PositiveIntWithZero
|
|
32
|
+
linkedBookings: PositiveIntWithZero
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class BillingAccountCreate(
|
|
36
|
+
BillingAccountBase,
|
|
37
|
+
required_mixin(["name", "number"]), # type: ignore
|
|
38
|
+
):
|
|
39
|
+
"""
|
|
40
|
+
Pydantic model representing a BillingAccount
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class BillingAccountUpdate(BillingAccountBase):
|
|
45
|
+
"""
|
|
46
|
+
Pydantic model used to patch an BillingAccount
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class BillingAccountFilter(BaseModel):
|
|
51
|
+
"""
|
|
52
|
+
Pydantic model used to filter billing accounts
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
id__in: FilterIntList | None = None
|
|
56
|
+
name: str | None = None
|
|
57
|
+
skr: str | None = None
|
|
58
|
+
skr__in: FilterStrList | None = None
|
|
59
|
+
number__gte: PositiveInt | None = None
|
|
60
|
+
number__lte: PositiveInt | None = None
|
|
61
|
+
deleted: bool | None = None
|
|
62
|
+
accountingPlan__isnull: bool | None = None
|
|
63
|
+
showOwnBillingAccounts: bool | None = None
|
|
64
|
+
ordering: str | None = None
|
|
65
|
+
search: str | None = None
|
|
@@ -22,8 +22,7 @@ class BookingBase(EasyVereinBase):
|
|
|
22
22
|
amount: float | None = None
|
|
23
23
|
# TODO: Add reference to BankAccount once implemented
|
|
24
24
|
bankAccount: EasyVereinReference | None = None
|
|
25
|
-
|
|
26
|
-
billingAccount: EasyVereinReference | None = None
|
|
25
|
+
billingAccount: BillingAccount | EasyVereinReference | None = None
|
|
27
26
|
description: str | None = None
|
|
28
27
|
date: DateTime | None = None
|
|
29
28
|
receiver: str | None = None
|
|
@@ -98,3 +97,6 @@ class BookingFilter(BaseModel):
|
|
|
98
97
|
relatedInvoice__isnull: bool | None = None
|
|
99
98
|
relatedInvoice: int | None = None
|
|
100
99
|
search: str | None = None
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
from .billing_account import BillingAccount # noqa: E402
|
|
@@ -148,7 +148,7 @@ class ContactDetailsFilter(BaseModel):
|
|
|
148
148
|
|
|
149
149
|
id__in: FilterIntList | None = None
|
|
150
150
|
country: str | None = None
|
|
151
|
-
isCompany: bool = Field(default=None, serialization_alias="_isCompany")
|
|
151
|
+
isCompany: bool | None = Field(default=None, serialization_alias="_isCompany")
|
|
152
152
|
preferredCommunicationWay: str | None = None
|
|
153
153
|
contactDetailsGroups: str | None = None
|
|
154
154
|
contactDetailsGroups__not: str | None = None
|
|
@@ -111,6 +111,6 @@ class CustomFieldFilter(BaseModel):
|
|
|
111
111
|
kind: str | None = None
|
|
112
112
|
member_edit: bool | None = None
|
|
113
113
|
member_show: bool | None = None
|
|
114
|
-
deletedBy__isnull: bool = Field(default=None, serialization_alias="_deletedBy__isnull")
|
|
114
|
+
deletedBy__isnull: bool | None = Field(default=None, serialization_alias="_deletedBy__isnull")
|
|
115
115
|
deleted: bool | None = None
|
|
116
116
|
ordering: str | None = None
|
|
@@ -55,8 +55,7 @@ class InvoiceBase(EasyVereinBase):
|
|
|
55
55
|
]
|
|
56
56
|
| None
|
|
57
57
|
) = None
|
|
58
|
-
|
|
59
|
-
selectionAcc: EasyVereinReference | None = None
|
|
58
|
+
selectionAcc: BillingAccount | EasyVereinReference | None = None
|
|
60
59
|
refNumber: str | None = None
|
|
61
60
|
paymentDifference: float | None = None
|
|
62
61
|
isDraft: bool | None = None
|
|
@@ -148,6 +147,7 @@ class InvoiceFilter(BaseModel):
|
|
|
148
147
|
search: str | None = None
|
|
149
148
|
|
|
150
149
|
|
|
150
|
+
from .billing_account import BillingAccount # noqa: E402
|
|
151
151
|
from .contact_details import ContactDetails # noqa: E402
|
|
152
152
|
from .invoice_item import InvoiceItem # noqa: E402
|
|
153
153
|
from .member import Member # noqa: E402
|
|
@@ -35,8 +35,7 @@ class InvoiceItemBase(EasyVereinBase):
|
|
|
35
35
|
taxRate: float | None = None
|
|
36
36
|
gross: bool | None = None
|
|
37
37
|
taxName: str | None = None
|
|
38
|
-
|
|
39
|
-
billingAccount: EasyVereinReference | None = None
|
|
38
|
+
billingAccount: BillingAccount | EasyVereinReference | None = None
|
|
40
39
|
costCentre: Annotated[str, Field(max_length=8)] | None = None
|
|
41
40
|
|
|
42
41
|
|
|
@@ -85,4 +84,5 @@ class InvoiceItemFilter(BaseModel):
|
|
|
85
84
|
search: str | None = None
|
|
86
85
|
|
|
87
86
|
|
|
87
|
+
from .billing_account import BillingAccount # noqa: E402
|
|
88
88
|
from .invoice import Invoice # noqa: E402
|
|
@@ -135,9 +135,9 @@ class MemberFilter(BaseModel):
|
|
|
135
135
|
contactDetails__country: str | None = None
|
|
136
136
|
membershipNumber: str | None = None
|
|
137
137
|
membershipNumber__in: FilterStrList | None = None
|
|
138
|
-
deletedBy: int = Field(default=None, serialization_alias="_deletedBy")
|
|
139
|
-
deletedBy__ne: int = Field(default=None, serialization_alias="_deletedBy__ne")
|
|
140
|
-
deletedBy__isnull: bool = Field(default=None, serialization_alias="_deletedBy__isnull")
|
|
138
|
+
deletedBy: int | None = Field(default=None, serialization_alias="_deletedBy")
|
|
139
|
+
deletedBy__ne: int | None = Field(default=None, serialization_alias="_deletedBy__ne")
|
|
140
|
+
deletedBy__isnull: bool | None = Field(default=None, serialization_alias="_deletedBy__isnull")
|
|
141
141
|
joinDate: DateTime | None = None
|
|
142
142
|
joinDate__gte: DateTime | None = None
|
|
143
143
|
joinDate__lte: DateTime | None = None
|
|
@@ -146,18 +146,22 @@ class MemberFilter(BaseModel):
|
|
|
146
146
|
resignationDate__gte: DateTime | None = None
|
|
147
147
|
resignationDate__lte: DateTime | None = None
|
|
148
148
|
resignationDate__isnull: bool | None = None
|
|
149
|
-
isApplication: bool = Field(default=None, serialization_alias="_isApplication")
|
|
150
|
-
applicationDate: Date = Field(default=None, serialization_alias="_applicationDate")
|
|
151
|
-
applicationDate__gte: Date = Field(default=None, serialization_alias="_applicationDate__gte")
|
|
152
|
-
applicationDate__lte: Date = Field(default=None, serialization_alias="_applicationDate__lte")
|
|
153
|
-
applicationDate__isnull: bool = Field(default=None, serialization_alias="_applicationDate__isnull")
|
|
154
|
-
applicationWasAcceptedAt: Date = Field(default=None, serialization_alias="_applicationWasAcceptedAt")
|
|
155
|
-
applicationWasAcceptedAt__gte: Date = Field(
|
|
156
|
-
|
|
157
|
-
|
|
149
|
+
isApplication: bool | None = Field(default=None, serialization_alias="_isApplication")
|
|
150
|
+
applicationDate: Date | None = Field(default=None, serialization_alias="_applicationDate")
|
|
151
|
+
applicationDate__gte: Date | None = Field(default=None, serialization_alias="_applicationDate__gte")
|
|
152
|
+
applicationDate__lte: Date | None = Field(default=None, serialization_alias="_applicationDate__lte")
|
|
153
|
+
applicationDate__isnull: bool | None = Field(default=None, serialization_alias="_applicationDate__isnull")
|
|
154
|
+
applicationWasAcceptedAt: Date | None = Field(default=None, serialization_alias="_applicationWasAcceptedAt")
|
|
155
|
+
applicationWasAcceptedAt__gte: Date | None = Field(
|
|
156
|
+
default=None, serialization_alias="_applicationWasAcceptedAt__gte"
|
|
157
|
+
)
|
|
158
|
+
applicationWasAcceptedAt__lte: Date | None = Field(
|
|
159
|
+
default=None, serialization_alias="_applicationWasAcceptedAt__lte"
|
|
160
|
+
)
|
|
161
|
+
applicationWasAcceptedAt__isnull: bool | None = Field(
|
|
158
162
|
default=None, serialization_alias="_applicationWasAcceptedAt__isnull"
|
|
159
163
|
)
|
|
160
|
-
isChairman: bool = Field(default=None, serialization_alias="_isChairman")
|
|
164
|
+
isChairman: bool | None = Field(default=None, serialization_alias="_isChairman")
|
|
161
165
|
memberGroups: FilterIntList | None = None
|
|
162
166
|
"""
|
|
163
167
|
Filter for members that are member of the given group(s)
|
|
@@ -48,7 +48,7 @@ class MemberGroupBase(EasyVereinBase):
|
|
|
48
48
|
agePermission: PositiveIntWithZero | None = None
|
|
49
49
|
nextGroup: EasyVereinReference | None = None
|
|
50
50
|
taxRate: float | None = None
|
|
51
|
-
billingAccount: EasyVereinReference | None = None
|
|
51
|
+
billingAccount: BillingAccount | EasyVereinReference | None = None
|
|
52
52
|
costCentre: str | None = Field(default=None, max_length=8)
|
|
53
53
|
isOnlyVisibleToAdmins: bool | None = None
|
|
54
54
|
user_shares: Literal["n", "a", "d"] | None = None
|
|
@@ -153,3 +153,6 @@ class MemberGroupFilter(BaseModel):
|
|
|
153
153
|
kind: str | None = None
|
|
154
154
|
deleted: bool | None = None
|
|
155
155
|
ordering: str | None = None
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
from .billing_account import BillingAccount # noqa: E402
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""
|
|
2
|
+
All methods related to billing accounts
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
|
|
7
|
+
from ..core.client import EasyvereinClient
|
|
8
|
+
from ..models.billing_account import (
|
|
9
|
+
BillingAccount,
|
|
10
|
+
BillingAccountCreate,
|
|
11
|
+
BillingAccountFilter,
|
|
12
|
+
BillingAccountUpdate,
|
|
13
|
+
)
|
|
14
|
+
from .mixins.crud import CRUDMixin
|
|
15
|
+
from .mixins.recycle_bin import RecycleBinMixin
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class BillingAccountMixin(
|
|
19
|
+
CRUDMixin[BillingAccount, BillingAccountCreate, BillingAccountUpdate, BillingAccountFilter],
|
|
20
|
+
RecycleBinMixin[BillingAccount],
|
|
21
|
+
):
|
|
22
|
+
def __init__(self, client: EasyvereinClient, logger: logging.Logger):
|
|
23
|
+
super().__init__()
|
|
24
|
+
self.endpoint_name = "billing-account"
|
|
25
|
+
self.return_type = BillingAccount
|
|
26
|
+
self.c = client
|
|
27
|
+
self.logger = logger
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/member_custom_field.py
RENAMED
|
File without changes
|
{python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/member_member_group.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/mixins/empty_strings_mixin.py
RENAMED
|
File without changes
|
{python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/models/mixins/required_attributes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/member_custom_field.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/member_member_group.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_easyverein-2.1.1 → python_easyverein-2.2.0}/easyverein/modules/mixins/recycle_bin.py
RENAMED
|
File without changes
|