<?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-fofo/src/main/java/com/spice/profitmandi/web/controller/</title><description>WebSVN RSS feed &#x2013; SmartDukaan</description><lastBuildDate>Wed, 02 Sep 2026 16:25:30 +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-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;max=40&amp;</link><atom:link href="https://svn.smartdukaan.com/rss.php?path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;repname=SmartDukaan" rel="self" type="application/rss+xml" />
<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=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37516</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37516</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=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37508</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37508</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=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37505</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37505</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=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37497</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37497</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=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37490</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37490</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=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37487</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37487</guid></item>
<item><pubDate>Sat, 29 Aug 2026 16:15:18 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37460 – rbm drr dashboard new ui looks</title><description>&lt;div&gt;&lt;strong&gt;ranu – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard new ui looks&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=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37460</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37460</guid></item>
<item><pubDate>Sat, 29 Aug 2026 13:22:56 +0530</pubDate><dc:creator>aman</dc:creator><title>Rev 37458 – LOI payment screenshot: report upload failures instead of reporting the ...</title><description>&lt;div&gt;&lt;strong&gt;aman – 6 file(s) modified&lt;/strong&gt;&lt;br/&gt;LOI payment screenshot: report upload failures instead of reporting the field as missing&lt;br /&gt;
&lt;br /&gt;
Submit validated the hidden #payment-sc-docId, but a file input keeps displaying the&lt;br /&gt;
chosen filename regardless of what happens next - so a failed /document-upload left the&lt;br /&gt;
field looking attached to the operator and missing to the validator (&quot;The following&lt;br /&gt;
fields are required: Payment screenshot&quot; on a form that was in fact filled in).&lt;br /&gt;
&lt;br /&gt;
The failure was silent three ways: doAjaxUploadRequestHandler had no error handler; the&lt;br /&gt;
global ajaxError reporter calls bootbox, which loads from cdnjs and throws if that is&lt;br /&gt;
blocked; and the confirm(&apos;Confirm file upload ?&apos;) gate returned false with no trace once&lt;br /&gt;
Chrome&apos;s &quot;prevent this page from creating additional dialogs&quot; box was ticked.&lt;br /&gt;
&lt;br /&gt;
- common.js: optional error callback on doAjaxUploadRequestHandler (additive, opts out of&lt;br /&gt;
  the generic global dialog via suppressGlobalError); uploadErrorMessage() extracts the&lt;br /&gt;
  server&apos;s real reason from the JSON body or the plain-text duplicate-request body;&lt;br /&gt;
  uploadDocument() pre-checks size/type, verifies a document_id actually came back, and&lt;br /&gt;
  reports a message naming the file - .HEIC and .webp get specific guidance;&lt;br /&gt;
  showAlert() falls back to native alert when bootbox is absent.&lt;br /&gt;
- loi-form.js: drop the confirm() gate, &apos;input&apos; -&gt; &apos;change&apos;, and clear the file input&lt;br /&gt;
  whenever the id does not land so the widget can never claim an unuploaded file. Status&lt;br /&gt;
  line under the field (Uploading... / Attached: name / Not attached). Submit now&lt;br /&gt;
  distinguishes not-picked, still-uploading and upload-failed. Same treatment for the&lt;br /&gt;
  OnboardingDocumentTable and mk_brand-fee-collection-details uploads, and the brand-fee&lt;br /&gt;
  dialog names the Attachment field instead of echoing the raw form key.&lt;br /&gt;
- loi-form.vm, pendingForm.vm: accept=&quot;...&quot; on both file inputs plus the status span.&lt;br /&gt;
- FileUploadController: reject empty files, report actual size against the actual limit,&lt;br /&gt;
  and resolveExtension() falls back to the filename when the browser sends a generic MIME&lt;br /&gt;
  type (Android file managers send application/octet-stream for ordinary JPG/PNG/PDF).&lt;br /&gt;
- AppConfig: static resource version 395 -&gt; 396 for the JS change.&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/FileUploadController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/common.js&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/pendingForm.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37458</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37458</guid></item>
<item><pubDate>Sat, 29 Aug 2026 07:49:43 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37457 – Lock the KYC state to the GSTIN on the LOI ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;Lock the KYC state to the GSTIN on the LOI&lt;br /&gt;
&lt;br /&gt;
The LOI already captures and validates a GSTIN, and the first two characters of a&lt;br /&gt;
GSTIN are its GST state code - so once the LOI exists the KYC state is a fact&lt;br /&gt;
about that number, not something to re-type. When one is present the state&lt;br /&gt;
dropdown is prefilled from it and locked; otherwise it stays a normal&lt;br /&gt;
master-backed select.&lt;br /&gt;
&lt;br /&gt;
Derived from the GSTIN rather than loi_form.gstState: that column is typed by&lt;br /&gt;
hand and holds values like &apos;UP&apos;, &apos;UTTAR PARDESH&apos; and &apos;MADHAY PARDESH&apos; which&lt;br /&gt;
resolve against nothing, and it is blank on 3 rows. Checked against prod - all&lt;br /&gt;
693 GSTINs on record are 15 characters and every one resolves through&lt;br /&gt;
statemaster.stateCode, and in all 14 rows where the two disagree the GSTIN is&lt;br /&gt;
right and the typed value is wrong or empty.&lt;br /&gt;
&lt;br /&gt;
The lock is per row, not per page: the KYC screens list many onboardings, so the&lt;br /&gt;
derived state is passed as a map keyed by onboarding id. Blank rows carry their&lt;br /&gt;
onboarding id so a new KYC entry is locked too, which is the case that matters.&lt;br /&gt;
&lt;br /&gt;
data-gst-locked keeps the row&apos;s dblclick edit toggle from re-enabling the field;&lt;br /&gt;
the value still submits because the JS reads it explicitly with .val().&lt;/div&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/panel-listing.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/fofo-kyc-row.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/legal-kyc-row.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37457</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37457</guid></item>
<item><pubDate>Sat, 29 Aug 2026 07:42:55 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37456 – Block billing when NIC rejects the transporter GSTIN for e-way ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 6 file(s) modified&lt;/strong&gt;&lt;br/&gt;Block billing when NIC rejects the transporter GSTIN for e-way bills&lt;br /&gt;
&lt;br /&gt;
NIC files the e-way bill alongside the IRN, so a deregistered transporter&lt;br /&gt;
GSTIN returns Status=1 with InfoDtls[InfCd=EWBERR] (3029 &quot;GSTIN - ... is&lt;br /&gt;
not active&quot;): the IRN is valid while ewb_no stays null. Nothing downstream&lt;br /&gt;
reads that as a failure, so invoices kept being issued for goods that&lt;br /&gt;
could not legally move.&lt;br /&gt;
&lt;br /&gt;
Cache the rejected transporter GSTIN in Redis and refuse to bill through&lt;br /&gt;
it. The block is keyed on the GSTIN, since one GSTIN is shared by several&lt;br /&gt;
warehouse_provider rows, and it carries the day it was raised so it lapses&lt;br /&gt;
at midnight and each new day re-tests NIC once. Correcting the GSTIN in&lt;br /&gt;
the provider panel lifts it immediately.&lt;br /&gt;
&lt;br /&gt;
Only errors that are the transporter&apos;s fault block billing - NIC&apos;s 3029,&lt;br /&gt;
or any message naming the GSTIN we sent as TransId. Every other EWBERR&lt;br /&gt;
behaves as before: the IRN is filed and the e-way bill is retried later.&lt;br /&gt;
&lt;br /&gt;
Guard sits in addBillingDetailsForGrouppedOrders before the pessimistic&lt;br /&gt;
lock and before any mutation, mirroring LogisticsServiceImpl#getEwbDetails&lt;br /&gt;
(order&apos;s own warehouse; self-pickup and runner skipped, as they travel on&lt;br /&gt;
a vehicle number rather than a transporter id).&lt;/div&gt;~ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/model/ProfitMandiConstants.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/EwbTransporterFailureCache.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/TransactionServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/integrations/gstpro/EwbTransporterFailureCacheTest.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/provider/ProviderController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37456</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37456</guid></item>
<item><pubDate>Sat, 29 Aug 2026 07:31:14 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37455 – Make the KYC state a master-backed dropdown instead of free ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;Make the KYC state a master-backed dropdown instead of free text&lt;br /&gt;
&lt;br /&gt;
fofo-kyc-row.vm and legal-kyc-row.vm captured state as a free-text input, so&lt;br /&gt;
nothing stopped a spelling the master does not hold. That state is resolved back&lt;br /&gt;
through inventory.statemaster by name later, and an unresolvable one cannot be&lt;br /&gt;
turned into a state code. Both now render a $stateNames select, and all five&lt;br /&gt;
render paths in PartnerOnBoardingPanelController supply the list.&lt;br /&gt;
&lt;br /&gt;
panel-listing.js reads these fields positionally, by td index and&lt;br /&gt;
input[type=&apos;text&apos;]. A select does not match that selector, so the value would&lt;br /&gt;
have come back undefined and KYC would have saved a blank state silently -&lt;br /&gt;
both selectors now target the select. Row editing is unaffected: the enable&lt;br /&gt;
toggle uses :input, which covers select.&lt;br /&gt;
&lt;br /&gt;
Bump the asset version for the panel-listing.js change.&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/PartnerOnBoardingPanelController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/panel-listing.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/fofo-kyc-row.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/legal-kyc-row.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37455</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37455</guid></item>
<item><pubDate>Thu, 27 Aug 2026 17:28:05 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37442 – rbm drr dashboard new ui looks</title><description>&lt;div&gt;&lt;strong&gt;ranu – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;rbm drr dashboard new ui looks&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-today-arr.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-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37442</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37442</guid></item>
<item><pubDate>Wed, 26 Aug 2026 19:45:06 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37427 – src dashboard logic correction</title><description>&lt;div&gt;&lt;strong&gt;ranu – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;src dashboard logic correction&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/AnalysisDashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/DashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/analysisDashboard.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37427</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37427</guid></item>
<item><pubDate>Wed, 26 Aug 2026 13:03:25 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37409 – Changed WhatsApp service to botpenguin (DigiWaha)</title><description>&lt;div&gt;&lt;strong&gt;vikas – 18 file(s) modified&lt;/strong&gt;&lt;br/&gt;Changed WhatsApp service to botpenguin (DigiWaha)&lt;/div&gt;~ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/model/ProfitMandiConstants.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/BidService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/BidServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/LiquidationService.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-dao/src/main/java/com/spice/profitmandi/service/offers/OfferServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/whatsapp/BotPenguinPayloads.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/whatsapp/BotPenguinWhatsappService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/whatsapp/WhatsappFlow.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/whatsapp/WhatsappNumbers.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/shared-prod.properties&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/shared-staging.properties&lt;br /&gt;~ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/whatsapp/WhatsappNumbersTest.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/catalog/LiquidationController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/UpSaleController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/resources/META-INF/dev.properties&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/resources/META-INF/prod.properties&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37409</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37409</guid></item>
<item><pubDate>Tue, 25 Aug 2026 22:59:54 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37405 – Drive the onboarding/HR state dropdowns from inventory.statemaster  fofo-form.vm, fofo-edit.vm ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 6 file(s) modified&lt;/strong&gt;&lt;br/&gt;Drive the onboarding/HR state dropdowns from inventory.statemaster&lt;br /&gt;
&lt;br /&gt;
fofo-form.vm, fofo-edit.vm and hr_employee_form.vm each hardcoded their own state&lt;br /&gt;
list instead of using $stateNames. Six of those 37 values do not exist in the&lt;br /&gt;
master (&amp; vs and variants, Uttaranchal, the pre-merger UTs), so anything picked&lt;br /&gt;
from them could not be resolved back.&lt;br /&gt;
&lt;br /&gt;
Only the name=&quot;state&quot; select changed in hr_employee_form.vm; its other dropdowns&lt;br /&gt;
are untouched.&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/FofoController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/HrmsController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/RegisterController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/fofo-edit.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/fofo-form.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/hr_employee_form.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37405</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37405</guid></item>
<item><pubDate>Tue, 25 Aug 2026 20:30:22 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37400 – Merge the three sale-invoice download endpoints into /invoice/download  generateInvoice, ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;Merge the three sale-invoice download endpoints into /invoice/download&lt;br /&gt;
&lt;br /&gt;
generateInvoice, generateInvoices and downloadInvoices differed only in how they&lt;br /&gt;
resolved the order ids and who was allowed to ask; everything after that was the&lt;br /&gt;
same. That drift meant only the single-order download stapled the policy&lt;br /&gt;
certificates, so the same invoice pulled from sale history came out without&lt;br /&gt;
them. One handler now selects by orderId, partner date range (admin only) or the&lt;br /&gt;
caller&apos;s own sale-history search, over reusable resolvers plus a shared&lt;br /&gt;
render-and-respond step. The old URLs stay as deprecated shims.&lt;br /&gt;
&lt;br /&gt;
The admin range download is now fault tolerant - one unbillable order used to&lt;br /&gt;
fail the whole batch.&lt;br /&gt;
&lt;br /&gt;
Remove the commented-out thermal variant of generateInvoice and the unused&lt;br /&gt;
paymentOptionIdPaymentOptionMapUsingPaymentOptions. Bump the asset version for&lt;br /&gt;
the sale.js change.&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/OrderController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/sale.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/order-details.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/sale-details.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/search-order-details.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/search-order.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37400</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37400</guid></item>
<item><pubDate>Mon, 24 Aug 2026 17:32:01 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37390 – total show on warehouse wise stock value on item detail</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;total show on warehouse wise stock value on item detail&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/IndentController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37390</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37390</guid></item>
<item><pubDate>Mon, 24 Aug 2026 17:16:59 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37389 – total show on warehouse wise stock value on item detail</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;total show on warehouse wise stock value on item detail&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/IndentController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37389</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37389</guid></item>
<item><pubDate>Mon, 24 Aug 2026 13:07:57 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37385 – Added Notice and PJP access to akhil.kumar@smartdukaan.com</title><description>&lt;div&gt;&lt;strong&gt;vikas – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Added Notice and PJP access to &lt;a href=&quot;mailto:akhil.kumar@smartdukaan.com&quot;&gt;akhil.kumar@smartdukaan.com&lt;/a&gt;&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/BeatJourneyController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/dashboard1.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37385</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37385</guid></item>
<item><pubDate>Fri, 21 Aug 2026 18:44:11 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37380 – Fix /saleDetails 500 on insurance-only orders and null billing name/phone ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix /saleDetails 500 on insurance-only orders and null billing name/phone&lt;br /&gt;
&lt;br /&gt;
Two defects on the sale-details screen, both from a legitimately-empty source.&lt;br /&gt;
&lt;br /&gt;
1. /saleDetails 500s on an insurance-only order. A policy is not a catalog item,&lt;br /&gt;
so an insurance sale carries no fofo_order_item row; itemIds comes out empty and&lt;br /&gt;
itemRepository.selectByIds hits GenericRepositoryImpl.selectAllByInOrderByDesc,&lt;br /&gt;
which throws &quot;List should not be empty&quot; to guard against an empty IN (). The&lt;br /&gt;
same guard already exists two methods below at the sale-search site, so this&lt;br /&gt;
carries it across to the detail site. 346 orders across 95 partners are affected&lt;br /&gt;
- every insurance-only order ever written. The screen already loads the policies&lt;br /&gt;
and the view renders them, so nothing else was needed to display the sale.&lt;br /&gt;
&lt;br /&gt;
2. Billing name and phone rendered as the literal&lt;br /&gt;
.getName(). A plain POS sale does not require an&lt;br /&gt;
address (only insurance does), so ~140k orders across 1038 partners carry&lt;br /&gt;
customerAddressId 0 and the lookup returns null. The existing guard covered the&lt;br /&gt;
address *string* but the object was added to the model unconditionally, and&lt;br /&gt;
Velocity prints an unresolvable reference verbatim. Fall back to the customer&apos;s&lt;br /&gt;
own name and mobile, which the invoice PDF already does via&lt;br /&gt;
OrderServiceImpl.createCustomAddressWithoutId - so screen and invoice now agree.&lt;br /&gt;
The fallback is transient and never persisted; a missing customer row is&lt;br /&gt;
swallowed deliberately, since this feeds a display field and throwing would turn&lt;br /&gt;
blank text into a 500.&lt;br /&gt;
&lt;br /&gt;
Applied at both model-writing sites in this controller.&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/OrderController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37380</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37380</guid></item>
<item><pubDate>Fri, 21 Aug 2026 14:30:59 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37378 – Put the action-pending returns at the top of Sale Returns, ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Put the action-pending returns at the top of Sale Returns, and filter by partner&lt;br /&gt;
&lt;br /&gt;
Sorting the received list pending-first changed nothing on screen, because every return&lt;br /&gt;
that still needs an action was missing from it. The list was built from purchase return&lt;br /&gt;
orders inside the date window, and a return order only exists once the warehouse has&lt;br /&gt;
received the goods - so a debit note awaiting receipt had no row to sort, and a return&lt;br /&gt;
sitting unrefunded for weeks fell out of the window entirely.&lt;br /&gt;
&lt;br /&gt;
The screen is now two lists:&lt;br /&gt;
&lt;br /&gt;
- Action Pending, on top, with no date bound. It merges the three shapes a pending return&lt;br /&gt;
  takes - a debit note never received, a return order received but unrefunded, and one&lt;br /&gt;
  rejected but not yet acknowledged - into a single row type, oldest first, with the age&lt;br /&gt;
  in days beside it. Each row carries only the action that actually applies to it&lt;br /&gt;
- Settled Returns below, refunded and cancelled only, still bound to From/To. The pending&lt;br /&gt;
  rows were lifted out of it, so nothing is listed twice&lt;br /&gt;
&lt;br /&gt;
Two things worth recording:&lt;br /&gt;
&lt;br /&gt;
- a debit note has no warehouse of its own. It is placed through the item&apos;s invoice and&lt;br /&gt;
  the order that invoice was raised on, and a note that cannot be placed is dropped rather&lt;br /&gt;
  than shown to a warehouse it may not belong to&lt;br /&gt;
- debit notes raised before the receive/refund flow existed were settled the old way and&lt;br /&gt;
  cannot be worked from this screen. The cutoff is read from the earliest return order in&lt;br /&gt;
  the database, so it needs no maintenance, and the page says so in a footnote instead of&lt;br /&gt;
  quietly hiding them&lt;br /&gt;
&lt;br /&gt;
The partner filter reuses the shared /partners typeahead and passes the id down into both&lt;br /&gt;
queries. Only a picked suggestion filters, so a half-typed name cannot blank the page. Its&lt;br /&gt;
handlers sit inline in the template, next to the markup they drive, following the pattern&lt;br /&gt;
add-wallet-request.vm already uses - which leaves the now-unused #invoice-return-date-apply&lt;br /&gt;
handler in return.js dead, to be removed with the return.js work already in flight.&lt;br /&gt;
&lt;br /&gt;
Rendered offline through Velocity with the app&apos;s own directive.set.null.allowed to confirm&lt;br /&gt;
all four action variants emit the right buttons.&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/PurchaseReturnController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/model/SaleReturnRow.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/invoice-return.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37378</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37378</guid></item>
<item><pubDate>Thu, 20 Aug 2026 18:51:17 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37374 – total show on warehouse wise stock value on item detail</title><description>&lt;div&gt;&lt;strong&gt;ranu – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;total show on warehouse wise stock value on item detail&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/AdminUser.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/DashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/admin.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37374</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37374</guid></item>
<item><pubDate>Wed, 19 Aug 2026 13:23:38 +0530</pubDate><dc:creator>aman</dc:creator><title>Rev 37355 – AI lead intake (fofo, live): assign new leads to a ...</title><description>&lt;div&gt;&lt;strong&gt;aman – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;AI lead intake (fofo, live): assign new leads to a random active BGC L1 instead of the hardcoded Khushbu/Archana round-robin&lt;/div&gt;~ /trunk/profitmandi-fofo/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-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37355</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37355</guid></item>
<item><pubDate>Tue, 18 Aug 2026 18:26:37 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37348 – super retailer club 5 live</title><description>&lt;div&gt;&lt;strong&gt;ranu – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;super retailer club 5 live&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/DashboardController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37348</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37348</guid></item>
<item><pubDate>Tue, 18 Aug 2026 16:45:26 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37346 – Sort sale returns so the ones still needing an action ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Sort sale returns so the ones still needing an action come first&lt;br /&gt;
&lt;br /&gt;
The Recently Received Debit Notes table was ordered purely by receive time, so a&lt;br /&gt;
return waiting on a refund or on the partner&apos;s acknowledgment sank below rows that&lt;br /&gt;
were already refunded and needed nothing. On a busy warehouse the actionable rows&lt;br /&gt;
were off the first screen.&lt;br /&gt;
&lt;br /&gt;
- recentOrders is now ranked pending-first (Received - Pending Refund, Rejected -&lt;br /&gt;
  Pending Acknowledgment) ahead of settled ones (Refunded, Cancelled), with the&lt;br /&gt;
  existing receiveTimestamp DESC kept as the tie-breaker inside each group&lt;br /&gt;
- getPendingActionRank follows the same precedence invoice-return.vm uses to pick&lt;br /&gt;
  the status badge - reject checked before refund - so the ordering can never&lt;br /&gt;
  disagree with the label the user sees&lt;br /&gt;
- ranked on the return&apos;s own state, not on the viewer&apos;s canReceive/canRefund&lt;br /&gt;
  permissions, so a pending return stays at the top for everyone looking at it&lt;br /&gt;
&lt;br /&gt;
Presentation only; no query, entity or lifecycle change. Note that returns never&lt;br /&gt;
received at all cannot surface here regardless, since the query filters on&lt;br /&gt;
receiveTimestamp BETWEEN the selected dates.&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/PurchaseReturnController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37346</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37346</guid></item>
<item><pubDate>Tue, 18 Aug 2026 16:12:06 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37345 – Beat Journey (today): LOI-based &apos;Onboarded&apos; + last-billing recency board columns, ...</title><description>&lt;div&gt;&lt;strong&gt;vikas – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Beat Journey (today): LOI-based &apos;Onboarded&apos; + last-billing recency board columns, level-filtered orders list (grouped by partner), and flag tuning — remove #1/#3, use per-visit total_distance for #4.&lt;br /&gt;
&lt;br /&gt;
Co-Authored-By: Claude Opus 4.8 (1M context) &amp;lt;&lt;a href=&quot;mailto:noreply@anthropic.com&quot;&gt;noreply@anthropic.com&lt;/a&gt;&gt;&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/BeatJourneyController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37345</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37345</guid></item>
<item><pubDate>Tue, 18 Aug 2026 15:18:27 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37343 – Update PJP, Visit quality flags</title><description>&lt;div&gt;&lt;strong&gt;vikas – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Update PJP, Visit quality flags&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/BeatJourneyController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/beat-journey.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37343</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37343</guid></item>
<item><pubDate>Tue, 18 Aug 2026 13:37:58 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37337 – Move offer-circular ingest out of cron and into the portal ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 23 file(s) modified&lt;/strong&gt;&lt;br/&gt;Move offer-circular ingest out of cron and into the portal&lt;br /&gt;
&lt;br /&gt;
The parse now runs in profitmandi-fofo, on a background thread, triggered by the&lt;br /&gt;
upload that produced the document.&lt;br /&gt;
&lt;br /&gt;
Why: splitting one feature across two artifacts with independent deploy cadences&lt;br /&gt;
cost a full day. fofo shipped, cron did not, and a valid upload sat in DRAFT with&lt;br /&gt;
nothing on the server able to parse it - the deployed cron jar contained none of the&lt;br /&gt;
ingest classes. One 9-page PDF a month never justified a batch tier, and the portal&lt;br /&gt;
already ships two PDF stacks, so the isolation argument for keeping PDFBox out was&lt;br /&gt;
weaker than it looked.&lt;br /&gt;
&lt;br /&gt;
- 13 parser classes move verbatim from com.smartdukaan.cron.offercircular to&lt;br /&gt;
  com.spice.profitmandi.web.offercircular. No logic changed.&lt;br /&gt;
- CircularIngestScheduler becomes CircularIngestRunner: the @Scheduled(every 5 min)&lt;br /&gt;
  entry point and the offer.circular.ingest.enabled flag are gone, replaced by a&lt;br /&gt;
  single-threaded daemon executor. All claim, ingest and notification logic is&lt;br /&gt;
  unchanged.&lt;br /&gt;
- Upload hands the document id to the runner AFTER COMMIT, not inline. The DRAFT row&lt;br /&gt;
  is written inside the request transaction; a worker starting immediately would race&lt;br /&gt;
  that commit, find nothing to claim and silently do nothing - which is precisely the&lt;br /&gt;
  stuck-on-DRAFT symptom this change removes.&lt;br /&gt;
- The guarded claim is KEPT even though there is now one trigger. It still stops a&lt;br /&gt;
  double-submit, a second portal node, and a re-ingest racing an in-flight parse.&lt;br /&gt;
- Re-ingest parses immediately instead of queueing for a scheduler.&lt;br /&gt;
- The stall reaper runs when the review screen loads. There is no timer here any&lt;br /&gt;
  more, and a document stranded by a redeploy mid-parse only matters when somebody&lt;br /&gt;
  looks for it - which matters more now the parse lives in the web application.&lt;br /&gt;
- tabula moves to this module with its exclusions intact, as does the&lt;br /&gt;
  dumpCircularClasspath helper the local ingest harness depends on.&lt;br /&gt;
- Screen no longer claims &quot;the ingest job runs every 5 minutes&quot;, which was untrue the&lt;br /&gt;
  moment cron stopped being the route; poll interval 15s -&gt; 3s to match a parse that&lt;br /&gt;
  takes seconds. jsVersion 404 -&gt; 405.&lt;br /&gt;
- offer.circular.review.url added here, since the runner sends that email now.&lt;br /&gt;
&lt;br /&gt;
Verified: full ingest of the Aug&apos;26 circular through the relocated code is identical&lt;br /&gt;
to the reference - 239 offers, 663 products, 279 AUTO_EXACT, 361 benefits, 511&lt;br /&gt;
tenures, 911 bank links. ProductNamesTest 11/11 in its new home.&lt;/div&gt;~ /trunk/profitmandi-fofo/build.gradle&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/OfferCircularController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/BankTextParser.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/BenefitParser.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/CatalogIndex.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/CircularExtractor.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/CircularRow.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/FootnoteParser.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/ProductAliases.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/ProductMatcher.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/ProductNames.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/SequenceRatio.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/offercircular/TenureParser.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/resources/META-INF/dev.properties&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/resources/META-INF/prod.properties&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/offer-circular-review.js&lt;br /&gt;+ /trunk/profitmandi-fofo/src/test/java/com/spice/profitmandi/web/offercircular&lt;br /&gt;+ /trunk/profitmandi-fofo/src/test/java/com/spice/profitmandi/web/offercircular/ProductNamesTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37337</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37337</guid></item>
<item><pubDate>Tue, 18 Aug 2026 11:18:51 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37332 – Move the offer-circular upload directory off a developer home path ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Move the offer-circular upload directory off a developer home path&lt;br /&gt;
&lt;br /&gt;
Every upload in production failed with a 400 on mkdirs. offer.circular.dir was&lt;br /&gt;
never set in any environment, so it fell back to the code default&lt;br /&gt;
/users/amit/uploads/offer-circulars; Tomcat runs as the tomcat user, which cannot&lt;br /&gt;
create /users at the filesystem root, and the controller threw &quot;Circular storage&lt;br /&gt;
directory is not writable&quot;.&lt;br /&gt;
&lt;br /&gt;
- default is now /var/lib/smartdukaan/offer-circulars, a real server path&lt;br /&gt;
- offer.circular.dir set explicitly in prod.properties, and pointed at the&lt;br /&gt;
  developer&apos;s own space in dev.properties, since /var/lib needs sudo on a&lt;br /&gt;
  workstation&lt;br /&gt;
- staging.properties deliberately untouched; the new default covers it&lt;br /&gt;
&lt;br /&gt;
The location has two hard constraints, now recorded on the field itself:&lt;br /&gt;
&lt;br /&gt;
- OUTSIDE webapps/. A redeploy wipes anything under it, and&lt;br /&gt;
  offer_document.stored_path is how both re-ingest and re-download resolve the&lt;br /&gt;
  PDF, so a wipe breaks them permanently. Stray PDFs are already sitting in&lt;br /&gt;
  WEB-INF/classes/META-INF on the server from exactly this mistake.&lt;br /&gt;
- OUTSIDE any web root. A circular carries the OEM&apos;s confidential cashback&lt;br /&gt;
  economics and must never be servable as a static file. Hence /var/lib rather&lt;br /&gt;
  than /var/www, whose local precedent /var/www/partner_stats is chmod 777.&lt;br /&gt;
&lt;br /&gt;
Only fofo needs the key: the cron ingest resolves the PDF from&lt;br /&gt;
offer_document.stored_path and reads it as root, so 0750 tomcat:tomcat is enough.&lt;br /&gt;
&lt;br /&gt;
Deploying this alone does not fix production - the directory must also exist and&lt;br /&gt;
be writable by tomcat.&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/OfferCircularController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/resources/META-INF/dev.properties&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/resources/META-INF/prod.properties&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37332</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37332</guid></item>
<item><pubDate>Tue, 18 Aug 2026 00:19:29 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37331 – Add offer circular review and curation screen  Shows the ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add offer circular review and curation screen&lt;br /&gt;
&lt;br /&gt;
Shows the nine verbatim PDF columns beside what the parser made of them, uploads a&lt;br /&gt;
new monthly circular, and resolves the products the matcher could not.&lt;br /&gt;
&lt;br /&gt;
Upload deliberately does not parse - it stores the PDF, sha256-deduped, and&lt;br /&gt;
registers it DRAFT, so an upload can never half-populate the offer tables. The cron&lt;br /&gt;
ingest job picks it up from there.&lt;br /&gt;
&lt;br /&gt;
The curation queue groups by distinct (division, raw text) because that is the&lt;br /&gt;
product_alias key: one answer clears every row carrying that text, on this circular&lt;br /&gt;
and on every later one. On the Aug&apos;26 circular that turns 152 unresolved rows into&lt;br /&gt;
106 decisions. Three actions mirror product_alias.action - PIN to a catalog id,&lt;br /&gt;
REWRITE to the catalog&apos;s spelling and match again, or IGNORE.&lt;br /&gt;
&lt;br /&gt;
- Writes product_alias only, so nothing the screen does can set manually_curated&lt;br /&gt;
  and lock a circular against re-ingest. Coverage decisions, which do need that,&lt;br /&gt;
  are listed but visibly parked rather than offered a naming answer.&lt;br /&gt;
- A saved decision changes nothing until re-ingest, because aliases are read at&lt;br /&gt;
  ingest time; the queue says so and the re-ingest button puts the document back&lt;br /&gt;
  to DRAFT for the scheduler. The portal cannot run the ingest itself - that lives&lt;br /&gt;
  in profitmandi-cron, which fofo does not depend on.&lt;br /&gt;
- The closest rejected match is shown for context and never pre-selected. Four new&lt;br /&gt;
  OnePlus models each &quot;nearly&quot; matched a 2015 OnePlus 2 at 0.80-0.84, and offering&lt;br /&gt;
  that as a suggestion invites a reviewer to confirm it. Where the catalog has no&lt;br /&gt;
  such SKU the search says so and steers to IGNORE.&lt;br /&gt;
- aliasExport emits every decision as replayable SQL, because the portal writes to&lt;br /&gt;
  one database and environments would otherwise drift apart silently.&lt;br /&gt;
&lt;br /&gt;
Access is an email allowlist AND the admin role. Both are enforced in the&lt;br /&gt;
controller; the sidebar entry repeats the allowlist because visibility in auth.menu&lt;br /&gt;
is role-driven and cannot express a per-email rule.&lt;br /&gt;
&lt;br /&gt;
No jsVersion bump: offer-circular-review.js is a new file that was never cached,&lt;br /&gt;
so it needs no cache-buster, and churning that shared counter only conflicts with&lt;br /&gt;
whoever is mid-edit on it.&lt;/div&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/OfferCircularController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/js/offer-circular-review.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-review.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37331</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37331</guid></item>
<item><pubDate>Mon, 17 Aug 2026 17:46:07 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37327 – super retailer club 5 live</title><description>&lt;div&gt;&lt;strong&gt;ranu – 21 file(s) modified&lt;/strong&gt;&lt;br/&gt;super retailer club 5 live&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/FofoOrderRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/FofoOrderRepositoryImpl.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/DashboardController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/1 GM Gold Coin.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/accessories.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/calendar_.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/CURRENTLY AIMING FOR.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/download.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/Group 4.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/Maharaja.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/Mobile And tv.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/Raftaar.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/Shuruaat.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/Tarakki.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/Target.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/TOTAL ACHIEVEMENT.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/Udaan.png&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/images/src-images/Vijeta.png&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/dashboard1.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37327</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37327</guid></item>
<item><pubDate>Mon, 17 Aug 2026 16:32:42 +0530</pubDate><dc:creator>aman</dc:creator><title>Rev 37324 – Lead Management: restrict lead view to field-level sales only (L1-L3). ...</title><description>&lt;div&gt;&lt;strong&gt;aman – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Lead Management: restrict lead view to field-level sales only (L1-L3). Any SALES position at any level previously forced the own+reportees lead filter, so senior sales heads (L4+ BM/RSM/NSM/co-founder L7) lost visibility of all leads and their dashboard charts collapsed. hasCategory check replaced with isFieldSales() at both view-filter sites; assignee validation untouched.&lt;/div&gt;~ /trunk/profitmandi-fofo/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-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37324</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37324</guid></item>
<item><pubDate>Fri, 14 Aug 2026 18:17:18 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37319 – Fix partner-performance tertiary: aggregate order items (qty*mop), not the POS-typed ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 6 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix partner-performance tertiary: aggregate order items (qty*mop), not the POS-typed order header&lt;br /&gt;
&lt;br /&gt;
The tertiary panel summed fofo_order.total_amount - a price typed at the partner POS&lt;br /&gt;
and never validated against the catalogue - and attributed each whole order to its&lt;br /&gt;
first line item&apos;s brand via .get(0). One mistyped digit inflated reported sell-out&lt;br /&gt;
10x, and mixed-brand orders booked 100% to the first brand, leaving the rest at zero.&lt;br /&gt;
Defect dates from r32000/r32034 (May 2023); the panel was the only tertiary consumer&lt;br /&gt;
diverging from the qty*mop basis.&lt;br /&gt;
&lt;br /&gt;
- New FofoOrder.selectMonthlyBrandTertiary: sum(quantity*mop) grouped by&lt;br /&gt;
  (year*100+month) and item brand - the same basis selectPartnerTertiarySales&lt;br /&gt;
  already uses for the DSR and the partner tier calculation&lt;br /&gt;
- PerformanceController: replaces two entity-loading queries (every FofoOrder and&lt;br /&gt;
  FofoOrderItem for 6 months) with one aggregate; all items now count, each under&lt;br /&gt;
  its own brand&lt;br /&gt;
- Month labels unchanged - toMonthLabel rebuilds the MMM&apos;&apos;uu key, template untouched&lt;br /&gt;
- Remove V2FofoPerformanceController, the /v2/fofo JSON copy carrying the same defect&lt;br /&gt;
&lt;br /&gt;
Verified against dev DB for fofo_id 175139501: Jul 2026 now 16,94,939 (panel&lt;br /&gt;
previously showed 50,92,440); all six months match the qty*mop basis.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/FofoOrder.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/MonthlyBrandTertiaryModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/FofoOrderRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/FofoOrderRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/PerformanceController.java&lt;br /&gt;x /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoPerformanceController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37319</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37319</guid></item>
<item><pubDate>Fri, 14 Aug 2026 12:09:11 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37312 – one assist ew at 99 up to 20k</title><description>&lt;div&gt;&lt;strong&gt;ranu – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;one assist ew at 99 up to 20k&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/ScratchService.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/OrderController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37312</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37312</guid></item>
<item><pubDate>Thu, 13 Aug 2026 20:53:52 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37310 – Scratch Offers now selects only active partners</title><description>&lt;div&gt;&lt;strong&gt;vikas – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Scratch Offers now selects only active partners&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/scratch/ScratchController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37310</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37310</guid></item>
<item><pubDate>Thu, 13 Aug 2026 18:48:00 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37309 – Scratch Offers now selects only active partners</title><description>&lt;div&gt;&lt;strong&gt;vikas – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Scratch Offers now selects only active partners&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/auth/LocationTrackingRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/auth/LocationTrackingRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/scratch/ScratchController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37309</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37309</guid></item>
<item><pubDate>Mon, 10 Aug 2026 18:22:17 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37288 – all active brand in hot deals</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;all active brand in hot deals&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/HotDealController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37288</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37288</guid></item>
<item><pubDate>Mon, 10 Aug 2026 18:00:04 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37287 – warehouse access</title><description>&lt;div&gt;&lt;strong&gt;ranu – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;warehouse access&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/AdminUser.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/DashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/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-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37287</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37287</guid></item>
<item><pubDate>Mon, 10 Aug 2026 17:46:01 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37286 – warehouse access</title><description>&lt;div&gt;&lt;strong&gt;ranu – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;warehouse access&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/AdminUser.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/DashboardController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37286</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37286</guid></item>
<item><pubDate>Mon, 10 Aug 2026 17:19:08 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37285 – warehouse access</title><description>&lt;div&gt;&lt;strong&gt;ranu – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;warehouse access&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/DashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/InventoryController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37285</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-fofo%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fweb%2Fcontroller%2F&amp;rev=37285</guid></item>
</channel></rss>