Класи та команди K2 ERP Python

Матеріал з K2 ERP Wiki Ukraine — База знань з автоматизації та санкцій в Україні
Перейти до навігації Перейти до пошуку

K2 ERP Python для розробників — документація з вимогами до створення компонентів, структури пакетів, системних класів, API, компонентних класів і допоміжних JavaScript-функцій системи K2 ERP.

K2 ERP Python

Команда для автоматичної генерації html файлу з документацією по док стрінгах:

pydoc -w k2/k2obj.py, де k2/k2obj.py - шлях до файлу з корня

Вимоги до створення компонент

Компоненти, які публікуються в K2 ERP повинні мати щонайменше такі атрибути

ORM структури. Структури, які потрібні для даної компоненти. (файл models.py)

Головний клас компоненти, роути та api (файл views.py)

Додаткові об’єкти компоненти. Додаткові класи від яких залежить функціонал компоненти. (каталог objects/)

Хуки. Використовуються для розширення або зміни поведінки стандартних методів системи (файл hooks.py)

Зележності від інших компонент. (файл requirements-components.txt)

приклад:
k2log==2.0.0.2
k2grid==2.0.4.1
k2form==2.0.1.27

Python залежності, якщо є. (файл requirements.txt)

Readme.md. Файл в якому написана ціль компоненти, як її використовувати. Та різні моменти, які потрібно знати програмістам, адмінам та користувачам

Історія змін. Документ, в якому описуються зміни текстом, зрозумілим для користувачів. (файл history.txt)

Структура бази даних. На даний час, в форматі SQL power Architech. (каталог doc/schema)

Бізнес-процеси, схеми роботи, які були втілені в проудкті. В форматі Draw.io. (каталог doc/business_processes)

Інструкція користувача. Де розписано, як користуватись продуктом. Інструкція користувача повинна автоматично підтягуватись системою документації K2 ERP, додаючи розділ документації для цього продукту і надаючи можливість пошуку інформації в документації. Зберігається в каталозі: doc/user_manual)

Документацію для розробників, що генерується автоматично з коментарів. Зберігається в каталозі: doc/developer_documentation )

(потрібно завершити автоматичне збирання із компонент)

Документація для розробників (не обов’язково, але желательно). Додатково, якщо потрібно, щось додатково відмітити. Каталог doc/additional_developer_docs)

Приклади програмного коду з використанням компонент. Які автоматично з’являються в Examples при встановленні компоненти. І по яким можна протестувати функціонал. /examples (потрібно вирішити як додавати)

Віджети. Дашборди та інші візуальні елементи для вставки на головну сторінку та інші сторінки, які можна додавати автоматично. (потрібно вирішити як додавати) /widgets

Юніт тести. Написати де і яка структура. Юніт тести повинні автоматично знаходитись системою і використовуватись для загального тестування системи. Каталог /tests (потрібно завершити автоматичне збирання із компонент)

Локалізації. В К2 використовуються щонайменше: українська та англійська мова. Ядро повинно вміти робити переклади і давати можливість працювати з перекладами стороннім користувачам, покращуючи якість перекладу. Зберігається в каталозі:

/languages/en/LC_MESSAGES/messages.po
/languages/en/LC_MESSAGES/messages.mo

Демо-дані. Це дані, які розгортаються на демо-базі даних для демонстрації роботи з продуктом. (потрібно вирішити як додавати)

Файли ресурсів (зображення, тексти): Каталог /static

YML, якщо є. Каталог /yml

Іконки, які будуть використовуватись для представлення компоненти. Каталог /static/img

Авторство. Якщо К2, то в форматі, як прийнято в цілому для К2, якщо сторонній розробник - інформація про стороннього розробника. Copyright © 2000-2025 К2®, Rudiuk Serhii. All rights reserved.

Шаблони, якщо є. Вказуємо каталог. Звертаю увагу, що К2 ERP повинна мати змогу використовувати не обмежену кількість шаблонів. Шаблони повинні бути так розроблені, щоб не конфліктувати з глобальними шаблонами системи. Каталог /templates

Приклад дерева структури компоненти

components/
└── k2adm/
├── k2adm/
│ ├── data/
│ ├── languages/
│ ├── static/
│ ├── templates/
│ ├── yml/
│ ├── tests/
│ ├── examples/
│ ├── widgets/
│ ├── __init__.py
│ ├── objects/
│ ├── users/users.py
│ ├── roles/roles.py
│ ├── forms.py
│ ├── history.txt
│ ├── hooks.py
│ ├── models.py
│ ├── views.py│
├── __init__.py
├── doc/
├── schema/
├── business_processes/
├── user_manual/
├── developer_documentation/
├── additional_developer_docs/
├── history.txt
├── requirements-components.txt
├── requirements.txt
├── setup.py

Системні класи

Клас K2

Ядро системи K2CloudERP.

Властивості

Властивості класу

domain_name #назва домену

domain_protocol #протокол

domain #домен

port #порт

db #підключення до БД

default_language #мова за замовчуванням

Властивості інстансу

self.secur #властивість що підключає до ядра клас безпеки

self.path #властивість що підключає до ядра клас пошуку шляхів по ієрархії self.data #властивість що підключає до ядра клас синхронізації даних

self.settings #властивість що підключає до ядра клас збереження та пошуку налаштувань

self.notifications #властивість що підключає до ядра клас створення та відправки сповіщень

#отримати домен

K2().domain

Методи

Методи інстансу

Приклад використання:

#отримати id поточного контрагента

K2().get_user_counterparts_id()

# отримати список встановлених компонент

K2().component_list()

# отримати назву поточного проекту

K2().get_user_project_name()

#отримати id поточного користувача

K2().get_current_user()

#створити користувача на рівні БД

K2().create_db_role(user_name, password)

__init__(self, *args, **kwargs)

Initialize self. See help(type(self)) for accurate signature.

add_authorized_users(self, user_id, login)

Додати користувача до списку авторизованих

check_authorized_users(self, user_id)

Перевірити чи користувач активний

check_logout_users(self, user_id)

Авторизовані користувачі

component_list()

Пошук встановлених компонент

create_db_file_config_user(self)

Створення файлу з параметрами підключенням до БД для користувача

create_db_role(self, user_name, password)

Створення користувача на рівні БД

current_template(self)

Search current template

db_custom_engine(self, db)

Зміна custom параметрів підключення

db_user_engine(self, db)

Зміна параметрів підключення для поточного користувача

dell_authorized_users(self, user_id)

Видалити користувача зі списку авторизованих

drop_db_role(self, user_name)

Видалення користувача на рівні БД

get_all_subclasses(cls)

Пошук підкласів

get_authorized_users(self)

Отримати список авторизованих користувачів

get_current_user(self)

Повертає об’єкт поточного користувача

K2().get_current_user()

get_menu_url(self)

Повертає список url активних пунктів меню

get_project_setting(self)

Форма зміни проекту

get_user_counterparts_id(self)

Пошук id поточного контрагента

K2().get_user_counterparts_id()

get_user_counterparts_name(self)

Пошук назви поточного контрагента

K2().get_user_counterparts_name()

get_user_project_id(self)

Пошук id поточного проекту користувача

K2().get_user_project_id()

get_user_project_name(self)

Пошук назви поточного проекту користувача

K2().get_user_project_name()

get_user_stoages_name(self)

Пошук назви поточного складу

K2().get_user_stoages_name()

get_user_storage_id(self)

Пошук id поточного складу

K2().get_user_storage_id()

get_user_structural_division_id(self)

Пошук id поточного підрозділу

K2().get_user_structural_division_id()

get_user_structural_division_id_tree(self)

Пошук всіх підрозділів за ієрархією від поточного підрозділу користувача у форматі tuple ('id1', 'id2', 'id3')

init_db(self)

Підключення db_uri для вибраної бази даних

init_db_custom(self, key)

Підключення custom db_uri за ключем.

init_db_uri(self)

Пошук і ініціалізація файлу з підключення до бази даних

init_db_uri_custom(self)

Зчитує всі підключення до бази даних з файлу db_custom.yml і зберігає їх у словник.

init_db_uri_user(self)

Пошук і ініціалізація файлу з підключення до бази даних для поточного користуача

init_db_user(self)

Підключення db_uri для користувача

init_lm(self, app)

Ініціалізація логін-менеджера

kill_user_sessions(self, target_username)

Завершення сесії підключення користувача на рівні БД

search_class_dict(self, parent_class=None)

Рекурсивний пошук властивостей нащадків базового класу

search_class_prop(path_objs)

# Отримуємо значення з path_objs для розширення поточного класу

search_menu_items(self)

Search menu items

search_menu_items_category(self)

Search menu items category

search_static_files(self)

url_map(self)

Методи класу

Приклад використання:

id = K2.generate_id()
usr_perm = K2().get_user_permissions()
K2.get_platform()
yml_path = K2.search_yml('users')

clear_logging_messages()

Clear all logging message by user

compare_versions(version1, version2)

порівняння версій

create_system_settings()

dump_stacks()

Request information about the running threads of the current process.

return: A tuple containing:
  • A sequence of text lines detailing the stacks of running

threads and greenlets. (One greenlet will duplicate one thread,

the current thread and greenlet.)

  • The number of greenlets.

generate_id()

Генерація ID

get_active_lang_list()

Визначення id поточної мови

get_current_user_role_name()

Отрмання rolename поточного користувача

get_locale()

Визначення поточної мови

get_locale_id()

Визначення id поточної мови

get_path_abs(caller_file)

Абсолютний шлях до файлу, в якому виконується код.

Виклик K2.get_path_abs(__file__)

__file__ -стандартна змінна в Python, яка містить абсолютний шлях до поточного файлу, в якому вона використовується.

get_path_to_root(caller_file)

Відносний шлях до рута.

Виклик K2.get_path_to_root(__file__).

__file__ - стандартна змінна в Python, яка містить абсолютний шлях до поточного файлу, в якому вона використовується.

get_platform()

Визначення операційної системи

get_user_permissions()

Retrieve user permissions based on the URL.

This method fetches permissions for the current user based on the URL they are accessing.

Returns:

dict: A dictionary containing the user permissions, including 'roleid' and various permission flags

such as 'r' (read), 'w' (write), 'i' (insert), 'd' (delete), 'c' (create), 'exp' (export), 'imp' (import), 'del_' (undelete), 'settable' (set table), 'cutpast' (cut and paste), 'enable' (enable), and 'active' (active).

If the user is a superadmin, a default set of permissions is returned.

If no permissions are found for the user, an empty dictionary is returned.

Raises:

Exception: If an error occurs during database query execution.

Usage:

current_user_permissions = K2().get_user_permissions()

get_user_role(user_id)

Отрмання roleid користувача

ins_search_comp()

Вивід списку компонент з файлу components.yml у всіх шляхах пошуку

load_babel_translation_directories()

Завантаження перекладів

load_logging_message_by_id(error_id: str)

Load a logging message by its error_id from the error log file.

Parameters:

error_id (str): The ID of the error to load.

Returns:

dict: The logging message if found, None otherwise.

load_logging_messages(page_url: str)

Load logging messages for the curren page from the error log file.

Parameters:

name (str): Name of the object (page) to load messages for.

Returns:

dict: A dictionary containing formatted log messages, the count of 'error' messages, and the count of 'warning' messages.

log_entry(error_id, status, message, name)

logging_message(status, message, page_url=None, show_message=True)

Send a logging message to the client via Socket.IO.

This method emits a message to the client with a given status and message content.

The message is sent to a room identified by the current user's ID.

Parameters:

status (str): The status of the message (e.g., cls.log_error - 'ERROR', cls.log_warning - 'WARNING', cls.log_success - 'SUCCESS').

message (str): The content of the message to be sent.

page_url(str): url of page with Errors.

show_message (bool): True - save log and show windows, False - only save_log

Приклад використання функції:

K2.logging_message(K2.log_error, 'Operation completed with error.')

K2.logging_message(K2.log_success, 'Operation completed successfully.'1)

K2.logging_message(status=K2.log_success, message='Operation completed successfully.', page_url='/kadm/users', show_message=False)

Example:

namemenu(url)

Add identificators to url page

save_logging_message(error_id, status, message, name)

Save a logging message to the stack.

Parameters:

status (str): The status of the message (e.g., cls.log_error - 'ERROR', cls.log_warning - 'WARNING', cls.log_success - 'SUCCESS').

message (str): The content of the message to be saved.

name (str): Name of object where the message originated.

search_babel_translation_directories()

Пошук файлів з перекладами

search_comp_names()

Вивід списку ідентифікаторів компонент

у всіх шляхах пошуку

Rerurn: list of components identificators

search_yml(name_yml)

Search for a yml file in the caller directories of subclasses.

This method searches for a yml file with a specified name in the caller directories of all subclasses of K2Obj.

The search is performed in the 'yml' subdirectory of each caller directory.

Args:

name_yml: The name of the yml file to search for (without the '.yml' extension).

Returns:

The caller directory where the yml file was found, or None if the file was not found.

Usage:

To search for a yml file named 'users.yml', call this method as follows:

K2.search_yml('users')

API

Клас K2Obj

З цього класу створюються всі об’єкти системи К2. Він має основну базову функціональність, що розширюється та розвивається та яка є у всіх класів системи

Властивості

Властивості класу

name #Назва компоненти.

version #Версія компоненти

Властивості інстансу

self._name_yml #назва конфігураційного файлу

self._name_yml_tree #назва конфігураційного файлу з деревом

self._new_buttons #назва кнопки

self._name_yml_master #назва конфігураційного файлу

self._send_params #параметри для конфігураційного файлу

self._send_group_params #параметри групи

self._report_id #id звіту

self._data_source #датасети

self._off_buttons #вимкнути кнопки

self._row_selection #вибір з рядка

Методи

Методи інстансу

Приклад використання:

__init__(self)

Initialize self. See help(type(self)) for accurate signature.

content(self)

create_names_yml(self, name_yml: str = , name_yml_tree: str = ,

name_yml_master: str = '')

search_class_prop(path_objs)

Пошук властивостей для розширення класу

select_grid(self)

show_grid(self)

API

Клас K2admin_menus

Даний клас формує список пунктів меню для конкретного користувача

Клас k2data

Клас k2datasync

Клас k2logging

Класk2mail

Класk2notifications

Клас k2path

Клас k2secur

Клас k2settings

Клас k2trans

Клас k2upd

Класи компонент

Клас K2Site

Клас K2Grid

Клас K2WMS

K2UpdateRemainder

Клас для оновлення залишків на основі даних з отриманих від клієнтів.

Відповідає за обробку даних з логів, створення/оновлення записів про залишки товарів та керування їх статусами (новий, стабільний, старий).

Методи

__init__()

Ініціалізація класу. Викликає конструктор батьківського класу K2Docs.

Параметри: Відсутні.

Повертає: Об'єкт класу K2UpdateRemainder.

update_pub_sub_remainder()

Оновлення залишків на основі даних Pub/Sub. Витягує нові залишки з логів, додає їх у таблицю k2remainder_by_parties, оновлює статуси існуючих записів та видаляє застарілі залишки.

Логіка статусів:

'new' – нові залишки, отримані в поточному оновленні.

'stable' – залишки, які підтвердились та доступні користувачам.

'old' – застарілі дані, що підлягають видаленню.

Алгоритм роботи:

Отримує список pub_sub_list_id з логів k2pubsub_logs.

Витягує дані про залишки (inventSumLines).

Вставляє нові записи у таблицю k2remainder_by_parties зі статусом 'new'.

Масово оновлює статуси залишків:

Видаляє застарілі ('old').

Переводить стабільні ('stable') в старі ('old').

Нові ('new') переводить у стабільні ('stable').

Фіксує зміни у базі (commit).

У разі помилки виконує відкат (rollback).

_insert_new_pub_sub_nomenclature(session, nomenclature_data)

Додавання нової номенклатури. Перевіряє наявність номенклатури у таблиці k2nomenclature. Якщо запису немає – створює його.

Параметри:

session (Session) – об'єкт сесії бази даних.

nomenclature_data (dict) – дані про номенклатуру:

itemId (str) – ідентифікатор номенклатури.

itemName (str) – назва товару.

unitId (str) – одиниця виміру (конвертується за фіксованим списком).

Повертає: Нічого.

Винятки:

Логує помилку у разі невдалої вставки даних.

Клас K2CRM

Цей клас представляє CRM модуль, який забезпечує роботу з різними розділами CRM системи такими як:

управління лідами - замовлення

  • рахунки
  • звіти
  • налаштування системи CRM

Клас K2CRM наслідується від K2Obj, всі властивості та методи отримуються від батьківського класу.

K2DocsCRM

Клас K2DocsCRM є частиною системи K2CRM і наслідується від K2Obj. Він надає доступ до ключових глобальних налаштувань та ресурсів, необхідних для роботи з документами або іншими функціями CRM.

Атрибути

database:

База даних, доступна через глобальний об'єкт K2.db.

Призначення: Використовується для зберігання та обробки даних, пов'язаних з CRM.

time_zone:

Часовий пояс системи, визначений глобальним об'єктом K2.timezone.

Призначення: Забезпечує коректну обробку часу в межах системи.

domain:

Домен, на якому працює CRM, отримується з глобального об'єкта K2.domain.

Призначення: Використовується для побудови URL-адрес або інших задач, пов'язаних з доменним середовищем.

Властивості

Методи

create_contact() - Цей метод створює контакт на основі даних існуючого ліда. Лід і контакт взаємодіють через базу даних, де дані ліда переносяться в таблицю контактів.

Логіка роботи:

Метод очікує вхідний JSON, що містить ідентифікатор ліда (lead_id)

Перевіряє чи було надано lead_id. Якщо lead_id не надано то повертається помилка.

Шукає ліда в таблиці k2lead за наданим параметром.

Якщо лід знайдено то створюється новий запис у таблиці k2contacts на основі даних ліда.

У разі помилки скасовує транзакцію і повертає опис помилки.

Моделі які використовуються

K2Lead. Таблиця яка містить дані про лідів.

k2contacts. Таблиця, в яку додається новий контакт на основі даних ліда.

check_lead() - Цей метод перевіряє, чи існує контакт із заданим номером телефону у базі даних (k2contacts). Якщо знайдено, оновлює дані ліда (ім'я, прізвище, email) у переданому об'єкті.

Логіка роботи:

Отримає вхідний JSON, що містить options із даними для перевірки.

З options[‘dataField’] отримує номер телефону (phone)

Виконує SQL-запит до таблиці k2contacts для пошуку контакту за номером телефону.

Якщо контакт знайдено то відбувається оновлення даних у options[‘dataField’] (name, surname, email, lead_id)

Якщо контакт не знайдено то для полів name, surname, email встановлюється значення None.

У разі помилки повертає повідомлення з помилкою.

crm_data(route, data) - Цей метод отримує дані із відповідних таблиць з бази даних на основі переданих параметрів для подальшого оформлення друкованої форми документів у компоненті k2CRM

Логіка роботи:

Створює порожній словник result_dict, який буде наповнюватись даними та парсить вхідні дані data у форматі JSON і зберігає їх у result_dict[‘Header’].

Формує SQL-запити для витягування даних із таблиць бази даних (Товари, Організація, Контрагент, Склад, Договір, Відповідальна особа, Клієнт).

Для кожного запиту виконується SQL-запит та результат додається до result_dict.

Результати запитів конвертуються у словники (row_asdict) для зручного JSON-формату.

Успішний результат повертається у форматі JSON із ключем data. У разі помилки застосовується лог помилки і повертається повідомлення з помилкою.

process_options - Метод обробляє різні параметри, передані через JSON-запит, і налаштовує об'єкти типу K2Grid для роботи з даними в залежності від значення ключа name у вхідних даних.

Основні операції:

Обробка k2doc_rows_detail:

Ім'я YML: 'k2doc_rows_detail'.

Вимикаються кнопки: add, delete, printReport.

Передаються параметри: row_id та storage_id.

Обробка k2doc_move:

Ім'я YML: 'k2doc_move'.

Вимикаються кнопки: add, edit, delete, printReport.

Передаються параметри: doc_id.

Логіка роботи:

Метод очікує вхідні дані у форматі JSON і доступ до них здійснюється через request.json.

Перевіряється значення ключа name у вхідних даних:

Якщо name == 'k2doc_rows_detail':
Виділяється row_id із переданих даних. Створюється об’єкт K2Grid з іменем yml “'k2doc_rows_detail”. Вимикаються кнопки add, delete, printReport на панелі інструментів. Отримується storage_id через метод self.get_storage_id(). Параметри row_id та storage_id передаються через send_params.
Якщо name == 'k2doc_move':

Виділяється doc_id із вхідних даних. Створюється об'єкт K2Grid з іменем yml 'k2doc_move'. Вимикаються кнопки add, edit, delete, printReport на панелі інструментів. Параметри (doc_id) передаються через send_params.

Повернення результату у форматі JSON

Клас K2Report

Цей клас забезпечує генерацію та друк звітів за допомогою API Stimulsoft.

Основні можливості модуля

створення звітів за допомогою конструктора звітів

управління друкованими формами

генерація друкованих документів

взаємодія з API Stimulsoft для візуалізації та експорту звітів

=== Клас K2Report наслідується від K2Obj, всі властивості та методи отримуються від батьківського класу. Також клас K2Report є батьківським класом для K2ReportEmbed та K2ReportDesigner ===

Атрибути класу

Методи класу

__init__(sql=[])

Ініціалізація класу. Отримує шлях до каталогу файлу, що викликав ініціалізацію.

Параметри:

sql (list, опціонально): Список SQL-запитів.

create_report(sql=None, data_source=None)

Створення звіту. Відображає HTML-сторінку редактора або переглядача звітів.

Параметри:

sql (dict, опціонально): SQL-запити.

data_source (dict, опціонально): Джерело даних.

Повертає:

HTML-сторінку редактора або переглядача звітів.

get_report(file_name)

Отримання звіту за його ім'ям.

Параметри:

file_name (str): Назва файлу звіту.

Повертає:

Файл звіту або помилку 404, якщо файл не знайдено.

execute_query(query, params=None)

Виконує SQL-запит.

Параметри:

query (str): SQL-запит.

params (dict, опціонально): Параметри запиту.

Повертає:

Результат виконання запиту.

get_report_designer(file_name, design_type_id)

Отримує дизайнер звіту за типом звіту.

Параметри:

file_name (str): Назва файлу.

design_type_id (str): Тип дизайну (1 - звіт, 2 - дашборд).

Повертає:

Файл дизайну або помилку 404.

add_reports_type(name, data)

Додає тип звіту до групи звітів.

Параметри:

name (str): Назва типу звіту.

data (dict): Дані для оновлення.

Повертає:

bool: True, якщо успішно.

Клас K2ReportEmbed

K2ReportEmbed - Компонент для вбудовування звітів у веб-додаток. Дозволяє отримувати та відображати звіти з бази даних на основі їх ідентифікаторів.

Атрибути класу

__init__(reports_id: List[str])

Ініціалізує екземпляр класу K2ReportEmbed.

Аргументи:

reports_id (List[str]) – список ідентифікаторів звітів.

get_report_data() -> Optional[List[Dict[str, Any]]]

Отримує дані звітів з бази даних.

Повертає:

Optional[List[Dict[str, Any]]] – список даних звітів або None, якщо сталася помилка.

Опис: Метод виконує запит до бази даних для отримання інформації про звіти, джерела даних та формує структуру JSON-даних. Він включає наступні дані для кожного звіту:

report_name – Назва звіту.

file_name – Ім'я файлу звіту.

json_data_list – JSON-структура, що містить дані для звіту.

Якщо під час виконання запитів виникає помилка, вона логуватиметься у системному журналі помилок

Приклад вбудовування звітів на веб-сторінку

Бекенд (Flask)

@k2production.route('/test_dashboard', methods=['GET'])
def test_dashboard():

""" Index page """

reports_id = ['b452a5ae84f9e92e75eb0467c196fd71', '1673a4fab757fb6c5df970fdc6ee680c',

'49952f397efff44d7ce0e5cb9aa625fb']

k2report_embed = K2ReportEmbed(reports_id)
return render_template('k2dashboard_production/k2dashboard_production.html',
dashboard_settings=k2report_embed)

Фронтенд (Jinja-шаблон)

{% extends template_name + '/base.html' %}
{% block content %}
{% if error %}
{{ error }}
{% else %}
{% include dashboard_settings.template %}
{% endif %}
{% endblock %

Клас K2ReportDesigner

Клас K2ReportDesigner надає функціональність для створення, редагування та перегляду звітів і дашбордів. Він взаємодіє з базою даних, управляє файлами звітів та генерує JSON-дані для подальшого використання.

Атрибути класу

Методи класу

designer()

Відображає сторінку редагування друкованої форми.

Повертає:

str: HTML-шаблон сторінки редагування.

viewer()

Відображає сторінку перегляду друкованої форми.

Повертає:

str: HTML-шаблон сторінки перегляду.

dashboard_viewer()

Відображає сторінку перегляду дашборду.

Повертає:

str: HTML-шаблон сторінки перегляду дашборду.

dashboard_designer()

Відображає сторінку редагування дашборду.

Повертає:

str: HTML-шаблон сторінки редагування дашборду.

json_data_create(datasource_value, datasource_keys, datasource_is_counterpart_id, datasource_is_storage_id, period, date_from=None, date_to=None)

Створює JSON-дані на основі джерел даних та періоду.

Параметри:

datasource_value (list): Список SQL-запитів.

datasource_keys (list): Список ключів для джерел даних.

datasource_is_counterpart_id (list): Список флагів, що вказують на наявність counterpart_id.

datasource_is_storage_id (list): Список флагів, що вказують на наявність storage_id.

period (int): Період вибірки даних.

date_from (str, опціонально): Початкова дата періоду.

date_to (str, опціонально): Кінцева дата періоду.

Повертає:

dict: Словник з результатами запитів або помилкою.

Приклад використання

datasource_value = ["SELECT * FROM table1", "SELECT * FROM table2"]
datasource_keys = ["table1_data", "table2_data"]
datasource_is_counterpart_id = [True, False]
datasource_is_storage_id = [False, True]
period = 1
date_from = "2023-01-01"
date_to = "2023-12-31"
json_data = k2_designer.json_data_create(datasource_value, datasource_keys, datasource_is_counterpart_id, datasource_is_storage_id, period, date_from, date_to)

save_report_id()

Зберігає ідентифікатор та налаштування звіту в JSON-файл.

Повертає:

Response: JSON-відповідь про результат збереження.

mrt_report_create(report_id, design_type_id=None)

Створює MRT-файл звіту на основі шаблону.

Параметри:

report_id (str): Ідентифікатор звіту.

design_type_id (str, опціонально): Тип дизайну звіту.

Повертає:

str: Ім'я створеного файлу або помилка.

table_report_data(datasource_value, datasource_keys)

Обробляє дані з SQL-запитів для кожного джерела даних і повертає їх у вигляді JSON.

Параметри:

datasource_value (list): Список SQL-запитів для виконання.

datasource_keys (list): Список ключів, які відповідають кожному SQL-запиту.

Повертає:

dict: Словник, де ключі — це значення з datasource_keys, а значення — дані у форматі JSON для кожного запиту.

save_info_report_designer()

Зберігає інформацію про репорт та генерує файл MRT.

Повертає:

Response: JSON-об'єкт із результатами генерації звіту та повідомленням про успішність.

data_source_lists_creating(group_reports_id)

Створює списки джерел даних для звіту.

Параметри:

group_reports_id (str): Ідентифікатор групи звітів.

Повертає:

list: Списки джерел даних.

Клас K2Production

Методи класу

Схема вибору обслуговування терміналу

Клас K2LogbookTMDoc

Клас для управління логбуком технічного обслуговування (ТО). Забезпечує функціональність для створення, перегляду, редагування записів логбука ТО, роботи з параметрами завдань та обладнання, а також підготовки даних про запчастини.

Методи класу

k2logbook_tm()

Відображає сторінку логбука технічного обслуговування. Повертає:

str: HTML-шаблон сторінки логбука.

take_logbook_tm(task_id)

Створює форму логбука для конкретного завдання. Параметри:

task_id (str): Ідентифікатор завдання.

Повертає:

str: HTML-шаблон форми логбука.

edit_logbook_tm(logbook_fields_tm_id)

Редагує запис логбука технічного обслуговування. Параметри:

logbook_fields_tm_id (str): Ідентифікатор запису логбука.

Повертає:

str: HTML-шаблон сторінки редагування.

select_current_step(connection, logbook_fields_tm_id)

Вибирає поточний активний крок логбука. Параметри:

connection: Підключення до бази даних.

logbook_fields_tm_id (str): Ідентифікатор запису логбука.

Повертає:

str: Ідентифікатор поточного кроку.

planned_tm(data, connection)

Налаштовує параметри grid для запланованого технічного обслуговування. Параметри:

data (dict): Дані завдання.

connection: Підключення до бази даних.

Повертає:

dict: Налаштування grid.

unplanned_tm(data, connection)

Налаштовує параметри grid для незапланованого технічного обслуговування. Параметри:

data (dict): Дані завдання.

connection: Підключення до бази даних.

Повертає:

dict: Налаштування grid.

write_logbook_params(data)

Зберігає параметри логбука в JSON-файл. Параметри:

data (dict): Дані для збереження.

Повертає:

JSON: Відповідь про успішне збереження.

read_logbook_params()

Зчитує параметри логбука з JSON-файлу поточного користувача. Повертає:

dict: Збережені параметри логбука.

fill_logbook_tm_rows(data)

Заповнює рядки логбука технічного обслуговування. Параметри:

data (dict): Параметри для заповнення рядків.

Повертає:

bool: True при успішному заповненні, False при помилці.

pull_spare_parts_data()

Витягує та підготовлює дані про запчастини для логбука. Повертає:

JSON: Відповідь з результатом операції та даними про запчастини.

send_params_to_k2logbook_spare_parts(data)

Формує параметри та SQL-запит для отримання даних про запчастини. Параметри:

data (dict): Параметри логбука.

Повертає:

dict: Інформація про запчастини або False при помилці.

instruments_and_equipment_parts_params()

Отримує параметри інструментів та запчастин для обладнання. Повертає:

JSON: Відповідь з результатом операції або повідомленням про помилку.

task_step_form()

Формує форму кроку завдання технічного обслуговування. Повертає:

JSON: Відповідь з параметрами кроку або повідомленням про помилку.

is_unplanned_step_form(step_data)

Обробляє форму кроку для позапланованого ТО. Параметри:

step_data (dict): Дані кроку.

Повертає:

str: ID кроку або JSON з помилкою.

save_step(data)

Зберігає дані кроку (номенклатуру). Параметри:

data (dict): Параметри кроку.

Повертає:

bool: True при успіху, False при помилці.

end_step(data, session_id, connection, post_request)

Завершує крок ТО. Обробляє запчастини, час, статус. Параметри:

data (dict): Дані кроку.

session_id (str): ID сесії.

connection (опціонально): Підключення до БД.

post_request (bool): Чи це постобробка.

Повертає:

JSON або False.

step_image_check(connection, data)

Перевіряє наявність зображень для кроку. Параметри:

connection: Підключення до БД.

data (dict): Дані кроку.

Повертає:

bool: True (є зображення), False (немає або помилка).

step_data_check(connection, data)

Перевіряє коректність даних про запчастини. Параметри:

connection: Підключення до БД.

data (dict): Дані кроку.

Повертає:

bool: True (дані валідні), False (невалідні або помилка).

decline_task()

Відхиляє завдання. Деактивує запис у логбуці. Повертає:

JSON: Результат операції.

write_user_comment()

Додає коментар користувача до кроку. Повертає:

JSON: Результат збереження.

end_step_manager(data)

Керує завершенням кроку. Перевіряє матеріали, зображення. Параметри:

data (dict): Дані кроку.

Повертає:

bool: True (успіх), False (помилка).

detail_check(connection, data)

Перевіряє відповідність номенклатури обладнанню. Параметри:

connection: Підключення до БД.

data (dict): Дані кроку.

Повертає:

bool: True (відповідність є), False (немає або помилка).

send_params_to_k2mount_point_form()

Формує параметри для форми монтажних точок обладнання. Повертає:

JSON: Параметри форми (точки монтування, URL зображення схеми).

change_scheme_equipment()

Оновлює схему обладнання шляхом заміни монтажних точок. Повертає:

JSON: Результат операції.

pass_familiarisation()

Позначає завдання як ознайомлене та оновлює його статус. Повертає:

JSON: Підтвердження операції.

Примітка:

Функціонал створення акту списання закоментований.

create_write_off_act_logbook(connection, data)

Створює акт списання для логбука. Параметри:

connection: Підключення до БД.

data: Дані для акту.

Повертає:

bool: True (акт створено), False (помилка).

create_doc_rows_for_write_of_act(connection, data)

Створює рядки документу для акту списання. Параметри:

connection: Підключення до БД.

data: Дані документу.

Повертає:

bool: True (рядки створено), False (помилка).

write_off_part_logbook(connection, data)

Списати частину обладнання з логбука. Параметри:

connection: Підключення до БД.

data: Дані для списання.

Повертає:

Нічого (помилки обробляються через rollback).

end_logbook()

Завершує роботу з журналом ТО. Повертає:

JSON: Результат операції (успіх або помилка).

spare_parts_check()

Перевіряє наявність запасних частин для журналу. Повертає:

JSON: Результат перевірки (успіх або помилка).

equipment_qr_confirmation()

Підтверджує відповідність QR-коду обладнання. Повертає:

JSON: Результат перевірки (успіх або помилка).

add_new_equipment_parts(connection, data)

Додає нові частини обладнання до БД. Параметри:

connection: Підключення до БД.

data: Дані про частини обладнання.

Повертає:

bool: True (успіх), False (помилка).

material_quantity()

Отримує інформацію про кількість матеріалів. Повертає:

JSON: Дані про кількість матеріалів.

create_unplanned_task(data)

Створює незаплановане завдання. Параметри:

data: Дані для створення завдання.

Повертає:

bool: True (успіх), False (помилка).

take_material_by_qr()

Резервує матеріал за допомогою QR-коду. Повертає:

JSON: Результат операції (успіх або помилка).

return_material_by_qr()

Повертає матеріал за QR-кодом. Повертає:

JSON: Результат операції (успіх або помилка).

requires_partner()

Встановлює статус завдання "потребує партнера". Повертає:

JSON: Підтвердження операції.

join_task()

Додає користувача до завдання та змінює статус на "in_work". Повертає:

JSON: Результат операції.

e_report_logbook(logbook_fields_tm_id)

Генерує звіт для журналу ТО у форматі HTML. Параметри:

logbook_fields_tm_id: ID журналу.

Повертає:

HTML: Відображення звіту.

get_all_employee_image()

Отримує всі зображення журналу. Повертає:

JSON: Список URL зображень.

get_employee_image()

Отримує зображення конкретного рядка журналу. Повертає:

JSON: Список URL зображень.

get_image_logbook(image_data)

Перетворює шляхи зображень у URL. Параметри:

image_data: Дані зображень з БД.

Повертає:

list: Список URL

confirm_task()

Підтверджує завершення завдання. Надсилає сповіщення. Повертає:

JSON: Результат операції.

send_on_revision_task()

Надсилає завдання на доопрацювання. Повертає:

JSON: Підтвердження операції.

send_to_the_task_list_revision()

Надсилає завдання на доопрацювання та деактивує виконавців. Повертає:

JSON: Результат операції.

change_task_employee(connection, data)

Оновлює виконавців завдання. Параметри:

connection: Підключення до БД.

data: Нові виконавці та рядки.

change_step_status_revision(connection, data)

Скидає статус виконання кроків. Параметри:

connection: Підключення до БД.

data: Ідентифікатори кроків.

change_task_status_revision(connection, data, status)

Змінює статус завдання. Параметри:

connection: Підключення до БД.

data: Ідентифікатор завдання.

status: Новий статус (за замовчуванням in_work).

Клас K2EquipmentFunction

Клас K2EquipmentFunction є підкласом K2Obj і призначений для роботи з функціональністю, пов'язаною з обладнанням у системі K2. Він містить методи для обробки запитів на затвердження змін у технічній документації обладнання.

Атрибути

path_class: 'components/k2production/k2production/k2equipment'

file_class: 'k2equipment'

Методи

init(self)

Конструктор класу, який викликає конструктор батьківського класу K2Obj.

send_approval_request_from_hook(self, data) - Метод для відправлення запиту на затвердження змін у технічній карті обладнання.

Параметри

data (dict): Словник з даними, що містить:

equipment_type_id (int): Ідентифікатор типу обладнання

changed_fields (dict): Словник зі зміненими полями та їх значеннями

Логіка роботи

Перевірка наявності записів з parentid:

Перевіряє наявність записів у таблиці k2tm_fields з parentid != '0'

Якщо записів немає, повертає помилку 404

Отримання інформації про тип обладнання:

Витягує equipment_type_name та equipment_type_code з таблиці k2equipment_type

Якщо тип обладнання не знайдено, повертає помилку 404

Пошук затверджувачів:

Отримує список активних користувачів для затвердження з таблиці k2users_for_approval

Якщо затверджувачів не знайдено, повертає помилку 404

Формування повідомлення:

Створює опис змін у форматі "поле: старе_значення → нове_значення"

Формує URL для сторінки затвердження

Відправка запиту на затвердження:

Використовує K2Notifications.send_approval_request() для відправки повідомлення

Передає список затверджувачів, ідентифікатор об'єкта, URL та опис змін

Повертає

У разі успіху: JSON з повідомленням про успішну відправку (код 200)

У разі помилки: JSON з описом помилки (код 404 або 500)

Залежності

Потребує доступу до бази даних через self.db

Використовує клас K2Notifications для відправки повідомлень

Працює з конфігурацією домену через K2.domain

K2 ERP Javascript

createImageSliderModal(images, containerId = null)

Створює слайдер зображень у контейнері або модальному вікні.

Параметри:

images: Масив URL-адрес зображень.

containerId: Ідентифікатор контейнера для вставки слайдера (необов’язково).

Повертає:

Ідентифікатор створеного каруселя або модального вікна.

Якщо зображення відсутні, показує повідомлення та повертає null.

showBootstrapLoader(containerId)

Додає анімацію завантаження у вказаний контейнер.

Параметри:

containerId: Ідентифікатор контейнера, у який буде вставлений індикатор завантаження.

removeBootstrapLoader(containerId)

Видаляє анімацію завантаження з контейнера.

Параметри:

containerId: Ідентифікатор контейнера, з якого потрібно прибрати індикатор завантаження.

showUserAlert(message, type = 'light')

Відображає сповіщення користувача у вигляді Bootstrap Toast

.

Параметри:

message: Текст повідомлення. type: Тип сповіщення (primary, success, danger, warning, info, light). За замовчуванням 'light'.

Стилі (Назва)

Подзаголовок

Заголовок 1

Заголовок 2

Заголовок 3

Заголовок 4

Заголовок 5

Заголовок 6

Звичвйний текст

Ілюстрації з документа

Див. також

index.php?title=Категорія:K2 ERP index.php?title=Категорія:K2 ERP index.php?title=Категорія:Python index.php?title=Категорія:Документація K2 index.php?title=Категорія:Документація для розробників