tin-spa 20.14.113 → 20.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/index.d.ts +80 -10
- package/fesm2022/{tin-spa-accounting.module-Cg4vWaJE.mjs → tin-spa-accounting.module-CamqAeW_.mjs} +71 -83
- package/fesm2022/tin-spa-accounting.module-CamqAeW_.mjs.map +1 -0
- package/fesm2022/{tin-spa-agent-page.component-DJvMPjCQ.mjs → tin-spa-agent-page.component-DTYn54p0.mjs} +2 -2
- package/fesm2022/{tin-spa-agent-page.component-DJvMPjCQ.mjs.map → tin-spa-agent-page.component-DTYn54p0.mjs.map} +1 -1
- package/fesm2022/{tin-spa-agent.component-D0CGGnGZ.mjs → tin-spa-agent.component-CZKMWl3r.mjs} +2 -2
- package/fesm2022/{tin-spa-agent.component-D0CGGnGZ.mjs.map → tin-spa-agent.component-CZKMWl3r.mjs.map} +1 -1
- package/fesm2022/{tin-spa-assets.module-qIWNwJ2E.mjs → tin-spa-assets.module-BcOjlhfm.mjs} +16 -11
- package/fesm2022/tin-spa-assets.module-BcOjlhfm.mjs.map +1 -0
- package/fesm2022/tin-spa-core.mjs +426 -112
- package/fesm2022/tin-spa-core.mjs.map +1 -1
- package/fesm2022/{tin-spa-general-erp.module-CoYxceLj.mjs → tin-spa-general-erp.module-b6SjnWUM.mjs} +2 -2
- package/fesm2022/{tin-spa-general-erp.module-CoYxceLj.mjs.map → tin-spa-general-erp.module-b6SjnWUM.mjs.map} +1 -1
- package/fesm2022/{tin-spa-hr.module-CKPZ9ZOj.mjs → tin-spa-hr.module-DkGVK2lX.mjs} +2 -2
- package/fesm2022/{tin-spa-hr.module-CKPZ9ZOj.mjs.map → tin-spa-hr.module-DkGVK2lX.mjs.map} +1 -1
- package/fesm2022/tin-spa-http.mjs +32 -1
- package/fesm2022/tin-spa-http.mjs.map +1 -1
- package/fesm2022/{tin-spa-inventory.module-DRKAcNau.mjs → tin-spa-inventory.module-CYWBqSCd.mjs} +16 -11
- package/fesm2022/tin-spa-inventory.module-CYWBqSCd.mjs.map +1 -0
- package/fesm2022/{tin-spa-loans.module-BTDmgrWo.mjs → tin-spa-loans.module-BDh-T-Ng.mjs} +2 -2
- package/fesm2022/{tin-spa-loans.module-BTDmgrWo.mjs.map → tin-spa-loans.module-BDh-T-Ng.mjs.map} +1 -1
- package/fesm2022/{tin-spa-manufacturing.module-CHta6oV_.mjs → tin-spa-manufacturing.module-9Ti-BFb2.mjs} +2 -2
- package/fesm2022/{tin-spa-manufacturing.module-CHta6oV_.mjs.map → tin-spa-manufacturing.module-9Ti-BFb2.mjs.map} +1 -1
- package/fesm2022/{tin-spa-payroll.module-CZ_GO1jF.mjs → tin-spa-payroll.module-54Efumv_.mjs} +9 -6
- package/fesm2022/{tin-spa-payroll.module-CZ_GO1jF.mjs.map → tin-spa-payroll.module-54Efumv_.mjs.map} +1 -1
- package/fesm2022/{tin-spa-purchasing.module-NCdwquaF.mjs → tin-spa-purchasing.module-Bq8JnsyM.mjs} +16 -11
- package/fesm2022/tin-spa-purchasing.module-Bq8JnsyM.mjs.map +1 -0
- package/fesm2022/{tin-spa-sales.module-D0uEGJW7.mjs → tin-spa-sales.module-nyrJulzD.mjs} +40 -17
- package/fesm2022/tin-spa-sales.module-nyrJulzD.mjs.map +1 -0
- package/fesm2022/{tin-spa-tenancy-erp.module-GwIv8Wbc.mjs → tin-spa-tenancy-erp.module-DGATA-p_.mjs} +2 -2
- package/fesm2022/{tin-spa-tenancy-erp.module-GwIv8Wbc.mjs.map → tin-spa-tenancy-erp.module-DGATA-p_.mjs.map} +1 -1
- package/fesm2022/{tin-spa-tin-spa-Cqe5hYTr.mjs → tin-spa-tin-spa-BMy59BVn.mjs} +1428 -219
- package/fesm2022/tin-spa-tin-spa-BMy59BVn.mjs.map +1 -0
- package/fesm2022/tin-spa.mjs +1 -1
- package/http/index.d.ts +3 -1
- package/index.d.ts +144 -24
- package/package.json +1 -1
- package/src/tin-styles.css +27 -0
- package/fesm2022/tin-spa-accounting.module-Cg4vWaJE.mjs.map +0 -1
- package/fesm2022/tin-spa-assets.module-qIWNwJ2E.mjs.map +0 -1
- package/fesm2022/tin-spa-inventory.module-DRKAcNau.mjs.map +0 -1
- package/fesm2022/tin-spa-purchasing.module-NCdwquaF.mjs.map +0 -1
- package/fesm2022/tin-spa-sales.module-D0uEGJW7.mjs.map +0 -1
- package/fesm2022/tin-spa-tin-spa-Cqe5hYTr.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tin-spa-accounting.module-CamqAeW_.mjs","sources":["../../../projects/tin-spa/src/lib/pages/accounting/accounts/accounts.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/aggregates/aggregates.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/aging/aging.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/supplier-aging/supplier-aging.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/transaction-types/transaction-types.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/transactions/transactions.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/invoices/invoices.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/outstanding-invoices/outstanding-invoices.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/reports/reports.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/tax-rates/tax-rates.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/standing-orders/standing-orders.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/currencies/currencies.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/budgets/budgets.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/budget-vs-actual/budget-vs-actual.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/accounting-dashboard/accounting-dashboard.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/invoice-dashboard/invoice-dashboard.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/credit-notes/credit-notes.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/vat-return/vat-return.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/fiscal-periods/fiscal-periods.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/receipts/receipts.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/bank-reconciliation/statement-import-dialog.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/bank-reconciliation/reconcile-dialog.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/bank-reconciliation/bank-reconciliation.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/tenant-transfers/tenant-transfers.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/tenant-transfers/tenant-transfers.component.html","../../../projects/tin-spa/src/lib/pages/accounting/revenue-schedules/revenue-schedule-dialog.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/revenue-schedules/revenue-schedules.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/quotes/quotes.component.ts","../../../projects/tin-spa/src/lib/pages/accounting/rate-card/rate-card.component.ts","../../../projects/tin-spa/src/lib/modules/accounting/accounting-routing.module.ts","../../../projects/tin-spa/src/lib/modules/accounting/accounting.module.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\nimport { TableConfig, TileConfig, ApiResponse } from 'tin-spa/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { DataServiceLib } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-accounts',\n template: `\n <h4>Accounts</h4>\n <hr>\n\n <spa-tiles [config]=\"accountTileConfig\"></spa-tiles>\n\n <spa-tabs [tableConfigs]=\"accountTabConfigs\"></spa-tabs>\n `,\n standalone: false\n})\nexport class AccountsComponent implements OnInit {\n\n constructor(private dataServiceLib: DataServiceLib, public accountingService: AccountingService) {\n this.accountTabConfigs = [\n {\n ...this.accountingService.accountsTableConfig,\n tabTitle: 'Assets',\n loadAction: { url: 'accounts/type/asset' },\n countAction: { url: 'accounts/count/asset' }\n },\n {\n ...this.accountingService.accountsTableConfig,\n tabTitle: 'Liabilities',\n loadAction: { url: 'accounts/type/liability' },\n countAction: { url: 'accounts/count/liability' }\n },\n {\n ...this.accountingService.accountsTableConfig,\n tabTitle: 'Income',\n loadAction: { url: 'accounts/type/income' },\n countAction: { url: 'accounts/count/income' }\n },\n {\n ...this.accountingService.accountsTableConfig,\n tabTitle: 'Expenses',\n loadAction: { url: 'accounts/type/expense' },\n countAction: { url: 'accounts/count/expense' }\n },\n {\n ...this.accountingService.accountsTableConfig,\n tabTitle: 'Equity',\n loadAction: { url: 'accounts/type/equity' },\n countAction: { url: 'accounts/count/equity' }\n },\n // Removed: Aggregate tab - no longer used\n ];\n }\n\n ngOnInit(): void {\n }\n\n accountTabConfigs: TableConfig[];\n\n // Changed: Tile config with Cash, Bank, Income MTD, and Expenses MTD\n accountTileConfig: TileConfig = {\n tiles: [\n { name: 'cashBalance', alias: 'Cash', color: '#4CAF50', icon: 'payments', style: 'icon', info: 'Total balance of all cash accounts' },\n { name: 'bankBalance', alias: 'Bank', color: '#2196F3', icon: 'account_balance', style: 'icon', info: 'Total balance of all bank accounts' },\n { name: 'mtdIncome', alias: 'Income (MTD)', color: '#9C27B0', icon: 'trending_up', style: 'icon', info: 'Month-to-date income from revenue accounts' },\n { name: 'mtdExpenses', alias: 'Expenses (MTD)', color: '#F44336', icon: 'trending_down', style: 'icon', info: 'Month-to-date expenses' },\n ],\n loadAction: { url: 'accounts/summary/tiles' },\n loadInit: true\n };\n}\n","// Accounting Aggregates component with monthly aggregated financial data\nimport { Component, OnInit } from '@angular/core';\nimport { TableConfig, ApiResponse } from 'tin-spa/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { DataServiceLib } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-aggregates',\n template: `\n <h4>Aggregates</h4>\n <hr>\n\n <spa-tabs [tableConfigs]=\"aggregateTabConfigs\"></spa-tabs>\n `,\n standalone: false\n})\nexport class AggregatesComponent implements OnInit {\n\n constructor(private dataServiceLib: DataServiceLib, public accountingService: AccountingService) {\n this.aggregateTabConfigs = [\n {\n ...this.accountingService.aggregatesTableConfig,\n tabTitle: 'Monthly Summary',\n loadAction: { url: 'accounts/aggregates/monthly' },\n },\n {\n ...this.accountingService.cashFlowAggregatesTableConfig,\n tabTitle: 'Cash Flow',\n loadAction: { url: 'accounts/aggregates/cashflow' },\n },\n {\n ...this.accountingService.cumulativeAggregatesTableConfig,\n tabTitle: 'Cumulative Balances',\n loadAction: { url: 'accounts/aggregates/cumulative' },\n },\n {\n ...this.accountingService.balanceSheetAggregatesTableConfig,\n tabTitle: 'Balance Sheet',\n loadAction: { url: 'accounts/aggregates/balancesheet' },\n }\n ];\n }\n\n ngOnInit(): void {\n }\n\n aggregateTabConfigs: TableConfig[];\n}\n","// Aging report component for accounts receivable tracking\nimport { Component, inject, OnInit } from '@angular/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { ApiResponse, TableConfig, TileConfig } from 'tin-spa/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { MessageService } from 'tin-spa/core'; // Changed: Confirm + toast for provision action\nimport { ApiErrorService } from 'tin-spa/core'; // Added: the summary tiles failed silently and the provision action toasted raw server text (WS-6 Phase 4)\n\n@Component({\n selector: 'spa-aging',\n template: `\n <div style=\"display: flex; align-items: center; justify-content: space-between;\">\n <h4>Accounts Receivable Aging</h4>\n <!-- Changed: Post IFRS 9 bad-debt provision delta from the aging matrix -->\n <button mat-stroked-button color=\"warn\" (click)=\"postProvision()\"><mat-icon>account_balance</mat-icon> Post Bad-Debt Provision</button>\n </div>\n <hr>\n <div *ngIf=\"summaryData\" class=\"mt-3 mb-3\">\n <spa-tiles [config]=\"tileConfig\" [data]=\"summaryData\"></spa-tiles>\n </div>\n \n <spa-tabs [tableConfigs]=\"agingTableConfigs\"></spa-tabs>\n `,\n standalone: false\n})\nexport class AgingComponent implements OnInit {\n\n public accountingService = inject(AccountingService);\n\n ngOnInit(): void {\n this.loadSummaryData();\n }\n\n summaryData: any;\n\n loadSummaryData(): void {\n this.dataServiceLib.CallApi({ url: 'invoices/aging-summary/x' }, '').subscribe((apiResponse: ApiResponse) => {\n if (apiResponse.success) {\n this.summaryData = apiResponse.data;\n } else {\n this.apiErrorService.presentAppFailure(apiResponse, 'load', 'invoices/aging-summary/x'); // Added: was silent. summaryData stayed undefined, the *ngIf dropped the whole tile strip, and an accounts-receivable page with NO aging totals reads as \"you are owed nothing\" rather than \"we could not work it out\"\n }\n });\n }\n\n // Changed: Post IFRS 9 bad-debt provision — confirms, calls invoices provision custom action, shows returned summary\n postProvision(): void {\n this.messageService.confirm('Post the bad-debt provision? This posts the allowance delta per the aging matrix as a GL journal.').subscribe((result) => {\n if (result == 'yes') {\n this.dataServiceLib.CallApi({ url: 'invoices?action=provision', method: 'post' }, {}).subscribe((apiResponse: ApiResponse) => {\n // Changed: REPLACES the old `'Error: ' + apiResponse.message` toast rather than layering on it.\n // That string prefixed the server's raw words with a second word for \"error\" and pushed the useful\n // part right; a leaked SQL fragment reached the user unchanged. 'action' rather than 'submit' —\n // this is a confirmed page button, not a form, so the 'submit' copy would describe a screen the\n // user is not looking at.\n if (apiResponse.success) { this.messageService.toast(apiResponse.message); this.loadSummaryData(); }\n else this.apiErrorService.presentAppFailure(apiResponse, 'action', 'invoices?action=provision');\n });\n }\n });\n }\n\n private messageService = inject(MessageService); // Changed: Injected for provision confirm/toast\n private apiErrorService = inject(ApiErrorService); // Changed: Injected for the summary load and the provision failure\n\n agingTableConfigs: TableConfig[];\n tileConfig = this.accountingService.agingTileConfig;\n\n constructor(private dataServiceLib: DataServiceLib) {\n\n // this.tileConfig = this.accountingService.agingTileConfig;\n this.agingTableConfigs = [\n {\n ...this.accountingService.agingBaseTableConfig,\n tabTitle: 'Current',\n loadAction: { url: 'invoices/aging-current/x' },\n countAction: { url: 'invoices/count/aging-current' }\n },\n {\n ...this.accountingService.agingBaseTableConfig,\n tabTitle: '1-30 Days',\n loadAction: { url: 'invoices/aging-30/x' },\n countAction: { url: 'invoices/count/aging-30' }\n },\n {\n ...this.accountingService.agingBaseTableConfig,\n tabTitle: '31-60 Days',\n loadAction: { url: 'invoices/aging-60/x' },\n countAction: { url: 'invoices/count/aging-60' }\n },\n {\n ...this.accountingService.agingBaseTableConfig,\n tabTitle: '61-90 Days',\n loadAction: { url: 'invoices/aging-90/x' },\n countAction: { url: 'invoices/count/aging-90' }\n },\n {\n ...this.accountingService.agingBaseTableConfig,\n tabTitle: '90+ Days',\n loadAction: { url: 'invoices/aging-90plus/x' },\n countAction: { url: 'invoices/count/aging-90plus' }\n }\n ];\n }\n\n}\n","// AP Aging report component for accounts payable tracking — mirrors AR AgingComponent pattern\nimport { Component, inject, OnInit } from '@angular/core';\nimport { PurchasingService } from 'tin-spa/core';\nimport { ApiResponse, TableConfig, TileConfig } from 'tin-spa/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { ApiErrorService } from 'tin-spa/core'; // Added: the AP summary tiles failed silently, exactly as the AR ones did (WS-6 Phase 4)\n\n@Component({\n selector: 'spa-supplier-aging',\n template: `\n <h4>Accounts Payable Aging</h4>\n <hr>\n <div *ngIf=\"summaryData\" class=\"mt-3 mb-3\">\n <spa-tiles [config]=\"tileConfig\" [data]=\"summaryData\"></spa-tiles>\n </div>\n\n <spa-tabs [tableConfigs]=\"agingTableConfigs\"></spa-tabs>\n `,\n standalone: false\n})\nexport class SupplierAgingComponent implements OnInit {\n\n public purchasingService = inject(PurchasingService);\n private apiErrorService = inject(ApiErrorService); // Changed: Injected so a failed summary load says so\n\n ngOnInit(): void {\n this.loadSummaryData();\n }\n\n summaryData: any;\n\n loadSummaryData(): void {\n this.dataServiceLib.CallApi({ url: 'purchases/aging-summary/x' }, '').subscribe((apiResponse: ApiResponse) => {\n if (apiResponse.success) {\n this.summaryData = apiResponse.data;\n } else {\n this.apiErrorService.presentAppFailure(apiResponse, 'load', 'purchases/aging-summary/x'); // Added: was silent. The tile strip vanished behind its *ngIf, so an accounts-payable page that could not compute its totals looked like a company that owes nothing\n }\n });\n }\n\n agingTableConfigs: TableConfig[];\n tileConfig = this.purchasingService.apAgingTileConfig;\n\n constructor(private dataServiceLib: DataServiceLib) {\n // Changed: Build 5-tab aging table layout using AP aging base config from PurchasingService\n this.agingTableConfigs = [\n {\n ...this.purchasingService.apAgingBaseTableConfig,\n tabTitle: 'Current',\n loadAction: { url: 'purchases/aging-current/x' },\n countAction: { url: 'purchases/count/aging-current' }\n },\n {\n ...this.purchasingService.apAgingBaseTableConfig,\n tabTitle: '1-30 Days',\n loadAction: { url: 'purchases/aging-30/x' },\n countAction: { url: 'purchases/count/aging-30' }\n },\n {\n ...this.purchasingService.apAgingBaseTableConfig,\n tabTitle: '31-60 Days',\n loadAction: { url: 'purchases/aging-60/x' },\n countAction: { url: 'purchases/count/aging-60' }\n },\n {\n ...this.purchasingService.apAgingBaseTableConfig,\n tabTitle: '61-90 Days',\n loadAction: { url: 'purchases/aging-90/x' },\n countAction: { url: 'purchases/count/aging-90' }\n },\n {\n ...this.purchasingService.apAgingBaseTableConfig,\n tabTitle: '90+ Days',\n loadAction: { url: 'purchases/aging-90plus/x' },\n countAction: { url: 'purchases/count/aging-90plus' }\n }\n ];\n }\n\n}\n","import { Component, OnInit, inject } from '@angular/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-transaction-types',\n template: '<spa-page [config]=\"pageConfig\"></spa-page>',\n standalone: false\n})\nexport class TransactionTypesComponent implements OnInit {\n private accountingService = inject(AccountingService);\n \n pageConfig: PageConfig = {\n title: 'Transaction Types',\n tableConfig: this.accountingService.transactionTypesTableConfig\n };\n\n ngOnInit(): void {\n }\n}\n","// Transactions page\n// Changed (journal-dialog-conform): the \"New Journal\" button used to be drawn HERE, in a flex row above <spa-page>,\n// which floated it on the app shell outside the page. It is now journalCreateButton on transactionsTableConfig with\n// inHeader: true, so the table header renders it in line with Create Transaction. The hand-rolled\n// JournalEntryDialogComponent it opened is gone — the button now carries the house details dialog config.\nimport { Component, OnInit, inject } from '@angular/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-transactions',\n template: `<spa-page [config]=\"pageConfig\"></spa-page>`,\n standalone: false\n})\nexport class TransactionsComponent implements OnInit {\n private accountingService = inject(AccountingService);\n\n pageConfig: PageConfig = {\n title: 'Transactions',\n tableConfig: this.accountingService.transactionsTableConfig,\n searchTableConfig: this.accountingService.transactionSearchTableConfig // Changed: Enable search mode with date range, description, account filters\n };\n\n ngOnInit(): void {\n }\n}\n","// Invoice management component for tin-spa library\nimport { HttpClient } from '@angular/common/http';\nimport { Component, OnInit, inject } from '@angular/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { HttpService } from 'tin-spa/core';\nimport { MessageService } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-invoices',\n template: '<spa-page [config]=\"pageConfig\" (actionClick)=\"actionClicked($event)\"></spa-page>',\n standalone: false\n})\nexport class InvoicesComponent implements OnInit {\n public accountingService = inject(AccountingService);\n private httpService = inject(HttpService);\n private http = inject(HttpClient);\n private messageService = inject(MessageService);\n\n pageConfig: PageConfig = {\n title: 'Invoices',\n tableConfig: this.accountingService.invoicesTableConfig\n };\n\n ngOnInit(): void {\n }\n\n // Handle action click events from the table\n actionClicked(event: { name: string, data: any }) {\n if (event.name === 'pdf') {\n this.messageService.confirm(`Download Invoice ?`).subscribe((result) => {\n if (result == \"yes\") {\n this.download(event.data);\n }\n });\n }\n }\n\n // Download invoice as PDF\n download(invoice: any) {\n this.http.post(`${this.httpService.apiUrl}invoices/pdf?action=x`, invoice,\n { responseType: 'blob' })\n .subscribe((response: Blob) => {\n const blob = new Blob([response], { type: 'application/pdf' });\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = `Invoice_${invoice.invoiceID}.pdf`;\n link.click();\n window.URL.revokeObjectURL(url);\n });\n }\n}\n","// Statement page (B4) — invoice history plus open-item customer/supplier statements with Excel/PDF export\n// Changed: the two open-item tabs were hand-written markup (a flex row of totals and a raw <table>). They are\n// now the library's own spa-tiles + spa-table, driven by config in AccountingService, so the page picks up\n// every table behaviour centrally: responsive minColumns, the filter box, money formatting and empty states.\n// The PDF and Excel downloads are untouched — both are produced SERVER-SIDE and nothing here contributes to them.\nimport { Component, OnInit, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { AccountingService } from 'tin-spa/core';\nimport { HttpService } from 'tin-spa/core';\nimport { PageConfig, TableConfig, TileConfig, Action } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-statement',\n template: `\n <mat-tab-group>\n <mat-tab label=\"Invoice History\">\n <div style=\"padding-top: 8px;\">\n <spa-page [config]=\"pageConfig\"></spa-page>\n </div>\n </mat-tab>\n\n <mat-tab label=\"Customer Statement\">\n <ng-container *ngTemplateOutlet=\"statementTab; context: { kind: 'customer' }\"></ng-container>\n </mat-tab>\n\n <mat-tab label=\"Supplier Statement\">\n <ng-container *ngTemplateOutlet=\"statementTab; context: { kind: 'supplier' }\"></ng-container>\n </mat-tab>\n </mat-tab-group>\n\n <ng-template #statementTab let-kind=\"kind\">\n <div style=\"padding: 16px 0;\">\n\n <!-- Changed: library inputs instead of raw mat-form-field markup — same three filters, same Run/Export/PDF rules -->\n <div style=\"display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 12px;\">\n <spa-select-lite [display]=\"state[kind].entityLabel\" [loadAction]=\"state[kind].listAction\" optionDisplay=\"name\" optionValue=\"value\" [required]=\"false\" [(value)]=\"state[kind].entityId\" width=\"240px\"></spa-select-lite><!-- optionDisplay/optionValue are NOT defaulted by spa-select-common; without them every option binds undefined and nothing can be selected -->\n <spa-date display=\"From\" width=\"170px\" [required]=\"false\" [value]=\"state[kind].from\" (valueChange)=\"state[kind].from = $event\"></spa-date>\n <spa-date display=\"To\" width=\"170px\" [required]=\"false\" [value]=\"state[kind].to\" (valueChange)=\"state[kind].to = $event\"></spa-date>\n <button mat-flat-button color=\"primary\" (click)=\"load(kind)\" [disabled]=\"!state[kind].entityId\">Run</button>\n <button mat-stroked-button (click)=\"export(kind)\" [disabled]=\"!state[kind].entityId\">\n <mat-icon>download</mat-icon> Export to Excel\n </button>\n <button mat-stroked-button *ngIf=\"kind === 'customer'\" (click)=\"exportPdf(kind)\" [disabled]=\"!state[kind].entityId\">\n <mat-icon>picture_as_pdf</mat-icon> Download PDF\n </button>\n </div>\n\n <!-- Changed: totals are spa-tiles, lines are spa-table. Nothing renders until a statement has been run,\n which is exactly what the old *ngIf on the results card did. -->\n <ng-container *ngIf=\"state[kind].data\">\n <spa-tiles [config]=\"state[kind].tileConfig\" [data]=\"state[kind].data\"></spa-tiles>\n <div style=\"margin-top: 12px;\">\n <spa-table [config]=\"state[kind].tableConfig\" [data]=\"state[kind].lines\" (refreshClick)=\"load(kind)\"></spa-table>\n </div>\n </ng-container>\n\n </div>\n </ng-template>\n `,\n standalone: false\n})\nexport class StatementComponent implements OnInit {\n public accountingService = inject(AccountingService);\n private httpService = inject(HttpService);\n private http = inject(HttpClient);\n\n pageConfig: PageConfig = {\n title: 'Statement',\n tableConfig: this.accountingService.statementTableConfig,\n searchTableConfig: this.accountingService.statementSearchTableConfig\n };\n\n // Per-kind UI state for the customer/supplier open-item tabs.\n // Changed: each kind carries its OWN cloned table config — two grids are on screen at once and a TableConfig\n // is mutated by the table it belongs to, so sharing one object between the tabs would cross their state.\n state: any = {\n customer: {\n entityLabel: 'Customer', entityId: null, from: null, to: null, data: null, lines: [],\n listAction: { url: 'customers/list/x' } as Action,\n tileConfig: this.accountingService.customerStatementTileConfig as TileConfig,\n tableConfig: { ...this.accountingService.statementLinesTableConfig } as TableConfig\n },\n supplier: {\n entityLabel: 'Supplier', entityId: null, from: null, to: null, data: null, lines: [],\n listAction: { url: 'suppliers/list/x' } as Action,\n tileConfig: this.accountingService.supplierStatementTileConfig as TileConfig,\n tableConfig: { ...this.accountingService.statementLinesTableConfig } as TableConfig\n }\n };\n\n // Changed: the customer/supplier option lists are loaded by spa-select-lite's own loadAction now, so there is\n // no hand-rolled options fetch left here. ngOnInit is kept for the interface and for future per-kind defaults.\n ngOnInit(): void { }\n\n private query(kind: string): string {\n const s = this.state[kind];\n const params = [];\n if (s.from) params.push(`from=${s.from}`);\n if (s.to) params.push(`to=${s.to}`);\n return params.length ? `?${params.join('&')}` : '';\n }\n\n load(kind: string) {\n const s = this.state[kind];\n if (!s.entityId) return; // Added: the header refresh icon routes here too, and it must not fire before an entity is chosen\n this.http.get<any>(`${this.httpService.apiUrl}reports/${kind}-statement/${s.entityId}${this.query(kind)}`)\n .subscribe(res => {\n s.data = res?.data ?? res?.Data ?? null;\n s.lines = s.data?.lines ?? []; // Changed: held as a stable reference — binding `data.lines || []` inline would hand spa-table a new array on every change-detection pass\n });\n }\n\n // C8: open-item customer statement as PDF — generated entirely server-side (reports/pdf/customer-statement);\n // this method only asks for the blob and saves it. Unchanged by the page rewrite.\n exportPdf(kind: string) {\n const s = this.state[kind];\n this.http.get(`${this.httpService.apiUrl}reports/pdf/${kind}-statement${this.query(kind) ? this.query(kind) + '&' : '?'}${kind}Id=${s.entityId}`, { responseType: 'blob' })\n .subscribe((response: Blob) => {\n const url = window.URL.createObjectURL(new Blob([response], { type: 'application/pdf' }));\n const link = document.createElement('a');\n link.href = url;\n link.download = `${kind}-statement-${s.entityId}.pdf`;\n link.click();\n window.URL.revokeObjectURL(url);\n });\n }\n\n export(kind: string) {\n const s = this.state[kind];\n this.http.get(`${this.httpService.apiUrl}reports/export/${kind}-statement${this.query(kind) ? this.query(kind) + '&' : '?'}${kind}Id=${s.entityId}`, { responseType: 'blob' })\n .subscribe((response: Blob) => {\n const url = window.URL.createObjectURL(new Blob([response], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }));\n const link = document.createElement('a');\n link.href = url;\n link.download = `${kind}-statement-${s.entityId}.xlsx`;\n link.click();\n window.URL.revokeObjectURL(url);\n });\n }\n}\n","// Financial Reports component with Trial Balance, P&L, Balance Sheet, General Ledger tabs + Excel exports (B5/B7) and from/to date range (Phase 1)\nimport { Component, OnInit, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TableConfig } from 'tin-spa/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { HttpService } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-reports',\n template: `\n <div style=\"display: flex; align-items: center; justify-content: space-between;\">\n <h4>Financial Reports</h4>\n <button mat-stroked-button [matMenuTriggerFor]=\"exportMenu\">\n <mat-icon>download</mat-icon> Export to Excel\n </button>\n <mat-menu #exportMenu=\"matMenu\">\n <button mat-menu-item (click)=\"export('trial-balance')\">Trial Balance</button>\n <button mat-menu-item (click)=\"export('pnl')\">Profit & Loss</button>\n <button mat-menu-item (click)=\"export('balance-sheet')\">Balance Sheet</button>\n <button mat-menu-item (click)=\"export('gl')\">General Ledger</button>\n <button mat-menu-item (click)=\"export('vat-return')\">VAT Return (current month)</button>\n <button mat-menu-item (click)=\"export('cash-flow')\">Cash Flow (current month)</button>\n <button mat-menu-item (click)=\"export('equity-changes')\">Changes in Equity (current month)</button>\n </mat-menu>\n </div>\n <hr>\n\n <!-- Changed: From/To date range controls applied to all report tabs (pattern copied from VatReturnComponent) -->\n <div style=\"display: flex; gap: 16px; align-items: center; margin-bottom: 16px;\">\n <mat-form-field>\n <mat-label>From</mat-label>\n <input matInput type=\"date\" [(ngModel)]=\"from\">\n </mat-form-field>\n <mat-form-field>\n <mat-label>To</mat-label>\n <input matInput type=\"date\" [(ngModel)]=\"to\">\n </mat-form-field>\n <button mat-flat-button color=\"primary\" (click)=\"buildTabs()\">Run</button>\n </div>\n\n <spa-tabs [tableConfigs]=\"reportTabConfigs\"></spa-tabs>\n `,\n standalone: false\n})\nexport class ReportsComponent implements OnInit {\n\n private httpService = inject(HttpService); // Changed: For export downloads\n private http = inject(HttpClient); // Changed: For export downloads\n\n from = ''; // Changed: Optional report period start\n to = ''; // Changed: Optional report period end\n\n constructor(private dataServiceLib: DataServiceLib, public accountingService: AccountingService) {\n this.buildTabs(); // Changed: Tabs built via method so Run can rebuild with date params\n }\n\n ngOnInit(): void {\n }\n\n reportTabConfigs: TableConfig[] = [];\n\n // Changed: Append from/to query params when set — backends that ignore them are unaffected\n private withRange(url: string): string {\n const params: string[] = [];\n if (this.from) params.push(`from=${this.from}`);\n if (this.to) params.push(`to=${this.to}`);\n return params.length ? `${url}?${params.join('&')}` : url;\n }\n\n // Changed: Rebuild tab configs with the current date range applied to every report URL\n buildTabs() {\n this.reportTabConfigs = [\n {\n ...this.accountingService.trialBalanceTableConfig,\n tabTitle: 'Trial Balance',\n loadAction: { url: this.withRange('accounts/reports/trialbalance') },\n },\n {\n ...this.accountingService.pnlTableConfig,\n tabTitle: 'Profit & Loss',\n loadAction: { url: this.withRange('accounts/reports/pnl') },\n },\n {\n ...this.accountingService.balanceSheetReportTableConfig,\n tabTitle: 'Balance Sheet',\n loadAction: { url: this.withRange('accounts/reports/balancesheet') },\n },\n { // Changed: General Ledger detail tab (B5)\n ...this.accountingService.generalLedgerTableConfig,\n tabTitle: 'General Ledger',\n loadAction: { url: this.withRange('reports/gl') },\n },\n { // Changed: IAS 7 cash flow statement tab (C5)\n ...this.accountingService.cashFlowTableConfig,\n tabTitle: 'Cash Flow',\n loadAction: { url: this.withRange('reports/cash-flow') },\n },\n { // Changed: Statement of changes in equity tab (C5)\n ...this.accountingService.equityChangesTableConfig,\n tabTitle: 'Changes in Equity',\n loadAction: { url: this.withRange('reports/equity-changes') },\n }\n ];\n }\n\n // Changed: Download an xlsx export from the shared reports endpoint (B7) with the selected date range applied\n export(report: string) {\n this.http.get(`${this.httpService.apiUrl}${this.withRange(`reports/export/${report}`)}`, { responseType: 'blob' })\n .subscribe((response: Blob) => {\n const url = window.URL.createObjectURL(new Blob([response], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }));\n const link = document.createElement('a');\n link.href = url;\n link.download = `${report}.xlsx`;\n link.click();\n window.URL.revokeObjectURL(url);\n });\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { TinSpaModule } from '../../../tin-spa.module';\nimport { AccountingService } from 'tin-spa/core';\n\n// Tax Rates management page - CRUD for VAT tax rates\n@Component({\n selector: 'spa-tax-rates',\n standalone: true,\n imports: [TinSpaModule],\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class TaxRatesComponent {\n private accountingService = inject(AccountingService);\n\n pageConfig: PageConfig = {\n title: 'Tax Rates',\n tableConfig: this.accountingService.taxRatesTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { TinSpaModule } from '../../../tin-spa.module';\nimport { AccountingService } from 'tin-spa/core';\n\n// Standing Orders management page — CRUD for recurring scheduled transactions\n@Component({\n selector: 'spa-standing-orders',\n standalone: true,\n imports: [TinSpaModule],\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class StandingOrdersComponent {\n private accountingService = inject(AccountingService);\n\n pageConfig: PageConfig = {\n title: 'Standing Orders',\n tableConfig: this.accountingService.standingOrdersTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { TinSpaModule } from '../../../tin-spa.module';\nimport { AccountingService } from 'tin-spa/core';\n\n// Currency management page - CRUD for multi-currency support\n@Component({\n selector: 'spa-currencies',\n standalone: true,\n imports: [TinSpaModule],\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class CurrenciesComponent {\n private accountingService = inject(AccountingService);\n\n pageConfig: PageConfig = {\n title: 'Currencies',\n tableConfig: this.accountingService.currenciesTableConfig\n };\n}\n","// Budget management component for CRUD operations\nimport { Component, inject } from '@angular/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-budgets',\n template: '<spa-page [config]=\"pageConfig\"></spa-page>',\n standalone: false\n})\nexport class BudgetsComponent {\n private accountingService = inject(AccountingService);\n\n pageConfig: PageConfig = {\n title: 'Budgets',\n tableConfig: this.accountingService.budgetsTableConfig\n };\n}\n","// Budget vs Actual report component with budget selector, tiles, and tabbed tables\nimport { Component, inject } from '@angular/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { TableConfig, TileConfig } from 'tin-spa/core';\nimport { HttpService } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-budget-vs-actual',\n template: `\n <h4>Budget vs Actual</h4>\n <hr>\n\n <div style=\"max-width: 300px; margin-bottom: 16px;\">\n <spa-select-lite display=\"Select Budget\" [loadAction]=\"{ url: 'budgets/list/x' }\" optionDisplay=\"name\" optionValue=\"value\" [(value)]=\"selectedBudgetID\" (valueChange)=\"onBudgetSelected()\"></spa-select-lite><!-- Changed: optionDisplay/optionValue are NOT defaulted by spa-select-common (both default to \"\"), so every option rendered blank and bound undefined — no budget could be picked. 'name'/'value' match BaseController.GetList's ListOption shape, same as the statement page -->\n </div>\n\n <spa-tiles *ngIf=\"summaryTileConfig.loadAction\" [config]=\"summaryTileConfig\"></spa-tiles>\n\n <spa-tabs *ngIf=\"reportTabConfigs.length > 0\" [tableConfigs]=\"reportTabConfigs\"></spa-tabs>\n `,\n standalone: false\n})\nexport class BudgetVsActualComponent {\n private accountingService = inject(AccountingService);\n private httpService = inject(HttpService);\n\n selectedBudgetID: number | null = null;\n reportTabConfigs: TableConfig[] = [];\n\n summaryTileConfig: TileConfig = { ...this.accountingService.budgetSummaryTileConfig };\n\n // Load report data when a budget is selected\n onBudgetSelected() {\n if (!this.selectedBudgetID) {\n this.reportTabConfigs = [];\n return;\n }\n\n // Update tile config to load summary for selected budget\n this.summaryTileConfig = {\n ...this.accountingService.budgetSummaryTileConfig,\n loadAction: { url: `budgetreport/summary/${this.selectedBudgetID}` }\n };\n\n // Build tab configs with dynamic URLs for selected budget\n this.reportTabConfigs = [\n {\n ...this.accountingService.budgetVsActualByPeriodTableConfig,\n loadAction: { url: `budgetreport/vsactual/${this.selectedBudgetID}` }\n },\n {\n ...this.accountingService.budgetVsActualByAccountTableConfig,\n loadAction: { url: `budgetreport/summary/${this.selectedBudgetID}` }\n }\n ];\n }\n}\n","import { Component } from '@angular/core';\nimport { TileConfig, ChartConfig } from 'tin-spa/core';\nimport { DataServiceLib } from 'tin-spa/core'; // Added (dashboard-alignment 1-D.3): the CapItem source the whole-config security gates read\n\n// Accounting module dashboard — pure financial/account performance (invoice-specific moved to invoicing)\n@Component({\n selector: 'spa-accounting-dashboard',\n template: `\n <div class=\"dashboard-container\">\n <h4 class=\"dashboard-title\"><mat-icon>account_balance</mat-icon> Accounting Dashboard</h4>\n <spa-tiles [config]=\"summaryTiles\"></spa-tiles>\n <div style=\"margin-top: 16px;\"></div>\n <spa-tiles [config]=\"chartTiles\"></spa-tiles>\n <spa-charts [config]=\"chartConfig\"></spa-charts>\n <!-- Changed: Separate cash/bank balance chart with own data source -->\n <spa-charts [config]=\"cashBankChartConfig\"></spa-charts>\n <!-- Added (dashboard-alignment 1-D.2): MOVED DOWN from the main overview dashboard, which was the only\n page showing these two. The module dashboard is the deeper page, so they belong here. -->\n <spa-tiles [config]=\"overviewTiles\"></spa-tiles>\n <spa-charts [config]=\"overviewChartConfig\"></spa-charts>\n </div>\n `,\n styles: [`\n .dashboard-container { padding: 16px; }\n .dashboard-title { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; color: #333; font-weight: 500; }\n `],\n standalone: false\n})\nexport class AccountingDashboardComponent {\n\n constructor(private dataService: DataServiceLib) { }\n\n summaryTiles: TileConfig = {\n tiles: [\n { name: 'inflows', alias: 'Inflows (MTD)', color: '#4caf50', icon: 'arrow_downward', style: 'icon', info: 'MTD cash inflows' }, // Changed: Cash inflows tile\n { name: 'outflows', alias: 'Outflows (MTD)', color: '#f44336', icon: 'arrow_upward', style: 'icon', info: 'MTD cash outflows' }, // Changed: Cash outflows tile\n { name: 'netCashFlow', alias: 'Net Cash Flow', color: '#2196f3', icon: 'swap_vert', style: 'icon', info: 'Net cash movement' }, // Changed: Net cash flow tile\n { name: 'revenue', alias: 'Revenue (MTD)', color: '#4caf50', icon: 'trending_up', style: 'icon', info: 'MTD revenue' },\n { name: 'expenses', alias: 'Expenses (MTD)', color: '#f44336', icon: 'trending_down', style: 'icon', info: 'MTD expenses' },\n { name: 'cashBalance', alias: 'Cash & Bank', color: '#ff9800', icon: 'account_balance_wallet', style: 'icon', info: 'Cash + bank total' },\n ],\n loadAction: { url: 'accounts/dashboard-summary/x' },\n loadInit: true,\n security: { allow: [this.dataService.capAccountingDashboard] } // Added (dashboard-alignment 1-D.3): cap27 (datalib.service.ts:349) — a single-module dashboard, so the gate sits on the whole config\n };\n\n // Changed: Replaced collectionRate/invoiceStatusSplit with profitMargin/expenseBreakdown\n chartTiles: TileConfig = {\n tiles: [\n { name: 'profitMargin', alias: 'Profit Margin', color: '#4caf50', chart: { type: 'doughnut', gaugeColor: '#4caf50', height: 130, dataField: 'profitMargin' }, footer: 'Net profit / revenue', footerIcon: 'pie_chart' }, // Changed: Replaced collectionRate\n { name: 'revenueTrendSpark', alias: 'Revenue Trend', color: '#2196f3', chart: { type: 'line', color: '#2196f3', height: 100, dataField: 'revenueTrendSpark' }, footer: 'Last 12 months', footerIcon: 'show_chart' },\n { name: 'expenseBreakdown', alias: 'Expense Breakdown', color: '#ff9800', chart: { type: 'pie', colors: ['#f44336', '#ff5722', '#ff9800', '#ffc107', '#ffeb3b', '#9e9e9e'], height: 130, dataField: 'expenseBreakdown' }, footer: 'Top 5 + Other', footerIcon: 'donut_large' }, // Changed: Replaced invoiceStatusSplit\n { name: 'expenseTrendSpark', alias: 'Expense Trend', color: '#f44336', chart: { type: 'bar', colors: ['#f44336', '#ef5350', '#e57373', '#ef9a9a', '#ffcdd2', '#f44336'], height: 100, dataField: 'expenseTrendSpark' }, footer: 'Last 6 months', footerIcon: 'trending_down' },\n ],\n loadAction: { url: 'accounts/dashboard-chart-tiles/x' },\n loadInit: true,\n security: { allow: [this.dataService.capAccountingDashboard] } // Added (dashboard-alignment 1-D.3): cap27\n };\n\n // Changed: Replaced arAging/invoiceStatus with cashFlow/transactionVolume\n chartConfig: ChartConfig = {\n charts: [\n { name: 'revenueTrend', title: 'Revenue vs Expenses Trend', type: 'line', height: '300px', showPoints: true, tension: 0.4, colors: ['#4caf50', '#f44336'], showLegend: true },\n { name: 'cashFlow', title: 'Monthly Cash Flow', type: 'bar', height: '300px', colors: ['#4caf50', '#f44336'], showLegend: true }, // Changed: Replaced arAging\n { name: 'accountBalances', title: 'Account Balances by Type', type: 'bar', height: '300px', colors: ['#2196f3', '#f44336', '#4caf50', '#ff9800', '#9c27b0'] },\n { name: 'transactionVolume', title: 'Monthly Transaction Volume', type: 'bar', height: '300px', colors: ['#7c4dff'] }, // Changed: Replaced invoiceStatus\n ],\n loadAction: { url: 'accounts/dashboard-charts/x' },\n loadInit: true,\n columns: 2,\n security: { allow: [this.dataService.capAccountingDashboard] } // Added (dashboard-alignment 1-D.3): cap27\n };\n\n // Changed: New cash/bank running balance line chart with separate data source\n cashBankChartConfig: ChartConfig = {\n charts: [\n { name: 'cashBankBalances', title: 'Cash & Bank Balances (30 Days)', type: 'line', height: '500px', showPoints: true, tension: 0.4, showLegend: true,\n options: { scales: { y: { grid: { color: '#f0f0f0', drawBorder: false }, ticks: { font: { size: 11 }, color: '#999', maxTicksLimit: 12 }, border: { display: false } } } } }, // Changed: More granular Y-axis ticks for better readability\n ],\n loadAction: { url: 'accounts/dashboard-cash-balances/x' },\n loadInit: true,\n columns: 1,\n security: { allow: [this.dataService.capAccountingDashboard] } // Added (dashboard-alignment 1-D.3): cap27\n };\n\n // Added (dashboard-alignment 1-D.2): netProfit MOVED here from the main overview dashboard, which was the\n // only page showing it. It keeps its own load endpoint because `accounts/dashboard-summary` does not carry\n // the key; that endpoint's netProfit is gated on cap27 server-side (TinErp DashboardController, 4b4290b) —\n // the same cap declared here, so the client and the server retract it together.\n overviewTiles: TileConfig = {\n tiles: [\n { name: 'netProfit', alias: 'Net Profit (MTD)', color: '#2196f3', icon: 'account_balance', style: 'icon', info: 'MTD profit' },\n ],\n loadAction: { url: 'dashboard/overview/summary' },\n loadInit: true,\n security: { allow: [this.dataService.capAccountingDashboard] }\n };\n\n // Added (dashboard-alignment 1-D.2): healthIndicators MOVED here from the main overview dashboard. It blends\n // AR and AP and has no cap of its own, so per A15 / A-0902-26 it inherits the nearest module's — cap27, which\n // is exactly what the TinErp gate keys it on.\n overviewChartConfig: ChartConfig = {\n charts: [\n { name: 'healthIndicators', title: 'Business Health Indicators', type: 'doughnut', height: '300px', colors: ['#4caf50', '#e0e0e0', '#2196f3', '#e0e0e0', '#ff9800', '#e0e0e0'] },\n ],\n loadAction: { url: 'dashboard/overview/charts' },\n loadInit: true,\n columns: 1,\n security: { allow: [this.dataService.capAccountingDashboard] }\n };\n}\n","import { Component } from '@angular/core'; // Changed (dashboard-alignment 1-D.4): OnInit dropped with the attention list\nimport { TileConfig, ChartConfig } from 'tin-spa/core'; // Changed (dashboard-alignment 1-D.4): ApiResponse dropped with the attention list's own fetch\nimport { DataServiceLib } from 'tin-spa/core';\n\n// Invoice module dashboard with pipeline visibility, aging, and collection KPIs\n@Component({\n selector: 'spa-invoice-dashboard',\n template: `\n <div class=\"dashboard-container\">\n <h4 class=\"dashboard-title\"><mat-icon>receipt_long</mat-icon> Invoice Dashboard</h4>\n <spa-tiles [config]=\"summaryTiles\"></spa-tiles>\n <div style=\"margin-top: 16px;\"></div>\n <spa-tiles [config]=\"chartTiles\"></spa-tiles>\n\n <!-- Removed (dashboard-alignment 1-D.4): the \"Needs Attention\" list of overdue invoices. A dashboard\n shows the shape of the business; the things a person has to act on live in the Day Book, which\n already carries this exact list as the overdueInvoices rule\n (TinErp Services/DayBook/DefaultDayBookProvider.cs:118, gated .Requires(cap53)) with the same five\n columns off the same DayBookMoneyRow (:405-425). Nothing was lost, only relocated. -->\n\n <spa-charts [config]=\"chartConfig\"></spa-charts>\n </div>\n `,\n styles: [`\n .dashboard-container { padding: 16px; }\n .dashboard-title { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; color: #333; font-weight: 500; }\n `], // Changed (dashboard-alignment 1-D.4): the attention list's table styling went with the list\n standalone: false\n})\nexport class InvoiceDashboardComponent {\n\n constructor(private dataService: DataServiceLib) { }\n\n // Changed: Summary tiles — invoice pipeline KPIs\n summaryTiles: TileConfig = {\n tiles: [\n { name: 'totalInvoices', alias: 'Total Invoices', color: '#1565c0', icon: 'receipt_long', style: 'icon', info: 'All active invoices' },\n { name: 'drafts', alias: 'Drafts', color: '#9e9e9e', icon: 'edit_note', style: 'icon', info: 'Invoices awaiting submission' },\n { name: 'outstandingAmount', alias: 'Outstanding', color: '#ff9800', icon: 'pending', style: 'icon', prefix: '$', info: 'Total unpaid amount' },\n { name: 'overdueCount', alias: 'Overdue', color: '#f44336', icon: 'warning', style: 'icon', info: 'Invoices past due date' },\n { name: 'paidThisMonth', alias: 'Paid (Month)', color: '#4caf50', icon: 'check_circle', style: 'icon', info: 'Fully paid this month' },\n { name: 'avgDaysToPay', alias: 'Avg Days to Pay', color: '#7b1fa2', icon: 'schedule', style: 'icon', suffix: ' days', info: 'Average payment turnaround' },\n ],\n loadAction: { url: 'invoices/dashboard-summary/x' },\n loadInit: true,\n security: { allow: [this.dataService.capInvoiceDashboard] } // Added (dashboard-alignment 1-D.3): cap53 (datalib.service.ts:470) — a single-module dashboard, so the gate sits on the whole config\n };\n\n // Changed: Chart tiles — collection gauge, trend sparkline, status pie, aging bar\n chartTiles: TileConfig = {\n tiles: [\n { name: 'collectionRate', alias: 'Collection Rate', color: '#4caf50', chart: { type: 'doughnut', gaugeColor: '#4caf50', height: 130, dataField: 'collectionRate' }, footer: 'Amount collected vs invoiced', footerIcon: 'check_circle' },\n { name: 'invoiceTrend', alias: 'Invoice Trend', color: '#2196f3', chart: { type: 'line', color: '#2196f3', height: 100, dataField: 'invoiceTrend' }, footer: 'Last 12 months', footerIcon: 'timeline' },\n { name: 'statusDistribution', alias: 'Status Split', color: '#ff9800', chart: { type: 'pie', colors: ['#9e9e9e', '#2196f3', '#ff9800', '#4caf50', '#f44336'], height: 130, dataField: 'statusDistribution' }, footer: 'Current distribution', footerIcon: 'pie_chart' },\n { name: 'agingSnapshot', alias: 'Aging Snapshot', color: '#f44336', chart: { type: 'bar', colors: ['#4caf50', '#ff9800', '#ff5722', '#f44336', '#b71c1c'], height: 100, dataField: 'agingSnapshot' }, footer: 'Outstanding by age', footerIcon: 'bar_chart' },\n ],\n loadAction: { url: 'invoices/dashboard-chart-tiles/x' },\n loadInit: true,\n security: { allow: [this.dataService.capInvoiceDashboard] } // Added (dashboard-alignment 1-D.3): cap53\n };\n\n // Changed: Full charts — revenue pipeline, aging breakdown, top customers, payment trend\n chartConfig: ChartConfig = {\n charts: [\n { name: 'revenuePipeline', title: 'Invoiced vs Collected', type: 'bar', height: '300px', showLegend: true, colors: ['#2196f3', '#4caf50'] },\n { name: 'agingBreakdown', title: 'AR Aging Breakdown', type: 'bar', height: '300px', colors: ['#4caf50', '#ff9800', '#ff5722', '#f44336', '#b71c1c'] },\n { name: 'topCustomers', title: 'Top Customers by Outstanding', type: 'bar', height: '300px', colors: ['#1565c0', '#1976d2', '#1e88e5', '#2196f3', '#42a5f5'] },\n { name: 'paymentTrend', title: 'Payment Collection Trend', type: 'line', height: '300px', showPoints: true, tension: 0.4, colors: ['#4caf50'], showLegend: true },\n { name: 'collectionPerformance', title: 'Collection Performance (12 Months)', type: 'line', height: '300px', showPoints: true, tension: 0.4, colors: ['#f57c00', '#4caf50'], showLegend: true }, // Changed: Avg days to pay + on-time rate trend\n ],\n loadAction: { url: 'invoices/dashboard-charts/x' },\n loadInit: true,\n columns: 2,\n security: { allow: [this.dataService.capInvoiceDashboard] } // Added (dashboard-alignment 1-D.3): cap53\n };\n}\n","// Credit Notes page (B6) — invoice corrections/returns with GL reversal posting\nimport { Component, inject } from '@angular/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-credit-notes',\n template: '<spa-page [config]=\"pageConfig\"></spa-page>',\n standalone: false\n})\nexport class CreditNotesComponent {\n public accountingService = inject(AccountingService);\n\n pageConfig: PageConfig = {\n title: 'Credit Notes',\n tableConfig: this.accountingService.creditNotesTableConfig\n };\n}\n","// VAT Return page (B2) — ZIMRA VAT7-style summary for a selected tax period\n// Phase 2 compliance: sales splits (standard/zero-rated/exempt), per-currency breakdown, GL reconciliation, WHT remittance tab\nimport { Component, OnInit, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { HttpService } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-vat-return',\n template: `\n <div style=\"display: flex; align-items: center; justify-content: space-between;\">\n <h4>VAT Return</h4>\n <button mat-stroked-button (click)=\"export()\" [disabled]=\"!data\">\n <mat-icon>download</mat-icon> Export to Excel\n </button>\n </div>\n <hr>\n\n <div style=\"display: flex; gap: 16px; align-items: center; margin-bottom: 16px;\">\n <mat-form-field>\n <mat-label>From</mat-label>\n <input matInput type=\"date\" [(ngModel)]=\"from\">\n </mat-form-field>\n <mat-form-field>\n <mat-label>To</mat-label>\n <input matInput type=\"date\" [(ngModel)]=\"to\">\n </mat-form-field>\n <button mat-flat-button color=\"primary\" (click)=\"load()\">Run</button>\n </div>\n\n <mat-tab-group>\n <mat-tab label=\"VAT Return\">\n <mat-card *ngIf=\"data\" style=\"max-width: 640px; padding: 16px; margin-top: 16px;\">\n <table style=\"width: 100%; border-collapse: collapse;\">\n <tr><td style=\"padding: 6px 0;\">Standard Rated Sales (excl. VAT)</td><td style=\"text-align: right;\">{{ data.standardRatedSales | number:'1.2-2' }}</td></tr>\n <tr><td style=\"padding: 6px 0;\">Zero Rated Sales</td><td style=\"text-align: right;\">{{ data.zeroRatedSales | number:'1.2-2' }}</td></tr>\n <tr *ngIf=\"data.exemptSales != null\"><td style=\"padding: 6px 0;\">Exempt Sales</td><td style=\"text-align: right;\">{{ data.exemptSales | number:'1.2-2' }}</td></tr>\n <tr style=\"border-top: 1px solid #ddd;\"><td style=\"padding: 6px 0;\"><b>Total Sales</b></td><td style=\"text-align: right;\"><b>{{ data.totalSales | number:'1.2-2' }}</b></td></tr>\n <tr><td style=\"padding: 6px 0;\">Output VAT</td><td style=\"text-align: right;\">{{ data.outputVat | number:'1.2-2' }}</td></tr>\n <tr><td style=\"padding: 6px 0;\">Total Purchases (excl. VAT)</td><td style=\"text-align: right;\">{{ data.totalPurchases | number:'1.2-2' }}</td></tr>\n <tr><td style=\"padding: 6px 0;\">Input VAT</td><td style=\"text-align: right;\">{{ data.inputVat | number:'1.2-2' }}</td></tr>\n <tr style=\"border-top: 2px solid #333;\">\n <td style=\"padding: 8px 0;\"><b>{{ data.isPayable ? 'VAT Payable to ZIMRA' : 'VAT Refundable' }}</b></td>\n <td style=\"text-align: right;\"><b [style.color]=\"data.isPayable ? 'red' : 'green'\">{{ data.netVat | number:'1.2-2' }}</b></td>\n </tr>\n </table>\n </mat-card>\n\n <!-- Added: per-currency breakdown from byCurrency -->\n <mat-card *ngIf=\"data?.byCurrency?.length\" style=\"max-width: 900px; padding: 16px; margin-top: 16px;\">\n <h5 style=\"margin-top: 0;\">Breakdown by Currency</h5>\n <table style=\"width: 100%; border-collapse: collapse;\">\n <tr style=\"border-bottom: 1px solid #ddd;\">\n <th style=\"text-align: left; padding: 6px 0;\">Currency</th>\n <th style=\"text-align: right;\">Standard Sales</th>\n <th style=\"text-align: right;\">Zero Rated</th>\n <th style=\"text-align: right;\">Exempt</th>\n <th style=\"text-align: right;\">Output VAT</th>\n <th style=\"text-align: right;\">Input VAT</th>\n <th style=\"text-align: right;\">Net VAT</th>\n </tr>\n <tr *ngFor=\"let c of data.byCurrency\">\n <td style=\"padding: 6px 0;\">{{ c.currencyCode }}</td>\n <td style=\"text-align: right;\">{{ c.standardRatedSales | number:'1.2-2' }}</td>\n <td style=\"text-align: right;\">{{ c.zeroRatedSales | number:'1.2-2' }}</td>\n <td style=\"text-align: right;\">{{ c.exemptSales | number:'1.2-2' }}</td>\n <td style=\"text-align: right;\">{{ c.outputVat | number:'1.2-2' }}</td>\n <td style=\"text-align: right;\">{{ c.inputVat | number:'1.2-2' }}</td>\n <td style=\"text-align: right;\"><b>{{ c.netVat | number:'1.2-2' }}</b></td>\n </tr>\n </table>\n </mat-card>\n\n <!-- Added: GL reconciliation — output VAT per GL vs per documents -->\n <mat-card *ngIf=\"data?.glReconciliation\" style=\"max-width: 640px; padding: 16px; margin-top: 16px;\">\n <h5 style=\"margin-top: 0;\">GL Reconciliation (Output VAT)</h5>\n <table style=\"width: 100%; border-collapse: collapse;\">\n <tr><td style=\"padding: 6px 0;\">Output VAT per GL</td><td style=\"text-align: right;\">{{ data.glReconciliation.outputVatGL | number:'1.2-2' }}</td></tr>\n <tr><td style=\"padding: 6px 0;\">Output VAT per Documents</td><td style=\"text-align: right;\">{{ data.glReconciliation.outputVatFromDocuments | number:'1.2-2' }}</td></tr>\n <tr style=\"border-top: 1px solid #ddd;\">\n <td style=\"padding: 6px 0;\"><b>Difference</b></td>\n <td style=\"text-align: right;\"><b [style.color]=\"(data.glReconciliation.difference | number:'1.2-2') !== '0.00' ? '#e65100' : 'inherit'\">{{ data.glReconciliation.difference | number:'1.2-2' }}</b></td>\n </tr>\n </table>\n <p *ngIf=\"(data.glReconciliation.difference | number:'1.2-2') !== '0.00'\" style=\"color: #e65100; margin: 8px 0 0;\">\n <mat-icon style=\"vertical-align: middle; font-size: 18px;\">warning</mat-icon>\n GL does not agree with document totals — investigate before filing.\n </p>\n </mat-card>\n </mat-tab>\n\n <!-- Added: WHT remittance report — 30% withholding on payments to suppliers without valid ITF263 -->\n <mat-tab label=\"Withholding Tax\">\n <mat-card style=\"max-width: 900px; padding: 16px; margin-top: 16px;\">\n <h5 style=\"margin-top: 0;\">Withholding Tax Remittance (30% — no valid ITF263)</h5>\n <table *ngIf=\"whtData?.length\" style=\"width: 100%; border-collapse: collapse;\">\n <tr style=\"border-bottom: 1px solid #ddd;\">\n <th style=\"text-align: left; padding: 6px 0;\">Supplier</th>\n <th style=\"text-align: left;\">Date</th>\n <th style=\"text-align: right;\">Gross</th>\n <th style=\"text-align: right;\">WHT</th>\n <th style=\"text-align: right;\">Net Paid</th>\n </tr>\n <tr *ngFor=\"let w of whtData\">\n <td style=\"padding: 6px 0;\">{{ w.supplierName || w.supplier }}</td>\n <td>{{ (w.paymentDate || w.date) | date:'mediumDate' }}</td>\n <td style=\"text-align: right;\">{{ (w.grossAmount ?? w.gross) | number:'1.2-2' }}</td>\n <td style=\"text-align: right;\">{{ (w.whtAmount ?? w.wht) | number:'1.2-2' }}</td>\n <td style=\"text-align: right;\">{{ (w.netAmount ?? w.net) | number:'1.2-2' }}</td>\n </tr>\n </table>\n <p *ngIf=\"!whtData?.length\" style=\"color: #757575;\">No withheld supplier payments in this period.</p>\n </mat-card>\n </mat-tab>\n </mat-tab-group>\n `,\n standalone: false\n})\nexport class VatReturnComponent implements OnInit {\n private httpService = inject(HttpService);\n private http = inject(HttpClient);\n\n from = '';\n to = '';\n data: any = null;\n whtData: any[] = []; // Added: WHT remittance rows for the selected period\n\n ngOnInit(): void {\n // Default period: current calendar month\n const now = new Date();\n this.from = new Date(now.getFullYear(), now.getMonth(), 1).toISOString().substring(0, 10);\n this.to = new Date(now.getFullYear(), now.getMonth() + 1, 0).toISOString().substring(0, 10);\n this.load();\n }\n\n load() {\n this.http.get<any>(`${this.httpService.apiUrl}reports/vat-return?from=${this.from}&to=${this.to}`)\n .subscribe(res => this.data = res?.data ?? res?.Data ?? null);\n // Added: load WHT remittance rows for the same period (SupplierPayments criteria, value = \"from,to\")\n this.http.get<any>(`${this.httpService.apiUrl}supplierpayments/wht-remittance/${this.from},${this.to}`) // Changed: aligned with backend SupplierPaymentsController.CustomCriteria route shape\n .subscribe(res => this.whtData = res?.data ?? res?.Data ?? []);\n }\n\n export() {\n this.http.get(`${this.httpService.apiUrl}reports/export/vat-return?from=${this.from}&to=${this.to}`, { responseType: 'blob' })\n .subscribe((response: Blob) => {\n const url = window.URL.createObjectURL(new Blob([response]));\n const link = document.createElement('a');\n link.href = url;\n link.download = `vat-return-${this.from}-to-${this.to}.xlsx`;\n link.click();\n window.URL.revokeObjectURL(url);\n });\n }\n}\n","// Fiscal Periods page (C2) — period create/close/reopen/lock management\nimport { Component, OnInit, inject } from '@angular/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-fiscal-periods',\n template: '<spa-page [config]=\"pageConfig\"></spa-page>',\n standalone: false\n})\nexport class FiscalPeriodsComponent implements OnInit {\n public accountingService = inject(AccountingService);\n\n pageConfig: PageConfig = {\n title: 'Fiscal Periods',\n tableConfig: this.accountingService.fiscalPeriodsTableConfig\n };\n\n ngOnInit(): void {\n }\n}\n","// Customer Receipts page (C3) — receipts list with new-receipt and allocate actions\nimport { Component, OnInit, ViewChild, inject } from '@angular/core';\n// Changed: HttpClient import dropped with the injection above — the PDF download moved to AccountingService.\nimport { MatDialog } from '@angular/material/dialog';\nimport { AccountingService } from 'tin-spa/core';\nimport { DataServiceLib } from 'tin-spa/core'; // Added: single resolution point for the modern dialog surface\nimport { PageConfig } from 'tin-spa/core';\nimport { PageComponent } from '../../../components/page/page.component';\nimport { ReceiptDialogComponent } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-receipts',\n template: `\n <div style=\"display: flex; justify-content: flex-end;\">\n <button mat-stroked-button (click)=\"openDialog()\">\n <mat-icon>receipt</mat-icon> New Receipt\n </button>\n </div>\n <spa-page [config]=\"pageConfig\"></spa-page>\n `,\n standalone: false\n})\nexport class ReceiptsComponent implements OnInit {\n public accountingService = inject(AccountingService);\n private dataService = inject(DataServiceLib); // Added: supplies dialogPanelClass so this dialog honours appConfig.dialogStyle\n private dialog = inject(MatDialog);\n // Changed: the HttpService/HttpClient injections are gone — the PDF blob download they existed for now lives\n // in AccountingService, and this page no longer makes any HTTP call of its own.\n\n @ViewChild(PageComponent) page?: PageComponent;\n\n pageConfig: PageConfig = {\n title: 'Customer Receipts',\n tableConfig: this.accountingService.customerReceiptsTableConfig\n };\n\n constructor() {\n // Changed: the allocate wiring is GONE from here. AccountingService now owns receiptAllocateButton.onClick,\n // so the button works in every consumer instead of only on this page — this constructor was the single\n // reason shift's and grip's Day Book allocate lanes could not use it. Re-assigning it here would just\n // narrow it back to this page's dialog, and the service's handler is the same dialog with the same data.\n // Changed: the PDF wiring is GONE from here too — AccountingService now owns receiptPdfButton.onClick via\n // downloadReceiptPdf, so the button works in every consumer. That was the last library backlog row of the\n // pair. This constructor is now empty of wiring and exists only to satisfy the class.\n }\n\n ngOnInit(): void {\n }\n\n // Changed: this is now the NEW RECEIPT path only — allocation moved to AccountingService.openReceiptAllocation.\n // The optional row parameter is kept so the signature stays compatible for any consumer holding a reference.\n openDialog(row?: any) {\n this.dialog.open(ReceiptDialogComponent, { width: '860px', maxWidth: '95vw', data: row ?? null, panelClass: this.dataService?.dialogPanelClass ?? [] }) // Changed: was missing panelClass, so this dialog never picked up the modern surface\n .afterClosed().subscribe(saved => { if (saved) this.page?.tableReload.next(true); });\n }\n\n // Changed: the blob download itself moved to AccountingService.downloadReceiptPdf. This method is kept as a\n // thin delegate so the signature stays available to any consumer holding a reference to this component,\n // exactly as openDialog's optional row parameter was kept in 3a681d6.\n downloadPdf(receipt: any) {\n this.accountingService.downloadReceiptPdf(receipt);\n }\n}\n","// Bank statement import dialog (C4) — paste CSV lines (date, description, reference, amount) for a GL cash/bank account\nimport { Component, OnInit, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { HttpService } from 'tin-spa/core';\nimport { MessageService } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-statement-import-dialog',\n template: `\n <h2 mat-dialog-title>Import Bank Statement</h2>\n <mat-dialog-content>\n <div style=\"display: flex; gap: 16px; flex-wrap: wrap;\">\n <mat-form-field style=\"min-width: 220px;\">\n <mat-label>Account</mat-label>\n <mat-select [(ngModel)]=\"accountID\">\n <mat-option *ngFor=\"let option of accounts\" [value]=\"option.value\">{{ option.name }}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <mat-label>From</mat-label>\n <input matInput type=\"date\" [(ngModel)]=\"statementFrom\">\n </mat-form-field>\n <mat-form-field>\n <mat-label>To</mat-label>\n <input matInput type=\"date\" [(ngModel)]=\"statementTo\">\n </mat-form-field>\n <mat-form-field>\n <mat-label>Closing Balance</mat-label>\n <input matInput type=\"number\" [(ngModel)]=\"closingBalance\">\n </mat-form-field>\n </div>\n <mat-form-field style=\"width: 100%;\">\n <mat-label>Statement lines (CSV: date, description, reference, amount — money out negative)</mat-label>\n <textarea matInput rows=\"10\" [(ngModel)]=\"csv\" (ngModelChange)=\"parseCsv()\" placeholder=\"2026-07-01, Deposit ABC, REF001, 1500.00 2026-07-03, Bank charges, , -25.50\"></textarea>\n </mat-form-field>\n <p *ngIf=\"parseError\" style=\"color: red;\"><em>{{ parseError }}</em></p>\n <p *ngIf=\"parsedLines.length\"><em>{{ parsedLines.length }} line(s) parsed, net movement {{ netMovement | number:'1.2-2' }}</em></p>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <button mat-button (click)=\"dialogRef.close(false)\">Cancel</button>\n <button mat-flat-button color=\"primary\" (click)=\"save()\" [disabled]=\"!canSave\">Import</button>\n </mat-dialog-actions>\n `,\n standalone: false\n})\nexport class StatementImportDialogComponent implements OnInit {\n public dialogRef = inject(MatDialogRef<StatementImportDialogComponent>);\n private httpService = inject(HttpService);\n private http = inject(HttpClient);\n private messageService = inject(MessageService);\n\n accountID: number | null = null;\n statementFrom = '';\n statementTo = '';\n closingBalance = 0;\n csv = '';\n parseError = '';\n accounts: any[] = [];\n\n ngOnInit(): void {\n this.http.get<any>(`${this.httpService.apiUrl}accounts/list/x`)\n .subscribe(res => this.accounts = res?.data ?? []);\n const now = new Date();\n this.statementFrom = new Date(now.getFullYear(), now.getMonth(), 1).toISOString().substring(0, 10);\n this.statementTo = new Date(now.getFullYear(), now.getMonth() + 1, 0).toISOString().substring(0, 10);\n }\n\n // Changed: materialized — parsedLines/netMovement were getters read 4x per change-detection cycle\n // (twice in the template, plus netMovement and canSave), each call re-parsing the whole CSV, allocating a\n // new array AND writing this.parseError from inside a getter (a side effect during change detection).\n parsedLines: any[] = [];\n netMovement = 0;\n\n // Added: recomputed only when the CSV text actually changes (bound via (ngModelChange))\n parseCsv() {\n this.parseError = '';\n const lines: any[] = [];\n for (const raw of this.csv.split('\\n').map(l => l.trim()).filter(l => l)) {\n const parts = raw.split(',').map(p => p.trim());\n if (parts.length < 2) { this.parseError = `Cannot parse: \"${raw}\"`; this.parsedLines = []; this.netMovement = 0; return; }\n const amount = parseFloat(parts[parts.length - 1]);\n if (isNaN(amount)) { this.parseError = `Invalid amount in: \"${raw}\"`; this.parsedLines = []; this.netMovement = 0; return; }\n lines.push({ date: parts[0], description: parts[1] ?? '', reference: parts.length > 3 ? parts[2] : '', amount });\n }\n this.parsedLines = lines;\n this.netMovement = lines.reduce((sum, line) => sum + line.amount, 0);\n }\n\n get canSave(): boolean { return !!this.accountID && this.parsedLines.length > 0 && !this.parseError; } // Returns a primitive — safe to leave as a getter\n\n save() {\n const dto = {\n accountID: this.accountID,\n statementFrom: this.statementFrom,\n statementTo: this.statementTo,\n closingBalance: this.closingBalance,\n lines: this.parsedLines\n };\n this.http.post<any>(`${this.httpService.apiUrl}bankstatementimports/dto?action=create`, dto)\n .subscribe(res => {\n this.messageService.toast(res?.message ?? (res?.success ? 'Statement imported' : 'Import failed'));\n if (res?.success) this.dialogRef.close(true);\n });\n }\n}\n","// Bank reconciliation match screen (C4) — statement lines vs unreconciled book entries; auto/manual match, unmatch, complete\nimport { Component, OnInit, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { HttpService } from 'tin-spa/core';\nimport { MessageService } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-reconcile-dialog',\n template: `\n <h2 mat-dialog-title>Reconcile: {{ rec?.name }}</h2>\n <mat-dialog-content>\n <div *ngIf=\"rec\" style=\"display: flex; gap: 32px; flex-wrap: wrap; margin-bottom: 12px;\">\n <div><small>Book Balance</small><br><b>{{ rec.bookBalance | number:'1.2-2' }}</b></div>\n <div><small>Statement Balance</small><br><b>{{ rec.statementBalance | number:'1.2-2' }}</b></div>\n <div><small>Difference</small><br><b [style.color]=\"difference ? 'red' : 'green'\">{{ difference | number:'1.2-2' }}</b></div>\n <div><small>Matched</small><br><b>{{ rec.matchedCount }} / {{ rec.lineCount }}</b></div>\n </div>\n\n <div style=\"display: flex; gap: 24px; align-items: flex-start; flex-wrap: wrap;\" *ngIf=\"rec\">\n <div style=\"flex: 1; min-width: 380px;\">\n <h4>Statement Lines</h4>\n <table style=\"width: 100%; border-collapse: collapse;\">\n <tr style=\"text-align: left; border-bottom: 1px solid #ccc;\">\n <th style=\"padding: 4px;\"></th><th style=\"padding: 4px;\">Date</th><th style=\"padding: 4px;\">Description</th>\n <th style=\"padding: 4px; text-align: right;\">Amount</th><th style=\"padding: 4px;\">Status</th>\n </tr>\n <tr *ngFor=\"let line of rec.lines\" style=\"border-bottom: 1px solid #eee;\"\n [style.background]=\"selectedLine === line ? '#E3F2FD' : line.isMatched ? '#F1F8E9' : ''\">\n <td style=\"padding: 4px;\">\n <mat-checkbox *ngIf=\"!line.isMatched\" [checked]=\"selectedLine === line\" (change)=\"selectedLine = $event.checked ? line : null\"></mat-checkbox>\n </td>\n <td style=\"padding: 4px;\">{{ line.date }}</td>\n <td style=\"padding: 4px;\">{{ line.description }}</td>\n <td style=\"padding: 4px; text-align: right;\">{{ line.amount | number:'1.2-2' }}</td>\n <td style=\"padding: 4px;\">\n <span *ngIf=\"line.isMatched\" title=\"{{ line.matchedDescription }}\">✔</span>\n <button mat-button *ngIf=\"line.isMatched\" (click)=\"unmatch(line)\">Unmatch</button>\n </td>\n </tr>\n </table>\n </div>\n\n <div style=\"flex: 1; min-width: 380px;\">\n <h4>Unreconciled Book Entries</h4>\n <table style=\"width: 100%; border-collapse: collapse;\">\n <tr style=\"text-align: left; border-bottom: 1px solid #ccc;\">\n <th style=\"padding: 4px;\"></th><th style=\"padding: 4px;\">Date</th><th style=\"padding: 4px;\">Description</th>\n <th style=\"padding: 4px; text-align: right;\">Amount</th>\n </tr>\n <tr *ngFor=\"let entry of rec.unreconciledEntries\" style=\"border-bottom: 1px solid #eee;\"\n [style.background]=\"selectedEntry === entry ? '#E3F2FD' : ''\">\n <td style=\"padding: 4px;\">\n <mat-checkbox [checked]=\"selectedEntry === entry\" (change)=\"selectedEntry = $event.checked ? entry : null\"></mat-checkbox>\n </td>\n <td style=\"padding: 4px;\">{{ entry.date }}</td>\n <td style=\"padding: 4px;\">{{ entry.description }}</td>\n <td style=\"padding: 4px; text-align: right;\">{{ entry.amount | number:'1.2-2' }}</td>\n </tr>\n </table>\n </div>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <button mat-button (click)=\"dialogRef.close(changed)\">Close</button>\n <button mat-stroked-button (click)=\"autoMatch()\">Auto Match</button>\n <button mat-stroked-button (click)=\"match()\" [disabled]=\"!selectedLine || !selectedEntry\">Match Selected</button>\n <button mat-flat-button color=\"primary\" (click)=\"complete()\" [disabled]=\"!rec || rec.matchedCount != rec.lineCount\">Complete Reconciliation</button>\n </mat-dialog-actions>\n `,\n standalone: false\n})\nexport class ReconcileDialogComponent implements OnInit {\n public dialogRef = inject(MatDialogRef<ReconcileDialogComponent>);\n public data: any = inject(MAT_DIALOG_DATA);\n private httpService = inject(HttpService);\n private http = inject(HttpClient);\n private messageService = inject(MessageService);\n\n rec: any = null;\n selectedLine: any = null;\n selectedEntry: any = null;\n changed = false;\n\n get difference(): number { return (this.rec?.bookBalance ?? 0) - (this.rec?.statementBalance ?? 0); }\n\n ngOnInit(): void { this.load(); }\n\n load() {\n this.selectedLine = null;\n this.selectedEntry = null;\n this.http.get<any>(`${this.httpService.apiUrl}bankstatementimports/reconciliation/${this.data.bankStatementImportID}`)\n .subscribe(res => this.rec = res?.data ?? null);\n }\n\n autoMatch() {\n this.http.post<any>(`${this.httpService.apiUrl}bankstatementimports/dto?action=auto-match`, { bankStatementImportID: this.data.bankStatementImportID })\n .subscribe(res => { this.messageService.toast(res?.message ?? ''); this.changed = true; this.load(); });\n }\n\n match() {\n this.http.post<any>(`${this.httpService.apiUrl}bankstatementimports/match?action=match`,\n { bankStatementLineID: this.selectedLine.bankStatementLineID, transactionEntryID: this.selectedEntry.transactionEntryID })\n .subscribe(res => { this.messageService.toast(res?.message ?? ''); this.changed = true; this.load(); });\n }\n\n unmatch(line: any) {\n this.http.post<any>(`${this.httpService.apiUrl}bankstatementimports/match?action=unmatch`, { bankStatementLineID: line.bankStatementLineID, transactionEntryID: 0 })\n .subscribe(res => { this.messageService.toast(res?.message ?? ''); this.changed = true; this.load(); });\n }\n\n complete() {\n this.http.post<any>(`${this.httpService.apiUrl}bankstatementimports/dto?action=complete`, { bankStatementImportID: this.data.bankStatementImportID })\n .subscribe(res => {\n this.messageService.toast(res?.message ?? '');\n if (res?.success) this.dialogRef.close(true);\n });\n }\n}\n","// Bank Reconciliation page (C4) — statement imports list + import/reconcile dialogs\nimport { Component, OnInit, ViewChild, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AccountingService } from 'tin-spa/core';\nimport { DataServiceLib } from 'tin-spa/core'; // Added: single resolution point for the modern dialog surface\nimport { PageConfig } from 'tin-spa/core';\nimport { PageComponent } from '../../../components/page/page.component';\nimport { StatementImportDialogComponent } from './statement-import-dialog.component';\nimport { ReconcileDialogComponent } from './reconcile-dialog.component';\n\n@Component({\n selector: 'spa-bank-reconciliation',\n template: `\n <div style=\"display: flex; justify-content: flex-end;\">\n <button mat-stroked-button (click)=\"newImport()\">\n <mat-icon>upload_file</mat-icon> Import Statement\n </button>\n </div>\n <spa-page [config]=\"pageConfig\"></spa-page>\n `,\n standalone: false\n})\nexport class BankReconciliationComponent implements OnInit {\n public accountingService = inject(AccountingService);\n private dialog = inject(MatDialog);\n private dataService = inject(DataServiceLib); // Added: supplies dialogPanelClass so these dialogs honour appConfig.dialogStyle\n\n @ViewChild(PageComponent) page?: PageComponent;\n\n pageConfig: PageConfig = {\n title: 'Bank Reconciliation',\n tableConfig: this.accountingService.bankStatementImportsTableConfig\n };\n\n constructor() {\n // Reconcile row button opens the match screen (configs live in the service, dialogs in the component)\n this.accountingService.bankReconcileButton.onClick = (row: any) =>\n this.dialog.open(ReconcileDialogComponent, { width: '1100px', maxWidth: '95vw', data: row, panelClass: this.dataService?.dialogPanelClass ?? [] }) // Changed: was missing panelClass, so this dialog never picked up the modern surface\n .afterClosed().subscribe(changed => { if (changed) this.page?.tableReload.next(true); });\n }\n\n ngOnInit(): void {\n }\n\n newImport() {\n this.dialog.open(StatementImportDialogComponent, { width: '860px', maxWidth: '95vw', panelClass: this.dataService?.dialogPanelClass ?? [] }) // Changed: was missing panelClass, so this dialog never picked up the modern surface\n .afterClosed().subscribe(saved => { if (saved) this.page?.tableReload.next(true); });\n }\n}\n","import { Component } from '@angular/core';\nimport { TenantTransferService } from '../../../services/tenant-transfer.service';\n\n// Moved (N11) from grip-spa into tin-spa, under Accounting (owner directive 2026-08-17). The design notes\n// from the Grip original hold: the two tables are one story, so an action on the arrangements table\n// refreshes the transfers list beneath it via the service's shared Subject.\n@Component({\n selector: 'spa-tenant-transfers',\n templateUrl: './tenant-transfers.component.html',\n styleUrls: ['./tenant-transfers.component.css'],\n standalone: false\n})\nexport class TenantTransfersComponent {\n\n constructor(public tenantTransferService: TenantTransferService) { }\n\n // Any successful action on an arrangement can change the transfers list — sending money adds a row, and\n // revoking is worth re-reading the list after too. Refreshing unconditionally is correct and cheap.\n arrangementActioned() {\n this.tenantTransferService.transfersReload.next(true);\n }\n\n}\n","<!-- Organisation Transfers — the handshake and the money that flows over it. Two sections in one page\n deliberately: an arrangement is meaningless without the transfers it permits, and a transfer is\n unreadable without the arrangement that authorised it. -->\n<h4>Organisation Transfers</h4>\n<hr>\n\n<div class=\"mt-3 tenant-transfers\" style=\"font-size: 14px;\">\n\n <p class=\"tt-lead\">\n Money can only move between two organisations that have <strong>agreed an arrangement</strong> first.\n One side proposes it, the other accepts it, and only then can the proposing side send.\n </p>\n\n <!-- (actionSuccess) — Send Money is a button on THIS table, so without this wire the Transfers list below\n still shows the previous rows after money has already moved. -->\n <spa-table [config]=\"tenantTransferService.linksTableConfig\" (actionSuccess)=\"arrangementActioned()\"></spa-table>\n\n <div class=\"tt-gap\"></div>\n\n <spa-table [config]=\"tenantTransferService.transfersTableConfig\" [reload]=\"tenantTransferService.transfersReload\"></spa-table>\n\n</div>\n","// New revenue schedule dialog (C7) — defer a submitted invoice's net revenue over a date range\nimport { Component, OnInit, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { HttpService } from 'tin-spa/core';\nimport { MessageService } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-revenue-schedule-dialog',\n template: `\n <h2 mat-dialog-title>Defer Invoice Revenue</h2>\n <mat-dialog-content>\n <div style=\"display: flex; gap: 16px; flex-wrap: wrap;\">\n <mat-form-field style=\"min-width: 280px;\">\n <mat-label>Invoice</mat-label>\n <mat-select [(ngModel)]=\"invoiceID\">\n <mat-option *ngFor=\"let option of invoices\" [value]=\"option.value\">{{ option.name }}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Service Period Start</mat-label>\n <input matInput type=\"date\" [(ngModel)]=\"startDate\">\n </mat-form-field>\n <mat-form-field>\n <mat-label>Service Period End</mat-label>\n <input matInput type=\"date\" [(ngModel)]=\"endDate\">\n </mat-form-field>\n </div>\n <p><em>The invoice's net revenue (excl. VAT) moves to Deferred Revenue and is recognized monthly, pro-rata by days, as each period ends.</em></p>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <button mat-button (click)=\"dialogRef.close(false)\">Cancel</button>\n <button mat-flat-button color=\"primary\" (click)=\"save()\" [disabled]=\"!invoiceID || !startDate || !endDate || endDate <= startDate\">Defer Revenue</button>\n </mat-dialog-actions>\n `,\n standalone: false\n})\nexport class RevenueScheduleDialogComponent implements OnInit {\n public dialogRef = inject(MatDialogRef<RevenueScheduleDialogComponent>);\n private httpService = inject(HttpService);\n private http = inject(HttpClient);\n private messageService = inject(MessageService);\n\n invoiceID: number | null = null;\n startDate = '';\n endDate = '';\n invoices: any[] = [];\n\n ngOnInit(): void {\n this.http.get<any>(`${this.httpService.apiUrl}revenueschedules/eligible-invoices/x`)\n .subscribe(res => this.invoices = res?.data ?? []);\n }\n\n save() {\n const dto = { invoiceID: this.invoiceID, startDate: this.startDate, endDate: this.endDate };\n this.http.post<any>(`${this.httpService.apiUrl}revenueschedules/dto?action=create`, dto)\n .subscribe(res => {\n this.messageService.toast(res?.message ?? (res?.success ? 'Schedule created' : 'Failed'));\n if (res?.success) this.dialogRef.close(true);\n });\n }\n}\n","// Revenue Schedules page (C7) — deferred revenue schedules with recognize-due sweep and cancel\nimport { Component, OnInit, ViewChild, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AccountingService } from 'tin-spa/core';\nimport { DataServiceLib } from 'tin-spa/core'; // Added: single resolution point for the modern dialog surface\nimport { PageConfig } from 'tin-spa/core';\nimport { PageComponent } from '../../../components/page/page.component';\nimport { RevenueScheduleDialogComponent } from './revenue-schedule-dialog.component';\n\n@Component({\n selector: 'spa-revenue-schedules',\n template: `\n <div style=\"display: flex; justify-content: flex-end;\">\n <button mat-stroked-button (click)=\"newSchedule()\">\n <mat-icon>schedule_send</mat-icon> Defer Invoice Revenue\n </button>\n </div>\n <spa-page [config]=\"pageConfig\"></spa-page>\n `,\n standalone: false\n})\nexport class RevenueSchedulesComponent implements OnInit {\n public accountingService = inject(AccountingService);\n private dataService = inject(DataServiceLib); // Added: supplies dialogPanelClass so this dialog honours appConfig.dialogStyle\n private dialog = inject(MatDialog);\n\n @ViewChild(PageComponent) page?: PageComponent;\n\n pageConfig: PageConfig = {\n title: 'Revenue Schedules',\n tableConfig: this.accountingService.revenueSchedulesTableConfig\n };\n\n ngOnInit(): void {\n }\n\n newSchedule() {\n this.dialog.open(RevenueScheduleDialogComponent, { width: '760px', maxWidth: '95vw', panelClass: this.dataService?.dialogPanelClass ?? [] }) // Changed: was missing panelClass, so this dialog never picked up the modern surface\n .afterClosed().subscribe(saved => { if (saved) this.page?.tableReload.next(true); });\n }\n}\n","// Quotations page (C10) — two-step create pattern with send/accept/reject/convert lifecycle + PDF download (C8)\nimport { HttpClient } from '@angular/common/http';\nimport { Component, OnInit, inject } from '@angular/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { HttpService } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-quotes',\n template: '<spa-page [config]=\"pageConfig\" (actionClick)=\"actionClicked($event)\"></spa-page>',\n standalone: false\n})\nexport class QuotesComponent implements OnInit {\n public accountingService = inject(AccountingService);\n private httpService = inject(HttpService);\n private http = inject(HttpClient);\n\n pageConfig: PageConfig = {\n title: 'Quotations',\n tableConfig: this.accountingService.quotesTableConfig\n };\n\n ngOnInit(): void {\n }\n\n // PDF button emits actionClick; download the blob (mirrors invoice PDF flow)\n actionClicked(event: { name: string, data: any }) {\n if (event.name === 'pdf') this.download(event.data);\n }\n\n download(quote: any) {\n this.http.post(`${this.httpService.apiUrl}quotes/pdf?action=x`, quote, { responseType: 'blob' })\n .subscribe((response: Blob) => {\n const blob = new Blob([response], { type: 'application/pdf' });\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = `Quote_${quote.quoteID}.pdf`;\n link.click();\n window.URL.revokeObjectURL(url);\n });\n }\n}\n","// Quotation rate card admin page (quotations-suite) — the quotable services a quotation is priced from, with\n// their variant rates on a nested tab. Two-step create: the service header is created first, then the details\n// dialog opens on its Rates tab. Every config lives on AccountingService beside the quotations configs, so\n// this page is the same nine lines the Quotations page is.\nimport { Component } from '@angular/core';\nimport { inject } from '@angular/core';\nimport { AccountingService } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-rate-card',\n template: '<spa-page [config]=\"pageConfig\"></spa-page>',\n standalone: false\n})\nexport class RateCardComponent {\n public accountingService = inject(AccountingService);\n\n pageConfig: PageConfig = {\n title: 'Quotation Rate Card',\n tableConfig: this.accountingService.quotableServicesTableConfig\n };\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { AccountsComponent as AccountingAccountsComponent } from '../../pages/accounting/accounts/accounts.component';\nimport { AggregatesComponent as AccountingAggregatesComponent } from '../../pages/accounting/aggregates/aggregates.component';\nimport { AgingComponent as AccountingAgingComponent } from '../../pages/accounting/aging/aging.component';\nimport { SupplierAgingComponent as AccountingSupplierAgingComponent } from '../../pages/accounting/supplier-aging/supplier-aging.component';\nimport { TransactionTypesComponent } from '../../pages/accounting/transaction-types/transaction-types.component';\nimport { TransactionsComponent as AccountingTransactionsComponent } from '../../pages/accounting/transactions/transactions.component';\nimport { InvoicesComponent as AccountingInvoicesComponent } from '../../pages/accounting/invoices/invoices.component';\nimport { StatementComponent as AccountingStatementComponent } from '../../pages/accounting/outstanding-invoices/outstanding-invoices.component';\nimport { ReportsComponent as AccountingReportsComponent } from '../../pages/accounting/reports/reports.component';\nimport { TaxRatesComponent } from '../../pages/accounting/tax-rates/tax-rates.component';\nimport { StandingOrdersComponent } from '../../pages/accounting/standing-orders/standing-orders.component';\nimport { CurrenciesComponent } from '../../pages/accounting/currencies/currencies.component'; // Changed: Removed Fixed Assets imports — moved to Assets module\nimport { BudgetsComponent as AccountingBudgetsComponent } from '../../pages/accounting/budgets/budgets.component';\nimport { BudgetVsActualComponent as AccountingBudgetVsActualComponent } from '../../pages/accounting/budget-vs-actual/budget-vs-actual.component';\nimport { AccountingDashboardComponent } from '../../pages/accounting/accounting-dashboard/accounting-dashboard.component';\nimport { InvoiceDashboardComponent } from '../../pages/accounting/invoice-dashboard/invoice-dashboard.component';\nimport { CreditNotesComponent } from '../../pages/accounting/credit-notes/credit-notes.component'; // Changed: Credit notes page (B6)\nimport { VatReturnComponent } from '../../pages/accounting/vat-return/vat-return.component'; // Changed: VAT return page (B2)\nimport { FiscalPeriodsComponent } from '../../pages/accounting/fiscal-periods/fiscal-periods.component'; // Changed: Fiscal periods page (C2)\nimport { ReceiptsComponent } from '../../pages/accounting/receipts/receipts.component'; // Changed: Customer receipts page (C3)\nimport { BankReconciliationComponent } from '../../pages/accounting/bank-reconciliation/bank-reconciliation.component'; // Changed: Bank reconciliation page (C4)\nimport { TenantTransfersComponent } from '../../pages/accounting/tenant-transfers/tenant-transfers.component'; // Added (N11): Organisation Transfers — cross-organisation money, routed under Accounting per owner directive\nimport { RevenueSchedulesComponent } from '../../pages/accounting/revenue-schedules/revenue-schedules.component'; // Changed: Deferred revenue page (C7)\nimport { QuotesComponent } from '../../pages/accounting/quotes/quotes.component'; // Changed: Quotations page (C10)\nimport { RateCardComponent } from '../../pages/accounting/rate-card/rate-card.component'; // Added (quotations-suite): quotation rate card admin page\n\n// Changed: Exported routes array for use by SpaHomeRoutingModule\n//\n// Added (F3): leaf-level data.moduleKey. INERT metadata — nothing in this library reads it and no guard is\n// attached here; a consumer opts in from its own home route. The path says \"accounting\" but three separate\n// ModuleCatalog modules have pages under it, so the leaves that do NOT belong to Accounting say so explicitly\n// (deepest data wins in the resolver, so a leaf overrides the area). Keys are transcribed from the CapItem\n// tree in datalib.service.ts — the same source the nav menu already gates on — not invented:\n// invoicing -> capInvoicing.capSubItems (datalib.service.ts:372) — dashboard, quotes, invoices,\n// credit notes, receipts, revenue schedules, aging, statements\n// purchasing -> capSupplierAging (:520) is a child of capPurchasingModule (:456) despite its accounting path\n// Everything left bare here is a capAccounting sub-item (:267) and correctly inherits the area's \"accounting\".\nexport const ACCOUNTING_ROUTES: Routes = [\n { path: \"accounts\", component: AccountingAccountsComponent },\n { path: \"aggregates\", component: AccountingAggregatesComponent },\n { path: \"transaction-types\", component: TransactionTypesComponent },\n { path: \"transactions\", component: AccountingTransactionsComponent },\n { path: \"invoices\", component: AccountingInvoicesComponent, data: { moduleKey: 'invoicing' } }, // Added (F3): Invoicing, not Accounting\n { path: \"aging\", component: AccountingAgingComponent, data: { moduleKey: 'invoicing', capName: 'cap58' } }, // Added (F3): capAging is a capInvoicing sub-item // Changed: added INERT capName — nothing in this library reads it; cap58 is capAging, whose menu link is exactly \"home/accounting/aging\" (datalib.service.ts:489,491). A consumer that attaches capabilityGuard() in its OWN route table refuses the deep link; an app that never adds that line is unaffected\n { path: \"supplier-aging\", component: AccountingSupplierAgingComponent, data: { moduleKey: 'purchasing', capName: 'cap63' } }, // Added (F3): AP Aging belongs to Purchasing // Changed: added INERT capName — cap63 is capSupplierAging, menu link exactly \"home/accounting/supplier-aging\" (datalib.service.ts:597,599)\n { path: \"statements\", component: AccountingStatementComponent, data: { moduleKey: 'invoicing' } }, // Added (F3): customer statement is an Invoicing page\n { path: \"reports\", component: AccountingReportsComponent },\n { path: \"tax-rates\", component: TaxRatesComponent },\n { path: \"standing-orders\", component: StandingOrdersComponent },\n { path: \"currencies\", component: CurrenciesComponent }, // Changed: Removed Fixed Assets routes — moved to Assets module\n { path: \"budgets\", component: AccountingBudgetsComponent },\n { path: \"budget-vs-actual\", component: AccountingBudgetVsActualComponent },\n { path: \"dashboard\", component: AccountingDashboardComponent },\n { path: \"invoice-dashboard\", component: InvoiceDashboardComponent, data: { moduleKey: 'invoicing' } }, // Added (F3): Invoicing dashboard\n { path: \"credit-notes\", component: CreditNotesComponent, data: { moduleKey: 'invoicing' } }, // Changed: Credit notes route (B6) // Added (F3)\n { path: \"vat-return\", component: VatReturnComponent }, // Changed: VAT return route (B2)\n { path: \"fiscal-periods\", component: FiscalPeriodsComponent }, // Changed: Fiscal periods route (C2)\n { path: \"receipts\", component: ReceiptsComponent, data: { moduleKey: 'invoicing' } }, // Changed: Customer receipts route (C3) // Added (F3)\n { path: \"bank-reconciliation\", component: BankReconciliationComponent }, // Changed: Bank reconciliation route (C4)\n { path: \"tenant-transfers\", component: TenantTransfersComponent }, // Added (N11): Organisation Transfers\n { path: \"revenue-schedules\", component: RevenueSchedulesComponent, data: { moduleKey: 'invoicing' } }, // Changed: Deferred revenue route (C7) // Added (F3)\n { path: \"quotes\", component: QuotesComponent, data: { moduleKey: 'invoicing' } }, // Changed: Quotations route (C10) // Added (F3)\n { path: \"rate-card\", component: RateCardComponent, data: { moduleKey: 'invoicing' } } // Added (quotations-suite): the rate card the guided quote builder prices from — same module key and same cap53 server gate as Quotations\n];\n\n@NgModule({\n imports: [RouterModule.forChild(ACCOUNTING_ROUTES)],\n exports: [RouterModule]\n})\nexport class AccountingRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { AccountingRoutingModule } from './accounting-routing.module'; // Added (S10-part-1): this domain is now reached by loadChildren, so it carries its own RouterModule.forChild table instead of contributing routes to the eager parent\nimport { CommonModule } from '@angular/common';\nimport { SpaAdminModule } from '../spa-admin.module';\nimport { AccountsComponent as AccountingAccountsComponent } from '../../pages/accounting/accounts/accounts.component';\nimport { AggregatesComponent as AccountingAggregatesComponent } from '../../pages/accounting/aggregates/aggregates.component';\nimport { AgingComponent as AccountingAgingComponent } from '../../pages/accounting/aging/aging.component';\nimport { SupplierAgingComponent as AccountingSupplierAgingComponent } from '../../pages/accounting/supplier-aging/supplier-aging.component';\nimport { TransactionTypesComponent } from '../../pages/accounting/transaction-types/transaction-types.component';\nimport { TransactionsComponent as AccountingTransactionsComponent } from '../../pages/accounting/transactions/transactions.component';\nimport { InvoicesComponent as AccountingInvoicesComponent } from '../../pages/accounting/invoices/invoices.component';\nimport { StatementComponent as AccountingStatementComponent } from '../../pages/accounting/outstanding-invoices/outstanding-invoices.component';\nimport { ReportsComponent as AccountingReportsComponent } from '../../pages/accounting/reports/reports.component';\nimport { TaxRatesComponent } from '../../pages/accounting/tax-rates/tax-rates.component';\nimport { StandingOrdersComponent } from '../../pages/accounting/standing-orders/standing-orders.component';\nimport { CurrenciesComponent } from '../../pages/accounting/currencies/currencies.component'; // Changed: Removed Fixed Assets imports — moved to Assets module\nimport { BudgetsComponent as AccountingBudgetsComponent } from '../../pages/accounting/budgets/budgets.component';\nimport { BudgetVsActualComponent as AccountingBudgetVsActualComponent } from '../../pages/accounting/budget-vs-actual/budget-vs-actual.component';\nimport { AccountingDashboardComponent } from '../../pages/accounting/accounting-dashboard/accounting-dashboard.component';\nimport { InvoiceDashboardComponent } from '../../pages/accounting/invoice-dashboard/invoice-dashboard.component';\nimport { CreditNotesComponent } from '../../pages/accounting/credit-notes/credit-notes.component'; // Changed: Credit notes page (B6)\nimport { VatReturnComponent } from '../../pages/accounting/vat-return/vat-return.component'; // Changed: VAT return page (B2)\nimport { FiscalPeriodsComponent } from '../../pages/accounting/fiscal-periods/fiscal-periods.component'; // Changed: Fiscal periods page (C2)\nimport { ReceiptsComponent } from '../../pages/accounting/receipts/receipts.component'; // Changed: Customer receipts page (C3)\nimport { BankReconciliationComponent } from '../../pages/accounting/bank-reconciliation/bank-reconciliation.component'; // Changed: Bank reconciliation page (C4)\nimport { TenantTransfersComponent } from '../../pages/accounting/tenant-transfers/tenant-transfers.component'; // Added (N11): Organisation Transfers page\nimport { StatementImportDialogComponent } from '../../pages/accounting/bank-reconciliation/statement-import-dialog.component'; // Changed: Statement import dialog (C4)\nimport { ReconcileDialogComponent } from '../../pages/accounting/bank-reconciliation/reconcile-dialog.component'; // Changed: Reconcile match screen (C4)\nimport { RevenueSchedulesComponent } from '../../pages/accounting/revenue-schedules/revenue-schedules.component'; // Changed: Deferred revenue page (C7)\nimport { RevenueScheduleDialogComponent } from '../../pages/accounting/revenue-schedules/revenue-schedule-dialog.component'; // Changed: Defer revenue dialog (C7)\nimport { QuotesComponent } from '../../pages/accounting/quotes/quotes.component'; // Changed: Quotations page (C10)\nimport { RateCardComponent } from '../../pages/accounting/rate-card/rate-card.component'; // Added (quotations-suite): quotation rate card admin page\n\n@NgModule({\n declarations: [\n AccountingAccountsComponent,\n AccountingAggregatesComponent,\n AccountingAgingComponent,\n AccountingSupplierAgingComponent,\n TransactionTypesComponent,\n AccountingTransactionsComponent,\n AccountingInvoicesComponent,\n AccountingStatementComponent,\n AccountingReportsComponent,\n AccountingBudgetsComponent,\n AccountingBudgetVsActualComponent,\n AccountingDashboardComponent,\n InvoiceDashboardComponent,\n CreditNotesComponent, // Changed: Credit notes page (B6)\n VatReturnComponent, // Changed: VAT return page (B2)\n FiscalPeriodsComponent, // Changed: Fiscal periods page (C2)\n ReceiptsComponent, // Changed: Customer receipts page (C3)\n BankReconciliationComponent, // Changed: Bank reconciliation page (C4)\n TenantTransfersComponent, // Added (N11): Organisation Transfers page\n StatementImportDialogComponent, // Changed: Statement import dialog (C4)\n ReconcileDialogComponent, // Changed: Reconcile match screen (C4)\n RevenueSchedulesComponent, // Changed: Deferred revenue page (C7)\n RevenueScheduleDialogComponent, // Changed: Defer revenue dialog (C7)\n QuotesComponent, // Changed: Quotations page (C10)\n RateCardComponent // Added (quotations-suite): quotation rate card admin page\n ],\n imports: [\n AccountingRoutingModule,\n CommonModule,\n SpaAdminModule,\n // Changed: Standalone components must be imported, not declared\n TaxRatesComponent,\n StandingOrdersComponent,\n CurrenciesComponent // Changed: Removed Fixed Assets — moved to Assets module\n ]\n})\nexport class AccountingModule { }\n"],"names":["i2.TilesComponent","i3.TabsComponent","i2.TabsComponent","i2","i4","i5.TilesComponent","i6.TabsComponent","i3.TilesComponent","i4.TabsComponent","i1.PageComponent","i1","i3","i6.DateComponent","i7.TableComponent","i8.PageComponent","i9.SelectLiteComponent","i5","i6","i7","i8.TabsComponent","i4.SelectLiteComponent","i4.ChartsComponent","i8","i3.PageComponent","i1.TenantTransferService","i2.TableComponent","AccountingAccountsComponent","AccountingAggregatesComponent","AccountingTransactionsComponent","AccountingInvoicesComponent","AccountingAgingComponent","AccountingSupplierAgingComponent","AccountingStatementComponent","AccountingReportsComponent","AccountingBudgetsComponent","AccountingBudgetVsActualComponent"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Component } from '@angular/core';
|
|
3
3
|
import { take } from 'rxjs/operators';
|
|
4
|
-
import { A as AgentService, a as AgentComponent } from './tin-spa-agent.component-
|
|
4
|
+
import { A as AgentService, a as AgentComponent } from './tin-spa-agent.component-CZKMWl3r.mjs';
|
|
5
5
|
|
|
6
6
|
// Routed chat page (home/agent) — the shared agent widget rendered in page mode. The component is a shell:
|
|
7
7
|
// all chat state lives in the AgentService singleton, which is what lets a conversation started in the
|
|
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
36
36
|
}], ctorParameters: () => [{ type: AgentService }] });
|
|
37
37
|
|
|
38
38
|
export { AgentPageComponent };
|
|
39
|
-
//# sourceMappingURL=tin-spa-agent-page.component-
|
|
39
|
+
//# sourceMappingURL=tin-spa-agent-page.component-DTYn54p0.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tin-spa-agent-page.component-
|
|
1
|
+
{"version":3,"file":"tin-spa-agent-page.component-DTYn54p0.mjs","sources":["../../../projects/tin-spa/src/lib/pages/agent-page/agent-page.component.ts","../../../projects/tin-spa/src/lib/pages/agent-page/agent-page.component.html"],"sourcesContent":["// Routed chat page (home/agent) — the shared agent widget rendered in page mode. The component is a shell:\n// all chat state lives in the AgentService singleton, which is what lets a conversation started in the\n// desktop floating window continue here unchanged.\nimport { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { AgentService } from '../../services/agent.service';\nimport { AgentComponent } from '../../components/agent/agent.component'; // Added (lazy-modularization S7): a standalone host imports its template's components by path — this template renders <spa-agent>\n\n@Component({\n selector: 'spa-agent-page',\n templateUrl: './agent-page.component.html',\n styleUrls: ['./agent-page.component.css'],\n // Changed (lazy-modularization S7): standalone, because the home/agent route now reaches this component\n // through a DYNAMIC import (spa-home-routing.module.ts) and a lazily-loaded route target cannot be an\n // NgModule declaration. TinSpaModule no longer declares it — see that file.\n standalone: true,\n imports: [AgentComponent] // Added (S7): the template's only element, imported by path now that no NgModule supplies it\n})\nexport class AgentPageComponent implements OnInit, OnDestroy {\n\n private subs: Subscription[] = [];\n\n constructor(private agentService: AgentService) {}\n\n ngOnInit(): void {\n // open() is the call that restores the last conversation, so the page needs it — but isOpen is SHARED\n // with the desktop floating window, and forcing it true when a thread is already loaded would leave that\n // window popped open on the next route. So it is called only when nothing has loaded yet, mirroring the\n // service's own hasLoadedInitial guard.\n this.subs.push(this.agentService.currentConversationId$.pipe(take(1)).subscribe(id => {\n if (id === null) this.agentService.open();\n }));\n }\n\n ngOnDestroy(): void {\n // Deliberately no close() here — isOpen belongs to the floating window. Closing it on leaving the page\n // would reach across and shut a chat the user never opened from here.\n this.subs.forEach(s => s.unsubscribe());\n }\n}\n","<!-- No page chrome of its own: the widget header already carries the agent name, online status, conversation\n switcher and new-conversation button, and a second title bar above it would just repeat them. -->\n<spa-agent [pageMode]=\"true\"></spa-agent>\n"],"names":["i1.AgentService"],"mappings":";;;;;AAAA;AACA;AACA;MAiBa,kBAAkB,CAAA;AAI7B,IAAA,WAAA,CAAoB,YAA0B,EAAA;QAA1B,IAAA,CAAA,YAAY,GAAZ,YAAY;QAFxB,IAAA,CAAA,IAAI,GAAmB,EAAE;IAEgB;IAEjD,QAAQ,GAAA;;;;;QAKN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAG;YACnF,IAAI,EAAE,KAAK,IAAI;AAAE,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC3C,CAAC,CAAC,CAAC;IACL;IAEA,WAAW,GAAA;;;AAGT,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACzC;+GApBW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB/B,sQAGA,EAAA,MAAA,EAAA,CAAA,iNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDcY,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEb,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAMd,IAAI,EAAA,OAAA,EACP,CAAC,cAAc,CAAC;;;;;;"}
|
package/fesm2022/{tin-spa-agent.component-D0CGGnGZ.mjs → tin-spa-agent.component-CZKMWl3r.mjs}
RENAMED
|
@@ -6,7 +6,7 @@ import { NavigationEnd } from '@angular/router';
|
|
|
6
6
|
import { trigger, transition, style, animate } from '@angular/animations';
|
|
7
7
|
import * as i1$1 from 'tin-spa/core';
|
|
8
8
|
import { SpaMatModule } from 'tin-spa/core';
|
|
9
|
-
import { f as CamelToWordsPipe } from './tin-spa-tin-spa-
|
|
9
|
+
import { f as CamelToWordsPipe } from './tin-spa-tin-spa-BMy59BVn.mjs';
|
|
10
10
|
import * as i1 from '@angular/platform-browser';
|
|
11
11
|
import { BehaviorSubject } from 'rxjs';
|
|
12
12
|
import * as i2 from '@angular/cdk/layout';
|
|
@@ -1376,4 +1376,4 @@ var agent_component = /*#__PURE__*/Object.freeze({
|
|
|
1376
1376
|
});
|
|
1377
1377
|
|
|
1378
1378
|
export { AgentService as A, AgentComponent as a, agent_component as b };
|
|
1379
|
-
//# sourceMappingURL=tin-spa-agent.component-
|
|
1379
|
+
//# sourceMappingURL=tin-spa-agent.component-CZKMWl3r.mjs.map
|