From 834a731201da030518bd32ed15df5f65133927d7 Mon Sep 17 00:00:00 2001 From: Bert Devriese Date: Fri, 6 Feb 2026 19:25:17 +0100 Subject: [PATCH] Fix CommodityClassification reader to support CommodityCode element The UBL CommodityClassification can contain either ItemClassificationCode or CommodityCode. The reader only looked for ItemClassificationCode, causing warnings when parsing XML files that use CommodityCode instead. This fix: - Adds fallback to CommodityCode when ItemClassificationCode is not found - Adds null-check to prevent warnings when neither element is present - Adds null-coalescing for the value to handle edge cases --- src/CommodityClassification.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/CommodityClassification.php b/src/CommodityClassification.php index b8016e2..a57a8b9 100644 --- a/src/CommodityClassification.php +++ b/src/CommodityClassification.php @@ -104,11 +104,17 @@ public static function xmlDeserialize(Reader $reader) $mixedContent = mixedContent($reader); $collection = new ArrayCollection($mixedContent); - $itemClassificationCode = ReaderHelper::getTag(Schema::CBC . 'ItemClassificationCode', $collection); + // UBL CommodityClassification kan zowel ItemClassificationCode als CommodityCode bevatten + $classificationCode = ReaderHelper::getTag(Schema::CBC . 'ItemClassificationCode', $collection) + ?? ReaderHelper::getTag(Schema::CBC . 'CommodityCode', $collection); + + if ($classificationCode === null) { + return new static(); + } return (new static()) - ->setItemClassificationCode($itemClassificationCode['value']) - ->setItemClassificationListId($itemClassificationCode['attributes']['listID'] ?? null) - ->setItemClassificationListVersionId($itemClassificationCode['attributes']['listVersionID'] ?? null); + ->setItemClassificationCode($classificationCode['value'] ?? null) + ->setItemClassificationListId($classificationCode['attributes']['listID'] ?? null) + ->setItemClassificationListVersionId($classificationCode['attributes']['listVersionID'] ?? null); } }