fix: tenant-config fixes, cashier/share/savings UI bugs, and menu-access hardcoding

- Add Balance Sheet report and disabled-features accounting config
- Point menu-access tenant header and env.js/environment.ts tenant identifier
  at env config instead of hardcoded 'default'/'lincpay' literals
- Surface the real backend error (not a generic "no reference id") when an
  OTP send fails in contact-otp-block
- Fix branch-day "₹null" display bug (null vs undefined) and add a guard
  blocking a branch's first-ever day open before cash denomination migration
- Dynamically size the denomination count input and block re-opening an
  already-open business day from Migrate Cash Denomination
- Lock the denomination-managed cash GL row in Migrate Opening Balances
  (read-only, with a link back to Migrate Cash Denomination)
- Remove duplicate Cancel/Submit action bars on the Share Product and
  Savings Account creation preview steps; align Previous into the same row
- Hide "Apply Collection" on a share account once its advance collection
  is already settled (further purchases go through Apply Additional Shares)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-13 15:19:21 +05:30
co-authored by Claude Sonnet 5
parent 42424dff8b
commit 7b77166b19
39 changed files with 1800 additions and 266 deletions
@@ -110,8 +110,7 @@
[shareProductsTemplate]="shareProductsTemplate"
[accountingRuleData]="accountingRuleData"
[shareProduct]="shareProduct"
[taskPermission]="'CREATE_SHAREPRODUCT'"
(submitEvent)="submit()"
[showActions]="false"
></mifosx-share-product-preview-step>
</div>
</mat-tab>
@@ -250,11 +250,13 @@
</div>
</div>
<div class="shpp-actions">
<button mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
<button mat-raised-button color="primary" (click)="submitEvent.emit()" *mifosxHasPermission="taskPermission">
{{ 'labels.buttons.Submit' | translate }}
</button>
</div>
@if (showActions) {
<div class="shpp-actions">
<button mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
<button mat-raised-button color="primary" (click)="submitEvent.emit()" *mifosxHasPermission="taskPermission">
{{ 'labels.buttons.Submit' | translate }}
</button>
</div>
}
@@ -52,6 +52,10 @@ export class ShareProductPreviewStepComponent {
@Input() accountingRuleData: any;
@Input() shareProduct: any;
@Input() taskPermission: string;
/** Set to false when the host page already renders its own Cancel/Submit bar for this step
* (the Create flow's shared bottom action bar) — Edit's stepper has no such bar of its own, so
* this defaults to true and keeps rendering the button there. */
@Input() showActions = true;
@Output() submitEvent = new EventEmitter();
marketPriceDisplayedColumns: string[] = [