| Rev |
Age |
Author |
Path |
Log message |
Diff |
| 37513 |
0 m |
ranu |
/trunk/ |
notification live |
|
| 37512 |
5 m |
ranu |
/trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/model/ |
notification live |
|
| 37511 |
6 m |
ranu |
/trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/enumuration/ |
notification live |
|
| 37510 |
7 m |
ranu |
/trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/ |
sales target and achievement added cron and flags |
|
| 37509 |
8 m |
ranu |
/trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/enumuration/ |
rbm drr dashboard , all today po rbm view maped |
|
| 37508 |
34 m |
ranu |
/trunk/ |
notification live new ....api and modification , ui |
|
| 37507 |
35 m |
ranu |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/ |
rbm drr dashboard , all today po rbm view maped |
|
| 37506 |
35 m |
ranu |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/ |
rbm drr dashboard , all today po rbm view maped |
|
| 37505 |
57 m |
ranu |
/trunk/ |
rbm drr dashboard , all today po rbm view maped |
|
| 37504 |
1 h 47 m |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/invoicing/ |
Stop invoice read paths creating directories (AccessDeniedException 500s)
getInvoicePath called Files.createDirectories, and getInvoiceFile called it on every
download. Invoices are generated by the cron app as root, so /SaholicInvoices/<month>
is 755 root-owned; a download served by Tomcat cannot create a retailer subdirectory
and threw AccessDeniedException.
It threw on line 1 of getInvoiceFile, before the Files.exists check, so the
ProfitMandiBusinessException on the next line was unreachable and the callers'
deliberate 404 handler ("Invoice not yet generated, please retry shortly") never ran.
Downloads for a not-yet-generated invoice 500ed instead of 404ing - the exact log
noise that handler was added to remove.
Split the path computation out: resolveInvoicePath is side-effect free and used by
getInvoiceFile; getInvoicePath keeps the mkdir for the two generation callers
(InvoiceService:558, GstProService:952). The legacy relocation branch creates the
target directory only when there is actually a file to move.
No ops change needed - generation as root already works. |
|
| 37503 |
2 h 11 m |
ranu |
/trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/ |
sales target and achievement added cron and flags |
|
| 37502 |
2 h 13 m |
ranu |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/model/ |
sales target and achievement added cron and flags |
|
| 37501 |
2 h 20 m |
ranu |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/model/ |
sales target and achievement added cron and flags |
|
| 37500 |
2 h 27 m |
ranu |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/ |
sales target and achievement added cron and flags |
|
| 37499 |
2 h 37 m |
ranu |
/trunk/ |
sales target and achievement added cron and flags |
|
| 37498 |
2 h 51 m |
amit |
/trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/ |
Fix: namespace document-level handlers in remaining vm fragments
Completes the sweep started in r37493/r37494. These fragments are injected
with .html(), which re-executes their inline <script>, so every load stacked
another $(document) delegated handler. Mutating handlers then fired N
identical requests and were rejected as duplicates; read-only ones silently
fired N GETs (never deduped, so no alert - just N times the load).
35 fragments, 70 bindings. Adopts the create-purchase-return.vm convention:
one $(document).off('.ns') before the first binding, every event namespaced,
so only the newest binding survives a re-injection.
Notes:
- ticket.vm binds via jQuery(document).on, which the earlier passes did not
match, and its clear must sit OUTSIDE ready() - that callback fires async,
so an inside-ready clear would wipe the top-level binds registered before it.
- agreement-esign-panel, full-stock-payment-panel and create-purchase-return
were left alone; they already clear their handlers (selector-targeted
.off('click', sel) and .off('.createpr') respectively).
Behaviour-preserving: every diff line is either a namespace suffix on an
event string or a new off() call. Selectors, handlers and ordering untouched.
Verified no unprotected document-level bindings remain in any fragment. |
|
| 37497 |
2 h 55 m |
ranu |
/trunk/ |
rbm drr dashboard , all today po rbm view maped |
|
| 37496 |
3 h 3 m |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/ |
Handle empty IN collections instead of failing the query
An empty IN list rendered as "in ()" (invalid SQL) or threw, in three inconsistent ways:
SQLGrammarException from prepareInPredicate, RuntimeException from prepareEqualPredicate,
and ProfitMandiBusinessException from selectAllByInOrderByDesc. A partner with no activity
for a brand legitimately produces an empty set, so these were 500ing on valid input
(~436 errors/week, mostly V2FofoSchemeController.getBrandWiseIncome).
An empty IN matches nothing: route every IN site through inPredicateOrNone, which returns
an empty disjunction. Empty NOT IN excludes nothing, so it matches everything (conjunction).
selectAllByInOrderByDesc returns an empty list without a DB round-trip.
Also covers three sites that had no guard at all: selectAllByInEqualOrderBysDesc,
selectCountByIn and mapToPredicate. Public API unchanged. |
|
| 37495 |
3 h 3 m |
amit |
/trunk/profitmandi-web/src/main/resources/META-INF/ |
Fix Pine Labs affordability prod config: drop placeholder pinelabs.api.* overrides
r36839 re-added pinelabs.api.base.url/client.id/client.secret to the web module with
REPLACE_WITH_* values, reintroducing the duplication removed in r35832. AppConfig loads
shared-prod first and the module file second, so these shadowed the real credentials and
every affordability call failed with UnknownHostException on plural.v2.pinepg.in
(NXDOMAIN) - 1,254 errors in one week. Removing them restores the working values from
shared-prod.properties (api.pluralpay.in).
pinelabs.account.* deliberately left in place: the web module pins merchant 11467 while
shared-prod has 356460, so removing those would switch the live payment merchant. |
|
| 37494 |
3 h 10 m |
amit |
/trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/ |
Fix: namespace document-level handlers in re-injected vm fragments
Same defect class as r37493. These fragments are injected with .html(),
which re-executes their inline <script>, so every load stacked another
$(document) delegated handler. One click then fired N identical requests;
PostInterceptor claimed the first and rejected the rest as duplicates.
Confirmed in prod today: beat-plan-day-view #avSubmit produced bursts of
3-4 rejections on POST /beatPlan/assignVisit/submit. The other four are the
same shape - chart-filter-lms, franchisee-account-creation and beat-plan-bulk
re-inject themselves directly, placement-plan-details does so indirectly by
clicking .search-partner-stock after createPo.
Adopt the create-purchase-return.vm convention: one $(document).off('.ns')
before the first binding, every event namespaced. Only the newest binding
survives, which also fixes handlers holding a stale Velocity closure from a
previously rendered record.
Behaviour-preserving: the only changes are the namespace suffix on 22 event
strings plus the five off() calls. Selectors, handlers and ordering untouched.
Read-only self-injecting fragments (activation-tabular, catalog,
partner-onboarding-*, etc) still stack handlers but only fire GETs, which are
never deduped - left for a separate pass. |
|