| Rev |
Age |
Author |
Path |
Log message |
Diff |
| 38041 |
6 h 42 m |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/scheme/ |
fix(scheme): don't re-reject already-rejected scheme_in_out rows on scheme re-runs
processSchemeOut category-upgrade loop and processSchemeIn CD free-days reject
re-stamped rows already REJECTED (e.g. from a cancelled invoice sharing the
scheme id with the rebilled CREDITED row). This moved the rollback month (broke
the margin CN reconciliation) and debited the wallet a second time.
Skip REJECTED rows in both loops; the CD reject now covers every live CD row
instead of only the first. |
|
| 38040 |
17 h 14 m |
amit |
/trunk/profitmandi-fofo/src/main/ |
fix(wod): add Store.line1/Store.line2 prefill sources
Line-type fields (e.g. Address Line 1) got the full store address. Add line sources from the same store
address (default address, else LOI billing address) and drop the PartnerOnBoardingPanel.address alias:
all templates were migrated to Store.address on 2026-11-14. |
|
| 38039 |
17 h 22 m |
amit |
/trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/ |
Phase 1 partner-app tracking: /mobileapp opens partner apps via PartnerAppLauncher (staff recorded in token + user_action_audit) instead of web /user/admin |
|
| 38038 |
17 h 22 m |
amit |
/trunk/profitmandi-dao/src/ |
Phase 1 partner-app tracking: PartnerAppLauncher (store check, access check, launch audit, token) + PartnerAccessService; JWTUtil.createLaunchToken (partner token + staff claims, 12h) |
|
| 38037 |
17 h 22 m |
amit |
/trunk/profitmandi-common/src/ |
Phase 1 partner-app tracking: RequestClientInfo reads client IP (X-Real-IP first) and user agent into ClientInfo |
|
| 38036 |
17 h 39 m |
amit |
/trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/ |
/app/update: offer the APK only to older builds
The check was version == B2B_APP_VERSION (101), so every newer shell (the current build is 122)
was told an update is available, and Classic's "Update App" would download an older APK.
Now updateAvailable = version < B2B_APP_VERSION. /v2/app/update delegates here. |
|
| 38035 |
17 h 55 m |
amit |
/trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/ |
fix(wod): drop PartnerOnBoardingPanel.address use in dormant V2 WOD controller |
|
| 38034 |
17 h 55 m |
amit |
/trunk/profitmandi-fofo/src/main/ |
fix(wod): prefill one store address; add full-name source
- Address fields use the partner's default address (user.user.default_address_id) instead of the newest
user.address row (differed for 379 active stores); LOI billing address as fallback.
- Address text no longer repeats city/state already present in line 2.
- New prefill sources Store.address and LoiForm.fullName (first + last); PartnerOnBoardingPanel.address
kept as an alias until templates are migrated.
- Stop writing partner_onboarding_panel.address from the edit and design-TAT saves (payloads never sent it). |
|
| 38033 |
17 h 55 m |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/ |
fix(onboarding): remove unused PartnerOnBoardingPanel.address mapping
Column never held data (0 of 2,026 rows). Store address single source = user default address,
LOI billing address as fallback. Column drop: claude-data/sql-migrations/wod_store_address_single_source_20261114.sql
(run after deploy). |
|
| 38032 |
17 h 55 m |
amit |
/trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/model/ |
fix(onboarding): drop dead address field from panel request models
CreatePartnerOnBoardingPanel / CreatePartnerOnBoardingDesignTat carried an address no form ever sent;
the edit and design-TAT saves copied that null onto partner_onboarding_panel.address. |
|
| 38031 |
18 h 10 m |
amit |
/trunk/profitmandi-dao/src/ |
Phase 0 partner-app tracking: JWTUtil reads staff claims (authUserId/email/launchId) without impersonation flag; user_action_audit entity + ActionAuditService (no callers yet) |
|
| 38030 |
18 h 10 m |
amit |
/trunk/profitmandi-common/src/ |
Phase 0 partner-app tracking: Actor/ClientInfo models, UserInfo.launchId, LAUNCH_ID claim constant (no callers yet) |
|
| 38029 |
1 d 9 h |
amit |
/trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/ |
fix(credit): Credit Details status filter emptied after revisiting the page; shorter cleared label
- The page fragment is re-injected on every visit and each load pushed another DataTables search function
bound to that load's table; stale copies AND-filtered rows away (e.g. 'Loan Default - cleared' showed nothing
for partners who repaid after an earlier visit). Remove the earlier copy before adding, and read the row from
the table being drawn (settings.aoData) instead of a captured instance.
- Green line now reads just 'Default cleared.' |
|
| 38028 |
1 d 10 h |
amit |
/trunk/profitmandi-fofo/src/main/ |
fix(credit): clearer Loan Default messaging on Credit Details
- Block reason shown grey as history: 'Blocked <date> by <who>: <reason>'
- Loan Default with no defaulted dues shows green 'Default cleared. Can be unblocked.'
- Amber 'Also overdue: <amount> on N loan(s), becomes default on <date>' for loans past due but not yet defaulted
- Filter option renamed 'Loan Default - cleared'
Needs dao r38027. |
|
| 38027 |
1 d 10 h |
amit |
/trunk/profitmandi-dao/src/ |
feat(credit): overdue (not yet defaulted) dues for the Credit Details screen
- SDCreditService.getOverdueDuesByFofo: principal + interest on Loan.isOverdue loans, with the earliest default date
- LoanDefaultDues carries defaultsOn; dues calculation shared between defaulted and overdue loans
- Tests for overdue amount and default date |
|
| 38026 |
1 d 11 h |
amit |
/trunk/profitmandi-fofo/src/main/ |
feat(credit): Credit Details status filter, block reason and default dues
- Status filter on /getCreditDetail (Active, Loan Default, Loan Default - nothing due, Blocked, Awaiting Activation)
- Latest block reason under the inactive label
- LOAN_DEFAULT rows show in red the principal + interest needed to close defaulted loans; nothing when 0
- Row redraw after block/unblock/activate carries the same details
Needs dao r38025. |
|
| 38025 |
1 d 11 h |
amit |
/trunk/profitmandi-dao/src/ |
feat(credit): default dues and latest block reason for the Credit Details screen
- SDCreditService.getDefaultDuesByFofo: principal + interest needed to close every defaulted loan
(same isDefault() set as the LOAN_DEFAULT block; total from loan_statement as settleLoan reads it)
- SDCreditService.getLatestBlockLogs + CreditBlockLogRepository.selectByFofoIds (bulk, typed HQL)
- LoanDefaultDues model; SDCreditServiceDefaultDuesTest |
|
| 38024 |
1 d 15 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/ |
fix(cart): drop delisted or missing items from cart in getCartValidation
A line whose item is missing or whose tag_listing is inactive (active=0) is now
removed from the cart and reported as a PRODUCT_UNAVAILABLE cart message, so
createOrder (which rejects on any cart message) no longer bills a delisted item.
Runs before the carry bag allowance so removed phones earn no free bags.
Stock and the 400 max-qty cap are unchanged. |
|
| 38023 |
1 d 15 h |
ranu |
/trunk/profitmandi-fofo/src/main/ |
visit history given on brand wise placement page |
|
| 38022 |
2 d 9 h |
ranu |
/trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/config/ |
call history given on brand wise placement page |
|