fix due days to checkout
This commit is contained in:
@@ -27,7 +27,7 @@ from pydantic import (
|
|||||||
|
|
||||||
from api_gateway import JSONResponse
|
from api_gateway import JSONResponse
|
||||||
from boto3clients import dynamodb_client
|
from boto3clients import dynamodb_client
|
||||||
from config import DUE_DAYS, ORDER_TABLE
|
from config import DUE_DAYS, ORDER_TABLE, USER_TABLE
|
||||||
from routes.enrollments.enroll import Enrollment
|
from routes.enrollments.enroll import Enrollment
|
||||||
|
|
||||||
router = Router()
|
router = Router()
|
||||||
@@ -310,26 +310,27 @@ def _calc_due_date(
|
|||||||
holidays: set[date] | None = None,
|
holidays: set[date] | None = None,
|
||||||
) -> datetime:
|
) -> datetime:
|
||||||
holidays = holidays or set()
|
holidays = holidays or set()
|
||||||
current_dt = start_date
|
|
||||||
|
|
||||||
while business_days > 0:
|
due_date = start_date + timedelta(days=business_days)
|
||||||
current_dt += timedelta(days=1)
|
|
||||||
|
|
||||||
if current_dt.weekday() < 5 and current_dt.date() not in holidays:
|
while due_date.weekday() >= 5 or due_date.date() in holidays:
|
||||||
business_days -= 1
|
due_date += timedelta(days=1)
|
||||||
|
|
||||||
return current_dt
|
return due_date
|
||||||
|
|
||||||
|
|
||||||
def _get_due_days(
|
def _get_due_days(
|
||||||
org_id: str | UUID4,
|
org_id: str | UUID4,
|
||||||
default: int = DUE_DAYS,
|
default: int = DUE_DAYS,
|
||||||
) -> int:
|
) -> int:
|
||||||
return dyn.collection.get_item(
|
return int(
|
||||||
KeyPair(
|
dyn.collection.get_item(
|
||||||
pk=str(org_id),
|
KeyPair(
|
||||||
sk=SortKey('METADATA#BILLING', path_spec='due_days'),
|
pk=str(org_id),
|
||||||
),
|
sk=SortKey('METADATA#BILLING', path_spec='due_days'),
|
||||||
raise_on_error=False,
|
table_name=USER_TABLE,
|
||||||
default=default,
|
),
|
||||||
|
raise_on_error=False,
|
||||||
|
default=default,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -165,11 +165,9 @@ def test_calc_due_date_skips_weekends_and_holidays():
|
|||||||
holidays=holidays,
|
holidays=holidays,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Mon (12) -> holiday (ignored)
|
# Fri (9) + 3 calendar days -> Mon (12)
|
||||||
# Tue (13) -> 1
|
# Mon (12) is a holiday -> adjust to Tue (13)
|
||||||
# Wed (14) -> 2
|
expected = datetime(2026, 1, 13, 10, 30)
|
||||||
# Thu (15) -> 3 ✅
|
|
||||||
expected = datetime(2026, 1, 15, 10, 30)
|
|
||||||
|
|
||||||
assert result == expected
|
assert result == expected
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user