| Rev |
Age |
Author |
Path |
Log message |
Diff |
| 37670 |
6 h 28 m |
amit |
/trunk/profitmandi-fofo/src/main/ |
Check GSTIN shape on the onboarding screen before submit (jsVersion 425)
Both GST boxes are validated client-side and must match, so ops see the problem on the screen
instead of discovering it when NIC refuses the first invoice. Server-side guard in dao r37669
is what actually enforces it. |
|
| 37669 |
6 h 28 m |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/user/ |
Reject an invalid or mismatched partner GSTIN before it is saved
The onboarding screen carries the GSTIN in two boxes both labelled GST NUMBER - the retailer
one (dtr.retailer.number) and the store one (fofo_store.gst_number, which billing reads).
Neither was validated, so DLSH1660 was saved with the LOI's pincode in the store box while the
retailer box held the real GSTIN, and its first invoice would have been refused by NIC.
validateGstNumbers runs before any write (covers the fofo portal, the V2 API and the partner
app, which all funnel through updateRetailerDetails): both values are normalised, both must be
valid GSTINs, and when both are present they must agree - across 1,800 partners on record they
already do, bar the one that caused this. Needs common r37668. |
|
| 37668 |
6 h 28 m |
amit |
/trunk/profitmandi-common/src/main/ |
Validate GSTIN shape, state code and checksum
isValidGstNumber accepted any 15-character string, so a pincode (110095, rejected only for
length) and junk (Hdjiekwbdbsjskz) reached fofo_store.gst_number, which billing sends to NIC
as the recipient - the invoice is then refused and the goods cannot ship.
Now: 2-digit state code + PAN + entity + Z + mod-36 check digit, trimmed and upper-cased.
Blank still passes (the field is optional); callers needing one present check that themselves.
Checked against live data: 1,569 of 1,570 well-formed partner GSTINs pass, the one that fails
(HRSP330) has a genuinely wrong check digit.
Adds RTLR_1020 / RTLR_1021 for the invalid and mismatched cases. |
|
| 37667 |
7 h 36 m |
amit |
/trunk/profitmandi-dao/src/main/resources/sql/ |
chore(sql): drop vendor catalog pricing for supplier 1 Hotspot, flagged internal 2026-09-16 (as run on prod; backups _bak_vcp/_vcpl_internal_hotspot_20260916) |
|
| 37666 |
8 h 1 m |
amit |
/trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/ |
Hot Deal brand: /fofo/hotDeals/brands accepts categoryId, so the brand chips match the active tab |
|
| 37665 |
8 h 1 m |
amit |
/trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/solr/ |
Hot Deal brand: optional categoryId on the brand facet, so the chips can be scoped to one tab |
|
| 37664 |
8 h 9 m |
ranu |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/ |
loi new revival process |
|
| 37663 |
8 h 38 m |
vikas |
/trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/ |
Added exception to method sign |
|
| 37662 |
8 h 45 m |
vikas |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/lms/ |
LMS click to call |
|
| 37661 |
8 h 47 m |
amit |
/trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/web/client/ |
Fix trunk: RestClient was left behind by r37655
r37655 deleted MandiiResponse but omitted RestClient from the commit, so
trunk did not compile - RestClient still imported the deleted class.
RestClient now uses RawHttpResponse: executeMandii is renamed executeRaw and
postWithResponse returns the new type. The dead getMandii helper is removed;
its only caller was MandiiService. |
|
| 37660 |
9 h 7 m |
ranu |
/trunk/ |
ticket download option given and some enhancement on notification panel |
|
| 37659 |
9 h 35 m |
amit |
/trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/ |
Remove the Mandii callback from fofo (r37655)
Drops the /mandii payment-notification stub from HdfcPaymentController - it
only logged the body - and its three entries in the WebConfig auth whitelist.
PartnerOnBoardingPanelController imports follow services.mandii ->
services.kyc for Gender/MaritalStatus/AddressProofType. |
|
| 37658 |
9 h 42 m |
amit |
/trunk/profitmandi-cron/src/main/java/com/smartdukaan/cron/ |
Remove Mandii onboarding tasks from cron (r37655)
RunOnceTasks loses mandiiUser/mandiiUsers, their setCreditAccount helper and
the now-unused encodeFileToBase64Binary, plus the MandiiService autowire -
133 lines that pushed partner KYC into Mandii and wrote back MANDII credit
accounts. The matching --mandiiUser / --mandiiUsers CLI options are dropped
from Application. ScheduledTasks had an unused MandiiService field.
OnBoardingRelatedSchelduleTask imports follow services.mandii -> services.kyc. |
|
| 37657 |
9 h 43 m |
amit |
/trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/ |
Remove Mandii checkout, status and callback paths (r37655)
OrderController: the paymentOption MANDII branch and createMandiiOrder are
gone. GatewayController: the MANDII branch of payment/gateway/status is gone;
the SDDIRECT branch it sat in front of is untouched and still returns
AccountStatusResponseOut.
API endpoints removed, all of them Mandii-only:
- /cart/payment (CartController + its V2CartController delegate) existed
solely to poll Mandii for an order status and credit the wallet. It called
mandiiService unconditionally, so it already failed for any other gateway.
- /mandii, the payment-notification callback, a no-op logging stub in both
HdfcPaymentController and V2FofoHdfcPaymentController, and dropped from the
WebConfig auth whitelist in the fofo commit.
V2 twins touched only where they would otherwise keep a dead route alive or
fail to compile. |
|
| 37656 |
9 h 43 m |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ |
Point dao at the relocated KYC and SD Credit types (r37655)
Imports follow services.mandii -> services.kyc / services.sdcredit, and
RecordingService takes RawHttpResponse in place of MandiiResponse.
Gateway.MANDII is kept, with a comment saying why: it is persisted as a
string on FofoPayment.gateway and CreditAccount.gateway, and 740 historical
fofo.payment rows still carry it - removing the constant would make
Hibernate throw when reading them. |
|
| 37655 |
9 h 43 m |
amit |
/trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/ |
Remove the dead Mandii BNPL integration (common)
Mandii has taken no payment since 2022-08-23 and holds no credit account, so
MandiiService and the 29 classes only it used are deleted.
The package had become a home for live types, which are moved out rather than
lost: Gender/MaritalStatus/AddressProofType -> services.kyc (they back
@Enumerated columns on user.fofo_kyc, 317 rows), and the SD Credit account
status model - AccountStatusResponseOut and its 10 dependencies ->
services.sdcredit, still served by GatewayController for SDDIRECT.
MandiiResponse was a generic body+status holder named after the integration;
renamed RawHttpResponse, still used by RestClient for Kommuno recordings.
Its dead getMandii() helper is gone. AccountStatusResponseOut no longer
carries the hardcoded merchant.mandii.com URL it shipped to the app.
FundfinaService was logging under MandiiService.class - fixed. |
|
| 37654 |
10 h 28 m |
amit |
/trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/ |
Sync internal store addresses at the mapping write
/createNewWarehouse now calls syncInternalStoreAddresses right after
persisting the WarehouseAddressMapping, inside the same transaction, so the
rule lives at the mutation site rather than in an endpoint someone has to
remember to call. A brand new warehouse has no internal store yet so it is a
no-op today, but any later path that sets a mapping now cannot leave an
internal store billing to the previous address.
/syncWarehouseInternalAddress stays for remediating mappings repointed
directly in the database. Follows r37652/r37653. |
|
| 37653 |
11 h 25 m |
amit |
/trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/ |
Add POST /syncWarehouseInternalAddress
Realigns the INTERNAL stores of a warehouse with its currently mapped
address. The warehouse address mapping has no edit screen - it is repointed
directly in the database - so a branch move never reached the internal
store's user.address and orders kept billing to the old premises. Run this
after changing a warehouse address mapping. Pairs with r37652. |
|
| 37652 |
11 h 25 m |
amit |
/trunk/profitmandi-dao/src/main/ |
Internal store buyer address: always read user.address
An INTERNAL store is the buying identity of a warehouse, so order creation
resolved its address from transaction.warehouseaddressmaster while every
screen read transaction.addId -> user.address. The Delhi warehouses moved to
warehouseaddressmaster 26 in Sept 2024 and nothing carried that across, so
user.address still held the 2021 L-222 premises: same buyer, two addresses.
user.address for active internal stores is now aligned with the mapped
warehouse address (sql/20260916_sync_internal_store_addresses.sql), split
exactly as getCustomAddress() does so the next invoice is unchanged. With
that true, createTransactionForWarehouse no longer special-cases internal.
SellerService.syncInternalStoreAddresses carries a warehouse address remap
through to its internal stores - the mapping has no edit screen and is
repointed directly in the database, which is why nothing propagated before. |
|
| 37651 |
11 h 44 m |
vikas |
/trunk/ |
LMS click to call |
|