Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/wbs24.ozonexport/lib/ |
Upload File : |
<?php namespace Wbs24\Ozonexport; class PropertiesBasedWarehouse extends Warehouse { use Properties; use PackagingRatio; protected $wrappers; protected $properties; function __construct($param = []) { parent::__construct($param); $objects = $this->param['objects'] ?? []; $this->wrappers = new Wrappers($objects); $this->properties = false; } public function checkNeedProperties() { return true; } public function getXml($product) { $storeId = $this->param['storeId'] ?? 1; $stocks = $this->getStockFromProperties($product); $stocks = $this->verifyAndDropStockIfLess($stocks); $xml = '<outlets>'; foreach ($stocks as $stock) { $stock['AMOUNT'] = $this->getStockWithPackagingRatio($stock['AMOUNT']); $xml .= '<outlet ' .'instock="'.$stock['AMOUNT'].'" ' .'warehouse_name="'.$stock['STORE_TITLE'].'"' .'></outlet>' ; } $xml .= '</outlets>'."\n"; return $xml; } protected function getStockFromProperties($product) { $stocks = []; $propertyIdsToStoreTitle = []; for ($i = 1; $i <= 5; $i++) { $propertyId = $this->param['stocksProp'.$i] ?? false; if (!$propertyId) continue; $storeTitle = $this->param['stocksPropName'.$i] ?? false; if (!$storeTitle) continue; $propertyIdsToStoreTitle[$propertyId] = $storeTitle; } $product = $this->addPropertiesToElement($product, array_keys($propertyIdsToStoreTitle)); foreach ($propertyIdsToStoreTitle as $propertyId => $storeTitle) { $amount = $product['PROPERTY_'.$propertyId.'_VALUE'][0] ?? 0; $stocks[] = [ 'AMOUNT' => intval($amount), 'STORE_TITLE' => $storeTitle, ]; } return $stocks; } protected function verifyAndDropStockIfLess($stocks) { $minStock = $this->param['minStock'] ?? 0; foreach ($stocks as $k => $stock) { $stocks[$k]['AMOUNT'] = $stock['AMOUNT'] >= $minStock ? $stock['AMOUNT'] : 0; } return $stocks; } }