<?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; /</title><description>WebSVN RSS feed &#x2013; SmartDukaan</description><lastBuildDate>Thu, 17 Sep 2026 00:20:51 +0530</lastBuildDate><generator>WebSVN 2.8.6-DEV</generator><language>en</language><link>https://svn.smartdukaan.com/log.php?repname=SmartDukaan&amp;path=%2F&amp;max=40&amp;peg=37526</link><atom:link href="https://svn.smartdukaan.com/rss.php?peg=37526&amp;repname=SmartDukaan" rel="self" type="application/rss+xml" />
<item><pubDate>Thu, 03 Sep 2026 17:44:48 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37526 – offer circular: scope config screen, resolve screen, web offer sync ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 17 file(s) modified&lt;/strong&gt;&lt;br/&gt;offer circular: scope config screen, resolve screen, web offer sync (fofo)&lt;br /&gt;
&lt;br /&gt;
Screens (each its own endpoint, under the OFFER CIRCULAR menu):&lt;br /&gt;
- /offerCircularScope - add/edit divisions, take a brand in or out of scope,&lt;br /&gt;
  register label aliases. &apos;Remove&apos; is in_scope=0 + a required reason, never a&lt;br /&gt;
  DELETE: offer.division_id is an FK and the history would go with it.&lt;br /&gt;
- /offerCircularResolve - the product queue, split out of the review screen. The&lt;br /&gt;
  editor was a &amp;lt;td colspan=6&gt; pretending to be a form, which is why it never&lt;br /&gt;
  aligned; it is now master-detail. Naming and Coverage are separate tabs because&lt;br /&gt;
  an alias cannot answer a bundle at all - the coverage panel says so and offers&lt;br /&gt;
  the two answers that ARE safe (ignore, or reclassify as naming).&lt;br /&gt;
&lt;br /&gt;
Ingest:&lt;br /&gt;
- ScopeConfig resolves division aliases and carries the canonical label on&lt;br /&gt;
  Decision. insertOffer and ProductAliases.find use it; offer_raw_row keeps the&lt;br /&gt;
  verbatim label, being the source of truth for re-parsing.&lt;br /&gt;
- CircularIngestRunner publishes to dtr.web_offer after the document is marked&lt;br /&gt;
  PUBLISHED, in its own transaction with exceptions swallowed - a circular that&lt;br /&gt;
  parsed correctly must stay published even if the web sync fails.&lt;br /&gt;
&lt;br /&gt;
Review screen:&lt;br /&gt;
- the ingest summary was a raw Map.toString() inside a nowrap span and ran off&lt;br /&gt;
  the card; now parsed into chips with the drop reasons behind a disclosure.&lt;br /&gt;
&lt;br /&gt;
jsVersion -&gt; 417 (merged with r37525&apos;s 412; cssVersion 53 kept from that commit).&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/config/AppConfig.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/OfferCircularController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/OfferCircularScopeController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/CircularIngestRunner.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/CircularIngestService.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/ScopeConfig.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/WebOfferSyncService.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/js/offer-circular-resolve.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/offer-circular-review.js&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/js/offer-circular-scope.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/admin.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/include-scripts.vm&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/offer-circular-resolve.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/offer-circular-review.vm&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/offer-circular-scope.vm&lt;br /&gt;+ /trunk/profitmandi-fofo/src/test/java/com/spice/profitmandi/web/offercircular/ScopeConfigTest.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/test/java/com/spice/profitmandi/web/offercircular/WebOfferSyncServiceTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37526&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37526&amp;peg=37526</guid></item>
<item><pubDate>Thu, 03 Sep 2026 17:43:36 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37525 – offer circular: division aliases, portal-editable scope, web offer sync (dao) ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 11 file(s) modified&lt;/strong&gt;&lt;br/&gt;offer circular: division aliases, portal-editable scope, web offer sync (dao)&lt;br /&gt;
&lt;br /&gt;
- division_alias support: CircularIngestRepository.selectDivisionAliases so an&lt;br /&gt;
  alternate OEM label resolves onto an existing division instead of dropping the&lt;br /&gt;
  rows as UNKNOWN. Both pdf_label columns are ALIASED - Hibernate discovers&lt;br /&gt;
  native-query results by name and throws NonUniqueDiscoveredSqlAlias on a dup.&lt;br /&gt;
&lt;br /&gt;
- OfferScopeRepository{,Impl}: write side for scope config (add/edit a division,&lt;br /&gt;
  in_scope toggle, label aliases). Kept apart from OfferCurationRepository, whose&lt;br /&gt;
  contract is limited to product_alias - a bad alias mismaps one product, a bad&lt;br /&gt;
  scope change silently drops a whole brand.&lt;br /&gt;
&lt;br /&gt;
- OfferCircularRepositoryImpl: label-side division join now resolves through&lt;br /&gt;
  division_alias (dva), otherwise an UNPARSED row under an aliased label is hidden&lt;br /&gt;
  by the inScopeOnly filter - exactly the rows the review screen exists to show.&lt;br /&gt;
  Also isoDate(): period_month left as java.sql.Date serialised to epoch millis,&lt;br /&gt;
  which an &amp;lt;input type=date&gt; silently rejects, so the circular filter cleared&lt;br /&gt;
  itself and every circular showed every row.&lt;br /&gt;
&lt;br /&gt;
- WebOfferSyncRepository{,Impl} + migration: publish a parsed circular into&lt;br /&gt;
  dtr.web_offer / web_offer_product. Anchored on (document, page, row) stored as&lt;br /&gt;
  VALUES, never offers.offer.id, which is recreated on every re-ingest. source&lt;br /&gt;
  defaults to MANUAL so the 3850 hand-typed rows are untouched; web_offer_sync_shadow&lt;br /&gt;
  is what lets a human edit win over a later sync.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/offers/CircularIngestRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/offers/CircularIngestRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/offers/OfferCircularRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/offers/OfferScopeRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/offers/OfferScopeRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/offers/WebOfferSyncRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/offers/WebOfferSyncRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/add_web_offer_circular_sync.sql&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/dao/repository&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/dao/repository/offers&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/dao/repository/offers/OfferCircularDateSerialisationTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37525&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37525&amp;peg=37526</guid></item>
<item><pubDate>Thu, 03 Sep 2026 01:10:30 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37524 – loi process added, revival and code changes process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;loi process added, revival and code changes process&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/onBorading/OnboardingType.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37524&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37524&amp;peg=37526</guid></item>
<item><pubDate>Thu, 03 Sep 2026 01:08:56 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37523 – loi process added, revival and code changes process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 12 file(s) modified&lt;/strong&gt;&lt;br/&gt;loi process added, revival and code changes process&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/onBoarding/LoiForm.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/onBoarding/LoiFormData.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/StoreTimelinetb.java&lt;br /&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/StoreTimelineTatService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/user/StoreTimelineTatServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/config/AppConfig.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LoiFormController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/PartnerOnBoardingPanelController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/loi-form.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/loi-form.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/rbm-drr-dashboard.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37523&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37523&amp;peg=37526</guid></item>
<item><pubDate>Wed, 02 Sep 2026 19:36:55 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37522 – rbm drr dashboard po fragment ui modification</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard po fragment ui modification&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/rbm-drr-dashboard.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37522&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37522&amp;peg=37526</guid></item>
<item><pubDate>Wed, 02 Sep 2026 18:57:41 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37521 – rbm drr dashboard position wise data</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard position wise data&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/SalesDownlineMonthlyTargetModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37521&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37521&amp;peg=37526</guid></item>
<item><pubDate>Wed, 02 Sep 2026 18:56:57 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37520 – rbm drr dashboard position wise data</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard position wise data&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/SalesDownlineAchievedByMovementModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37520&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37520&amp;peg=37526</guid></item>
<item><pubDate>Wed, 02 Sep 2026 18:55:51 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37519 – rbm drr dashboard position wise data</title><description>&lt;div&gt;&lt;strong&gt;ranu – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard position wise data&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/SalesHierarchyAchievedByMovementModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/SalesHierarchyMonthlyTargetModel.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/RbmDrrDashboardController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37519&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37519&amp;peg=37526</guid></item>
<item><pubDate>Wed, 02 Sep 2026 12:02:19 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37518 – notification scheduler</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;notification scheduler&lt;/div&gt;+ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/scheduled/NotificationDispatchScheduler.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37518&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37518&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 19:18:57 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37517 – rbm drr dashboard position wise data</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard position wise data&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/rbm-drr-dashboard.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37517&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37517&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 18:58:29 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37516 – pending loi download access given to raj singh</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;pending loi download access given to raj singh&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LoiFormController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37516&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37516&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 18:49:08 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37515 – notification live fix conflict in app config</title><description>&lt;div&gt;&lt;strong&gt;ranu – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;notification live fix conflict in app config&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/dtr/CampaignGroup.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/CampaignGroupRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/CampaignGroupRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37515&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37515&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 18:47:46 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37514 – notification live</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;notification live&lt;/div&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/enumuration/ScheduleStatus.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37514&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37514&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 18:46:42 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37513 – notification live</title><description>&lt;div&gt;&lt;strong&gt;ranu – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;notification live&lt;/div&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/model/NotificationTargetCriteria.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/dtr/NotificationSchedule.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/NotificationScheduleRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/NotificationScheduleRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/config/AppConfig.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/js/notification-calendar.js&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/notification-calendar.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37513&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37513&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 18:41:08 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37512 – notification live</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;notification live&lt;/div&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/model/LinkedEntity.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37512&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37512&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 18:40:18 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37511 – notification live</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;notification live&lt;/div&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/enumuration/NotificationFormat.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37511&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37511&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 18:39:11 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37510 – sales target and achievement added cron and flags</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;sales target and achievement added cron and flags&lt;/div&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/Application.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37510&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37510&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 18:38:33 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37509 – rbm drr dashboard , all today po rbm view maped</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard , all today po rbm view maped&lt;/div&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/enumuration/NotificationCategory.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37509&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37509&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 18:12:41 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37508 – notification live new ....api and modification , ui</title><description>&lt;div&gt;&lt;strong&gt;ranu – 11 file(s) modified&lt;/strong&gt;&lt;br/&gt;notification live new ....api and modification , ui&lt;/div&gt;~ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/model/Notification.java&lt;br /&gt;~ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/model/SendNotificationModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/dtr/NotificationCampaign.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/SimpleCampaignParams.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/NotificationCampaignRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/NotificationCampaignRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/NotificationService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/NotificationServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/NotificationController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/send-notification.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/send-notification.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37508&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37508&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 18:11:31 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37507 – rbm drr dashboard , all today po rbm view maped</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard , all today po rbm view maped&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/SalesHierarchyMonthlyTargetModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37507&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37507&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 18:10:56 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37506 – rbm drr dashboard , all today po rbm view maped</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard , all today po rbm view maped&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/SalesHierarchyAchievedByMovementModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37506&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37506&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 17:49:23 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37505 – rbm drr dashboard , all today po rbm view maped</title><description>&lt;div&gt;&lt;strong&gt;ranu – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard , all today po rbm view maped&lt;/div&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/RbmDrrDashboardController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37505&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37505&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 16:59:34 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37504 – Stop invoice read paths creating directories (AccessDeniedException 500s)  getInvoicePath ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Stop invoice read paths creating directories (AccessDeniedException 500s)&lt;br /&gt;
&lt;br /&gt;
getInvoicePath called Files.createDirectories, and getInvoiceFile called it on every&lt;br /&gt;
download. Invoices are generated by the cron app as root, so /SaholicInvoices/&amp;lt;month&gt;&lt;br /&gt;
is 755 root-owned; a download served by Tomcat cannot create a retailer subdirectory&lt;br /&gt;
and threw AccessDeniedException.&lt;br /&gt;
&lt;br /&gt;
It threw on line 1 of getInvoiceFile, before the Files.exists check, so the&lt;br /&gt;
ProfitMandiBusinessException on the next line was unreachable and the callers&apos;&lt;br /&gt;
deliberate 404 handler (&quot;Invoice not yet generated, please retry shortly&quot;) never ran.&lt;br /&gt;
Downloads for a not-yet-generated invoice 500ed instead of 404ing - the exact log&lt;br /&gt;
noise that handler was added to remove.&lt;br /&gt;
&lt;br /&gt;
Split the path computation out: resolveInvoicePath is side-effect free and used by&lt;br /&gt;
getInvoiceFile; getInvoicePath keeps the mkdir for the two generation callers&lt;br /&gt;
(InvoiceService:558, GstProService:952). The legacy relocation branch creates the&lt;br /&gt;
target directory only when there is actually a file to move.&lt;br /&gt;
&lt;br /&gt;
No ops change needed - generation as root already works.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/invoicing/InvoiceService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37504&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37504&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 16:35:38 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37503 – sales target and achievement added cron and flags</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;sales target and achievement added cron and flags&lt;/div&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/Application.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37503&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37503&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 16:32:50 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37502 – sales target and achievement added cron and flags</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;sales target and achievement added cron and flags&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/model/LastTransactionsResponseModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37502&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37502&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 16:26:05 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37501 – sales target and achievement added cron and flags</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;sales target and achievement added cron and flags&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/model/LastTransactionsRequestModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37501&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37501&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 16:19:27 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37500 – sales target and achievement added cron and flags</title><description>&lt;div&gt;&lt;strong&gt;ranu – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;sales target and achievement added cron and flags&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/inventory/SalesAchievements.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/SalesAchievementsRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/SalesAchievementsRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37500&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37500&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 16:09:28 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37499 – sales target and achievement added cron and flags</title><description>&lt;div&gt;&lt;strong&gt;ranu – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;sales target and achievement added cron and flags&lt;/div&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/Application.java&lt;br /&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/scheduled/ScheduledSkeleton.java&lt;br /&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/scheduled/ScheduledTasks.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/inventory/SalesTargets.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/SalesTargetsRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/SalesTargetsRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/IciciLombardService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37499&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37499&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 15:55:04 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37498 – Fix: namespace document-level handlers in remaining vm fragments  Completes ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 35 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix: namespace document-level handlers in remaining vm fragments&lt;br /&gt;
&lt;br /&gt;
Completes the sweep started in r37493/r37494. These fragments are injected&lt;br /&gt;
with .html(), which re-executes their inline &amp;lt;script&gt;, so every load stacked&lt;br /&gt;
another $(document) delegated handler. Mutating handlers then fired N&lt;br /&gt;
identical requests and were rejected as duplicates; read-only ones silently&lt;br /&gt;
fired N GETs (never deduped, so no alert - just N times the load).&lt;br /&gt;
&lt;br /&gt;
35 fragments, 70 bindings. Adopts the create-purchase-return.vm convention:&lt;br /&gt;
one $(document).off(&apos;.ns&apos;) before the first binding, every event namespaced,&lt;br /&gt;
so only the newest binding survives a re-injection.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
- ticket.vm binds via jQuery(document).on, which the earlier passes did not&lt;br /&gt;
  match, and its clear must sit OUTSIDE ready() - that callback fires async,&lt;br /&gt;
  so an inside-ready clear would wipe the top-level binds registered before it.&lt;br /&gt;
- agreement-esign-panel, full-stock-payment-panel and create-purchase-return&lt;br /&gt;
  were left alone; they already clear their handlers (selector-targeted&lt;br /&gt;
  .off(&apos;click&apos;, sel) and .off(&apos;.createpr&apos;) respectively).&lt;br /&gt;
&lt;br /&gt;
Behaviour-preserving: every diff line is either a namespace suffix on an&lt;br /&gt;
event string or a new off() call. Selectors, handlers and ordering untouched.&lt;br /&gt;
Verified no unprotected document-level bindings remain in any fragment.&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/activation-tabular.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/add-wallet-rejected.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/add-wallet-req.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/add-wallet-request.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/auth_user_partner_detail.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/beat-plan-deferred.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/beat-report-data.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/beat-report-user-detail.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/bulk-order.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/bulletin-list.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/catalog.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/dashboard-modal.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/design-completed.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/finance-services.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lead-geo-review.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lead.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/loi-form.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/managerTicket.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/my-partner-tickets.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/onboarding_timeline.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/order-index.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/partner-onboarding-design-index.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/partner-onboarding-index.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/partner-onboarding-open.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/partner-onboarding-reject.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/partner-readonly-info.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/post-bulletin.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/price-drop-tabular.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/returnables.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/ticket.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/update_PartnerCriteria.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/upgrade-offer-tabular.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/visit-approvals.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/wallet-details.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/warehouse-grn-correction-detail.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37498&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37498&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 15:51:22 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37497 – rbm drr dashboard , all today po rbm view maped</title><description>&lt;div&gt;&lt;strong&gt;ranu – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard , all today po rbm view maped&lt;/div&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/RbmDrrDashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/rbm-drr-dashboard.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37497&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37497&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 15:42:57 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37496 – Handle empty IN collections instead of failing the query  ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Handle empty IN collections instead of failing the query&lt;br /&gt;
&lt;br /&gt;
An empty IN list rendered as &quot;in ()&quot; (invalid SQL) or threw, in three inconsistent ways:&lt;br /&gt;
SQLGrammarException from prepareInPredicate, RuntimeException from prepareEqualPredicate,&lt;br /&gt;
and ProfitMandiBusinessException from selectAllByInOrderByDesc. A partner with no activity&lt;br /&gt;
for a brand legitimately produces an empty set, so these were 500ing on valid input&lt;br /&gt;
(~436 errors/week, mostly V2FofoSchemeController.getBrandWiseIncome).&lt;br /&gt;
&lt;br /&gt;
An empty IN matches nothing: route every IN site through inPredicateOrNone, which returns&lt;br /&gt;
an empty disjunction. Empty NOT IN excludes nothing, so it matches everything (conjunction).&lt;br /&gt;
selectAllByInOrderByDesc returns an empty list without a DB round-trip.&lt;br /&gt;
&lt;br /&gt;
Also covers three sites that had no guard at all: selectAllByInEqualOrderBysDesc,&lt;br /&gt;
selectCountByIn and mapToPredicate. Public API unchanged.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/GenericRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37496&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37496&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 15:42:49 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37495 – Fix Pine Labs affordability prod config: drop placeholder pinelabs.api.* overrides ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix Pine Labs affordability prod config: drop placeholder pinelabs.api.* overrides&lt;br /&gt;
&lt;br /&gt;
r36839 re-added pinelabs.api.base.url/client.id/client.secret to the web module with&lt;br /&gt;
REPLACE_WITH_* values, reintroducing the duplication removed in r35832. AppConfig loads&lt;br /&gt;
shared-prod first and the module file second, so these shadowed the real credentials and&lt;br /&gt;
every affordability call failed with UnknownHostException on plural.v2.pinepg.in&lt;br /&gt;
(NXDOMAIN) - 1,254 errors in one week. Removing them restores the working values from&lt;br /&gt;
shared-prod.properties (api.pluralpay.in).&lt;br /&gt;
&lt;br /&gt;
pinelabs.account.* deliberately left in place: the web module pins merchant 11467 while&lt;br /&gt;
shared-prod has 356460, so removing those would switch the live payment merchant.&lt;/div&gt;~ /trunk/profitmandi-web/src/main/resources/META-INF/prod.properties&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37495&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37495&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 15:35:52 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37494 – Fix: namespace document-level handlers in re-injected vm fragments  Same ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix: namespace document-level handlers in re-injected vm fragments&lt;br /&gt;
&lt;br /&gt;
Same defect class as r37493. These fragments are injected with .html(),&lt;br /&gt;
which re-executes their inline &amp;lt;script&gt;, so every load stacked another&lt;br /&gt;
$(document) delegated handler. One click then fired N identical requests;&lt;br /&gt;
PostInterceptor claimed the first and rejected the rest as duplicates.&lt;br /&gt;
&lt;br /&gt;
Confirmed in prod today: beat-plan-day-view #avSubmit produced bursts of&lt;br /&gt;
3-4 rejections on POST /beatPlan/assignVisit/submit. The other four are the&lt;br /&gt;
same shape - chart-filter-lms, franchisee-account-creation and beat-plan-bulk&lt;br /&gt;
re-inject themselves directly, placement-plan-details does so indirectly by&lt;br /&gt;
clicking .search-partner-stock after createPo.&lt;br /&gt;
&lt;br /&gt;
Adopt the create-purchase-return.vm convention: one $(document).off(&apos;.ns&apos;)&lt;br /&gt;
before the first binding, every event namespaced. Only the newest binding&lt;br /&gt;
survives, which also fixes handlers holding a stale Velocity closure from a&lt;br /&gt;
previously rendered record.&lt;br /&gt;
&lt;br /&gt;
Behaviour-preserving: the only changes are the namespace suffix on 22 event&lt;br /&gt;
strings plus the five off() calls. Selectors, handlers and ordering untouched.&lt;br /&gt;
&lt;br /&gt;
Read-only self-injecting fragments (activation-tabular, catalog,&lt;br /&gt;
partner-onboarding-*, etc) still stack handlers but only fire GETs, which are&lt;br /&gt;
never deduped - left for a separate pass.&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/beat-plan-bulk.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/beat-plan-day-view.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/chart-filter-lms.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/franchisee-account-creation.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/placement-plan-details.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37494&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37494&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 12:56:08 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37493 – Fix: scheme item inline date edit fired N duplicate PUTs ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix: scheme item inline date edit fired N duplicate PUTs per click&lt;br /&gt;
&lt;br /&gt;
scheme-details.vm is injected with .html(), which re-executes its inline&lt;br /&gt;
&amp;lt;script&gt;, and a successful save re-injects it - so each load stacked another&lt;br /&gt;
$(document) handler for .edit/.cancel/.save-item-dates. One Save click then&lt;br /&gt;
fired N identical PUT /scheme/item/window, and PostInterceptor rejected all&lt;br /&gt;
but the first with &apos;Duplicate request.&apos; (27 per click in prod today).&lt;br /&gt;
The stacked copies also carried a stale $scheme closure, so a save could&lt;br /&gt;
repaint the container with a previously viewed scheme.&lt;br /&gt;
&lt;br /&gt;
Move the handlers to scheme.js (loaded once via include-scripts.vm) and read&lt;br /&gt;
the scheme id/window from data- attributes on the fragment root, keeping them&lt;br /&gt;
stateless. Fragment is now markup only.&lt;br /&gt;
&lt;br /&gt;
Reuse cleanup while in here:&lt;br /&gt;
- configureMultiselect() replaces 3 near-identical multiselect configs&lt;br /&gt;
- loadBrandsByCategory/loadCatalogDescriptionByBrands take an optional&lt;br /&gt;
  afterRender so the add-item modal reuses them instead of duplicating both&lt;br /&gt;
- toggleItemDateEdit()/initSingleDatePicker() collapse mirrored blocks&lt;br /&gt;
- SCHEME_DETAILS_CONTAINER single-sources the container id&lt;br /&gt;
- drop the template&apos;s duplicate toIsoDateTime (scheme.js already had it)&lt;br /&gt;
- updateSchemeItemWindow() now prefixes context like every other call&lt;br /&gt;
&lt;br /&gt;
Bump jsVersion 409 -&gt; 410.&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/config/AppConfig.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/scheme.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/scheme-details.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37493&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37493&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 12:37:42 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37492 – errors: wire the GlitchTip appender into cron and fofo logging ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;errors: wire the GlitchTip appender into cron and fofo logging&lt;br /&gt;
&lt;br /&gt;
Completes r37491, which committed only web&apos;s log4j2.xml. cron&apos;s and fofo&apos;s were&lt;br /&gt;
held back because they carried local development log paths -- a user.home&lt;br /&gt;
expansion in cron and an absolute /Users path in fofo. Neither can ship: /Users&lt;br /&gt;
does not exist on the server, so fofo logging would fail to open its file and&lt;br /&gt;
the Alloy stream tailing /var/log/tomcat7/fofo/fofo.log would go dead.&lt;br /&gt;
&lt;br /&gt;
Both files are restored to their production paths and carry the Sentry appender.&lt;br /&gt;
Whoever needs the local override should re-apply it locally rather than&lt;br /&gt;
committing it.&lt;/div&gt;~ /trunk/profitmandi-cron/src/main/resources/log4j2.xml&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/resources/log4j2.xml&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37492&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37492&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 12:23:38 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37491 – errors: ship ERROR events to GlitchTip via the log4j2 Sentry ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;errors: ship ERROR events to GlitchTip via the log4j2 Sentry appender&lt;br /&gt;
&lt;br /&gt;
io.sentry:sentry-log4j2:7.22.6 in all three deployables. Pinned to 7.x because&lt;br /&gt;
8.x drops Java 8; verified class major version 52.&lt;br /&gt;
&lt;br /&gt;
minimumEventLevel=ERROR is load-bearing. It only became safe after r37490 moved&lt;br /&gt;
business validations to WARN -- 32% of the ERROR stream was HTTP 400s where the&lt;br /&gt;
user is simply told what to fix, and sending those would have made &quot;insufficient&lt;br /&gt;
balance&quot; the top issue and buried real bugs. Breadcrumbs come from INFO so an&lt;br /&gt;
issue arrives with the log lines that preceded it.&lt;br /&gt;
&lt;br /&gt;
Attached to the application loggers only; framework noise is not our bug.&lt;br /&gt;
&lt;br /&gt;
web&apos;s log4j2.xml is committed here. cron&apos;s and fofo&apos;s are held back: both carry&lt;br /&gt;
uncommitted local development paths (a user.home expansion, and an absolute&lt;br /&gt;
/Users path) that would break production logging and the Alloy log tailing.&lt;br /&gt;
Their Sentry blocks are staged locally and should land with whoever owns those&lt;br /&gt;
path edits.&lt;/div&gt;~ /trunk/profitmandi-cron/build.gradle&lt;br /&gt;~ /trunk/profitmandi-fofo/build.gradle&lt;br /&gt;~ /trunk/profitmandi-web/build.gradle&lt;br /&gt;~ /trunk/profitmandi-web/src/main/resources/log4j2.xml&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37491&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37491&amp;peg=37526</guid></item>
<item><pubDate>Tue, 01 Sep 2026 12:20:10 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37490 – errors: separate business, integration and bug -- three failures logged ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;errors: separate business, integration and bug -- three failures logged three ways&lt;br /&gt;
&lt;br /&gt;
Everything was logged identically: ERROR, titled &apos;Internal Server Error&apos;, and in&lt;br /&gt;
web stack-traced twice (log4j2 plus printStackTrace, the second copy landing in&lt;br /&gt;
catalina.out). A partner mistyping an IMEI produced the same output as a&lt;br /&gt;
NullPointerException.&lt;br /&gt;
&lt;br /&gt;
That makes the error stream unalertable. Measured over six hours across web and&lt;br /&gt;
fofo: 909 ERROR lines, of which 294 (32%) were ProfitMandiBusinessException --&lt;br /&gt;
HTTP 400s where the user is simply told what to fix. Any rule on ERROR rate&lt;br /&gt;
fires constantly, and an error tracker would rank &apos;insufficient balance&apos; as the&lt;br /&gt;
top issue.&lt;br /&gt;
&lt;br /&gt;
  business    WARN,  no stack trace, 4xx  -- expected, user-correctable&lt;br /&gt;
  integration ERROR + dependency name     -- ours is fine, theirs is not&lt;br /&gt;
  anything else ERROR + stack trace, 500  -- a bug&lt;br /&gt;
&lt;br /&gt;
New IntegrationException carries getDependency(), so two hundred failures of one&lt;br /&gt;
gateway group as one problem rather than two hundred unrelated traces. That&lt;br /&gt;
category did not exist: such failures were previously either a bare Exception&lt;br /&gt;
(indistinguishable from our own bug) or a business exception (which wrongly&lt;br /&gt;
blames the user).&lt;br /&gt;
&lt;br /&gt;
printStackTrace removed from the web handler -- it was writing a second copy of&lt;br /&gt;
every trace to catalina.out.&lt;br /&gt;
&lt;br /&gt;
Prerequisite for wiring the GlitchTip appender, which must not be attached until&lt;br /&gt;
ERROR means something.&lt;/div&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/exception/IntegrationException.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/GlobalExceptionHandler.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/GlobalExceptionHandler.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37490&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37490&amp;peg=37526</guid></item>
<item><pubDate>Mon, 31 Aug 2026 19:34:41 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37489 – Restore Utils.html and Utils.htmlJson removed by r37477  r37477 reorganised ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Restore Utils.html and Utils.htmlJson removed by r37477&lt;br /&gt;
&lt;br /&gt;
r37477 reorganised Utils while consolidating the mail APIs and dropped its only two&lt;br /&gt;
instance methods. They have no Java callers -- they exist solely for Velocity, where&lt;br /&gt;
AppConfig binds new Utils() as $vmUtils -- so the compiler, IDE find-usages and any&lt;br /&gt;
grep over *.java all reported them dead.&lt;br /&gt;
&lt;br /&gt;
With htmlJson gone, data-paramslist=&quot;$vmUtils.htmlJson(...)&quot; stopped rendering usable&lt;br /&gt;
JSON on every report link (admin.vm:840, admin.vm:910, reports.vm:51). reports.js:7&lt;br /&gt;
then read $(this).data(&quot;paramslist&quot;) as undefined and returned true, letting the&lt;br /&gt;
browser follow the plain &amp;lt;a href&gt; natively -- a GET against the @PostMapping&lt;br /&gt;
/reports/{projectName}/{fileName} (ReportsController:126), answered with GE_1007&lt;br /&gt;
&quot;Request method &apos;GET&apos; not supported&quot;. The modal POST path was the only way that&lt;br /&gt;
endpoint was ever reachable, so every partner report broke at once.&lt;br /&gt;
&lt;br /&gt;
Confirmed against prod: zero occurrences in fofo.log for Aug 13/20/26/28/30, and 87&lt;br /&gt;
today starting 18:37:23, right after today&apos;s ROOT.war deploy. 13 distinct reports hit.&lt;br /&gt;
&lt;br /&gt;
$vmUtils.html had two further callers that also come back:&lt;br /&gt;
offer_margin_detail_partner.vm:12 and :241 (offer description and notes).&lt;br /&gt;
&lt;br /&gt;
Restored verbatim from r37476, and commented as template-only so the next refactor&lt;br /&gt;
does not read them as dead code again.&lt;/div&gt;~ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/util/Utils.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37489&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37489&amp;peg=37526</guid></item>
<item><pubDate>Mon, 31 Aug 2026 18:50:22 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37488 – rbm drr dashboard , all today po rbm view maped</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard , all today po rbm view maped&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/WarehouseBuyingByMovementModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37488&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37488&amp;peg=37526</guid></item>
<item><pubDate>Mon, 31 Aug 2026 18:49:06 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37487 – rbm drr dashboard , all today po rbm view maped</title><description>&lt;div&gt;&lt;strong&gt;ranu – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard , all today po rbm view maped&lt;/div&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/RbmDrrDashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/rbm-drr-dashboard.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37487&amp;peg=37526</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37487&amp;peg=37526</guid></item>
</channel></rss>