<?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/gstpro/</title><description>WebSVN RSS feed &#x2013; SmartDukaan</description><lastBuildDate>Wed, 07 Oct 2026 17:53:50 +0530</lastBuildDate><generator>WebSVN 2.8.6-DEV</generator><language>en</language><link>https://svn.smartdukaan.com/log.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;max=40&amp;</link><atom:link href="https://svn.smartdukaan.com/rss.php?isdir=1&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37842</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37841</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37816</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37809</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37809</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%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37790</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37790</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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37739</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37736</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37736</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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37647</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37647</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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37538</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37532</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37529</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37529</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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37456</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37452</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37421</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37421</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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37371</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37370</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37370</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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37328</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37323</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37322</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37322</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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37290</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37237</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37235</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37140</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=37140</guid></item>
<item><pubDate>Mon, 01 Jun 2026 16:01:04 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36750 – Keep e-invoice PrdDesc as IMEI count within NIC 300-char limit ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Keep e-invoice PrdDesc as IMEI count within NIC 300-char limit while invoice PDF lists full IMEIs (complements r36749 IMEI-listing restore)&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36750</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36750</guid></item>
<item><pubDate>Wed, 27 May 2026 19:02:45 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36715 – Fix Credit Note IRN PrdDesc exceeding 300 char NIC limit ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix Credit Note IRN PrdDesc exceeding 300 char NIC limit — show IMEI count instead of listing all serial numbers, add 300-char safety truncation&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36715</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36715</guid></item>
<item><pubDate>Wed, 27 May 2026 15:45:35 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36705 – Fix e-invoice Error 2235: recompute tax amounts from rounded AssAmt ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix e-invoice Error 2235: recompute tax amounts from rounded AssAmt to prevent IGST mismatch&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36705</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36705</guid></item>
<item><pubDate>Mon, 25 May 2026 18:48:53 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36672 – Wrap email sends in try-catch in IRN/EWB error paths to ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Wrap email sends in try-catch in IRN/EWB error paths to prevent mail AuthenticationFailedException from blocking PDF generation&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36672</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36672</guid></item>
<item><pubDate>Sat, 23 May 2026 16:25:26 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36653 – Enable e-invoice and EWB generation for DL (Delhi) GSTIN 07AACCN9802G1ZH ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Enable e-invoice and EWB generation for DL (Delhi) GSTIN 07AACCN9802G1ZH — was explicitly disabled, causing 166+ orders with no IRN&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36653</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36653</guid></item>
<item><pubDate>Sat, 09 May 2026 07:20:34 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36504 – DN generation: DUPIRN reconciliation flow + fix cnDate to use ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;DN generation: DUPIRN reconciliation flow + fix cnDate to use NIC acknowledge date + extract /A prefix handling&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36504</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36504</guid></item>
<item><pubDate>Fri, 08 May 2026 22:43:40 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36502 – DN generation for cancelled MARGINS CNs + fix /A CN ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;DN generation for cancelled MARGINS CNs + fix /A CN prefix extraction NPE&lt;br /&gt;
&lt;br /&gt;
- Add generateDebitNotesForCancelled(List&amp;lt;String&gt;) for explicit CN list&lt;br /&gt;
- Add selectByCreditNoteNumbers repository method&lt;br /&gt;
- Fix GstProService sandbox: use SANDBOX_GST_NUMBER before isGstEnabled check, sandbox buyer details&lt;br /&gt;
- Fix prefix extraction NPE for /A suffixed CN numbers (getCreditNotePdfModel, existingCNMap, extractPrefix)&lt;/div&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/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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36502</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36502</guid></item>
<item><pubDate>Fri, 08 May 2026 16:04:34 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36493 – Refactor CRN/DBN IRN generation: unify 4 methods into single generateNoteIrn ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Refactor CRN/DBN IRN generation: unify 4 methods into single generateNoteIrn with shared auth, DUPIRN, and persist helpers&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36493</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36493</guid></item>
<item><pubDate>Tue, 05 May 2026 20:05:29 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36477 – Invoice return: IRN/EWB cancellation on approve, Logistics L2+ permission, DL ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 6 file(s) modified&lt;/strong&gt;&lt;br/&gt;Invoice return: IRN/EWB cancellation on approve, Logistics L2+ permission, DL GST disabled&lt;br /&gt;
&lt;br /&gt;
- approveInvoiceReturn now cancels IRN+EWB when cancellable (path B) before falling back to Credit Note (path A)&lt;br /&gt;
- DC/challan EWB cancelled best-effort before Credit Note path&lt;br /&gt;
- Added enabled flag to GstEInvoiceUser; DL GSTIN disabled in E_INVOICE_USERS and EWB_USERS&lt;br /&gt;
- isGstEnabled guard added to all public GST API methods in GstProService&lt;br /&gt;
- Logistics L2+ can now approve/reject invoice returns (not just Finance)&lt;br /&gt;
- invoice-return.vm uses canApproveInvoiceReturn for INV-prefix button visibility&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/api/model/GstEInvoiceUser.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/inventory/PurchaseReturnServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/PurchaseReturnController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/invoice-return.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36477</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36477</guid></item>
<item><pubDate>Sat, 02 May 2026 18:49:12 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36453 – Fix NPE in credit note IRN: modularize InvoiceService.getInvoicePdfModel into core ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix NPE in credit note IRN: modularize InvoiceService.getInvoicePdfModel into core (ForIrn) and enrichment (EWB/eInvoice), switch purchase return CN to model-based IRN builder&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36453</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36453</guid></item>
<item><pubDate>Wed, 29 Apr 2026 22:41:21 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36431 – Add reissueMarginsCN: reissue MARGINS credit notes with /A suffix, March ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add reissueMarginsCN: reissue MARGINS credit notes with /A suffix, March 31 book date, Delhi GST skip, consolidated partner emails&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36431</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36431</guid></item>
<item><pubDate>Tue, 28 Apr 2026 17:22:39 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36415 – GstProService: cancel EWB before IRN in within-24h cancellation  NIC ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;GstProService: cancel EWB before IRN in within-24h cancellation&lt;br /&gt;
&lt;br /&gt;
NIC rejects IRN cancellation with &apos;This IRN cannot be cancelled because&lt;br /&gt;
e-way bill has been generated&apos; when an EWB is still active against the&lt;br /&gt;
invoice. Existing within-24h branch went straight to cancelIrn and hit&lt;br /&gt;
this rejection on every cancellation that had a generated EWB.&lt;br /&gt;
&lt;br /&gt;
Mirror the DC branch&apos;s EWB-cancel pattern: when eInvoiceDetails.ewbNo is&lt;br /&gt;
non-null, resolve sellerGstin (prod gstin / sandbox), parse ewbNo, call&lt;br /&gt;
cancelEwb first, then proceed to cancelIrn. EWB-cancel is wrapped in&lt;br /&gt;
try/catch + WARN — already-cancelled EWBs (transient or manual) don&apos;t&lt;br /&gt;
block the IRN cancel that follows; a genuinely-active EWB still surfaces&lt;br /&gt;
via the IRN cancel error.&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36415</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36415</guid></item>
<item><pubDate>Mon, 27 Apr 2026 14:52:32 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36399 – Replace mailSender (SendGrid) with gmailRelaySender - SendGrid API key expired/revoked</title><description>&lt;div&gt;&lt;strong&gt;amit – 21 file(s) modified&lt;/strong&gt;&lt;br/&gt;Replace mailSender (SendGrid) with gmailRelaySender - SendGrid API key expired/revoked&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/CsServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/BidServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/LocationTrackingServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/loiForm/LoiFormServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/OtpProcessor.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/TrialServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/AuthServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/CustomerServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/EmailService.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/mail/MailOutboxService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/order/BulkOrderService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/PerformanceServiceImpl.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/transaction/invoicing/InvoiceService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/scheduled/SDCreditScheduler.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/SDCreditServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/TransactionServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/user/StoreTimelineTatServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/user/UserServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36399</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36399</guid></item>
<item><pubDate>Wed, 08 Apr 2026 12:21:27 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36218 – Credit/Debit note enhancements: add margin_month + cancelled columns, fofo_dn_sequence on ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;Credit/Debit note enhancements: add margin_month + cancelled columns, fofo_dn_sequence on sellerwarehouse, generateDebitNoteIrn for margin reversals, selectCancelledByMonth repo, generateDebitNotesForCancelled service, cn_date = ack_date, dedup by margin_month, source-based descriptions (Schemes/Offers vs Price Drop), skip negative margin line items for CRNs&lt;/div&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/entity/transaction/SellerWarehouse.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/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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36218</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36218</guid></item>
<item><pubDate>Mon, 06 Apr 2026 19:30:33 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36199 – Fix: add DUPIRN handling in credit note IRN generation (both ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix: add DUPIRN handling in credit note IRN generation (both MARGINS and RETURNS overloads) — fetch existing IRN from NIC instead of failing&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36199</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36199</guid></item>
<item><pubDate>Sat, 04 Apr 2026 13:44:05 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36184 – Fix Credit Note IRN generation for monthly margins  - ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 6 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix Credit Note IRN generation for monthly margins&lt;br /&gt;
&lt;br /&gt;
- Add hsnCode to InventoryMarginModel, update 3 named queries to select ii.hsnCode&lt;br /&gt;
- Group CN items by taxRate+HSN, set hsnCode on CustomOrderItem&lt;br /&gt;
- Add getGenIrnRequest/getItemList overloads in GstProService for credit notes&lt;br /&gt;
- Fix IndexOutOfBoundsException from orders-items mismatch in generateCreditNoteIrn&lt;br /&gt;
- Wrap fofo and vendor loops in try-catch so one CN failure does not abort the process&lt;br /&gt;
- Send summary email with failure details to amit.gupta and ranu.rajput&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/OfferPayout.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/SchemeInOut.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/transaction/PriceDropIMEI.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/CreditNoteServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/InventoryMarginModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36184</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36184</guid></item>
<item><pubDate>Thu, 02 Apr 2026 19:06:35 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36171 – Handle GSP102 auth token expired/missing: evict cache and retry, same ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Handle GSP102 auth token expired/missing: evict cache and retry, same as GSP752&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=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36171</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2F%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fservice%2Fintegrations%2Fgstpro%2F&amp;isdir=1&amp;rev=36171</guid></item>
</channel></rss>