<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SmartDukaan &#x2013; /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/</title><description>WebSVN RSS feed &#x2013; SmartDukaan</description><lastBuildDate>Thu, 08 Oct 2026 04:34:01 +0530</lastBuildDate><generator>WebSVN 2.8.6-DEV</generator><language>en</language><link>https://svn.smartdukaan.com/log.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;max=40&amp;</link><atom:link href="https://svn.smartdukaan.com/rss.php?path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;repname=SmartDukaan" rel="self" type="application/rss+xml" />
<item><pubDate>Mon, 05 Oct 2026 16:12:55 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37842 – Fixed mail sender everywhere</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fixed mail sender everywhere&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProAuthService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37842</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37842</guid></item>
<item><pubDate>Mon, 05 Oct 2026 16:03:40 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37841 – Fixed mail sender everywhere</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fixed mail sender everywhere&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProAuthService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37841</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37841</guid></item>
<item><pubDate>Wed, 30 Sep 2026 16:02:53 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37816 – fix(einvoice): save the e-way bill whenever NIC returns EwbNo, not ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(einvoice): save the e-way bill whenever NIC returns EwbNo, not only with the EWBPPD note&lt;br /&gt;
&lt;br /&gt;
GstProService saved EWB details only when InfoDtls held EWBPPD. NIC sends that&lt;br /&gt;
note (its pin-to-pin distance) only when we pass Distance=0, and the DUPIRN&lt;br /&gt;
get-by-IRN response carries no InfoDtls at all. So every partner with a&lt;br /&gt;
warehouse_partner_distance_mapping row, and every IRN recovered after a&lt;br /&gt;
timeout, lost its EWB although NIC had filed it (13 + 2 invoices in 30 days,&lt;br /&gt;
backfilled 2026-09-30), and a false &quot;EWB Not Generated&quot; mail was sent.&lt;br /&gt;
&lt;br /&gt;
- Key on EwbNo; distance from EWBPPD, else the distance we sent, else none.&lt;br /&gt;
- Invoice PDF prints the &quot;[distance]&quot; suffix only when a distance is known&lt;br /&gt;
  (was &quot;[null]&quot;).&lt;/div&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/invoicing/InvoiceService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37816</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37816</guid></item>
<item><pubDate>Tue, 29 Sep 2026 15:20:16 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37809 – fix(einvoice): keep waiting for a fresh NIC auth token instead ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(einvoice): keep waiting for a fresh NIC auth token instead of giving up after one wait&lt;br /&gt;
&lt;br /&gt;
getUsableAuthToken waited out an expiring token once and failed if NIC still&lt;br /&gt;
handed back one with under 60s of life. NSNOI14473 (2026-09-10) waited out a&lt;br /&gt;
token expiring 17:12:53, got one expiring 17:13:00 (6s left) and was parked at&lt;br /&gt;
irn_generated=0; the next invoice 5s later filed fine. Now waits up to 3 times,&lt;br /&gt;
each bounded by the remaining life of the token in hand.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProAuthService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37809</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37809</guid></item>
<item><pubDate>Mon, 28 Sep 2026 20:06:30 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37801 – Disable Pine Labs offer discovery behind a config switch (default ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Disable Pine Labs offer discovery behind a config switch (default off)&lt;br /&gt;
&lt;br /&gt;
Turns off the live Pine Labs per-item offer discovery on the user&apos;s&lt;br /&gt;
instruction. New pinelabs.offer.discovery.enabled, default FALSE, so the&lt;br /&gt;
integration is off in every environment unless a properties file opts in.&lt;br /&gt;
&lt;br /&gt;
Gated at the single point all discovery funnels through&lt;br /&gt;
(PinelabsAffordabilityServiceImpl.discoverOffers), so one switch stops the&lt;br /&gt;
nightly cache loop, a single-item refresh and the /pinelabs/offers endpoint&lt;br /&gt;
without editing the six call sites. discoverOffersRawJson gated too.&lt;br /&gt;
cacheAllItemOffers returns before its listing query, since the loop costs&lt;br /&gt;
4,507 items and ~12 minutes of a cron thread even when every call is a no-op.&lt;br /&gt;
&lt;br /&gt;
Degrades gracefully rather than breaking the product surface: an empty&lt;br /&gt;
OfferDiscoveryResponse is exactly what the existing catch block returns, and&lt;br /&gt;
getGroupedCachedOffersForItems already drops an entry with an empty issuer&lt;br /&gt;
map. The Redis cache is a 24h TTL, so live badges drain within a day rather&lt;br /&gt;
than vanishing mid-request.&lt;br /&gt;
&lt;br /&gt;
The @Value carries a default deliberately — pinelabs.api.base.url and the&lt;br /&gt;
credentials carry none, so a missing key stops the whole context (the r37495&lt;br /&gt;
class of outage). A kill switch must never be able to do that.&lt;br /&gt;
&lt;br /&gt;
SCOPE: offer discovery ONLY. Payment-gateway traffic (orders, refunds,&lt;br /&gt;
callbacks, webhooks) and offer create/validate/downpayment are untouched,&lt;br /&gt;
so no live money path changes behaviour.&lt;br /&gt;
&lt;br /&gt;
@Scheduled on ScheduledSkeleton.fetchOffersByItem is intentionally left in&lt;br /&gt;
place — with the flag off it is one log line, and re-enabling stays a config&lt;br /&gt;
change rather than a code change.&lt;br /&gt;
&lt;br /&gt;
Build: dao + web + cron + fofo compile, BUILD SUCCESSFUL.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/pinelabs/PinelabsAffordabilityServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/pinelabs/PinelabsApiConfig.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/pinelabs/PinelabsOfferCacheService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37801</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37801</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=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37790</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37790</guid></item>
<item><pubDate>Wed, 23 Sep 2026 18:00:08 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37749 – Upload directory and Data correction for lead</title><description>&lt;div&gt;&lt;strong&gt;vikas – 14 file(s) modified&lt;/strong&gt;&lt;br/&gt;Upload directory and Data correction for lead&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/integrations/kommuno/RecordingService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/vbc/VbcDialerProvider.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/vbc/VbcTelephonyService.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/LeadGeoLocationController.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/java/com/spice/profitmandi/web/controller/LmsDialerController.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/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/resources/META-INF/staging.properties&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=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37749</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37749</guid></item>
<item><pubDate>Mon, 21 Sep 2026 13:36:23 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37739 – GstProService: drop imports only the removed Perfios block used  ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;GstProService: drop imports only the removed Perfios block used&lt;br /&gt;
&lt;br /&gt;
HttpHostConnectException and JSONObject had no other use after r37736.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37739</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37739</guid></item>
<item><pubDate>Mon, 21 Sep 2026 12:44:53 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37736 – Remove dead Perfios GST-return OTP block from GstProService  Commented-out ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Remove dead Perfios GST-return OTP block from GstProService&lt;br /&gt;
&lt;br /&gt;
Commented-out since it was added; the Perfios UAT URL and auth key were the&lt;br /&gt;
only trace of that integration. Part of the dead-integrations cleanup&lt;br /&gt;
(r37730-37735).&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37736</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37736</guid></item>
<item><pubDate>Mon, 21 Sep 2026 12:33:07 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37731 – Remove dead third-party integrations: dao  Nothing removed here had ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 39 file(s) modified&lt;/strong&gt;&lt;br/&gt;Remove dead third-party integrations: dao&lt;br /&gt;
&lt;br /&gt;
Nothing removed here had a live caller. No tables are touched.&lt;br /&gt;
&lt;br /&gt;
- Toffee Insurance client + models, and the tofee.* keys in shared-*.properties&lt;br /&gt;
- Bharti Assist (BAG) service and its certificate/brand models. BagPlanModel&lt;br /&gt;
  and PlanVariant stay in bharti/model: OneAssist and ICICI Lombard use them.&lt;br /&gt;
- Private, uncalled Toffee/BAG request builders in InsuranceServiceImpl&lt;br /&gt;
- Wiseapp insurance client and ZestResponseModel&lt;br /&gt;
- SmartPing client. CallDetailModel and PushCallLogModel move to&lt;br /&gt;
  kommuno/model because the Knowlarity webhooks still parse them.&lt;br /&gt;
- SpiceMoney SSO (2-partner pilot), Thriwe stub + DTOs, DTDC/Shipsy (demo&lt;br /&gt;
  URLs only), Blue Dart SOAP stubs, legacy Pine Labs v1 client&lt;br /&gt;
- FundFina pre-approval entity/repository, HyperTrack key entity/repository,&lt;br /&gt;
  affiliate Click entity/repository&lt;br /&gt;
- Speqtra SMS constant; aramex.tracking.url keys&lt;br /&gt;
- PAYU PAY entry in payment-options.json&lt;br /&gt;
&lt;br /&gt;
Gateway.MANDII and Gateway.FUNDFINA stay: historical fofo.payment rows.&lt;/div&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/dtr/Click.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/dtr/FundFinaPreApproval.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/dtr/HypertrackKey.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/dtr/HyperTrackKeyModel.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/thriwe&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/CsServiceImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/ClickRepository.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/ClickRepositoryImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/FundFinaPreApprovalRepository.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/FundFinaPreApprovalRepositoryImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/HypertrackKeyRepository.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/HypertrackKeyRepositoryImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/dtdc&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/OtpProcessor.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/thriwe&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bharti/BAGService.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bharti/model/BAGInsuranceModel.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bharti/model/BrandModel.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bharti/model/CreateCertificateRequestModel.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bharti/model/CreateCertificateResponseModel.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bharti/model/Sample.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bluedart&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/kommuno/model&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/kommuno/model/CallDetailModel.java &lt;i&gt;(copied from /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/smartping/model/CallDetailModel.java@37730)&lt;/i&gt;&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/kommuno/model/PushCallLogModel.java &lt;i&gt;(copied from /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/smartping/model/PushCallLogModel.java@37730)&lt;/i&gt;&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/kommuno/RecordingService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/pinelabs/PinelabsOrderService.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/PineLabsPaymentService.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/smartping&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/spicemoney&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/toffee&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/zest/InsuranceServiceImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/zest/WiseappInsuranceServiceImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/zest/WiseappWebService.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/zest/ZestResponseModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/META-INF/payment-options.json&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/shared-dev.properties&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;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37731</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37731</guid></item>
<item><pubDate>Wed, 16 Sep 2026 17:14:51 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37656 – Point dao at the relocated KYC and SD Credit types ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 6 file(s) modified&lt;/strong&gt;&lt;br/&gt;Point dao at the relocated KYC and SD Credit types (r37655)&lt;br /&gt;
&lt;br /&gt;
Imports follow services.mandii -&gt; services.kyc / services.sdcredit, and&lt;br /&gt;
RecordingService takes RawHttpResponse in place of MandiiResponse.&lt;br /&gt;
&lt;br /&gt;
Gateway.MANDII is kept, with a comment saying why: it is persisted as a&lt;br /&gt;
string on FofoPayment.gateway and CreditAccount.gateway, and 740 historical&lt;br /&gt;
fofo.payment rows still carry it - removing the constant would make&lt;br /&gt;
Hibernate throw when reading them.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/FofoKyc.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/warehouse/Supplier.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/fofo/Gateway.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/SDCreditResponseOut.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/kommuno/RecordingService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/SDCreditServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37656</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37656</guid></item>
<item><pubDate>Wed, 16 Sep 2026 15:13:38 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37651 – LMS click to call</title><description>&lt;div&gt;&lt;strong&gt;vikas – 63 file(s) modified&lt;/strong&gt;&lt;br/&gt;LMS click to call&lt;/div&gt;~ /trunk/profitmandi-dao/build.gradle&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/config/AsyncConfig.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/auth/VonageAgent.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/LeadActivity.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/LeadCall.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/LeadDnd.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/LeadRecordingAccess.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/MetaLead.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/MetaLeadImport.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/dtr/LeadCallProvider.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/dtr/LeadCallStatus.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/dtr/MetaLeadDistribution.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/dtr/MetaLeadOutcome.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/auth/VonageAgentRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/auth/VonageAgentRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadCallRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadCallRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadDndRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadDndRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRecordingAccessRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRecordingAccessRepositoryImpl.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/dao/repository/dtr/MetaLeadRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/MetaLeadRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/vbc&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/vbc/VbcDialerProvider.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/vbc/VbcTelephonyService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/vbc/VbcTokenService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/VonageDialerProvider.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/VonageJwtService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/VonageVoiceService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/LmsDialerProvider.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/meta&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/meta/MetaLeadFileParser.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/meta/MetaLeadImportService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/meta/MetaLeadRow.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/RecordingAccessService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/RecordingArchiveService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/RecordingArchiveWorker.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/LmsDashboardService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/storage&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/storage/ObjectStoreService.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-fofo/src/main/java/com/spice/profitmandi/web/config/WebConfig.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/java/com/spice/profitmandi/web/controller/LmsDialerController.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/java/com/spice/profitmandi/web/controller/LmsRecordingController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/MetaLeadImportController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/service/RecordingArchiveScheduler.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/util/CatalogMonitorTypeCsvValidator.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/resources/META-INF/env.property&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/lead.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/edit-lead.vm&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lead-record.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lms-dashboard-standalone.vm&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/meta-lead-import.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/test/java/com/spice/profitmandi/web/util/CatalogMonitorTypeCsvValidatorTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37651</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37651</guid></item>
<item><pubDate>Tue, 15 Sep 2026 21:38:25 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37647 – Invoice/DN return: file credit note at NIC only when the ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Invoice/DN return: file credit note at NIC only when the invoice IRN was filed&lt;br /&gt;
&lt;br /&gt;
- GstProService.hasFiledIrn: invoice has a real IRN with ack date (DCs excluded)&lt;br /&gt;
- applyInvoiceReturnViaCreditNote: filed IRN -&gt; CN + NIC CRN as before;&lt;br /&gt;
  not filed + INTERNAL buyer -&gt; CN issued locally, NIC skipped;&lt;br /&gt;
  not filed + other buyer -&gt; refund without CN, CN sequence untouched&lt;br /&gt;
- DN refund path: not filed + INTERNAL buyer -&gt; local CN, NIC skipped&lt;br /&gt;
Fixes approval failing with &apos;Recipient GSTIN state code does not match&apos; on&lt;br /&gt;
internal invoices whose IRN was never generated (NSPRJ41943, NSPRJ41950).&lt;/div&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/PurchaseReturnServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37647</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37647</guid></item>
<item><pubDate>Wed, 09 Sep 2026 12:43:18 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37552 – lead/knowlarity: stop a null lookup key from matching every row ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;lead/knowlarity: stop a null lookup key from matching every row&lt;br /&gt;
&lt;br /&gt;
selectByEquals maps a null VALUE to NO PREDICATE AT ALL rather than to &quot;= null&quot;,&lt;br /&gt;
because GenericRepositoryImpl.prepareEqualPredicate skips null entries. So a null&lt;br /&gt;
lookup key does not miss -- it selects the whole table and dies on&lt;br /&gt;
NonUniqueResultException. Two live call paths were doing exactly that.&lt;br /&gt;
&lt;br /&gt;
RecordingService.updateAgentCallLog read caller_id, which knowlarity has never sent&lt;br /&gt;
on push-call-log: a sample of 50 live webhooks contained it zero times. Every call&lt;br /&gt;
therefore ran selectByCallerId(null) -&gt; &quot;select every sip_master row&quot; -&gt; throw, and&lt;br /&gt;
the whole feed was discarded. 17 of those 50 were Connected calls with a real agent.&lt;br /&gt;
Resolve the agent from agent_number instead, which is the field that actually&lt;br /&gt;
identifies them and holds the sip_url; it arrives bare, sip:-prefixed, or as the&lt;br /&gt;
literals &quot;False&quot;/&quot;None&quot; when nobody picked up. caller_id is still honoured first in&lt;br /&gt;
case they ever start sending it. A payload naming no agent is INFO, and an agent&lt;br /&gt;
missing from sip_master is WARN (an ops fix, and per-agent, so an ERROR would&lt;br /&gt;
fingerprint into one GlitchTip issue per agent).&lt;br /&gt;
&lt;br /&gt;
AuthRepositoryImpl.putEmailOrMobile had the same hole via Long.parseLong(null)&lt;br /&gt;
falling into the catch and putting a null email. selectByEmailOrMobile(null)&lt;br /&gt;
degenerated to &quot;select all 405 users&quot;, and authenticate(null, hash) degenerated to&lt;br /&gt;
&quot;does ANY user have this password hash&quot;, which would answer true. Both fail closed&lt;br /&gt;
today only as an accident of how many rows the table holds, so the guard goes on the&lt;br /&gt;
one path they share.&lt;br /&gt;
&lt;br /&gt;
Fixes GlitchTip #58/#1324/#1335 (fofo, 281 events) and #10 (web).&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/auth/AuthRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/auth/SipRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/auth/SipRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/kommuno/RecordingService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37552</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37552</guid></item>
<item><pubDate>Sat, 05 Sep 2026 05:56:43 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37538 – gstpro: a shipped delivery challan is a return, not a ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;gstpro: a shipped delivery challan is a return, not a cancellation&lt;br /&gt;
&lt;br /&gt;
Movement becomes the single discriminator for both document types. Nothing has&lt;br /&gt;
left the warehouse, so nothing happened and the document can be withdrawn; once&lt;br /&gt;
the goods have shipped the document records a movement that really occurred, and&lt;br /&gt;
the only honest reversal is an opposing document - a credit note through finance.&lt;br /&gt;
&lt;br /&gt;
The clock is the only thing that differs. A tax invoice must also be inside its&lt;br /&gt;
24h IRN window, because past that NIC will not cancel the IRN. A delivery challan&lt;br /&gt;
has no IRN and no acknowledgement - every DC row carries a placeholder irn and a&lt;br /&gt;
null ack_date - so no clock applies to it: an unshipped challan stays withdrawable&lt;br /&gt;
whatever its age, and its e-way bill is cancelled on that path since nothing moved&lt;br /&gt;
under it.&lt;br /&gt;
&lt;br /&gt;
Previously a DC short-circuited to cancellable regardless of shipping, which would&lt;br /&gt;
have voided challans whose goods were already in transit.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37538</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37538</guid></item>
<item><pubDate>Thu, 03 Sep 2026 18:23:08 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37532 – gstpro: do not cancel a DC e-way bill once the ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;gstpro: do not cancel a DC e-way bill once the consignment has shipped&lt;br /&gt;
&lt;br /&gt;
Three cases on cancelling a delivery-challan invoice:&lt;br /&gt;
- no EWB recorded: nothing to cancel at NIC&lt;br /&gt;
- already shipped: leave the EWB intact and void the challan locally. The goods&lt;br /&gt;
  moved under that bill, so it is the record of a journey that happened; cancelling&lt;br /&gt;
  would strip cover from it, and NIC refuses the cancel anyway once a bill has been&lt;br /&gt;
  verified in transit. The return leg is a fresh movement needing its own EWB.&lt;br /&gt;
- never dispatched: cancel the EWB, since nothing moved under it.&lt;br /&gt;
&lt;br /&gt;
Also reuses the orders already fetched for the shipped check rather than selecting&lt;br /&gt;
by invoice number twice.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37532</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37532</guid></item>
<item><pubDate>Thu, 03 Sep 2026 18:21:48 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37529 – purchase return: auto-approve invoice cancellation where it is safe  ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;purchase return: auto-approve invoice cancellation where it is safe&lt;br /&gt;
&lt;br /&gt;
GstProService.isCancellableWithoutApproval: a DC invoice cancels without approval;&lt;br /&gt;
anything else needs the order to be unshipped AND the IRN to still be cancellable.&lt;br /&gt;
&lt;br /&gt;
PurchaseReturnServiceImpl marks the order INVOICE_CANCELLED with the refund actor,&lt;br /&gt;
timestamp and reason recorded, and sets each line item&apos;s returnQty to its full&lt;br /&gt;
quantity - a cancelled invoice returns everything on it.&lt;br /&gt;
&lt;br /&gt;
Committed on behalf of the working copy; dao goes first so the method exists before&lt;br /&gt;
the fofo controller that calls it.&lt;/div&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/PurchaseReturnServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37529</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37529</guid></item>
<item><pubDate>Tue, 01 Sep 2026 16:32:50 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37502 – sales target and achievement added cron and flags</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;sales target and achievement added cron and flags&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/model/LastTransactionsResponseModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37502</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37502</guid></item>
<item><pubDate>Tue, 01 Sep 2026 16:26:05 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37501 – sales target and achievement added cron and flags</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;sales target and achievement added cron and flags&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/model/LastTransactionsRequestModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37501</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37501</guid></item>
<item><pubDate>Tue, 01 Sep 2026 16:09:28 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37499 – sales target and achievement added cron and flags</title><description>&lt;div&gt;&lt;strong&gt;ranu – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;sales target and achievement added cron and flags&lt;/div&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/Application.java&lt;br /&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/scheduled/ScheduledSkeleton.java&lt;br /&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/scheduled/ScheduledTasks.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/inventory/SalesTargets.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/SalesTargetsRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/SalesTargetsRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/IciciLombardService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37499</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37499</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-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37456</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37456</guid></item>
<item><pubDate>Sat, 29 Aug 2026 07:24:31 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37452 – Fix e-invoice IRN failure when the NIC auth token is ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix e-invoice IRN failure when the NIC auth token is about to expire&lt;br /&gt;
&lt;br /&gt;
NIC reissues the same auth token until it genuinely expires, so evicting the cache&lt;br /&gt;
inside the 5 minute leeway hands back the identical near-dead token. getAuthenticatedHeaders&lt;br /&gt;
checked the leeway once, before that re-fetch, and never inspected what came back.&lt;br /&gt;
NSUPHR1770 filed with a token that had 12 seconds of life left and the gateway answered&lt;br /&gt;
412/GSP752 &apos;eInvoice AuthToken not found or expired&apos;; the invoice filed a minute later,&lt;br /&gt;
past the expiry and so on a genuinely new token, succeeded.&lt;br /&gt;
&lt;br /&gt;
getUsableAuthToken re-checks the refetched token and, when it is still inside a 60s&lt;br /&gt;
floor, waits out the remainder before minting again. The wait is bounded by that floor&lt;br /&gt;
and every caller on this path is a cron/async thread already running against a 60s NIC&lt;br /&gt;
timeout with no transaction held open.&lt;br /&gt;
&lt;br /&gt;
Also make the gateway&apos;s own failures legible. NIC rejections arrive as&lt;br /&gt;
{Status, ErrorDetails}, but failures the ASP raises in front of NIC use&lt;br /&gt;
{status_cd, error{error_cd, message}}, which shares no field name with RespPl: Gson&lt;br /&gt;
produced an all-null object and the stored reason degraded to the literal&lt;br /&gt;
&apos;RespPl{Status=0, Data=null, ErrorDetails=null, InfoDtls=null}&apos;, indistinguishable from&lt;br /&gt;
NIC rejecting the document. RespGSPErr already modelled that envelope but was a&lt;br /&gt;
non-static inner class and so could not be instantiated by Gson; made it static and&lt;br /&gt;
copy the code and message into ErrorDetails, which every caller already reads.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/api/model/E_InvoiceCommon.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProAuthService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37452</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37452</guid></item>
<item><pubDate>Wed, 26 Aug 2026 16:47:32 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37421 – EWB: recover existing e-way bill on NIC 604 instead of ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;EWB: recover existing e-way bill on NIC 604 instead of storing a placeholder&lt;br /&gt;
&lt;br /&gt;
DCNSUPDL948 generated EWB 451765074092 at NIC, then the transaction rolled back and&lt;br /&gt;
the number was lost. Every retry hit 604 and stored the literal EXISTING-LOOKUP-NEEDED&lt;br /&gt;
with no validity date, which routed the PDF down the transporter branch and NPE&apos;d on a&lt;br /&gt;
self-pickup dispatch with no warehouse_provider row. ~640 retries in 55 minutes, and&lt;br /&gt;
because the failure surfaced as an Error it escaped catch(Exception) and blocked six&lt;br /&gt;
other documents behind it.&lt;br /&gt;
&lt;br /&gt;
- GstProService: on 604, look the bill up via GetEwayBillsByDate + docNo match and&lt;br /&gt;
  return it in GENEWAYBILL shape; stamp NIC&apos;s generation time instead of now().&lt;br /&gt;
  Throw when it cannot be recovered rather than persist a placeholder.&lt;br /&gt;
- InvoiceService: saveInvoiceInNewTransaction no longer propagates. It commits&lt;br /&gt;
  irn_generated=0 with the reason so a failed document stops churning; already-filed&lt;br /&gt;
  invoices being re-rendered are left untouched.&lt;br /&gt;
- InvoiceService: cron loop catches Throwable so one bad document cannot skip the batch.&lt;br /&gt;
- InvoiceService: null-guard warehouse_provider; omit the transporter line instead of&lt;br /&gt;
  failing the PDF.&lt;br /&gt;
- recordIrnFailure: transport failures now park at 0 for escalation rather than&lt;br /&gt;
  requeueing for unbounded retry.&lt;/div&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/invoicing/InvoiceService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37421</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37421</guid></item>
<item><pubDate>Tue, 25 Aug 2026 20:30:07 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37398 – Share one insurance invoice line builder across partner and standalone ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;Share one insurance invoice line builder across partner and standalone invoices&lt;br /&gt;
&lt;br /&gt;
Extract InsuranceInvoiceLine next to the partner invoice builder so both callers&lt;br /&gt;
- OrderServiceImpl.getInvoicePdfModel(FofoOrder) and the standalone policy&lt;br /&gt;
invoice in InsuranceController - produce the SAC, tax split and description from&lt;br /&gt;
one place. Arithmetic is unchanged (verified bit-identical); policyPlan is null&lt;br /&gt;
for policies sold outside a device sale, so it falls back to a generic plan name&lt;br /&gt;
instead of printing null.&lt;br /&gt;
&lt;br /&gt;
Add IciciLombardService.policyCertificatePath so the service that writes the&lt;br /&gt;
certificate owns the path; callers were rebuilding it and hardcoding the prod&lt;br /&gt;
directory, so lookups silently missed off prod.&lt;br /&gt;
&lt;br /&gt;
Add selectByInvoiceNumbersAndProviderId so bulk invoice downloads fetch policies&lt;br /&gt;
in one query instead of one per invoice.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/InsurancePolicyRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/InsurancePolicyRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/IciciLombardService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/order/InsuranceInvoiceLine.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/order/OrderServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37398</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37398</guid></item>
<item><pubDate>Thu, 20 Aug 2026 13:00:10 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37371 – Fixed mail sender everywhere</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fixed mail sender everywhere&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProAuthService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37371</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37371</guid></item>
<item><pubDate>Thu, 20 Aug 2026 12:32:51 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37370 – Fixed mail sender everywhere</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fixed mail sender everywhere&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProAuthService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37370</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37370</guid></item>
<item><pubDate>Wed, 19 Aug 2026 20:30:29 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37360 – ICICI policy issuance: stop losing policies to a proposal read ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;ICICI policy issuance: stop losing policies to a proposal read timeout&lt;br /&gt;
&lt;br /&gt;
hitAfinityProposal called ICICI&apos;s gadget proposal endpoint on the default 10s socket&lt;br /&gt;
timeout. That POST issues the policy, so a read timeout abandons a request ICICI is&lt;br /&gt;
still completing. The exception then unwound through generateIciciLombardPolicy into&lt;br /&gt;
the controller&apos;s @Transactional(rollbackFor = Throwable.class), rolling back the whole&lt;br /&gt;
request - including the wallet debit - before the tracker row was ever touched. Result:&lt;br /&gt;
policy possibly live at ICICI, no trace on our side, and the &apos;policy already exists&apos;&lt;br /&gt;
retry path dead-ends because its Redis cache is only written on a parsed success.&lt;br /&gt;
&lt;br /&gt;
- Proposal and policy-certificate calls move to a dedicated RestClient built on&lt;br /&gt;
  HttpClientFactory.insuranceIssuanceRequestConfig() (socket 45s). JWT and quote stay&lt;br /&gt;
  on the default client - fast, and no remote write.&lt;br /&gt;
- Transport failures are classified via HttpTransportFailures and reported as &apos;outcome&lt;br /&gt;
  unknown&apos;, not as an ICICI rejection.&lt;br /&gt;
- IciciPolicyTrackerBookkeeping writes the tracker in REQUIRES_NEW, so both the UNKNOWN&lt;br /&gt;
  outcome and the issued policy number survive the request rollback. Recovery from an&lt;br /&gt;
  UNKNOWN row is the existing recoverPolicyNumberByProposalNumber path.&lt;br /&gt;
&lt;br /&gt;
Code only, no DDL: status is varchar(20) and remarks is text on prod already.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/IciciLombardService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/IciciPolicyTrackerBookkeeping.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37360</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37360</guid></item>
<item><pubDate>Mon, 17 Aug 2026 19:25:56 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37328 – Fetch a fresh EWB auth token when the cached one ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fetch a fresh EWB auth token when the cached one is stale&lt;br /&gt;
&lt;br /&gt;
Two defects made an expired EWB token unrecoverable, surfacing as GSP102&lt;br /&gt;
&quot;eInvoice AuthToken not found or expired&quot; on every GET.&lt;br /&gt;
&lt;br /&gt;
1. ewbApiGet&apos;s retry was unreachable. NIC returns GSP102 with HTTP 400, and&lt;br /&gt;
   RestClient.execute throws GE_1005 on any non-2xx before returning the body, so the&lt;br /&gt;
   &apos;if (response.contains(&quot;GSP102&quot;))&apos; branch could never run. A failed first attempt is&lt;br /&gt;
   now treated as a possibly-stale token and retried once with a freshly minted one; a&lt;br /&gt;
   second failure propagates. The POST path was unaffected — executeJson does not check&lt;br /&gt;
   status, so its retry already worked.&lt;br /&gt;
&lt;br /&gt;
2. Eviction targeted the wrong cache. The token is cached in redisCacheManager but all&lt;br /&gt;
   three sites evicted through redisFortnightlyCacheManage, a different cache, so the&lt;br /&gt;
   eviction was a silent no-op and the stale token survived. Eviction now goes through&lt;br /&gt;
   GstProAuthService.evictEwbAuthToken, declared beside the @Cacheable and pinned to the&lt;br /&gt;
   same cacheManager so the two cannot drift apart again.&lt;br /&gt;
&lt;br /&gt;
Found while dry-running the EWB backfill, which failed on the first invoice.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProAuthService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37328</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37328</guid></item>
<item><pubDate>Mon, 17 Aug 2026 16:28:39 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37323 – Drop irn_attempt_count; IRN transport retry is unbounded  Removes the ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Drop irn_attempt_count; IRN transport retry is unbounded&lt;br /&gt;
&lt;br /&gt;
Removes the attempt counter added in r37322 along with its pending ALTER TABLE, so the&lt;br /&gt;
change no longer carries a schema dependency.&lt;br /&gt;
&lt;br /&gt;
NIC outages resolve within the day, and an invoice legally requires an IRN, so capping&lt;br /&gt;
the retry would not remove the obligation — it would only stop trying. Transport failures&lt;br /&gt;
now stay queued (irn_generated NULL) until the provider recovers; only a genuine rejection&lt;br /&gt;
from NIC is terminal. The failure reason is still recorded in irn_error_message, which&lt;br /&gt;
distinguishes a requeued transport failure from an invoice never yet attempted.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/transaction/EInvoiceDetails.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/invoicing/InvoiceService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37323</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37323</guid></item>
<item><pubDate>Mon, 17 Aug 2026 15:45:41 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37322 – Stop treating IRN transport timeouts as terminal; isolate NIC calls ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;Stop treating IRN transport timeouts as terminal; isolate NIC calls from batch transaction&lt;br /&gt;
&lt;br /&gt;
A read timeout to GSTPro/NIC was recorded as a final verdict (irn_generated=false),&lt;br /&gt;
so 79 invoices billed on 2026-08-17 were left permanently without an IRN even though&lt;br /&gt;
NIC may well have filed them. A timeout means the call never completed, not that the&lt;br /&gt;
document was rejected.&lt;br /&gt;
&lt;br /&gt;
- markEInvoiceFailed -&gt; recordIrnFailure(invoiceNumber, Throwable): transport failures&lt;br /&gt;
  leave irn_generated NULL so the cron retries (DUPIRN recovers anything NIC did file);&lt;br /&gt;
  only a genuine rejection is terminal. Alert email now fires only when terminal.&lt;br /&gt;
- New einvoice_details.irn_attempt_count bounds that retry at 10 attempts, reset on&lt;br /&gt;
  success, so a prolonged NIC outage still converges instead of looping forever.&lt;br /&gt;
  Requires the matching ALTER TABLE before deploy.&lt;br /&gt;
- New saveInvoiceInNewTransaction(invoiceNumber): REQUIRES_NEW per invoice, reloading&lt;br /&gt;
  orders inside it. RunOnceTasks has class-level @Transactional wrapping the whole&lt;br /&gt;
  batch loop, so every NIC call previously ran inside one transaction holding write&lt;br /&gt;
  locks on all orders in the batch; at 60s per call that window is unacceptable.&lt;br /&gt;
  updateIrnsToInvoices and regenerateBilledInvoices now carry only invoice numbers,&lt;br /&gt;
  keeping the batch transaction read-only.&lt;br /&gt;
- Route all NIC calls (IRN gen, auth, cancel, EWB) through the 60s regulator profile&lt;br /&gt;
  via GstProAuthService.nicRestClient(). getGstDetails stays on the 10s default since&lt;br /&gt;
  it runs on request threads.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/transaction/EInvoiceDetails.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProAuthService.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/invoicing/InvoiceService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37322</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37322</guid></item>
<item><pubDate>Wed, 12 Aug 2026 23:56:14 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37300 – one assist ew at 99 up to 20k</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 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/service/integrations/oneassist/OneAssistService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37300</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37300</guid></item>
<item><pubDate>Wed, 12 Aug 2026 15:32:19 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37297 – 13 to 16 ew at 99 rs u to 20k</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;13 to 16 ew at 99 rs u to 20k&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/oneassist/OneAssistService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37297</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37297</guid></item>
<item><pubDate>Tue, 11 Aug 2026 02:29:47 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37290 – Credit Note IRN: credit only the returned units, not the ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Credit Note IRN: credit only the returned units, not the whole invoice&lt;br /&gt;
&lt;br /&gt;
refundOrder persisted the CreditNote and its lines from the returned&lt;br /&gt;
inventory items, but then called generateCreditNoteIrn(invoiceNumber, ...),&lt;br /&gt;
which rebuilt the NIC payload by re-reading the original invoice - every&lt;br /&gt;
line at billed quantity. A 1-pc DOA return against NSDL37092 therefore&lt;br /&gt;
tried to register a CN covering the full invoice (2 phones + 27 carry&lt;br /&gt;
bags, Rs 26,664.27) against a Rs 13,332 wallet refund, and the legacy&lt;br /&gt;
4-digit HSN on the carry-bag line failed NIC validation with error 2311.&lt;br /&gt;
&lt;br /&gt;
The wallet credit, the CreditNote row and its lines were always correct;&lt;br /&gt;
only the e-invoice payload was wrong.&lt;br /&gt;
&lt;br /&gt;
- InvoiceService.getInvoicePdfModelForIrn: optional returnedQtyByOrderId&lt;br /&gt;
  restricts the item list to the returned orders and prices each line at&lt;br /&gt;
  the returned quantity. The existing single-arg method delegates with&lt;br /&gt;
  null, so invoice PDF generation is unchanged. Margin-scheme, delivery&lt;br /&gt;
  challan, IMEI-suffix and HSN handling apply to the reduced line as-is.&lt;br /&gt;
- GstProService.generateCreditNoteIrn: 4-arg overload taking the map; the&lt;br /&gt;
  3-arg version delegates with null for whole-invoice returns.&lt;br /&gt;
- PurchaseReturnServiceImpl.refundOrder: passes orderReturnQtyMap, which&lt;br /&gt;
  was already built for the ReturnOrderInfo rows.&lt;br /&gt;
&lt;br /&gt;
Verified against the NIC sandbox using the real NSDL37092 rows: the old&lt;br /&gt;
payload is rejected with error 2311, the new payload is accepted&lt;br /&gt;
(DocTyp CRN, ItemCnt 1, MainHsnCode 85171300, TotInvVal 13331.99).&lt;br /&gt;
&lt;br /&gt;
Not covered here: applyInvoiceReturnViaCreditNote still sends the whole&lt;br /&gt;
invoice, so an invoice partially returned earlier re-credits those units.&lt;/div&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/PurchaseReturnServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/invoicing/InvoiceService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37290</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37290</guid></item>
<item><pubDate>Wed, 05 Aug 2026 12:22:56 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37237 – Net IRN payload items per GST-rate group for CN/DN docs ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Net IRN payload items per GST-rate group for CN/DN docs (NIC rejects negative AssAmt; mixed-sign docs failed CRN IRN with regex error - all 105 July mixed CNs); add regenerateMarginIrns one-time method to generate missing IRNs for issued margin docs, regenerate PDFs with IRN/QR and re-mail partners&lt;/div&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/CreditNoteService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/CreditNoteServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37237</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37237</guid></item>
<item><pubDate>Wed, 05 Aug 2026 12:06:05 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37235 – Add cancelMarginDnIrns one-time remediation: cancel NIC IRNs (24h window) of ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add cancelMarginDnIrns one-time remediation: cancel NIC IRNs (24h window) of margin DNs inflated by the abs bug and mark rows cancelled so a sendCreditNote rerun reissues corrected DNs; add cancelIrn overload taking seller GSTIN (CN/DN docs have no order rows); mail partner on monthly run only when a document was generated (rerun guard)&lt;/div&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/CreditNoteService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/CreditNoteServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37235</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37235</guid></item>
<item><pubDate>Fri, 24 Jul 2026 16:12:53 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37140 – Fix NIC IRN date fields on note paths: format note ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix NIC IRN date fields on note paths: format note DocDt + preceding-invoice InvDt as dd/MM/yyyy via FormattingUtils.formatNicDate instead of StringUtils.toString (Jackson serialized LocalDate to a JSON blob in the cron classpath, breaking cancelled-CN DBN IRN with &apos;Date of preceding invoice must be 10 chars&apos;). Invoice DocDt path unchanged.&lt;/div&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/CreditNoteServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37140</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37140</guid></item>
<item><pubDate>Thu, 09 Jul 2026 13:16:40 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37041 – changeList</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;changeList&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/IciciLombardService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37041</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=37041</guid></item>
<item><pubDate>Mon, 29 Jun 2026 12:45:11 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36952 – caching fix fofo icici</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;caching fix fofo icici&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/IciciLombardService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=36952</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=36952</guid></item>
<item><pubDate>Sat, 27 Jun 2026 22:36:51 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36950 – caching fix fofo icici</title><description>&lt;div&gt;&lt;strong&gt;ranu – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;caching fix fofo icici&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/IciciLombardService.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-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=36950</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=36950</guid></item>
<item><pubDate>Fri, 26 Jun 2026 14:55:32 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36940 – caching fix fofo icici</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;caching fix fofo icici&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/icicilombard/IciciLombardService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=36940</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2F&amp;rev=36940</guid></item>
</channel></rss>