sfcc-cip-analytics-client
Version:
SFCC Commerce Intelligence Platform Analytics Client
51 lines (50 loc) • 2.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.queryPaymentMethodPerformance = void 0;
const types_1 = require("../types");
const helpers_1 = require("../helpers");
/**
* Query payment method performance metrics to track adoption and optimize processing costs
* Business Question: Which payment methods are customers using and how do they perform?
* Primary users: Operations teams
* @param client The Avatica client instance (must have an open connection)
* @param siteId The natural site ID to filter by
* @param dateRange Date range to filter results
* @param batchSize Size of each batch to yield (default: 100)
*/
const queryPaymentMethodPerformance = function queryPaymentMethodPerformance(client, params, batchSize = 100) {
const { sql, parameters } = queryPaymentMethodPerformance.QUERY(params);
return (0, helpers_1.executeParameterizedQuery)(client, (0, types_1.cleanSQL)(sql), parameters, batchSize);
};
exports.queryPaymentMethodPerformance = queryPaymentMethodPerformance;
exports.queryPaymentMethodPerformance.metadata = {
name: "payment-method-performance",
description: "Track payment method adoption and performance metrics",
category: "Payment Analytics",
requiredParams: ["siteId", "from", "to"],
};
exports.queryPaymentMethodPerformance.QUERY = (params) => {
(0, helpers_1.validateRequiredParams)(params, ["siteId", "dateRange"]);
const { startDate, endDate } = (0, helpers_1.formatDateRange)(params.dateRange);
const sql = `
SELECT
pm.display_name AS payment_method,
SUM(pss.num_payments) AS total_payments,
SUM(pss.num_orders) AS orders_with_payment,
SUM(pss.std_captured_amount) AS std_captured_amount,
SUM(pss.std_refunded_amount) AS std_refunded_amount,
SUM(pss.std_transaction_amount) AS std_transaction_amount,
(SUM(pss.std_captured_amount) / SUM(pss.num_payments)) AS avg_payment_amount
FROM ccdw_aggr_payment_sales_summary pss
JOIN ccdw_dim_payment_method pm ON pm.payment_method_id = pss.payment_method_id
JOIN ccdw_dim_site s ON s.site_id = pss.site_id
WHERE pss.submit_date >= '${startDate}' AND pss.submit_date <= '${endDate}'
AND s.nsite_id = '${params.siteId}'
GROUP BY pm.display_name
ORDER BY std_captured_amount DESC
`;
return {
sql,
parameters: [],
};
};