Skip to content

Commit 52e7f65

Browse files
author
Robert Segal
committed
Added billing credit memos endpoints
1 parent fc9b20c commit 52e7f65

File tree

4 files changed

+90
-0
lines changed

4 files changed

+90
-0
lines changed

mpt_api_client/resources/billing/billing.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
CustomLedgersService,
55
)
66
from mpt_api_client.resources.billing.invoices import AsyncInvoicesService, InvoicesService
7+
from mpt_api_client.resources.billing.credit_memos import (
8+
AsyncCreditMemosService,
9+
CreditMemosService,
10+
)
711
from mpt_api_client.resources.billing.journals import AsyncJournalsService, JournalsService
812
from mpt_api_client.resources.billing.ledgers import AsyncLedgersService, LedgersService
913
from mpt_api_client.resources.billing.statements import AsyncStatementsService, StatementsService
@@ -40,6 +44,11 @@ def custom_ledgers(self) -> CustomLedgersService:
4044
"""Custom ledgers service."""
4145
return CustomLedgersService(http_client=self.http_client)
4246

47+
@property
48+
def credit_memos(self) -> CreditMemosService:
49+
"""Credit Memos service."""
50+
return CreditMemosService(http_client=self.http_client)
51+
4352

4453
class AsyncBilling:
4554
"""Billing MPT API Module."""
@@ -71,3 +80,8 @@ def invoices(self) -> AsyncInvoicesService:
7180
def custom_ledgers(self) -> AsyncCustomLedgersService:
7281
"""Custom ledgers service."""
7382
return AsyncCustomLedgersService(http_client=self.http_client)
83+
84+
@property
85+
def credit_memos(self) -> AsyncCreditMemosService:
86+
"""Credit Memos service."""
87+
return AsyncCreditMemosService(http_client=self.http_client)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from mpt_api_client.http import AsyncService, Service
2+
from mpt_api_client.http.mixins import (
3+
AsyncCreateMixin,
4+
AsyncUpdateMixin,
5+
CreateMixin,
6+
UpdateMixin,
7+
)
8+
from mpt_api_client.models import Model
9+
10+
11+
class CreditMemo(Model):
12+
"""Credit Memo resource."""
13+
14+
15+
class CreditMemosServiceConfig:
16+
"""Credit Memos service configuration."""
17+
18+
_endpoint = "/public/v1/billing/credit-memos"
19+
_model_class = CreditMemo
20+
_collection_key = "data"
21+
22+
23+
class CreditMemosService(
24+
CreateMixin[CreditMemo],
25+
UpdateMixin[CreditMemo],
26+
Service[CreditMemo],
27+
CreditMemosServiceConfig,
28+
):
29+
"""Credit Memos service."""
30+
31+
32+
class AsyncCreditMemosService(
33+
AsyncCreateMixin[CreditMemo],
34+
AsyncUpdateMixin[CreditMemo],
35+
AsyncService[CreditMemo],
36+
CreditMemosServiceConfig,
37+
):
38+
"""Async Credit Memos service."""

tests/resources/billing/test_billing.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
CustomLedgersService,
77
)
88
from mpt_api_client.resources.billing.invoices import AsyncInvoicesService, InvoicesService
9+
from mpt_api_client.resources.billing.credit_memos import (
10+
AsyncCreditMemosService,
11+
CreditMemosService,
12+
)
913
from mpt_api_client.resources.billing.journals import AsyncJournalsService, JournalsService
1014
from mpt_api_client.resources.billing.ledgers import AsyncLedgersService, LedgersService
1115
from mpt_api_client.resources.billing.statements import AsyncStatementsService, StatementsService
@@ -29,6 +33,7 @@ def async_billing(async_http_client):
2933
("statements", StatementsService),
3034
("invoices", InvoicesService),
3135
("custom_ledgers", CustomLedgersService),
36+
("credit_memos", CreditMemosService),
3237
],
3338
)
3439
def test_billing_properties(billing, property_name, expected_service_class):
@@ -47,6 +52,7 @@ def test_billing_properties(billing, property_name, expected_service_class):
4752
("statements", AsyncStatementsService),
4853
("invoices", AsyncInvoicesService),
4954
("custom_ledgers", AsyncCustomLedgersService),
55+
("credit_memos", AsyncCreditMemosService),
5056
],
5157
)
5258
def test_async_billing_properties(async_billing, property_name, expected_service_class):
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import pytest
2+
3+
from mpt_api_client.resources.billing.credit_memos import (
4+
AsyncCreditMemosService,
5+
CreditMemosService,
6+
)
7+
8+
9+
@pytest.fixture
10+
def credit_memos_service(http_client):
11+
return CreditMemosService(http_client=http_client)
12+
13+
14+
@pytest.fixture
15+
def async_credit_memos_service(async_http_client):
16+
return AsyncCreditMemosService(http_client=async_http_client)
17+
18+
19+
@pytest.mark.parametrize(
20+
"method",
21+
["get", "create", "update"],
22+
)
23+
def test_mixins_present(credit_memos_service, method):
24+
assert hasattr(credit_memos_service, method)
25+
26+
27+
@pytest.mark.parametrize(
28+
"method",
29+
["get", "create", "update"],
30+
)
31+
def test_async_mixins_present(async_credit_memos_service, method):
32+
assert hasattr(async_credit_memos_service, method)

0 commit comments

Comments
 (0)