| Rev |
Age |
Author |
Path |
Log message |
Diff |
| 37854 |
2 d 18 h |
amit |
/trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/ |
fix(dashboard): label Total/All Regions rows from screen warehouseMap, fall back to warehouseNames (r37846 regression showed raw $warehouseNames.get) |
|
| 37846 |
3 d 0 h |
amit |
/trunk/profitmandi-fofo/src/main/ |
feat(warehouse): dashboards list ACTIVE warehouses only, warehouse-team screens ACTIVE+SUSPENDED (from BillingWarehouseService, WAREHOUSE_MAP gone); global $warehouseNames for labels of data rows in any state; Sellers & Warehouses screen: all-warehouse overview with status tabs, 3-state status, rename, stock/unshipped orders/stores/mapping usage, send stock alert; partner zone offers active warehouses only; brand stock 'All' = active warehouses (replaces r37838 loop); jsVersion 442 |
|
| 37651 |
22 d 4 h |
vikas |
/trunk/ |
LMS click to call |
|
| 37526 |
35 d 1 h |
amit |
/trunk/profitmandi-fofo/src/ |
offer circular: scope config screen, resolve screen, web offer sync (fofo)
Screens (each its own endpoint, under the OFFER CIRCULAR menu):
- /offerCircularScope - add/edit divisions, take a brand in or out of scope,
register label aliases. 'Remove' is in_scope=0 + a required reason, never a
DELETE: offer.division_id is an FK and the history would go with it.
- /offerCircularResolve - the product queue, split out of the review screen. The
editor was a <td colspan=6> pretending to be a form, which is why it never
aligned; it is now master-detail. Naming and Coverage are separate tabs because
an alias cannot answer a bundle at all - the coverage panel says so and offers
the two answers that ARE safe (ignore, or reclassify as naming).
Ingest:
- ScopeConfig resolves division aliases and carries the canonical label on
Decision. insertOffer and ProductAliases.find use it; offer_raw_row keeps the
verbatim label, being the source of truth for re-parsing.
- CircularIngestRunner publishes to dtr.web_offer after the document is marked
PUBLISHED, in its own transaction with exceptions swallowed - a circular that
parsed correctly must stay published even if the web sync fails.
Review screen:
- the ingest summary was a raw Map.toString() inside a nowrap span and ran off
the card; now parsed into chips with the drop reasons behind a disclosure.
jsVersion -> 417 (merged with r37525's 412; cssVersion 53 kept from that commit). |
|
| 37394 |
43 d 23 h |
ranu |
/trunk/ |
total show on warehouse wise stock value on item detail |
|
| 37374 |
49 d 0 h |
ranu |
/trunk/ |
total show on warehouse wise stock value on item detail |
|
| 37331 |
51 d 19 h |
amit |
/trunk/profitmandi-fofo/src/main/ |
Add offer circular review and curation screen
Shows the nine verbatim PDF columns beside what the parser made of them, uploads a
new monthly circular, and resolves the products the matcher could not.
Upload deliberately does not parse - it stores the PDF, sha256-deduped, and
registers it DRAFT, so an upload can never half-populate the offer tables. The cron
ingest job picks it up from there.
The curation queue groups by distinct (division, raw text) because that is the
product_alias key: one answer clears every row carrying that text, on this circular
and on every later one. On the Aug'26 circular that turns 152 unresolved rows into
106 decisions. Three actions mirror product_alias.action - PIN to a catalog id,
REWRITE to the catalog's spelling and match again, or IGNORE.
- Writes product_alias only, so nothing the screen does can set manually_curated
and lock a circular against re-ingest. Coverage decisions, which do need that,
are listed but visibly parked rather than offered a naming answer.
- A saved decision changes nothing until re-ingest, because aliases are read at
ingest time; the queue says so and the re-ingest button puts the document back
to DRAFT for the scheduler. The portal cannot run the ingest itself - that lives
in profitmandi-cron, which fofo does not depend on.
- The closest rejected match is shown for context and never pre-selected. Four new
OnePlus models each "nearly" matched a 2015 OnePlus 2 at 0.80-0.84, and offering
that as a suggestion invites a reviewer to confirm it. Where the catalog has no
such SKU the search says so and steers to IGNORE.
- aliasExport emits every decision as replayable SQL, because the portal writes to
one database and environments would otherwise drift apart silently.
Access is an email allowlist AND the admin role. Both are enforced in the
controller; the sidebar entry repeats the allowlist because visibility in auth.menu
is role-driven and cannot express a per-email rule.
No jsVersion bump: offer-circular-review.js is a new file that was never cached,
so it needs no cache-buster, and churning that shared counter only conflicts with
whoever is mid-edit on it. |
|
| 37006 |
97 d 0 h |
ranu |
/trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/ |
new app v2 version access to rbm |
|
| 36681 |
135 d 6 h |
ranu |
/trunk/ |
beat plan info commit |
|
| 36597 |
142 d 3 h |
amit |
/trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/ |
Add HOME menu item as first entry in left sidebar for both admin and partner dashboards |
|
| 36570 |
145 d 5 h |
amit |
/trunk/profitmandi-fofo/src/main/webapp/ |
Fix header/content layout: header pinned top:0 left:180px, wrapper block+border-box, dashboard zoom on wrapper only, visible menu arrows, accessories tile aligned with brand tiles |
|
| 36566 |
145 d 5 h |
amit |
/trunk/profitmandi-fofo/src/main/ |
UI modernization: sidebar redesign with CSS transitions, distinct menu icons, ellipsis overflow, flexbox header, HTML cleanup, improved text contrast |
|
| 36201 |
185 d 0 h |
vikas |
/trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/ |
Chatbot for RBM only: Inject SmartChat |
|
| 36195 |
185 d 1 h |
vikas |
/trunk/ |
Chatbot for RBM only: Inject SmartChat |
|
| 36194 |
185 d 1 h |
vikas |
/trunk/ |
Chatbot for RBM only: Inject SmartChat |
|
| 36080 |
195 d 23 h |
aman |
/trunk/profitmandi-fofo/src/main/ |
Fix:Replace "FOFO/FOCO/COCO" with "Partner" — Visual Only |
|
| 35606 |
253 d 2 h |
amit |
/trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/ |
Fix JavaScript errors: $ is not defined and $retailers is not defined
- ticket.vm, managerTicket.vm, my-partner-tickets.vm: Wrap all jQuery code in $(document).ready() to ensure jQuery is loaded before executing
- admin.vm: Check each variable independently (retailers, warehouses, authId) before assigning to prevent undefined variable errors |
|
| 35587 |
258 d 2 h |
ranu |
/trunk/ |
code diploy for bulletins |
|
| 35585 |
259 d 0 h |
ranu |
/trunk/ |
code updated by |
|
| 35584 |
260 d 0 h |
ranu |
/trunk/profitmandi-fofo/src/main/ |
code updated by |
|