<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SmartDukaan &#x2013; /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/</title><description>WebSVN RSS feed &#x2013; SmartDukaan</description><lastBuildDate>Thu, 23 Apr 2026 08:12:58 +0530</lastBuildDate><generator>WebSVN 2.8.6-DEV</generator><language>en</language><link>https://svn.smartdukaan.com/log.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;max=40&amp;</link><atom:link href="https://svn.smartdukaan.com/rss.php?isdir=1&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;repname=SmartDukaan" rel="self" type="application/rss+xml" />
<item><pubDate>Wed, 22 Apr 2026 19:49:38 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36362 – Make fofo_order creation idempotent on (fofo_id, invoice_number)  Fixes insert-intention ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Make fofo_order creation idempotent on (fofo_id, invoice_number)&lt;br /&gt;
&lt;br /&gt;
Fixes insert-intention gap-lock deadlocks on idx_invoice_number observed in&lt;br /&gt;
SHOW ENGINE INNODB STATUS at 2026-04-22 13:01:54 — two concurrent requests&lt;br /&gt;
inserting the same invoice_number for the same customer (client retry /&lt;br /&gt;
upstream webhook retry pattern).&lt;br /&gt;
&lt;br /&gt;
- OrderServiceImpl.createAndGetFofoOrder: select-then-insert idempotency.&lt;br /&gt;
  Fast path returns existing row if already created; slow-race path catches&lt;br /&gt;
  DataIntegrityViolationException and re-selects the winner&apos;s row.&lt;br /&gt;
- add_uk_fofo_order_fofo_invoice.sql: adds UNIQUE KEY (fofo_id, invoice_number)&lt;br /&gt;
  so the loser of a concurrent-insert race gets a clean DIVE instead of a&lt;br /&gt;
  silent duplicate row (pre-check showed zero existing dup groups, safe).&lt;br /&gt;
&lt;br /&gt;
findExistingFofoOrder wraps the repo call to swallow the repo&apos;s declared&lt;br /&gt;
ProfitMandiBusinessException — the impl actually returns null on not-found&lt;br /&gt;
(constructs an exception but never throws), so the swallow matches reality.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/order/OrderServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/add_uk_fofo_order_fofo_invoice.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36362</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36362</guid></item>
<item><pubDate>Wed, 22 Apr 2026 18:27:39 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36359 – rbm rating dashboard view commited</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm rating dashboard view commited&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/RbmTargetServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36359</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36359</guid></item>
<item><pubDate>Wed, 22 Apr 2026 17:43:38 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36357 – Fix background-thread &apos;no session&apos; error in DB guard. CronBatchRepository.selectRunningForOffer uses ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix background-thread &apos;no session&apos; error in DB guard. CronBatchRepository.selectRunningForOffer uses getCurrentSession() which needs an open tx; when OfferBatchService.processOfferWithBatch is called from the async worker thread (no outer tx), the guard query crashed with &apos;Could not obtain transaction-synchronized Session&apos;. Offer 8819 submit succeeded but the background run died at the guard — before createBatch, so no cron_batch / cron_batch_item rows. Added CronBatchService.findRunningForOffer wrapping the repo call in @Transactional(readOnly=true); orchestrator calls the service method instead of repo directly. Matches the pattern used by loadOfferRequest / createBatch / calculate*Payouts — every caller opens its own tx.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/cron/CronBatchService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferBatchService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36357</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36357</guid></item>
<item><pubDate>Wed, 22 Apr 2026 17:16:50 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36356 – rbm rating dashboard view commited</title><description>&lt;div&gt;&lt;strong&gt;ranu – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm rating dashboard view commited&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/RbmRating.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/RbmRatingRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/RbmRatingRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/monitors/MonitorController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36356</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36356</guid></item>
<item><pubDate>Wed, 22 Apr 2026 16:40:56 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36355 – Skip already-paid partners before creating cron_batch_item rows. Adds hasRemainingSellinPayout / ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Skip already-paid partners before creating cron_batch_item rows. Adds hasRemainingSellinPayout / hasRemainingOfferPayout predicates on OfferProcessingHelper that mirror the amount calc in processPartner*Payout. Orchestrator filters partnerPayouts through these before createBatch — partners whose serials are fully paid (amount=0 after subtracting serialNumberPaid) are excluded entirely. Reruns of a completed offer now create no batch at all (log says &apos;all N eligible partners already fully paid, skipping batch&apos;); partial reruns log filtered count. Avoids audit-trail noise of SUCCESS items that did zero work.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferBatchService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferProcessingHelper.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36355</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36355</guid></item>
<item><pubDate>Wed, 22 Apr 2026 16:17:20 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36354 – DB-backed concurrent-run guard for OfferBatchService.processOfferWithBatch. Adds CronBatchRepository.selectRunningForOffer(offerId) — single HQL ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;DB-backed concurrent-run guard for OfferBatchService.processOfferWithBatch. Adds CronBatchRepository.selectRunningForOffer(offerId) — single HQL query for RUNNING cron_batch rows named processSellinOffer-N or processActivationOffer-N. OfferBatchService early-returns (with a log) if any such row exists. Covers the three gaps the in-memory guard can&apos;t: JVM restart, multi-JVM, cron CLI + user click racing. Applies to both sync (cron --processOffersWithBatch) and async (/offer/process HTTP) paths.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CronBatchRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CronBatchRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferBatchService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36354</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36354</guid></item>
<item><pubDate>Wed, 22 Apr 2026 15:00:24 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36351 – Add CronBatchRepository.selectRecent(limit) and CronBatchItemRepository.selectByBatchId(batchId) for admin batch review UI. selectRecent ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add CronBatchRepository.selectRecent(limit) and CronBatchItemRepository.selectByBatchId(batchId) for admin batch review UI. selectRecent returns most-recent-first via selectAllOrderByDescPaginated(&apos;id&apos;); selectByBatchId uses selectAllByEqualOrderByDesc.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CronBatchItemRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CronBatchItemRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CronBatchRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CronBatchRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36351</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36351</guid></item>
<item><pubDate>Wed, 22 Apr 2026 14:57:24 +0530</pubDate><dc:creator>aman</dc:creator><title>Rev 36350 – Fix:Add brand commitment, ASM details, and finance option in WOD ...</title><description>&lt;div&gt;&lt;strong&gt;aman – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix:Add brand commitment, ASM details, and finance option in WOD initiation email&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/user/StoreTimelineTatServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36350</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36350</guid></item>
<item><pubDate>Wed, 22 Apr 2026 14:43:56 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36347 – Add submitBatchAsync for fire-and-forget /offer/process — schedules processOfferWithBatch on a ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add submitBatchAsync for fire-and-forget /offer/process — schedules processOfferWithBatch on a bounded background pool (3 daemon threads) and returns immediately with a human-readable message. In-memory ConcurrentHashMap.newKeySet() per-offerId guard prevents duplicate concurrent runs for the same offer (the scenario that caused offer 8802 deadlocks). Sync processOfferWithBatch kept unchanged for cron CLI (--processOffersWithBatch).&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferBatchService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36347</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36347</guid></item>
<item><pubDate>Wed, 22 Apr 2026 13:47:10 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36346 – rbm rating dashboard view commited</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm rating dashboard view commited&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/WarehouseAgingStockModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36346</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36346</guid></item>
<item><pubDate>Wed, 22 Apr 2026 12:30:47 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36342 – Add OfferBatchService orchestrator — shared batch entrypoint for offer processing, ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add OfferBatchService orchestrator — shared batch entrypoint for offer processing, used by cron CLI and /offer/process controllers. Loads offer, calls calculate*Payouts (read), creates cron_batch, runs each partner in REQUIRES_NEW via OfferProcessingHelper, finalizes batch and emails on partial failure. No @Transactional on the class — must not carry outer tx.&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferBatchService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36342</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36342</guid></item>
<item><pubDate>Wed, 22 Apr 2026 11:53:38 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36337 – Move CronBatchService and OfferProcessingHelper from cron to dao so web/fofo ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;Move CronBatchService and OfferProcessingHelper from cron to dao so web/fofo can reuse the batch infra; fix empty-IMEI NPE in getInventoryItemMap that broke /offer/process for partners with no billed/scanned serials&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/cron&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/cron/CronBatchService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferProcessingHelper.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36337</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36337</guid></item>
<item><pubDate>Wed, 22 Apr 2026 11:46:23 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36336 – sales dispostion updated</title><description>&lt;div&gt;&lt;strong&gt;ranu – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;sales dispostion updated&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/RbmRating.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/SalesRating.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/RbmRatingRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/RbmRatingRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/SalesRatingRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/SalesRatingRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/LeadController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36336</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36336</guid></item>
<item><pubDate>Tue, 21 Apr 2026 18:18:22 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36335 – rbm rating dashboard view commited</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm rating dashboard view commited&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/WarehouseAgingStockModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36335</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36335</guid></item>
<item><pubDate>Tue, 21 Apr 2026 18:16:07 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36334 – rbm rating dashboard view commited</title><description>&lt;div&gt;&lt;strong&gt;ranu – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm rating dashboard view commited&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/RbmPerformanceDashboardModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/RbmTargetService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/RbmTargetServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/monitors/MonitorController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/today_po_rbm.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36334</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36334</guid></item>
<item><pubDate>Tue, 21 Apr 2026 18:08:09 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36333 – Fix IllegalStateException: drop &apos;unless&apos; when using @Cacheable(sync=true)  Spring Cache ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix IllegalStateException: drop &apos;unless&apos; when using @Cacheable(sync=true)&lt;br /&gt;
&lt;br /&gt;
Spring Cache rejects @Cacheable with both sync=true AND an &apos;unless&apos; attribute,&lt;br /&gt;
throwing IllegalStateException on every invocation. Surfaced in production log&lt;br /&gt;
on smartdukaan — MonitorController.todayPORBM:739 was returning 500 on 40&lt;br /&gt;
observed calls this session.&lt;br /&gt;
&lt;br /&gt;
Dropped &apos;unless&apos;. Caching an occasionally-empty List for 5 min is harmless:&lt;br /&gt;
months with no sales produce an empty result, which is cheaper to re-query&lt;br /&gt;
after 5 min than to keep special-casing. The real fix driver for sync=true&lt;br /&gt;
(stampede protection) is preserved.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/RbmTargetServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36333</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36333</guid></item>
<item><pubDate>Tue, 21 Apr 2026 17:37:58 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36332 – moveToBill: fix loop reassigning order back to worse warehouse  ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;moveToBill: fix loop reassigning order back to worse warehouse&lt;br /&gt;
&lt;br /&gt;
- Break after first warehouse that covers remaining qty; loop used to&lt;br /&gt;
  fall through and overwrite fulfilment WH with every subsequent snapshot,&lt;br /&gt;
  so orders ended up pinned to the last (least-available) candidate.&lt;br /&gt;
- Sort candidates by net availability (availability - reserved) desc&lt;br /&gt;
  so the best warehouse is tried first.&lt;br /&gt;
- Track remainingQty across splits; keep current orderId on the chunk&lt;br /&gt;
  being placed and move the leftover to the deferred order.&lt;br /&gt;
- Null guard on itemSnapshots when no vendor under the billing WH has&lt;br /&gt;
  stock/reservation for the item.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/TransactionServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36332</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36332</guid></item>
<item><pubDate>Tue, 21 Apr 2026 16:34:45 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36331 – Fix @Cacheable name collision between getSaholicStockList variants  SaholicInventoryServiceImpl:271 and ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix @Cacheable name collision between getSaholicStockList variants&lt;br /&gt;
&lt;br /&gt;
SaholicInventoryServiceImpl:271 and :282 both used @Cacheable(value =&lt;br /&gt;
&apos;saholicCISList&apos;) on no-arg methods. Spring&apos;s default SimpleKey.EMPTY means&lt;br /&gt;
both methods shared ONE cache entry — whichever was called first poisoned the&lt;br /&gt;
cache for the other, even though they return different filtered sets:&lt;br /&gt;
&lt;br /&gt;
- getSaholicStockList (:272) runs selectWarehouseCisNew — tl.active=1 only&lt;br /&gt;
- getSaholicStockListWithoutCatalogMovingStatus (:283) runs&lt;br /&gt;
  selectWarehouseCisNewWithoutCatalogMovingStatus — includes catalog moving&lt;br /&gt;
  status join and filters out non-stocked OTHER/SLOWMOVING items&lt;br /&gt;
&lt;br /&gt;
Renamed the second cache to &apos;saholicCISListWithStatus&apos; so each method uses&lt;br /&gt;
its own namespace. Consumers of either method now get their method&apos;s actual&lt;br /&gt;
result, not a random earlier caller&apos;s.&lt;br /&gt;
&lt;br /&gt;
This is a correctness fix (wrong cached data) more than a perf fix, though&lt;br /&gt;
it does mean both caches fill independently now (tiny cold-path DB uptick,&lt;br /&gt;
already mitigated by 5-min TTL via timeoutCacheManager).&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/SaholicInventoryServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36331</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36331</guid></item>
<item><pubDate>Tue, 21 Apr 2026 16:10:52 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36330 – Fix getWarehousewiseCollection: add timestamp index, drop misleading FORCE INDEX  ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix getWarehousewiseCollection: add timestamp index, drop misleading FORCE INDEX&lt;br /&gt;
&lt;br /&gt;
EXPLAIN on hadb1 showed the query was full-scanning transaction.userwallethistory&lt;br /&gt;
(1.9M rows) despite FORCE INDEX (idx_uwh_wallet_timestamp). The composite&lt;br /&gt;
(wallet_id, timestamp) needs an equality predicate on wallet_id to be usable,&lt;br /&gt;
but this query filters by uwh.timestamp at the scan level with no wallet_id —&lt;br /&gt;
driven from fofo_store via joins. Optimizer correctly rejected the hint and&lt;br /&gt;
picked ALL. Query averaged 773 ms across 4,095 calls (3,167 s cumulative).&lt;br /&gt;
&lt;br /&gt;
- add_idx_uwh_timestamp_reftype.sql: new index on (timestamp, reference_type)&lt;br /&gt;
  so the range scan narrows by time and reference_type filters inline.&lt;br /&gt;
- UserWalletRepositoryImpl:110: drop FORCE INDEX hint; let optimizer choose.&lt;br /&gt;
  Updated comment to explain why.&lt;br /&gt;
&lt;br /&gt;
Left PartnerCollectionPlanRepositoryImpl.getCommitmentCollectionSummary:117&lt;br /&gt;
untouched — that query drives from pcp → userwallet → userwallethistory and&lt;br /&gt;
the join has wallet_id = uw.id known at scan, so (wallet_id, timestamp) is&lt;br /&gt;
the right index there; FORCE INDEX remains appropriate.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/UserWalletRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/add_idx_uwh_timestamp_reftype.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36330</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36330</guid></item>
<item><pubDate>Tue, 21 Apr 2026 16:05:02 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36329 – Tune rbmWeeklyBilling cache: 2m→5m TTL + sync=true  The RBM ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Tune rbmWeeklyBilling cache: 2m→5m TTL + sync=true&lt;br /&gt;
&lt;br /&gt;
The RBM weekly billing aggregate query takes ~2s per call (1,924 cumulative hits&lt;br /&gt;
on hadb1 = 3,800s DB time). Previously cached for only 2 minutes with no&lt;br /&gt;
stampede protection — every 2m window, every concurrent dashboard load ran the&lt;br /&gt;
aggregate in parallel and burnt Hikari slots simultaneously.&lt;br /&gt;
&lt;br /&gt;
- 2m → 5m: this is month-level aggregate bucketed by week, doesn&apos;t need&lt;br /&gt;
  sub-minute freshness for an RBM dashboard.&lt;br /&gt;
- sync=true: single in-JVM computation per (monthStart, monthEnd) key per&lt;br /&gt;
  expiry window; concurrent misses wait for the in-flight load instead of&lt;br /&gt;
  racing to the DB.&lt;br /&gt;
&lt;br /&gt;
fiveMintimeoutCacheManager already exists in CacheConfig:73 (Caffeine, in-memory,&lt;br /&gt;
so no Redis/LocalDateTime serialization concerns).&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/RbmTargetServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36329</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36329</guid></item>
<item><pubDate>Tue, 21 Apr 2026 14:55:02 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36328 – Remove @Cacheable from getFirstBillingDate — LocalDateTime + Redis incompatibility  ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Remove @Cacheable from getFirstBillingDate — LocalDateTime + Redis incompatibility&lt;br /&gt;
&lt;br /&gt;
The redisOneDayCacheManager (CacheConfig.java:109-116) is configured with&lt;br /&gt;
enableDefaultTyping(NON_FINAL, JsonTypeInfo.As.PROPERTY). That embeds type info&lt;br /&gt;
as a JSON object property, which is only valid for objects ({}) — not arrays.&lt;br /&gt;
JavaTimeModule serializes LocalDateTime as an array ([y,m,d,h,m,s]), so the&lt;br /&gt;
write drops type metadata and reads fail with MismatchedInputException&lt;br /&gt;
(&apos;need JSON String that contains type id&apos;).&lt;br /&gt;
&lt;br /&gt;
The underlying NamedQuery (Order.selectFirstBillingByRetailer) uses MIN() on&lt;br /&gt;
the idx_order_customer_billing composite index — EXPLAIN reports &apos;Select tables&lt;br /&gt;
optimized away&apos;. Per-call latency is microseconds even uncached, so Redis&lt;br /&gt;
caching was optimization rather than requirement. Simpler to drop the annotation&lt;br /&gt;
than reconfigure the shared cache manager.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/TransactionRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36328</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36328</guid></item>
<item><pubDate>Tue, 21 Apr 2026 13:35:46 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36327 – Fix currentinventorysnapshot/currentreservationsnapshot deadlock and optimize getFirstBillingDate  - SaholicInventoryServiceImpl: enforce ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix currentinventorysnapshot/currentreservationsnapshot deadlock and optimize getFirstBillingDate&lt;br /&gt;
&lt;br /&gt;
- SaholicInventoryServiceImpl: enforce reservation-snapshot → inventory-snapshot&lt;br /&gt;
  lock order in addReservationCount and reduceReservationCount via explicit&lt;br /&gt;
  session.flush(); eliminates the hadb1 deadlock recorded 2026-04-20 19:43:24&lt;br /&gt;
  between these two methods&apos; opposite-order writes.&lt;br /&gt;
- SaholicInventorySnapshot: add @DynamicUpdate so UPDATEs only rewrite the&lt;br /&gt;
  changed column instead of all three — cuts redo/binlog write amplification&lt;br /&gt;
  and makes deadlock dumps pinpoint the actual business path.&lt;br /&gt;
- TransactionRepositoryImpl.getFirstBillingDate: replace filesort-over-all-billed-&lt;br /&gt;
  orders with MIN(billingTimestamp) via new Order.selectFirstBillingByRetailer&lt;br /&gt;
  named query (Select tables optimized away). Preserves 2017-01-01 cutoff and&lt;br /&gt;
  null-for-unbilled-partner semantics.&lt;br /&gt;
- Add @Cacheable on redisOneDayCacheManager keyed by fofoId (unless null) so the&lt;br /&gt;
  8 call sites stop piling up identical SELECTs on the order table — this was&lt;br /&gt;
  the query pinning Hikari slots at 150-460s each in recent processlist dumps.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/inventory/SaholicInventorySnapshot.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/transaction/Order.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/TransactionRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/SaholicInventoryServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36327</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36327</guid></item>
<item><pubDate>Mon, 20 Apr 2026 19:11:40 +0530</pubDate><dc:creator>aman</dc:creator><title>Rev 36318 – Fix:Migrate legacy Purchase Return flow (Report + Bulk Create + ...</title><description>&lt;div&gt;&lt;strong&gt;aman – 10 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix:Migrate legacy Purchase Return flow (Report + Bulk Create + Debit Notes) into FOFO&lt;/div&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/model/ImeiVerificationResult.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/warehouse/PurchaseReturn.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/warehouse/PurchaseReturnSettlementEntity.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/PurchaseReturnRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/PurchaseReturnRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/PurchaseReturnSettlementRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/PurchaseReturnSettlementRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/migration_unsettled_purchase_return_menu.sql&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/create-purchase-return.vm&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/unsettled-purchase-returns.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36318</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36318</guid></item>
<item><pubDate>Mon, 20 Apr 2026 19:00:06 +0530</pubDate><dc:creator>aman</dc:creator><title>Rev 36316 – Fix:Migrate legacy Purchase Return flow (Report + Bulk Create + ...</title><description>&lt;div&gt;&lt;strong&gt;aman – 9 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix:Migrate legacy Purchase Return flow (Report + Bulk Create + Debit Notes) into FOFO&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/warehouse/DebitNoteType.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/PurchaseReturnOrderRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/PurchaseReturnOrderRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehouseInventoryItemRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehouseInventoryItemRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/PurchaseReturnService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/PurchaseReturnServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/PurchaseReturnController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/business/return.js&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36316</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36316</guid></item>
<item><pubDate>Mon, 20 Apr 2026 14:56:22 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36315 – rbm rating dashboard view commited</title><description>&lt;div&gt;&lt;strong&gt;ranu – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm rating dashboard view commited&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/RbmPerformanceDashboardModel.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/monitors/MonitorController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/service/KnowlarityInsightsService.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/rbm_call_target.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/today_po_rbm.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36315</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36315</guid></item>
<item><pubDate>Mon, 20 Apr 2026 12:09:16 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36314 – Fix Dummy warehouse creation defaults and backfill invoice receiveDate  ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix Dummy warehouse creation defaults and backfill invoice receiveDate&lt;br /&gt;
&lt;br /&gt;
- ensureDummyForBillingRegion: set isAvailabilityMonitored=0, transferDelayInHours=0,&lt;br /&gt;
  source=0 explicitly; copy logisticsLocation and pincode from billing warehouse&lt;br /&gt;
  (matches createVendorWarehouse pattern)&lt;br /&gt;
- Add SQL to backfill warehouse.invoice.receiveDate from warehouse.purchase.receivedOn&lt;br /&gt;
  for received invoices where receiveDate is NULL&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/fix_invoice_receiveDate_from_purchase.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36314</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36314</guid></item>
<item><pubDate>Mon, 20 Apr 2026 07:58:35 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36311 – rbm rating dashboard view commited</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm rating dashboard view commited&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/RbmPerformanceDashboardModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36311</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36311</guid></item>
<item><pubDate>Mon, 20 Apr 2026 00:16:35 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36309 – Route phantom orders to per-region Dummy warehouse; complete applyColorChange rename ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 8 file(s) modified&lt;/strong&gt;&lt;br/&gt;Route phantom orders to per-region Dummy warehouse; complete applyColorChange rename&lt;br /&gt;
&lt;br /&gt;
- Phantom allocations in getFulfillments route to the Dummy/GOOD/OURS warehouse under&lt;br /&gt;
  vendor 40 for the partner&apos;s billing region. WarehouseServiceImpl.ensureDummyForBillingRegion&lt;br /&gt;
  returns the existing Dummy or creates one on the fly. createVendorWarehouse hook auto-seeds&lt;br /&gt;
  a Dummy when a new billing region&apos;s first warehouse is created.&lt;br /&gt;
- WarehouseRepository.selectByVendorBillingAndType supports the lookup.&lt;br /&gt;
- OrderService interface: rename notifyColorChange -&gt; applyColorChange to match r36305&apos;s impl&lt;br /&gt;
  rename (r36305 renamed only the impl, leaving trunk inconsistent).&lt;br /&gt;
- PurchaseOrderServiceImpl: remove auto-rebalance on PO receive. Real-wh rebalancing and&lt;br /&gt;
  phantom-to-real binding are now ops-driven via the order billing UI&lt;br /&gt;
  (changeFulfillmentWarehouse / applyColorChange / moveOrdersFulfilmentWarehouse).&lt;br /&gt;
- migration_dummy_warehouses.sql: idempotent seeding script for 14 Dummy/GOOD/OURS warehouses&lt;br /&gt;
  under vendor 40, one per WAREHOUSE_MAP billing region that lacked one. Already applied to&lt;br /&gt;
  hadb1 and local.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/inventory/WarehouseRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/inventory/WarehouseRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/BrandRegionMappingRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/order/OrderService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/migration_dummy_warehouses.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36309</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36309</guid></item>
<item><pubDate>Sun, 19 Apr 2026 07:57:42 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36305 – Batch processing infrastructure + per-partner offer processing + partner limit ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 21 file(s) modified&lt;/strong&gt;&lt;br/&gt;Batch processing infrastructure + per-partner offer processing + partner limit optimization + investment cache eviction on billing/payment/cancellation with 3hr TTL&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/config/CacheConfig.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/transaction/CronBatch.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/transaction/CronBatchItem.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/transaction/CronBatchItemStatus.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/transaction/CronBatchStatus.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CronBatchItemRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CronBatchItemRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CronBatchRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CronBatchRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferPartnerPayoutData.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/SellinPartnerPayoutData.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/order/OrderServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/PartnerInvestmentService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/PartnerInvestmentServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/PartnerLimitUpdateData.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/TransactionServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/WalletServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/create_cron_batch_tables.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36305</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36305</guid></item>
<item><pubDate>Fri, 17 Apr 2026 18:15:45 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36302 – Add 2-min cache on Catalog.selectAllGoodStockBrandWise  Hottest query right now ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add 2-min cache on Catalog.selectAllGoodStockBrandWise&lt;br /&gt;
&lt;br /&gt;
Hottest query right now on the DB: 3851 execs x 297ms = ~1143 s over&lt;br /&gt;
2.9h uptime. Fired once per target-slab in TodayOfferServiceImpl&apos;s&lt;br /&gt;
findAllTodayOffer loop whenever the slab has no explicit catalog IDs.&lt;br /&gt;
&lt;br /&gt;
Input is a single String brand (only ~10 brands), output is a list of&lt;br /&gt;
Catalog entities with no associations (all primitive/String columns,&lt;br /&gt;
no lazy-init risk) and the caller only invokes getBrand/getId on the&lt;br /&gt;
results. Safe to cache in the existing in-memory Caffeine&lt;br /&gt;
twoMintimeoutCacheManager.&lt;br /&gt;
&lt;br /&gt;
Default Spring key (= brand) is stable; unless skips empty results.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/CatalogRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36302</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36302</guid></item>
<item><pubDate>Fri, 17 Apr 2026 17:31:40 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36301 – code optimization of today po rbm page</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;code optimization of today po rbm page&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/Sold15daysOldAgingModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36301</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36301</guid></item>
<item><pubDate>Fri, 17 Apr 2026 16:26:01 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36298 – GRN correction: auto-approve IMEI-only and color-only changes  When a ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;GRN correction: auto-approve IMEI-only and color-only changes&lt;br /&gt;
&lt;br /&gt;
When a correction request contains only IMEI swaps or item swaps where&lt;br /&gt;
old and new items share modelName+modelNumber (color-only change), the&lt;br /&gt;
request is persisted as APPROVED with requester as approver and applied&lt;br /&gt;
immediately. Mixed/model/qty changes continue to go through the existing&lt;br /&gt;
PENDING approval flow.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36298</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36298</guid></item>
<item><pubDate>Fri, 17 Apr 2026 15:23:56 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36296 – Add 2-min cache on dashboard-family queries  Three queries dominate ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add 2-min cache on dashboard-family queries&lt;br /&gt;
&lt;br /&gt;
Three queries dominate dashboard DB time (~830 s / 30 min combined) because&lt;br /&gt;
they re-execute on every dashboard refresh with near-identical parameters:&lt;br /&gt;
&lt;br /&gt;
- OrderRepositoryImpl.selectPartnersBilledBetweenDates: dynamic endDate is&lt;br /&gt;
  LocalDateTime.now(), so cache key bucketed to 2-minute boundaries via SpEL&lt;br /&gt;
  (endDate.toEpochSecond / 120) so calls in the same bucket share an entry.&lt;br /&gt;
- UserWalletRepositoryImpl.getPartnerWiseCollectionAchievement and&lt;br /&gt;
  RbmTargetServiceImpl.getWeeklyBillingDataForMonth: default Spring key&lt;br /&gt;
  (fofoIds + startDate) is stable, no bucketing needed.&lt;br /&gt;
&lt;br /&gt;
All three use the existing Caffeine &apos;twoMintimeoutCacheManager&apos; (in-memory,&lt;br /&gt;
per-JVM, expireAfterWrite=2min). unless clause skips caching empty results&lt;br /&gt;
so legitimately-empty responses don&apos;t pin a bad entry.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/UserWalletRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/RbmTargetServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36296</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36296</guid></item>
<item><pubDate>Fri, 17 Apr 2026 13:48:09 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36294 – Remove @Cacheable from getFirstBillingDate  Temporary revert while cache null-handling ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Remove @Cacheable from getFirstBillingDate&lt;br /&gt;
&lt;br /&gt;
Temporary revert while cache null-handling is reviewed end-to-end.&lt;br /&gt;
The method returns null for partners with no billing history; the&lt;br /&gt;
Redis cache (disableCachingNullValues) was causing log noise even&lt;br /&gt;
after unless=&quot;#result == null&quot; was added. Reverting to direct DB&lt;br /&gt;
lookup until a proper caching strategy (e.g. per-cache nulls or&lt;br /&gt;
Optional return type) is decided.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/TransactionRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36294</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36294</guid></item>
<item><pubDate>Fri, 17 Apr 2026 13:40:44 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36293 – Fix IllegalArgumentException when caching null firstBillingDate  Redis cache manager ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix IllegalArgumentException when caching null firstBillingDate&lt;br /&gt;
&lt;br /&gt;
Redis cache manager (redisEternalCacheManager) has disableCachingNullValues,&lt;br /&gt;
so every partner with no billing history threw IllegalArgumentException&lt;br /&gt;
from RedisCache.put. Added unless=&quot;#result == null&quot; to skip cache writes&lt;br /&gt;
for null results; non-null results still cache normally.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/TransactionRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36293</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36293</guid></item>
<item><pubDate>Fri, 17 Apr 2026 13:16:51 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36291 – Optimize slow DB queries: split fan-out join, FORCE INDEX on ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Optimize slow DB queries: split fan-out join, FORCE INDEX on wallet history&lt;br /&gt;
&lt;br /&gt;
- CurrentInventorySnapshotRepositoryImpl.getSpilitStockBatch: split&lt;br /&gt;
  LEFT-JOIN fan-out into two independent aggregates (~8x faster);&lt;br /&gt;
  fixes SUM(DISTINCT) undercounting bug where same availability/qty&lt;br /&gt;
  values across items collapsed into one.&lt;br /&gt;
- UserWalletRepositoryImpl.getWarehousewiseCollection: HQL -&gt; native&lt;br /&gt;
  SQL with FORCE INDEX(idx_uwh_wallet_timestamp) so timestamp range&lt;br /&gt;
  filters at index level instead of row filter (~4x faster, 3.1s -&gt; 722ms).&lt;br /&gt;
- PartnerCollectionPlanRepositoryImpl.getCommitmentCollectionSummary:&lt;br /&gt;
  Criteria 3-Root CROSS JOIN -&gt; explicit INNER JOIN + FORCE INDEX&lt;br /&gt;
  (idx_uwh_wallet_timestamp) (~3.5x faster).&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/auth/PartnerCollectionPlanRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/CurrentInventorySnapshotRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/UserWalletRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36291</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36291</guid></item>
<item><pubDate>Fri, 17 Apr 2026 13:14:33 +0530</pubDate><dc:creator>aman</dc:creator><title>Rev 36290 – Fix:Finance code to finance team after code creation</title><description>&lt;div&gt;&lt;strong&gt;aman – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix:Finance code to finance team after code creation&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/loiForm/LoiFormServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/user/StoreTimelineTatServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36290</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36290</guid></item>
<item><pubDate>Fri, 17 Apr 2026 12:38:35 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36288 – hadb1 perf: cache firstBillingDate, fix N+1 item query, push eInvoice ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;hadb1 perf: cache firstBillingDate, fix N+1 item query, push eInvoice filter to SQL, sort updateRisk by fofoId&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/TransactionRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/PartnerInvestmentServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/SDCreditServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36288</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36288</guid></item>
<item><pubDate>Thu, 16 Apr 2026 19:55:10 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36287 – sales dispostion updated</title><description>&lt;div&gt;&lt;strong&gt;ranu – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;sales dispostion updated&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/RatingReminder.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/RatingReminderRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/RatingReminderRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36287</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36287</guid></item>
<item><pubDate>Thu, 16 Apr 2026 19:46:06 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36285 – Force idx_order_customer_billing index on spilitStock queries — optimizer picks wrong ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Force idx_order_customer_billing index on spilitStock queries — optimizer picks wrong index (978K global scan vs 902 rows per partner)&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/CurrentInventorySnapshot.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/CurrentInventorySnapshotRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36285</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2F&amp;isdir=1&amp;rev=36285</guid></item>
</channel></rss>