<?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/</title><description>WebSVN RSS feed &#x2013; SmartDukaan</description><lastBuildDate>Wed, 06 May 2026 12:02:43 +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%2F&amp;isdir=1&amp;max=40&amp;</link><atom:link href="https://svn.smartdukaan.com/rss.php?isdir=1&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;repname=SmartDukaan" rel="self" type="application/rss+xml" />
<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=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36477</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36477</guid></item>
<item><pubDate>Tue, 05 May 2026 19:57:10 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36475 – Remove reissueMarginsCN, recoverMonthlyMarginsCN, resendCNReport — one-time recovery methods no longer ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Remove reissueMarginsCN, recoverMonthlyMarginsCN, resendCNReport — one-time recovery methods no longer needed. Fix SGST/IGST CSV header swap (was swapped since r36196). Clean up unused imports/fields.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/CreditNoteService.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36475</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36475</guid></item>
<item><pubDate>Tue, 05 May 2026 19:56:07 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36474 – Fix: guard empty-list bulk queries in issueMonthlyMarginsCN to prevent crash ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix: guard empty-list bulk queries in issueMonthlyMarginsCN to prevent crash on dev (no margin data)&lt;/div&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%2F&amp;isdir=1&amp;rev=36474</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36474</guid></item>
<item><pubDate>Mon, 04 May 2026 19:38:09 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 36471 – V2 Profile Update APIs</title><description>&lt;div&gt;&lt;strong&gt;vikas – 9 file(s) modified&lt;/strong&gt;&lt;br/&gt;V2 Profile Update APIs&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/FofoPartnerDocument.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/transaction/FranchiseeBankAccount.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/FofoPartnerDocumentRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/FofoPartnerDocumentRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/FranchiseeBankAccountService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/FranchiseeBankAccountServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoBankAccountController.java&lt;br /&gt;+ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoPartnerDocumentController.java&lt;br /&gt;+ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoProfileUpdateController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36471</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36471</guid></item>
<item><pubDate>Mon, 04 May 2026 19:36:19 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36470 – code commit for reports section v2</title><description>&lt;div&gt;&lt;strong&gt;ranu – 14 file(s) modified&lt;/strong&gt;&lt;br/&gt;code commit for reports section v2&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/transaction/Order.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/CollectionSummary.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoAnalysisDashboardController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoGrnController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoItemLedgerController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoLeadController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoMonitorController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoOrderController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoPriceDropController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoReportsController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoStoreController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoUpSaleController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoVendorController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoWebListingController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36470</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36470</guid></item>
<item><pubDate>Mon, 04 May 2026 13:38:01 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 36465 – New Authorization Token Flow for web</title><description>&lt;div&gt;&lt;strong&gt;vikas – 9 file(s) modified&lt;/strong&gt;&lt;br/&gt;New Authorization Token Flow for web&lt;/div&gt;~ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/model/ProfitMandiConstants.java&lt;br /&gt;~ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/model/UserInfo.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/authentication/JWTUtil.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/interceptor/AuthenticationInterceptor.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/FofoV2BaseController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoAuthUserController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoMonitorController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2HomeController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/V2UserController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36465</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36465</guid></item>
<item><pubDate>Mon, 04 May 2026 13:15:03 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36464 – Add vendor pricing changes Excel download report on Vendor Price ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add vendor pricing changes Excel download report on Vendor Price Circular page. Flat file with Vendor/Date/Model/CatalogId/TP/DP/MOP columns, filterable by vendor. Shows baseline pricing as of start date plus subsequent TP changes within period for all non-internal suppliers.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/inventory/VendorCatalogPricingLog.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/inventory/VendorCatalogPricingLogRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/inventory/VendorCatalogPricingLogRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/VendorController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/vendor-catalog.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/vendor-price-circular.vm&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoVendorController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36464</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36464</guid></item>
<item><pubDate>Mon, 04 May 2026 11:31:48 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36455 – Fix: populate saleQtyByKey for serialized items too, include DOA_IN in ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix: populate saleQtyByKey for serialized items too, include DOA_IN in returnQtyByKey&lt;/div&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%2F&amp;isdir=1&amp;rev=36455</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36455</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=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36453</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36453</guid></item>
<item><pubDate>Sat, 02 May 2026 17:29:48 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36451 – Add reference field to catalog.offer and catalog.scheme for payout collation</title><description>&lt;div&gt;&lt;strong&gt;amit – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add reference field to catalog.offer and catalog.scheme for payout collation&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/Offer.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/Scheme.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/CreateOfferRequest.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/CreateSchemeRequest.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/scheme/SchemeServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/add_reference_to_offer_scheme.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36451</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36451</guid></item>
<item><pubDate>Sat, 02 May 2026 17:14:12 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36450 – Refactor applyReceipt: extract scan creation to WarehouseInventoryService.recordReturnScan with validation for ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Refactor applyReceipt: extract scan creation to WarehouseInventoryService.recordReturnScan with validation for all return types (SALE_RET/DOA_IN/SALE_RET_UNUSABLE), qty&gt;0, sold-qty capacity check, and SALE_RET warehouse capacity check&lt;/div&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/warehouse/WarehouseInventoryService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseInventoryServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36450</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36450</guid></item>
<item><pubDate>Sat, 02 May 2026 16:53:13 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36449 – Fix duplicate PurchaseReturnItem creation for serialized items - use list ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix duplicate PurchaseReturnItem creation for serialized items - use list query with CREATED/APPROVED status check instead of single-result query&lt;/div&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%2F&amp;isdir=1&amp;rev=36449</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36449</guid></item>
<item><pubDate>Fri, 01 May 2026 23:48:55 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36446 – DN lifecycle: decouple rejection from restore, add DebitNoteStatus, retailer acknowledgment ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 8 file(s) modified&lt;/strong&gt;&lt;br/&gt;DN lifecycle: decouple rejection from restore, add DebitNoteStatus, retailer acknowledgment flow&lt;br /&gt;
&lt;br /&gt;
- Add DebitNoteStatus enum (CREATED/RECEIVED/APPROVED/REJECTED/CANCELLED) on debit_note table&lt;br /&gt;
- Add retailer_acknowledge_timestamp on purchase_return_order&lt;br /&gt;
- rejectReturn() no longer calls restoreReturnedItems() — inventory stays reduced until retailer confirms goods received back&lt;br /&gt;
- New acknowledgeRejectedReturn(): retailer confirms receipt, restores inventory+schemes+offers, DN→CANCELLED&lt;br /&gt;
- Set DN status in receiveDebitNoteItems (RECEIVED), refundOrder (APPROVED), rejectReturn (REJECTED)&lt;br /&gt;
- notifyReturnRejected: updated message, added Finance L1+L2 to CC&lt;br /&gt;
- notifyItemsReceived: added Finance L1&lt;br /&gt;
- New notifyRejectedGoodsAcknowledged notification&lt;br /&gt;
- SQL migration with backfill for existing data&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/DebitNote.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/PurchaseReturnOrder.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/fofo/DebitNoteStatus.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/resources/sql/migration_dn_status_retailer_ack.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36446</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36446</guid></item>
<item><pubDate>Fri, 01 May 2026 19:41:42 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36445 – knowlarity username password update</title><description>&lt;div&gt;&lt;strong&gt;ranu – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;knowlarity username password update&lt;/div&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/scheduled/knowlarity/KnowlarityCallMonitorScheduler.java&lt;br /&gt;~ /trunk/profitmandi-cron/src/main/resources/META-INF/dev.properties&lt;br /&gt;~ /trunk/profitmandi-cron/src/main/resources/META-INF/prod.properties&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/knowlarity/KnowlaritySocketTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36445</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36445</guid></item>
<item><pubDate>Fri, 01 May 2026 13:44:29 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36441 – Rename monitor type &apos;normal&apos; to &apos;base&apos; in enum and SQL ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Rename monitor type &apos;normal&apos; to &apos;base&apos; in enum and SQL schema&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/MonitorType.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/sql/catalog_monitor_type.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36441</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36441</guid></item>
<item><pubDate>Fri, 01 May 2026 12:15:46 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36439 – Add outlet_name field to FofoStore entity, set from address.name on ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add outlet_name field to FofoStore entity, set from address.name on store creation&lt;br /&gt;
&lt;br /&gt;
Adds outlet_name (VARCHAR 255) to FofoStore entity so the store&apos;s display&lt;br /&gt;
name is persisted directly on fofo_store instead of requiring a join through&lt;br /&gt;
retailer_registered_address -&gt; address every time it is needed.&lt;br /&gt;
&lt;br /&gt;
Sets fofoStore.setOutletName(retailerAddress.getName()) in both creation&lt;br /&gt;
paths: RetailerServiceImpl.createFofoStoreCodeByRetailerId (primary) and&lt;br /&gt;
RetailerController.createFofoStore (secondary).&lt;br /&gt;
&lt;br /&gt;
Includes migration SQL script (migration_outlet_name_to_fofo_store.sql) to&lt;br /&gt;
ALTER TABLE and backfill existing rows from address.name. Must be run during&lt;br /&gt;
low-traffic window - fofo_store is heavily queried and ALTER takes a metadata&lt;br /&gt;
lock that blocks all concurrent SELECTs.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/FofoStore.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/user/RetailerServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/migration_outlet_name_to_fofo_store.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36439</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36439</guid></item>
<item><pubDate>Fri, 01 May 2026 11:46:01 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36438 – Fix SD Credit over-utilization: use live loan SUM + row ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix SD Credit over-utilization: use live loan SUM + row lock + sanction guard&lt;br /&gt;
&lt;br /&gt;
- blockLoan: use SELECT FOR UPDATE to prevent concurrent orders from both passing credit check&lt;br /&gt;
- processLoanRequest: replace stored utilized_limit counter with live SUM(pending_amount) from loan table&lt;br /&gt;
- processLoanRequest + getAvailableAmount: only add sanction amount if not already used today&lt;br /&gt;
- Prevents credit limit from going negative due to counter drift or race conditions&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/SDCreditRequirementRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/SDCreditRequirementRepositoryImpl.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%2F&amp;isdir=1&amp;rev=36438</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36438</guid></item>
<item><pubDate>Fri, 01 May 2026 11:22:17 +0530</pubDate><dc:creator>aman</dc:creator><title>Rev 36437 – Fix</title><description>&lt;div&gt;&lt;strong&gt;aman – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/Mongo.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36437</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36437</guid></item>
<item><pubDate>Thu, 30 Apr 2026 17:55:17 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36436 – without vendor catalog pricing po will not create</title><description>&lt;div&gt;&lt;strong&gt;ranu – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;without vendor catalog pricing po will not create&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/RbmPerformanceDashboardModel.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/monitors/MonitorController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/today_po_rbm.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36436</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36436</guid></item>
<item><pubDate>Wed, 29 Apr 2026 23:03:39 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36434 – Fix: wrap PDF file save in try-catch for test reissue ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix: wrap PDF file save in try-catch for test reissue method (path may not exist locally)&lt;/div&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%2F&amp;isdir=1&amp;rev=36434</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36434</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=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36431</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36431</guid></item>
<item><pubDate>Wed, 29 Apr 2026 18:41:19 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36429 – Fix credit limit settlement not happening on billing and post-billing ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix credit limit settlement not happening on billing and post-billing cancellation&lt;br /&gt;
&lt;br /&gt;
createLoanForBilling has REQUIRES_NEW (added for lock isolation against&lt;br /&gt;
order row locks held by the billing method). Inside that new transaction it&lt;br /&gt;
queried orders to find which were just billed — but the billing timestamps&lt;br /&gt;
set in the suspended outer transaction are invisible, so the condition&lt;br /&gt;
always evaluates FALSE when all orders are billed in one call. The limit&lt;br /&gt;
block is never converted to a loan and never released.&lt;br /&gt;
&lt;br /&gt;
Fix: remove the order query. The caller already passes invoiceAmount (sum&lt;br /&gt;
of walletAmount for the billed orders). Use it directly with Math.min to&lt;br /&gt;
cap at pendingAmount. REQUIRES_NEW kept for lock isolation.&lt;br /&gt;
&lt;br /&gt;
Also: cancelInvoiceFully and applyInvoiceReturnViaCreditNote (post-billing&lt;br /&gt;
invoice cancellation/return paths) credit the partner wallet but never&lt;br /&gt;
settle the non-limit loan created during billing. Added settleLoan call&lt;br /&gt;
after wallet credit in both paths, guarded by settledOn == null check.&lt;br /&gt;
&lt;br /&gt;
Data defect: 95 stuck limit blocks totaling Rs 56.95 lakh across partners.&lt;br /&gt;
Most have no actual loan created. Needs one-time remediation via&lt;br /&gt;
fixBlockedCredit() in ScheduledTasks.&lt;/div&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/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%2F&amp;isdir=1&amp;rev=36429</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36429</guid></item>
<item><pubDate>Wed, 29 Apr 2026 16:17:41 +0530</pubDate><dc:creator>aman</dc:creator><title>Rev 36428 – Fix:Partner Stock Api</title><description>&lt;div&gt;&lt;strong&gt;aman – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix:Partner Stock Api&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/TagListing.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/TagListingRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/TagListingRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/StoreController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36428</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36428</guid></item>
<item><pubDate>Wed, 29 Apr 2026 14:38:13 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36427 – rejectReturn: simplify to cancel-the-request semantics  After the receive/refund refactor, ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;rejectReturn: simplify to cancel-the-request semantics&lt;br /&gt;
&lt;br /&gt;
After the receive/refund refactor, applyReceipt — and therefore every&lt;br /&gt;
warehouse-side effect (SALE_RET scans, WarehouseInventoryItem.addQuantity,&lt;br /&gt;
InventoryItem.returnTimestamp, ReturnOrderInfo, Order.status flip,&lt;br /&gt;
lineItem.returnQty) — only runs from refundOrder (or its inline&lt;br /&gt;
auto-approve sibling in submitReceiptForApproval). Both paths set&lt;br /&gt;
pro.refundTimestamp in the same transaction, all-or-nothing under&lt;br /&gt;
@Transactional(rollbackFor=Exception.class).&lt;br /&gt;
&lt;br /&gt;
The refund_timestamp guard at the top of rejectReturn blocks rejection&lt;br /&gt;
once any of that has fired, which means rejectReturn is now ONLY&lt;br /&gt;
callable on a pending PRO — a state where applyReceipt has never run&lt;br /&gt;
and there is nothing on the warehouse side to undo.&lt;br /&gt;
&lt;br /&gt;
The pre-existing reversal pipeline (warehouse-scan -1 reversal scans,&lt;br /&gt;
ReturnOrderInfo update/create-with-REJECTED, Order.status flip back to&lt;br /&gt;
DELIVERY_SUCCESS, lineItem.returnQty decrement) was therefore operating&lt;br /&gt;
against state that doesn&apos;t exist:&lt;br /&gt;
  - lastScanType is SALE (from original sale), not SALE_RET, so&lt;br /&gt;
    addQuantity(-1) gate correctly skipped — but the unconditional&lt;br /&gt;
    persist of WarehouseScan(qty=-1, type=SALE_RET) was creating&lt;br /&gt;
    fake reversal rows for receipts that never happened.&lt;br /&gt;
  - selectByOrderId for ReturnOrderInfo always returned empty&lt;br /&gt;
    (refundOrder is the only writer), and the no-rows branch was&lt;br /&gt;
    fabricating REJECTED ROI rows for returns that were never received.&lt;br /&gt;
  - Order.status was never flipped to COMPLETE_RETURN, so the&lt;br /&gt;
    DELIVERY_SUCCESS reversal block correctly skipped — pure dead&lt;br /&gt;
    branch.&lt;br /&gt;
&lt;br /&gt;
Strip all of it. rejectReturn is now: guards (refund/reject timestamps),&lt;br /&gt;
stamp PRO with reject_timestamp/remark/updatedBy, restoreReturnedItems&lt;br /&gt;
to undo the partner-side effects from generateDebitNote(), mark items&lt;br /&gt;
REJECTED so a fresh re-request is possible.&lt;br /&gt;
&lt;br /&gt;
This also undoes the previous fix #5 (extending the warehouse-scan&lt;br /&gt;
reversal to non-serialized) — that fix was making things worse by&lt;br /&gt;
creating fake reversal rows for both serialized and non-serialized&lt;br /&gt;
items instead of just serialized. The right answer was to delete the&lt;br /&gt;
whole block, not extend it.&lt;/div&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%2F&amp;isdir=1&amp;rev=36427</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36427</guid></item>
<item><pubDate>Wed, 29 Apr 2026 13:52:16 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36425 – Sale-return reversal: idempotency guards + CN failure rolls back + ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Sale-return reversal: idempotency guards + CN failure rolls back + non-serialized reject reversal&lt;br /&gt;
&lt;br /&gt;
rejectReturn (#1): add refundTimestamp / rejectTimestamp guards. Without&lt;br /&gt;
them a stale-tab click or retry could re-run the full reversal pipeline&lt;br /&gt;
on an already-refunded DN — reversing scans twice, re-running&lt;br /&gt;
restoreReturnedItems (re-credits scheme amounts to wallet on top of the&lt;br /&gt;
refund that already paid out), and stamping rejectTimestamp on top of&lt;br /&gt;
refundTimestamp. Mirrors refundOrder&apos;s existing guard pair.&lt;br /&gt;
&lt;br /&gt;
refundOrder CN block (#2): replace the swallow-and-log with a re-throw&lt;br /&gt;
on IRN failure. With class-level @Transactional(rollbackFor=Exception),&lt;br /&gt;
the prior catch caused commits of an advanced sellerWarehouse sequence&lt;br /&gt;
+ orphan CreditNote / CreditNoteLine rows whenever the NIC IRN call&lt;br /&gt;
failed. Restructured as straight-through; IRN failure now rolls the&lt;br /&gt;
whole refundOrder transaction back so finance retries cleanly. Matches&lt;br /&gt;
the symmetric path in applyInvoiceReturnViaCreditNote.&lt;br /&gt;
&lt;br /&gt;
applyInvoiceReturnViaCreditNote (#3): stamp pro.refundTimestamp /&lt;br /&gt;
refundedBy / refundAmount unconditionally rather than gated on&lt;br /&gt;
totalRefundAmount &gt; 0. Defensive idempotency on the state machine: a&lt;br /&gt;
0-amount approve (corner case where the invoice&apos;s line items are already&lt;br /&gt;
fully returned via a sibling DN flow) used to leave the PRO in pending&lt;br /&gt;
state, allowing a second Approve click to issue a duplicate CN at NIC.&lt;br /&gt;
&lt;br /&gt;
rejectReturn non-serialized reversal (#5): the reversal loop was gated&lt;br /&gt;
on inventoryItem.serialNumber being non-blank, leaving non-serialized&lt;br /&gt;
GOOD items&apos; SALE_RET +1 increments un-reversed on rejection — phantom&lt;br /&gt;
warehouse stock. Now mirrors applyReceipt&apos;s nonSerialWhItemMap pattern&lt;br /&gt;
(orderId|itemId) and reverses both serialized and non-serialized.&lt;br /&gt;
Conservative addQuantity(-1) gate retained: only fires when lastScanType&lt;br /&gt;
== SALE_RET, matching the prior serialized behaviour.&lt;/div&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%2F&amp;isdir=1&amp;rev=36425</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36425</guid></item>
<item><pubDate>Tue, 28 Apr 2026 18:17:53 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36417 – Fix:PO item swap — update/delete old PURCHASE scan record when ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix:PO item swap — update/delete old PURCHASE scan record when reducing quantity on swapped inventory item&lt;/div&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=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36417</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36417</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=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36415</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36415</guid></item>
<item><pubDate>Tue, 28 Apr 2026 16:48:05 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36414 – without vendor catalog pricing po will not create</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;without vendor catalog pricing po will not create&lt;/div&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=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36414</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36414</guid></item>
<item><pubDate>Tue, 28 Apr 2026 13:31:20 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36413 – Added Rising Star/NEW</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Added Rising Star/NEW&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/MonitorType.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36413</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36413</guid></item>
<item><pubDate>Tue, 28 Apr 2026 13:28:23 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36411 – Fix lock contention: REQUIRES_NEW for wallet lock in createLoanForBilling, handle ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix lock contention: REQUIRES_NEW for wallet lock in createLoanForBilling, handle HDFC payment deadlock as duplicate&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/SDCreditServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/hdfc/HdfcPaymentController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36411</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36411</guid></item>
<item><pubDate>Tue, 28 Apr 2026 12:11:20 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36410 – Added Rising Star/NEW</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Added Rising Star/NEW&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/MonitorType.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36410</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36410</guid></item>
<item><pubDate>Mon, 27 Apr 2026 19:54:23 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36407 – Sale-return reversal: cancellability gate, CN on approve, INV reject, ROI ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 6 file(s) modified&lt;/strong&gt;&lt;br/&gt;Sale-return reversal: cancellability gate, CN on approve, INV reject, ROI semantics&lt;br /&gt;
&lt;br /&gt;
GstProService.isIrnCancellable(invoiceNumber): predicate extracted from&lt;br /&gt;
the inline 24h check used in cancelInvoiceGst, so callers outside the&lt;br /&gt;
service can decide branching without duplicating the rule. DC and no-IRN&lt;br /&gt;
cases return false — those paths use EWB cancel / credit-note issuance.&lt;br /&gt;
&lt;br /&gt;
PurchaseReturnServiceImpl: split single-phase return-receive into&lt;br /&gt;
submitReceiptForApproval + applyReceipt. Submit persists per-item return&lt;br /&gt;
type on PurchaseReturnItem so apply (called inline on auto-approve, or&lt;br /&gt;
later from refundOrder when finance clicks Process Refund) can replay&lt;br /&gt;
the scan loop without the original itemReturnTypes map.&lt;br /&gt;
&lt;br /&gt;
processInvoiceReturn(autoApprove=true) no longer creates a PRO. Routes&lt;br /&gt;
through new cancelInvoiceFully which calls gstProService.cancelInvoiceGst&lt;br /&gt;
(the canonical IRN-cancel path setting Order.status=INVOICE_CANCELLED)&lt;br /&gt;
and adds wallet credit + warehouse-stock restoration. Cancellations now&lt;br /&gt;
live on Order/EInvoiceDetails screens, not in the returns ledger —&lt;br /&gt;
matches standard ERP practice and the existing cancelInvoiceGst flow.&lt;br /&gt;
&lt;br /&gt;
processInvoiceReturn(autoApprove=false) creates an INV-prefix PRO in&lt;br /&gt;
pending state and calls notifyFinanceApprovalPending (Finance L1+L2&lt;br /&gt;
emails resolved dynamically from PositionRepository).&lt;br /&gt;
&lt;br /&gt;
approveInvoiceReturn now runs applyInvoiceReturnViaCreditNote — raises&lt;br /&gt;
local CreditNote + CreditNoteLine rows (sequential CN# from&lt;br /&gt;
SellerWarehouse), issues CRN at GST via generateCreditNoteIrn, restores&lt;br /&gt;
warehouse stock, populates ReturnOrderInfo (this path IS a customer&lt;br /&gt;
return without DN — ROI is the right anchor), credits wallet. Drops the&lt;br /&gt;
old applyInvoiceReturnEffects helper which mishandled both cancel and&lt;br /&gt;
return-via-CN as the same path.&lt;br /&gt;
&lt;br /&gt;
rejectInvoiceReturn: new method for finance to reject pending INV PROs.&lt;br /&gt;
Sale stands — only stamps reject_timestamp/reject_remark. No inventory,&lt;br /&gt;
no wallet, no GST action, no ROI. Closes the gap where finance had&lt;br /&gt;
Approve as the only option on a pending INV PRO.&lt;br /&gt;
&lt;br /&gt;
refundOrder gains a refund guard (PRO must exist, not refunded, not&lt;br /&gt;
rejected) and applyReceipt-if-needed at the top — Finance&apos;s existing&lt;br /&gt;
Process Refund button now drives approve+refund atomically.&lt;br /&gt;
&lt;br /&gt;
PurchaseReturnOrderRepository.selectByWarehouseIdsAndDateRange: Hibernate&lt;br /&gt;
query for a date-range listing on /return/invoice (default last 30&lt;br /&gt;
days, limit 200).&lt;br /&gt;
&lt;br /&gt;
@Transactional(rollbackFor=Exception.class) at class level —&lt;br /&gt;
ProfitMandiBusinessException is checked, so Spring&apos;s default rollback&lt;br /&gt;
didn&apos;t fire on guard failures, allowing partial commits. Closing that&lt;br /&gt;
silently broken behaviour.&lt;br /&gt;
&lt;br /&gt;
LineItemImei N+1 fix: receiveDebitNoteItems / refundOrder / rejectReturn&lt;br /&gt;
each iterated orders calling selectByLineItemId per row. Switched to the&lt;br /&gt;
existing batch selectByLineItemIds(List).&lt;br /&gt;
&lt;br /&gt;
Email template finance-receipt-approval-pending.vm and SQL migration&lt;br /&gt;
migration_imei_net_margin_modal_api.sql added (registers the&lt;br /&gt;
/getImeiNetMarginModal endpoint in dtr.api and grants access to the&lt;br /&gt;
roles that currently access /order).&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/PurchaseReturnOrderRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/PurchaseReturnOrderRepositoryImpl.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/resources/finance-receipt-approval-pending.vm&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/migration_imei_net_margin_modal_api.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36407</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36407</guid></item>
<item><pubDate>Mon, 27 Apr 2026 17:41:14 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36405 – Fix duplicate SchemeInOut on concurrent GRN: SELECT FOR UPDATE on ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Fix duplicate SchemeInOut on concurrent GRN: SELECT FOR UPDATE on inventory_item before createSchemeInOut to serialise concurrent GRN calls per IMEI&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/InventoryItemRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/InventoryItemRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/scheme/SchemeServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36405</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36405</guid></item>
<item><pubDate>Mon, 27 Apr 2026 14:57:42 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36403 – Add catalog.catalog_monitor_type table, entity, and repository for per-catalog focused/normal monitor ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add catalog.catalog_monitor_type table, entity, and repository for per-catalog focused/normal monitor type tagging&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/CatalogMonitorType.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/MonitorType.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/CatalogMonitorTypeRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/CatalogMonitorTypeRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/catalog_monitor_type.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36403</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36403</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=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36399</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36399</guid></item>
<item><pubDate>Mon, 27 Apr 2026 14:38:57 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36397 – Scheme item windowing: add startDate/endDate per scheme_item.  Each fofo.scheme_item ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;Scheme item windowing: add startDate/endDate per scheme_item.&lt;br /&gt;
&lt;br /&gt;
Each fofo.scheme_item row now carries an optional [start_date, end_date]&lt;br /&gt;
window so the same (scheme_id, catalog_id) pair can be applicable for&lt;br /&gt;
different date ranges. Backward compatible: NULL window = always active.&lt;br /&gt;
&lt;br /&gt;
- SchemeItem entity: composite (schemeId, catalogId) PK -&gt; surrogate&lt;br /&gt;
  long id (IDENTITY), unique (catalog_id, scheme_id, start_date, end_date),&lt;br /&gt;
  audit cols (updatedBy, updatedOn).&lt;br /&gt;
- Scheme + TagListing named queries: gated by&lt;br /&gt;
  &apos;(si.start_date is null or :onDate between si.start_date and si.end_date)&apos;.&lt;br /&gt;
- SchemeItemRepository: + selectById, selectBySchemeId,&lt;br /&gt;
  existsOverlapping (half-open, with self-exclude), selectItemsOutsideWindow.&lt;br /&gt;
- SchemeService: + updateSchemeItemWindow / addSchemeItemWithDates /&lt;br /&gt;
  clampSchemeItems with containment + overlap validation; drop dead&lt;br /&gt;
  getTotalMargin.&lt;br /&gt;
- SchemeServiceImpl.processSchemeOut: pin scheme resolution to each&lt;br /&gt;
  IMEI&apos;s GRN billing date (Purchase -&gt; Order.billingTimestamp via&lt;br /&gt;
  PurchaseService.getBillingDateOfPurchase) instead of fofoOrder&lt;br /&gt;
  createTimestamp, aligning OUT with the existing IN behaviour.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/Scheme.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/TagListing.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/SchemeItem.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/SchemeItemRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/SchemeItemRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/scheme/SchemeService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/scheme/SchemeServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36397</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36397</guid></item>
<item><pubDate>Mon, 27 Apr 2026 14:36:06 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36395 – login talktime  hours cap on 100%</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;login talktime  hours cap on 100%&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/RbmPerformanceDashboardModel.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36395</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36395</guid></item>
<item><pubDate>Fri, 24 Apr 2026 18:31:25 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 36387 – code commit for reports section v2</title><description>&lt;div&gt;&lt;strong&gt;ranu – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;code commit for reports section v2&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/InventoryServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoInventoryController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoReportsController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/enumeration/PartnerReportType.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36387</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36387</guid></item>
<item><pubDate>Fri, 24 Apr 2026 18:05:26 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 36383 – Add DbErrorTranslator: translates Spring DataIntegrityViolationException (truncation / duplicate key / ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;Add DbErrorTranslator: translates Spring DataIntegrityViolationException (truncation / duplicate key / FK violation) into ProfitMandiBusinessException with prettified field label.&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/exception&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/exception/DbErrorTranslator.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36383</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36383</guid></item>
<item><pubDate>Fri, 24 Apr 2026 16:44:47 +0530</pubDate><dc:creator>aman</dc:creator><title>Rev 36376 – Feat:Cart Api Implementation</title><description>&lt;div&gt;&lt;strong&gt;aman – 43 file(s) modified&lt;/strong&gt;&lt;br/&gt;Feat:Cart Api Implementation&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/BlockerType.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartBlocker.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartContent.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartEventType.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartHydrationService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartHydrationServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartLifecycleStatus.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartReservationConstants.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartReservationService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartReservationServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartValidationService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartValidationServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartWarning.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CheckoutValidationResult.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CouponState.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/HydratedCart.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/HydratedLine.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/InsuranceBinding.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/LineReservation.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/LineStatus.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/LiveInventory.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/LivePrice.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/OpenCartValidationResult.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/PricingBreakup.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/Reservation.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/SaleType.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/TaxBreakup.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/WarningType.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/Cart.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/CartLine.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/dtr/AccountType.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/UserAccountRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/UserAccountRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/CartRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/CartRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-web/docs&lt;br /&gt;+ /trunk/profitmandi-web/docs/tests&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/checkout/OrderController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/StoreController.java&lt;br /&gt;+ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/V2BillingController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/V2CartController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/V2OrderController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36376</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2F&amp;isdir=1&amp;rev=36376</guid></item>
</channel></rss>