from django.urls import path, include
from rest_framework.routers import DefaultRouter

from .views import (
    AccountViewSet, FundViewSet, TransactionViewSet, JournalEntryViewSet,
    JournalControlView, GeneralLedgerView, TrialBalanceView,
    BudgetVsActualView, DashboardView,
    StatementOfActivitiesView, StatementOfFinancialPositionView,
    StatementOfChangesInNetAssetsView, StatementOfCashFlowsView,
    ReceiptsAndDisbursementsView,
    SaleViewSet, SalesAccountingSettingsViewSet,
)

router = DefaultRouter()
router.register(r"accounting/accounts", AccountViewSet, basename="accounting-account")
router.register(r"accounting/funds", FundViewSet, basename="accounting-fund")
router.register(r"accounting/transactions", TransactionViewSet, basename="accounting-transaction")
router.register(r"accounting/journal-entries", JournalEntryViewSet, basename="accounting-journal")
router.register(r"accounting/sales", SaleViewSet, basename="accounting-sale")
router.register(r"accounting/sales-settings", SalesAccountingSettingsViewSet, basename="accounting-sales-settings")

urlpatterns = [
    path("", include(router.urls)),
    path("accounting/journal-control/", JournalControlView.as_view(), name="accounting-journal-control"),
    path("accounting/general-ledger/", GeneralLedgerView.as_view(), name="accounting-general-ledger"),
    path("accounting/trial-balance/", TrialBalanceView.as_view(), name="accounting-trial-balance"),
    path("accounting/budget-vs-actual/", BudgetVsActualView.as_view(), name="accounting-budget-vs-actual"),
    path("accounting/dashboard/", DashboardView.as_view(), name="accounting-dashboard"),
    # ISAK 335 statements (Indonesian non-profit reporting; renumbered from ISAK 35, effective 2024).
    path("accounting/isak335/financial-position/", StatementOfFinancialPositionView.as_view(), name="accounting-isak335-position"),
    path("accounting/isak335/activities/", StatementOfActivitiesView.as_view(), name="accounting-isak335-activities"),
    path("accounting/isak335/changes-net-assets/", StatementOfChangesInNetAssetsView.as_view(), name="accounting-isak335-changes"),
    path("accounting/isak335/cash-flows/", StatementOfCashFlowsView.as_view(), name="accounting-isak335-cashflows"),
    # Internal per-project receipts/disbursements report (Laporan Penerimaan dan Pengeluaran).
    path(
        "accounting/receipts-disbursements/",
        ReceiptsAndDisbursementsView.as_view(),
        name="accounting-receipts-disbursements",
    ),
]
