from django.urls import path
from . import views
from . import views_accounting as va
from . import views_extended as ve
from . import views_petty_cash as vpc
from rest_framework.authtoken.views import obtain_auth_token

urlpatterns = [
    # ---- Existing views -----------------------------------------------
    path('finance-accountant/', views.finance_accountant),
    path('finance-reporting/', views.finance_reporting),
    path('finance-sale/', views.finance_sale),
    path('finance-purchase-orders/', views.finance_purchase_orders),
    path('finance-payroll-sheet/', views.finance_payroll_sheet),
    path('finance-and-accounting-dashboard/', views.finance_and_accounting_dashboard),
    path('create-account/', views.create_account),
    path('create-expense/', views.create_expense),
    path('create-deposit/', views.create_deposit),
    path('create-loan-portfolio/', views.create_loan_portfolio),
    path('get-expense-creation-items/', views.get_expense_creation_items),
    path('create-order-payment/', views.create_order_payment),
    path('approve-customer-order/', views.approve_customer_order),
    path('cancel-customer-order/', views.cancel_customer_order),
    path('edit-account/', views.edit_account),
    path('delete-account/', views.delete_account),
    path('edit-loan-portfolio/', views.edit_loan_portfolio),
    path('delete-loan-portfolio/', views.delete_loan_portfolio),
    path('approve-purchase-order/', views.approve_purchase_order),
    path('cancel-purchase-order-approval/', views.cancel_purchase_order_approval),
    path('finance-edit-payroll-sheet/', views.finance_edit_payroll_sheet),
    path('create-customer-order-invoice/', views.create_customer_order_invoice),
    path('create-asset/', views.create_asset),
    path('create-landed-cost-expense/', views.create_landed_cost_expense),
    path('generate-profit-and-loss-statement/', views.generate_profit_and_loss_statement),
    path('create-dividend-payment/', views.create_dividend_payment),
    path('delete-dividend-payment/', views.delete_dividend_payment),
    path('generate-balance-sheet/', views.generate_balance_sheet),
    path('generate-cash-flow-statement/', views.generate_cash_flow_statement),
    path('delete-deposit/', views.delete_deposit),
    path('delete-expense/', views.delete_expense),
    path('delete-asset/', views.delete_asset),
    path('edit-asset/', views.edit_asset),
    path('edit-dividend/', views.edit_dividend_payment),

    # ---- Account type setup -------------------------------------------
    path('get-account-types/', va.get_account_types),
    path('setup-default-account-types/', va.setup_default_account_types),
    path('setup-default-chart-of-accounts/', va.setup_default_chart_of_accounts),

    # ---- Enhanced Chart of Accounts -----------------------------------
    path('get-chart-of-accounts-enhanced/', va.get_chart_of_accounts_enhanced),
    path('create-account-enhanced/', va.create_account_enhanced),
    path('edit-account-enhanced/', va.edit_account_enhanced),
    path('get-bank-accounts/', va.get_bank_accounts),
    path('create-bank-account/', va.create_bank_account),
    path('edit-bank-account/', va.edit_bank_account),
    path('delete-bank-account/', va.delete_bank_account),

    # ---- Account Mappings ---------------------------------------------
    path('get-account-mappings/', va.get_account_mappings),
    path('save-account-mapping/', va.save_account_mapping),
    path('delete-account-mapping/', va.delete_account_mapping),

    # ---- Manual Journal Entries ---------------------------------------
    path('get-manual-journal-entries/', va.get_manual_journal_entries),
    path('create-manual-journal-entry/', va.create_manual_journal_entry),
    path('post-manual-journal-entry/', va.post_manual_journal_entry),
    path('reverse-manual-journal-entry/', va.reverse_manual_journal_entry),
    path('delete-manual-journal-entry/', va.delete_manual_journal_entry),

    # ---- General Ledger -----------------------------------------------
    path('get-account-history/', va.get_account_history),
    path('generate-general-ledger/', va.generate_general_ledger),

    # ---- Advanced Financial Reports -----------------------------------
    path('generate-trial-balance/', va.generate_trial_balance),
    path('generate-pl-from-ledger/', va.generate_pl_from_ledger),
    path('generate-balance-sheet-from-ledger/', va.generate_balance_sheet_from_ledger),
    path('generate-cash-flow-from-ledger/', va.generate_cash_flow_from_ledger),
    path('generate-journal-from-ledger/', va.generate_journal_from_ledger),

    # ---- Ageing Reports -----------------------------------------------
    path('generate-ar-ageing/', va.generate_ar_ageing),
    path('generate-ap-ageing/', va.generate_ap_ageing),

    # ---- Accounting Periods -------------------------------------------
    path('get-accounting-periods/', va.get_accounting_periods),
    path('create-accounting-period/', va.create_accounting_period),
    path('edit-accounting-period/', va.edit_accounting_period),
    path('lock-unlock-accounting-period/', va.lock_unlock_accounting_period),
    path('delete-accounting-period/', va.delete_accounting_period),

    # ---- Accounting Settings ------------------------------------------
    path('get-accounting-settings/', va.get_accounting_settings),
    path('save-accounting-settings/', va.save_accounting_settings),

    # ---- Finance Customer & Supplier (AR/AP) ----------------------------
    path('finance-customer-profiles/', va.finance_customer_profiles),
    path('finance-view-single-customer/', va.finance_view_single_customer),
    path('finance-edit-customer-credit/', va.finance_edit_customer_credit),
    path('finance-supplier-list/', va.finance_supplier_list),

    # ---- Extended Finance Features ------------------------------------
    path('get-currency-exchange-rates/', ve.get_currency_exchange_rates),
    path('save-currency-exchange-rate/', ve.save_currency_exchange_rate),
    path('get-exchange-loss-report/', ve.get_exchange_loss_report),
    path('generate-pl-month-on-month/', ve.generate_pl_month_on_month),
    path('close-fiscal-year/', ve.close_fiscal_year),
    path('get-finance-audit-logs/', ve.get_finance_audit_logs),
    path('create-vendor-invoice/', ve.create_vendor_invoice),
    path('get-vendor-invoices/', ve.get_vendor_invoices),
    path('get-vat-registers/', ve.get_vat_registers),
    path('import-mpesa-statement/', ve.import_mpesa_statement),
    path('get-mpesa-reconciliation/', ve.get_mpesa_reconciliation),
    path('run-depreciation-schedule/', ve.run_depreciation_schedule),
    path('get-tax-loss-carry-forwards/', ve.get_tax_loss_carry_forwards),
    path('generate-payment-reminders/', ve.generate_payment_reminders),
    path('get-pending-refunds/', ve.get_pending_refunds),
    path('approve-refund/', ve.approve_refund),
    path('reject-refund/', ve.reject_refund),
    path('convert-quotation-to-order/', ve.convert_quotation_to_order),

    # ---- Phase 2: FX revaluation, WHT, batch pay, Daraja, reminders -----
    path('post-fx-revaluation/', ve.post_fx_revaluation_view),
    path('get-withholding-register/', ve.get_withholding_register),
    path('generate-withholding-register/', ve.generate_withholding_register),
    path('update-withholding-entry/', ve.update_withholding_entry),
    path('get-batch-payment-candidates/', ve.get_batch_payment_candidates),
    path('run-batch-payment/', ve.run_batch_payment),
    # M-Pesa Daraja credentials are configured under System Administration →
    # Integrations. This public callback stays here as it performs finance
    # reconciliation (writes MpesaStatementLine + matches the GL).
    path('mpesa-c2b-confirmation/', ve.mpesa_c2b_confirmation),
    path('dispatch-payment-reminders/', ve.dispatch_payment_reminders),
    path('get-payment-reminders/', ve.get_payment_reminders),

    # ---- Petty Cash ---------------------------------------------------
    path('petty-cash-dashboard/', vpc.petty_cash_dashboard),
    path('petty-cash-funds/', vpc.petty_cash_funds),
    path('petty-cash-requests/', vpc.petty_cash_requests),
    path('petty-cash-disburse/', vpc.petty_cash_disburse),
    path('petty-cash-retire/', vpc.petty_cash_retire),
    path('petty-cash-replenish/', vpc.petty_cash_replenish),
    path('petty-cash-reconcile/', vpc.petty_cash_reconcile),
    path('petty-cash-report/', vpc.petty_cash_report),
    path('petty-cash-audit-logs/', vpc.petty_cash_audit_logs),
    path('petty-cash-workbench/', vpc.petty_cash_workbench),
]
