Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/catalog/lib/document/action/barcode/
Upload File :
Current File : /var/www/homesaver/www/bitrix/modules/catalog/lib/document/action/barcode/addstorebarcodeaction.php

<?php

namespace Bitrix\Catalog\Document\Action\Barcode;

use Bitrix\Catalog\Document\Action;
use Bitrix\Catalog\Document\Action\ProductAndStoreInfo;
use Bitrix\Catalog\ProductTable;
use Bitrix\Main\Application;
use Bitrix\Main\Error;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Result;
use CCatalogStoreBarCode;

Loc::loadMessages(
	Application::getDocumentRoot() .'/bitrix/modules/catalog/general/store_docs_type.php'
);

/**
 * Add barcode to store.
 */
class AddStoreBarcodeAction implements Action
{
	use ProductAndStoreInfo;
	use BaseStoreBarcodeAction;

	/**
	 * @inheritDoc
	 */
	public function canExecute(): Result
	{
		$result = new Result();

		$row = $this->getBarcodeRow();
		if ($row && $this->productId !== (int)$row['PRODUCT_ID'])
		{
			$message = Loc::getMessage('CATALOG_STORE_DOCS_ERR_BARCODE_ALREADY_EXIST', [
				'#PRODUCT#' => $this->getProductName(),
				'#BARCODE#' => $this->barcode,
			]);
			$result->addError(new Error($message));
		}

		return $result;
	}

	/**
	 * @inheritDoc
	 *
	 * @return Result
	 */
	public function execute(): Result
	{
		$result = new Result();

		$row = $this->getBarcodeRow();
		if ($row)
		{
			if ($this->storeId === (int)$row['STORE_ID'])
			{
				// no changes - no action
				return $result;
			}

			$id = CCatalogStoreBarCode::Update($row['ID'], [
				'STORE_ID' => $this->storeId,
				'MODIFIED_BY' => $this->userId,
			]);
		}
		else
		{
			$id = CCatalogStoreBarCode::add([
				'PRODUCT_ID' => $this->productId,
				'STORE_ID' => $this->storeId,
				'BARCODE' => $this->barcode,
				'MODIFIED_BY' => $this->userId,
				'CREATED_BY' => $this->userId,
			]);
		}

		if (!$id)
		{
			$result->addError(new Error('Can\'t save barcode'));
		}

		return $result;
	}
}