tin-spa 20.14.113 → 20.15.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 +71 -10
- package/fesm2022/{tin-spa-accounting.module-Cg4vWaJE.mjs → tin-spa-accounting.module-BILkGXdD.mjs} +77 -89
- package/fesm2022/tin-spa-accounting.module-BILkGXdD.mjs.map +1 -0
- package/fesm2022/{tin-spa-agent-page.component-DJvMPjCQ.mjs → tin-spa-agent-page.component-Cp4bqg6t.mjs} +2 -2
- package/fesm2022/{tin-spa-agent-page.component-DJvMPjCQ.mjs.map → tin-spa-agent-page.component-Cp4bqg6t.mjs.map} +1 -1
- package/fesm2022/{tin-spa-agent.component-D0CGGnGZ.mjs → tin-spa-agent.component-B9lNOt77.mjs} +4 -4
- package/fesm2022/{tin-spa-agent.component-D0CGGnGZ.mjs.map → tin-spa-agent.component-B9lNOt77.mjs.map} +1 -1
- package/fesm2022/{tin-spa-assets.module-qIWNwJ2E.mjs → tin-spa-assets.module-DmJme9IP.mjs} +16 -11
- package/fesm2022/tin-spa-assets.module-DmJme9IP.mjs.map +1 -0
- package/fesm2022/tin-spa-core.mjs +380 -112
- package/fesm2022/tin-spa-core.mjs.map +1 -1
- package/fesm2022/{tin-spa-general-erp.module-CoYxceLj.mjs → tin-spa-general-erp.module-XyprAx0S.mjs} +2 -2
- package/fesm2022/{tin-spa-general-erp.module-CoYxceLj.mjs.map → tin-spa-general-erp.module-XyprAx0S.mjs.map} +1 -1
- package/fesm2022/{tin-spa-hr.module-CKPZ9ZOj.mjs → tin-spa-hr.module-nk3eBN8I.mjs} +2 -2
- package/fesm2022/{tin-spa-hr.module-CKPZ9ZOj.mjs.map → tin-spa-hr.module-nk3eBN8I.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-Dht0gTeq.mjs} +16 -11
- package/fesm2022/tin-spa-inventory.module-Dht0gTeq.mjs.map +1 -0
- package/fesm2022/{tin-spa-loans.module-BTDmgrWo.mjs → tin-spa-loans.module-CZrynkhJ.mjs} +2 -2
- package/fesm2022/{tin-spa-loans.module-BTDmgrWo.mjs.map → tin-spa-loans.module-CZrynkhJ.mjs.map} +1 -1
- package/fesm2022/{tin-spa-manufacturing.module-CHta6oV_.mjs → tin-spa-manufacturing.module-DN8362Ms.mjs} +2 -2
- package/fesm2022/{tin-spa-manufacturing.module-CHta6oV_.mjs.map → tin-spa-manufacturing.module-DN8362Ms.mjs.map} +1 -1
- package/fesm2022/{tin-spa-payroll.module-CZ_GO1jF.mjs → tin-spa-payroll.module-DLD8XGfX.mjs} +12 -9
- package/fesm2022/{tin-spa-payroll.module-CZ_GO1jF.mjs.map → tin-spa-payroll.module-DLD8XGfX.mjs.map} +1 -1
- package/fesm2022/{tin-spa-purchasing.module-NCdwquaF.mjs → tin-spa-purchasing.module-D4tSAY7P.mjs} +16 -11
- package/fesm2022/tin-spa-purchasing.module-D4tSAY7P.mjs.map +1 -0
- package/fesm2022/{tin-spa-sales.module-D0uEGJW7.mjs → tin-spa-sales.module-BoM6453x.mjs} +40 -17
- package/fesm2022/tin-spa-sales.module-BoM6453x.mjs.map +1 -0
- package/fesm2022/{tin-spa-tenancy-erp.module-GwIv8Wbc.mjs → tin-spa-tenancy-erp.module-BhlUtBMA.mjs} +2 -2
- package/fesm2022/{tin-spa-tenancy-erp.module-GwIv8Wbc.mjs.map → tin-spa-tenancy-erp.module-BhlUtBMA.mjs.map} +1 -1
- package/fesm2022/{tin-spa-tin-spa-Cqe5hYTr.mjs → tin-spa-tin-spa-Ca9PhXiH.mjs} +2410 -247
- package/fesm2022/tin-spa-tin-spa-Ca9PhXiH.mjs.map +1 -0
- package/fesm2022/tin-spa.mjs +1 -1
- package/http/index.d.ts +3 -1
- package/index.d.ts +386 -25
- 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
package/fesm2022/{tin-spa-accounting.module-Cg4vWaJE.mjs → tin-spa-accounting.module-BILkGXdD.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, e as SpaAdminModule } from './tin-spa-tin-spa-Ca9PhXiH.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 i5 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 i6$1 from '@angular/material/select';
|
|
22
22
|
import * as i4$2 from '@angular/material/checkbox';
|
|
23
23
|
|
|
24
24
|
class AccountsComponent {
|
|
@@ -80,7 +80,7 @@ class AccountsComponent {
|
|
|
80
80
|
<spa-tiles [config]="accountTileConfig"></spa-tiles>
|
|
81
81
|
|
|
82
82
|
<spa-tabs [tableConfigs]="accountTabConfigs"></spa-tabs>
|
|
83
|
-
`, isInline: true, dependencies: [{ kind: "component", type: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "tileClick", "tileUnClick"] }, { kind: "component", type: TabsComponent, selector: "spa-tabs", inputs: ["tableConfigs", "reload", "reloadTab", "parentDetails", "localMode", "nestingLevel"], outputs: ["formRefresh", "actionSuccess"] }] }); }
|
|
83
|
+
`, isInline: true, dependencies: [{ kind: "component", type: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "contentResolved", "tileClick", "tileUnClick"] }, { kind: "component", type: TabsComponent, selector: "spa-tabs", inputs: ["tableConfigs", "reload", "reloadTab", "parentDetails", "localMode", "nestingLevel"], outputs: ["formRefresh", "actionSuccess"] }] }); }
|
|
84
84
|
}
|
|
85
85
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AccountsComponent, decorators: [{
|
|
86
86
|
type: Component,
|
|
@@ -238,7 +238,7 @@ class AgingComponent {
|
|
|
238
238
|
</div>
|
|
239
239
|
|
|
240
240
|
<spa-tabs [tableConfigs]="agingTableConfigs"></spa-tabs>
|
|
241
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "tileClick", "tileUnClick"] }, { kind: "component", type: TabsComponent, selector: "spa-tabs", inputs: ["tableConfigs", "reload", "reloadTab", "parentDetails", "localMode", "nestingLevel"], outputs: ["formRefresh", "actionSuccess"] }] }); }
|
|
241
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "contentResolved", "tileClick", "tileUnClick"] }, { kind: "component", type: TabsComponent, selector: "spa-tabs", inputs: ["tableConfigs", "reload", "reloadTab", "parentDetails", "localMode", "nestingLevel"], outputs: ["formRefresh", "actionSuccess"] }] }); }
|
|
242
242
|
}
|
|
243
243
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AgingComponent, decorators: [{
|
|
244
244
|
type: Component,
|
|
@@ -324,7 +324,7 @@ class SupplierAgingComponent {
|
|
|
324
324
|
</div>
|
|
325
325
|
|
|
326
326
|
<spa-tabs [tableConfigs]="agingTableConfigs"></spa-tabs>
|
|
327
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "tileClick", "tileUnClick"] }, { kind: "component", type: TabsComponent, selector: "spa-tabs", inputs: ["tableConfigs", "reload", "reloadTab", "parentDetails", "localMode", "nestingLevel"], outputs: ["formRefresh", "actionSuccess"] }] }); }
|
|
327
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "contentResolved", "tileClick", "tileUnClick"] }, { kind: "component", type: TabsComponent, selector: "spa-tabs", inputs: ["tableConfigs", "reload", "reloadTab", "parentDetails", "localMode", "nestingLevel"], outputs: ["formRefresh", "actionSuccess"] }] }); }
|
|
328
328
|
}
|
|
329
329
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: SupplierAgingComponent, decorators: [{
|
|
330
330
|
type: Component,
|
|
@@ -569,7 +569,7 @@ class StatementComponent {
|
|
|
569
569
|
|
|
570
570
|
</div>
|
|
571
571
|
</ng-template>
|
|
572
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "tileClick", "tileUnClick"] }, { kind: "component", type: DateComponent, selector: "spa-date", inputs: ["required", "min", "max", "boundContext", "readonly", "hint", "value", "display", "placeholder", "width", "suffix", "infoMessage", "copyContent", "clearContent"], outputs: ["valueChange"] }, { kind: "component", type: TableComponent, selector: "spa-table", inputs: ["data", "tileData", "config", "localMode", "parentDetails", "reload", "activeTab", "inTab", "nestingLevel"], outputs: ["dataLoad", "totalChange", "actionSuccess", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange", "actionResponse"] }, { kind: "component", type: PageComponent, selector: "spa-page", inputs: ["config"], outputs: ["searchModeActivated", "searchModeDeactivated", "refreshClick", "actionClick", "actionResponse", "inputChange", "createClick", "searchClick", "dataLoad", "titleActionChange"] }, { kind: "component", type: SelectLiteComponent, selector: "spa-select-lite" }] }); }
|
|
572
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "contentResolved", "tileClick", "tileUnClick"] }, { kind: "component", type: DateComponent, selector: "spa-date", inputs: ["required", "min", "max", "boundContext", "readonly", "hint", "value", "display", "placeholder", "width", "suffix", "infoMessage", "copyContent", "clearContent"], outputs: ["valueChange"] }, { kind: "component", type: TableComponent, selector: "spa-table", inputs: ["data", "tileData", "config", "localMode", "parentDetails", "reload", "activeTab", "inTab", "nestingLevel"], outputs: ["dataLoad", "totalChange", "actionSuccess", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange", "actionResponse", "contentResolved"] }, { kind: "component", type: PageComponent, selector: "spa-page", inputs: ["config"], outputs: ["searchModeActivated", "searchModeDeactivated", "refreshClick", "actionClick", "actionResponse", "inputChange", "createClick", "searchClick", "dataLoad", "titleActionChange"] }, { kind: "component", type: SelectLiteComponent, selector: "spa-select-lite" }] }); }
|
|
573
573
|
}
|
|
574
574
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: StatementComponent, decorators: [{
|
|
575
575
|
type: Component,
|
|
@@ -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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.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,
|
|
@@ -902,7 +902,7 @@ class BudgetVsActualComponent {
|
|
|
902
902
|
<spa-tiles *ngIf="summaryTileConfig.loadAction" [config]="summaryTileConfig"></spa-tiles>
|
|
903
903
|
|
|
904
904
|
<spa-tabs *ngIf="reportTabConfigs.length > 0" [tableConfigs]="reportTabConfigs"></spa-tabs>
|
|
905
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "tileClick", "tileUnClick"] }, { kind: "component", type: TabsComponent, selector: "spa-tabs", inputs: ["tableConfigs", "reload", "reloadTab", "parentDetails", "localMode", "nestingLevel"], outputs: ["formRefresh", "actionSuccess"] }, { kind: "component", type: SelectLiteComponent, selector: "spa-select-lite" }] }); }
|
|
905
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "contentResolved", "tileClick", "tileUnClick"] }, { kind: "component", type: TabsComponent, selector: "spa-tabs", inputs: ["tableConfigs", "reload", "reloadTab", "parentDetails", "localMode", "nestingLevel"], outputs: ["formRefresh", "actionSuccess"] }, { kind: "component", type: SelectLiteComponent, selector: "spa-select-lite" }] }); }
|
|
906
906
|
}
|
|
907
907
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: BudgetVsActualComponent, decorators: [{
|
|
908
908
|
type: Component,
|
|
@@ -926,7 +926,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
926
926
|
|
|
927
927
|
// Accounting module dashboard — pure financial/account performance (invoice-specific moved to invoicing)
|
|
928
928
|
class AccountingDashboardComponent {
|
|
929
|
-
constructor() {
|
|
929
|
+
constructor(dataService) {
|
|
930
|
+
this.dataService = dataService;
|
|
930
931
|
this.summaryTiles = {
|
|
931
932
|
tiles: [
|
|
932
933
|
{ name: 'inflows', alias: 'Inflows (MTD)', color: '#4caf50', icon: 'arrow_downward', style: 'icon', info: 'MTD cash inflows' }, // Changed: Cash inflows tile
|
|
@@ -937,7 +938,8 @@ class AccountingDashboardComponent {
|
|
|
937
938
|
{ name: 'cashBalance', alias: 'Cash & Bank', color: '#ff9800', icon: 'account_balance_wallet', style: 'icon', info: 'Cash + bank total' },
|
|
938
939
|
],
|
|
939
940
|
loadAction: { url: 'accounts/dashboard-summary/x' },
|
|
940
|
-
loadInit: true
|
|
941
|
+
loadInit: true,
|
|
942
|
+
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
|
|
941
943
|
};
|
|
942
944
|
// Changed: Replaced collectionRate/invoiceStatusSplit with profitMargin/expenseBreakdown
|
|
943
945
|
this.chartTiles = {
|
|
@@ -948,7 +950,8 @@ class AccountingDashboardComponent {
|
|
|
948
950
|
{ 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' },
|
|
949
951
|
],
|
|
950
952
|
loadAction: { url: 'accounts/dashboard-chart-tiles/x' },
|
|
951
|
-
loadInit: true
|
|
953
|
+
loadInit: true,
|
|
954
|
+
security: { allow: [this.dataService.capAccountingDashboard] } // Added (dashboard-alignment 1-D.3): cap27
|
|
952
955
|
};
|
|
953
956
|
// Changed: Replaced arAging/invoiceStatus with cashFlow/transactionVolume
|
|
954
957
|
this.chartConfig = {
|
|
@@ -960,7 +963,8 @@ class AccountingDashboardComponent {
|
|
|
960
963
|
],
|
|
961
964
|
loadAction: { url: 'accounts/dashboard-charts/x' },
|
|
962
965
|
loadInit: true,
|
|
963
|
-
columns: 2
|
|
966
|
+
columns: 2,
|
|
967
|
+
security: { allow: [this.dataService.capAccountingDashboard] } // Added (dashboard-alignment 1-D.3): cap27
|
|
964
968
|
};
|
|
965
969
|
// Changed: New cash/bank running balance line chart with separate data source
|
|
966
970
|
this.cashBankChartConfig = {
|
|
@@ -970,10 +974,35 @@ class AccountingDashboardComponent {
|
|
|
970
974
|
],
|
|
971
975
|
loadAction: { url: 'accounts/dashboard-cash-balances/x' },
|
|
972
976
|
loadInit: true,
|
|
973
|
-
columns: 1
|
|
977
|
+
columns: 1,
|
|
978
|
+
security: { allow: [this.dataService.capAccountingDashboard] } // Added (dashboard-alignment 1-D.3): cap27
|
|
979
|
+
};
|
|
980
|
+
// Added (dashboard-alignment 1-D.2): netProfit MOVED here from the main overview dashboard, which was the
|
|
981
|
+
// only page showing it. It keeps its own load endpoint because `accounts/dashboard-summary` does not carry
|
|
982
|
+
// the key; that endpoint's netProfit is gated on cap27 server-side (TinErp DashboardController, 4b4290b) —
|
|
983
|
+
// the same cap declared here, so the client and the server retract it together.
|
|
984
|
+
this.overviewTiles = {
|
|
985
|
+
tiles: [
|
|
986
|
+
{ name: 'netProfit', alias: 'Net Profit (MTD)', color: '#2196f3', icon: 'account_balance', style: 'icon', info: 'MTD profit' },
|
|
987
|
+
],
|
|
988
|
+
loadAction: { url: 'dashboard/overview/summary' },
|
|
989
|
+
loadInit: true,
|
|
990
|
+
security: { allow: [this.dataService.capAccountingDashboard] }
|
|
991
|
+
};
|
|
992
|
+
// Added (dashboard-alignment 1-D.2): healthIndicators MOVED here from the main overview dashboard. It blends
|
|
993
|
+
// AR and AP and has no cap of its own, so per A15 / A-0902-26 it inherits the nearest module's — cap27, which
|
|
994
|
+
// is exactly what the TinErp gate keys it on.
|
|
995
|
+
this.overviewChartConfig = {
|
|
996
|
+
charts: [
|
|
997
|
+
{ name: 'healthIndicators', title: 'Business Health Indicators', type: 'doughnut', height: '300px', colors: ['#4caf50', '#e0e0e0', '#2196f3', '#e0e0e0', '#ff9800', '#e0e0e0'] },
|
|
998
|
+
],
|
|
999
|
+
loadAction: { url: 'dashboard/overview/charts' },
|
|
1000
|
+
loadInit: true,
|
|
1001
|
+
columns: 1,
|
|
1002
|
+
security: { allow: [this.dataService.capAccountingDashboard] }
|
|
974
1003
|
};
|
|
975
1004
|
}
|
|
976
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AccountingDashboardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1005
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AccountingDashboardComponent, deps: [{ token: i1.DataServiceLib }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
977
1006
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: AccountingDashboardComponent, isStandalone: false, selector: "spa-accounting-dashboard", ngImport: i0, template: `
|
|
978
1007
|
<div class="dashboard-container">
|
|
979
1008
|
<h4 class="dashboard-title"><mat-icon>account_balance</mat-icon> Accounting Dashboard</h4>
|
|
@@ -983,8 +1012,12 @@ class AccountingDashboardComponent {
|
|
|
983
1012
|
<spa-charts [config]="chartConfig"></spa-charts>
|
|
984
1013
|
<!-- Changed: Separate cash/bank balance chart with own data source -->
|
|
985
1014
|
<spa-charts [config]="cashBankChartConfig"></spa-charts>
|
|
1015
|
+
<!-- Added (dashboard-alignment 1-D.2): MOVED DOWN from the main overview dashboard, which was the only
|
|
1016
|
+
page showing these two. The module dashboard is the deeper page, so they belong here. -->
|
|
1017
|
+
<spa-tiles [config]="overviewTiles"></spa-tiles>
|
|
1018
|
+
<spa-charts [config]="overviewChartConfig"></spa-charts>
|
|
986
1019
|
</div>
|
|
987
|
-
`, isInline: true, styles: [".dashboard-container{padding:16px}.dashboard-title{display:flex;align-items:center;gap:8px;margin-bottom:16px;color:#333;font-weight:500}\n"], dependencies: [{ kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "tileClick", "tileUnClick"] }, { kind: "component", type: ChartsComponent, selector: "spa-charts", inputs: ["config", "data", "reload"] }] }); }
|
|
1020
|
+
`, isInline: true, styles: [".dashboard-container{padding:16px}.dashboard-title{display:flex;align-items:center;gap:8px;margin-bottom:16px;color:#333;font-weight:500}\n"], dependencies: [{ kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "contentResolved", "tileClick", "tileUnClick"] }, { kind: "component", type: ChartsComponent, selector: "spa-charts", inputs: ["config", "data", "reload"], outputs: ["contentResolved"] }] }); }
|
|
988
1021
|
}
|
|
989
1022
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AccountingDashboardComponent, decorators: [{
|
|
990
1023
|
type: Component,
|
|
@@ -997,15 +1030,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
997
1030
|
<spa-charts [config]="chartConfig"></spa-charts>
|
|
998
1031
|
<!-- Changed: Separate cash/bank balance chart with own data source -->
|
|
999
1032
|
<spa-charts [config]="cashBankChartConfig"></spa-charts>
|
|
1033
|
+
<!-- Added (dashboard-alignment 1-D.2): MOVED DOWN from the main overview dashboard, which was the only
|
|
1034
|
+
page showing these two. The module dashboard is the deeper page, so they belong here. -->
|
|
1035
|
+
<spa-tiles [config]="overviewTiles"></spa-tiles>
|
|
1036
|
+
<spa-charts [config]="overviewChartConfig"></spa-charts>
|
|
1000
1037
|
</div>
|
|
1001
1038
|
`, standalone: false, styles: [".dashboard-container{padding:16px}.dashboard-title{display:flex;align-items:center;gap:8px;margin-bottom:16px;color:#333;font-weight:500}\n"] }]
|
|
1002
|
-
}] });
|
|
1039
|
+
}], ctorParameters: () => [{ type: i1.DataServiceLib }] });
|
|
1003
1040
|
|
|
1004
1041
|
// Invoice module dashboard with pipeline visibility, aging, and collection KPIs
|
|
1005
1042
|
class InvoiceDashboardComponent {
|
|
1006
1043
|
constructor(dataService) {
|
|
1007
1044
|
this.dataService = dataService;
|
|
1008
|
-
this.attentionItems = [];
|
|
1009
1045
|
// Changed: Summary tiles — invoice pipeline KPIs
|
|
1010
1046
|
this.summaryTiles = {
|
|
1011
1047
|
tiles: [
|
|
@@ -1017,7 +1053,8 @@ class InvoiceDashboardComponent {
|
|
|
1017
1053
|
{ name: 'avgDaysToPay', alias: 'Avg Days to Pay', color: '#7b1fa2', icon: 'schedule', style: 'icon', suffix: ' days', info: 'Average payment turnaround' },
|
|
1018
1054
|
],
|
|
1019
1055
|
loadAction: { url: 'invoices/dashboard-summary/x' },
|
|
1020
|
-
loadInit: true
|
|
1056
|
+
loadInit: true,
|
|
1057
|
+
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
|
|
1021
1058
|
};
|
|
1022
1059
|
// Changed: Chart tiles — collection gauge, trend sparkline, status pie, aging bar
|
|
1023
1060
|
this.chartTiles = {
|
|
@@ -1028,7 +1065,8 @@ class InvoiceDashboardComponent {
|
|
|
1028
1065
|
{ 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' },
|
|
1029
1066
|
],
|
|
1030
1067
|
loadAction: { url: 'invoices/dashboard-chart-tiles/x' },
|
|
1031
|
-
loadInit: true
|
|
1068
|
+
loadInit: true,
|
|
1069
|
+
security: { allow: [this.dataService.capInvoiceDashboard] } // Added (dashboard-alignment 1-D.3): cap53
|
|
1032
1070
|
};
|
|
1033
1071
|
// Changed: Full charts — revenue pipeline, aging breakdown, top customers, payment trend
|
|
1034
1072
|
this.chartConfig = {
|
|
@@ -1041,16 +1079,10 @@ class InvoiceDashboardComponent {
|
|
|
1041
1079
|
],
|
|
1042
1080
|
loadAction: { url: 'invoices/dashboard-charts/x' },
|
|
1043
1081
|
loadInit: true,
|
|
1044
|
-
columns: 2
|
|
1082
|
+
columns: 2,
|
|
1083
|
+
security: { allow: [this.dataService.capInvoiceDashboard] } // Added (dashboard-alignment 1-D.3): cap53
|
|
1045
1084
|
};
|
|
1046
1085
|
}
|
|
1047
|
-
ngOnInit() {
|
|
1048
|
-
// Load attention items — top overdue invoices needing action
|
|
1049
|
-
this.dataService.CallApi({ url: 'invoices/dashboard-attention/x' }).subscribe((res) => {
|
|
1050
|
-
if (res.success)
|
|
1051
|
-
this.attentionItems = res.data || [];
|
|
1052
|
-
});
|
|
1053
|
-
}
|
|
1054
1086
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: InvoiceDashboardComponent, deps: [{ token: i1.DataServiceLib }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1055
1087
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: InvoiceDashboardComponent, isStandalone: false, selector: "spa-invoice-dashboard", ngImport: i0, template: `
|
|
1056
1088
|
<div class="dashboard-container">
|
|
@@ -1059,37 +1091,15 @@ class InvoiceDashboardComponent {
|
|
|
1059
1091
|
<div style="margin-top: 16px;"></div>
|
|
1060
1092
|
<spa-tiles [config]="chartTiles"></spa-tiles>
|
|
1061
1093
|
|
|
1062
|
-
<!--
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
</h5>
|
|
1068
|
-
<table class="kpi-table">
|
|
1069
|
-
<thead>
|
|
1070
|
-
<tr>
|
|
1071
|
-
<th>Invoice</th>
|
|
1072
|
-
<th>Customer</th>
|
|
1073
|
-
<th>Due Date</th>
|
|
1074
|
-
<th>Days Overdue</th>
|
|
1075
|
-
<th>Outstanding</th>
|
|
1076
|
-
</tr>
|
|
1077
|
-
</thead>
|
|
1078
|
-
<tbody>
|
|
1079
|
-
<tr *ngFor="let item of attentionItems">
|
|
1080
|
-
<td>{{ item.invoiceNumber }}</td>
|
|
1081
|
-
<td>{{ item.customerName }}</td>
|
|
1082
|
-
<td>{{ item.dueDate | date:'mediumDate' }}</td>
|
|
1083
|
-
<td style="color: #f44336; font-weight: 500;">{{ item.daysOverdue }}</td>
|
|
1084
|
-
<td>{{ item.outstandingAmount | currency }}</td>
|
|
1085
|
-
</tr>
|
|
1086
|
-
</tbody>
|
|
1087
|
-
</table>
|
|
1088
|
-
</div>
|
|
1094
|
+
<!-- Removed (dashboard-alignment 1-D.4): the "Needs Attention" list of overdue invoices. A dashboard
|
|
1095
|
+
shows the shape of the business; the things a person has to act on live in the Day Book, which
|
|
1096
|
+
already carries this exact list as the overdueInvoices rule
|
|
1097
|
+
(TinErp Services/DayBook/DefaultDayBookProvider.cs:118, gated .Requires(cap53)) with the same five
|
|
1098
|
+
columns off the same DayBookMoneyRow (:405-425). Nothing was lost, only relocated. -->
|
|
1089
1099
|
|
|
1090
1100
|
<spa-charts [config]="chartConfig"></spa-charts>
|
|
1091
1101
|
</div>
|
|
1092
|
-
`, isInline: true, styles: [".dashboard-container{padding:16px}.dashboard-title{display:flex;align-items:center;gap:8px;margin-bottom:16px;color:#333;font-weight:500}
|
|
1102
|
+
`, isInline: true, styles: [".dashboard-container{padding:16px}.dashboard-title{display:flex;align-items:center;gap:8px;margin-bottom:16px;color:#333;font-weight:500}\n"], dependencies: [{ kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "contentResolved", "tileClick", "tileUnClick"] }, { kind: "component", type: ChartsComponent, selector: "spa-charts", inputs: ["config", "data", "reload"], outputs: ["contentResolved"] }] }); }
|
|
1093
1103
|
}
|
|
1094
1104
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: InvoiceDashboardComponent, decorators: [{
|
|
1095
1105
|
type: Component,
|
|
@@ -1100,37 +1110,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
1100
1110
|
<div style="margin-top: 16px;"></div>
|
|
1101
1111
|
<spa-tiles [config]="chartTiles"></spa-tiles>
|
|
1102
1112
|
|
|
1103
|
-
<!--
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
</h5>
|
|
1109
|
-
<table class="kpi-table">
|
|
1110
|
-
<thead>
|
|
1111
|
-
<tr>
|
|
1112
|
-
<th>Invoice</th>
|
|
1113
|
-
<th>Customer</th>
|
|
1114
|
-
<th>Due Date</th>
|
|
1115
|
-
<th>Days Overdue</th>
|
|
1116
|
-
<th>Outstanding</th>
|
|
1117
|
-
</tr>
|
|
1118
|
-
</thead>
|
|
1119
|
-
<tbody>
|
|
1120
|
-
<tr *ngFor="let item of attentionItems">
|
|
1121
|
-
<td>{{ item.invoiceNumber }}</td>
|
|
1122
|
-
<td>{{ item.customerName }}</td>
|
|
1123
|
-
<td>{{ item.dueDate | date:'mediumDate' }}</td>
|
|
1124
|
-
<td style="color: #f44336; font-weight: 500;">{{ item.daysOverdue }}</td>
|
|
1125
|
-
<td>{{ item.outstandingAmount | currency }}</td>
|
|
1126
|
-
</tr>
|
|
1127
|
-
</tbody>
|
|
1128
|
-
</table>
|
|
1129
|
-
</div>
|
|
1113
|
+
<!-- Removed (dashboard-alignment 1-D.4): the "Needs Attention" list of overdue invoices. A dashboard
|
|
1114
|
+
shows the shape of the business; the things a person has to act on live in the Day Book, which
|
|
1115
|
+
already carries this exact list as the overdueInvoices rule
|
|
1116
|
+
(TinErp Services/DayBook/DefaultDayBookProvider.cs:118, gated .Requires(cap53)) with the same five
|
|
1117
|
+
columns off the same DayBookMoneyRow (:405-425). Nothing was lost, only relocated. -->
|
|
1130
1118
|
|
|
1131
1119
|
<spa-charts [config]="chartConfig"></spa-charts>
|
|
1132
1120
|
</div>
|
|
1133
|
-
`, standalone: false, styles: [".dashboard-container{padding:16px}.dashboard-title{display:flex;align-items:center;gap:8px;margin-bottom:16px;color:#333;font-weight:500}
|
|
1121
|
+
`, standalone: false, styles: [".dashboard-container{padding:16px}.dashboard-title{display:flex;align-items:center;gap:8px;margin-bottom:16px;color:#333;font-weight:500}\n"] }]
|
|
1134
1122
|
}], ctorParameters: () => [{ type: i1.DataServiceLib }] });
|
|
1135
1123
|
|
|
1136
1124
|
// Credit Notes page (B6) — invoice corrections/returns with GL reversal posting
|
|
@@ -1297,7 +1285,7 @@ class VatReturnComponent {
|
|
|
1297
1285
|
</mat-card>
|
|
1298
1286
|
</mat-tab>
|
|
1299
1287
|
</mat-tab-group>
|
|
1300
|
-
`, 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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.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" }] }); }
|
|
1301
1289
|
}
|
|
1302
1290
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: VatReturnComponent, decorators: [{
|
|
1303
1291
|
type: Component,
|
|
@@ -1601,7 +1589,7 @@ class StatementImportDialogComponent {
|
|
|
1601
1589
|
<button mat-button (click)="dialogRef.close(false)">Cancel</button>
|
|
1602
1590
|
<button mat-flat-button color="primary" (click)="save()" [disabled]="!canSave">Import</button>
|
|
1603
1591
|
</mat-dialog-actions>
|
|
1604
|
-
`, 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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.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$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: i6$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }] }); }
|
|
1605
1593
|
}
|
|
1606
1594
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: StatementImportDialogComponent, decorators: [{
|
|
1607
1595
|
type: Component,
|
|
@@ -1883,7 +1871,7 @@ class TenantTransfersComponent {
|
|
|
1883
1871
|
this.tenantTransferService.transfersReload.next(true);
|
|
1884
1872
|
}
|
|
1885
1873
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: TenantTransfersComponent, deps: [{ token: TenantTransferService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1886
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: TenantTransfersComponent, isStandalone: false, selector: "spa-tenant-transfers", ngImport: i0, template: "<!-- Organisation Transfers \u2014 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) \u2014 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", styles: [".tenant-transfers{max-width:100%;min-width:0}.tenant-transfers .tt-lead{max-width:74ch;margin:0 0 20px;line-height:1.55;opacity:.85;overflow-wrap:break-word}.tenant-transfers spa-table{display:block;max-width:100%;min-width:0;overflow-x:auto}.tenant-transfers .tt-gap{height:28px}\n"], dependencies: [{ kind: "component", type: TableComponent, selector: "spa-table", inputs: ["data", "tileData", "config", "localMode", "parentDetails", "reload", "activeTab", "inTab", "nestingLevel"], outputs: ["dataLoad", "totalChange", "actionSuccess", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange", "actionResponse"] }] }); }
|
|
1874
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: TenantTransfersComponent, isStandalone: false, selector: "spa-tenant-transfers", ngImport: i0, template: "<!-- Organisation Transfers \u2014 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) \u2014 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", styles: [".tenant-transfers{max-width:100%;min-width:0}.tenant-transfers .tt-lead{max-width:74ch;margin:0 0 20px;line-height:1.55;opacity:.85;overflow-wrap:break-word}.tenant-transfers spa-table{display:block;max-width:100%;min-width:0;overflow-x:auto}.tenant-transfers .tt-gap{height:28px}\n"], dependencies: [{ kind: "component", type: TableComponent, selector: "spa-table", inputs: ["data", "tileData", "config", "localMode", "parentDetails", "reload", "activeTab", "inTab", "nestingLevel"], outputs: ["dataLoad", "totalChange", "actionSuccess", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange", "actionResponse", "contentResolved"] }] }); }
|
|
1887
1875
|
}
|
|
1888
1876
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: TenantTransfersComponent, decorators: [{
|
|
1889
1877
|
type: Component,
|
|
@@ -1941,7 +1929,7 @@ class RevenueScheduleDialogComponent {
|
|
|
1941
1929
|
<button mat-button (click)="dialogRef.close(false)">Cancel</button>
|
|
1942
1930
|
<button mat-flat-button color="primary" (click)="save()" [disabled]="!invoiceID || !startDate || !endDate || endDate <= startDate">Defer Revenue</button>
|
|
1943
1931
|
</mat-dialog-actions>
|
|
1944
|
-
`, 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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.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$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: i6$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }] }); }
|
|
1945
1933
|
}
|
|
1946
1934
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: RevenueScheduleDialogComponent, decorators: [{
|
|
1947
1935
|
type: Component,
|
|
@@ -2228,4 +2216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
2228
2216
|
}] });
|
|
2229
2217
|
|
|
2230
2218
|
export { AccountingModule };
|
|
2231
|
-
//# sourceMappingURL=tin-spa-accounting.module-
|
|
2219
|
+
//# sourceMappingURL=tin-spa-accounting.module-BILkGXdD.mjs.map
|