%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/sale/lib/exchange/onec/subordinatesale/ |
Current File : //home/bitrix/www/bitrix/modules/sale/lib/exchange/onec/subordinatesale/orderdocument.php |
<?php namespace Bitrix\Sale\Exchange\OneC\SubordinateSale; class OrderDocument extends \Bitrix\Sale\Exchange\OneC\OrderDocument { /** * @return array */ static public function getFieldsInfo() { return array_merge( parent::getFieldsInfo(), array('SUBORDINATES'=>array()) ); } /** * @param array $document * @return array */ static public function prepareFieldsData(array $document) { $result = parent::prepareFieldsData($document); foreach(static::getFieldsInfo() as $k=>$v) { switch($k) { case 'SUBORDINATES': $result[$k] = self::resolveSubordinateDocuments($document); break; } } return $result; } /** * @param $value * @return array|null */ protected static function resolveSubordinateDocuments($value) { $result = null; $message = self::getMessage(); if(is_array($value["#"][$message["SALE_EXPORT_SUBORDINATES"]][0]["#"][$message["SALE_EXPORT_SUBORDINATE"]][0]["#"])) { $rawSubordinates = $value["#"][$message["SALE_EXPORT_SUBORDINATES"]][0]["#"][$message["SALE_EXPORT_SUBORDINATE"]]; foreach ($rawSubordinates as $raw) { $documentTypeId = self::resolveRawDocumentTypeId($raw); $document = DocumentFactory::create($documentTypeId); $result[] = $document::prepareFieldsData($raw); } } return $result; } static protected function unitFieldsInfo(&$info) { $info['ITEMS']['FIELDS']['BASE_UNIT'] = array( 'TYPE' => 'string' ); } /** * @param array $fields * @param int $level * @return string */ protected function outputXml(array $fields, $level = 0) { $xml = parent::outputXml($fields, $level); foreach ($fields as $name=>$value) { if(is_array($value)) { switch ($name) { case 'SUBORDINATES': if(is_array($value) && count($value)>0) { $xml .= $this->openNodeDirectory($level, 'SUBORDINATES'); foreach ($value as $v) { $xml .= $this->openNodeDirectory($level+1, 'SUBORDINATE'); $typeId = static::resolveDocumentTypeId($v['OPERATION']); if($typeId>0) { $document = DocumentFactory::create($typeId); $document->setFields($v); $xml .= $document->output($level+2); } $xml .= $this->closeNodeDirectory($level+1, 'SUBORDINATE'); } $xml .= $this->closeNodeDirectory($level, 'SUBORDINATES'); } break; } } } return $xml; } }