IO-3239 Add integration log statements on QBO.

This commit is contained in:
Patrick Fic
2025-05-19 11:10:02 -07:00
parent b8841e3ded
commit b014744940
6 changed files with 229 additions and 107 deletions

View File

@@ -14,7 +14,6 @@ const oauthClient = new OAuthClient({
clientSecret: process.env.QBO_SECRET, clientSecret: process.env.QBO_SECRET,
environment: process.env.NODE_ENV === "production" ? "production" : "sandbox", environment: process.env.NODE_ENV === "production" ? "production" : "sandbox",
redirectUri: process.env.QBO_REDIRECT_URI, redirectUri: process.env.QBO_REDIRECT_URI,
logging: true
}); });
//TODO:AIO Add in QBO callbacks. //TODO:AIO Add in QBO callbacks.

View File

@@ -20,7 +20,6 @@ exports.default = async (req, res) => {
clientSecret: process.env.QBO_SECRET, clientSecret: process.env.QBO_SECRET,
environment: process.env.NODE_ENV === "production" ? "production" : "sandbox", environment: process.env.NODE_ENV === "production" ? "production" : "sandbox",
redirectUri: process.env.QBO_REDIRECT_URI, redirectUri: process.env.QBO_REDIRECT_URI,
logging: true
}); });
try { try {
@@ -149,6 +148,15 @@ async function QueryVendorRecord(oauthClient, qbo_realmId, req, bill) {
"Content-Type": "application/json" "Content-Type": "application/json"
} }
}); });
logger.LogIntegrationCall({
platform: "QBO",
methodType: "POST",
methodName: "QueryVendorRecord",
billid: bill.id,
statusCode: result.status,
bodyshopid: req.user.bodyshopid,
email: req.user.email
})
setNewRefreshToken(req.user.email, result); setNewRefreshToken(req.user.email, result);
return ( return (
result.json && result.json &&
@@ -178,6 +186,15 @@ async function InsertVendorRecord(oauthClient, qbo_realmId, req, bill) {
}, },
body: JSON.stringify(Vendor) body: JSON.stringify(Vendor)
}); });
logger.LogIntegrationCall({
platform: "QBO",
methodType: "POST",
methodName: "InsertVendorRecord",
billid: bill.id,
statusCode: result.status,
bodyshopid: req.user.bodyshopid,
email: req.user.email
})
setNewRefreshToken(req.user.email, result); setNewRefreshToken(req.user.email, result);
return result && result.json && result.json.Vendor; return result && result.json && result.json.Vendor;
} catch (error) { } catch (error) {
@@ -246,11 +263,11 @@ async function InsertBill(oauthClient, qbo_realmId, req, bill, vendor, bodyshop)
.format("YYYY-MM-DD"), .format("YYYY-MM-DD"),
...(!bill.is_credit_memo && ...(!bill.is_credit_memo &&
bill.vendor.due_date && { bill.vendor.due_date && {
DueDate: moment(bill.date) DueDate: moment(bill.date)
//.tz(bill.job.bodyshop.timezone) //.tz(bill.job.bodyshop.timezone)
.add(bill.vendor.due_date, "days") .add(bill.vendor.due_date, "days")
.format("YYYY-MM-DD") .format("YYYY-MM-DD")
}), }),
DocNumber: bill.invoice_number, DocNumber: bill.invoice_number,
//...(bill.job.class ? { ClassRef: { Id: classes[bill.job.class] } } : {}), //...(bill.job.class ? { ClassRef: { Id: classes[bill.job.class] } } : {}),
...(!( ...(!(
@@ -263,8 +280,8 @@ async function InsertBill(oauthClient, qbo_realmId, req, bill, vendor, bodyshop)
: {}), : {}),
...(bodyshop.accountingconfig.qbo_departmentid && ...(bodyshop.accountingconfig.qbo_departmentid &&
bodyshop.accountingconfig.qbo_departmentid.trim() !== "" && { bodyshop.accountingconfig.qbo_departmentid.trim() !== "" && {
DepartmentRef: { value: bodyshop.accountingconfig.qbo_departmentid } DepartmentRef: { value: bodyshop.accountingconfig.qbo_departmentid }
}), }),
PrivateNote: `RO ${bill.job.ro_number || ""}`, PrivateNote: `RO ${bill.job.ro_number || ""}`,
Line: lines Line: lines
}; };
@@ -280,6 +297,15 @@ async function InsertBill(oauthClient, qbo_realmId, req, bill, vendor, bodyshop)
}, },
body: JSON.stringify(billQbo) body: JSON.stringify(billQbo)
}); });
logger.LogIntegrationCall({
platform: "QBO",
methodType: "POST",
methodName: "InsertBill",
billid: bill.id,
statusCode: result.status,
bodyshopid: req.user.bodyshopid,
email: req.user.email
})
setNewRefreshToken(req.user.email, result); setNewRefreshToken(req.user.email, result);
return result && result.json && result.json.Bill; return result && result.json && result.json.Bill;
} catch (error) { } catch (error) {
@@ -327,8 +353,8 @@ const generateBillLine = (
accountingconfig.qbo && accountingconfig.qbo_usa && region_config.includes("CA_") accountingconfig.qbo && accountingconfig.qbo_usa && region_config.includes("CA_")
? {} ? {}
: { : {
value: taxCodes[findTaxCode(billLine.applicable_taxes, ioSalesTaxCodes)] value: taxCodes[findTaxCode(billLine.applicable_taxes, ioSalesTaxCodes)]
}, },
AccountRef: { AccountRef: {
value: accounts[account.accountname] value: accounts[account.accountname]
} }
@@ -354,6 +380,14 @@ async function QueryMetaData(oauthClient, qbo_realmId, req) {
"Content-Type": "application/json" "Content-Type": "application/json"
} }
}); });
logger.LogIntegrationCall({
platform: "QBO",
methodType: "POST",
methodName: "QueryAccountType",
statusCode: accounts.status,
bodyshopid: req.user.bodyshopid,
email: req.user.email
})
setNewRefreshToken(req.user.email, accounts); setNewRefreshToken(req.user.email, accounts);
const taxCodes = await oauthClient.makeApiCall({ const taxCodes = await oauthClient.makeApiCall({
url: urlBuilder(qbo_realmId, "query", `select * From TaxCode`), url: urlBuilder(qbo_realmId, "query", `select * From TaxCode`),
@@ -362,7 +396,14 @@ async function QueryMetaData(oauthClient, qbo_realmId, req) {
"Content-Type": "application/json" "Content-Type": "application/json"
} }
}); });
logger.LogIntegrationCall({
platform: "QBO",
methodType: "POST",
methodName: "QueryTaxCode",
statusCode: taxCodes.status,
bodyshopid: req.user.bodyshopid,
email: req.user.email
})
const classes = await oauthClient.makeApiCall({ const classes = await oauthClient.makeApiCall({
url: urlBuilder(qbo_realmId, "query", `select * From Class`), url: urlBuilder(qbo_realmId, "query", `select * From Class`),
method: "POST", method: "POST",
@@ -370,7 +411,14 @@ async function QueryMetaData(oauthClient, qbo_realmId, req) {
"Content-Type": "application/json" "Content-Type": "application/json"
} }
}); });
logger.LogIntegrationCall({
platform: "QBO",
methodType: "POST",
methodName: "QueryClasses",
statusCode: classes.status,
bodyshopid: req.user.bodyshopid,
email: req.user.email
})
const taxCodeMapping = {}; const taxCodeMapping = {};
taxCodes.json && taxCodes.json &&

View File

@@ -29,7 +29,6 @@ exports.default = async (req, res) => {
clientSecret: process.env.QBO_SECRET, clientSecret: process.env.QBO_SECRET,
environment: process.env.NODE_ENV === "production" ? "production" : "sandbox", environment: process.env.NODE_ENV === "production" ? "production" : "sandbox",
redirectUri: process.env.QBO_REDIRECT_URI, redirectUri: process.env.QBO_REDIRECT_URI,
logging: true
}); });
try { try {
//Fetch the API Access Tokens & Set them for the session. //Fetch the API Access Tokens & Set them for the session.
@@ -227,20 +226,20 @@ async function InsertPayment(oauthClient, qbo_realmId, req, payment, parentRef,
PaymentRefNum: payment.transactionid, PaymentRefNum: payment.transactionid,
...(invoices && invoices.length === 1 && invoices[0] ...(invoices && invoices.length === 1 && invoices[0]
? { ? {
Line: [ Line: [
{ {
Amount: Dinero({ Amount: Dinero({
amount: Math.round(payment.amount * 100) amount: Math.round(payment.amount * 100)
}).toFormat(DineroQbFormat), }).toFormat(DineroQbFormat),
LinkedTxn: [ LinkedTxn: [
{ {
TxnId: invoices[0].Id, TxnId: invoices[0].Id,
TxnType: "Invoice" TxnType: "Invoice"
} }
] ]
} }
] ]
} }
: {}) : {})
}; };
logger.log("qbo-payments-objectlog", "DEBUG", req.user.email, payment.id, { logger.log("qbo-payments-objectlog", "DEBUG", req.user.email, payment.id, {
@@ -255,6 +254,15 @@ async function InsertPayment(oauthClient, qbo_realmId, req, payment, parentRef,
}, },
body: JSON.stringify(paymentQbo) body: JSON.stringify(paymentQbo)
}); });
logger.LogIntegrationCall({
platform: "QBO",
methodType: "POST",
methodName: "InsertPayment",
paymentid: payment.id,
statusCode: result.status,
bodyshopid: req.user.bodyshopid,
email: req.user.email
})
setNewRefreshToken(req.user.email, result); setNewRefreshToken(req.user.email, result);
return result && result.Bill; return result && result.Bill;
} catch (error) { } catch (error) {
@@ -274,7 +282,15 @@ async function QueryMetaData(oauthClient, qbo_realmId, req, ro_number, isCreditM
"Content-Type": "application/json" "Content-Type": "application/json"
} }
}); });
logger.LogIntegrationCall({
platform: "QBO",
methodType: "POST",
methodName: "QueryInvoice",
statusCode: invoice.status,
bodyshopid: req.user.bodyshopid,
email: req.user.email
})
const paymentMethods = await oauthClient.makeApiCall({ const paymentMethods = await oauthClient.makeApiCall({
url: urlBuilder(qbo_realmId, "query", `select * From PaymentMethod`), url: urlBuilder(qbo_realmId, "query", `select * From PaymentMethod`),
method: "POST", method: "POST",
@@ -282,6 +298,14 @@ async function QueryMetaData(oauthClient, qbo_realmId, req, ro_number, isCreditM
"Content-Type": "application/json" "Content-Type": "application/json"
} }
}); });
logger.LogIntegrationCall({
platform: "QBO",
methodType: "POST",
methodName: "QueryPaymentMethod",
statusCode: paymentMethods.status,
bodyshopid: req.user.bodyshopid,
email: req.user.email
})
setNewRefreshToken(req.user.email, paymentMethods); setNewRefreshToken(req.user.email, paymentMethods);
// const classes = await oauthClient.makeApiCall({ // const classes = await oauthClient.makeApiCall({
@@ -325,6 +349,15 @@ async function QueryMetaData(oauthClient, qbo_realmId, req, ro_number, isCreditM
"Content-Type": "application/json" "Content-Type": "application/json"
} }
}); });
logger.LogIntegrationCall({
platform: "QBO",
methodType: "POST",
methodName: "QueryTaxCode",
statusCode: taxCodes.status,
bodyshopid: req.user.bodyshopid,
email: req.user.email
})
const items = await oauthClient.makeApiCall({ const items = await oauthClient.makeApiCall({
url: urlBuilder(qbo_realmId, "query", `select * From Item`), url: urlBuilder(qbo_realmId, "query", `select * From Item`),
method: "POST", method: "POST",
@@ -332,6 +365,14 @@ async function QueryMetaData(oauthClient, qbo_realmId, req, ro_number, isCreditM
"Content-Type": "application/json" "Content-Type": "application/json"
} }
}); });
logger.LogIntegrationCall({
platform: "QBO",
methodType: "POST",
methodName: "QueryItems",
statusCode: items.status,
bodyshopid: req.user.bodyshopid,
email: req.user.email
})
setNewRefreshToken(req.user.email, items); setNewRefreshToken(req.user.email, items);
const itemMapping = {}; const itemMapping = {};
@@ -406,14 +447,14 @@ async function InsertCreditMemo(oauthClient, qbo_realmId, req, payment, parentRe
TaxCodeRef: { TaxCodeRef: {
value: value:
taxCodes[ taxCodes[
findTaxCode( findTaxCode(
{ {
local: false, local: false,
federal: false, federal: false,
state: false state: false
}, },
payment.job.bodyshop.md_responsibility_centers.sales_tax_codes payment.job.bodyshop.md_responsibility_centers.sales_tax_codes
) )
] ]
} }
} }
@@ -432,6 +473,15 @@ async function InsertCreditMemo(oauthClient, qbo_realmId, req, payment, parentRe
}, },
body: JSON.stringify(paymentQbo) body: JSON.stringify(paymentQbo)
}); });
logger.LogIntegrationCall({
platform: "QBO",
methodType: "POST",
methodName: "InsertCreditMemo",
paymentid: payment.id,
statusCode: result.status,
bodyshopid: req.user.bodyshopid,
email: req.user.email
})
setNewRefreshToken(req.user.email, result); setNewRefreshToken(req.user.email, result);
return result && result.Bill; return result && result.Bill;
} catch (error) { } catch (error) {

View File

@@ -22,8 +22,8 @@ exports.default = async (req, res) => {
clientSecret: process.env.QBO_SECRET, clientSecret: process.env.QBO_SECRET,
environment: process.env.NODE_ENV === "production" ? "production" : "sandbox", environment: process.env.NODE_ENV === "production" ? "production" : "sandbox",
redirectUri: process.env.QBO_REDIRECT_URI, redirectUri: process.env.QBO_REDIRECT_URI,
logging: true
}); });
try { try {
//Fetch the API Access Tokens & Set them for the session. //Fetch the API Access Tokens & Set them for the session.
const response = await apiGqlClient.request(queries.GET_QBO_AUTH, { const response = await apiGqlClient.request(queries.GET_QBO_AUTH, {
@@ -331,11 +331,11 @@ async function InsertOwner(oauthClient, qbo_realmId, req, job, isThreeTier, pare
...(job.ownr_ea ? { PrimaryEmailAddr: { Address: job.ownr_ea.trim() } } : {}), ...(job.ownr_ea ? { PrimaryEmailAddr: { Address: job.ownr_ea.trim() } } : {}),
...(isThreeTier ...(isThreeTier
? { ? {
Job: true, Job: true,
ParentRef: { ParentRef: {
value: parentTierRef.Id value: parentTierRef.Id
}
} }
}
: {}) : {})
}; };
try { try {
@@ -499,57 +499,55 @@ async function InsertInvoice(oauthClient, qbo_realmId, req, job, bodyshop, paren
DocNumber: job.ro_number, DocNumber: job.ro_number,
...(job.class ? { ClassRef: { value: classes[job.class] } } : {}), ...(job.class ? { ClassRef: { value: classes[job.class] } } : {}),
CustomerMemo: { CustomerMemo: {
value: `${job.clm_no ? `Claim No: ${job.clm_no}` : ``}${ value: `${job.clm_no ? `Claim No: ${job.clm_no}` : ``}${job.po_number ? `PO No: ${job.po_number}` : ``
job.po_number ? `PO No: ${job.po_number}` : `` } Vehicle:${job.v_model_yr || ""} ${job.v_make_desc || ""} ${job.v_model_desc || ""
} Vehicle:${job.v_model_yr || ""} ${job.v_make_desc || ""} ${ } ${job.v_vin || ""} ${job.plate_no || ""} `.trim()
job.v_model_desc || ""
} ${job.v_vin || ""} ${job.plate_no || ""} `.trim()
}, },
CustomerRef: { CustomerRef: {
value: parentTierRef.Id value: parentTierRef.Id
}, },
...(bodyshop.accountingconfig.qbo_departmentid && ...(bodyshop.accountingconfig.qbo_departmentid &&
bodyshop.accountingconfig.qbo_departmentid.trim() !== "" && { bodyshop.accountingconfig.qbo_departmentid.trim() !== "" && {
DepartmentRef: { value: bodyshop.accountingconfig.qbo_departmentid } DepartmentRef: { value: bodyshop.accountingconfig.qbo_departmentid }
}), }),
CustomField: [ CustomField: [
...(bodyshop.accountingconfig.ReceivableCustomField1 ...(bodyshop.accountingconfig.ReceivableCustomField1
? [ ? [
{ {
DefinitionId: "1", DefinitionId: "1",
StringValue: job[bodyshop.accountingconfig.ReceivableCustomField1], StringValue: job[bodyshop.accountingconfig.ReceivableCustomField1],
Type: "StringType" Type: "StringType"
} }
] ]
: []), : []),
...(bodyshop.accountingconfig.ReceivableCustomField2 ...(bodyshop.accountingconfig.ReceivableCustomField2
? [ ? [
{ {
DefinitionId: "2", DefinitionId: "2",
StringValue: job[bodyshop.accountingconfig.ReceivableCustomField2], StringValue: job[bodyshop.accountingconfig.ReceivableCustomField2],
Type: "StringType" Type: "StringType"
} }
] ]
: []), : []),
...(bodyshop.accountingconfig.ReceivableCustomField3 ...(bodyshop.accountingconfig.ReceivableCustomField3
? [ ? [
{ {
DefinitionId: "3", DefinitionId: "3",
StringValue: job[bodyshop.accountingconfig.ReceivableCustomField3], StringValue: job[bodyshop.accountingconfig.ReceivableCustomField3],
Type: "StringType" Type: "StringType"
} }
] ]
: []) : [])
], ],
...(bodyshop.accountingconfig && ...(bodyshop.accountingconfig &&
bodyshop.accountingconfig.qbo && bodyshop.accountingconfig.qbo &&
bodyshop.accountingconfig.qbo_usa && { bodyshop.accountingconfig.qbo_usa && {
TxnTaxDetail: { TxnTaxDetail: {
TxnTaxCodeRef: { TxnTaxCodeRef: {
value: taxCodes[bodyshop.md_responsibility_centers.taxes.state.accountitem] value: taxCodes[bodyshop.md_responsibility_centers.taxes.state.accountitem]
}
} }
}), }
}),
...(bodyshop.accountingconfig.printlater ? { PrintStatus: "NeedToPrint" } : {}), ...(bodyshop.accountingconfig.printlater ? { PrintStatus: "NeedToPrint" } : {}),
...(bodyshop.accountingconfig.emaillater && job.ownr_ea ? { EmailStatus: "NeedToSend" } : {}), ...(bodyshop.accountingconfig.emaillater && job.ownr_ea ? { EmailStatus: "NeedToSend" } : {}),
@@ -616,58 +614,56 @@ async function InsertInvoiceMultiPayerInvoice(
DocNumber: job.ro_number + suffix, DocNumber: job.ro_number + suffix,
...(job.class ? { ClassRef: { value: classes[job.class] } } : {}), ...(job.class ? { ClassRef: { value: classes[job.class] } } : {}),
CustomerMemo: { CustomerMemo: {
value: `${job.clm_no ? `Claim No: ${job.clm_no}` : ``}${ value: `${job.clm_no ? `Claim No: ${job.clm_no}` : ``}${job.po_number ? `PO No: ${job.po_number}` : ``
job.po_number ? `PO No: ${job.po_number}` : `` } Vehicle:${job.v_model_yr || ""} ${job.v_make_desc || ""} ${job.v_model_desc || ""
} Vehicle:${job.v_model_yr || ""} ${job.v_make_desc || ""} ${ } ${job.v_vin || ""} ${job.plate_no || ""} `.trim()
job.v_model_desc || ""
} ${job.v_vin || ""} ${job.plate_no || ""} `.trim()
}, },
CustomerRef: { CustomerRef: {
value: parentTierRef.Id value: parentTierRef.Id
}, },
...(bodyshop.accountingconfig.qbo_departmentid && ...(bodyshop.accountingconfig.qbo_departmentid &&
bodyshop.accountingconfig.qbo_departmentid.trim() !== "" && { bodyshop.accountingconfig.qbo_departmentid.trim() !== "" && {
DepartmentRef: { value: bodyshop.accountingconfig.qbo_departmentid } DepartmentRef: { value: bodyshop.accountingconfig.qbo_departmentid }
}), }),
CustomField: [ CustomField: [
...(bodyshop.accountingconfig.ReceivableCustomField1 ...(bodyshop.accountingconfig.ReceivableCustomField1
? [ ? [
{ {
DefinitionId: "1", DefinitionId: "1",
StringValue: job[bodyshop.accountingconfig.ReceivableCustomField1], StringValue: job[bodyshop.accountingconfig.ReceivableCustomField1],
Type: "StringType" Type: "StringType"
} }
] ]
: []), : []),
...(bodyshop.accountingconfig.ReceivableCustomField2 ...(bodyshop.accountingconfig.ReceivableCustomField2
? [ ? [
{ {
DefinitionId: "2", DefinitionId: "2",
StringValue: job[bodyshop.accountingconfig.ReceivableCustomField2], StringValue: job[bodyshop.accountingconfig.ReceivableCustomField2],
Type: "StringType" Type: "StringType"
} }
] ]
: []), : []),
...(bodyshop.accountingconfig.ReceivableCustomField3 ...(bodyshop.accountingconfig.ReceivableCustomField3
? [ ? [
{ {
DefinitionId: "3", DefinitionId: "3",
StringValue: job[bodyshop.accountingconfig.ReceivableCustomField3], StringValue: job[bodyshop.accountingconfig.ReceivableCustomField3],
Type: "StringType" Type: "StringType"
} }
] ]
: []) : [])
], ],
...(bodyshop.accountingconfig && ...(bodyshop.accountingconfig &&
bodyshop.accountingconfig.qbo && bodyshop.accountingconfig.qbo &&
bodyshop.accountingconfig.qbo_usa && bodyshop.accountingconfig.qbo_usa &&
bodyshop.region_config.includes("CA_") && { bodyshop.region_config.includes("CA_") && {
TxnTaxDetail: { TxnTaxDetail: {
TxnTaxCodeRef: { TxnTaxCodeRef: {
value: taxCodes[bodyshop.md_responsibility_centers.taxes.state.accountitem] value: taxCodes[bodyshop.md_responsibility_centers.taxes.state.accountitem]
}
} }
}), }
}),
...(bodyshop.accountingconfig.printlater ? { PrintStatus: "NeedToPrint" } : {}), ...(bodyshop.accountingconfig.printlater ? { PrintStatus: "NeedToPrint" } : {}),
...(bodyshop.accountingconfig.emaillater && job.ownr_ea ? { EmailStatus: "NeedToSend" } : {}), ...(bodyshop.accountingconfig.emaillater && job.ownr_ea ? { EmailStatus: "NeedToSend" } : {}),

View File

@@ -2968,3 +2968,11 @@ exports.GET_JOB_WATCHERS_MINIMAL = `
} }
} }
`; `;
exports.INSERT_INTEGRATION_LOG = `
mutation INSERT_INTEGRATION_LOG($log: integration_log_insert_input!) {
insert_integration_log_one(object: $log) {
id
}
}
`;

View File

@@ -12,6 +12,9 @@ const { uploadFileToS3 } = require("./s3");
const { v4 } = require("uuid"); const { v4 } = require("uuid");
const { InstanceRegion } = require("./instanceMgr"); const { InstanceRegion } = require("./instanceMgr");
const getHostNameOrIP = require("./getHostNameOrIP"); const getHostNameOrIP = require("./getHostNameOrIP");
const client = require("../graphql-client/graphql-client").client;
const queries = require("../graphql-client/queries");
const LOG_LEVELS = { const LOG_LEVELS = {
error: { level: 0, name: "error" }, error: { level: 0, name: "error" },
@@ -99,13 +102,11 @@ const createLogger = () => {
const labelColor = "\x1b[33m"; // Yellow const labelColor = "\x1b[33m"; // Yellow
const separatorColor = "\x1b[35m|\x1b[0m"; // Magenta for separators const separatorColor = "\x1b[35m|\x1b[0m"; // Magenta for separators
return `${timestampColor} [${hostnameColor}] [${level}]: ${message} ${ return `${timestampColor} [${hostnameColor}] [${level}]: ${message} ${user ? `${separatorColor} ${labelColor}user:\x1b[0m ${JSON.stringify(user)}` : ""
user ? `${separatorColor} ${labelColor}user:\x1b[0m ${JSON.stringify(user)}` : "" } ${record ? `${separatorColor} ${labelColor}record:\x1b[0m ${JSON.stringify(record)}` : ""}${meta
} ${record ? `${separatorColor} ${labelColor}record:\x1b[0m ${JSON.stringify(record)}` : ""}${
meta
? `\n${separatorColor} ${labelColor}meta:\x1b[0m ${JSON.stringify(meta, null, 2)} ${separatorColor}` ? `\n${separatorColor} ${labelColor}meta:\x1b[0m ${JSON.stringify(meta, null, 2)} ${separatorColor}`
: "" : ""
}`; }`;
}) })
) )
}) })
@@ -194,9 +195,29 @@ const createLogger = () => {
winstonLogger.log(logEntry); winstonLogger.log(logEntry);
}; };
const LogIntegrationCall = async ({ platform, methodType, methodName, jobid, paymentid, billid, statusCode, bodyshopid, email }) => {
try {
//Insert the record.
await client.request(queries.INSERT_INTEGRATION_LOG, {
platform,
methodType,
methodName, jobid, paymentid, billid,
statusCode,
bodyshopid,
email
});
} catch (error) {
log("integration-log-error", "ERROR", email, null, {
error
});
}
};
return { return {
log, log,
logger: winstonLogger logger: winstonLogger,
LogIntegrationCall
}; };
} catch (e) { } catch (e) {
console.error("Error setting up enhanced Logger, defaulting to console.: " + e?.message || ""); console.error("Error setting up enhanced Logger, defaulting to console.: " + e?.message || "");