Re_Backend/docs/DEALER_INTEGRATION_STATUS.md

2.2 KiB

Dealer Integration Implementation Status

This document summarizes the changes made to integrate the external Royal Enfield Dealer API and implement the dealer validation logic during request creation.

Completed Work

1. External Dealer API Integration

  • Service: DealerExternalService in src/services/dealerExternal.service.ts
    • Implemented getDealerByCode to fetch data from https://api-uat2.royalenfield.com/DealerMaster.
    • Returns real-time GSTIN, Address, and location details.
  • Controller & Routes: Integrated under /api/v1/dealers-external/search/:dealerCode.
  • Enrichment: DealerService.getDealerByCode now automatically merges this external data into the system's DealerInfo, benefiting PWC and PDF generation services.

2. Dealer Validation & Field Mapping Fix

  • Strategic Mapping: Based on requirement, all dealer codes are now mapped against the employeeNumber field (HR ID) in the User model, not employeeId.
  • User Enrichment Service: validateDealerUser(dealerCode) now searches by employeeNumber.
  • SSO Alignment: AuthService.ts now extracts dealer_code from the authentication response and persists it to employeeNumber.
  • Dealer Service: getDealerByCode uses jobTitle-based validation against the User table as the primary lookup.

3. Claim Workflow Integration

  • Dealer Claim Service: createClaimRequest validates the dealer immediately and overrides approver steps 1 and 4 with the validated user.
  • Workflow Controller: Enforces dealer validation for all DEALER CLAIM templates and any request containing a dealerCode.

4. E-Invoice & PDF Alignment

  • PWC Integration: generateSignedInvoice now uses the enriched DealerInfo containing the correct external GSTIN and state code.
  • Invoice PDF: PdfService correctly displays the external dealer name, GSTIN, and POS from the source of truth.

Conclusion

All integrated components have been verified via test scripts and end-to-end flow analysis. The dependency on the local dealers table has been successfully minimized, and the system now relies on the User table and External API as the primary sources of dealer information.