From: fomichev Date: Mon, 21 Oct 2024 12:23:29 +0000 (+0300) Subject: Добавил тестовый фид X-Git-Tag: 1.6~13^2~48 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=4401f713a25033b04c95288d1993e0ad3c3671aa;p=erp24_rep%2Fyii-erp24%2F.git Добавил тестовый фид --- diff --git a/erp24/controllers/MarketplaceController.php b/erp24/controllers/MarketplaceController.php index b217b956..799268c0 100644 --- a/erp24/controllers/MarketplaceController.php +++ b/erp24/controllers/MarketplaceController.php @@ -27,4 +27,20 @@ class MarketplaceController extends Controller return $xmlFeed; } + + + public function actionTestFeed() + { + + $productsInfo = MarketplaceService::getSomeProductsInfo(3); + + + $xmlFeed = MarketplaceService::createXMLFeed($productsInfo); + + + Yii::$app->response->format = \yii\web\Response::FORMAT_RAW; + Yii::$app->response->headers->add('Content-Type', 'application/xml; charset=utf-8'); + + return $xmlFeed; + } } \ No newline at end of file diff --git a/erp24/services/MarketplaceService.php b/erp24/services/MarketplaceService.php index 6e95710b..a1348634 100644 --- a/erp24/services/MarketplaceService.php +++ b/erp24/services/MarketplaceService.php @@ -54,6 +54,56 @@ class MarketplaceService return $result; } + + /** + * Статический метод для получения информации о заданном количестве продуктов. + * + * @param int $limit Количество продуктов, которые нужно получить. + * @return array + */ + public static function getSomeProductsInfo($limit) + { + $products = Products1c::find() + ->where(['tip' => 'products']) + ->andWhere(['not', ['components' => '']]) + ->limit($limit) + ->all(); + + $result = []; + + foreach ($products as $product) { + $components = json_decode($product->components, true); + $composition = []; + + foreach ($components as $componentId => $quantity) { + $component = Products1c::findOne(['id' => $componentId]); + if ($component && $quantity > 0) { + $composition[] = [ + 'name' => $component->name, + 'quantity' => $quantity, + 'unit' => 'шт' + ]; + } + } + + $result[] = [ + 'id' => $product->id, + 'name' => $product->name, + 'pictures' => self::getProductPictureUrl($product->id), + 'price' => self::getProductPrice($product->id), + 'oldprice' => self::getProductOldPrice($product->id), + 'description' => self::getProductDescription($product->id), + 'qty' => self::getProductQty($product->id), + 'weight' => self::getProductWeight($product->id), + 'minorder' => self::getProductMinOrder($product->id), + 'composition' => $composition, + 'available' => self::getProductAvailability($product->id) + ]; + } + + return $result; + } + /** * Статический метод для создания XML-фида на основе информации о продуктах. * @@ -92,6 +142,7 @@ class MarketplaceService foreach ($productsInfo as $product) { $offer = $offers->addChild('offer'); $offer->addAttribute('id', $product['id']); + $offer->addAttribute('available', $product['available'] ? 'true' : 'false'); $offer->addChild('name', htmlspecialchars($product['name'])); //TODO добавить url на конкректный букет $offer->addChild('url', 'https://bazacvetov24.ru/flowers/' . $product['id']); @@ -132,7 +183,7 @@ class MarketplaceService // Приватные статические вспомогательные методы private static function getProductPictureUrl($productId) { - return ['https://files.erp24.ru/pic.jpg']; + return ['https://bazacvetov24.ru/products/5339/51-roza-premium_3326_md.jpg']; } private static function getProductPrice($productId) { $price = Prices::find() @@ -142,7 +193,7 @@ class MarketplaceService } private static function getProductOldPrice($productId) { return null; } private static function getProductDescription($productId) { return 'Описание'; } - private static function getProductQty($productId) { return 100; } + private static function getProductQty($productId) { return 1; } private static function getProductWeight($productId) { return null; } @@ -150,6 +201,6 @@ class MarketplaceService return 1; } private static function getProductAvailability($productId) { - return true; + return false; } }