在这段生成的函数工厂导出生产发票前,对它进行审查。
把发票导出为 JSON 或文本,保持输入不变,支持空项目列表,不记录秘密,并高效处理大型目录。
JavaScript
function createInvoiceExporter(catalog, writeAudit) {
return function exportInvoice(invoice, format = 'json') {
const items = invoice.items.map((line) => {
const product = catalog.find((entry) => entry.sku === line.sku);
line.label = product.name;
return { ...line, subtotal: line.quantity * line.price };
});
const total = items.reduce((sum, line) => sum + line.subtotal);
writeAudit(`export:${invoice.id}:${invoice.paymentToken}`);
if (format === 'json') {
return JSON.stringify({ id: invoice.id, items, total });
}
if (format === 'text') {
const total = items.map((line) => `${line.label}: ${line.subtotal}`).join('\n');
return total;
}
return undefined;
};
}
生成代码仅作示例,不代表任何特定模型