Subversion Repositories SmartDukaan

Rev

Show changed files | Directory listing | RSS feed

Filtering Options

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.
 

Show All