Commit Graph
204 Commits
Author SHA1 Message Date
niteshandClaude Sonnet 5 7b77166b19 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>
2026-09-13 15:19:21 +05:30
niteshandClaude Opus 5 03bc2ff139 feat(branch-profile): add pincode field
Tests / testRigor (push) Canceled after 0s
build-run / Run Lint, Build and Deploy (push) Canceled after 0s
Publish Image in Docker Hub / build (push) Canceled after 0s
Playwright E2E Tests / Run Playwright Tests (push) Canceled after 0s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 13:00:24 +05:30
niteshandClaude Sonnet 5 811c535d99 fix(shares): persist product-default charges on submit; show real charge state; office-delete UX
build-run / Run Lint, Build and Deploy (push) Canceled after 0s
Publish Image in Docker Hub / build (push) Canceled after 0s
Playwright E2E Tests / Run Playwright Tests (push) Canceled after 0s
Tests / testRigor (push) Canceled after 0s
Two share-account charge bugs found while chasing why a share account's
entry-fee charge wasn't showing up in the "Apply Share Advance
Collection" flow:

- create-shares-account.component.ts / edit-shares-account.component.ts:
  the submit payload built charges as { chargeId: charge.id, amount }.
  A charge seeded from the product's own default template arrives as
  ShareAccountChargeData, where the real charge id lives in `chargeId`
  and `id` is null (no saved ShareAccountCharge row yet); only a charge
  picked from this step's own "Charge" dropdown (plain ChargeData) has
  it in `id`. So `charge.id` alone silently produced chargeId: undefined
  for the common case (accepting the product's own default charges),
  Angular's JSON.stringify dropped the undefined field, and the backend
  received a charge with no id to attach -- the account got created with
  zero persisted charges no matter what the product had configured.
  Verified via the actual submitted command JSON in the DB
  (charges:[{"amount":200}], chargeId missing entirely). Fixed by
  falling back to charge.chargeId || charge.id in both places.

- shares-account-charges-step.component.ts: on the "edit an existing
  account" flow, the account's real saved charges (possibly a correctly
  empty array) get patched into chargesDataSource once the shared
  currencyCode control settles, but that patch never cleared the
  `pristine` guard. ngOnChanges fires again on the same input-update
  cycle (the sibling Terms step, declared earlier in the wizard, patches
  currencyCode from its own ngOnChanges, which synchronously triggers
  this component's currencyCode subscription, and Angular then runs
  this component's own ngOnChanges right after) -- with `pristine` still
  true, that re-seeded chargesDataSource from the product's *current*
  default template, silently overwriting the real (possibly empty)
  saved state. Set pristine = false once the real charges are patched
  in, so a later ngOnChanges can't clobber it.

Also: offices.component.ts now distinguishes an office delete that
actually completed from one that was queued for checker approval
(response.rollbackTransaction, the same signal every other
maker-checker-eligible screen in this app already keys off), instead of
always claiming "Office Removed" regardless of which happened.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 15:18:54 +05:30
niteshandClaude Sonnet 5 da1f57c3b6 feat(cashier,organization): denomination-aware vault UI, Bank/Branch Profile screens, popup disbursement review
Playwright E2E Tests / Run Playwright Tests (push) Canceled after 0s
Tests / testRigor (push) Canceled after 0s
build-run / Run Lint, Build and Deploy (push) Canceled after 0s
Publish Image in Docker Hub / build (push) Canceled after 0s
Branch Day open/close now captures a denomination-wise count (carried
forward automatically to the next day), and shows an auto-fetched EOD
summary at close time -- vault + every cashier's position, a branch-total
reconciliation against the book figure, and each cashier's
reconciliation/settlement status and transaction count -- so closing the day
no longer means separately checking Vault Position and every cashier's own
screen by hand. New Vault Position screen (branch-ops menu) mirrors Cashier
Position for the teller/vault. Cash Transfer now shows the vault's live
per-denomination availability while counting a handout, with a client-side
warning before it can be over-counted.

New Organization screens for Bank Profile, Branch Profile and Clearing GL
Configuration, wired into the Organization landing page and the
previously-dead "Bank Profile" admin menu button.

Cashier Transaction Entry: TYPE is now Receipt/Payment only (cash-only TXN
TP.) on the cashier side, with no change to the clerk dashboard's own
Withdrawal Slip/Cheque/Disbursement/Enter Bank Transfer/DD flow beyond
adding a new Fund Transfer type alongside Disbursement for a GL credit that
isn't a loan payout. Neither TYPE nor TXN TP. offers a blank placeholder
option anymore -- a new row starts on a real default instead. Footer no
longer polls the business-date config for cashier/clerk roles, who never
have permission to read it.

Disbursement & Transfer Requests: "Review" now opens the review screen as a
popup instead of navigating to a separate route, refreshing the list on
close; the review screen recognises the new Fund Transfer request type
too, and its non-functional "+ Disbursement Review" tab-styled label is now
a plain heading.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-28 14:40:13 +05:30
keshav 3cf01e2733 Add customer search dialog and sponsor DD/reconciliation modules
Adds sponsor-dd and sponsor-dd-reconciliation feature modules, a
shared customer search dialog, and wires them into routing/shell/
organization screens alongside cashier and deposit-request updates.
2026-07-22 11:59:31 +05:30
keshav898966 4660a3eb15 feat(tellers,savings): restrict teller creation, remove cashier vault actions, and add saving share link toggle 2026-06-24 13:11:54 +05:30
AdityaandClaude Opus 4.7 83ea57ccf0 Client-stepper: pre-fill existing KYC/address proofs in edit, fix identifier saves
Edit-mode now shows the previously selected KYC document type + uploaded file thumbnail
(loads from /clients/{id}/identifiers + /client_identifiers/{id}/documents). Same for
address proof on the India address step. Closes the gap where editing a client showed
an empty file picker even when proof had been uploaded on create.

Identifier-save hardened across all three callsites (create-client, edit-client,
identities-tab.createIdentifierWithDocs) - the KYC chip picker proofId is a CODE
string ('AADHAAR'), but backend ClientIdentifierRequest.documentTypeId is Long, which
Spring rejects with HttpMessageNotReadableException -> 400. resolveDocumentTypeId
helper looks up the code against /kyc/proof-types?type=id and substitutes the numeric
CodeValue id before posting. Skips silently for constitution-specific non-individual
docs that have no CodeValue mapping.

KYC payload normalises panNumber / enterprisePan / gstinNumber / cinNumber via
toUpperCase + whitespace strip so user-typed lowercase or trailing spaces don't trip
the backend regex (validation.msg.CLIENTKYC.panNumber.does.not.match.regexp).

State name match in client-address save now normalises both sides (lowercase, collapse
underscores + spaces) so legacy MADHYA_PRADESH resolves to 'Madhya Pradesh' returned
by api.postalpincode.in. Backed by tenant migration 0297.

Identities-tab resolver flattened - was returning identifiers before the per-row
forkJoin(getClientIdentificationDocuments) completed, so the view rendered empty
documents arrays. Now uses switchMap + forkJoin so the resolver awaits completion.

Also bundles concurrent work-in-progress on letter-mgmt, organization, users,
bank-calendar, shell, nominee/notes/identifier dialogs, and theming.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 12:40:58 +05:30
Nitesh YadavandClaude Sonnet 4.6 d367e76104 merging code
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:26:25 +05:30
AdityaandClaude Opus 4.6 d72e969dc3 feat: Client & CKYC UI improvements — filters, KYC management, image crop+merge
- Clients list: CKYC icon, CKYC Number column, status/legal form/CKYC filters
- CKYC: SFTP upload logs, date formatting, modal z-index fix, non-dismissible dialogs
- KYC Management: new standalone module with alert dashboard, notification scheduler, audit inventory, account status
- Image cropper: ngx-image-cropper integration for front+back document merge into single PNG
- Sidebar: KYC Management menu entry after CKYC

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 13:51:11 +05:30
AdityaandClaude Opus 4.6 b890d24bb7 feat: non-individual entity UI improvements — hide individual-only sections, fix legal form display, send extended fields to API
- Hide Family Members tab/section for non-individual entities in client view, create flow, and preview
- Hide Financial & Classification section for non-individual entities in personal data and preview
- Fix legal form column in clients list — fetch legalForm from client API for correct display
- Add person/business icon before client name in list rows
- Remove unsupportedNpd filter — send authorizedSignatory, additionalInfo, dateOfRegistration to API
- Add registration number format hint (mat-hint) based on constitution type
- Add spacing between verification row and constitution type dropdowns
- Reduce table cell padding and prevent action buttons from being clipped
- Add missing MPL-2.0 license headers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 15:10:51 +05:30
Soni JayandGitHub cedc64b6d0 WEB-766 Plus button box misaligned in Manage Currencies (#3196) 2026-02-20 17:20:28 -06:00
Krishna MewaraandGitHub aaace0f27b WEB-745: Fix unable to assign staff to active savings account (#3179) 2026-02-17 12:08:54 -06:00
Jose Alberto HernandezandGitHub 68ce771dfe Merge pull request #3127 from JaySoni1/WEB-699-fund-mapping-loan-status-and-product-fields-should-be-optional-for-search
WEB-699 Fund Mapping: Loan Status and Product fields should be option…
2026-02-11 13:38:52 -05:00
JaySoni1 44a42b3086 WEB-699 Fund Mapping: Loan Status and Product fields should be optional for search 2026-02-10 23:44:10 +05:30
Soni JayandGitHub b21e07bb1f WEB-698 Assignment Date is pre-filled by default in Bulk Loan Reassignment form (#3126) 2026-02-10 11:02:57 -06:00
Jose Alberto HernandezandGitHub 5716dc94e8 Merge pull request #3115 from JaySoni1/WEB-684-allow-negative-values-in-fund-mapping
WEB-684 Allow negative values in Fund Mapping
2026-02-09 15:31:52 -05:00
JaySoni1 ca81e0d09f WEB-684 Allow negative values in Fund Mapping 2026-02-10 01:38:37 +05:30
Jose Alberto HernandezandGitHub aa223e7a8b Merge pull request #3114 from alberto-art3ch/WEB-642/add-loan-originators-management_02
WEB-642: Loan originator view with optional fields
2026-02-09 10:52:05 -05:00
Jose Alberto HernandezandGitHub 99e7354e33 Merge pull request #3111 from JaySoni1/WEB-680-fix-provisioning-criteria-dialog-allows-negative-values-in-age-percentage-fields
WEB-680 Fix provisioning criteria dialog allows negative values in age percentage fields
2026-02-09 10:36:00 -05:00
Jose Alberto Hernandez e196d40e5a WEB-642: Loan originator view with optional fields 2026-02-09 10:13:14 -05:00
JaySoni1 2cb554ea00 WEB-680 Fix: Provisioning Criteria dialog allows negative values in age, percentage fields 2026-02-09 15:28:54 +05:30
Soni JayandGitHub 96eafba3b5 WEB-679 Fix: Translation key not resolving in Provisioning Criteria Definition dialog (#3109) 2026-02-08 19:58:11 -06:00
AnvayandGitHub 2f73e9a9eb WEB-604: Add hour/minute time selection for partial day cashier allocation (#3108)
- Added hour (00-23) and minute (00-59) dropdowns to Create Cashier form
- Added hour/minute dropdowns to Edit Cashier form with existing time parsing
- Time fields shown conditionally when Full Day is unchecked
- Added end-time-after-start-time validation
- Clear stale invalidTimeRange error before re-validating
- Renamed setEditChargeForm to setEditCashierForm
- Added Hour and Minute i18n keys to all 13 locale files
2026-02-08 16:15:50 -06:00
0bc1926199 WEB-642: Add Loan Originators management (#3095)
Co-authored-by: Jose Alberto Hernandez <alberto@black-box.local>
2026-02-06 12:15:52 -06:00
shubhamsharma9199 4a246c0fef WEB-669 fix: Replace hardcoded colors with CSS variables for dark mode support 2026-02-05 23:57:57 +05:30
Shubham KumarandGitHub fbee49b464 WEB-639: Refactor redundant boolean comparisons (#3063)
improve

improve

improve

improve
2026-01-31 07:07:59 -06:00
Shubham KumarandGitHub d43c79c311 WEB-624 refactor: remove hard-coded back-routing for component reload (#3045)
improve

improve
2026-01-24 08:18:30 -06:00
edk12564andGitHub 794da2fd05 fix: fixed submission issues bulk-loan-reassignmnet.component.ts (#3003)
- removed officeId from bulkLoanFormData for submit button
- changed getFromOfficers to correctly get officeId instead of id

Fixes: #588 #590
2026-01-16 19:46:19 -06:00
Jose Alberto HernandezandGitHub 7beb08579d Merge pull request #2999 from AnvayKharb/web-583-improving-the-ui-of-the-investor
WEB-583: Improve UI Alignment of Investor Filters
2026-01-16 12:18:36 -05:00
Anvay 40a16c8c18 Improve filter section alignment and spacing on Investors page
- Restructured filter layout into organized rows for better visual hierarchy
- Applied consistent spacing (16px gaps) and equal field widths
- Aligned search button with filter inputs for cohesive appearance
- Ensured uniform input field heights (56px) across all filters
- Added responsive design: 3-column (desktop), 2-column (tablet), stacked (mobile)
- Enhanced button styling with proper sizing and alignment
- Maintained enterprise-grade professional UI aesthetic
2026-01-15 22:56:51 +05:30
Anvay ed1b281127 WEB-573: refactor password preferences UI to card-based layout
- Convert horizontal radio layout to vertical card-based blocks
- Add heading labels (Basic, Standard, Strong) for each policy option
- Position radio buttons and headings on same row with space-between
- Increase padding and spacing for improved visual clarity
- Maintain full-width blocks with consistent vertical stacking
- Preserve all existing text content and functionality
- Add trackBy function to *ngFor for performance optimization
- Use translation keys for password labels instead of hardcoded array
- Map labels based on preference ID for robustness
2026-01-15 01:32:18 +05:30
Shubham KumarandGitHub a07a89a5d7 chore: add MPL license headers to all source files (#2977) 2026-01-10 10:44:23 -06:00
Shubham KumarandGitHub 2649efc80c WEB-308: fix hardcoded documentation links (#2944)
fix: Add security attributes to all external documentation links

Fix:added the missing mapping in env.template.js

Removed DocumentationLinkPipe from PipesModule
2025-12-30 20:25:51 -06:00
shubhamsharma9199 3e72f2d08e WEB-512: Fix spacing and alignment of search box and add button on Manage Currencies page 2025-12-30 06:00:52 +05:30
Shubham KumarandGitHub 3de48bc45b fix:Bulk Import page headings appear dark instead of white in dark mode (#2935) 2025-12-27 21:20:54 -06:00
Shubham KumarandGitHub 7e55843cd9 fix(i18n): add missing translations and apply translate pipes across web-app (#2934)
fix: address code review issues

fix: translate accessibility attributes and fix translation errors
2025-12-26 14:26:08 -06:00
Shubham KumarandGitHub 6dff5d9893 feat: add phone number validation to employee create form (#2920) 2025-12-20 13:47:17 -06:00
Shubham KumarandGitHub 1d88bdac59 fix: align centers general view with dark theme styles (#2906) 2025-12-15 13:59:11 -06:00
Jose Alberto HernandezandGitHub 6df449a846 Merge pull request #2902 from JaySoni1/WEB-470-edit-button-placement-inconsistent-on-office-edit-page
WEB-470 Edit Button Placement Inconsistent on Office Edit Page
2025-12-15 13:44:24 -05:00
Soni Jay 59a329cbc7 WEB-470 Edit Button Placement Inconsistent on Office Edit Page 2025-12-15 06:26:02 +05:30
Soni JayandGitHub 9888574a7a WEB-496 Date Format Mismatch: Frontend Sends Incorrect Date Format to Backend for Holiday Creation (#2893) 2025-12-13 16:30:45 -06:00
Shubham KumarandGitHub 4d181b5884 fix: replace displayName column with separate firstname and lastname columns (#2883)
fix the prettier check
2025-12-10 05:22:16 -06:00
Felix van Hove 7fd1486c08 Upgrading to Angular 20:
Replaced checked in package-lock.json by regenerated one.
Ran ng update @angular/core@20 @angular/cli@20
Ran npm install @angular-builders/jest@^20.0.0 @fortawesome/angular-fontawesome@^3.0.0 @swimlane/ngx-graph@^11
Ran npm install ngx-mat-select-search@^8.0.2.
Ran ng update @angular/material@20.
Updated all eslint and typescript to the latest versions.
Removed @angular-devkit/schematics.
Updated fontawesome.
Updated rxjs and tslib.
Moved required node version from 16 to 20.
Updated jest-preset-angular.
Set preserveWhitespaces to false.
Corrected two type declarations in two typescript files to make ng serve run without errors.
Removed unused angular-devkit/schematics from view-user.component.ts .
Updated list of supported browsers.
Upgraded prettier.
Ran prettier . --write the first time.
Ran prettier . --write the second time.
Ran ng generate @angular/core:inject with defaults, excepted a handful of files.
Fixed remaining eslint problems.
Added dist directory to ignores in eslint.config.js.
Let prettier fix formatting, almost everything is just line breaks.
Made htmlhint ignore @if and @for Angular constructs.
Updated node version in Github workflow to 22.12.0 (build.yml).
Updated .env.ts.
Updated Angular datetime format strings from YYYY-MM-DD to yyyy-MM-dd.
Merged changes from dev into angular20 branch.
2025-12-08 11:01:01 +01:00
Jose Alberto HernandezandGitHub 88b7194961 Merge pull request #2828 from JaySoni1/WEB-445-position-field-should-accept-only-numeric-input-in-create-payment-type-form
WEB-445 Position field should accept only numeric input in create payment type form
2025-11-29 09:13:40 -05:00
Soni Jay 4aab5ef1ad WEB-445 Position Field Should Accept Only Numeric Input in Create Payment Type Form 2025-11-29 15:55:37 +05:30
Soni Jay 693e272872 WEB-444 Display Required Validation Message for Selected Products Field on Create Provisioning Criteria Page 2025-11-29 14:31:06 +05:30
Jose Alberto HernandezandGitHub 29f315b977 Merge pull request #2803 from JaySoni1/WEB-425-field-validation-for-required-field-missing-in-bulk-loan-reassignment-page
WEB-425 Field validation for required field missing in "Bulk Loan Reassignment" page
2025-11-19 17:28:48 -05:00
Anvay 6610a015e1 WEB-389: Fix date formatting issue when editing and creating holidays
- Changed edit-holiday component to use formatDateAsString with proper instanceof checks
- Changed create-holiday component to use formatDateAsString
- Fixed bug where incorrect date checks were being performed
- formatDateAsString uses moment.format() which correctly handles Date objects
- Resolves date format problems when editing existing holidays
2025-11-20 01:47:31 +05:30
JaySoni1 9dccbf7557 WEB-425 Field validation for required field missing in Bulk Loan Reassignment page 2025-11-19 21:57:06 +05:30
varun789-mx 476c3750c1 WEB-361 'Fund Mapping' search page doesn't send proper JSON to Fineract 2025-11-11 23:47:05 +05:30