"""API Client for ows-ledger.""" import requests class LedgerAPIClient: """API Client for ows-ledger.""" def __init__(self, base_url, headers): """Initialize ows_ledger_APIClient class.""" self.base_url = base_url self.headers = headers def post_ledger_bulk(self, body): """Execute a POST against /ledger/bulk/ endpoint.""" endpoint = '{}/ledger/bulk'.format(self.base_url) return requests.post(endpoint, headers=self.headers, json=body) def post_ledger_accounting_run_vat(self, body): """Execute a POST against /ledger-accounting-run-vat/bulk endpoint.""" endpoint = '{}/ledger-accounting-run-vat/bulk'.format(self.base_url) return requests.post(endpoint, headers=self.headers, json=body) def get_ledger_accounting_run_vat_period_overview(self, period_id): """GET /ledger-accounting-run-vat/accounting-period//overview .""" endpoint = '{}/ledger-accounting-run-vat/accounting-period/{}/overview'.format( self.base_url, period_id ) return requests.get(endpoint, headers=self.headers) def get_ledger_account_current_balance(self, account_id): """GET /ledger-account/account/{account_id}/current-balance.""" endpoint = '{}/ledger-account/account/{}/current-balance'.format( self.base_url, account_id ) return requests.get(endpoint, headers=self.headers) def get_ledger_account(self, account_id): """Execute a GET against /ledger-account/account/{account_id}.""" endpoint = '{}/ledger-account/account/{}'.format(self.base_url, account_id) return requests.get(endpoint, headers=self.headers) def get_ledger_account_by_acc_period(self, accounting_period_id): """GET /ledger-account/accounting-period/{accounting_period_id}/accounts.""" endpoint = '{}/ledger-account/accounting-period/{}/accounts'.format( self.base_url, accounting_period_id ) return requests.get(endpoint, headers=self.headers) def get_bulk_accounts_balance(self, params=None): """Execute a GET against /bulk/accounts-balance.""" endpoint = '{}/bulk/accounts-balance'.format(self.base_url) return requests.get(endpoint, headers=self.headers, params=params) def get_acc_run_balance(self, run_id): """Execute a GET against /ledger-accounting-run-balance/.""" endpoint = '{}/ledger-accounting-run-balance/{}'.format(self.base_url, run_id) return requests.get(endpoint, headers=self.headers) def post_acc_run_balance_bulk(self, run_id, body, params=None): """Execute a POST against /ledger-accounting-run-balance//bulk.""" endpoint = '{}/ledger-accounting-run-balance/{}/bulk'.format( self.base_url, run_id ) return requests.post(endpoint, headers=self.headers, json=body, params=params) def get_reference_vat_rate(self): """Execute a GET against /reference-vat-rate/.""" endpoint = '{}/reference-vat-rate/'.format(self.base_url) return requests.get(endpoint, headers=self.headers) def get_acc_run_vat_by_period_and_category( self, period_id, vat_category, params=None ): """/ledger-accounting-run-vat/accounting-period/21/vat-category/vat_applied.""" endpoint = ( '{}/ledger-accounting-run-vat/accounting-period/{}/vat-category/{}'.format( self.base_url, period_id, vat_category ) ) return requests.get(endpoint, headers=self.headers, params=params) def get_ledger_accounting_run_balance_by_period_and_category( self, period_id, category ): """/ledger-accounting-run-balance/accounting-period//vat-category/.""" endpoint = ( '{}/ledger-accounting-run-balance/' 'accounting-period/{}/vat-category/{}'.format( self.base_url, period_id, category ) ) return requests.get(endpoint, headers=self.headers) def post_reserve_taken_bulk(self, body): """POST /ledger-reserve-taken/bulk .""" endpoint = '{}/ledger-reserve-taken/bulk'.format(self.base_url) return requests.post(endpoint, headers=self.headers, json=body) def get_reserves_taken_by_run_id(self, acc_run_id): """GET /ledger-reserve-taken/accounting-run/{acc_run_id}/ .""" endpoint = '{}/ledger-reserve-taken/accounting-run/{}/'.format( self.base_url, acc_run_id ) return requests.get(endpoint, headers=self.headers) def get_reserve_release_schedule(self, statement_period_id): """GET get_reserve_release_schedule .""" endpoint = ( '{}/ledger-reserve-release-schedule/statement-period/{}/release'.format( self.base_url, statement_period_id ) ) return requests.get(endpoint, headers=self.headers) def post_reserve_release_schedule(self, body): """POST /ledger-reserve-release-schedule/bulk .""" endpoint = '{}/ledger-reserve-release-schedule/bulk'.format(self.base_url) return requests.post(endpoint, headers=self.headers, json=body) def post_ledger_adjustment_applied_bulk(self, body): """Bulk create ledger_adjustment_applied entries .""" endpoint = '{}/ledger-adjustment-applied/bulk'.format(self.base_url) return requests.post(endpoint, headers=self.headers, json=body) def get_pending_adjustments_by_statement_period(self, statement_period_id): """GET /ledger-adjustment/statement-period/{}/pending .""" endpoint = '{}/ledger-adjustment/statement-period/{}/pending'.format( self.base_url, statement_period_id ) return requests.get(endpoint, headers=self.headers) def get_ledger_adjustments(self, params=None): """GET /ledger-adjustments .""" endpoint = '{}/ledger-adjustments'.format(self.base_url) return requests.get(endpoint, headers=self.headers, params=params) def post_contract_advance_paid(self, contract_advance_id, body): """Create the ledger entries for a contract advance .""" endpoint = '{}/ledger-contract-advance-applied/contract-advance/{}/paid'.format( self.base_url, contract_advance_id ) return requests.post(endpoint, headers=self.headers, json=body) def post_ledger_reserve_release_bulk(self, body): """POST /ledger-reserve-release/bulk .""" endpoint = '{}/ledger-reserve-release/bulk'.format(self.base_url) return requests.post(endpoint, headers=self.headers, json=body) def get_reference_adjustment_types(self): """GET /reference-adjustment-types .""" endpoint = '{}/reference-adjustment-types'.format(self.base_url) return requests.get(endpoint, headers=self.headers) def get_reference_adjustment_types_by_id(self, reference_adjustment_type_id): """GET /reference-adjustment-types/{reference_adjustment_type_id} .""" endpoint = '{}/reference-adjustment-types/{}'.format( self.base_url, reference_adjustment_type_id ) return requests.get(endpoint, headers=self.headers) def get_payable_balance_by_account_id(self, account_id): """GET /ledger-account-contract/account/{account_id}/payable-balance .""" endpoint = '{}/ledger-account-contract/account/{}/payable-balance'.format( self.base_url, account_id ) return requests.get(endpoint, headers=self.headers) def post_ledger_correction_bulk(self, body): """POST /ledger-correction/bulk .""" endpoint = '{}/ledger-correction/bulk'.format(self.base_url) return requests.post(endpoint, headers=self.headers, json=body) def get_contract_advance_applied_by_advance_applied_id( self, ledger_contract_advance_applied_id ): """GET /ledger-contract-advance-applied// .""" endpoint = '{}/ledger-contract-advance-applied/{}'.format( self.base_url, ledger_contract_advance_applied_id ) return requests.get(endpoint, headers=self.headers) def get_ledger_contract_advance_applied_by_advance_id(self, contract_advance_id): """GET /ledger-contract-advance-applied/contract-advance// .""" endpoint = '{}/ledger-contract-advance-applied/contract-advance/{}'.format( self.base_url, contract_advance_id ) return requests.get(endpoint, headers=self.headers) def get_account_ledger_info(self, account_id): """GET /ledger-accounts/account/{account_id}/ .""" endpoint = '{}/ledger-accounts/account/{}/'.format(self.base_url, account_id) return requests.get(endpoint, headers=self.headers) def get_balances_by_contract_id_list(self, params=None): """GET /bulk/contracts/closed-balance/ .""" endpoint = '{}/bulk/contracts/closed-balance'.format(self.base_url) return requests.get(endpoint, headers=self.headers, params=params) def get_ledger_entries_by_account_with_params(self, account_id, params=None): """GET /ledger-account-contract/account/ with params .""" endpoint = '{}/ledger-account-contracts/account/{}'.format( self.base_url, account_id ) return requests.get(endpoint, headers=self.headers, params=params)