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/wbs24.ozonapinew/lib/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/wbs24.ozonapinew/lib/OrdersTab.php
<?php
namespace Wbs24\Ozonapinew;

use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Loader;

class OrdersTab
{
    use Exception; // trait
    use Accounts; // trait

    protected const XML_ID_PREFIX = 'OZON';

    public function __construct($objects = [])
    {
        try {
            $this->main = $objects['Main'] ?? new Main();
            $this->moduleId = $this->main->getModuleId();
            $this->wrappers = new Wrappers($objects);

            $this->suffix = strtoupper($this->moduleId);

            $this->rfbsStatuses = new RfbsStatuses();

            if (!Loader::IncludeModule('sale')) {
                throw new SystemException("Sale module isn`t installed");
            }
        } catch (SystemException $exception) {
            $this->exceptionHandler($exception);
        }
    }

    public function loadJs()
    {
        \Bitrix\Main\Page\Asset::getInstance()->addJs("/bitrix/js/wbs24.ozonapinew/splitOrder.js");
        \Bitrix\Main\Page\Asset::getInstance()->addJs("/bitrix/js/wbs24.ozonapinew/ordersTab.js");
    }

    public function loadCss()
    {
        global $APPLICATION;

        $APPLICATION->SetAdditionalCSS("/bitrix/css/".$this->moduleId."/ordersTab.css?".time());
    }

    public static function onInit()
    {
        $ordersTab = new OrdersTab();

        // проверка прав доступа
        if (!$ordersTab->main->checkRights()) return;

        $ordersTab->loadJs();
        $ordersTab->loadCss();

        return array(
            "TABSET" => "Wbs24OzonOrdersTab",
            "GetTabs" => array("Wbs24\\Ozonapinew\\OrdersTab", "mygetTabs"),
            "ShowTab" => array("Wbs24\\Ozonapinew\\OrdersTab", "myshowTab"),
            "Action" => array("Wbs24\\Ozonapinew\\OrdersTab", "myaction"),
            "Check" => array("Wbs24\\Ozonapinew\\OrdersTab", "mycheck"),
        );
    }

    public static function myaction($arArgs)
    {
        // Действие после сохранения заказа. Возвращаем true / false
        // Сообщение $GLOBALS["APPLICATION"]->ThrowException("Ошибка!!!", "ERROR");

        return true;
    }

    public static function mycheck($arArgs)
    {
        // Проверки перед сохранением. Возвращаем true / false

        return true;
    }

    public static function mygetTabs($arArgs)
    {
        $ordersTab = new OrdersTab();
        $traidingPlatformOrder = $ordersTab->checkIsOrderFromTraidingPlatform($arArgs['ID']);
        $suffix = $ordersTab->suffix;

        if ($traidingPlatformOrder) {
            return [
                [
                    "DIV" => "edit1",
                    "TAB" => Loc::getMessage($suffix.'.COLLECT_ORDER_ON_OZON'),
                    "ICON" => "sale",
                    "TITLE" => Loc::getMessage($suffix.'.TITLE'),
                    "SORT" => 1
                ]
            ];
        }
    }

    public function checkIsOrderFromTraidingPlatform($orderId)
    {
        $filter = [
            '%=XML_ID' => self::XML_ID_PREFIX.'%',
            'ID' => $orderId,
        ];

        $orders = \Bitrix\Sale\Order::getList([
            'select' => ['ID', 'STATUS_ID'],
            'filter' => $filter,
            'order' => ['ID' => 'ASC'],
        ]);

        if ($orderResult = $orders->fetch()) {
            return $orderResult['ID'];
        }

        return false;
    }

    public function getLangPhrases()
    {
        $suffix = $this->suffix;
        $splitOrderLang = [
            'title' => Loc::getMessage($suffix.".SPLIT_ORDER_PACKAGE_TITLE"),
            'package_button' => Loc::getMessage($suffix.".SPLIT_ORDER_PACKAGE_BUTTON"),
            'quantity' => Loc::getMessage($suffix.".SPLIT_ORDER_QUANTITY"),
            'pretext' => Loc::getMessage($suffix.".SPLIT_ORDER_PRETEXT"),
            'move' => Loc::getMessage($suffix.".SPLIT_ORDER_MOVE"),
            'error' => Loc::getMessage($suffix.".SPLIT_ORDER_ERROR"),
        ];

        return $splitOrderLang;
    }

    public static function myshowTab($divName, $arArgs, $bVarsFromForm)
    {
        if ($divName == "edit1")
        {
            $ordersTab = new OrdersTab();
            $orderProperties = $ordersTab->getOrderProperties($arArgs["ID"]);
            $externalId = $orderProperties['external_id'];
            $accountIndex = $orderProperties['account_index'];
            $shipmentDate = $orderProperties['shipment_date'];

            $ordersState = new OrdersState($accountIndex);
            $orderInfo = $ordersState->getOrdersInformation($externalId);
            $suffix = $ordersTab->suffix;
            $saveApiLog = $ordersTab->wrappers->Option->get($ordersTab->moduleId, 'saveApiLog');
            $debug = ($saveApiLog == 'Y') ? 'true' : 'false';

            $langSplitOrderPhrazes = $ordersTab->getLangPhrases();
            $rfbsStatusesObject = $ordersTab->getRfbsStatusesObject();
            $rfbsStatusesObject->addScript();
            $rfbsLangPhrases = $rfbsStatusesObject->getLangPhrases();
            ?>

            <script>
            {
                let OrdersTab = new Wbs24OzonapinewOrdersTab();
                OrdersTab.debug = <?=$debug?>;
                let packageNumber = "<?=Loc::getMessage($suffix.'.PACKAGE_NUMBER')?>";
                document.addEventListener("DOMContentLoaded", function () {
                    OrdersTab.triggerGettingDomElements(<?=$arArgs["ID"]?>, <?=$accountIndex?>);
                    let OrderSplit = new Wbs24OzonapinewSplitOrder(<?=$arArgs["ID"]?>, <?=$accountIndex?>, <?=\CUtil::PHPToJSObject($langSplitOrderPhrazes)?>);
                    OrderSplit.runOrderSplit("<?=$externalId?>");
                    let RfbsStatusesObject = new Wbs24OzonapinewRfbsStatuses(<?=$accountIndex?>, "<?=$externalId?>", <?=\CUtil::PHPToJSObject($rfbsLangPhrases)?>);
                    RfbsStatusesObject.run();
                    OrderSplit.trackButtonPressCollectOrder("<?=$externalId?>");
                    OrdersTab.trackButtonPressPackageLabel("<?=$externalId?>");
                    OrdersTab.trackButtonPressActCreate("<?=$orderInfo['delivery_method_id']?>", "<?=$externalId?>");
                    OrdersTab.trackButtonPressCancelOrder("<?=$externalId?>");
                    <?=(
                        $orderInfo['disabled_act'] && $orderInfo['act_create_id'] && !$orderInfo['act']
                        ? 'OrdersTab.setActLink("'.$orderInfo['act_create_id'].'", "'.$externalId.'");'
                        : ''
                    )?>
                    <?=(
                        $orderInfo['disabled_package_label'] && !$orderInfo['package_label']
                        ? 'OrdersTab.setPackageLabelLink("'.$externalId.'");'
                        : ''
                    )?>
                });
            }
            </script>

            <style>
            table {
                font-size: inherit !important;
            }
            </style>

            <tr>
                <td colspan="2">
                    <div class="adm-info-message-wrap" style="text-align:left;">
                        <div class="adm-info-message">
                            <div><?=Loc::getMessage($suffix.".ORDERS_TAB_TEXT")?></div>
                        </div>
                    </div>
                </td>
            </tr>

            <tr class="heading">
                <td colspan="2">
                    <div><?=Loc::getMessage($suffix.".ORDERS_TAB_NOTE")?></div>
                </td>
            </tr>

            <?if(!$orderInfo['cancelled_order']):?>
                <tr class="js-order-collect-tr">
                    <td colspan="2">
                        <hr>
                    </td>
                </tr>

                <tr class="js-order-collect-tr">
                    <td width="50%" style="padding-top:0;"><input type="submit" <?= $orderInfo['success_ship'] ? 'disabled' : ''?> class="wbs24_start-collect-btn" value="<?= Loc::getMessage($suffix.".START_COLLECT_ORDER")?>"></td>
                    <td width="50%" style="padding-top:0;"></td>
                </tr>
                <tr class="js-order-collect-tr">
                    <td colspan="2" width="100%" style="padding-top:0;"><div id="wbs24-packages"></div></td>
                </tr>

                <tr class="js-order-collect-tr">
                    <td width="50%" style="padding-top:0;"><input type="submit" <?= $orderInfo['success_ship'] ? 'disabled' : ''?> data-property="packagesCount" class="wbs24_add-new-package" value="<?= Loc::getMessage($suffix.".ADD_NEW_PACKAGE")?>"></td>
                    <td width="50%" style="padding-top:0;"><?= Loc::getMessage($suffix.".ADD_NEW_PACKAGE_NOTE")?></td>
                </tr>

                <tr class="js-order-collect-tr">
                    <td class="adm-detail-content-cell-l" width="50%">
                        <input type="submit" <?=$orderInfo['success_ship'] ? 'disabled' : ''?> class="wbs24_collect-btn" value="<?=Loc::getMessage($suffix.".COLLECT_ORDER")?>">
                    </td>
                    <td class="adm-detail-content-cell-r" width="50%">
                        <span style='background:green;padding:5px;border-radius:3px;display:<?=$orderInfo['success_ship'] ? "inline-block" : "none"?>' class='wbs24_collect_td' ><?=Loc::getMessage($suffix.".ORDER_SUCCESSFULLY_COLLECTED")?></span>

                        <span style='background:red;padding:5px;border-radius:3px;display:none;' class='js-wbs24-order-error' data-error="TRANSITION_IS_NOT_POSSIBLE"><?=Loc::getMessage($suffix.".ORDER_ERROR_TRANSITION_IS_NOT_POSSIBLE")?></span>
                        <span style='background:red;padding:5px;border-radius:3px;display:none;' class='js-wbs24-order-error' data-error="HAS_INCORRECT_TPL_INTEGRATION_TYPE"><?=Loc::getMessage($suffix.".ORDER_ERROR_HAS_INCORRECT_TPL_INTEGRATION_TYPE")?></span>
                        <span style='background:red;padding:5px;border-radius:3px;display:none;' class='js-wbs24-order-error' data-error="POSTING_NOT_FOUND"><?=Loc::getMessage($suffix.".ORDER_ERROR_POSTING_NOT_FOUND")?></span>
                        <span style='background:red;padding:5px;border-radius:3px;display:none;' class='js-wbs24-order-error' data-error="POSTING_ALREADY_CANCELLED"><?=Loc::getMessage($suffix.".ORDER_ERROR_POSTING_ALREADY_CANCELLED")?></span>
                        <span style='background:red;padding:5px;border-radius:3px;display:none;' class='js-wbs24-order-error' data-error="POSTING_ALREADY_SHIPPED"><?=Loc::getMessage($suffix.".ORDER_ERROR_POSTING_ALREADY_SHIPPED")?></span>
                        <span style='background:red;padding:5px;border-radius:3px;display:none;' class='js-wbs24-order-error' data-error="HAS_INCORRECT_STATUS"><?=Loc::getMessage($suffix.".ORDER_ERROR_HAS_INCORRECT_STATUS")?></span>
                        <span style='background:red;padding:5px;border-radius:3px;display:none;' class='js-wbs24-order-error' data-error="HAS_INCORRECT_PRODUCT_QUANTITY"><?=Loc::getMessage($suffix.".ORDER_ERROR_HAS_INCORRECT_PRODUCT_QUANTITY")?></span>
                        <span style='background:red;padding:5px;border-radius:3px;display:none;' class='js-wbs24-order-error' data-error="UNKNOWN_PRODUCT_DEFINED"><?=Loc::getMessage($suffix.".ORDER_ERROR_UNKNOWN_PRODUCT_DEFINED")?></span>
                        <span style='background:red;padding:5px;border-radius:3px;display:none;' class='js-wbs24-order-error' data-error="EXEMPLAR_INFO_ALREADY_DEFINED"><?=Loc::getMessage($suffix.".ORDER_ERROR_EXEMPLAR_INFO_ALREADY_DEFINED")?></span>
                        <span style='background:red;padding:5px;border-radius:3px;display:none;' class='js-wbs24-order-error' data-error="MANDATORY_MARK_REDUNDANT"><?=Loc::getMessage($suffix.".ORDER_ERROR_MANDATORY_MARK_REDUNDANT")?></span>
                        <span style='background:red;padding:5px;border-radius:3px;display:none;' class='js-wbs24-order-error' data-error="UNKNOWN"><?=Loc::getMessage($suffix.".ORDER_ERROR_UNKNOWN")?></span>
                    </td>
                </tr>
                <tr class="js-order-collect-tr">
                    <td width="50%" style="padding-top:0;">&nbsp;</td>
                    <td width="50%" style="padding-top:0;"><small><?=Loc::getMessage($suffix.".COLLECT_ORDER_NOTE")?></small></td>
                </tr>

                <tr class="js-order-collect-tr">
                    <td class="adm-detail-content-cell-l">
                        <input type="submit" <?=$orderInfo['success_ship'] && !$orderInfo['disabled_act'] ? '' : 'disabled'?> class="wbs24_act-create" value="<?=Loc::getMessage($suffix.".CREATE_ACT")?>">
                    </td>
                    <td class="adm-detail-content-cell-r">
                        <span style='background:red;padding:5px;border-radius:3px;display:none;' class='js-wbs24-act-error' ><?=Loc::getMessage($suffix.".ACT_ERROR")?></span>
                        <span style='background:yellow;padding:5px;border-radius:3px;display:<?=$orderInfo['disabled_act'] && !$orderInfo['act'] ? "inline-block" : "none"?>' class='js-wbs24-act-status' ><?=Loc::getMessage($suffix.".ACT_STATUS_IN_PROCESS")?></span>
                        <a href="<?=$orderInfo['act'] ?>" target="_blank" class='wbs24_act_td' style='display:<?=$orderInfo['act'] ? "inline-block" : "none"?>'><?=Loc::getMessage($suffix.".OPEN_ACT_PAGE")?></a>
                    </td>
                </tr>
                <tr class="js-order-collect-tr">
                    <td width="50%" style="padding-top:0;">&nbsp;</td>
                    <td width="50%" style="padding-top:0;">
                        <small>
                            <?=Loc::getMessage($suffix.".ORDER_SHIPMENT_DATE")?>: <b><?=$shipmentDate?></b><br>
                            <?=Loc::getMessage($suffix.".CREATE_ACT_NOTE")?>
                        </small>
                    </td>
                </tr>

                <tr class="js-order-collect-tr">
                    <td class="adm-detail-content-cell-l">
                        <input type="submit" <?=$orderInfo['success_ship'] && !$orderInfo['disabled_package_label'] ? '' : 'disabled'?> class="wbs24_package-label" value="<?=Loc::getMessage($suffix.".PACKAGE_LABEL")?>">
                    </td>
                    <td class="adm-detail-content-cell-r">
                        <span style='background:yellow;padding:5px;border-radius:3px;display:<?=$orderInfo['disabled_package_label'] && !$orderInfo['package_label'] && $orderInfo['attempts_package_label'] < 5 ? "inline-block" : "none"?>' class='js-wbs24-package-label-status'><?=Loc::getMessage($suffix.".PACKAGE_LABEL_IN_PROCESS")?></span>
                        <a href="<?=$orderInfo['package_label'] ?>" class='wbs24_package_td' target="_blank" style='display:<?=$orderInfo['package_label'] ? "inline-block" : "none"?>'><?=Loc::getMessage($suffix.".OPEN_LABEL_PAGE")?></a>
                        <span style='background:red;padding:5px;border-radius:3px;display:<?=$orderInfo['disabled_package_label'] && !$orderInfo['package_label'] && $orderInfo['attempts_package_label'] > 5 ? "inline-block" : "none"?>' class='js-wbs24-package-label-status'><?=Loc::getMessage($suffix.".PACKAGE_LABEL_AUTO_ERROR")?></span>
                    </td>
                </tr>
                <tr class="js-order-collect-tr">
                    <td width="50%" style="padding-top:0;">&nbsp;</td>
                    <td width="50%" style="padding-top:0;"><small><?=Loc::getMessage($suffix.".PACKAGE_LABEL_NOTE")?></small></td>
                </tr>
            <?endif;?>

            <tr>
                <td colspan="2">
                    <hr>
                </td>
            </tr>

            <tr>
                <td class="adm-detail-content-cell-l" width="50%">
                    <input type="submit"
                        class="js-order-cancel"
                        <?=$orderInfo['cancelled_order'] ? 'disabled' : ''?>
                        value="<?=Loc::getMessage($suffix.".ORDER_CANCEL")?>"
                        data-confirm-message="<?=Loc::getMessage($suffix.".ORDER_CANCEL_CONFIRM")?>"
                    >
                </td>
                <td class="adm-detail-content-cell-r" width="50%">
                    <span style='background:red;padding:5px;border-radius:3px;display:none' class='js-order-cancel-error-label' ><?=Loc::getMessage($suffix.".ORDER_CANCEL_ERROR_LABEL")?></span>
                    <span style='background:red;padding:5px;border-radius:3px;display:<?=$orderInfo['cancelled_order'] ? "inline-block" : "none"?>' class='js-order-cancel-label'><?=Loc::getMessage($suffix.".ORDER_CANCEL_LABEL")?></span>
                </td>
			</tr>
            <tr>
                <td width="50%" style="padding-top:0;">&nbsp;</td>
                <td width="50%" style="padding-top:0;"><small><?=Loc::getMessage($suffix.".ORDER_CANCEL_NOTE")?></small></td>
            </tr>

            <tr>
                <td colspan="2">
                    <hr>
                </td>
            </tr>

            <tr>
                <td colspan="2">
                    <div class="adm-info-message-wrap" style="text-align:left;">
                        <div class="adm-info-message">
                            <div><?=Loc::getMessage($suffix.".ORDERS_TAB_BOTTOM_TEXT")?></div>
                        </div>
                    </div>
                </td>
            </tr>
            <?
            $html = $rfbsStatusesObject->getButtons($orderInfo);
            echo $html;
        }
    }

    protected function getRfbsStatusesObject()
    {
        return $this->rfbsStatuses;
    }

    protected function getOrderProperties($orderId)
    {
        $order = \Bitrix\Sale\Order::load($orderId);
        $collection = $order->getPropertyCollection();

        $xmlId = $order->getField("XML_ID");
        $accountIndex = $this->getAccountIndexByXmlId($xmlId);
        $this->setAccount($accountIndex);

        $externalIdProp = $collection->getItemByOrderPropertyId(
            intval($this->wrappers->Option->get($this->moduleId, 'propertyOfExternalOrderNumber'))
        );
        if ($externalIdProp) {
            $externalId = $externalIdProp->getValue();
        }

        $shipmentDateProp = $collection->getItemByOrderPropertyId(
            intval($this->wrappers->Option->get($this->moduleId, 'propertyOfShipmentDate'))
        );
        if ($shipmentDateProp) {
            $shipmentDate = $shipmentDateProp->getValue();
        }

        return [
            'external_id' => $externalId,
            'account_index' => $accountIndex,
            'shipment_date' => $shipmentDate,
        ];
    }

    protected function getAccountIndexByXmlId($xmlId)
    {
        preg_match('/'.self::XML_ID_PREFIX.'(\d*)_(.+)/', $xmlId, $matches);
        $accountIndex = $matches[1] ?: 1;

        return $accountIndex;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit