Загрузка данных


<div class="modal fade"
     id="deleteFnsRequestModal"
     tabindex="-1"
     role="dialog"
     aria-labelledby="deleteFnsRequestModalLabel"
     data-backdrop="static"
     data-keyboard="false">

    <div class="modal-dialog">
        <div class="modal-content">

            <div class="modal-header">
                <h4 class="modal-title"
                    id="deleteFnsRequestModalLabel">
                    Подтверждение удаления
                </h4>
            </div>

            <div class="modal-body">
                <p>
                    Необходимо подтвердить удаление
                    сформированного Запроса о вычете в ФНС.
                </p>
                <p id="deleteFnsRequestDetails"></p>
            </div>

            <div class="modal-footer">
                <button type="button"
                        class="btn btn-default"
                        id="cancelDeleteFnsRequestBtn"
                        data-dismiss="modal">
                    Отмена
                </button>

                <button type="button"
                        class="btn btn-danger"
                        id="confirmDeleteFnsRequestBtn">
                    Удалить
                </button>
            </div>

        </div>
    </div>
</div>





<script type="text/javascript">
$(function() {
    let pendingDeleteFileId = null;
    let deleteInProgress = false;

    function isDeletionAllowed(row) {
        return row
            && !!row.model_file_id
            && (
                row.is_sent_to_fns === false
                || row.is_sent_to_fns === 'false'
            );
    }

    $('#deleteFnsRequestBtn').on('click', function() {
        if (deleteInProgress) {
            return;
        }

        pendingDeleteFileId = null;

        const modelData = getSelectedFnsRows();
        const rows = modelData && modelData.list
            ? modelData.list
            : [];

        if (rows.length !== 1) {
            updateDeleteFnsRequestState();
            return;
        }

        const row = rows[0];

        if (!isDeletionAllowed(row)) {
            showWarningMessage(
                'Удаление недоступно: запрос должен быть не отправлен в ФНС и иметь файл.'
            );
            updateDeleteFnsRequestState();
            return;
        }

        pendingDeleteFileId = row.model_file_id;

        $('#deleteFnsRequestDetails').text(
            'Запрос № ' + row.request_number
        );

        $('#deleteFnsRequestModal').modal('show');
    });

    $('#confirmDeleteFnsRequestBtn').on('click', function() {
        if (deleteInProgress || !pendingDeleteFileId) {
            return;
        }

        // Повторно проверяем выбранную строку перед вызовом.
        const modelData = getSelectedFnsRows();
        const rows = modelData && modelData.list
            ? modelData.list
            : [];

        if (
            rows.length !== 1
            || String(rows[0].model_file_id)
                !== String(pendingDeleteFileId)
            || !isDeletionAllowed(rows[0])
        ) {
            $('#deleteFnsRequestModal').modal('hide');
            updateDeleteFnsRequestState();

            showWarningMessage(
                'Выбор или статус запроса изменился. Выберите запрос заново.'
            );
            return;
        }

        const fileId = pendingDeleteFileId;

        deleteInProgress = true;

        $('#confirmDeleteFnsRequestBtn, #cancelDeleteFnsRequestBtn')
            .prop('disabled', true);

        $.ajax({
            url: 'queryAction/action',
            type: 'POST',
            dataType: 'json',
            data: {
                viewCode: '7K6FKG8e',
                queryActionCode: 'FCbnmhY1',
                model_file_id: fileId
            },

            success: function(response) {
                if (response && response.result === true) {
                    deleteInProgress = false;
                    pendingDeleteFileId = null;

                    $('#deleteFnsRequestModal').modal('hide');
                    $('#deleteFnsRequestBtn').prop('disabled', true);

                    fns_journal.reload();

                    showMessages([{
                        messageType: 'info',
                        message: 'Запрос удалён'
                    }]);

                    return;
                }

                if (
                    response
                    && response.messages
                    && response.messages.length
                ) {
                    showMessages(response.messages);
                } else {
                    showWarningMessage(
                        'Сервер не подтвердил удаление. Обновите журнал и проверьте запрос.'
                    );
                }
            },

            error: function(xhr) {
                const response = xhr.responseJSON;

                if (
                    response
                    && response.messages
                    && response.messages.length
                ) {
                    showMessages(response.messages);
                } else {
                    showWarningMessage(
                        'Не удалось получить результат удаления. Обновите журнал перед повторной попыткой.'
                    );
                }
            },

            complete: function() {
                deleteInProgress = false;

                $('#confirmDeleteFnsRequestBtn, #cancelDeleteFnsRequestBtn')
                    .prop('disabled', false);
            }
        });
    });

    $('#deleteFnsRequestModal').on('hide.bs.modal', function(e) {
        if (deleteInProgress) {
            e.preventDefault();
        }
    });

    $('#deleteFnsRequestModal').on('hidden.bs.modal', function() {
        pendingDeleteFileId = null;
    });
});
</script>