70 lines
3.2 KiB
Python
70 lines
3.2 KiB
Python
from __future__ import annotations
|
|
|
|
import inspect
|
|
|
|
from ...service import (
|
|
approve_settlement_draft as approve_settlement_draft,
|
|
cancel_settlement_draft as cancel_settlement_draft,
|
|
correct_account_valuation as correct_account_valuation,
|
|
create_settlement_draft as create_settlement_draft,
|
|
finalize_settlement_draft as finalize_settlement_draft,
|
|
get_settlement_draft as get_settlement_draft,
|
|
get_monthly_settlement_snapshot as get_monthly_settlement_snapshot,
|
|
list_account_valuations as list_account_valuations,
|
|
list_settlement_drafts as list_settlement_drafts,
|
|
refresh_settlement_draft_targets as refresh_settlement_draft_targets,
|
|
register_account_valuation as register_account_valuation,
|
|
review_settlement_draft as review_settlement_draft,
|
|
set_settlement_draft_item as set_settlement_draft_item,
|
|
set_settlement_cashflow_policy as set_settlement_cashflow_policy,
|
|
update_settlement_draft as update_settlement_draft,
|
|
)
|
|
from ...application import settlement_draft_service as _draft_service
|
|
from ...application import monthly_settlement_service as _monthly_service
|
|
from ... import service as _service
|
|
|
|
|
|
def _resolve_db_path() -> str:
|
|
from ...db import resolve_db_path
|
|
return str(resolve_db_path())
|
|
|
|
|
|
def _guard(db_path: str | None) -> str:
|
|
return db_path or _resolve_db_path()
|
|
|
|
|
|
def _wrap(fn):
|
|
def call(*args, db_path=None, **kwargs):
|
|
if fn.__name__ == "set_settlement_cashflow_policy":
|
|
target = _draft_service
|
|
elif fn.__name__ == "get_monthly_settlement_snapshot":
|
|
target = _monthly_service
|
|
else:
|
|
target = _draft_service if fn.__name__ in {"create_settlement_draft", "list_settlement_drafts", "get_settlement_draft", "update_settlement_draft", "refresh_settlement_draft_targets", "set_settlement_draft_item", "review_settlement_draft", "approve_settlement_draft", "finalize_settlement_draft", "cancel_settlement_draft"} else _service
|
|
return getattr(target, fn.__name__)(*args, db_path=_guard(db_path), **kwargs)
|
|
call.__name__ = fn.__name__
|
|
call.__doc__ = fn.__doc__
|
|
call.__signature__ = inspect.signature(fn)
|
|
return call
|
|
|
|
|
|
# Keep the service signatures unchanged; path resolution/auth is adapter policy.
|
|
for _name in (
|
|
"create_settlement_draft", "list_settlement_drafts", "get_settlement_draft",
|
|
"update_settlement_draft", "refresh_settlement_draft_targets",
|
|
"set_settlement_draft_item", "review_settlement_draft",
|
|
"approve_settlement_draft", "finalize_settlement_draft", "cancel_settlement_draft",
|
|
"register_account_valuation", "list_account_valuations", "correct_account_valuation",
|
|
"set_settlement_cashflow_policy", "get_monthly_settlement_snapshot",
|
|
):
|
|
globals()[_name] = _wrap(getattr(_service, _name))
|
|
|
|
__all__ = [
|
|
"create_settlement_draft", "list_settlement_drafts", "get_settlement_draft",
|
|
"update_settlement_draft", "refresh_settlement_draft_targets",
|
|
"set_settlement_draft_item", "review_settlement_draft",
|
|
"approve_settlement_draft", "finalize_settlement_draft", "cancel_settlement_draft",
|
|
"register_account_valuation", "list_account_valuations", "correct_account_valuation",
|
|
"set_settlement_cashflow_policy", "get_monthly_settlement_snapshot",
|
|
]
|