<?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>Wed, 07 Oct 2026 09:30:54 +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=37793</link><atom:link href="https://svn.smartdukaan.com/rss.php?peg=37793&amp;repname=SmartDukaan" rel="self" type="application/rss+xml" />
<item><pubDate>Mon, 28 Sep 2026 15:37:47 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37793 – feat(cart): carry bag pricing via CarryBagQuote in V2 cart and ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(cart): carry bag pricing via CarryBagQuote in V2 cart and order create&lt;br /&gt;
&lt;br /&gt;
V2CartController prices and rebalances the carry bag through&lt;br /&gt;
CartService.getCarryBagQuote: one bag at Rs 1 per smartphone over Rs 12,000,&lt;br /&gt;
extras at listing, Bronze at listing for all. The old resolveCarryBagPrice /&lt;br /&gt;
CARRY_BAG_PREMIUM_PRICE path and its partnerTypeChangeService dependency are&lt;br /&gt;
removed. OrderController splits the blended carry bag line into its two&lt;br /&gt;
priced orders when partitioning the cart, so the same SKU appears twice on&lt;br /&gt;
one invoice at its two prices.&lt;br /&gt;
&lt;br /&gt;
Needs profitmandi-dao r37792; deploy together with the partner apps.&lt;/div&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/checkout/OrderController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/V2CartController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37793&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37793&amp;peg=37793</guid></item>
<item><pubDate>Mon, 28 Sep 2026 15:37:36 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37792 – feat(cart): carry bag at Rs 1 per smartphone over Rs ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 11 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(cart): carry bag at Rs 1 per smartphone over Rs 12,000, extras at listing price&lt;br /&gt;
&lt;br /&gt;
One carry bag (item 32046) is priced at Rs 1 for each smartphone (category&lt;br /&gt;
10006) in the cart selling above Rs 12,000; bags beyond that count are priced&lt;br /&gt;
at the carry bag&apos;s listing price, and Bronze partners pay listing for all.&lt;br /&gt;
Closes the leak where bag-only carts of hundreds of bags at Rs 1 were placed&lt;br /&gt;
from the old app. CarryBagQuote (via CartService.getCarryBagQuote) is the&lt;br /&gt;
single rule; the cart carries it as one line at a blended price.&lt;br /&gt;
&lt;br /&gt;
- CartService/CartServiceImpl, CartResponse, OpenCartValidationResult: expose&lt;br /&gt;
  the quote on the cart.&lt;br /&gt;
- OrderLineAllocator: an item may now have more than one cart line (the flat&lt;br /&gt;
  and listing-priced parts); its units fill the lines in order.&lt;br /&gt;
- TransactionServiceImpl: item quantities merge instead of failing on a&lt;br /&gt;
  duplicate item id.&lt;br /&gt;
- PurchaseServiceImpl: partner GRN creates one stock record per billed price;&lt;br /&gt;
  the GRN screen shows the blended unit price; dead&lt;br /&gt;
  createScannedNonSerializedItem removed.&lt;br /&gt;
- PurchaseReturnServiceImpl: debit-note PDF picks the order billed at the&lt;br /&gt;
  returned stock&apos;s price; refundOrder spreads a non-serialized return over the&lt;br /&gt;
  item&apos;s orders with room left (same price first) instead of loading it all&lt;br /&gt;
  on the first order.&lt;br /&gt;
&lt;br /&gt;
Tests: CarryBagQuoteTest 6/6, OrderLineAllocatorTest 13/13.&lt;br /&gt;
Deploy with profitmandi-web (same change) and the partner apps.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/CartService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/CartServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/OpenCartValidationResult.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/CarryBagQuote.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/CartResponse.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/PurchaseReturnServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/PurchaseServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/OrderLineAllocator.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/dao/model/CarryBagQuoteTest.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/transaction/OrderLineAllocatorTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37792&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37792&amp;peg=37793</guid></item>
<item><pubDate>Mon, 28 Sep 2026 14:38:09 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37791 – Sale returns: Finance-only B2C settlement after a NIC GSTIN refusal ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 6 file(s) modified&lt;/strong&gt;&lt;br/&gt;Sale returns: Finance-only B2C settlement after a NIC GSTIN refusal&lt;br /&gt;
&lt;br /&gt;
Once NIC has refused a return because the buyer&apos;s GSTIN is cancelled or&lt;br /&gt;
invalid, only Finance may act on it - approve, retry or reject. The pending&lt;br /&gt;
queue shows the refusal reason and, on the day it happened, a &quot;Refund as&lt;br /&gt;
B2C&quot; action; Logistics sees &quot;IRN failed - awaiting Finance&quot; and no buttons.&lt;br /&gt;
&lt;br /&gt;
The B2C screen states NIC&apos;s reason and every returned line with its value&lt;br /&gt;
including and excluding GST, and fixes the refund at the value net of GST&lt;br /&gt;
in whole rupees. Finance types that figure back by hand, enters a remark and&lt;br /&gt;
ticks the consent box before the button enables; the server re-checks the&lt;br /&gt;
amount, the remark, the consent and the same-day window, so the screen is a&lt;br /&gt;
convenience and not the control. Cancelling or finishing returns to the&lt;br /&gt;
queue, and a refused approval now reloads the queue so the B2C action&lt;br /&gt;
appears without a manual refresh.&lt;br /&gt;
&lt;br /&gt;
jsVersion 438 -&gt; 439 for return.js.&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/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/resources/js/business/return.js&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/b2c-refund.vm&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=%2F&amp;isdir=1&amp;rev=37791&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37791&amp;peg=37793</guid></item>
<item><pubDate>Mon, 28 Sep 2026 14:34:01 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37790 – Return refund as B2C when NIC refuses the buyer&apos;s GSTIN ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 13 file(s) modified&lt;/strong&gt;&lt;br/&gt;Return refund as B2C when NIC refuses the buyer&apos;s GSTIN&lt;br /&gt;
&lt;br /&gt;
A return whose credit note NIC refuses because the BUYER&apos;s GSTIN is&lt;br /&gt;
cancelled or invalid could not be settled at all: the approval threw, and&lt;br /&gt;
with it went the refund, the stock and the return rows (NSUPDL5176, Mobile&lt;br /&gt;
Hub, GSTIN 08DCUPD7948K1ZP). Where the invoice itself had never been filed&lt;br /&gt;
the return was instead refunded with no credit note at all, leaving the&lt;br /&gt;
refund undocumented.&lt;br /&gt;
&lt;br /&gt;
Raising the note automatically is not the answer - it is Finance&apos;s call,&lt;br /&gt;
and the GST on a cancelled-GSTIN sale is not recoverable, so paying the&lt;br /&gt;
full value back loses it. Both flows therefore record the refusal and stop.&lt;br /&gt;
&lt;br /&gt;
GstProService: getIrnFailureReason (NIC&apos;s refusal for an invoice),&lt;br /&gt;
isInvalidBuyerGstin (that refusal is about the buyer&apos;s registration -&lt;br /&gt;
deliberately NOT a state-code mismatch, which is a data error to fix and&lt;br /&gt;
retry, nor anything naming our own seller GSTIN) and briefIrnReason (one&lt;br /&gt;
plain-ASCII line of 128 chars; credit_note is latin1 and sql_mode is empty,&lt;br /&gt;
so anything else would store as &apos;?&apos;).&lt;br /&gt;
&lt;br /&gt;
PurchaseReturnServiceImpl: both the invoice-return and the debit-note&lt;br /&gt;
refund detect that refusal, record it through ReturnIrnFailureRecorder and&lt;br /&gt;
throw ReturnIrnGstinFailureException. The recorder commits in REQUIRES_NEW&lt;br /&gt;
because the approval it records is about to roll back, and it only inserts -&lt;br /&gt;
return_irn_failure carries no foreign key on purpose, since an FK check&lt;br /&gt;
would take a shared lock on the very PurchaseReturnOrder row the dying&lt;br /&gt;
transaction may still hold.&lt;br /&gt;
&lt;br /&gt;
Finance may then settle the return as B2C for the rest of that calendar day:&lt;br /&gt;
refundAsB2c credits the value NET of GST in whole rupees (B2cRefundQuote,&lt;br /&gt;
HALF_UP per line, so the line table and the total always agree), restores&lt;br /&gt;
the stock and issues a local credit note for exactly that amount with no tax&lt;br /&gt;
on its lines, no IRN and NIC&apos;s reason recorded. The amount is fixed - the&lt;br /&gt;
caller must pass back the quoted figure - and a remark and explicit consent&lt;br /&gt;
are required. On a later day the option only reopens after a fresh approval&lt;br /&gt;
attempt is refused again, so NIC is always re-checked first.&lt;br /&gt;
&lt;br /&gt;
Mails: every refusal notifies Accounts L2 and above; the B2C settlement&lt;br /&gt;
notifies them and the partner&apos;s Warehouse L1/L2, both tabulated.&lt;br /&gt;
&lt;br /&gt;
The partner account statement is unaffected: it skips RETURNS notes and&lt;br /&gt;
credits returns from returnorderinfo, so the new notes cannot double-credit.&lt;br /&gt;
&lt;br /&gt;
DEPLOY ORDER: apply sql/add_return_b2c_refund_20260921.sql BEFORE any war&lt;br /&gt;
built from this dao. CreditNote now maps irn_skip_reason and b2c, so every&lt;br /&gt;
credit-note read in web, fofo and cron fails until the columns exist.&lt;br /&gt;
Untested beyond compilation.&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/ReturnIrnFailure.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/transaction/CreditNote.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/ReturnIrnFailureRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/ReturnIrnFailureRepositoryImpl.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/inventory/B2cRefundQuote.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/PurchaseReturnNotificationService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/PurchaseReturnNotificationServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/PurchaseReturnService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/PurchaseReturnServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/ReturnIrnFailureRecorder.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/ReturnIrnGstinFailureException.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/add_return_b2c_refund_20260921.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37790&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37790&amp;peg=37793</guid></item>
<item><pubDate>Mon, 28 Sep 2026 13:25:51 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37789 – FormattingUtils.formatDigit: print whole numbers, as intended  digitFormatter set the ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;FormattingUtils.formatDigit: print whole numbers, as intended&lt;br /&gt;
&lt;br /&gt;
digitFormatter set the MINIMUM fraction digits twice and never set the&lt;br /&gt;
maximum, so Java&apos;s default of 3 applied: formatDigit(84745.76f) rendered&lt;br /&gt;
&quot;84,745.758&quot; - float noise at three decimals - where a whole number was&lt;br /&gt;
meant. The second call was clearly a typo for setMaximumFractionDigits(0).&lt;br /&gt;
&lt;br /&gt;
Only one other call site (ItemCriteria &quot;with Selling Price &gt;= ...&quot;), which&lt;br /&gt;
passes whole rupees and is unaffected. Needed by the B2C return refund,&lt;br /&gt;
which prints whole-rupee amounts on screen and in mails.&lt;/div&gt;~ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/util/FormattingUtils.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37789&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37789&amp;peg=37793</guid></item>
<item><pubDate>Sun, 27 Sep 2026 15:44:19 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37788 – activation: stop a broken JVM from spending the day&apos;s imei ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;activation: stop a broken JVM from spending the day&apos;s imei pool, and take the&lt;br /&gt;
selenium atom read out of the nested jar&lt;br /&gt;
&lt;br /&gt;
Oppo/Realme activation collapsed on 21-22 Sep. Every WebDriver command failed with&lt;br /&gt;
java.util.zip.ZipException reading a Selenium JS atom:&lt;br /&gt;
&lt;br /&gt;
  W3CHttpCommandCodec.amendParameters:227 -&gt; executeAtom:397&lt;br /&gt;
  -&gt; com.google.common.io.Resources.toString&lt;br /&gt;
  -&gt; org.springframework.boot.loader.jar.ZipInflaterInputStream.read -&gt; ZipException&lt;br /&gt;
&lt;br /&gt;
Scale, from fofo.activated_imei: a ~30-50 errors/day baseline became 17,508 on 21-Sep&lt;br /&gt;
and 27,768 on 22-Sep. On 22-Sep it touched 3,920 realme imeis for 0 dates and 4,824&lt;br /&gt;
oppo for 96, against a normal 76-100% hit rate. Realme burned its entire day pool by&lt;br /&gt;
11:07 and then correctly went quiet, having answered nothing.&lt;br /&gt;
&lt;br /&gt;
TWO INDEPENDENT FAULTS, one fixed each way.&lt;br /&gt;
&lt;br /&gt;
1. The pool was spent on an outage. restUnanswered stamps every unanswered imei so the&lt;br /&gt;
20-second tick advances instead of re-handing the same rows -- correct for a per-imei&lt;br /&gt;
failure, catastrophic for a systemic one, because a stamped row does not come back&lt;br /&gt;
until its rest expires. So a JVM that cannot read a jar quietly consumed a day of&lt;br /&gt;
payout data. Now: if NOTHING in the chunk was answered and the chunk had more than one&lt;br /&gt;
imei, that is infrastructure rather than a verdict, and nothing is stamped. Cost is a&lt;br /&gt;
re-ask of the same chunk next tick -- loud and self-limiting -- instead of the day.&lt;br /&gt;
Same class of bug as the carlcare transient refusal (r37537): far-end/our-end noise&lt;br /&gt;
must never be recorded as an answer.&lt;br /&gt;
&lt;br /&gt;
2. The read itself. Selenium loads its atoms as classpath RESOURCES on essentially&lt;br /&gt;
every command, which inside a fat jar is a nested-jar read on the Spring Boot 2.0.2&lt;br /&gt;
(2018) loader. Three different inflater errors appeared on prod -- &quot;invalid stored&lt;br /&gt;
block lengths&quot;, &quot;invalid distance too far back&quot;, &quot;invalid code lengths set&quot; -- on a jar&lt;br /&gt;
whose outer AND extracted nested archives both pass `unzip -t`. Intact bytes with three&lt;br /&gt;
distinct inflater failures is a reader fault, not a file fault. bootJar now sets&lt;br /&gt;
requiresUnpack for selenium-remote-driver, so it is extracted to a real file at launch&lt;br /&gt;
and the atom read never touches the nested reader. Verified in the built jar: the entry&lt;br /&gt;
carries UNPACK:&amp;lt;sha1&gt; and is STORED rather than DEFLATED.&lt;br /&gt;
&lt;br /&gt;
TRAPS WORTH RECORDING.&lt;br /&gt;
&lt;br /&gt;
- A restart is NOT a diagnosis here. It was restarted 13:16 on 22-Sep and still failed&lt;br /&gt;
  for three more hours at ~1,260/hour, then a 16:36 restart came up clean -- same jar,&lt;br /&gt;
  mtime unchanged. Anyone reading &quot;restart fixed it&quot; should distrust it.&lt;br /&gt;
- Concurrency alone does not explain it: up to 2 scheduler pools ran these tasks per&lt;br /&gt;
  minute in the broken window AND in the healthy one.&lt;br /&gt;
- The GlitchTip board under-reported this badly (#1495 lastSeen 17-Sep while the log&lt;br /&gt;
  held thousands on 21-22 Sep), so the board is not a reliable outage signal for cron.&lt;br /&gt;
  Judge this lane on dates written in fofo.activated_imei, not on issue counts.&lt;br /&gt;
- Deploy the cron jar stop -&gt; replace -&gt; start. The jar on disk was overwritten in place&lt;br /&gt;
  at 12:31 on 21-Sep while a JVM held it open, which is how this started.&lt;/div&gt;~ /trunk/profitmandi-cron/build.gradle&lt;br /&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/scheduled/OppoImeiActivationService.java&lt;br /&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/scheduled/RealmeImeiActivationService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37788&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37788&amp;peg=37793</guid></item>
<item><pubDate>Sat, 26 Sep 2026 22:20:49 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37787 – feat(partner-access): demo grant picker lists Platinum partners only  Partner ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(partner-access): demo grant picker lists Platinum partners only&lt;br /&gt;
&lt;br /&gt;
Partner multi-select on Demo Partner Access filters active partners to the&lt;br /&gt;
current effective tier PLATINUM (PartnerTypeChangeService.getTypesForFofoIds,&lt;br /&gt;
same lookup as Indent/Order Management). Active grants table unchanged.&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/DemoPartnerAccessController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37787&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37787&amp;peg=37793</guid></item>
<item><pubDate>Fri, 25 Sep 2026 17:30:34 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37786 – fix(po): read PO lines only from the PO items table ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(po): read PO lines only from the PO items table&lt;br /&gt;
&lt;br /&gt;
Create PO collected rows from every table on the page ($(&quot;table &gt; tbody &gt; tr&quot;)). The aging-SKU&lt;br /&gt;
approval modal added in r37750 has its own table (#pmscpFlaggedRows); after a flagged attempt was&lt;br /&gt;
abandoned, its rows were sent as lines with itemId 0 and the server rejected the PO with&lt;br /&gt;
&quot;Items are duplicate [0]&quot;. The create, add-row and over-cap loops now read #purchase-order-table only.&lt;br /&gt;
Bump JS version to 438.&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/warehouse-purchase.js&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37786&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37786&amp;peg=37793</guid></item>
<item><pubDate>Fri, 25 Sep 2026 16:18:12 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37785 – feat(cs): demo partner access menu for Sales L6 and above ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(cs): demo partner access menu for Sales L6 and above&lt;br /&gt;
&lt;br /&gt;
menu_category rows for Sales (category 4) ordinals 5-9 (L6..Final) on the&lt;br /&gt;
Demo Partner Access menu. INSERT IGNORE on the PK (latin1 column rejects a&lt;br /&gt;
utf8-literal NOT EXISTS compare). Applied on hadb1 2026-09-25.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/resources/sql/migration_demo_partner_access.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37785&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37785&amp;peg=37793</guid></item>
<item><pubDate>Fri, 25 Sep 2026 15:44:55 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37784 – Corrected LMS Data and Added filter</title><description>&lt;div&gt;&lt;strong&gt;vikas – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;Corrected LMS Data and Added filter&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/LmsDashboardService.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsDashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lms-dashboard-standalone.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37784&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37784&amp;peg=37793</guid></item>
<item><pubDate>Fri, 25 Sep 2026 15:21:39 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37783 – Corrected LMS Data</title><description>&lt;div&gt;&lt;strong&gt;vikas – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Corrected LMS Data&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsDashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsLeadController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lms-dashboard-standalone.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37783&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37783&amp;peg=37793</guid></item>
<item><pubDate>Fri, 25 Sep 2026 14:54:53 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37782 – fix(catalog): add serializedOnly overloads of selectAllItems/selectAllBrands  r37776 committed InventoryServiceImpl ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(catalog): add serializedOnly overloads of selectAllItems/selectAllBrands&lt;br /&gt;
&lt;br /&gt;
r37776 committed InventoryServiceImpl calling the 3-arg selectAllItems and&lt;br /&gt;
selectAllBrands, but the repository overloads and the named-query parameters&lt;br /&gt;
they bind were left uncommitted, so a build from trunk failed.&lt;br /&gt;
&lt;br /&gt;
serializedOnly = true restricts the model/brand pickers to IMEI items; the&lt;br /&gt;
2-arg forms delegate with false, unchanged behaviour.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/Item.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/ItemRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/ItemRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37782&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37782&amp;peg=37793</guid></item>
<item><pubDate>Fri, 25 Sep 2026 13:17:18 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37781 – feat(partner-access): demo partners in app switcher + impersonate  - ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(partner-access): demo partners in app switcher + impersonate&lt;br /&gt;
&lt;br /&gt;
- /getPartners, /getPartnersList: position partners + active demo partners&lt;br /&gt;
  (copies the cached getAuthUserPartnerEmailMapping set, never mutates it)&lt;br /&gt;
- /impersonate: an active demo grant also passes the access check&lt;br /&gt;
&lt;br /&gt;
Needs dao r37779 and migration_demo_partner_access.sql applied.&lt;/div&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/LeadController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/UserController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoAuthUserController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37781&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37781&amp;peg=37793</guid></item>
<item><pubDate>Fri, 25 Sep 2026 13:17:10 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37780 – feat(partner-access): demo partner access page + validation  - Demo ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 10 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(partner-access): demo partner access page + validation&lt;br /&gt;
&lt;br /&gt;
- Demo Partner Access page (Admin Control): grant partners to a Sales person,&lt;br /&gt;
  list and revoke active grants; server-guarded by canManage&lt;br /&gt;
- Partner access dropdown: position partners + active demo partners &quot;(Demo)&quot;;&lt;br /&gt;
  shared cached mapping is copied, never mutated&lt;br /&gt;
- /login-as-partner-readonly: partner must be in caller&apos;s positions or demo&lt;br /&gt;
  grants (was unchecked; Partner access is its only caller)&lt;br /&gt;
- /mobileapp?emailId=: Sales position holders get the partner app token only&lt;br /&gt;
  for position/demo partners; other admins (Partner Info) unchanged&lt;br /&gt;
- DemoPartnerAccessTest (5, local DB, rolled back)&lt;br /&gt;
- jsVersion 437&lt;br /&gt;
&lt;br /&gt;
Needs dao r37779 and migration_demo_partner_access.sql applied.&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/DemoPartnerAccessController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LoginController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/RetailerController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/resources/js/demo-partner-access.js&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/demo-partner-access.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/partner-readonly-info.vm&lt;br /&gt;+ /trunk/profitmandi-fofo/src/test/java/com/spice/profitmandi/service/cs&lt;br /&gt;+ /trunk/profitmandi-fofo/src/test/java/com/spice/profitmandi/service/cs/DemoPartnerAccessTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37780&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37780&amp;peg=37793</guid></item>
<item><pubDate>Fri, 25 Sep 2026 13:16:59 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37779 – feat(cs): demo partner access for sales team  New cs.demo_partner_access ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(cs): demo partner access for sales team&lt;br /&gt;
&lt;br /&gt;
New cs.demo_partner_access binding (sales auth user -&gt; partner) used only to&lt;br /&gt;
open a partner&apos;s dashboard/app for demos. Read only at partner-view entry&lt;br /&gt;
points; CsService position mappings are untouched, so performance, targets,&lt;br /&gt;
reports and cron mails are unaffected.&lt;br /&gt;
&lt;br /&gt;
- DemoPartnerAccess entity + repository&lt;br /&gt;
- DemoPartnerAccessService: grant (sales-only, active store, skips duplicate&lt;br /&gt;
  and position-mapped), soft revoke, isAllowed (position OR demo),&lt;br /&gt;
  demo emails for app lists, canManage (mirrors sidebar menu rule)&lt;br /&gt;
- AdminUser.ALL_MENU_EMAILS extracted so canManage and the sidebar share it&lt;br /&gt;
- migration_demo_partner_access.sql: table + &quot;Demo Partner Access&quot; menu&lt;br /&gt;
  under Admin Control (NOT yet applied on hadb1)&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/cs/DemoPartnerAccess.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/DemoPartnerAccessRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/DemoPartnerAccessRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/DemoPartnerAccessService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/DemoPartnerAccessServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/AdminUser.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/migration_demo_partner_access.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37779&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37779&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 22:37:06 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37778 – fix(catalog): delist cron retires only models it darkened in the ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(catalog): delist cron retires only models it darkened in the same run&lt;br /&gt;
&lt;br /&gt;
Step 4 scanned every mobile model with no active listing and moved it to OTHER,&lt;br /&gt;
so new launches (categorised before listing) and hand-paused models were retired&lt;br /&gt;
the next morning, e.g. Nothing Phone 4 1026596-603 on 2026-09-15. Scope it to&lt;br /&gt;
models whose listing this run delisted (_delist_audit run_date = today).&lt;br /&gt;
Add fix_dark_model_retire_20260924.sql to restore the 16 models still stuck on OTHER.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/catalog/CatalogDelistServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/sql/delist_inactive_listings_rolling_24m.sql&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/fix_dark_model_retire_20260924.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37778&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37778&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 20:16:56 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37777 – returns: finance endpoint to reverse a return whose goods never ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;returns: finance endpoint to reverse a return whose goods never reached the warehouse&lt;br /&gt;
&lt;br /&gt;
PUT /return/reverse?imei=&amp;reason=&amp;dryRun= calls ReturnReversalService (r37776) for one&lt;br /&gt;
IMEI. Finance only, same canRefund gate as the refund it undoes, and dryRun defaults to&lt;br /&gt;
true so a call without it reports the plan and writes nothing.&lt;br /&gt;
&lt;br /&gt;
ReturnReversalTest covers the four cases against the local database with NIC on the&lt;br /&gt;
sandbox: the dry run writes nothing, a note past its 24h window issues a DBN and undoes&lt;br /&gt;
every effect of the refund (warehouse scan and stock, partner stock and offers, order&lt;br /&gt;
status, wallet, return item, debit note, audit row), a note inside the window has its IRN&lt;br /&gt;
cancelled and drops out of the statement, and bad input or a second reversal is refused.&lt;br /&gt;
Run it as `gradle :test --tests ...` - without the colon the filter also reaches&lt;br /&gt;
profitmandi-common and fails with &quot;No tests found&quot;.&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/PurchaseReturnController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/test/java/com/spice/profitmandi/service/inventory&lt;br /&gt;+ /trunk/profitmandi-fofo/src/test/java/com/spice/profitmandi/service/inventory/ReturnReversalTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37777&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37777&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 20:16:26 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37776 – returns: reverse a refunded debit-note return whose goods never reached ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 16 file(s) modified&lt;/strong&gt;&lt;br/&gt;returns: reverse a refunded debit-note return whose goods never reached the warehouse&lt;br /&gt;
&lt;br /&gt;
Once a return was refunded nothing could undo it - rejectReturn refuses an already&lt;br /&gt;
refunded one - so a return booked and paid for goods that never arrived left phantom&lt;br /&gt;
warehouse stock, the unit missing from partner stock, the order marked returned, a&lt;br /&gt;
wallet credit and a filed credit note, with no way back.&lt;br /&gt;
&lt;br /&gt;
ReturnReversalService.reverse(imei, reason, by, dryRun) undoes exactly one unit:&lt;br /&gt;
the warehouse return scan (row deleted so a genuine return later is not rejected as a&lt;br /&gt;
duplicate) and the stock it added, partner stock with its schemes/price drop/offers,&lt;br /&gt;
the order&apos;s return quantity and status, the wallet refund as a REVERSAL entry, and the&lt;br /&gt;
return item / debit note. Guards refuse anything that has moved since the refund, and a&lt;br /&gt;
dry run reports the plan without writing.&lt;br /&gt;
&lt;br /&gt;
The credit note follows movement and the NIC clock: inside the 24h window, and only&lt;br /&gt;
when the note credits nothing but this unit, its IRN is cancelled and the note marked&lt;br /&gt;
cancelled; past it a DBN with its own IRN is issued against the note&lt;br /&gt;
(CreditNoteService.issueReturnReversalDebitNote, stored as CN_CANCELLATION with no&lt;br /&gt;
margin month so the statement does not show it twice - the wallet REVERSAL is the&lt;br /&gt;
statement line); a note never filed at NIC is voided locally. Every local write happens&lt;br /&gt;
first and NIC last, so a refusal rolls the whole reversal back.&lt;br /&gt;
&lt;br /&gt;
fofo.return_reversal (return_reversal_20260921.sql) records each reversal and, unique&lt;br /&gt;
per return item, makes it once-only. Also adds cancelled=0 to the RETURNS_CN branches of&lt;br /&gt;
the account statement queries, without which a cancelled note keeps crediting the&lt;br /&gt;
statement - no current effect, no RETURNS note is cancelled today.&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/ReturnReversal.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/ReturnReversalRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/ReturnReversalRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CreditNoteRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CreditNoteRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/InventoryService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/InventoryServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/ReturnReversalModel.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/ReturnReversalService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/ReturnReversalServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/CreditNoteService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/CreditNoteServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseInventoryService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseInventoryServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/return_reversal_20260921.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37776&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37776&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 19:40:34 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37775 – aging po approval process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;aging po approval process&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/TodayAchievedMovementModel.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=37775&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37775&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 19:22:47 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37774 – feat: show sanction request investment numbers as whole rupees  ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat: show sanction request investment numbers as whole rupees&lt;br /&gt;
&lt;br /&gt;
Adds a global $nf0 Velocity formatter (en-IN grouping, 0 decimals, HALF_UP) and&lt;br /&gt;
uses it for Total/Short Investment on the sanction request and RBM L2 screens.&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/WEB-INF/views/ftl/approved-sanction-request-row.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/rbm-l2-approved-sanction-request.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/rbm-l2-pending-sanction-request.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/sanction-request-row.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37774&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37774&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 19:11:55 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37773 – fix: show live partner investment on sanction request approval screens ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix: show live partner investment on sanction request approval screens&lt;br /&gt;
&lt;br /&gt;
Total/short investment on /getSanctionRequest, /getRbmL2SanctionRequest and the&lt;br /&gt;
row re-render after submit now read the 2-minute partner_investment snapshot via&lt;br /&gt;
PartnerInvestmentService instead of yesterday&apos;s partner_daily_investment row.&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/SDCreditController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37773&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37773&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 18:54:36 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37772 – fix(supplier): V2 supplier save derives state from GSTIN</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(supplier): V2 supplier save derives state from GSTIN&lt;/div&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoSupplierController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37772&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37772&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 18:54:35 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37771 – fix(movement): movement POs no longer auto-close; open movement PO digest ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(movement): movement POs no longer auto-close; open movement PO digest to Warehouse L1/L2 at 09:00 and 17:00&lt;/div&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/scheduled/purchaseorder/POScheduler.java&lt;br /&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/scheduled/ScheduledSkeleton.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37771&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37771&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 18:54:34 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37770 – fix(movement): GRN of a movement invoice validated against its own ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(movement): GRN of a movement invoice validated against its own PO + billed IMEIs; Reopen removed; PO list shows Created By; supplier state from GSTIN; jsVersion 436&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/SupplierController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/warehouse/GrnController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/warehouse/PurchaseOrderController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/warehouse-purchase.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/warehouse-grn-request-items.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/warehouse-purchase-order.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37770&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37770&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 18:54:23 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37769 – fix(movement): receive a movement invoice only against its own PO, ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 10 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(movement): receive a movement invoice only against its own PO, stop auto-closing movements, cancel reduces the PO line&lt;br /&gt;
&lt;br /&gt;
- GRN: movement invoice resolves invoice -&gt; orders -&gt; transaction -&gt; its own movement PO (or a receive-only PO&lt;br /&gt;
  from the billing warehouse); supplier/warehouse keyed at entry must match; scanned IMEIs must be the billed ones&lt;br /&gt;
- Cancelling an unbilled movement order takes its qty off the PO line; PO CLOSED/PRECLOSED once nothing is open&lt;br /&gt;
- reopenedAt removed (movements no longer auto-close); PO records createdBy&lt;br /&gt;
- SupplierStateResolver: a supplier&apos;s state is derived from its GSTIN on save&lt;br /&gt;
- sql: add_po_created_by (applied), drop_po_reopened_at (run AFTER fofo/cron/web deploy)&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/warehouse/WarehousePurchaseOrder.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InvoiceService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InvoiceServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/SupplierStateResolver.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/add_po_created_by_20260924.sql&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/drop_po_reopened_at_20260924.sql&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/warehouse&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/warehouse/SupplierStateResolverTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37769&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37769&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 18:54:04 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37768 – feat(supplier): GstinUtil - read state code / PAN from a ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(supplier): GstinUtil - read state code / PAN from a GSTIN so the GSTIN decides a supplier&apos;s state&lt;/div&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/util/GstinUtil.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37768&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37768&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 18:24:08 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37767 – fix(orders): movements ship from their source only; a row reserved ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(orders): movements ship from their source only; a row reserved beyond its stock gives nothing&lt;br /&gt;
&lt;br /&gt;
Internal movement orders were allocated by the partner allocator, which spills a source&lt;br /&gt;
shortfall to every warehouse the brand mapping links to the destination - stock billed&lt;br /&gt;
there has no PO to be received against (PO 54279: 3 units put on Jaipur for a UP-&gt;Delhi&lt;br /&gt;
movement). createTransactionInternally now keeps the source&apos;s own rows only; a shortfall&lt;br /&gt;
still parks on the source&apos;s Dummy.&lt;br /&gt;
&lt;br /&gt;
getItemQty took min(qty, netAvailability) on a row reserved beyond its stock - always the&lt;br /&gt;
case on a Dummy holding an open order - so a -1 row added a unit to the shortfall, which&lt;br /&gt;
then parked on the Dummy as an extra order (24 Sep: 9 units raised for a movement of 8,&lt;br /&gt;
refused by the cart-value guard). Rows with nothing free are now skipped and no longer&lt;br /&gt;
offset another row&apos;s free stock in the warehouse total.&lt;br /&gt;
&lt;br /&gt;
Removes the empty, uncalled markOrdersAsGrnCompleted.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/TransactionService.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/transaction/GetItemQtyTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37767&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37767&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 17:22:07 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37766 – feat(store-closure): V2 closeStore goes through StoreClosureService; access checks read StoreAccess ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(store-closure): V2 closeStore goes through StoreClosureService; access checks read StoreAccess&lt;br /&gt;
&lt;br /&gt;
Same rules as the fofo portal (dao r37764): reason, remark and approval mail required; mohit.gulati&lt;br /&gt;
removed from extend billing.&lt;/div&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoRetailerController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37766&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37766&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 17:22:06 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37765 – feat(store-closure): closure popup with reason, remark and approval mail upload ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(store-closure): closure popup with reason, remark and approval mail upload&lt;br /&gt;
&lt;br /&gt;
- Close Store (inactive stores page and deactivate flow) opens one shared popup; /closeStore&lt;br /&gt;
  delegates to StoreClosureService (dao r37764)&lt;br /&gt;
- store status access checks read StoreAccess lists; mohit.gulati removed from extend billing&lt;br /&gt;
- jsVersion 435&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/RetailerController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/retailer.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/inactive-stores.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37765&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37765&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 17:21:58 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37764 – feat(store-closure): require reason, remark and approval mail to close a ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(store-closure): require reason, remark and approval mail to close a store; mail closure report&lt;br /&gt;
&lt;br /&gt;
- fofo.store_closure audit table (reason, remark, approval document, closed_by); migration applied on hadb1&lt;br /&gt;
- StoreClosureService: validates and closes, queues closure report with approval attached to the&lt;br /&gt;
  partner&apos;s Sales L2, top 3 Sales levels, top Accounts level and the closer&lt;br /&gt;
- StoreAccess: single home for store close/deactivate/activate/extend-billing access lists;&lt;br /&gt;
  neeraj.gupta can close, mohit.gulati removed from extend billing&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/StoreClosure.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/fofo/StoreClosureReason.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/StoreClosureRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/StoreClosureRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/user/StoreAccess.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/user/StoreClosureService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/migration_store_closure.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37764&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37764&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 15:06:01 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37763 – aging po approval process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;aging po approval process&lt;/div&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/warehouse-po-stock-approval-detail.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37763&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37763&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 13:17:11 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37762 – aging po approval process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;aging po approval process&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PoStockApprovalServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37762&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37762&amp;peg=37793</guid></item>
<item><pubDate>Thu, 24 Sep 2026 12:59:33 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37761 – aging po approval process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;aging po approval process&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/ItemAgingBreakdownModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PoStockApprovalServiceImpl.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=37761&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37761&amp;peg=37793</guid></item>
<item><pubDate>Wed, 23 Sep 2026 19:35:02 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37760 – Upload directory and Data correction for lead</title><description>&lt;div&gt;&lt;strong&gt;vikas – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Upload directory and Data correction for lead&lt;/div&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsDashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsLeadController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lms-dashboard-standalone.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37760&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37760&amp;peg=37793</guid></item>
<item><pubDate>Wed, 23 Sep 2026 19:32:08 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37759 – LMS Call for App</title><description>&lt;div&gt;&lt;strong&gt;vikas – 10 file(s) modified&lt;/strong&gt;&lt;br/&gt;LMS Call for App&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/lms&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/lms/LeadDispositionRequest.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/LmsCallService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/LmsDispositionService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/LmsOutcome.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/LmsDashboardService.java&lt;br /&gt;+ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/LmsAppCallController.java&lt;br /&gt;+ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/V2LmsAppCallController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37759&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37759&amp;peg=37793</guid></item>
<item><pubDate>Wed, 23 Sep 2026 19:27:50 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37758 – aging po approval process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;aging po approval process&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/ItemAgingBreakdownModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37758&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37758&amp;peg=37793</guid></item>
<item><pubDate>Wed, 23 Sep 2026 19:26:13 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37757 – aging po approval process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;aging po approval process&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/Item15DaysSoldModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37757&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37757&amp;peg=37793</guid></item>
<item><pubDate>Wed, 23 Sep 2026 19:24:55 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37756 – aging po approval process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;aging po approval process&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PoStockApprovalServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37756&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37756&amp;peg=37793</guid></item>
<item><pubDate>Wed, 23 Sep 2026 19:23:32 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37755 – aging po approval process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;aging po approval process&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PoStockApprovalService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37755&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37755&amp;peg=37793</guid></item>
<item><pubDate>Wed, 23 Sep 2026 19:22:33 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37754 – aging po approval process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;aging po approval process&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/warehouse/WarehousePoStockApproval.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37754&amp;peg=37793</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F&amp;isdir=1&amp;rev=37754&amp;peg=37793</guid></item>
</channel></rss>