feature/IO-3357-Reynolds-and-Reynolds-DMS-API-Integration - Checkpoint
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
const dayjs = require("dayjs");
|
||||
const { normalizeRRDealerFields } = require("./rr-constants");
|
||||
|
||||
/**
|
||||
* Utility: formats date/time to R&R’s preferred format (ISO or yyyy-MM-dd).
|
||||
@@ -22,6 +23,15 @@ const num = (val) => (val != null ? String(val) : undefined);
|
||||
const toBoolStr = (v) => (v === true ? "true" : v === false ? "false" : undefined);
|
||||
const hasAny = (obj) => !!obj && Object.values(obj).some((v) => v !== undefined && v !== null && v !== "");
|
||||
|
||||
/**
|
||||
* Pull canonical Dealer/Store/Branch fields from cfg (tolerate snake_case during migration).
|
||||
* Enforces DB-provided values upstream (no env fallback here).
|
||||
*/
|
||||
function getDSB(cfg) {
|
||||
const { dealerNumber, storeNumber, branchNumber } = normalizeRRDealerFields(cfg || {});
|
||||
return { dealerNumber, storeNumber, branchNumber };
|
||||
}
|
||||
|
||||
//
|
||||
// ===================== CUSTOMER =====================
|
||||
//
|
||||
@@ -31,12 +41,13 @@ const hasAny = (obj) => !!obj && Object.values(obj).some((v) => v !== undefined
|
||||
*/
|
||||
function mapCustomerInsert(customer, bodyshopConfig) {
|
||||
if (!customer) return {};
|
||||
const { dealerNumber, storeNumber, branchNumber } = getDSB(bodyshopConfig);
|
||||
|
||||
return {
|
||||
DealerCode: bodyshopConfig?.dealer_code || "ROME",
|
||||
DealerNumber: bodyshopConfig?.dealer_number,
|
||||
StoreNumber: bodyshopConfig?.store_number,
|
||||
BranchNumber: bodyshopConfig?.branch_number,
|
||||
DealerNumber: dealerNumber,
|
||||
StoreNumber: storeNumber,
|
||||
BranchNumber: branchNumber,
|
||||
RequestId: `CUST-INSERT-${customer.id}`,
|
||||
Environment: process.env.NODE_ENV,
|
||||
|
||||
@@ -116,12 +127,13 @@ function mapCustomerUpdate(customer, bodyshopConfig) {
|
||||
*/
|
||||
function mapServiceVehicle(vehicle, ownerCustomer, bodyshopConfig) {
|
||||
if (!vehicle) return {};
|
||||
const { dealerNumber, storeNumber, branchNumber } = getDSB(bodyshopConfig);
|
||||
|
||||
return {
|
||||
DealerCode: bodyshopConfig?.dealer_code || "ROME",
|
||||
DealerNumber: bodyshopConfig?.dealer_number,
|
||||
StoreNumber: bodyshopConfig?.store_number,
|
||||
BranchNumber: bodyshopConfig?.branch_number,
|
||||
DealerNumber: dealerNumber,
|
||||
StoreNumber: storeNumber,
|
||||
BranchNumber: branchNumber,
|
||||
RequestId: `VEH-${vehicle.id}`,
|
||||
|
||||
CustomerId: ownerCustomer?.external_id,
|
||||
@@ -175,15 +187,16 @@ function mapServiceVehicle(vehicle, ownerCustomer, bodyshopConfig) {
|
||||
*/
|
||||
function mapRepairOrderCreate(job, bodyshopConfig) {
|
||||
if (!job) return {};
|
||||
const { dealerNumber, storeNumber, branchNumber } = getDSB(bodyshopConfig);
|
||||
|
||||
const cust = job.customer || {};
|
||||
const veh = job.vehicle || {};
|
||||
|
||||
return {
|
||||
DealerCode: bodyshopConfig?.dealer_code || "ROME",
|
||||
DealerNumber: bodyshopConfig?.dealer_number,
|
||||
StoreNumber: bodyshopConfig?.store_number,
|
||||
BranchNumber: bodyshopConfig?.branch_number,
|
||||
DealerNumber: dealerNumber,
|
||||
StoreNumber: storeNumber,
|
||||
BranchNumber: branchNumber,
|
||||
RequestId: `RO-${job.id}`,
|
||||
Environment: process.env.NODE_ENV,
|
||||
|
||||
@@ -302,11 +315,12 @@ function mapRepairOrderUpdate(job, bodyshopConfig) {
|
||||
//
|
||||
|
||||
function mapAdvisorLookup(criteria, bodyshopConfig) {
|
||||
const { dealerNumber, storeNumber, branchNumber } = getDSB(bodyshopConfig);
|
||||
return {
|
||||
DealerCode: bodyshopConfig?.dealer_code || "ROME",
|
||||
DealerNumber: bodyshopConfig?.dealer_number,
|
||||
StoreNumber: bodyshopConfig?.store_number,
|
||||
BranchNumber: bodyshopConfig?.branch_number,
|
||||
DealerNumber: dealerNumber,
|
||||
StoreNumber: storeNumber,
|
||||
BranchNumber: branchNumber,
|
||||
RequestId: `LOOKUP-ADVISOR-${Date.now()}`,
|
||||
SearchCriteria: {
|
||||
Department: criteria.department || "Body Shop",
|
||||
@@ -316,11 +330,12 @@ function mapAdvisorLookup(criteria, bodyshopConfig) {
|
||||
}
|
||||
|
||||
function mapPartsLookup(criteria, bodyshopConfig) {
|
||||
const { dealerNumber, storeNumber, branchNumber } = getDSB(bodyshopConfig);
|
||||
return {
|
||||
DealerCode: bodyshopConfig?.dealer_code || "ROME",
|
||||
DealerNumber: bodyshopConfig?.dealer_number,
|
||||
StoreNumber: bodyshopConfig?.store_number,
|
||||
BranchNumber: bodyshopConfig?.branch_number,
|
||||
DealerNumber: dealerNumber,
|
||||
StoreNumber: storeNumber,
|
||||
BranchNumber: branchNumber,
|
||||
RequestId: `LOOKUP-PART-${Date.now()}`,
|
||||
SearchCriteria: {
|
||||
PartNumber: criteria.part_number,
|
||||
@@ -335,6 +350,8 @@ function mapPartsLookup(criteria, bodyshopConfig) {
|
||||
}
|
||||
|
||||
function mapCombinedSearch(criteria = {}, bodyshopConfig) {
|
||||
const { dealerNumber, storeNumber, branchNumber } = getDSB(bodyshopConfig);
|
||||
|
||||
// accept nested or flat input
|
||||
const c = criteria || {};
|
||||
const cust = c.customer || c.Customer || {};
|
||||
@@ -364,14 +381,11 @@ function mapCombinedSearch(criteria = {}, bodyshopConfig) {
|
||||
};
|
||||
|
||||
return {
|
||||
// Dealer / routing (aligns with your other mappers)
|
||||
STAR_NS: require("./rr-constants").RR_NS.STAR,
|
||||
MaxRecs: criteria.maxResults || criteria.MaxResults || 50,
|
||||
DealerCode: bodyshopConfig?.dealer_code || "ROME",
|
||||
DealerName: bodyshopConfig?.dealer_name,
|
||||
DealerNumber: bodyshopConfig?.dealer_number,
|
||||
StoreNumber: bodyshopConfig?.store_number,
|
||||
BranchNumber: bodyshopConfig?.branch_number,
|
||||
DealerNumber: dealerNumber,
|
||||
StoreNumber: storeNumber,
|
||||
BranchNumber: branchNumber,
|
||||
|
||||
RequestId: c.requestId || `COMBINED-${Date.now()}`,
|
||||
Environment: process.env.NODE_ENV,
|
||||
|
||||
Reference in New Issue
Block a user