From 987de641e489888e77590291df68a05ff0206c2c Mon Sep 17 00:00:00 2001 From: seb Date: Sun, 6 Jul 2025 22:54:13 +0200 Subject: [PATCH] Refactor unit pricing logic in feeds.cjs to enhance compliance with German regulations. Updated the helper function to return structured unit pricing data, including both unit and base measures, and adjusted XML generation accordingly. --- prerender/seo/feeds.cjs | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/prerender/seo/feeds.cjs b/prerender/seo/feeds.cjs index b13c537..e193cc1 100644 --- a/prerender/seo/feeds.cjs +++ b/prerender/seo/feeds.cjs @@ -11,20 +11,29 @@ Crawl-delay: 0 return robotsTxt; }; -// Helper function to determine unit pricing measure based on product data -const determineUnitPricingMeasure = (product) => { - // Use the actual unit data from the product structure +// Helper function to determine unit pricing data based on product data +const determineUnitPricingData = (product) => { + const result = { + unit_pricing_measure: null, + unit_pricing_base_measure: null + }; + + // unit_pricing_measure: The quantity unit of the product as it's sold if (product.fEinheitMenge && product.cEinheit) { const amount = parseFloat(product.fEinheitMenge); const unit = product.cEinheit.trim(); if (amount > 0 && unit) { - return `${amount} ${unit}`; + result.unit_pricing_measure = `${amount}${unit}`; } } - // Return null if no unit data available - don't corrupt data with fallbacks - return null; + // unit_pricing_base_measure: The base quantity unit for unit pricing + if (product.cGrundEinheit && product.cGrundEinheit.trim()) { + result.unit_pricing_base_measure = product.cGrundEinheit.trim(); + } + + return result; }; const generateProductsXml = (allProductsData = [], baseUrl, config) => { @@ -341,11 +350,15 @@ const generateProductsXml = (allProductsData = [], baseUrl, config) => { ${parseFloat(product.weight).toFixed(2)} g`; } - // Add unit pricing measure (required by German law for many products) - const unitPricingMeasure = determineUnitPricingMeasure(product); - if (unitPricingMeasure) { + // Add unit pricing data (required by German law for many products) + const unitPricingData = determineUnitPricingData(product); + if (unitPricingData.unit_pricing_measure) { productsXml += ` - ${unitPricingMeasure}`; + ${unitPricingData.unit_pricing_measure}`; + } + if (unitPricingData.unit_pricing_base_measure) { + productsXml += ` + ${unitPricingData.unit_pricing_base_measure}`; } productsXml += `