403Webshell
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/rospirotorg.ru/bitrix/modules/sale/lib/rest/entity/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/sale/lib/rest/entity/order.php
<?php


namespace Bitrix\Sale\Rest\Entity;


use Bitrix\Main\Error;
use Bitrix\Sale\Rest\Attributes;
use Bitrix\Sale\Rest\View\PropertyValue;
use Bitrix\Sale\Rest\View\TradeBinding;
use Bitrix\Sale\Result;

class Order extends Base
{
	public function getFields()
	{
		return [
			'PERSON_TYPE_ID'=>[
				'TYPE'=>self::TYPE_INT,
				'ATTRIBUTES'=>[
					Attributes::Required,
					Attributes::Immutable
				]
			],
			'USER_ID'=>[
				'TYPE'=>self::TYPE_INT,
				'ATTRIBUTES'=>[
					Attributes::Immutable
				]
			],
			'CURRENCY'=>[
				'TYPE'=>self::TYPE_STRING,
				'ATTRIBUTES'=>[
					Attributes::Required,
					Attributes::Immutable
					]
			],
			'LID'=>[
				'TYPE'=>self::TYPE_STRING,
				'ATTRIBUTES'=>[
					Attributes::Required,
					Attributes::Immutable,
					]
			],
			'PERSON_TYPE_XML_ID'=>[
				'TYPE'=>self::TYPE_STRING,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'STATUS_XML_ID'=>[
				'TYPE'=>self::TYPE_STRING,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'ACCOUNT_NUMBER'=>[
				'TYPE'=>self::TYPE_STRING,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'ID'=>[
				'TYPE'=>self::TYPE_INT,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'CANCELED'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'DATE_CANCELED'=>[
				'TYPE'=>self::TYPE_DATETIME,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'DEDUCTED'=>[
				'TYPE'=>self::TYPE_CHAR,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'EMP_CANCELED_ID'=>[
					'TYPE'=>self::TYPE_INT
				],
			'REASON_CANCELED'=>[
				'TYPE'=>self::TYPE_STRING
			],
			'STATUS_ID'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'DATE_STATUS'=>[
				'TYPE'=>self::TYPE_DATETIME,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'EMP_STATUS_ID'=>[
				'TYPE'=>self::TYPE_INT
			],
			'MARKED'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'DATE_MARKED'=>[
				'TYPE'=>self::TYPE_DATETIME,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'EMP_MARKED_ID'=>[
				'TYPE'=>self::TYPE_INT
			],
			'REASON_MARKED'=>[
				/*??*/'TYPE'=>self::TYPE_STRING
			],
			'PRICE'=>[
				'TYPE'=>self::TYPE_FLOAT
			],
			'PAYED'=>[
				'TYPE'=>self::TYPE_CHAR,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'DISCOUNT_VALUE'=>[
				'TYPE'=>self::TYPE_FLOAT
			],
			'DATE_INSERT'=>[
				'TYPE'=>self::TYPE_DATETIME
			],
			'DATE_UPDATE'=>[
				'TYPE'=>self::TYPE_DATETIME,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'USER_DESCRIPTION'=>[
				'TYPE'=>self::TYPE_STRING
			],
			'ADDITIONAL_INFO'=>[
				'TYPE'=>self::TYPE_STRING
			],
			'COMMENTS'=>[
				'TYPE'=>self::TYPE_STRING
			],
			'TAX_VALUE'=>[
				/*??*/'TYPE'=>self::TYPE_FLOAT,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'RECURRING_ID'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'LOCKED_BY'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'DATE_LOCK'=>[
				'TYPE'=>self::TYPE_DATETIME,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'RECOUNT_FLAG'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'AFFILIATE_ID'=>[
				'TYPE'=>self::TYPE_INT
			],
			'DELIVERY_DOC_NUM'=>[
				'TYPE'=>self::TYPE_STRING,
				'ATTRIBUTES'=>[Attributes::Hidden]
			],
			'DELIVERY_DOC_DATE'=>[
				'TYPE'=>self::TYPE_DATETIME,
				'ATTRIBUTES'=>[Attributes::Hidden]
			],
			'UPDATED_1C'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'STORE_ID'=>[
				'TYPE'=>self::TYPE_INT,
				'ATTRIBUTES'=>[Attributes::Hidden]
			],
			'ORDER_TOPIC'=>[
				'TYPE'=>self::TYPE_STRING
			],
			'RESPONSIBLE_ID'=>[
				'TYPE'=>self::TYPE_INT
			],
			'DATE_BILL'=>[
				'TYPE'=>self::TYPE_DATETIME,
				'ATTRIBUTES'=>[Attributes::Hidden]
			],
			'DATE_PAY_BEFORE'=>[
				'TYPE'=>self::TYPE_DATETIME,
				'ATTRIBUTES'=>[Attributes::Hidden]
			],
			'XML_ID'=>[
				'TYPE'=>self::TYPE_STRING
			],
			'ID_1C'=>[
				'TYPE'=>self::TYPE_STRING
			],
			'VERSION_1C'=>[
				'TYPE'=>self::TYPE_STRING
			],
			'VERSION'=>[
				'TYPE'=>self::TYPE_INT,
				'ATTRIBUTES'=>[Attributes::ReadOnly]
			],
			'EXTERNAL_ORDER'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'COMPANY_ID'=>[
				'TYPE'=>self::TYPE_INT
			],
			//region List fields
			'PAYMENTS'=>['TYPE'=>self::TYPE_LIST, 'ATTRIBUTES'=>[Attributes::Hidden]],
			'SHIPMENTS'=>['TYPE'=>self::TYPE_LIST, 'ATTRIBUTES'=>[Attributes::Hidden]],
			'PROPERTY_VALUES'=>['TYPE'=>self::TYPE_LIST, 'ATTRIBUTES'=>[Attributes::Hidden]],
			'BASKET_ITEMS'=>['TYPE'=>self::TYPE_LIST, 'ATTRIBUTES'=>[Attributes::Hidden]],
			//endregion
		];
	}

	public function internalizeFieldsModify($fields, $fieldsInfo=[])
	{
		$result = [];

		$payment = new Payment();
		$shipment = new Shipment();
		$basketItem = new BasketItem();
		$propertyValue = new PropertyValue();
		$tradeBinding = new TradeBinding();


		$listFieldsInfoAdd = $this->getListFieldInfo($this->getFields(), ['filter'=>['ignoredAttributes'=>[Attributes::Hidden, Attributes::ReadOnly]]]);
		$listFieldsInfoUpdate = $this->getListFieldInfo($this->getFields(), ['filter'=>['ignoredAttributes'=>[Attributes::Hidden, Attributes::ReadOnly, Attributes::Immutable], 'skipFields'=>['ID']]]);

		$result['ORDER'] = $this->internalizeFields($fields['ORDER'],
			$this->isNewItem($fields['ORDER'])? $listFieldsInfoAdd:$listFieldsInfoUpdate
		);

		if(isset($fields['ORDER']['BASKET_ITEMS']))
		{
			$result['ORDER']['BASKET_ITEMS'] = $basketItem->internalizeFieldsModify($fields)['ORDER']['BASKET_ITEMS'];
		}

		if(isset($fields['ORDER']['PROPERTY_VALUES']))
		{
			$result['ORDER']['PROPERTY_VALUES'] = $propertyValue->internalizeFieldsModify($fields)['ORDER']['PROPERTY_VALUES'];
		}

		if(isset($fields['ORDER']['PAYMENTS']))
		{
			$result['ORDER']['PAYMENTS'] = $payment->internalizeFieldsModify($fields)['ORDER']['PAYMENTS'];
		}

		if(isset($fields['ORDER']['SHIPMENTS']))
		{
			$result['ORDER']['SHIPMENTS'] = $shipment->internalizeFieldsModify($fields)['ORDER']['SHIPMENTS'];
		}

		if(isset($fields['ORDER']['TRADE_BINDINGS']))
		{
			$result['ORDER']['TRADE_BINDINGS'] = $tradeBinding->internalizeFieldsModify($fields)['ORDER']['TRADE_BINDINGS'];
		}

		return $result;
	}

	public function convertKeysToSnakeCaseArguments($name, $arguments)
	{
		if($name == 'import')
		{
			if(isset($arguments['fields']))
			{
				$fields = $arguments['fields'];
				if(!empty($fields))
					$arguments['fields'] = $this->convertKeysToSnakeCaseFields($fields);
			}
		}
		return $arguments;
	}

	public function internalizeArguments($name, $arguments)
	{
		if($name == 'getdeliveryidlist'
			|| $name == 'getpayments'
			|| $name == 'getpaysystemidlist'
			|| $name == 'getprintedchecks'
			|| $name == 'getshipments'
			|| $name == 'getbasket'
			|| $name == 'getpropertyvalues'
			|| $name == 'getcurrency'
			|| $name == 'getdateinsert'
			|| $name == 'getapplydiscount'
			|| $name == 'getpersontypeid'
			|| $name == 'getprice'
			|| $name == 'getproperties'
			|| $name == 'getsiteid'
			|| $name == 'getsumpaid'
			|| $name == 'gettaxlist'
			|| $name == 'gettaxlocation'
			|| $name == 'gettaxprice'
			|| $name == 'gettaxvalue'
			|| $name == 'getuserid'
			|| $name == 'getvatrate'
			|| $name == 'getvatsum'
			|| $name == 'iscanceled'
			|| $name == 'isexternal'
			|| $name == 'ismarked'
			|| $name == 'ispaid'
			|| $name == 'isshipped'
			|| $name == 'isusedvat'
			|| $name == 'importdelete'
		){}
		elseif($name == 'import')
		{
			$fields = $arguments['fields'];
			if(!empty($fields))
				$arguments['fields'] = $this->internalizeFieldsImport($fields);
		}
		else
		{
			parent::internalizeArguments($name, $arguments);
		}

		return $arguments;
	}

	protected function internalizeFieldsImport($fields)
	{
		$result = [];

		$payment = new Payment();
		$shipment = new Shipment();
		$shipmentItem = new ShipmentItem();
		$basketItem = new BasketItem();
		$tradeBinding = new TradeBinding();
		$propertyValue = new PropertyValue();
		$basketProperties = new BasketProperties();


		if(isset($fields['ORDER']))
		{
			$result['ORDER'] = $this->internalizeFields($fields['ORDER'], $this->getFields());//only for importAction PERSON_TYPE_XML_ID, STATUS_XML_ID
		}

		if(isset($fields['ORDER']['BASKET_ITEMS']))
		{
			$result['ORDER']['BASKET_ITEMS'] = $basketItem->internalizeListFields($fields['ORDER']['BASKET_ITEMS']);

			foreach ($fields['ORDER']['BASKET_ITEMS'] as $k=>$items)
			{
				if(isset($items['PROPERTIES']))
				{
					$result['ORDER']['BASKET_ITEMS'][$k]['PROPERTIES'] = $basketProperties->internalizeListFields($items['PROPERTIES']);
				}
			}
		}

		if(isset($fields['ORDER']['PROPERTY_VALUES']))
		{
			$result['ORDER']['PROPERTY_VALUES'] = $propertyValue->internalizeListFields($fields['ORDER']['PROPERTY_VALUES']);//only for importAction ORDER_PROPS_XML_ID
		}

		if(isset($fields['ORDER']['PAYMENTS']))
		{
			$result['ORDER']['PAYMENTS'] = $payment->internalizeListFields($fields['ORDER']['PAYMENTS']);//only for importAction PAY_SYSTEMS_XML_ID
		}

		if(isset($fields['ORDER']['SHIPMENTS']))
		{
			$result['ORDER']['SHIPMENTS'] = $shipment->internalizeListFields($fields['ORDER']['SHIPMENTS']);//only for importAction DELIVERY_XML_ID, STATUS_XML_ID

			foreach ($fields['ORDER']['SHIPMENTS'] as $k=>$items)
			{
				if(isset($items['SHIPMENT_ITEMS']))
				{
					$result['ORDER']['SHIPMENTS'][$k]['SHIPMENT_ITEMS'] = $shipmentItem->internalizeListFields($items['SHIPMENT_ITEMS']);
				}
			}
		}

		if(isset($fields['ORDER']['TRADE_BINDINGS']))
		{
			$result['ORDER']['TRADE_BINDINGS'] = $tradeBinding->internalizeListFields($fields['ORDER']['TRADE_BINDINGS']);//only for importAction TRADING_PLATFORM_XML_ID
		}

		return $result;
	}

	protected function getRewritedFields()
	{
		return [
			'PERSON_TYPE_XML_ID'=>[
				'REFERENCE_FIELD'=>'PERSON_TYPE.XML_ID'
			],
			'STATUS_XML_ID'=>[
				'REFERENCE_FIELD'=>'STATUS_TABLE.XML_ID'
			]
		];
	}

	public function externalizeFields($fields)
	{
		$basketItem = new \Bitrix\Sale\Rest\Entity\BasketItem();
		$payment = new \Bitrix\Sale\Rest\Entity\Payment();
		$shipment = new \Bitrix\Sale\Rest\Entity\Shipment();
		$shipmentItem = new \Bitrix\Sale\Rest\Entity\ShipmentItem();
		$tradeBinding = new TradeBinding();
		$propertyValue = new PropertyValue();
		$basketProperties = new \Bitrix\Sale\Rest\Entity\BasketProperties();

		$result = parent::externalizeFields($fields);

		if(isset($fields['PROPERTY_VALUES']) && count($fields['PROPERTY_VALUES'])>0)
		{
			$result['PROPERTY_VALUES'] = $propertyValue->externalizeListFields($fields['PROPERTY_VALUES']);
		}

		if(isset($fields['BASKET_ITEMS']) && count($fields['BASKET_ITEMS'])>0)
		{
			foreach ($fields['BASKET_ITEMS'] as $k=>$item)
			{
				$result['BASKET_ITEMS'][$k] = $basketItem->externalizeFields($item);
				//$result['BASKET_ITEMS'][$k]['PROPERTIES'] = $basketProperties->externalizeListFields($item['PROPERTIES']);
			}
		}

		if(isset($fields['PAYMENTS']) && count($fields['PAYMENTS'])>0)
		{
			$result['PAYMENTS'] = $payment->externalizeListFields($fields['PAYMENTS']);
		}

		if(isset($fields['SHIPMENTS']) && count($fields['SHIPMENTS'])>0)
		{
			foreach($fields['SHIPMENTS'] as $k=>$item)
			{
				$result['SHIPMENTS'][$k] = $shipment->externalizeFields($item);
				/*if(isset($item['SHIPMENT_ITEMS']))
				{
					$data['SHIPMENTS'][$k]['SHIPMENT_ITEMS'] = $shipmentItem->externalizeListFields($item['SHIPMENT_ITEMS']);
				}*/
			}
		}

		if(isset($fields['TRADE_BINDINGS']) && count($fields['TRADE_BINDINGS'])>0)
			$result['TRADE_BINDINGS'] = $tradeBinding->externalizeListFields($fields['TRADE_BINDINGS']);

		return $result;
	}

	public function externalizeFieldsModify($fields)
	{
		return $this->externalizeFields($fields);
	}

	public function externalizeFieldsTryModify($fields)
	{
		$result = parent::externalizeFieldsTryModify($fields);

		if(isset($fields['PAYMENTS']))
		{
			foreach ($fields['PAYMENTS'] as $k=>$payment)
			{
				if(isset($payment['LIST_PAY_SYSTEM_WITH_RESTRICTIONS']))
				{
					$result['PAYMENTS'][$k]['LIST_PAY_SYSTEM_WITH_RESTRICTIONS'] = $payment['LIST_PAY_SYSTEM_WITH_RESTRICTIONS'];
				}
			}
		}

		if(isset($fields['SHIPMENTS']))
		{
			foreach ($fields['SHIPMENTS'] as $k=>$shipments)
			{
				if(isset($shipments['LIST_DELIIVERY_SERVICES_RESTRICTIONS']))
				{
					$result['SHIPMENTS'][$k]['LIST_DELIIVERY_SERVICES_RESTRICTIONS'] = $shipments['LIST_DELIIVERY_SERVICES_RESTRICTIONS'];
				}
			}
		}

		return $result;
	}

	public function externalizeResult($name, $fields)
	{
		if($name == 'getdeliveryidlist'
			|| $name == 'getpaysystemidlist'
			|| $name == 'getprintedchecks'
		){}
		elseif ($name == 'getbasket')
		{
			$basketItem = new BasketItem();
			$fields = $basketItem->externalizeListFields($fields);
		}
		elseif ($name == 'getpayments')
		{
			$payment = new Payment();
			$fields = $payment->externalizeListFields($fields);
		}
		elseif ($name == 'getshipments')
		{
			$shipment = new Shipment();
			$fields = $shipment->externalizeListFields($fields);
		}
		elseif ($name == 'getpropertyvalues')
		{
			$propertyValue = new PropertyValue();
			$fields = $propertyValue->externalizeListFields($fields);
		}
		elseif($name == 'import')
		{
			$fields = $this->externalizeFieldsModify($fields);
		}
		else
		{
			$fields = parent::externalizeResult($name, $fields);
		}

		return $fields;
	}

	public function checkRequiredFieldsModify($fields)
	{
		$r = new Result();

		$payment = new Payment();
		$shipment = new Shipment();
		$basketItem = new BasketItem();
		$propertyValue = new PropertyValue();
		$tradeBinding = new TradeBinding();

		$listFieldsInfoAdd = $this->getListFieldInfo($this->getFields(), ['filter'=>['ignoredAttributes'=>[Attributes::Hidden, Attributes::ReadOnly]]]);
		$listFieldsInfoUpdate = $this->getListFieldInfo($this->getFields(), ['filter'=>['ignoredAttributes'=>[Attributes::Hidden, Attributes::ReadOnly, Attributes::Immutable], 'skipFields'=>['ID']]]);

		$required = $this->checkRequiredFields($fields['ORDER'],
			$this->isNewItem($fields['ORDER'])? $listFieldsInfoAdd:$listFieldsInfoUpdate
		);
		if($required->isSuccess() == false)
		{
			$r->addError(new Error(implode(', ', $required->getErrorMessages()).'.'));
		}

		$required = $propertyValue->checkRequiredFieldsModify($fields);
		if($required->isSuccess() == false)
		{
			$r->addError(new Error(implode(', ', $required->getErrorMessages())));
		}

		if(isset($fields['ORDER']['BASKET_ITEMS']))
		{
			$required = $basketItem->checkRequiredFieldsModify($fields);
			if($required->isSuccess() == false)
			{
				$r->addError(new Error(implode(', ', $required->getErrorMessages())));
			}
		}

		if(isset($fields['ORDER']['PAYMENTS']))
		{
			$required = $payment->checkRequiredFieldsModify($fields);
			if($required->isSuccess() == false)
			{
				$r->addError(new Error(implode(', ', $required->getErrorMessages())));
			}
		}

		if(isset($fields['ORDER']['SHIPMENTS']))
		{
			$required = $shipment->checkRequiredFieldsModify($fields);
			if($required->isSuccess() == false)
			{
				$r->addError(new Error(implode(', ', $required->getErrorMessages())));
			}
		}

		if(isset($fields['ORDER']['TRADE_BINDINGS']))
		{
			$required = $tradeBinding->checkRequiredFieldsModify($fields);
			if($required->isSuccess() == false)
			{
				$r->addError(new Error(implode(', ', $required->getErrorMessages())));
			}
		}

		return $r;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit