tin-spa 20.15.0 → 20.16.14
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 +37 -37
- package/fesm2022/{tin-spa-accounting.module-BILkGXdD.mjs → tin-spa-accounting.module-MuYH__EY.mjs} +58 -31
- package/fesm2022/{tin-spa-accounting.module-BILkGXdD.mjs.map → tin-spa-accounting.module-MuYH__EY.mjs.map} +1 -1
- package/fesm2022/{tin-spa-agent-page.component-Cp4bqg6t.mjs → tin-spa-agent-page.component-CUCN72Ia.mjs} +2 -2
- package/fesm2022/{tin-spa-agent-page.component-Cp4bqg6t.mjs.map → tin-spa-agent-page.component-CUCN72Ia.mjs.map} +1 -1
- package/fesm2022/{tin-spa-agent.component-B9lNOt77.mjs → tin-spa-agent.component-mIDUqL_B.mjs} +4 -4
- package/fesm2022/{tin-spa-agent.component-B9lNOt77.mjs.map → tin-spa-agent.component-mIDUqL_B.mjs.map} +1 -1
- package/fesm2022/{tin-spa-assets.module-DmJme9IP.mjs → tin-spa-assets.module-CKipQlJI.mjs} +2 -2
- package/fesm2022/{tin-spa-assets.module-DmJme9IP.mjs.map → tin-spa-assets.module-CKipQlJI.mjs.map} +1 -1
- package/fesm2022/tin-spa-core.mjs +845 -273
- package/fesm2022/tin-spa-core.mjs.map +1 -1
- package/fesm2022/{tin-spa-general-erp.module-XyprAx0S.mjs → tin-spa-general-erp.module-Bc7qsj3E.mjs} +2 -2
- package/fesm2022/{tin-spa-general-erp.module-XyprAx0S.mjs.map → tin-spa-general-erp.module-Bc7qsj3E.mjs.map} +1 -1
- package/fesm2022/{tin-spa-hr.module-nk3eBN8I.mjs → tin-spa-hr.module-hG3zFS80.mjs} +2 -2
- package/fesm2022/{tin-spa-hr.module-nk3eBN8I.mjs.map → tin-spa-hr.module-hG3zFS80.mjs.map} +1 -1
- package/fesm2022/{tin-spa-inventory.module-Dht0gTeq.mjs → tin-spa-inventory.module-BYFJazxE.mjs} +2 -2
- package/fesm2022/{tin-spa-inventory.module-Dht0gTeq.mjs.map → tin-spa-inventory.module-BYFJazxE.mjs.map} +1 -1
- package/fesm2022/tin-spa-keys.mjs +38 -2
- package/fesm2022/tin-spa-keys.mjs.map +1 -1
- package/fesm2022/tin-spa-landing.mjs +2 -2
- package/fesm2022/tin-spa-landing.mjs.map +1 -1
- package/fesm2022/{tin-spa-loans.module-CZrynkhJ.mjs → tin-spa-loans.module-ICVGFHaj.mjs} +2 -2
- package/fesm2022/{tin-spa-loans.module-CZrynkhJ.mjs.map → tin-spa-loans.module-ICVGFHaj.mjs.map} +1 -1
- package/fesm2022/{tin-spa-manufacturing.module-DN8362Ms.mjs → tin-spa-manufacturing.module-CGYMdDfS.mjs} +2 -2
- package/fesm2022/{tin-spa-manufacturing.module-DN8362Ms.mjs.map → tin-spa-manufacturing.module-CGYMdDfS.mjs.map} +1 -1
- package/fesm2022/{tin-spa-payroll.module-DLD8XGfX.mjs → tin-spa-payroll.module-hr0VZKIT.mjs} +30 -11
- package/fesm2022/tin-spa-payroll.module-hr0VZKIT.mjs.map +1 -0
- package/fesm2022/{tin-spa-purchasing.module-D4tSAY7P.mjs → tin-spa-purchasing.module-BIBDx-oe.mjs} +2 -2
- package/fesm2022/{tin-spa-purchasing.module-D4tSAY7P.mjs.map → tin-spa-purchasing.module-BIBDx-oe.mjs.map} +1 -1
- package/fesm2022/{tin-spa-sales.module-BoM6453x.mjs → tin-spa-sales.module-CoyY0k-a.mjs} +20 -4
- package/fesm2022/tin-spa-sales.module-CoyY0k-a.mjs.map +1 -0
- package/fesm2022/{tin-spa-tenancy-erp.module-BhlUtBMA.mjs → tin-spa-tenancy-erp.module-VjOlW33U.mjs} +6 -6
- package/fesm2022/tin-spa-tenancy-erp.module-VjOlW33U.mjs.map +1 -0
- package/fesm2022/{tin-spa-tin-spa-Ca9PhXiH.mjs → tin-spa-tin-spa-DhI6eeit.mjs} +683 -1269
- package/fesm2022/tin-spa-tin-spa-DhI6eeit.mjs.map +1 -0
- package/fesm2022/tin-spa.mjs +1 -1
- package/index.d.ts +37 -258
- package/keys/index.d.ts +37 -1
- package/package.json +1 -1
- package/fesm2022/tin-spa-payroll.module-DLD8XGfX.mjs.map +0 -1
- package/fesm2022/tin-spa-sales.module-BoM6453x.mjs.map +0 -1
- package/fesm2022/tin-spa-tenancy-erp.module-BhlUtBMA.mjs.map +0 -1
- package/fesm2022/tin-spa-tin-spa-Ca9PhXiH.mjs.map +0 -1
package/core/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import * as rxjs from 'rxjs';
|
|
|
2
2
|
import { BehaviorSubject, Observable, Subject } from 'rxjs';
|
|
3
3
|
import * as tin_spa_core from 'tin-spa/core';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import {
|
|
5
|
+
import { EnvironmentProviders, Injector, NgZone, OnInit, EventEmitter, OnChanges, SimpleChanges, ElementRef } from '@angular/core';
|
|
6
6
|
import * as i11 from '@angular/material/dialog';
|
|
7
7
|
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
8
8
|
import { HttpClient, HttpContext, HttpResponse, HttpErrorResponse, HttpContextToken } from '@angular/common/http';
|
|
@@ -12,10 +12,12 @@ import * as i12 from '@angular/material/snack-bar';
|
|
|
12
12
|
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
13
13
|
import { SocialUser, SocialAuthService } from '@abacritt/angularx-social-login';
|
|
14
14
|
import * as signalR from '@microsoft/signalr';
|
|
15
|
-
import
|
|
16
|
-
|
|
15
|
+
import { TinSpaRuntimeConfig } from 'tin-spa/keys';
|
|
16
|
+
export { TIN_SPA_RUNTIME_CONFIG, TIN_SPA_RUNTIME_DEFAULTS, TinSpaMsalConfig, TinSpaRuntimeConfig, TinSpaTableDefaults } from 'tin-spa/keys';
|
|
17
17
|
import * as i2 from '@angular/forms';
|
|
18
18
|
import { FormControl } from '@angular/forms';
|
|
19
|
+
import * as i1 from '@angular/common';
|
|
20
|
+
import { PlatformLocation, LocationStrategy } from '@angular/common';
|
|
19
21
|
import * as i3 from '@angular/material/menu';
|
|
20
22
|
import * as i4 from '@angular/material/slider';
|
|
21
23
|
import * as i5 from '@angular/material/table';
|
|
@@ -907,6 +909,11 @@ interface GroupConfig {
|
|
|
907
909
|
orderField?: string;
|
|
908
910
|
itemsField?: string;
|
|
909
911
|
itemTextField: string;
|
|
912
|
+
itemChipField?: string;
|
|
913
|
+
itemTimeField?: string;
|
|
914
|
+
itemSubField?: string;
|
|
915
|
+
itemTimeFormat?: string;
|
|
916
|
+
itemClassField?: string;
|
|
910
917
|
itemIcon?: Icon;
|
|
911
918
|
itemIcons?: Icon[];
|
|
912
919
|
itemAdditionalIcons?: Icon[];
|
|
@@ -916,10 +923,12 @@ interface GroupConfig {
|
|
|
916
923
|
showEmptyGroups?: boolean;
|
|
917
924
|
headerButtons?: Button[];
|
|
918
925
|
contextMenuEnabled?: boolean;
|
|
926
|
+
itemClickButton?: string;
|
|
919
927
|
filterEnabled?: boolean;
|
|
920
928
|
dragEnabled?: boolean;
|
|
921
929
|
dropAction?: Action;
|
|
922
930
|
groupOrderable?: OrderableConfig | boolean;
|
|
931
|
+
groupOrderOrientation?: 'vertical' | 'horizontal' | 'mixed';
|
|
923
932
|
}
|
|
924
933
|
interface Column {
|
|
925
934
|
name: string;
|
|
@@ -936,6 +945,7 @@ interface Column {
|
|
|
936
945
|
options?: any[];
|
|
937
946
|
optionDisplay?: string;
|
|
938
947
|
optionValue?: string;
|
|
948
|
+
display?: (row: any) => any;
|
|
939
949
|
detailsConfig?: DetailsDialogConfig;
|
|
940
950
|
hidden?: VisibilityValue;
|
|
941
951
|
visible?: VisibilityValue;
|
|
@@ -1432,6 +1442,7 @@ declare class Core {
|
|
|
1432
1442
|
static testVisible(config: FormConfig, data: any, field: Field, currentRole: any): boolean;
|
|
1433
1443
|
static isPredicateHidden(config: FormConfig, data: any, field: Field): boolean;
|
|
1434
1444
|
static buildSubmitPayload(config: FormConfig, data: any): any;
|
|
1445
|
+
static stripServerOwned(config: FormConfig, data: any): any;
|
|
1435
1446
|
static testReadOnly(config: FormConfig, data: any, field: Field): boolean;
|
|
1436
1447
|
static buttonDisplay(button: {
|
|
1437
1448
|
display?: string | ((data: any) => string);
|
|
@@ -1564,37 +1575,6 @@ declare class LogService {
|
|
|
1564
1575
|
static ɵprov: i0.ɵɵInjectableDeclaration<LogService>;
|
|
1565
1576
|
}
|
|
1566
1577
|
|
|
1567
|
-
interface TinSpaMsalConfig {
|
|
1568
|
-
clientId: string;
|
|
1569
|
-
authority: string;
|
|
1570
|
-
redirectUri: string;
|
|
1571
|
-
}
|
|
1572
|
-
interface TinSpaTableDefaults {
|
|
1573
|
-
/** Default for TableConfig.realTime. */
|
|
1574
|
-
realTime?: boolean;
|
|
1575
|
-
/** Default for TableConfig.realTimeFallbackMs — the wait before a real-time table falls back to a refresh. Library default 3000. */
|
|
1576
|
-
realTimeFallbackMs?: number;
|
|
1577
|
-
/** Default for TableConfig.offline. `true` is shorthand for { enabled: true }. */
|
|
1578
|
-
offline?: any;
|
|
1579
|
-
/** Default for TableConfig.pagination. `true` is shorthand for the library's default page size. */
|
|
1580
|
-
pagination?: any;
|
|
1581
|
-
}
|
|
1582
|
-
interface TinSpaRuntimeConfig {
|
|
1583
|
-
/** Use path routing (/home) instead of hash routing (/#/home). Default false (hash). */
|
|
1584
|
-
pathRouting: boolean;
|
|
1585
|
-
/** Enable real-time (SignalR) features. Default false (disabled). */
|
|
1586
|
-
realTime: boolean;
|
|
1587
|
-
/** Enable offline capability (TinSync: read cache + outbox + sync tray + connectivity indicator). Default false —
|
|
1588
|
-
* apps that never use offline tables should leave this off so none of the offline machinery ever runs for them. */
|
|
1589
|
-
offline?: boolean;
|
|
1590
|
-
/** Enable Microsoft SSO (MSAL). Only activates in a secure context (HTTPS/localhost). Default false. */
|
|
1591
|
-
microsoftAuth: boolean;
|
|
1592
|
-
/** MSAL credentials — required only when microsoftAuth is used. */
|
|
1593
|
-
msal?: TinSpaMsalConfig;
|
|
1594
|
-
/** Added: app-wide defaults applied to every spa-table that does not state its own value. */
|
|
1595
|
-
tableDefaults?: TinSpaTableDefaults;
|
|
1596
|
-
}
|
|
1597
|
-
declare const TIN_SPA_RUNTIME_CONFIG: InjectionToken<TinSpaRuntimeConfig>;
|
|
1598
1578
|
declare function tinSpaLocationStrategyFactory(platformLocation: PlatformLocation, baseHref: string, config: TinSpaRuntimeConfig): LocationStrategy;
|
|
1599
1579
|
/** Overlays assets/appsettings.json values (when the app loaded one) onto the code-declared config. */
|
|
1600
1580
|
declare function tinSpaRuntimeConfigFactory(codeConfig: TinSpaRuntimeConfig): TinSpaRuntimeConfig;
|
|
@@ -1853,6 +1833,7 @@ declare class OfflineService {
|
|
|
1853
1833
|
private opening;
|
|
1854
1834
|
private entries;
|
|
1855
1835
|
private readUrls;
|
|
1836
|
+
private lookupUrls;
|
|
1856
1837
|
private readPrefixes;
|
|
1857
1838
|
registered$: BehaviorSubject<boolean>;
|
|
1858
1839
|
private connectivityStarted;
|
|
@@ -2000,6 +1981,7 @@ declare class DataServiceLib {
|
|
|
2000
1981
|
capPositions: CapItem;
|
|
2001
1982
|
capUnlock: CapItem;
|
|
2002
1983
|
capReferenceData: CapItem;
|
|
1984
|
+
capPersonnelDirectory: CapItem;
|
|
2003
1985
|
capGrades: CapItem;
|
|
2004
1986
|
capPayroll: CapItem;
|
|
2005
1987
|
capSalaryStructures: CapItem;
|
|
@@ -2092,6 +2074,10 @@ declare class DataServiceLib {
|
|
|
2092
2074
|
}[];
|
|
2093
2075
|
employeeFormConfig: FormConfig;
|
|
2094
2076
|
editEmployeeButton: Button;
|
|
2077
|
+
payslipTabDetailsConfig: DetailsDialogConfig;
|
|
2078
|
+
employeeDetailsConfig: DetailsDialogConfig;
|
|
2079
|
+
userCardFormConfig: FormConfig;
|
|
2080
|
+
userDetailsConfig: DetailsDialogConfig;
|
|
2095
2081
|
employeesTableConfig: TableConfig;
|
|
2096
2082
|
positionsTableConfig: TableConfig;
|
|
2097
2083
|
departmentTableConfig: TableConfig;
|
|
@@ -2628,6 +2614,7 @@ declare class AccountingService {
|
|
|
2628
2614
|
|
|
2629
2615
|
declare class ConfigService {
|
|
2630
2616
|
private dataService;
|
|
2617
|
+
private injector?;
|
|
2631
2618
|
private config;
|
|
2632
2619
|
config$: rxjs.Observable<any>;
|
|
2633
2620
|
get value(): any;
|
|
@@ -2635,7 +2622,10 @@ declare class ConfigService {
|
|
|
2635
2622
|
private inFlight;
|
|
2636
2623
|
private failedAttempts;
|
|
2637
2624
|
private static readonly maxFailedAttempts;
|
|
2638
|
-
|
|
2625
|
+
private waiting?;
|
|
2626
|
+
constructor(dataService: DataServiceLib, injector?: Injector);
|
|
2627
|
+
private gate;
|
|
2628
|
+
private waitForToken;
|
|
2639
2629
|
load(force?: boolean): void;
|
|
2640
2630
|
refresh(): void;
|
|
2641
2631
|
clear(): void;
|
|
@@ -2847,10 +2837,12 @@ declare class SubscriptionService {
|
|
|
2847
2837
|
private enabledFeaturesSource;
|
|
2848
2838
|
enabledFeatures$: rxjs.Observable<string[]>;
|
|
2849
2839
|
private featuresLoaded;
|
|
2840
|
+
private gateMode;
|
|
2850
2841
|
constructor(httpService: HttpService, authService: AuthService);
|
|
2851
2842
|
loadFeatures(): void;
|
|
2852
2843
|
isFeatureEnabled(featureKey: string): boolean;
|
|
2853
2844
|
isModuleEnabled(featureKey: string): boolean;
|
|
2845
|
+
isEnforcing(): boolean;
|
|
2854
2846
|
clearFeatures(): void;
|
|
2855
2847
|
get loaded(): boolean;
|
|
2856
2848
|
static ɵfac: i0.ɵɵFactoryDeclaration<SubscriptionService, never>;
|
|
@@ -2919,6 +2911,8 @@ declare class PayrollService {
|
|
|
2919
2911
|
payslipLineFormConfig: FormConfig;
|
|
2920
2912
|
payslipLinesTableConfig: TableConfig;
|
|
2921
2913
|
payslipFormConfig: FormConfig;
|
|
2914
|
+
payslipDetailsConfig: DetailsDialogConfig;
|
|
2915
|
+
viewPayslipButton: Button;
|
|
2922
2916
|
payslipsChildTableConfig: TableConfig;
|
|
2923
2917
|
employeePayslipHistoryTableConfig: TableConfig;
|
|
2924
2918
|
employeeSalaryComponentFormConfig: FormConfig;
|
|
@@ -2943,6 +2937,12 @@ declare class PayrollService {
|
|
|
2943
2937
|
salaryAdvanceFormConfig: FormConfig;
|
|
2944
2938
|
salaryAdvancesTableConfig: TableConfig;
|
|
2945
2939
|
employeeSalaryAdvancesTableConfig: TableConfig;
|
|
2940
|
+
employeeBalanceRecoveriesTableConfig: TableConfig;
|
|
2941
|
+
employeeBalanceFormConfig: FormConfig;
|
|
2942
|
+
writeOffBalanceButton: Button;
|
|
2943
|
+
employeeBalanceDetailsConfig: DetailsDialogConfig;
|
|
2944
|
+
employeeBalancesTableConfig: TableConfig;
|
|
2945
|
+
employeeEmployeeBalancesTableConfig: TableConfig;
|
|
2946
2946
|
overtimeEntryFormConfig: FormConfig;
|
|
2947
2947
|
overtimeEntriesTableConfig: TableConfig;
|
|
2948
2948
|
employeeOvertimeHistoryTableConfig: TableConfig;
|
|
@@ -3090,5 +3090,5 @@ declare class SpaCoreModule {
|
|
|
3090
3090
|
static ɵinj: i0.ɵɵInjectorDeclaration<SpaCoreModule>;
|
|
3091
3091
|
}
|
|
3092
3092
|
|
|
3093
|
-
export { Account, AccountingService, Action, AlertConfig, AlertMessage, ApiErrorService, ApiResponse, AppConfig, AssetStatus, AuthService, BottomTab, CacheConfig, CapItem, ChangeUserPassword, ChartConfig, ConfigService, Constants, Core, CreditNoteStatus, DashboardConfig, DataServiceLib, DateBounds, DetailsDialogConfig, DetailsDialogProcessor, DetailsSource, FilterChipConfig, FiscalPeriodStatus, FormConfig, GRID_MENU_ROUTE, GRID_MENU_TAB, GeneralService, HttpService, InventoryService, InvoiceItemType, InvoiceStatus, LastRouteService, ListDialogConfig, LoansService, LogLevel, LogService, MenuSourceService, MessageService, MovementType, NotesConfig, NotificationsService, OfflineService, PageConfig, PaginationConfig, PayrollService, PreferencesService, PrivacyDialogComponent, ProductionService, Profile, PurchaseStatus, PurchasingService, QuoteStatus, REDACTED, ReceiptDialogComponent, ReceiptStatus, RedactingSignalRLogger, Register, Role, RoleAccess, SalesService, SearchConfig, SecurityConfig, SetupService, SignalRService, SignupData, SpaCoreModule, SpaMatModule, Step, StepConfig, StorageService, SubscriptionService, SuffixComponent, TIN_INLINE_ERRORS, TIN_LOGIN_TIER_HTTP_PROVIDERS, TIN_SILENT_REQUEST,
|
|
3094
|
-
export type { ApiErrorInfo, ApiErrorKind, AppConfigSection, AppConfigurationConfig, AppFailureClass, AppFailureContext, AutoRefreshConfig, BitwiseOption, Button, CacheRule, CapsuleConfig, CardConfig, ChartItem, ChecklistAction, ChecklistConfig, ChecklistItem, ChildField, CloseOptions, Color, Column, Confirm, CreateTabConfig, DashboardSection, DayBookButtonView, DayBookColumnPresentation, DayBookColumnView, DayBookConfig, DayBookLane, DayBookPresentation, DayBookSection, DayBookStage, DayBookStageTiles, DayBookTableView, DocumentError, DocumentKind, DocumentSource, DocumentViewerData, EntityChangeEvent, EntityInvalidatedEvent, Field, FilterChip, GroupConfig, GroupData, Icon, ImportConfig, InlineEditConfig, InlineLoadError, LoadedDocument, MenuSection, NoAccessInfo, NotificationEvent, OfflineConfig, OfflineEntry, OfflineOpStatus, OrderableConfig, OutboxOp, PlaceholderKind, RefreshResult, SearchField, SetupApprovalPreset, SetupConfig, SetupModule, SetupNotificationPreset, SetupPreset, SetupPresetCatalog, SetupPresetRole, SetupPresetSelection, SetupRoleTemplate, SetupSeedOffer, SetupStatus, SetupStep, SetupStepAction, SpaChartType, StatusConfig, StatusItem, StatusState, TableDialogConfig, TableSectionChip, TableSectionConfig, TableViewType, Tile, TileChartConfig, TileChartType, TileStyle, TinSpaAppSettings,
|
|
3093
|
+
export { Account, AccountingService, Action, AlertConfig, AlertMessage, ApiErrorService, ApiResponse, AppConfig, AssetStatus, AuthService, BottomTab, CacheConfig, CapItem, ChangeUserPassword, ChartConfig, ConfigService, Constants, Core, CreditNoteStatus, DashboardConfig, DataServiceLib, DateBounds, DetailsDialogConfig, DetailsDialogProcessor, DetailsSource, FilterChipConfig, FiscalPeriodStatus, FormConfig, GRID_MENU_ROUTE, GRID_MENU_TAB, GeneralService, HttpService, InventoryService, InvoiceItemType, InvoiceStatus, LastRouteService, ListDialogConfig, LoansService, LogLevel, LogService, MenuSourceService, MessageService, MovementType, NotesConfig, NotificationsService, OfflineService, PageConfig, PaginationConfig, PayrollService, PreferencesService, PrivacyDialogComponent, ProductionService, Profile, PurchaseStatus, PurchasingService, QuoteStatus, REDACTED, ReceiptDialogComponent, ReceiptStatus, RedactingSignalRLogger, Register, Role, RoleAccess, SalesService, SearchConfig, SecurityConfig, SetupService, SignalRService, SignupData, SpaCoreModule, SpaMatModule, Step, StepConfig, StorageService, SubscriptionService, SuffixComponent, TIN_INLINE_ERRORS, TIN_LOGIN_TIER_HTTP_PROVIDERS, TIN_SILENT_REQUEST, TableConfig, TermsDialogComponent, TextComponent, TextMaskComponent, TileConfig, TransactionTiming, UnitOfMeasure, User, derivePlaceholder, describeError, describeShape, dialogOptions, getTinSpaAppSettings, isInlineErrorRequest, isSilentRequest, loadTinSpaAppSettings, loginConfig, messageDialog, phraseSatisfied, provideTinSpaRuntime, redactSecrets, silentContext, tinRequestContext, tinSpaLocationStrategyFactory, tinSpaRuntimeConfigFactory };
|
|
3094
|
+
export type { ApiErrorInfo, ApiErrorKind, AppConfigSection, AppConfigurationConfig, AppFailureClass, AppFailureContext, AutoRefreshConfig, BitwiseOption, Button, CacheRule, CapsuleConfig, CardConfig, ChartItem, ChecklistAction, ChecklistConfig, ChecklistItem, ChildField, CloseOptions, Color, Column, Confirm, CreateTabConfig, DashboardSection, DayBookButtonView, DayBookColumnPresentation, DayBookColumnView, DayBookConfig, DayBookLane, DayBookPresentation, DayBookSection, DayBookStage, DayBookStageTiles, DayBookTableView, DocumentError, DocumentKind, DocumentSource, DocumentViewerData, EntityChangeEvent, EntityInvalidatedEvent, Field, FilterChip, GroupConfig, GroupData, Icon, ImportConfig, InlineEditConfig, InlineLoadError, LoadedDocument, MenuSection, NoAccessInfo, NotificationEvent, OfflineConfig, OfflineEntry, OfflineOpStatus, OrderableConfig, OutboxOp, PlaceholderKind, RefreshResult, SearchField, SetupApprovalPreset, SetupConfig, SetupModule, SetupNotificationPreset, SetupPreset, SetupPresetCatalog, SetupPresetRole, SetupPresetSelection, SetupRoleTemplate, SetupSeedOffer, SetupStatus, SetupStep, SetupStepAction, SpaChartType, StatusConfig, StatusItem, StatusState, TableDialogConfig, TableSectionChip, TableSectionConfig, TableViewType, Tile, TileChartConfig, TileChartType, TileStyle, TinSpaAppSettings, TinSpaMsalSettings, UserPreferences, VehiclePositionFrame, VisibilityValue };
|
package/fesm2022/{tin-spa-accounting.module-BILkGXdD.mjs → tin-spa-accounting.module-MuYH__EY.mjs}
RENAMED
|
@@ -4,7 +4,7 @@ import * as i1$2 from '@angular/router';
|
|
|
4
4
|
import { RouterModule } from '@angular/router';
|
|
5
5
|
import * as i1 from 'tin-spa/core';
|
|
6
6
|
import { AccountingService, MessageService, ApiErrorService, PurchasingService, HttpService, DataServiceLib, ReceiptDialogComponent } from 'tin-spa/core';
|
|
7
|
-
import { T as TilesComponent, a as TabsComponent, P as PageComponent, D as DateComponent, b as TableComponent, S as SelectLiteComponent, c as TinSpaModule, C as ChartsComponent, d as TenantTransferService, e as SpaAdminModule } from './tin-spa-tin-spa-
|
|
7
|
+
import { T as TilesComponent, a as TabsComponent, P as PageComponent, D as DateComponent, b as TableComponent, S as SelectLiteComponent, c as TinSpaModule, C as ChartsComponent, d as TenantTransferService, f as featureGuard, e as SpaAdminModule } from './tin-spa-tin-spa-DhI6eeit.mjs';
|
|
8
8
|
import * as i1$1 from '@angular/common';
|
|
9
9
|
import { CommonModule } from '@angular/common';
|
|
10
10
|
import * as i3 from '@angular/material/button';
|
|
@@ -13,12 +13,12 @@ import { HttpClient } from '@angular/common/http';
|
|
|
13
13
|
import * as i3$2 from '@angular/material/tabs';
|
|
14
14
|
import * as i2 from '@angular/forms';
|
|
15
15
|
import * as i7 from '@angular/material/menu';
|
|
16
|
-
import * as
|
|
16
|
+
import * as i3$3 from '@angular/material/form-field';
|
|
17
17
|
import * as i4 from '@angular/material/input';
|
|
18
18
|
import * as i6 from '@angular/material/card';
|
|
19
19
|
import * as i4$1 from '@angular/material/dialog';
|
|
20
20
|
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
21
|
-
import * as
|
|
21
|
+
import * as i7$1 from '@angular/material/select';
|
|
22
22
|
import * as i4$2 from '@angular/material/checkbox';
|
|
23
23
|
|
|
24
24
|
class AccountsComponent {
|
|
@@ -728,7 +728,7 @@ class ReportsComponent {
|
|
|
728
728
|
</div>
|
|
729
729
|
|
|
730
730
|
<spa-tabs [tableConfigs]="reportTabConfigs"></spa-tabs>
|
|
731
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type:
|
|
731
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: TabsComponent, selector: "spa-tabs", inputs: ["tableConfigs", "reload", "reloadTab", "parentDetails", "localMode", "nestingLevel"], outputs: ["formRefresh", "actionSuccess"] }] }); }
|
|
732
732
|
}
|
|
733
733
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ReportsComponent, decorators: [{
|
|
734
734
|
type: Component,
|
|
@@ -1285,7 +1285,7 @@ class VatReturnComponent {
|
|
|
1285
1285
|
</mat-card>
|
|
1286
1286
|
</mat-tab>
|
|
1287
1287
|
</mat-tab-group>
|
|
1288
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i3$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type:
|
|
1288
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i3$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }] }); }
|
|
1289
1289
|
}
|
|
1290
1290
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: VatReturnComponent, decorators: [{
|
|
1291
1291
|
type: Component,
|
|
@@ -1589,7 +1589,7 @@ class StatementImportDialogComponent {
|
|
|
1589
1589
|
<button mat-button (click)="dialogRef.close(false)">Cancel</button>
|
|
1590
1590
|
<button mat-flat-button color="primary" (click)="save()" [disabled]="!canSave">Import</button>
|
|
1591
1591
|
</mat-dialog-actions>
|
|
1592
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i4$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type:
|
|
1592
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i4$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i7$1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }] }); }
|
|
1593
1593
|
}
|
|
1594
1594
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: StatementImportDialogComponent, decorators: [{
|
|
1595
1595
|
type: Component,
|
|
@@ -1929,7 +1929,7 @@ class RevenueScheduleDialogComponent {
|
|
|
1929
1929
|
<button mat-button (click)="dialogRef.close(false)">Cancel</button>
|
|
1930
1930
|
<button mat-flat-button color="primary" (click)="save()" [disabled]="!invoiceID || !startDate || !endDate || endDate <= startDate">Defer Revenue</button>
|
|
1931
1931
|
</mat-dialog-actions>
|
|
1932
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i4$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type:
|
|
1932
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i4$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i3$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i7$1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }] }); }
|
|
1933
1933
|
}
|
|
1934
1934
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: RevenueScheduleDialogComponent, decorators: [{
|
|
1935
1935
|
type: Component,
|
|
@@ -2089,32 +2089,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
2089
2089
|
// credit notes, receipts, revenue schedules, aging, statements
|
|
2090
2090
|
// purchasing -> capSupplierAging (:520) is a child of capPurchasingModule (:456) despite its accounting path
|
|
2091
2091
|
// Everything left bare here is a capAccounting sub-item (:267) and correctly inherits the area's "accounting".
|
|
2092
|
+
// Added (plan-tier-enforcement P4.2): featureGuard('accounting') on the leaves, and WHY IT COVERS BUDGETS AND
|
|
2093
|
+
// QUOTES — the point that reads like a contradiction until you separate the two key vocabularies.
|
|
2094
|
+
//
|
|
2095
|
+
// There are fifteen plan keys and they are not all the same KIND. Six are MODULE keys and the owner armed all
|
|
2096
|
+
// six (decision 4352, option A): accounting, payroll, hr, manufacturing, loans, approvals. Three are
|
|
2097
|
+
// FINE-GRAINED keys and the owner explicitly left those unarmed for now: sales.quotes,
|
|
2098
|
+
// accounting.fixed-assets, accounting.budgets.
|
|
2099
|
+
//
|
|
2100
|
+
// 'accounting.budgets is unarmed' therefore does NOT mean 'the budgets page is ungated'. It means budgets are
|
|
2101
|
+
// not charged for SEPARATELY. On the server, BudgetsController, BudgetLinesController, QuotesController,
|
|
2102
|
+
// QuoteItemsController, QuotableServicesController and QuotableServiceRatesController all sit in
|
|
2103
|
+
// TinErp/Controllers/Accounting and every one of them now declares FeatureKey "accounting". So a tenant without
|
|
2104
|
+
// the accounting module is refused their data by the API, and the route must say the same thing or the user
|
|
2105
|
+
// reaches a page whose every request is going to be refused — which is the exact failure this guard exists to
|
|
2106
|
+
// prevent. Guarding them with 'accounting' is what MATCHES the server; leaving them bare would not.
|
|
2107
|
+
//
|
|
2108
|
+
// The genuinely ungated case is fixed-assets, and the difference is not a judgement call: its controllers live
|
|
2109
|
+
// in TinErp/Controllers/Assets, which the matrix armed with NOTHING at all. Its routes are in
|
|
2110
|
+
// assets-routing.module.ts and they carry no guard, deliberately. A route may never refuse what the server
|
|
2111
|
+
// still serves.
|
|
2112
|
+
//
|
|
2113
|
+
// Two leaves below are excluded for the same reason read the other way, and both were checked by grepping the
|
|
2114
|
+
// page components' own url: strings rather than assumed from the folder they sit in:
|
|
2115
|
+
// supplier-aging calls purchases/* — a Purchasing controller, and 'purchasing' is a FREE-plan key. Guarding
|
|
2116
|
+
// it with 'accounting' would refuse a page every tenant is entitled to.
|
|
2117
|
+
// tenant-transfers is CrossTenantTransfersController, a plain ControllerBase in Tenancy with no gate site at
|
|
2118
|
+
// all, and never armed.
|
|
2092
2119
|
const ACCOUNTING_ROUTES = [
|
|
2093
|
-
{ path: "accounts", component: AccountsComponent },
|
|
2094
|
-
{ path: "aggregates", component: AggregatesComponent },
|
|
2095
|
-
{ path: "transaction-types", component: TransactionTypesComponent },
|
|
2096
|
-
{ path: "transactions", component: TransactionsComponent },
|
|
2097
|
-
{ path: "invoices", component: InvoicesComponent, data: { moduleKey: 'invoicing' } }, // Added (F3): Invoicing, not Accounting
|
|
2098
|
-
{ path: "aging", component: AgingComponent, 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
|
|
2120
|
+
{ path: "accounts", component: AccountsComponent, canActivate: [featureGuard('accounting')] },
|
|
2121
|
+
{ path: "aggregates", component: AggregatesComponent, canActivate: [featureGuard('accounting')] },
|
|
2122
|
+
{ path: "transaction-types", component: TransactionTypesComponent, canActivate: [featureGuard('accounting')] },
|
|
2123
|
+
{ path: "transactions", component: TransactionsComponent, canActivate: [featureGuard('accounting')] },
|
|
2124
|
+
{ path: "invoices", component: InvoicesComponent, canActivate: [featureGuard('accounting')], data: { moduleKey: 'invoicing' } }, // Added (F3): Invoicing, not Accounting
|
|
2125
|
+
{ path: "aging", component: AgingComponent, canActivate: [featureGuard('accounting')], 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
|
|
2099
2126
|
{ path: "supplier-aging", component: SupplierAgingComponent, 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)
|
|
2100
|
-
{ path: "statements", component: StatementComponent, data: { moduleKey: 'invoicing' } }, // Added (F3): customer statement is an Invoicing page
|
|
2101
|
-
{ path: "reports", component: ReportsComponent },
|
|
2102
|
-
{ path: "tax-rates", component: TaxRatesComponent },
|
|
2103
|
-
{ path: "standing-orders", component: StandingOrdersComponent },
|
|
2104
|
-
{ path: "currencies", component: CurrenciesComponent }, // Changed: Removed Fixed Assets routes — moved to Assets module
|
|
2105
|
-
{ path: "budgets", component: BudgetsComponent },
|
|
2106
|
-
{ path: "budget-vs-actual", component: BudgetVsActualComponent },
|
|
2107
|
-
{ path: "dashboard", component: AccountingDashboardComponent },
|
|
2108
|
-
{ path: "invoice-dashboard", component: InvoiceDashboardComponent, data: { moduleKey: 'invoicing' } }, // Added (F3): Invoicing dashboard
|
|
2109
|
-
{ path: "credit-notes", component: CreditNotesComponent, data: { moduleKey: 'invoicing' } }, // Changed: Credit notes route (B6) // Added (F3)
|
|
2110
|
-
{ path: "vat-return", component: VatReturnComponent }, // Changed: VAT return route (B2)
|
|
2111
|
-
{ path: "fiscal-periods", component: FiscalPeriodsComponent }, // Changed: Fiscal periods route (C2)
|
|
2112
|
-
{ path: "receipts", component: ReceiptsComponent, data: { moduleKey: 'invoicing' } }, // Changed: Customer receipts route (C3) // Added (F3)
|
|
2113
|
-
{ path: "bank-reconciliation", component: BankReconciliationComponent }, // Changed: Bank reconciliation route (C4)
|
|
2127
|
+
{ path: "statements", component: StatementComponent, canActivate: [featureGuard('accounting')], data: { moduleKey: 'invoicing' } }, // Added (F3): customer statement is an Invoicing page
|
|
2128
|
+
{ path: "reports", component: ReportsComponent, canActivate: [featureGuard('accounting')] },
|
|
2129
|
+
{ path: "tax-rates", component: TaxRatesComponent, canActivate: [featureGuard('accounting')] },
|
|
2130
|
+
{ path: "standing-orders", component: StandingOrdersComponent, canActivate: [featureGuard('accounting')] },
|
|
2131
|
+
{ path: "currencies", component: CurrenciesComponent, canActivate: [featureGuard('accounting')] }, // Changed: Removed Fixed Assets routes — moved to Assets module
|
|
2132
|
+
{ path: "budgets", component: BudgetsComponent, canActivate: [featureGuard('accounting')] },
|
|
2133
|
+
{ path: "budget-vs-actual", component: BudgetVsActualComponent, canActivate: [featureGuard('accounting')] },
|
|
2134
|
+
{ path: "dashboard", component: AccountingDashboardComponent, canActivate: [featureGuard('accounting')] },
|
|
2135
|
+
{ path: "invoice-dashboard", component: InvoiceDashboardComponent, canActivate: [featureGuard('accounting')], data: { moduleKey: 'invoicing' } }, // Added (F3): Invoicing dashboard
|
|
2136
|
+
{ path: "credit-notes", component: CreditNotesComponent, canActivate: [featureGuard('accounting')], data: { moduleKey: 'invoicing' } }, // Changed: Credit notes route (B6) // Added (F3)
|
|
2137
|
+
{ path: "vat-return", component: VatReturnComponent, canActivate: [featureGuard('accounting')] }, // Changed: VAT return route (B2)
|
|
2138
|
+
{ path: "fiscal-periods", component: FiscalPeriodsComponent, canActivate: [featureGuard('accounting')] }, // Changed: Fiscal periods route (C2)
|
|
2139
|
+
{ path: "receipts", component: ReceiptsComponent, canActivate: [featureGuard('accounting')], data: { moduleKey: 'invoicing' } }, // Changed: Customer receipts route (C3) // Added (F3)
|
|
2140
|
+
{ path: "bank-reconciliation", component: BankReconciliationComponent, canActivate: [featureGuard('accounting')] }, // Changed: Bank reconciliation route (C4)
|
|
2114
2141
|
{ path: "tenant-transfers", component: TenantTransfersComponent }, // Added (N11): Organisation Transfers
|
|
2115
|
-
{ path: "revenue-schedules", component: RevenueSchedulesComponent, data: { moduleKey: 'invoicing' } }, // Changed: Deferred revenue route (C7) // Added (F3)
|
|
2116
|
-
{ path: "quotes", component: QuotesComponent, data: { moduleKey: 'invoicing' } }, // Changed: Quotations route (C10) // Added (F3)
|
|
2117
|
-
{ 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
|
|
2142
|
+
{ path: "revenue-schedules", component: RevenueSchedulesComponent, canActivate: [featureGuard('accounting')], data: { moduleKey: 'invoicing' } }, // Changed: Deferred revenue route (C7) // Added (F3)
|
|
2143
|
+
{ path: "quotes", component: QuotesComponent, canActivate: [featureGuard('accounting')], data: { moduleKey: 'invoicing' } }, // Changed: Quotations route (C10) // Added (F3)
|
|
2144
|
+
{ path: "rate-card", component: RateCardComponent, canActivate: [featureGuard('accounting')], 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
|
|
2118
2145
|
];
|
|
2119
2146
|
class AccountingRoutingModule {
|
|
2120
2147
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AccountingRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -2216,4 +2243,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
2216
2243
|
}] });
|
|
2217
2244
|
|
|
2218
2245
|
export { AccountingModule };
|
|
2219
|
-
//# sourceMappingURL=tin-spa-accounting.module-
|
|
2246
|
+
//# sourceMappingURL=tin-spa-accounting.module-MuYH__EY.mjs.map
|