<?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/dao/repository/</title><description>WebSVN RSS feed &#x2013; SmartDukaan</description><lastBuildDate>Thu, 08 Oct 2026 10:06:08 +0530</lastBuildDate><generator>WebSVN 2.8.6-DEV</generator><language>en</language><link>https://svn.smartdukaan.com/log.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%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%2Fprofitmandi%2Fdao%2Frepository%2F&amp;repname=SmartDukaan" rel="self" type="application/rss+xml" />
<item><pubDate>Wed, 07 Oct 2026 15:03:19 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37868 – fix(warehouse): return empty availability for empty item list  getAvailabilityToWarehouse ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(warehouse): return empty availability for empty item list&lt;br /&gt;
&lt;br /&gt;
getAvailabilityToWarehouse / ToVendorWarehouse / ToVendorWarehouseToBill&lt;br /&gt;
passed an empty itemIds list into the named query, producing &quot;IN ()&quot; and a&lt;br /&gt;
SQL syntax error (GlitchTip #20 /cart validation, #88 /om/orderByTransaction).&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/BrandRegionMappingRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37868</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37868</guid></item>
<item><pubDate>Wed, 07 Oct 2026 12:20:15 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37866 – request login for b2b app for sales department enable</title><description>&lt;div&gt;&lt;strong&gt;ranu – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;request login for b2b app for sales department enable&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/CsService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/CsServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/UserController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/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%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37866</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37866</guid></item>
<item><pubDate>Tue, 06 Oct 2026 12:52:07 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37855 – fix(external-api): exclude Live Demo and Dummy display units from all ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(external-api): exclude Live Demo and Dummy display units from all partner feeds and lookups&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/external/ExternalFeedRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37855</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37855</guid></item>
<item><pubDate>Mon, 05 Oct 2026 18:48:21 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37845 – feat(warehouse): ACTIVE/SUSPENDED/INACTIVE status + label on sellerwarehouse replace WAREHOUSE_MAP - ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 33 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(warehouse): ACTIVE/SUSPENDED/INACTIVE status + label on sellerwarehouse replace WAREHOUSE_MAP - BillingWarehouseService (active for dashboards, active+suspended for warehouse screens, names in every state, 5 min cache); setup service: guarded status change (no suspend while franchise stores or brand mapping route there, no close while stock/unshipped orders), rename, all-warehouse overview with usage; partner store assignable only to an active warehouse; daily stock alert for suspended/inactive warehouses to logistics/accounts top 2 staffed levels + leadership; dashboard warehouse list = active (replaces r37834 stock-holding loop); migration sellerwarehouse_status_display_name_20261005.sql (applied on hadb1)&lt;/div&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/enumuration/warehouse/WarehouseStatus.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/warehouse/PhysicalWarehouseView.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/warehouse/WarehouseStockLine.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/warehouse/WarehouseUsage.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/FofoStoreRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/inventory/InventoryWarehouseRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/inventory/SaholicInventoryCISRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/inventory/SaholicInventoryCISRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/inventory/WarehouseRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/SellerWarehouseRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/SellerWarehouseRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/solr/FofoSolr.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/AdminUser.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/authentication/JWTUtil.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/RbmTargetServiceImpl.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/RetailerServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/BillingWarehouseService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/BillingWarehouseServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PoStockApprovalDigestServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PoStockApprovalServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/SuspendedWarehouseStockAlertService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/SuspendedWarehouseStockAlertServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseSetupService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseSetupServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseSetupValidator.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/sellerwarehouse_status_display_name_20261005.sql&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/warehouse/BillingWarehouseServiceImplTest.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/warehouse/SuspendedWarehouseStockAlertServiceImplTest.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/warehouse/WarehouseSetupServiceImplTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37845</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37845</guid></item>
<item><pubDate>Mon, 05 Oct 2026 13:28:42 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37840 – fix(offers): select month offers by date overlap so multi-month offers ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(offers): select month offers by date overlap so multi-month offers show in price circular&lt;br /&gt;
&lt;br /&gt;
selectAll(YearMonth) kept an offer only if its start or end date fell in the month,&lt;br /&gt;
so an offer running Sep 24 -&gt; Nov 15 (e.g. 10378) was missing from October&apos;s price&lt;br /&gt;
circular, partner offer view and getMonthOfferIds. Now start &amp;lt;= month end AND&lt;br /&gt;
end &gt;= month start. Offer cache eviction (edit + bulk create) clears every month&lt;br /&gt;
the offer covers instead of only the start month.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/OfferRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/offers/OfferServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37840</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37840</guid></item>
<item><pubDate>Sun, 04 Oct 2026 13:46:30 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37834 – fix(dashboard): warehouse-wise stock lists every warehouse holding stock in tbl_cis, ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(dashboard): warehouse-wise stock lists every warehouse holding stock in tbl_cis, not only franchise-store warehouses plus hardcoded 7573 - HR hubs (internal stores only) now show&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/inventory/SaholicInventoryCISRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/inventory/SaholicInventoryCISRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/AdminUser.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37834</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37834</guid></item>
<item><pubDate>Fri, 02 Oct 2026 01:53:51 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37830 – feat(movement): one PO per source vendor warehouse and cost - ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 9 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(movement): one PO per source vendor warehouse and cost - layers carry their GOOD/OURS vendor warehouse, orders are raised pinned to it, holds of pinned orders come off their own warehouse, billing takes units at the order&apos;s price first&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/InternalMovementAllocationModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/InternalMovementPriceModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehouseInventoryItemRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/TransactionService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/TransactionServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InternalMovementPricingServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/warehouse/MovementPoSplitTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37830</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37830</guid></item>
<item><pubDate>Thu, 01 Oct 2026 21:06:34 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37822 – feat(warehouse): physical warehouse setup service, supplier mapping PO guard, address ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 24 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(warehouse): physical warehouse setup service, supplier mapping PO guard, address active flag&lt;br /&gt;
&lt;br /&gt;
- WarehouseSetupService + WarehouseSetupValidator: create seller (state from GSTIN,&lt;br /&gt;
  unique label/GSTIN), address master (city stored last, 6-digit pin, contact),&lt;br /&gt;
  physical warehouse (OURS/BAD vendor 40 + Dummy/G + sellerwarehouse + mapping in&lt;br /&gt;
  one transaction), activate/deactivate (sellerwarehouse.is_active), remap address&lt;br /&gt;
  with internal store sync. Limits follow column sizes (sql_mode is empty).&lt;br /&gt;
- WarehouseAddressMaster.active: only active addresses are offered for assignment.&lt;br /&gt;
  Migration sql/20261001_warehouseaddressmaster_active.sql (applied on hadb1).&lt;br /&gt;
- PO guard: createPurchaseOrder refuses a supplier with no OURS/GOOD vendor&lt;br /&gt;
  warehouse at the destination (GRN could never receive it).&lt;br /&gt;
  InventoryWarehouseRepository.hasGoodSupplierWarehouse / selectSupplierIdsWithGoodWarehouse&lt;br /&gt;
  use existence checks; 67 pairs carry duplicate OURS/GOOD rows.&lt;br /&gt;
- SellerService.syncInternalStoreAddress(store); RetailerServiceImpl syncs an&lt;br /&gt;
  INTERNAL store&apos;s address when it moves warehouse or becomes internal.&lt;br /&gt;
- Record of 2026-10-01 HR Gurugram setup SQL (seller 21, warehouses 13368/13370/13372).&lt;br /&gt;
- Tests: WarehouseSetupValidatorTest (10), WarehouseSetupServiceImplTest (7).&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/transaction/WarehouseAddressMaster.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/warehouse/NewPhysicalWarehouseRequest.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/warehouse/NewSellerRequest.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/warehouse/NewWarehouseAddressRequest.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/warehouse/PhysicalWarehouseView.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/warehouse/WarehouseAddressView.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/inventory/InventoryWarehouseRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/inventory/InventoryWarehouseRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/WarehouseAddressMappingRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/WarehouseAddressMappingRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/SellerService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/SellerServiceImpl.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/java/com/spice/profitmandi/service/warehouse/PurchaseOrderService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseSetupService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseSetupServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseSetupValidator.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/20261001_delete_hrgn1715_hr_uk_store.sql&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/20261001_hr_gurugram_vendor_warehouses.sql&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/20261001_hr_gurugram_virtual_warehouses.sql&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/20261001_warehouseaddressmaster_active.sql&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/warehouse/WarehouseSetupServiceImplTest.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/warehouse/WarehouseSetupValidatorTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37822</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37822</guid></item>
<item><pubDate>Wed, 30 Sep 2026 16:43:15 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37817 – fix(movement): shelf stock before arriving, one PO per cost, close ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(movement): shelf stock before arriving, one PO per cost, close PO on invoice cancel&lt;br /&gt;
&lt;br /&gt;
- Internal movement fills from shelf stock before stock still arriving (a pending PO dated at&lt;br /&gt;
  midnight ranked ahead of same-day receipts, pricing movements from units that never shipped).&lt;br /&gt;
- A quantity spanning stock at different costs is raised as one PO per cost at once instead of&lt;br /&gt;
  being refused (first PO takes every item&apos;s oldest cost, the next the following cost).&lt;br /&gt;
- Refuse a movement from a warehouse to itself.&lt;br /&gt;
- Cancelling a movement&apos;s invoice/DC takes the order&apos;s qty off its PO and pre-closes it when&lt;br /&gt;
  nothing is left open, as refunds already did.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/InternalMovementAvailabilityModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-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/InternalMovementPricingService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InternalMovementPricingServiceImpl.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%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37817</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37817</guid></item>
<item><pubDate>Tue, 29 Sep 2026 04:14:47 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37805 – fix(catalog): trim f_ colour prefix space; age delisted listings from ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 8 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(catalog): trim f_ colour prefix space; age delisted listings from last activation&lt;br /&gt;
&lt;br /&gt;
- Item.normalizeColor drops the space after f_ on every write (upload sheets typed&lt;br /&gt;
  &apos;f_ Black&apos;, which read &apos; Black&apos; everywhere); ItemLoaderService uses it so the&lt;br /&gt;
  duplicate-colour check compares the clean value&lt;br /&gt;
- tag_listing.last_activated, stamped by TagListing.setActive on off-&gt;on;&lt;br /&gt;
  updateActiveById now goes through the entity (+flush) so the toggle stamps it&lt;br /&gt;
- delist cron + SQL script age a listing from GREATEST(start_date, last_activated),&lt;br /&gt;
  so a re-activated listing is not delisted again the next morning&lt;br /&gt;
- migrations: add_tag_listing_last_activated_20260929.sql, fix_item_color_prefix_space_20260929.sql&lt;br /&gt;
  (both applied on hadb1 2026-09-29; 174 items trimmed, 36830 excluded - clashes with 37089)&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/Item.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/TagListing.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/TagListingRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/catalog/CatalogDelistServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/catalog/ItemLoaderService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/add_tag_listing_last_activated_20260929.sql&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/sql/delist_inactive_listings_rolling_24m.sql&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/fix_item_color_prefix_space_20260929.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37805</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37805</guid></item>
<item><pubDate>Mon, 28 Sep 2026 14:34:01 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37790 – Return refund as B2C when NIC refuses the buyer&apos;s GSTIN ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 13 file(s) modified&lt;/strong&gt;&lt;br/&gt;Return refund as B2C when NIC refuses the buyer&apos;s GSTIN&lt;br /&gt;
&lt;br /&gt;
A return whose credit note NIC refuses because the BUYER&apos;s GSTIN is&lt;br /&gt;
cancelled or invalid could not be settled at all: the approval threw, and&lt;br /&gt;
with it went the refund, the stock and the return rows (NSUPDL5176, Mobile&lt;br /&gt;
Hub, GSTIN 08DCUPD7948K1ZP). Where the invoice itself had never been filed&lt;br /&gt;
the return was instead refunded with no credit note at all, leaving the&lt;br /&gt;
refund undocumented.&lt;br /&gt;
&lt;br /&gt;
Raising the note automatically is not the answer - it is Finance&apos;s call,&lt;br /&gt;
and the GST on a cancelled-GSTIN sale is not recoverable, so paying the&lt;br /&gt;
full value back loses it. Both flows therefore record the refusal and stop.&lt;br /&gt;
&lt;br /&gt;
GstProService: getIrnFailureReason (NIC&apos;s refusal for an invoice),&lt;br /&gt;
isInvalidBuyerGstin (that refusal is about the buyer&apos;s registration -&lt;br /&gt;
deliberately NOT a state-code mismatch, which is a data error to fix and&lt;br /&gt;
retry, nor anything naming our own seller GSTIN) and briefIrnReason (one&lt;br /&gt;
plain-ASCII line of 128 chars; credit_note is latin1 and sql_mode is empty,&lt;br /&gt;
so anything else would store as &apos;?&apos;).&lt;br /&gt;
&lt;br /&gt;
PurchaseReturnServiceImpl: both the invoice-return and the debit-note&lt;br /&gt;
refund detect that refusal, record it through ReturnIrnFailureRecorder and&lt;br /&gt;
throw ReturnIrnGstinFailureException. The recorder commits in REQUIRES_NEW&lt;br /&gt;
because the approval it records is about to roll back, and it only inserts -&lt;br /&gt;
return_irn_failure carries no foreign key on purpose, since an FK check&lt;br /&gt;
would take a shared lock on the very PurchaseReturnOrder row the dying&lt;br /&gt;
transaction may still hold.&lt;br /&gt;
&lt;br /&gt;
Finance may then settle the return as B2C for the rest of that calendar day:&lt;br /&gt;
refundAsB2c credits the value NET of GST in whole rupees (B2cRefundQuote,&lt;br /&gt;
HALF_UP per line, so the line table and the total always agree), restores&lt;br /&gt;
the stock and issues a local credit note for exactly that amount with no tax&lt;br /&gt;
on its lines, no IRN and NIC&apos;s reason recorded. The amount is fixed - the&lt;br /&gt;
caller must pass back the quoted figure - and a remark and explicit consent&lt;br /&gt;
are required. On a later day the option only reopens after a fresh approval&lt;br /&gt;
attempt is refused again, so NIC is always re-checked first.&lt;br /&gt;
&lt;br /&gt;
Mails: every refusal notifies Accounts L2 and above; the B2C settlement&lt;br /&gt;
notifies them and the partner&apos;s Warehouse L1/L2, both tabulated.&lt;br /&gt;
&lt;br /&gt;
The partner account statement is unaffected: it skips RETURNS notes and&lt;br /&gt;
credits returns from returnorderinfo, so the new notes cannot double-credit.&lt;br /&gt;
&lt;br /&gt;
DEPLOY ORDER: apply sql/add_return_b2c_refund_20260921.sql BEFORE any war&lt;br /&gt;
built from this dao. CreditNote now maps irn_skip_reason and b2c, so every&lt;br /&gt;
credit-note read in web, fofo and cron fails until the columns exist.&lt;br /&gt;
Untested beyond compilation.&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/ReturnIrnFailure.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/transaction/CreditNote.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/ReturnIrnFailureRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/ReturnIrnFailureRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/gstpro/GstProService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/B2cRefundQuote.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/PurchaseReturnNotificationService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/PurchaseReturnNotificationServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/PurchaseReturnService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/PurchaseReturnServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/ReturnIrnFailureRecorder.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/ReturnIrnGstinFailureException.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/add_return_b2c_refund_20260921.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37790</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37790</guid></item>
<item><pubDate>Fri, 25 Sep 2026 15:44:55 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37784 – Corrected LMS Data and Added filter</title><description>&lt;div&gt;&lt;strong&gt;vikas – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;Corrected LMS Data and Added filter&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/LmsDashboardService.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsDashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lms-dashboard-standalone.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37784</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37784</guid></item>
<item><pubDate>Fri, 25 Sep 2026 14:54:53 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37782 – fix(catalog): add serializedOnly overloads of selectAllItems/selectAllBrands  r37776 committed InventoryServiceImpl ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(catalog): add serializedOnly overloads of selectAllItems/selectAllBrands&lt;br /&gt;
&lt;br /&gt;
r37776 committed InventoryServiceImpl calling the 3-arg selectAllItems and&lt;br /&gt;
selectAllBrands, but the repository overloads and the named-query parameters&lt;br /&gt;
they bind were left uncommitted, so a build from trunk failed.&lt;br /&gt;
&lt;br /&gt;
serializedOnly = true restricts the model/brand pickers to IMEI items; the&lt;br /&gt;
2-arg forms delegate with false, unchanged behaviour.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/catalog/Item.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/ItemRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/ItemRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37782</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37782</guid></item>
<item><pubDate>Fri, 25 Sep 2026 13:16:59 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37779 – feat(cs): demo partner access for sales team  New cs.demo_partner_access ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(cs): demo partner access for sales team&lt;br /&gt;
&lt;br /&gt;
New cs.demo_partner_access binding (sales auth user -&gt; partner) used only to&lt;br /&gt;
open a partner&apos;s dashboard/app for demos. Read only at partner-view entry&lt;br /&gt;
points; CsService position mappings are untouched, so performance, targets,&lt;br /&gt;
reports and cron mails are unaffected.&lt;br /&gt;
&lt;br /&gt;
- DemoPartnerAccess entity + repository&lt;br /&gt;
- DemoPartnerAccessService: grant (sales-only, active store, skips duplicate&lt;br /&gt;
  and position-mapped), soft revoke, isAllowed (position OR demo),&lt;br /&gt;
  demo emails for app lists, canManage (mirrors sidebar menu rule)&lt;br /&gt;
- AdminUser.ALL_MENU_EMAILS extracted so canManage and the sidebar share it&lt;br /&gt;
- migration_demo_partner_access.sql: table + &quot;Demo Partner Access&quot; menu&lt;br /&gt;
  under Admin Control (NOT yet applied on hadb1)&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/cs/DemoPartnerAccess.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/DemoPartnerAccessRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/DemoPartnerAccessRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/DemoPartnerAccessService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/DemoPartnerAccessServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/AdminUser.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/migration_demo_partner_access.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37779</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37779</guid></item>
<item><pubDate>Thu, 24 Sep 2026 20:16:26 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37776 – returns: reverse a refunded debit-note return whose goods never reached ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 16 file(s) modified&lt;/strong&gt;&lt;br/&gt;returns: reverse a refunded debit-note return whose goods never reached the warehouse&lt;br /&gt;
&lt;br /&gt;
Once a return was refunded nothing could undo it - rejectReturn refuses an already&lt;br /&gt;
refunded one - so a return booked and paid for goods that never arrived left phantom&lt;br /&gt;
warehouse stock, the unit missing from partner stock, the order marked returned, a&lt;br /&gt;
wallet credit and a filed credit note, with no way back.&lt;br /&gt;
&lt;br /&gt;
ReturnReversalService.reverse(imei, reason, by, dryRun) undoes exactly one unit:&lt;br /&gt;
the warehouse return scan (row deleted so a genuine return later is not rejected as a&lt;br /&gt;
duplicate) and the stock it added, partner stock with its schemes/price drop/offers,&lt;br /&gt;
the order&apos;s return quantity and status, the wallet refund as a REVERSAL entry, and the&lt;br /&gt;
return item / debit note. Guards refuse anything that has moved since the refund, and a&lt;br /&gt;
dry run reports the plan without writing.&lt;br /&gt;
&lt;br /&gt;
The credit note follows movement and the NIC clock: inside the 24h window, and only&lt;br /&gt;
when the note credits nothing but this unit, its IRN is cancelled and the note marked&lt;br /&gt;
cancelled; past it a DBN with its own IRN is issued against the note&lt;br /&gt;
(CreditNoteService.issueReturnReversalDebitNote, stored as CN_CANCELLATION with no&lt;br /&gt;
margin month so the statement does not show it twice - the wallet REVERSAL is the&lt;br /&gt;
statement line); a note never filed at NIC is voided locally. Every local write happens&lt;br /&gt;
first and NIC last, so a refusal rolls the whole reversal back.&lt;br /&gt;
&lt;br /&gt;
fofo.return_reversal (return_reversal_20260921.sql) records each reversal and, unique&lt;br /&gt;
per return item, makes it once-only. Also adds cancelled=0 to the RETURNS_CN branches of&lt;br /&gt;
the account statement queries, without which a cancelled note keeps crediting the&lt;br /&gt;
statement - no current effect, no RETURNS note is cancelled today.&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/ReturnReversal.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/ReturnReversalRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/ReturnReversalRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CreditNoteRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/CreditNoteRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/InventoryService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/InventoryServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/ReturnReversalModel.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/ReturnReversalService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/inventory/ReturnReversalServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/CreditNoteService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/transaction/CreditNoteServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseInventoryService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseInventoryServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/return_reversal_20260921.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37776</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37776</guid></item>
<item><pubDate>Thu, 24 Sep 2026 18:54:23 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37769 – fix(movement): receive a movement invoice only against its own PO, ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 10 file(s) modified&lt;/strong&gt;&lt;br/&gt;fix(movement): receive a movement invoice only against its own PO, stop auto-closing movements, cancel reduces the PO line&lt;br /&gt;
&lt;br /&gt;
- GRN: movement invoice resolves invoice -&gt; orders -&gt; transaction -&gt; its own movement PO (or a receive-only PO&lt;br /&gt;
  from the billing warehouse); supplier/warehouse keyed at entry must match; scanned IMEIs must be the billed ones&lt;br /&gt;
- Cancelling an unbilled movement order takes its qty off the PO line; PO CLOSED/PRECLOSED once nothing is open&lt;br /&gt;
- reopenedAt removed (movements no longer auto-close); PO records createdBy&lt;br /&gt;
- SupplierStateResolver: a supplier&apos;s state is derived from its GSTIN on save&lt;br /&gt;
- sql: add_po_created_by (applied), drop_po_reopened_at (run AFTER fofo/cron/web deploy)&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/warehouse/WarehousePurchaseOrder.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InvoiceService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InvoiceServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/SupplierStateResolver.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/add_po_created_by_20260924.sql&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/drop_po_reopened_at_20260924.sql&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/warehouse&lt;br /&gt;+ /trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/warehouse/SupplierStateResolverTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37769</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37769</guid></item>
<item><pubDate>Thu, 24 Sep 2026 17:21:58 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37764 – feat(store-closure): require reason, remark and approval mail to close a ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(store-closure): require reason, remark and approval mail to close a store; mail closure report&lt;br /&gt;
&lt;br /&gt;
- fofo.store_closure audit table (reason, remark, approval document, closed_by); migration applied on hadb1&lt;br /&gt;
- StoreClosureService: validates and closes, queues closure report with approval attached to the&lt;br /&gt;
  partner&apos;s Sales L2, top 3 Sales levels, top Accounts level and the closer&lt;br /&gt;
- StoreAccess: single home for store close/deactivate/activate/extend-billing access lists;&lt;br /&gt;
  neeraj.gupta can close, mohit.gulati removed from extend billing&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/fofo/StoreClosure.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/fofo/StoreClosureReason.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/StoreClosureRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/fofo/StoreClosureRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/user/StoreAccess.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/user/StoreClosureService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/migration_store_closure.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37764</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37764</guid></item>
<item><pubDate>Wed, 23 Sep 2026 19:32:08 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37759 – LMS Call for App</title><description>&lt;div&gt;&lt;strong&gt;vikas – 10 file(s) modified&lt;/strong&gt;&lt;br/&gt;LMS Call for App&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/lms&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/lms/LeadDispositionRequest.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/LmsCallService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/LmsDispositionService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/LmsOutcome.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/LmsDashboardService.java&lt;br /&gt;+ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/LmsAppCallController.java&lt;br /&gt;+ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/V2LmsAppCallController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37759</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37759</guid></item>
<item><pubDate>Wed, 23 Sep 2026 19:21:04 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37753 – aging po approval process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;aging po approval process&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehousePoStockApprovalRepository.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37753</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37753</guid></item>
<item><pubDate>Wed, 23 Sep 2026 19:19:42 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37752 – today po rbm view showing only for l7 and above</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;today po rbm view showing only for l7 and above&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehousePoStockApprovalRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37752</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37752</guid></item>
<item><pubDate>Wed, 23 Sep 2026 18:50:55 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37750 – aging sku purchasing need to approval of niranjan kala sir</title><description>&lt;div&gt;&lt;strong&gt;ranu – 15 file(s) modified&lt;/strong&gt;&lt;br/&gt;aging sku purchasing need to approval of niranjan kala sir&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/warehouse/WarehousePurchaseOrder.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/CreateWarehousePurchaseOrderModel.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/ItemAgingStockByVendorModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/PurchaseOrderApprovalRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/PurchaseOrderApprovalRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PoStockApprovalDigestService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PoStockApprovalDigestServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderServiceImpl.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/java/com/spice/profitmandi/web/controller/warehouse/PoStockApprovalController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/warehouse/PurchaseOrderController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/warehouse-purchase.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/rbm-drr-dashboard.vm&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/warehouse-po-stock-approvals.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/warehouse-purchase-order-add-item.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37750</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37750</guid></item>
<item><pubDate>Wed, 23 Sep 2026 18:00:08 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37749 – Upload directory and Data correction for lead</title><description>&lt;div&gt;&lt;strong&gt;vikas – 14 file(s) modified&lt;/strong&gt;&lt;br/&gt;Upload directory and Data correction for lead&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/kommuno/RecordingService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/vbc/VbcDialerProvider.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/vbc/VbcTelephonyService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/LmsDashboardService.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LeadGeoLocationController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsDashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsDialerController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsLeadController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/resources/META-INF/dev.properties&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/resources/META-INF/prod.properties&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/resources/META-INF/staging.properties&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lms-dashboard-standalone.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37749</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37749</guid></item>
<item><pubDate>Mon, 21 Sep 2026 17:55:05 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37743 – LMS checklist for call</title><description>&lt;div&gt;&lt;strong&gt;vikas – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;LMS checklist for call&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/LmsDashboardService.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsDashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lms-dashboard-standalone.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37743</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37743</guid></item>
<item><pubDate>Mon, 21 Sep 2026 13:01:48 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37738 – LMS checklist for call</title><description>&lt;div&gt;&lt;strong&gt;vikas – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;LMS checklist for call&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/LeadCallAnswer.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/LeadCallQuestion.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadCallChecklistRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadCallChecklistRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/bootstrap/LeadCallChecklistBootstrap.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37738</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37738</guid></item>
<item><pubDate>Mon, 21 Sep 2026 12:59:40 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37737 – LMS checklist for call</title><description>&lt;div&gt;&lt;strong&gt;vikas – 14 file(s) modified&lt;/strong&gt;&lt;br/&gt;LMS checklist for call&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadActivityRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadActivityRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadCallRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadCallRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/TrialServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/meta/MetaLeadImportService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/LmsAssignmentService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/LmsDashboardService.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LeadController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsDashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsLeadController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lms-dashboard-standalone.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37737</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37737</guid></item>
<item><pubDate>Mon, 21 Sep 2026 12:33:17 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37732 – purchase return: look up the open return against a document ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 2 file(s) modified&lt;/strong&gt;&lt;br/&gt;purchase return: look up the open return against a document&lt;br /&gt;
&lt;br /&gt;
selectOpenByDocumentReference returns the return still outstanding against a&lt;br /&gt;
document reference - neither refunded nor rejected - or null when none is.&lt;br /&gt;
&lt;br /&gt;
Backs a duplicate guard on the invoice-return submit path: the same invoice was&lt;br /&gt;
being submitted twice, the closest pair eight seconds apart, and finance was&lt;br /&gt;
rejecting the extras by hand. A settled return deliberately does not count, since&lt;br /&gt;
rejecting a return is precisely what frees the invoice to be raised again.&lt;br /&gt;
&lt;br /&gt;
Repository lands first so the method exists before the caller uses it.&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;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37732</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37732</guid></item>
<item><pubDate>Mon, 21 Sep 2026 12:33:07 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37731 – Remove dead third-party integrations: dao  Nothing removed here had ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 39 file(s) modified&lt;/strong&gt;&lt;br/&gt;Remove dead third-party integrations: dao&lt;br /&gt;
&lt;br /&gt;
Nothing removed here had a live caller. No tables are touched.&lt;br /&gt;
&lt;br /&gt;
- Toffee Insurance client + models, and the tofee.* keys in shared-*.properties&lt;br /&gt;
- Bharti Assist (BAG) service and its certificate/brand models. BagPlanModel&lt;br /&gt;
  and PlanVariant stay in bharti/model: OneAssist and ICICI Lombard use them.&lt;br /&gt;
- Private, uncalled Toffee/BAG request builders in InsuranceServiceImpl&lt;br /&gt;
- Wiseapp insurance client and ZestResponseModel&lt;br /&gt;
- SmartPing client. CallDetailModel and PushCallLogModel move to&lt;br /&gt;
  kommuno/model because the Knowlarity webhooks still parse them.&lt;br /&gt;
- SpiceMoney SSO (2-partner pilot), Thriwe stub + DTOs, DTDC/Shipsy (demo&lt;br /&gt;
  URLs only), Blue Dart SOAP stubs, legacy Pine Labs v1 client&lt;br /&gt;
- FundFina pre-approval entity/repository, HyperTrack key entity/repository,&lt;br /&gt;
  affiliate Click entity/repository&lt;br /&gt;
- Speqtra SMS constant; aramex.tracking.url keys&lt;br /&gt;
- PAYU PAY entry in payment-options.json&lt;br /&gt;
&lt;br /&gt;
Gateway.MANDII and Gateway.FUNDFINA stay: historical fofo.payment rows.&lt;/div&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/dtr/Click.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/dtr/FundFinaPreApproval.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/dtr/HypertrackKey.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/dtr/HyperTrackKeyModel.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/thriwe&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/cs/CsServiceImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/ClickRepository.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/ClickRepositoryImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/FundFinaPreApprovalRepository.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/FundFinaPreApprovalRepositoryImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/HypertrackKeyRepository.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/HypertrackKeyRepositoryImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/dtdc&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/OtpProcessor.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/thriwe&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bharti/BAGService.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bharti/model/BAGInsuranceModel.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bharti/model/BrandModel.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bharti/model/CreateCertificateRequestModel.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bharti/model/CreateCertificateResponseModel.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bharti/model/Sample.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/bluedart&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/kommuno/model&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/kommuno/model/CallDetailModel.java &lt;i&gt;(copied from /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/smartping/model/CallDetailModel.java@37730)&lt;/i&gt;&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/kommuno/model/PushCallLogModel.java &lt;i&gt;(copied from /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/smartping/model/PushCallLogModel.java@37730)&lt;/i&gt;&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/kommuno/RecordingService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/pinelabs/PinelabsOrderService.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/PineLabsPaymentService.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/smartping&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/spicemoney&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/toffee&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/zest/InsuranceServiceImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/zest/WiseappInsuranceServiceImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/zest/WiseappWebService.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/zest/ZestResponseModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/META-INF/payment-options.json&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/shared-dev.properties&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/shared-prod.properties&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/shared-staging.properties&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37731</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37731</guid></item>
<item><pubDate>Mon, 21 Sep 2026 12:31:43 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37729 – lead: one workable lead per mobile, with a 6-month supersede ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 13 file(s) modified&lt;/strong&gt;&lt;br/&gt;lead: one workable lead per mobile, with a 6-month supersede and an L2+ override&lt;br /&gt;
&lt;br /&gt;
There was no choke point for lead creation. Ten sites did `new Lead()` across four&lt;br /&gt;
modules -- three in web&apos;s LeadController, two in V2FofoLeadController, three in fofo&apos;s&lt;br /&gt;
LeadController, one in TrialServiceImpl and one in the cron LeadSyncRunner -- and only&lt;br /&gt;
ONE of them (fofo /createLead) checked for an existing lead at all. Result on live data:&lt;br /&gt;
5,137 mobiles carrying duplicate leads over 12,156 rows, worst case 29 on one number,&lt;br /&gt;
and two agents unknowingly working the same shop.&lt;br /&gt;
&lt;br /&gt;
THE RULE, in new LeadCreationService, which all ten now route through:&lt;br /&gt;
&lt;br /&gt;
  no active lead on the number      -&gt; create&lt;br /&gt;
  active, last activity &gt;= 6 months -&gt; retire the old one, create the new one, SILENTLY&lt;br /&gt;
  active, last activity &amp;lt;  6 months -&gt; BLOCK; only an L2+ user may override&lt;br /&gt;
&lt;br /&gt;
Active = status in (pending, followUp) AND the assignee is still an active auth_user.&lt;br /&gt;
Last activity = GREATEST(lead.updated/created, MAX(lead_activity.created)).&lt;br /&gt;
&lt;br /&gt;
The stale branch is deliberately quiet. A shop enquiring again after six months is a&lt;br /&gt;
handover, not a clash, and mailing on it would train the desk to ignore the alert -- so&lt;br /&gt;
only a genuine collision notifies. Live split: 195 stale against 1,241 fresh, and roughly&lt;br /&gt;
three blocks a month.&lt;br /&gt;
&lt;br /&gt;
WHY &quot;ACTIVE&quot; ALSO MEANS A LIVE OWNER&lt;br /&gt;
&lt;br /&gt;
331 open leads are assigned to 11 DEACTIVATED accounts (157 to &lt;a href=&quot;mailto:sm@smartdukaan.com&quot;&gt;sm@smartdukaan.com&lt;/a&gt; alone,&lt;br /&gt;
whose newest lead is from 2022). Counting them as active would block fresh enquiries&lt;br /&gt;
behind an account nobody can log in to and therefore nobody can close. Requiring a live&lt;br /&gt;
owner defuses all 331 without retiring a single row. Retirement here is only ever&lt;br /&gt;
REACTIVE -- triggered by a new entry on the same number. Nothing runs on a schedule.&lt;br /&gt;
&lt;br /&gt;
ASSUMPTION worth flagging: a superseded lead becomes status=notInterested (stage DROPPED)&lt;br /&gt;
with closure_timestamp and reason &apos;Superseded after 6 months inactivity&apos;, rather than a&lt;br /&gt;
new `expired` status. &quot;Closed&quot; is an explicit allow-list in the UI --&lt;br /&gt;
Arrays.asList(notInterested, finalized) at V2FofoLeadController:150 and fofo&lt;br /&gt;
LeadController:313 -- and there are ~107 references to specific LeadStatus values, so a&lt;br /&gt;
new enum value would make these leads vanish from BOTH the open and closed screens.&lt;br /&gt;
Stage DROPPED keeps the nuance (the shop never said no) and still maps to notInterested&lt;br /&gt;
via LeadStage.toLegacyStatus().&lt;br /&gt;
&lt;br /&gt;
OVERRIDE is L2+ in ANY team, not Call Center only: Sales L1 owns 1,063 of the 1,776 open&lt;br /&gt;
leads, so a Call-Center-only gate would funnel every team&apos;s collisions through three&lt;br /&gt;
people. The MAIL still goes to Call Center L2+, resolved from cs.position at send time&lt;br /&gt;
rather than hardcoded. An override is a TAKEOVER -- it closes the existing lead -- because&lt;br /&gt;
a second live lead is the exact thing the rule exists to prevent.&lt;br /&gt;
&lt;br /&gt;
UNATTENDED CALLERS (cron sync, CSV upload, trial registration, AI intake) have nobody to&lt;br /&gt;
offer an override to, so they use createUnattended: skip the colliding row and mail the&lt;br /&gt;
desk rather than throwing. CSV reports imported/duplicateSkipped/duplicateMobiles back to&lt;br /&gt;
the operator instead of failing the whole file over one number.&lt;br /&gt;
&lt;br /&gt;
ALSO FIXES selectByMobileNumber, which called getSingleResult and therefore threw&lt;br /&gt;
NonUniqueResultException on any mobile with more than one lead -- GlitchTip #99 and #1359,&lt;br /&gt;
both still firing. It now prefers the open lead, then the most recently touched.&lt;br /&gt;
&lt;br /&gt;
NOT INCLUDED, deliberately: no DB unique constraint. 10 mobiles already carry more than&lt;br /&gt;
one open lead and would have to be resolved by hand first, which conflicts with the&lt;br /&gt;
no-auto-retirement rule. The service enforces the invariant going forward.&lt;br /&gt;
&lt;br /&gt;
NEEDS A DBA STEP: user.lead.mobile is unindexed on 37,580 rows, so this check is a full&lt;br /&gt;
scan on every create. Index DDL is in the accompanying note; it has NOT been applied.&lt;/div&gt;~ /trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/scheduled/leadsync/LeadSyncRunner.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/CreateRefferalRequest.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/lead&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/lead/LeadCreationService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/lead/LeadCreationServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/lead/LeadDuplicateDecision.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/lead/LeadDuplicateNotifier.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/TrialServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LeadController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/LeadController.java&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoLeadController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37729</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37729</guid></item>
<item><pubDate>Fri, 18 Sep 2026 17:14:46 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37722 – Movement PO availability: list stock arriving into the sending warehouse, ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 6 file(s) modified&lt;/strong&gt;&lt;br/&gt;Movement PO availability: list stock arriving into the sending warehouse, per PO&lt;br /&gt;
&lt;br /&gt;
The popup showed in stock, promised and can-move, but not stock on its way in once it was&lt;br /&gt;
fully promised - so UP to Noida read &apos;in stock 0, promised 4, can move 0&apos; with the 4 units&lt;br /&gt;
arriving on PO 54031 nowhere, and looked wrong. It now reads as a sum:&lt;br /&gt;
in stock + arriving - promised = can move.&lt;br /&gt;
&lt;br /&gt;
- selectOpenInboundPurchases: open POs into the warehouse, one row per PO, same filter as the&lt;br /&gt;
  pending-stock layer so the rows add up to the arriving total&lt;br /&gt;
- InternalMovementAvailabilityModel: arrivingTotal (before holds) + arriving breakup;&lt;br /&gt;
  inbound (after holds) unchanged, still used by the refusal message&lt;br /&gt;
- describeAvailability (single + batch) carries both; batch doc: quantities are no longer&lt;br /&gt;
  checked at bulk upload, the screen flags them and order creation enforces them&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/InternalMovementAvailabilityModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/MovementCommitmentModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehouseInventoryItemRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehouseInventoryItemRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InternalMovementPricingService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InternalMovementPricingServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37722</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37722</guid></item>
<item><pubDate>Fri, 18 Sep 2026 05:07:16 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37715 – SD credit: stop read paths writing utilized_limit - the SD ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;SD credit: stop read paths writing utilized_limit - the SD Credit admin page and V2 getLoans mutated managed SDCreditRequirement entities to show recomputed utilization, so Hibernate dirty-checking flushed an UPDATE per partner at commit; fofo now feeds the view from display maps and getLoans detaches before the display write, leaving output identical&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-fofo/src/main/java/com/spice/profitmandi/web/controller/SDCreditController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/sd-credit-requirement-row.vm&lt;br /&gt;~ /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/v2/controller/fofo/V2FofoSDCreditController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37715</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37715</guid></item>
<item><pubDate>Fri, 18 Sep 2026 04:37:25 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37709 – Cancelling a movement&apos;s last order now closes its purchase order ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;Cancelling a movement&apos;s last order now closes its purchase order&lt;br /&gt;
&lt;br /&gt;
An internal movement is raised as a purchase order and a transaction together, but only the&lt;br /&gt;
transaction was ever cancelled. The PO stayed open and read as live work until the auto-close&lt;br /&gt;
sweep aged it out days later - and that sweep writes CLOSED, which is what a PO that actually&lt;br /&gt;
received its stock gets. Eight movements raised between 15 and 17 September sat this way, 59&lt;br /&gt;
units and Rs 10.68 lakh, every one cancelled the same day it was raised because the model or&lt;br /&gt;
colour was discontinued.&lt;br /&gt;
&lt;br /&gt;
refundOrder now pre-closes the movement PO once every order on its transaction is refunded -&lt;br /&gt;
every one, because a transaction can carry several and the movement is only over when the last&lt;br /&gt;
goes. PRECLOSED, not CLOSED: nothing was received, and the difference is what keeps it&lt;br /&gt;
distinguishable from a real completion in every report that reads the status.&lt;br /&gt;
&lt;br /&gt;
Refunds reaching here are already validated as never billed, so no dispatched stock is involved&lt;br /&gt;
and nothing is closed out from under stock in transit. Both lookups it needs already existed.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37709</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37709</guid></item>
<item><pubDate>Fri, 18 Sep 2026 04:20:00 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37706 – cart: take the cart row before any line, to break ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 5 file(s) modified&lt;/strong&gt;&lt;br/&gt;cart: take the cart row before any line, to break a lock-ordering deadlock&lt;br /&gt;
&lt;br /&gt;
InnoDB was rolling back cart edits with &quot;Deadlock found when trying to get lock&quot;&lt;br /&gt;
(GlitchTip #53, 27 deadlocks) and losing others to OptimisticLockException&lt;br /&gt;
&quot;actual row count: 0; expected: 1&quot; (11 issues, 42 events). Both are the same cause.&lt;br /&gt;
&lt;br /&gt;
Two request paths took the same two rows in OPPOSITE orders. Adding a line INSERTs&lt;br /&gt;
into user.line, and line_cart_id_fk shared-locks the parent cart FIRST, line second.&lt;br /&gt;
Validation/hydration mutated the line rows FIRST and wrote cart.total_price second.&lt;br /&gt;
Run those concurrently on one cart and it is a cycle. Caught in the act on prod:&lt;br /&gt;
&lt;br /&gt;
  T1: INSERT user.line (cart_id=175180781)  -&gt; holds S on cart, waits S on line&lt;br /&gt;
  T2: UPDATE user.cart SET total_price=269340.0, version=175 WHERE version=174&lt;br /&gt;
                                            -&gt; holds X on line, waits X on cart&lt;br /&gt;
  *** WE ROLL BACK TRANSACTION (1)&lt;br /&gt;
&lt;br /&gt;
Fix is to give every mutating path one order: cart, then lines. CartRepository gains&lt;br /&gt;
selectByIdForUpdate, and it is called as the first statement of each path that writes&lt;br /&gt;
a cart line. Re-taking it inside one request is a no-op.&lt;br /&gt;
&lt;br /&gt;
A lock-ordering fix is all-or-nothing -- one path in the wrong order is enough to&lt;br /&gt;
re-form the cycle -- so this covers ALL TEN cart-line writers, not just the two that&lt;br /&gt;
happened to show up in the stack traces: createCartItem, clearCart, getCartValidation,&lt;br /&gt;
addItemsToCart (x2), addShoppingBag, validateForOpen (x2) and V2BillingController&apos;s&lt;br /&gt;
bind/unbindInsurance. The audit is worth re-running before adding another writer.&lt;br /&gt;
&lt;br /&gt;
Note validateForOpen and getCartValidation WRITE despite their names (they correct&lt;br /&gt;
cart_line quantity/price and roll up cart.total_price), which is why a &quot;validate&quot; call&lt;br /&gt;
was ever holding write locks. The lock is placed accordingly; making those genuinely&lt;br /&gt;
read-only is a separate, larger change.&lt;br /&gt;
&lt;br /&gt;
This also serialises concurrent edits to the SAME cart, which is what the @Version&lt;br /&gt;
column on Cart was already trying and failing to express. Different carts are&lt;br /&gt;
different rows, so there is no cost across partners.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/CartServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/cart/v2/CartValidationServiceImpl.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/src/main/java/com/spice/profitmandi/web/v2/controller/V2BillingController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37706</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37706</guid></item>
<item><pubDate>Fri, 18 Sep 2026 01:05:17 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37700 – Internal movement: order against expected stock, and stop reserving lines ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 3 file(s) modified&lt;/strong&gt;&lt;br/&gt;Internal movement: order against expected stock, and stop reserving lines that can no longer ship&lt;br /&gt;
&lt;br /&gt;
Two rules changed, both about stock that was being treated as unavailable when it is not.&lt;br /&gt;
&lt;br /&gt;
Stock still to arrive now counts toward what a movement order can be raised for. A movement is&lt;br /&gt;
planned against what the warehouse will hold, so the order is raised now and dispatched once the&lt;br /&gt;
stock lands; previously a warehouse holding only inbound stock refused outright, even though the&lt;br /&gt;
receipt was already on an open order.&lt;br /&gt;
&lt;br /&gt;
A purchase order line stops reserving stock once its own order moves past being submitted for&lt;br /&gt;
processing. Billed or shipped means the units have already come off the shelf; cancelled means&lt;br /&gt;
the line can never dispatch them. Holding either back a second time hid stock that was genuinely&lt;br /&gt;
free - on prod, 660 of 675 reserved units were on lines whose orders had already moved on. A line&lt;br /&gt;
whose order has not been raised at all is still a live promise and keeps its hold, and a line is&lt;br /&gt;
held only for the quantity still sitting in an in-process order, so a partly-shipped order&lt;br /&gt;
releases the rest.&lt;br /&gt;
&lt;br /&gt;
priceFor and describeAvailability continue to read stock through one shared examine(), so what is&lt;br /&gt;
shown while choosing a quantity stays exactly what the order is created against.&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/InternalMovementPriceModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehouseInventoryItemRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InternalMovementPricingServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37700</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37700</guid></item>
<item><pubDate>Thu, 17 Sep 2026 22:45:33 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37696 – Internal movement: report what a warehouse can actually send, not ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 6 file(s) modified&lt;/strong&gt;&lt;br/&gt;Internal movement: report what a warehouse can actually send, not just refuse on submit&lt;br /&gt;
&lt;br /&gt;
The quantity a movement order can take was only discovered by submitting the order and being&lt;br /&gt;
refused. The stock reading that decides it already computed everything needed to say so in&lt;br /&gt;
advance - what is on the shelf, what older orders have promised, what is still arriving - and&lt;br /&gt;
then discarded it.&lt;br /&gt;
&lt;br /&gt;
selectOpenOutboundCommitments returns those promises one row per order, with the PO number,&lt;br /&gt;
PO date and destination, instead of a single summed quantity. applyOutboundCommitments now&lt;br /&gt;
aggregates those rows and behaves exactly as before, so no extra query is run.&lt;br /&gt;
&lt;br /&gt;
describeAvailability answers with the price plus that working. It shares one stock reading with&lt;br /&gt;
priceFor via examine(), so the cap shown while choosing a quantity and the cap enforced on&lt;br /&gt;
submit cannot drift apart. Unlike pricing it reports rather than refuses: stock that is entirely&lt;br /&gt;
promised comes back as zero movable with the orders holding it named, which is what lets someone&lt;br /&gt;
chase an abandoned order rather than only see a smaller number.&lt;/div&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/InternalMovementAvailabilityModel.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/MovementCommitmentModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehouseInventoryItemRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehouseInventoryItemRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InternalMovementPricingService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InternalMovementPricingServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37696</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37696</guid></item>
<item><pubDate>Thu, 17 Sep 2026 18:19:28 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37694 – feat(warehouse): record where stock came from and what it cost; ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 11 file(s) modified&lt;/strong&gt;&lt;br/&gt;feat(warehouse): record where stock came from and what it cost; price internal movements at that cost&lt;br /&gt;
&lt;br /&gt;
- inventoryItem.origin_vendor_id / receipt_unit_cost and lineitem.origin_vendor_id (sql/add_inventory_cost_layer_20260917.sql, applied on prod 2026-09-17 in 75s): GRN copies both from the PO line it arrived on, so origin survives any number of hops and non-serialised stock keeps it too. Unknowable origin stays NULL - never a guess, never an internal supplier&lt;br /&gt;
- A movement now moves stock at the cost it was received at, not the origin vendor&apos;s current catalog TP. Layers are grouped by cost; a quantity spanning two costs is refused with both numbers, since a PO line carries one price&lt;br /&gt;
- Stock already promised on open outbound movement orders is no longer offered again (176 item/warehouse pairs on prod are fully promised today)&lt;br /&gt;
- Stock on open inbound POs is offered for planning at that order&apos;s price and reported as &apos;on the way in&apos;, but cannot be dispatched until received; the PO item picker lists those items too&lt;br /&gt;
- Backfill: 4,010 of 4,646 in-stock rows on prod got origin and cost; 636 stay unknown and are priced from the latest approved external catalog price as before&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/warehouse/WarehouseInventoryItem.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/warehouse/WarehouseLineItem.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/InternalMovementAllocationModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/InternalMovementPriceModel.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehouseInventoryItemRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehouseLineItemRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/warehouse/WarehouseLineItemRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InternalMovementPricingServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/WarehouseServiceImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/resources/sql/add_inventory_cost_layer_20260917.sql&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37694</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37694</guid></item>
<item><pubDate>Thu, 17 Sep 2026 18:12:13 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37692 – LMS + Airtel Calling</title><description>&lt;div&gt;&lt;strong&gt;vikas – 9 file(s) modified&lt;/strong&gt;&lt;br/&gt;LMS + Airtel Calling&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/LmsDashboardService.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsDashboardController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsLeadController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/lms-dashboard.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/include-scripts.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lead-record.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lms-dashboard-standalone.vm&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37692</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37692</guid></item>
<item><pubDate>Wed, 16 Sep 2026 18:48:33 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37664 – loi new revival process</title><description>&lt;div&gt;&lt;strong&gt;ranu – 1 file(s) modified&lt;/strong&gt;&lt;br/&gt;loi new revival process&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/LoiFormRepositoryImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37664</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37664</guid></item>
<item><pubDate>Wed, 16 Sep 2026 17:50:44 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37660 – ticket download option given and some enhancement on notification panel</title><description>&lt;div&gt;&lt;strong&gt;ranu – 7 file(s) modified&lt;/strong&gt;&lt;br/&gt;ticket download option given and some enhancement on notification panel&lt;/div&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/AgreementEsignRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/AgreementEsignRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/StoreTimelinetbRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/StoreTimelinetbRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/service/loiForm/LoiFormServiceImpl.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LoiFormController.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/PartnerOnBoardingPanelController.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37660</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37660</guid></item>
<item><pubDate>Wed, 16 Sep 2026 15:13:38 +0530</pubDate><dc:creator>vikas</dc:creator><title>Rev 37651 – LMS click to call</title><description>&lt;div&gt;&lt;strong&gt;vikas – 63 file(s) modified&lt;/strong&gt;&lt;br/&gt;LMS click to call&lt;/div&gt;~ /trunk/profitmandi-dao/build.gradle&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/config/AsyncConfig.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/auth/VonageAgent.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/LeadActivity.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/LeadCall.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/LeadDnd.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/LeadRecordingAccess.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/MetaLead.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/MetaLeadImport.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/dtr/LeadCallProvider.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/dtr/LeadCallStatus.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/dtr/MetaLeadDistribution.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/enumuration/dtr/MetaLeadOutcome.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/auth/VonageAgentRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/auth/VonageAgentRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadCallRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadCallRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadDndRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadDndRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRecordingAccessRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRecordingAccessRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepository.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/LeadRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/MetaLeadRepository.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/dtr/MetaLeadRepositoryImpl.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/vbc&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/vbc/VbcDialerProvider.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/vbc/VbcTelephonyService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/vbc/VbcTokenService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/VonageDialerProvider.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/VonageJwtService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/integrations/vonage/VonageVoiceService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/LmsDialerProvider.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/meta&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/meta/MetaLeadFileParser.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/meta/MetaLeadImportService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/meta/MetaLeadRow.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/RecordingAccessService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/RecordingArchiveService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/RecordingArchiveWorker.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/LmsDashboardService.java&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/storage&lt;br /&gt;+ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/storage/ObjectStoreService.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/shared-prod.properties&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/resources/shared-staging.properties&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/config/WebConfig.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsDashboardController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsDialerController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsLeadController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/LmsRecordingController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/MetaLeadImportController.java&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/service/RecordingArchiveScheduler.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/util/CatalogMonitorTypeCsvValidator.java&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/resources/META-INF/env.property&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/resources/js/lead.js&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/admin.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/edit-lead.vm&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lead-record.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/lms-dashboard-standalone.vm&lt;br /&gt;+ /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/meta-lead-import.vm&lt;br /&gt;~ /trunk/profitmandi-fofo/src/test/java/com/spice/profitmandi/web/util/CatalogMonitorTypeCsvValidatorTest.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37651</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37651</guid></item>
<item><pubDate>Wed, 16 Sep 2026 09:28:09 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37648 – Retire user.counter / user.privatedealuser write path  Partner GST moved ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 11 file(s) modified&lt;/strong&gt;&lt;br/&gt;Retire user.counter / user.privatedealuser write path&lt;br /&gt;
&lt;br /&gt;
Partner GST moved to fofo.fofo_store.gst_number in the Feb-2026 migration; counter.gstin&lt;br /&gt;
has had no reader since (Counter.getGstin() had no callers) and privatedealuser is only&lt;br /&gt;
read to decide its own insert-vs-update. Both were write-only bookkeeping.&lt;br /&gt;
&lt;br /&gt;
- RetailerServiceImpl: drop createPrivateDealUser/createCounter and their two call sites&lt;br /&gt;
- MigrationUtil.migrateUserToRetailer: drop the same legacy block&lt;br /&gt;
- Delete Counter / PrivateDealUser / PrivateDealUserAddressMapping entities + repositories&lt;br /&gt;
&lt;br /&gt;
No reader is affected: the 240 Reportico reports on static0 reference neither table&lt;br /&gt;
(the &apos;counter&apos; hits are fofo_store.counter_size). Tables stay in place until this is&lt;br /&gt;
deployed, then get renamed out of the way.&lt;/div&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/Counter.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/PrivateDealUser.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/user/PrivateDealUserAddressMapping.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/CounterRepository.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/CounterRepositoryImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/PrivateDealUserAddressMappingRepository.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/PrivateDealUserAddressMappingRepositoryImpl.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/PrivateDealUserRepository.java&lt;br /&gt;x /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/PrivateDealUserRepositoryImpl.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/util/MigrationUtil.java&lt;br /&gt;~ /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/user/RetailerServiceImpl.java&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37648</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-dao%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fdao%2Frepository%2F&amp;isdir=1&amp;rev=37648</guid></item>
</channel></rss>