| Rev |
Age |
Author |
Path |
Log message |
Diff |
| 37840 |
3 d 14 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ |
fix(offers): select month offers by date overlap so multi-month offers show in price circular
selectAll(YearMonth) kept an offer only if its start or end date fell in the month,
so an offer running Sep 24 -> Nov 15 (e.g. 10378) was missing from October's price
circular, partner offer view and getMonthOfferIds. Now start <= month end AND
end >= month start. Offer cache eviction (edit + bulk create) clears every month
the offer covers instead of only the start month. |
|
| 37805 |
9 d 23 h |
amit |
/trunk/profitmandi-dao/src/main/ |
fix(catalog): trim f_ colour prefix space; age delisted listings from last activation
- Item.normalizeColor drops the space after f_ on every write (upload sheets typed
'f_ Black', which read ' Black' everywhere); ItemLoaderService uses it so the
duplicate-colour check compares the clean value
- tag_listing.last_activated, stamped by TagListing.setActive on off->on;
updateActiveById now goes through the entity (+flush) so the toggle stamps it
- delist cron + SQL script age a listing from GREATEST(start_date, last_activated),
so a re-activated listing is not delisted again the next morning
- migrations: add_tag_listing_last_activated_20260929.sql, fix_item_color_prefix_space_20260929.sql
(both applied on hadb1 2026-09-29; 174 items trimmed, 36830 excluded - clashes with 37089) |
|
| 37782 |
13 d 12 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/ |
fix(catalog): add serializedOnly overloads of selectAllItems/selectAllBrands
r37776 committed InventoryServiceImpl calling the 3-arg selectAllItems and
selectAllBrands, but the repository overloads and the named-query parameters
they bind were left uncommitted, so a build from trunk failed.
serializedOnly = true restricts the model/brand pickers to IMEI items; the
2-arg forms delegate with false, unchanged behaviour. |
|
| 37640 |
23 d 9 h |
amit |
/trunk/profitmandi-dao/src/ |
Hot Deal brand: brand-driven membership, model_hot_deal reduced to attributes + oem_brand + oem_catalog_id, migration SQL |
|
| 37634 |
23 d 10 h |
amit |
/trunk/profitmandi-dao/src/main/ |
feat(pricing): tag_listing price change log; retire vendoritempricing writes/reads in dao; price drops no longer touch vendor catalog pricing
- New catalog.tag_listing_price_log (sql/create_tag_listing_price_log_20260915.sql, applied on prod 2026-09-15) + TagListingPriceService: the single setter for tag_listing DP/MOP/MRP, logging old/new values, source and user
- Remove applyPriceDrop (r37622): price drops write only price_drop + tag_listing; sql/revert_price_drop_vendor_catalog_pricing_20260915.sql restores the 30 rows it wrote (run on prod)
- VendorCatalogPricingService: reference TP = latest approved external TP (single + batched); internal suppliers rejected on create, bulk upload and approval
- Stop copying pricing into vendoritempricing on approval and item upload; tag listing detail TP from reference TP; indent DP from tag_listing only |
|
| 37563 |
29 d 0 h |
amit |
/trunk/profitmandi-dao/src/main/ |
Filter delisted SKUs out of creation pickers; add rolling 24m delist migration
Creation screens could offer items whose catalog.tag_listing.active = 0:
- Item.selectAllModels (scheme/offer model dropdown) joined tag_listing with
no active predicate. Adding tl.active = true also gives the model-level
rollup, since callers dedupe to catalogItemId: a model whose colours are
all inactive now yields no rows, one keeping a listed colour stays.
- The shared partner item picker had no active filter at all. Added a second
basis via getAllPartnerItemStringDescription(anyColor, activeOnly);
activeOnly participates in the fofoItems cache key so the two bases cannot
serve each other's cached results. Default stays false for screens that
inspect or edit existing records.
- New TagListing.selectActiveItemIds named query backs the filter.
Also adds the rolling 24-month delist migration: zero stock both sides, no
outstanding vendor PO (status IN (1,2), external supplier, unfulfilled > 0 --
INIT is excluded as it is a drawer of stale drafts), and re-categorises
fully-dark mobile models to OTHER. Idempotent, audited, rollback documented. |
|
| 37500 |
37 d 11 h |
ranu |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/ |
sales target and achievement added cron and flags |
|
| 37499 |
37 d 11 h |
ranu |
/trunk/ |
sales target and achievement added cron and flags |
|
| 37276 |
59 d 15 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ |
Hot deals Solr: derive hot_deal_b from model_hot_deal active windows at index time (full push, single-catalog update, parent + child docs) - catalog.model_hot_deal is the only source, tag_listing.hot_deals no longer read; drop unused tag_listing write-through methods; syncHotDealFlags javadoc reflects reindex-based daily sync |
|
| 37275 |
59 d 15 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/ |
Add ModelHotDeal window-boundary and active catalog-id lookups
r37268 committed the ModelHotDealServiceImpl call to
selectWindowBoundaryCatalogIds but not the repository declaration or
implementation, breaking the trunk build with 'cannot find symbol'.
Adds both methods:
- selectWindowBoundaryCatalogIds(today): catalog ids whose deal window opens
today or closed yesterday, i.e. the models whose hot_deal_b flips at
midnight and need a Solr re-index.
- selectActiveCatalogIds(today): catalog ids with a deal live on the given
date, the Solr hot_deal_b source (caller in FofoSolr still pending). |
|
| 37271 |
59 d 16 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/ |
Add selectMappingByCatalogIdAndSuperCatalogId to SuperCatalogMappingRepository
Lookup by the (catalogId, superCatalogId) pair so the super-catalog save
flow can detect an existing mapping instead of always inserting. |
|
| 37261 |
62 d 10 h |
ranu |
/trunk/ |
hot deal show all items |
|
| 37254 |
63 d 11 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ |
feat: hot-deals admin search/pagination + tag_listing.hot_deals write-through and daily sync
- searchAllWithCatalog/countSearchAll: all-brands deal listing joined with
Catalog (brandName transient), server-side search on model/brand, paginated
- add/removeDeal write through to tag_listing.hot_deals (Solr hot_deal_b
source) and publish a re-index event (prod-gated in TagListingChangeListener)
- syncHotDealFlags: daily reconcile of date-windowed model_hot_deal into
tag_listing.hot_deals so deal windows start/expire on time |
|
| 37244 |
63 d 16 h |
amit |
/trunk/profitmandi-dao/src/ |
Hot deal attributes: five mandatory fields (warranty_months 0-12, item_condition NEW/OPEN_BOX/REFURBISHED, activated, finance_mapping, affordability) on model_hot_deal - entity+enum+attributes holder, service validation (no defaults), addDeal/updateDeal signatures, selectActiveByCatalogItemIds/selectAllActive repo queries, hotDealTags on FofoCatalogResponse, DDL script, tests (14 green) |
|
| 37242 |
64 d 8 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/ |
Reject non-18% GST rates for TV categories (14202/14203) in addStateGstRates - GST 2.0 makes all TVs 18% regardless of screen size; guards item-loader sheets and Taxation CSV upload from re-introducing 28% |
|
| 37211 |
65 d 14 h |
amit |
/trunk/profitmandi-dao/src/ |
Hot Deals: model_hot_deal entity, repository and service with 15-active-per-brand cap, duplicate-active and date validation |
|
| 37204 |
65 d 15 h |
amit |
/trunk/profitmandi-dao/src/ |
external api v2: category spec + client category entities, cached category exposure, title util, item.brand_identifier, ContentPojo categoryId/categorySpecs |
|
| 37098 |
84 d 15 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/ |
Align CatalogRepository.selectCatalog signature with impl param order (brand, modelNumber, modelName)
Interface declared (brand, modelName, modelNumber) while CatalogRepositoryImpl
binds equalsMap keys off its own params (brand, modelNumber, modelName). The lone
caller, ItemLoaderService.addItem, passes impl order, so lookups worked by accident.
Any new caller trusting the interface signature would have silently swapped
modelName/modelNumber and minted phantom catalogs on lookup miss.
Names only; binary signature (String,String,String) is unchanged, so behaviour and
all callers are unaffected. |
|
| 37033 |
93 d 12 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/catalog/ |
Offer report: treat catalogIds as authoritative in item criteria
When an offer item criteria specifies catalogIds, match exactly those catalog
ids and skip the brand/category(smartWatch,led)/hsn(smartPhone,featuredPhone)
filters. Previously smartWatch/led ANDed a categoryId filter unconditionally, so
a catalog wrongly flagged smartWatch (e.g. Oppo ENCO Buds, offer 9661) matched
zero items and the download report came back empty despite real purchases. |
|
| 36971 |
100 d 7 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/ |
Surface active flagship models as a 'flagship' Solr label (prepended, shows first) in catalog indexing; add no-arg selectActiveFlagshipCatalogIds |
|