UNPKG

sfcc-cip-analytics-client

Version:

SFCC Commerce Intelligence Platform Analytics Client

51 lines (50 loc) 2.38 kB
"use strict"; 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: [], }; };