adapt to new DelBar API

This commit is contained in:
Florian Förster 2025-03-05 08:06:11 +01:00
parent 5e5486fe53
commit 6b4495eb7a
2 changed files with 33 additions and 10 deletions

View File

@ -5,7 +5,7 @@ from datetime import datetime as Datetime
from typing import Final, Never
import requests
from pydantic import BaseModel, PositiveFloat, PositiveInt
from pydantic import BaseModel, PositiveInt
from requests import Response
from delta_barth.constants import HTTP_CURRENT_CONNECTION, KnownApiErrorCodes
@ -152,8 +152,9 @@ def logout(
# ** sales data
class SalesPrognosisRequest(BaseModel):
berechnungszeitpunkt: Datetime
class SalesPrognosisRequestP(BaseModel):
FirmaId: int | None
BuchungsDatum: Datetime | None
class SalesPrognosisResponseEntry(BaseModel):
@ -171,18 +172,20 @@ class SalesPrognosisResponse(BaseModel):
def get_sales_prognosis_data(
base_url: str,
start_date: Datetime,
company_id: int | None = None,
start_date: Datetime | None = None,
) -> SalesPrognosisResponse:
_assert_login_status()
ROUTE: Final[str] = "verkauf/umsatzprognosedaten"
URL: Final = combine_route(base_url, ROUTE)
sales_prog_req = SalesPrognosisRequest(
berechnungszeitpunkt=start_date,
sales_prog_req = SalesPrognosisRequestP(
FirmaId=company_id,
BuchungsDatum=start_date,
)
resp = requests.get(
URL,
params=sales_prog_req.model_dump(mode="json"),
params=sales_prog_req.model_dump(mode="json", exclude_none=True),
headers=HTTP_CURRENT_CONNECTION.headers, # type: ignore[argumentType]
)

View File

@ -105,7 +105,8 @@ def test_login_logout(credentials, api_base_url):
assert resp.error.message == "Nutzer oder Passwort falsch."
@pytest.mark.api_con_required
# @pytest.mark.api_con_required
@pytest.mark.new
def test_get_sales_prognosis_data(credentials, api_base_url):
resp = common.login(
base_url=api_base_url,
@ -114,13 +115,32 @@ def test_get_sales_prognosis_data(credentials, api_base_url):
database=credentials["db"],
mandant=credentials["mandant"],
)
# test without company ID
assert resp.error is None
date = Datetime(2022, 6, 1)
resp = common.get_sales_prognosis_data(api_base_url, date)
resp = common.get_sales_prognosis_data(api_base_url, None, date)
assert resp.error is None
assert len(resp.daten) > 0
date = Datetime(2030, 1, 1)
resp = common.get_sales_prognosis_data(api_base_url, date)
resp = common.get_sales_prognosis_data(api_base_url, None, date)
assert resp.error is None
assert len(resp.daten) == 0
# test with company ID
assert resp.error is None
date = Datetime(2022, 6, 1)
company_id = 1024
resp = common.get_sales_prognosis_data(api_base_url, company_id, date)
assert resp.error is None
assert len(resp.daten) > 0
date = Datetime(2030, 1, 1)
resp = common.get_sales_prognosis_data(api_base_url, company_id, date)
assert resp.error is None
assert len(resp.daten) == 0
# test with non-existent company ID
assert resp.error is None
date = Datetime(2022, 6, 1)
company_id = 1000024
resp = common.get_sales_prognosis_data(api_base_url, company_id, date)
assert resp.error is None
assert len(resp.daten) == 0
# close connection