"""BriteCore v2 Accounting API endpoint wrappers.
This module provides wrappers for accounting deliverables, invoice retrieval,
and rescind-cancellation workflow helpers in the BriteCore v2 accounting API.
"""
from logging import Logger
from typing import Any, Unpack, cast
from urllib3 import BaseHTTPResponse, HTTPResponse
from britecore_sdk import logger
from britecore_sdk.api.api_calls import (
BritecoreAPIClient,
RequestParameters,
api_client,
)
LOGGER: Logger = logger
API_CLIENT: BritecoreAPIClient = api_client
[docs]
def get_accounting_deliverable(
account_history_id: str,
deliverable_date: str,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Retrieve accounting deliverable values for an account history entry.
POST /api/v2/accounting/get_accounting_deliverable
"""
LOGGER.debug(
"Getting accounting deliverable for account_history_id=%s", account_history_id
)
request_json: dict[str, str] = {
"account_history_id": account_history_id,
"deliverable_date": deliverable_date,
}
request_result: BaseHTTPResponse | HTTPResponse | None = API_CLIENT.do_request(
path="/api/v2/accounting/get_accounting_deliverable",
json=request_json,
**kwargs,
)
return API_CLIENT.process_result(cast(Any, request_result))
[docs]
def get_invoices(
policy_id: str | None = None,
bill_from_date: str | None = None,
bill_to_date: str | None = None,
due_from_date: str | None = None,
due_to_date: str | None = None,
sorting_order: str | None = None,
page_number: int | None = None,
page_size: int | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Retrieve invoices with optional policy and date filters.
POST /api/v2/accounting/get_invoices
"""
LOGGER.debug("Getting invoices for policy_id=%s", policy_id)
request_json: dict[str, Any] = {}
if policy_id is not None:
request_json["policy_id"] = policy_id
if bill_from_date is not None:
request_json["bill_from_date"] = bill_from_date
if bill_to_date is not None:
request_json["bill_to_date"] = bill_to_date
if due_from_date is not None:
request_json["due_from_date"] = due_from_date
if due_to_date is not None:
request_json["due_to_date"] = due_to_date
if sorting_order is not None:
request_json["sorting_order"] = sorting_order
if page_number is not None:
request_json["page_number"] = page_number
if page_size is not None:
request_json["page_size"] = page_size
request_result: BaseHTTPResponse | HTTPResponse | None = API_CLIENT.do_request(
path="/api/v2/accounting/get_invoices",
json=request_json,
**kwargs,
)
return API_CLIENT.process_result(cast(Any, request_result))
[docs]
def run_rescind_underwriting_cancellation_pending_logic(
revision_id: str,
old_status: str,
date_cursor: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Run rescind underwriting cancellation-pending logic for a revision.
POST /api/v2/accounting/run_rescind_underwriting_cancellation_pending_logic
"""
LOGGER.debug(
"Running rescind underwriting cancellation pending logic for revision_id=%s",
revision_id,
)
request_json: dict[str, Any] = {
"revision_id": revision_id,
"old_status": old_status,
}
if date_cursor is not None:
request_json["date_cursor"] = date_cursor
request_result: BaseHTTPResponse | HTTPResponse | None = API_CLIENT.do_request(
path="/api/v2/accounting/run_rescind_underwriting_cancellation_pending_logic",
json=request_json,
**kwargs,
)
return API_CLIENT.process_result(cast(Any, request_result))
__all__ = [
"get_accounting_deliverable",
"get_invoices",
"run_rescind_underwriting_cancellation_pending_logic",
]
# --- Autogenerated spec wrappers ---
[docs]
def export_account_histories(
policy_term_ids: list[str] | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Export Account Histories.
POST /api/v2/accounting/export_account_histories
"""
request_json: dict[str, Any] = {
"policy_term_ids": policy_term_ids,
}
filtered_json = {k: v for k, v in request_json.items() if v is not None}
request_result = API_CLIENT.do_request(
path="/api/v2/accounting/export_account_histories",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/accounting/export_account_histories"
)
[docs]
def retrieve_outstanding_invoices(
transaction_date_time_from: str | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Retrieve Outstanding Invoices.
POST /api/v2/accounting/retrieve_outstanding_invoices
"""
request_json: dict[str, Any] = {
"transaction_date_time_from": transaction_date_time_from,
}
filtered_json = {k: v for k, v in request_json.items() if v is not None}
request_result = API_CLIENT.do_request(
path="/api/v2/accounting/retrieve_outstanding_invoices",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/accounting/retrieve_outstanding_invoices"
)
[docs]
def set_return_premium_to_export(
return_premium_id: Any | None = None,
**kwargs: Unpack[RequestParameters],
) -> Any:
"""Set Return Premium To Export.
POST /api/v2/accounting/set_return_premium_to_export
"""
request_json: dict[str, Any] = {"return_premium_id": return_premium_id}
filtered_json = {k: v for k, v in request_json.items() if v is not None}
request_result = API_CLIENT.do_request(
path="/api/v2/accounting/set_return_premium_to_export",
json=filtered_json,
method="POST",
**kwargs,
)
return API_CLIENT.process_result(
request_result, endpoint="/api/v2/accounting/set_return_premium_to_export"
)
__all__.extend(
[
"export_account_histories",
"retrieve_outstanding_invoices",
"set_return_premium_to_export",
]
)