%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/exchange/entity/ |
Current File : //proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/exchange/entity/entityimportloader.php |
<?php namespace Bitrix\Sale\Exchange\Entity; use Bitrix\Crm\InvoiceTable; use Bitrix\Main; use Bitrix\Sale\Exchange\EntityType; use Bitrix\Sale\Exchange\ISettings; use Bitrix\Sale\Internals\OrderTable; use Bitrix\Sale\Internals\PaymentTable; use Bitrix\Sale\Internals\ShipmentTable; use Bitrix\Sale\Internals\UserPropsTable; /** * Class EntityImportLoader * @package Bitrix\Sale\Exchange\Entity * @internal */ class EntityImportLoader { /** @var ISettings */ protected $settings = null; /** * @return array * @throws Main\ArgumentException */ protected static function getFields() { throw new Main\ArgumentException('The method is not implemented.'); } /** * @return string */ protected static function getExternalField() { return 'ID_1C'; } /** * @param $number * @return null * @throws Main\ArgumentException */ public function getByNumber($number) { if($number === "") { throw new Main\ArgumentException('Is not defined', 'ID'); } $entity = static::getEntityTable(); /** TODO: only EntityType::ORDER */ $accountNumberPrefix = $this->settings->prefixFor(EntityType::ORDER); if(is_numeric($number)) { if($r = $entity::getById($number)->fetch()) return $r; if($r = $entity::getList(array( 'select' => array('ID'), 'filter' => array('ID_1C' => $number), 'order' => array('ID' => 'DESC')))->fetch() ) return $r; if($r = $entity::getList(array( 'select' => array('ID'), 'filter' => array('ACCOUNT_NUMBER' => $number), 'order' => array('ID' => 'DESC')))->fetch() ) return $r; if ($accountNumberPrefix !== "") { if(strpos($number, $accountNumberPrefix) === 0) { $number = substr($number, strlen($accountNumberPrefix)); if ($r = $entity::getById($number)->fetch()) return $r; } } } else { if ($r = $entity::getList(array( 'select' => array('ID'), 'filter' => array('ID_1C' => $number), 'order' => array('ID' => 'DESC')))->fetch() ) return $r; if ($r = $entity::getList(array( 'select' => array('ID'), 'filter' => array('ACCOUNT_NUMBER' => $number), 'order' => array('ID' => 'DESC')))->fetch() ) return $r; if($accountNumberPrefix != "") { if(strpos($number, $accountNumberPrefix) === 0) { $number = substr($number, strlen($accountNumberPrefix)); if($r = $entity::getById($number)->fetch()) return $r; if($r = $entity::getList(array( 'select' => array('ID'), 'filter' => array('ACCOUNT_NUMBER' => $number), 'order' => array('ID' => 'DESC')))->fetch() ) return $r; } } } return null; } /** * @param $xmlId * @return null * @throws Main\ArgumentException */ public function getByExternalId($xmlId) { if($xmlId === "") { throw new Main\ArgumentException('Is not defined', 'XML_1C_DOCUMENT_ID'); } $entity = static::getEntityTable(); if($r = $entity::getList(array( 'select' => static::getFields(), 'filter' => array(static::getExternalField() => $xmlId), 'order' => array('ID' => 'DESC')))->fetch() ) { return $r; } return null; } /** * @return Main\Entity\DataManager * @throws Main\ArgumentException */ protected static function getEntityTable() { throw new Main\ArgumentException('The method is not implemented.'); } /** * @param ISettings $settings */ public function loadSettings(ISettings $settings) { $this->settings = $settings; } } class OrderImportLoader extends EntityImportLoader { protected static function getFields() { return array( 'ID', 'ID_1C' ); } protected static function getEntityTable() { return new OrderTable(); } } class PaymentImportLoader extends EntityImportLoader { protected static function getFields() { return array( 'ID', 'ID_1C', 'ORDER_ID' ); } protected static function getEntityTable() { return new PaymentTable(); } } class ShipmentImportLoader extends EntityImportLoader { protected static function getFields() { return array( 'ID', 'ID_1C', 'ORDER_ID' ); } protected static function getEntityTable() { return new ShipmentTable(); } } /** * Class ProfileImportLoader * @package Bitrix\Sale\Exchange\Entity * @deprecated */ class ProfileImportLoader extends EntityImportLoader { /** * @return string */ protected static function getExternalField() { return 'XML_ID'; } protected static function getFields() { return array( 'ID' ); } protected static function getEntityTable() { return new UserPropsTable(); } } class UserProfileImportLoader extends EntityImportLoader { /** * @param $number * @return null * @throws Main\ArgumentException */ public function getByNumber($number) { return null; } /** * @return string */ protected static function getExternalField() { return 'XML_ID'; } protected static function getFields() { return array( 'ID' ); } protected static function getEntityTable() { return new Main\UserTable(); } public function getByExternalId($xmlId) { $result = parent::getByExternalId($xmlId); if(empty($result)) { $result = self::getUserByCode($xmlId); } return $result; } /** * @param $code * @return array */ static public function getUserByCode($code) { $result = array(); $code = rtrim($code); $userCode = explode("#", $code); if(intval($userCode[0]) > 0) { $r = \CUser::GetByID($userCode[0]); if ($arUser = $r->Fetch()) { if(rtrim(htmlspecialcharsback(substr(htmlspecialcharsbx($arUser["ID"] . "#" . $arUser["LOGIN"] . "#" . $arUser["LAST_NAME"] . " " . $arUser["NAME"] . " " . $arUser["SECOND_NAME"]), 0, 80))) == $code) $result = $arUser; } } return $result; } } class InvoiceImportLoader extends OrderImportLoader { protected static function getEntityTable() { return new \Bitrix\Crm\Invoice\Internals\InvoiceTable(); } } class PaymentInvoiceImportLoader extends PaymentImportLoader { protected static function getEntityTable() { return new \Bitrix\Crm\Invoice\Internals\PaymentTable(); } } class ShipmentInvoiceImportLoader extends ShipmentImportLoader { protected static function getEntityTable() { return new \Bitrix\Crm\Invoice\Internals\ShipmentTable(); } }