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/js/boxberry.delivery/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/boxberry.delivery/order.js
let bbOrder = {};
function setBbOrder() {
    return {
        ajaxUrl: '/bitrix/services/main/ajax.php?sessid=' + BX.bitrix_sessid() + '&action=boxberry:delivery.api.order.',
        id: document.getElementById('ID'),
        formLayout: document.getElementById('order_form_layout'),
        orderFormTable: document.getElementById('order_form_edit_table'),
        orderFormTable2: document.getElementById('order_form2_edit_table'),
        deliveryId: document.getElementsByName('DELIVERY_ID_LIST')[0],
        parentDeliveryId: document.getElementsByName('PARENT_DELIVERY_ID')[0],
        openWidgetButton: document.getElementById('bbOpenWidget'),
        saveButton: document.getElementById('bbSaveButton'),
        deleteButton: document.getElementById('bbDeleteButton'),
        cancelButton: document.getElementById('bbCancelButton'),
        recalculateButton: document.getElementById('bbRecalculateButton'),
        updateStatusButton: document.getElementById('bbUpdateStatusButton'),
        changeOrderStorageDateButton: document.getElementById('bbChangeOrderStorageDate'),
        status: document.getElementById('bb_status'),
        toolbar: document.querySelector('.adm-detail-toolbar-right'),
        placesForm: document.querySelector('#tab_cont_order_form3'),
        userForm: document.querySelector('#tab_cont_order_form2'),
        placesTable: document.querySelector('#bb_places'),
        statusMessage: document.getElementById('ajax_status_message'),
        pointForParcel: document.getElementsByName('POINT_FOR_PARCEL')[0],
        issueType: document.getElementsByName('ISSUE_TYPE')[0],
        paymentAmount: document.getElementsByName('PAYMENT_AMOUNT')[0],
        declaredCost: document.getElementsByName('DECLARED_COST')[0],
        deliveryCost: document.getElementsByName('DELIVERY_COST')[0],
        pickupPointCode: document.getElementsByName('PICKUP_POINT_CODE')[0],
        address: document.getElementsByName('ADDRESS')[0],
        postcode: document.getElementsByName('POSTCODE')[0],
        siteId: document.getElementsByName('SITE_ID')[0],
        cityName: document.getElementsByName('CITY_NAME')[0],
        city: document.getElementsByName('CITY')[0],
        bbCityCode: document.getElementsByName('BB_CITY_CODE')[0],
        widgetKey: document.getElementsByName('WIDGET_KEY')[0],
        infoBlock: document.querySelectorAll('.adm-bus-orderinfoblock-content-customer-info span'),
        fullName: document.getElementsByName('FULL_NAME')[0],
        phone: document.getElementsByName('PHONE')[0],
        email: document.getElementsByName('EMAIL')[0],
        contactPerson: document.getElementsByName('CONTACT_PERSON')[0],
        company: document.getElementsByName('COMPANY')[0],
        accountNumber: document.getElementsByName('ACCOUNT_NUMBER')[0],
        deliverType: document.getElementsByName('DELIVERY_TYPE')[0],
        bitrixStatusId: document.getElementsByName('BITRIX_STATUS_ID')[0],
        consoleLogEnabled: document.getElementsByName('CONSOLE_LOG_ENABLED')[0].value === 'Y',
        currentStorageDate: document.querySelector("#tr_STORAGE_DATE > td.adm-detail-content-cell-r"),
        newStorageDateIcon: document.querySelector("#tr_NEW_STORAGE_DATE > td.adm-detail-content-cell-r > div"),
        newStorageDateInput: document.querySelector("#tr_NEW_STORAGE_DATE > td.adm-detail-content-cell-r > div > input"),
        track: null
    };
}

document.addEventListener("DOMContentLoaded", function (event) {
    bbOrder = setBbOrder();

    ['declaredCost', 'paymentAmount', 'deliveryCost'].forEach(function(key) {
        if (bbOrder[key]) {
            bbOrder[key].addEventListener('input', function(e) {
                e.target.value = e.target.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');
                if (key === 'paymentAmount' && parseFloat(e.target.value) > 300000) {
                    e.target.value = '300000';
                    alert(BX.message('ORDER_PAYSUM_LIMIT'));
                }
            });
        }
    });

    const tabs = ['order_form2', 'order_form3', 'order_form4']

    if (bbOrder.postcode) {
        bbOrder.postcode.addEventListener('input', function(e) {
            e.target.value = e.target.value.replace(/[^0-9]/g, '');
        });
    }

    for (let key in bbOrder) {
        if (bbOrder[key] instanceof HTMLInputElement || bbOrder[key] instanceof HTMLSelectElement) {
            bbOrder[key].addEventListener('change', function(event) {
                bbOrder[key].value = event.target.value;
            });
        }
    }

    bbOrder.formLayout.style.display = 'none';

    handleDeliveryIdChange(bbOrder.deliveryId.value, tabs)

    bbOrder.deliveryId.addEventListener('change', function(event) {
        bbOrder.deliveryId.value = event.target.value;
        handleDeliveryIdChange(event.target.value, tabs);
    });

    bbOrder.pickupPointCode.parentElement.appendChild(bbOrder.openWidgetButton);
    bbOrder.openWidgetButton.onclick = function (e) {
        e.preventDefault();
        bbWidget.open(bbWidgetAdminCallback, bbOrder.widgetKey.value, bbOrder.cityName.value);
    }

    createToolbarButton();
    handleDatalist(bbOrder.pointForParcel);

    handleOrderBlockInfo();

    bbOrder.placesForm.onclick = function (e) {
        e.preventDefault();

        if (order_form.aTabsDisabled.order_form3) {
            return;
        }

        if (!bbOrder.placesTable) {
            bbGetPlaces()
                .then(data => {
                    const tableContainer = document.querySelector('#tableContainer');
                    tableContainer.innerHTML = `
                <p id="table-description">${BX.message('ORDER_PLACES_DESCR_1')} <br>${BX.message('ORDER_PLACES_DESCR_2')}</a></p>
                <table class="adm-detail-content-table edit-table" id="order_products">
                    <thead><tr><td>${BX.message('ORDER_PLACE_NUMBER')}</td><td>${BX.message('ORDER_PLACE_WEIGHT')}</td><td>${BX.message('ORDER_PLACE_LENGTH')}</td><td>${BX.message('ORDER_PLACE_WIDTH')}</td><td>${BX.message('ORDER_PLACE_HEIGHT')}</td></tr></thead>
                    <tbody id="bb_places"></tbody>
                </table>
            `;

                    bbOrder.placesTable = document.querySelector('#bb_places');
                    const rows = data.data.places.map((place, index) => {
                        return `
        <tr id="place-${index + 1}">
            <td>${index + 1}</td>
            <td><input type="text" id="weight-${index + 1}" value="${place.Weight}" style="width: 50px;"></td>
            <td><input type="text" id="length-${index + 1}" value="${place.Depth}" style="width: 50px;"></td>
            <td><input type="text" id="width-${index + 1}" value="${place.Width}" style="width: 50px;"></td>
            <td><input type="text" id="height-${index + 1}" value="${place.Height}" style="width: 50px;"></td>
        </tr>
    `;
                    });
                    bbOrder.placesTable.innerHTML = rows.join('');

                    Array.from(bbOrder.placesTable.rows).forEach(row => {
                        const weightInput = row.querySelector('input[id^="weight-"]');
                        const lengthInput = row.querySelector('input[id^="length-"]');
                        const widthInput = row.querySelector('input[id^="width-"]');
                        const heightInput = row.querySelector('input[id^="height-"]');
                        [weightInput, lengthInput, widthInput, heightInput].forEach(input => {
                            input.addEventListener('input', function(e) {
                                e.target.value = e.target.value.replace(/[^0-9]/g, '');
                            });
                        });
                    });

                    order_form.SelectTab('order_form3');
                })
                .catch((error) => {
                    console.error(BX.message('ORDER_ERROR_TEXT'), error);
                    order_form.SelectTab('order_form3');
                });
        } else {
            order_form.SelectTab('order_form3');
        }
    }


    bbOrder.saveButton.onclick = function (e) {
        e.preventDefault();
        bbCreateOrder(e)
    }

    const cancelType = '2';
    const deleteType = '1';

    bbOrder.cancelButton.onclick = function (e) {
        bbCancelOrder(e, cancelType)
    }

    bbOrder.deleteButton.onclick = function (e) {
        bbCancelOrder(e, deleteType)
    }

    bbOrder.changeOrderStorageDateButton.onclick = function (e) {
        bbChangeStorageDate(e);
    }

    bbOrder.recalculateButton.onclick = function (e) {
        e.preventDefault();
        bbCalc().then(data => {
            bbOrderFormStatusMessage(data.status, isDataError(data) ? data.errors[0].message : data.data.message);
            if (data.status === 'error') {
                return;
            }

            bbOrder.deliveryCost.value = data.data.price;
        });
    }

    bbOrder.updateStatusButton.onclick = function (e) {
        e.preventDefault();
        e.target.disabled = true;
        getTrackingData().then(data => {
            bbOrderFormStatusMessage(data.status, isDataError(data) ? data.errors[0].message : data.data.message);
            if (data.status === 'success') {
                e.target.disabled = false;
                handleOrderBlockInfo(data.data);
                bbCancelEventsHandler(data.data.cancelAvailable, data.data.deleteAvailable)
                handleChangeStorageDateFromTracking(data.data.bb_storage_date, data.data.changeStorageDateAvailable)
            } else {
                e.target.disabled = false;
                hideAndResetInfoBlockContent()
                bbCancelEventsHandler(data.errors[0].customData.cancelAvailable, data.errors[0].customData.deleteAvailable)
                handleChangeStorageDateFromTracking(null, false)
            }
        });

    }
});

BX.bind(bbOrder.newStorageDateIcon, 'click', function() {
    BX.calendar({
        node: this,
        field: bbOrder.newStorageDateInput,
        bTime: false,
        bSetFocus: false,
        callback_after: function(oDate) {
            let currentDate = new Date();
            currentDate.setHours(0, 0, 0, 0);
            if (oDate > currentDate) {
                bbOrder.newStorageDateInput.value = oDate.toLocaleDateString('ru-RU', {
                    day: '2-digit',
                    month: '2-digit',
                    year: 'numeric'
                });
            } else {
                alert(BX.message('DATE_MUST_BE_GREATER_THAN_CURRENT'));
            }
        }
    });
});

function bbDisableButtonsDiv (disabled = true) {
    let buttonsDiv = document.getElementById('order_form_buttons_div');

    if (!disabled) {
        buttonsDiv.style.pointerEvents = 'auto';
        buttonsDiv.style.opacity = '1';
    } else {
        buttonsDiv.style.pointerEvents = 'none';
        buttonsDiv.style.opacity = '0.5';

    }

}

function bbGetPlaces() {
    return fetch(bbOrder.ajaxUrl + 'getPlaces&orderId=' + bbOrder.id.value + '&deliveryId=' + bbOrder.deliveryId.value, {
        method: 'GET',
        headers: {
            'Content-Type': 'application/json',
        },
    })
        .then(response => response.json())
        .then(data => {
            return data;
        })
        .catch((error) => {
            console.error(BX.message('ORDER_ERROR_TEXT'), error);
            return error;
        });
}


function bbCancelOrder(e, requestType) {
    e.preventDefault();
    const userConfirmation = confirm(BX.message('ORDER_CANCEL_CONFIRM_TEXT_1') + getCancelTypeProcedureName(requestType) + BX.message('ORDER_CANCEL_CONFIRM_TEXT_2'));
    if (!userConfirmation) {
        return;
    }
    e.target.disabled = true;

    if (bbOrder.id.value) {
        fetch(bbOrder.ajaxUrl + 'cancel&orderId=' + bbOrder.id.value + '&cancelType=' + requestType)
            .then(response => response.json())
            .then(data => {
                bbOrderFormStatusMessage(data.status, isDataError(data) ? data.errors[0].message : data.data.message);
                getTrackingData().then(data => {
                    if (data.status === 'success') {
                        handleOrderBlockInfo(data.data);
                        bbCancelEventsHandler(data.data.cancelAvailable, data.data.deleteAvailable)
                    } else {
                        hideAndResetInfoBlockContent()
                        bbCancelEventsHandler(data.errors[0].customData.cancelAvailable, data.errors[0].customData.deleteAvailable)
                    }

                });

                if (data.status === 'error') {
                    e.target.disabled = false;
                    handleOrderBlockInfo();
                }
            })
            .catch(error => {
                console.error(error);
                e.target.disabled = false;
            });
    }
}

function handleDeliveryIdChange(value, tabs) {
    if (value !== '0') {
        fillOrderData();
        bbDisableButtonsDiv(false);
        tabs.forEach(tab => {

            if (tab === 'order_form4' && order_form.aTabsDisabled.order_form4) {
                return;
            }

            order_form.EnableTab(tab);
        });
    } else {
        tabs.forEach(tab => {
            order_form.DisableTab(tab);
        });
        bbDisableButtonsDiv();
    }
}

function bbWidgetAdminCallback(result) {
    if (result === undefined || result === null) {
        alert(BX.message('ORDER_WIDGET_RESULT_ERROR'));
        return;
    }

    bbOrder.pickupPointCode.value = result.id;
    bbOrder.address.value = result.address;
}

function handleChangeStorageDateFromTracking(date, isAvailable) {
    bbOrder.currentStorageDate.innerHTML = date ? date : BX.message('NOT_SET');
    if (isAvailable) {
        order_form.EnableTab('order_form4');
    } else {
        order_form.DisableTab('order_form4');
    }

}

function getTrackingData() {
    return fetch(bbOrder.ajaxUrl + 'getOrderTrackingData&orderId=' + bbOrder.id.value)
        .then(response => response.json())
        .then(data => {

            if (data.status === 'success') {
                bbOrder.track = data.data.bb_track;
            } else {
                bbOrder.track = null;
            }

            return data;
        })
        .catch((error) => {
            console.error(BX.message('ORDER_ERROR_TEXT'), error);
            return error;
        });
}

function bbChangeStorageDate(e) {
    e.preventDefault();
    fetch(bbOrder.ajaxUrl + 'changeStorageDate', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: new URLSearchParams({
            date: bbOrder.newStorageDateInput.value,
            trackNumber: bbOrder.track,
            deliveryId: bbOrder.deliveryId.value,
        }).toString()
    })
        .then(response => response.json())
        .then(data => {
            bbOrderFormStatusMessage(data.status, isDataError(data) ? data.errors[0].message : data.data.message);
            getTrackingData().then(data => {
                if (data.status === 'success') {
                    handleChangeStorageDateFromTracking(data.data.bb_storage_date, data.data.changeStorageDateAvailable)
                    bbCancelEventsHandler(data.data.cancelAvailable, data.data.deleteAvailable)
                } else {
                    bbCancelEventsHandler(data.errors[0].customData.cancelAvailable, data.errors[0].customData.deleteAvailable)
                    handleChangeStorageDateFromTracking(null, false)
                }
            });
        })
        .catch((error) => {
            console.error(BX.message('ORDER_ERROR_TEXT'), error);
        });

}

function getBoxes() {
    if (!bbOrder.placesTable) {
        return [];
    }

    return Array.from(bbOrder.placesTable.rows).map(row => {
        const cells = row.cells;
        return {
            Weight: parseInt(cells[1].querySelector('input').value, 10),
            Depth: parseInt(cells[2].querySelector('input').value, 10),
            Width: parseInt(cells[3].querySelector('input').value, 10),
            Height: parseInt(cells[4].querySelector('input').value, 10),
        };
    });
}

function bbCalc() {

    let boxes = getBoxes();

    let calculateParams = {
        orderSum: bbOrder.declaredCost.value,
        paySum: bbOrder.paymentAmount.value != 0 ? bbOrder.declaredCost.value : bbOrder.paymentAmount.value,
        targetStart: bbOrder.pointForParcel.value,
    };

    if (boxes.length > 0) {
        calculateParams['boxSizes'] = boxes;
    }

    return fetch(bbOrder.ajaxUrl + 'calculate', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: new URLSearchParams({
            orderId: bbOrder.id.value,
            deliveryId: bbOrder.deliveryId.value,
            data: JSON.stringify(calculateParams)
        }).toString()
    })
        .then(response => response.json())
        .then(data => {
            return data;
        })
        .catch((error) => {
            console.error(BX.message('ORDER_ERROR_TEXT'), error);
            return error;
        });
}

function getOrderData() {
    return fetch(bbOrder.ajaxUrl + 'getOrderData&orderId=' + bbOrder.id.value + '&deliveryId=' + bbOrder.deliveryId.value)
        .then(response => response.json())
        .then(data => {
            return data;
        })
        .catch((error) => {
            console.error(BX.message('ORDER_ERROR_TEXT'), error);
            return error;
        });

}

function fillOrderData() {
    getOrderData().then(data => {
        if (data.status === 'error') {
            throw new Error(data.errors[0].message);
        }

        const editTable = bbOrder.orderFormTable.querySelectorAll('input, select');
        const editTable2 = bbOrder.orderFormTable2.querySelectorAll('input, select');

        for (let i = 0; i < editTable.length; i++) {
            let element = editTable[i];

            if (data.data.hasOwnProperty(element.name)) {
                element.value = data.data[element.name];
            }
        }

        for (let i = 0; i < editTable2.length; i++) {
            let element = editTable2[i];

            if (data.data.hasOwnProperty(element.name)) {
                element.value = data.data[element.name];
            }
        }
    })
        .then(() => {
            return bbCalc();
        })
        .then(data => {
            bbOrderFormStatusMessage(data.status, isDataError(data) ? data.errors[0].message : data.data.message);
            if (data.status === 'error') {
                bbDisableButtonsDiv();
                throw new Error(data.errors[0].message);
            }

            bbDisableButtonsDiv(false);
            bbOrder.deliveryCost.value = data.data.price;
        })
        .then(() => {
            return getTrackingData();
        })
        .then(data => {
            if (data.status === 'success') {
                bbCancelEventsHandler(data.data.cancelAvailable, data.data.deleteAvailable);
                handleChangeStorageDateFromTracking(data.data.bb_storage_date, data.data.changeStorageDateAvailable)
            } else {
                bbCancelEventsHandler(data.errors[0].customData.cancelAvailable, data.errors[0].customData.deleteAvailable);
                handleChangeStorageDateFromTracking(null, false)
            }
        })
        .catch((error) => {
            console.log(error)
            bbOrderFormStatusMessage('error', error.message);
        });
}

function updateOrderData() {

    let boxes = getBoxes();

    let data = {
        pointForParcel: bbOrder.pointForParcel.value,
        issueType: bbOrder.issueType.value,
        paymentAmount: bbOrder.paymentAmount.value,
        declaredCost: bbOrder.declaredCost.value,
        deliveryCost: bbOrder.deliveryCost.value,
        pickupPointCode: bbOrder.pickupPointCode.value,
        address: bbOrder.address.value,
        postcode: bbOrder.postcode.value,
        fullName: bbOrder.fullName ? bbOrder.fullName.value : null,
        phone: bbOrder.phone.value,
        email: bbOrder.email.value,
        contactPerson: bbOrder.contactPerson ? bbOrder.contactPerson.value : null,
        company: bbOrder.company ? bbOrder.company.value : null,
        deliveryId: bbOrder.deliveryId.value,
        parentDeliveryId: bbOrder.parentDeliveryId.value,
        accountNumber: bbOrder.accountNumber.value,
        deliveryType: bbOrder.deliverType.value,
        siteId: bbOrder.siteId.value,
        bitrixStatusId: bbOrder.bitrixStatusId.value,
        city: bbOrder.city.value,
        bbCityCode: bbOrder.bbCityCode.value
    };

    if (boxes.length > 0) {
        data.places = JSON.stringify(boxes);
    }

    let body = {
        orderId: bbOrder.id.value,
        data: JSON.stringify(data),
    };

    return fetch(bbOrder.ajaxUrl + 'update', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: new URLSearchParams(body).toString()
    })
        .then(response => response.json())
        .then(data => {
            return data;
        })
        .catch((error) => {
            console.error(BX.message('ORDER_ERROR_TEXT'), error);
            return error;
        });

}

function bbParselAction(action) {
    const url = bbOrder.ajaxUrl + action;
    const params = new URLSearchParams({
        orderId: bbOrder.id.value,
    });

    return fetch(url, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: params.toString()
    })
        .then(response => response.json())
        .then(data => {
            return data;
        })
        .catch((error) => {
            console.error(BX.message('ORDER_ERROR_TEXT'), error);
            return error;
        });
}

function bbHandleError(data) {
    if (data.status === 'error') {
        throw new Error(data.errors[0].message);
    }

    return data;
}

async function bbCreateOrder() {
    try {
        bbOrder.saveButton.disabled = true;

        let data = await updateOrderData();
        bbHandleError(data);

        data = await bbParselAction('parselCreate');
        data.status === 'error' ? bbHandleError(data) : bbOrderFormStatusMessage('success', data.data.message);

        if (data.status === 'success') {
            getTrackingData().then(data => {
                handleOrderBlockInfo(data.data);
            });
        }

    } catch (error) {
        bbOrderFormStatusMessage('error', error.message);
    } finally {
        bbOrder.saveButton.disabled = false;
    }
}

function handleOrderBlockInfo(data) {
    if (bbOrder.infoBlock) {
        if (!data) {
            hideEmptyInfo();
        } else {
            updateInfoBlock(data);
        }
    }
}

function hideEmptyInfo() {
    for (var i = 0; i < bbOrder.infoBlock.length; i++) {
        if (bbOrder.infoBlock[i].id.indexOf('bb_') !== -1) {
            if (bbOrder.infoBlock[i].innerHTML === '' || bbOrder.infoBlock[i].innerHTML === ' ' || (bbOrder.infoBlock[i].id.indexOf('url') !== -1 && bbOrder.infoBlock[i].innerHTML.indexOf('api.boxberry.ru') <=0)) {
                BX.hide(BX(bbOrder.infoBlock[i].id).parentNode);
            }
        }
    }
}

function hideAndResetInfoBlockContent() {
    if (bbOrder.infoBlock) {
        for (var i = 0; i < bbOrder.infoBlock.length; i++) {
            if (bbOrder.infoBlock[i].id.indexOf('bb_') !== -1) {
                bbOrder.infoBlock[i].innerHTML = '';
                BX.hide(BX(bbOrder.infoBlock[i].id).parentNode);
            }
        }
    }
}

function updateInfoBlock(data) {
    Object.entries(data).forEach(([key, value]) => {
        for (let i = 0; i < bbOrder.infoBlock.length; i++) {
            if (bbOrder.infoBlock[i].id === key && (value !== '' && value !== null)) {
                if (bbOrder.infoBlock[i].id.indexOf('error') !== -1) {
                    BX.show(BX(bbOrder.infoBlock[i].id).parentNode);
                    bbOrder.infoBlock[i].innerHTML = '<b>' + value + '</b>';
                } else if (bbOrder.infoBlock[i].id.indexOf('url') !== -1) {
                    BX.show(BX(bbOrder.infoBlock[i].id).parentNode);
                    bbOrder.infoBlock[i].innerHTML = '<a href="' + value + '" target="_blank">Скачать</a>';
                } else {
                    BX.show(BX(bbOrder.infoBlock[i].id).parentNode);
                    bbOrder.infoBlock[i].innerText = value;
                }
            }
        }

    });

    bbCancelEventsHandler(data.cancelAvailable, data.deleteAvailable);
}

function bbSetButtonState(button, state) {
    button.disabled = !state;
}

function bbSetSaveButtonText(text) {
    bbOrder.saveButton.text = text;
    bbOrder.saveButton.value = text;
}

function bbCancelEventsHandler(cancelEvent, deleteEvent) {
    bbSetButtonState(bbOrder.cancelButton, cancelEvent);
    bbSetButtonState(bbOrder.deleteButton, deleteEvent);

    if (bbOrder.track) {
        if ((cancelEvent && deleteEvent) || (cancelEvent && !deleteEvent) || (!cancelEvent && deleteEvent)) {
            bbSetSaveButtonText(BX.message('ORDER_UPDATE_IN_LK'));
        } else if (!cancelEvent && !deleteEvent) {
            bbSetSaveButtonText(BX.message('ORDER_IN_DELIVERY_PROCESS'));
            bbOrder.saveButton.disabled = true;
        }
    } else if (!cancelEvent && !deleteEvent) {
        bbSetSaveButtonText(BX.message('ORDER_CREATE'));
    }

}

function getCancelTypeProcedureName(cancelType) {
    switch (cancelType) {
        case '1':
            return BX.message('ORDER_DELETE');
        case '2':
            return BX.message('ORDER_CANCEL');

    }
}

function getStatusColor(status) {
    switch (status) {
        case 'success':
            return 'green';
        case 'error':
            return 'red';
    }
}

function bbOrderFormStatusMessage(status, message) {
    if (bbOrder.formLayout && bbOrder.formLayout.style.display === 'none') {
        return;
    }

    const statusColor = getStatusColor(status);

    if (bbOrder.statusMessage) {
        bbOrder.statusMessage.style.display = 'block';
        bbOrder.statusMessage.innerHTML = '<div class="adm-info-message-wrap adm-info-message-' + statusColor + '"><div class="adm-info-message"><div class="adm-info-message-title">Сохранение данных</div><div class="adm-info-message-icon"></div><div class="adm-info-message-text">' + message + '</div></div></div>';
        setTimeout(function () {
            bbOrder.statusMessage.style.display = 'none';
            bbOrder.statusMessage.innerHTML = '';
        }, 5000);
    }
}

function addButtonToToolbar(button) {
    const fixedToolbar = document.querySelector('.adm-detail-toolbar-right.bx-fixed-right');
    const defaultToolbar = document.querySelector('.adm-detail-toolbar-right:not(.bx-fixed-right)');

    if (button.parentElement) {
        button.parentElement.removeChild(button);
    }

    const targetToolbar = fixedToolbar || defaultToolbar;
    if (targetToolbar) {
        targetToolbar.prepend(button);
    }
}

function createToolbarButton() {
    const bbToolbarButton = document.createElement('input');
    bbToolbarButton.type = 'button';
    bbToolbarButton.value = BX.message('ORDER_TOOLBAR_BUTTON_TEXT');
    bbToolbarButton.className = 'adm-btn';
    bbToolbarButton.onclick = function () {
        bbOrder.formLayout.style.display = bbOrder.formLayout.style.display === 'none' ? 'block' : 'none';
    };

    setTimeout(function () {
        addButtonToToolbar(bbToolbarButton);
    }, 20);

    window.addEventListener('resize', function () {
        addButtonToToolbar(bbToolbarButton);
    });
}

function isDataError(data) {
    return data.status === 'error';

}

function showConsoleLog(...logs) {
    if (bbOrder.consoleLogEnabled) {
        console.log(...logs);
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit