OpenXE/classes/Modules/Ebay/Service/EbayListingXmlSerializer.php
2021-05-21 08:49:41 +02:00

67 lines
2.5 KiB
PHP

<?php
namespace Xentral\Modules\Ebay\Service;
use Xentral\Modules\Ebay\Data\StagingListingData;
final class EbayListingXmlSerializer
{
/**
* @param StagingListingData $stagingListing
* @param array $stocksForArticles
*
* @return string
*/
public function createStockSyncXmlString(StagingListingData $stagingListing, $stocksForArticles): string
{
$syncBody = '<ReviseFixedPriceItemRequest version="1.0" xmlns="urn:ebay:apis:eBLBaseComponents">';
$syncBody .= '<Version>1137</Version>';
$syncBody .= '<MessageID>' . $stagingListing->getSku() . '</MessageID>';
$syncBody .= '<Item>
<ItemID>' . $stagingListing->getItemId() . '</ItemID>';
if (!empty($stagingListing->getVariations())) {
$syncBody .= '<Variations>';
foreach ($stagingListing->getVariations() as $variation) {
$quantity = 0;
if (!empty($variation->getArticleId()) && array_key_exists(
$variation->getArticleId(),
$stocksForArticles
)) {
$quantity = $stocksForArticles[$variation->getArticleId()];
$syncBody .= '
<Variation>';
$syncBody .= '<Quantity>' . $quantity . '</Quantity><SKU>' . $variation->getSku() . '</SKU>';
$syncBody .= '<VariationSpecifics>';
foreach ($variation->listSpecifics() as $specificName => $specificValue) {
$syncBody .= '
<NameValueList>';
$syncBody .= '<Name>' . $specificName . '</Name>';
$syncBody .= '<Value>' . $specificValue . '</Value>';
$syncBody .= '</NameValueList>';
}
$syncBody .= '</VariationSpecifics>';
$syncBody .= '</Variation>';
}
}
$syncBody .= '</Variations>';
} else {
$quantity = 0;
if (!empty($stagingListing->getArticleId()) && array_key_exists(
$stagingListing->getArticleId(),
$stocksForArticles
)) {
$quantity = $stocksForArticles[$stagingListing->getArticleId()];
}
$syncBody .= '<Quantity>' . $quantity . '</Quantity>';
}
$syncBody .= '</Item></ReviseFixedPriceItemRequest>';
return $syncBody;
}
}