🚀 Frontend Updates (evergreen_pos_fe) Loyalty Rewards Settings UI (LoyaltyRewardSettings.tsx) Implemented conditional rendering in the "Channel Earning Rates" configuration section to reduce UI clutter. The "Points / Dollar" input field is now properly hidden when FIXED_PER_TRANSACTION is selected. The "Fixed Points" input is hidden for other dynamic earning methods (like SPEND_BASED).
Fixed a 403 Forbidden error that blocked customers from adding products to their cart. Modified the permission mapping logic so that the default ecom:* storefront customer permissions are now accurately merged with any custom permissions defined in the database, instead of being skipped. Loyalty Engine Database Validation Fix (loyaltyLedgerSchema.js)
Added PRODUCT_QUOTATION to the channel ENUM schema array. This resolves a MongoDB validation crash (LoyaltyLedger validation failed) that was preventing loyalty points from being saved when an online product quote invoice was fully paid. Stripe Webhook Tenant Resolution & Idempotency (tenantPermissions.js & product-quote.controller.js)
Bypassed strict tenant context verification specifically for /webhook routes to prevent failures when webhooks originate directly from Stripe. Added defensive logic and debug tracing to gracefully handle unhandled Stripe events (like product.created) without crashing the request flow. 6:13 PM