Перейти до вмісту

Класи та команди K2 ERP Python: відмінності між версіями

Матеріал з K2 ERP Wiki
Прибрав шаблон
Немає опису редагування
 
(Не показано одну проміжну версію цього користувача)
Рядок 1: Рядок 1:
Виділяється doc_id із вхідних даних.; Вимикаються кнопки: add, delete, printReport.; ==== createImageSliderModal(images, containerId = null) ==== showBootstrapLoader(containerId) ==== removeBootstrapLoader(containerId) ==== showUserAlert(message, type = 'light') ==== Стилі (Назва) ==
</pre>


Подзаголовок
=== Приклади використання K2 ===


Заголовок 1
K2.logging_message(


Заголовок 2
!;<pre>
== Клас K2ReportDesigner ==


Заголовок 3
showBootstrapLoader(containerId)


Заголовок 4
=== createImageSliderModal() ===


Заголовок 5
!; Каталог


Заголовок 6
k2form==2.0.1.27
 
</pre>
Звичвйний текст
 
== Ілюстрації з документа ==
 
dashboard_settings=k2report_embed)
Вставляє нові записи у таблицю k2remainder_by_parties зі статусом 'new'.;=== Клас k2datasync ===
 
=== K2UpdateRemainder ===
page_url(str): url of page with Errors.;==== clear_logging_messages() ====
 
Clear all logging message by user


pydoc -w k2/k2obj.py, де k2/k2obj.py - шлях до файлу з корня
Python-залежності, якщо вони потрібні, вказуються у файлі:
 
Параметри:
 
{{ error }}
 
[[index.php?title=Категорія:Документація для розробників]]
 
==== log_entry(error_id, status, message, name) ====
 
Хуки.;==== Атрибути класу ====
 
==== Властивості класу ====
 
Метод очікує вхідні інформаційні дані у форматі JSON і доступ до них здійснюється через request.json.; * [[K2 Cloud ERP]]
* [[K2 ERP]]
* [[Python]]
* [[API]]
* [[Документація для розробників]]
* [[K2 Cloud ERP Javascript]]
 
==== Класk2mail ====
Вивід списку ідентифікаторів компонент
status (str): The status of the message (e.g., cls.log_error - 'ERROR', cls.log_warning - 'WARNING', cls.log_success - 'SUCCESS').; See help(type(self)) for accurate signature.; Вимикаються кнопки add, edit, delete, printReport на панелі інструментів.; Він має основну базову функціональність, що розширюється та розвивається та яка є собою у всіх класів системи
 
[[index.php?title=Категорія:Документація K2]]
Ім'я YML: 'k2doc_rows_detail'.; __TOC__
 
Об'єкт класу K2UpdateRemainder.;==== get_active_lang_list() ====
Алгоритм роботи:
генерація друкованих документів
 
=== Клас K2admin_menus ===
 
==== Даний клас формує список пунктів меню для конкретного користувача ====
 
==== Властивості ====
 
Витягує equipment_type_name та equipment_type_code з таблиці k2equipment_type


<pre>
<pre>
 
requirements.txt
==== load_logging_message_by_id(error_id: str) ====
 
Повертає:
 
:return: A tuple containing:
 
=== Він взаємодіє з базою даних.; створення забезпечується через Клас K2ReportDesigner надає функціональність; додатково реалізовано редагування та перегляду звітів і дашбордів.; Окремо варто відзначити управляє файлами звітів і генерує JSON-дані для подальшого використання. ===
 
==== Метод очікує вхідний JSON, що містить ідентифікатор ліда (lead_id) ====
 
Request information about the running threads of the current process.; коректну обробку часу в межах системи реалізується засобами Призначення:.; Parameters:
Пошук файлів з перекладами
Отримання інформації про тип обладнання:
=== Клас k2secur ===
error_id (str): The ID of the error to load.;===
 
==== Атрибути ====
 
path_class: 'components/k2production/k2production/k2equipment'
 
file_class: 'k2equipment'
 
==== Методи ====
 
==== init(self) ==== Параметри ==== Логіка роботи ====
 
==== get_path_to_root(caller_file) ====
 
str: HTML-шаблон сторінки перегляду дашборду.; dict: The logging message if found, None otherwise.; str: HTML-шаблон сторінки редагування.; Повернення результату у форматі JSON
 
Приклад використання:
K2Lead.; Витягує нові залишки з логів, додає їх у таблицю k2remainder_by_parties, оновлює статуси існуючих записів та видаляє застарілі залишки.; Витягує інформаційні дані про залишки (inventSumLines).;==== get_locale_id() ====
 
Ініціалізація класу.; session (Session) – об'єкт сесії бази даних.; У разі помилки повертає повідомлення з помилкою.; date_from = "2023-01-01"
 
process_options - Метод обробляє різні параметри, передані через JSON-запит, і налаштовує об'єкти типу K2Grid для роботи з даними в залежності від значення ключа name у вхідних даних.; Таблиця яка містить інформаційні дані про лідів.; {% endblock %
 
Викликає конструктор батьківського класу K2Docs.;<pre>
 
Призначення: застосовують, коли потрібно для зберігання та обробки даних, пов'язаних з CRM.; dict: A dictionary containing the user permissions, including 'roleid' and various permission flags
 
name #Назва компоненти.; current_user_permissions = K2().get_user_permissions()
 
Потребує доступу до бази даних через self.db
 
Якщо контакт не знайдено то для полів name, surname, email встановлюється значення None.; Використовуються для розширення або зміни поведінки стандартних методів системи (файл hooks.py)
 
==== search_comp_names() ====
 
==== create_system_settings() ====
reports_id = ['b452a5ae84f9e92e75eb0467c196fd71', '1673a4fab757fb6c5df970fdc6ee680c',
self._name_yml_master #назва конфігураційного файлу
 
Вимикаються кнопки: add, edit, delete, printReport.;</pre>
 
Передає список затверджувачів, ідентифікатор об'єкта, URL та характеристика змін
 
=== K2DocsCRM ===
 
{% else %}
 
</pre>
</pre>


==== get_user_role(user_id) ====
== Документація компоненти ==


k2log==2.0.0.2
# отримує JSON із <code>lead_id</code>;
k2grid==2.0.4.1
# перевіряє, чи передано <code>lead_id</code>;
# шукає лід у таблиці <code>k2lead</code>;
# створює запис у таблиці <code>k2contacts</code>;
# у разі помилки скасовує транзакцію та повертає характеристика помилки.; Для компонент K2 застосовується стандартний формат:


Логіка роботи:
== Системні класи ==


=== Клас k2path ===
Отримати поточного користувача:


Отримує список активних користувачів для затвердження з таблиці k2users_for_approval
Фіксує зміни у базі (commit).; Таблиця, в яку додається новий контакт на основі даних ліда.; k2form==2.0.1.27
</pre>
</pre>
return render_template(
Приклад:


Python залежності, якщо є. (файл requirements.txt)
== Вимоги до компоненти K2 ERP ==


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


Історія змін. Документ, в якому описуються зміни текстом, зрозумілим для користувачів. (файл history.txt)
├── doc/
{| class="wikitable" style="width:100%;"
Метод має змогу зберігати повідомлення в журналі та відправляти його клієнту через Socket.IO.;<pre>
{| class="wikitable" style="width:100%;"


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


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


Інструкція користувача. Де розписано, як користуватись продуктом. Інструкція користувача повинна автоматично підтягуватись системою документації K2 Cloud ERP, додаючи розділ документації для цього продукту і надаючи можливість пошуку інформації в документації. Зберігається в каталозі: doc/user_manual)
@k2production.route('/test_dashboard', methods=['GET'])


Документацію для розробників, що генерується автоматично з коментарів. Зберігається в каталозі: doc/developer_documentation )
!; Властивість
{% block content %}
Результат містить roleid та прапорці доступу, зокрема:


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


Документація для розробників (не обов’язково, але желательно). Додатково, якщо потрібно, щось додатково відмітити. Каталог doc/additional_developer_docs)
{| class="wikitable" style="width:100%;"
def test_dashboard():
send_approval_request_from_hook(self, data)


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


Віджети. Дашборди та інші візуальні елементи для вставки на головну сторінку та інші сторінки, які можна додавати автоматично. (потрібно вирішити як додавати) /widgets
/languages/en/LC_MESSAGES/messages.mo
 
date_from = "2023-01-01"
Юніт тести. Написати де і яка структура. Юніт тести повинні автоматично знаходитись системою і використовуватись для загального тестування системи. Каталог /tests (потрібно завершити автоматичне збирання із компонент)
{| class="wikitable" style="width:100%;"
 
Локалізації. В К2 використовуються щонайменше: українська та англійська мова. Ядро повинно вміти робити переклади і давати можливість працювати з перекладами стороннім користувачам, покращуючи якість перекладу. Зберігається в каталозі:


<pre>
<pre>
/languages/en/LC_MESSAGES/messages.po
/languages/en/LC_MESSAGES/messages.mo
</pre>


Демо-дані. Це дані, які розгортаються на демо-базі даних для демонстрації роботи з продуктом. (потрібно вирішити як додавати)
Метод збирає інформаційні дані по товарах, організації, контрагенту, складу, договору, відповідальній особі та клієнту, після чого повертає результат у JSON-форматі.; | Для розробників K2 ERP Python
|-
| Що описує документ?;</div>
!; Компонента повинна мати документацію для різних груп користувачів.; └── k2adm/


Файли ресурсів (зображення, тексти): Каталог /static
!; Значення <code>name</code>
Клас надає можливість отримувати та відображати звіти з бази даних за їхніми ідентифікаторами.; Основні частини компоненти:
Отримати назву поточного проєкту:
{| class="wikitable" style="width:100%;"
message='Operation completed successfully.',
'k2dashboard_production/k2dashboard_production.html',
Для автоматичної генерації HTML-документації з docstring можна використовувати стандартний інструмент `pydoc`.;<pre>


YML, якщо є. Каталог /yml
k2/k2obj.py
│ ├── developer_documentation/
!; | У каталозі <code>doc/</code>
|-
| Де зберігаються локалізації?; |-
| <code>message</code>
| Текст повідомлення
|-
| <code>type</code>
| Тип повідомлення: <code>primary</code>, <code>success</code>, <code>danger</code>, <code>warning</code>, <code>info</code>, <code>light</code>
|}


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


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


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


<pre>
<pre>
components/
removeBootstrapLoader(containerId)
└── k2adm/
=== showUserAlert() ===
├── k2adm/
|-
│ ├── data/
| Для кого ця сторінка?; |-
│ ├── languages/
| <code>add_authorized_users(user_id, login)</code>
│ ├── static/
| Додає користувача до списку авторизованих
│ ├── templates/
|-
│ ├── yml/
| <code>check_authorized_users(user_id)</code>
│ ├── tests/
| Перевіряє, чи користувач системи активний
│ ├── examples/
|-
│ ├── widgets/
| <code>check_logout_users(user_id)</code>
│ ├── __init__.py
| Перевіряє користувачів, що вийшли
│ ├── objects/
|-
│ ├── users/users.py
| <code>dell_authorized_users(user_id)</code>
│ ├── roles/roles.py
| Видаляє користувача зі списку авторизованих
│ ├── forms.py
|-
│ ├── history.txt
| <code>get_authorized_users()</code>
│ ├── 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
</pre>


== Системні класи ==
== K2 ERP JavaScript ==


=== Клас K2 ===
Клас гарантує створення, перегляд і редагування записів логбука, роботу з параметрами завдань, обладнанням, запчастинами, кроками технічного обслуговування та підтвердженням виконання робіт.; !; Метод


Ядро системи K2CloudERP.
!; Призначення


==== Властивості ====
Очікувані інформаційні дані:


==== Властивості класу ==== Властивості інстансу ====
== Авторство ==


==== self.secur #властивість що підключає до ядра клас безпеки ====
dashboard_settings=k2report_embed
K2.get_path_to_root(__file__)
Документ описує загальні вимоги до компонентів K2 ERP, базові системні класи, структуру компонентів, правила документування та приклади використання окремих класів.; Згенерувати ID:


self.path #властивість що підключає до ядра клас пошуку шляхів по ієрархії self.data #властивість що підключає до ядра клас синхронізації даних
│ ├── languages/
== Клас K2Obj ==
!;=== Основні групи методів ===
|-
| <code>images</code>
| Масив URL-адрес зображень
|-
| <code>containerId</code>
| Ідентифікатор контейнера для вставки слайдера
|}


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


==== self.notifications #властивість що підключає до ядра клас створення та відправки сповіщень ==== K2().domain ====
=== Основні методи K2Obj ===


==== Методи ====
Клас обробляє інформаційні дані з логів, створює або оновлює записи про залишки товарів і керує їхніми статусами.; Класи компонент реалізують функціональність конкретних модулів K2 ERP.;=== Основні функціональні можливості ===
├── k2adm/
<pre>
│ ├── widgets/
[[Категорія:Python]]
<div style="border:2px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
)
!; характеристика


==== Методи інстансу ==== K2().get_user_counterparts_id() ==== K2().component_list() ==== K2().get_user_project_name() ==== K2().get_current_user() ==== K2().create_db_role(user_name, password) ====
Параметри:
datasource_is_storage_id,
== Клас K2DocsCRM ==
|-
| <code>new</code>
| Нові залишки, отримані в поточному оновленні
|-
| <code>stable</code>
| Підтверджені залишки, доступні користувачам
|-
| <code>old</code>
| Застарілі інформаційні дані, що підлягають видаленню
|}


==== __init__(self, *args, **kwargs) ====
Copyright © 2000-2025 К2®, Rudiuk Serhii.; | Від <code>K2Obj</code>
|-
| Де описуються залежності компонент?; K2.logging_message(status, message, page_url=None, show_message=True)
└── setup.py
== Права користувача ==
'49952f397efff44d7ce0e5cb9aa625fb'


Initialize self. See help(type(self)) for accurate signature.
get_report_data() -> Optional [List [Dict [str, Any]]]


==== add_authorized_users(self, user_id, login) ====
{{DISPLAYTITLE:Класи та команди K2 ERP Python}}
!; Він гарантує роботу з лідами, замовленнями, рахунками, звітами та налаштуваннями CRM.; | У каталозі <code>languages/</code>
|-
| Які JavaScript-функції описані?; Призначення
{| class="wikitable" style="width:100%;"
K2().get_user_permissions()
<code>K2LogbookTMDoc</code> керує логбуком технічного обслуговування.; Дія
генерацію та друк звітів за допомогою API Stimulsoft реалізується засобами <code>K2Report </code>.; Метод


Додати користувача до списку авторизованих
[[Категорія:API]]


==== check_authorized_users(self, user_id) ====
* <code>r</code> — читання;
* <code>w</code> — запис;
* <code>i</code> — вставка;
* <code>d</code> — видалення;
* <code>c</code> — створення;
* <code>exp</code> — експорт;
* <code>imp</code> — імпорт;
* <code>del_</code> — відновлення;
* <code>settable</code> — конфігурація таблиці;
* <code>cutpast</code> — вирізати / вставити;
* <code>enable</code> — доступність;
* <code>active</code> — активність.;</pre>


Перевірити чи користувач системи активний
current_user_permissions = K2().get_user_permissions()


==== check_logout_users(self, user_id) ====
== Клас K2 ==


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


==== component_list() ====
Приклад отримання відносного шляху до кореня:


Пошук встановлених компонент
<code>K2ReportDesigner</code> надає функціональність для створення, редагування та перегляду звітів і дашбордів.; Якщо контакт знайдено, метод оновлює інформаційні дані ліда: ім’я, прізвище, email та <code>lead_id</code>.; Метод
== Коротко ==
</pre>
│ │ └── roles.py
<code>K2ReportEmbed</code>застосовують, коли потрібно для вбудовування звітів у вебзастосунок.; Логіка роботи:


==== create_db_file_config_user(self) ====
yml_path = K2.search_yml('users')


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


==== create_db_role(self, user_name, password) ====
Інструкція користувача повинна автономно підтягуватися системою документації K2 ERP, створюючи окремий розділ документації для встановленого продукту.;== Методи авторизації користувачів ==
|-
| <code>component_list()</code>
| Пошук встановлених компонент
|-
| <code>get_current_user()</code>
| Повертає об’єкт поточного користувача
|-
| <code>get_user_counterparts_id()</code>
| Пошук id поточного контрагента
|-
| <code>get_user_counterparts_name()</code>
| Пошук назви поточного контрагента
|-
| <code>get_user_project_id()</code>
| Пошук id поточного проєкту користувача
|-
| <code>get_user_project_name()</code>
| Пошук назви поточного проєкту користувача
|-
| <code>get_user_storage_id()</code>
| Пошук id поточного складу
|-
| <code>get_user_stoages_name()</code>
| Пошук назви поточного складу
|-
| <code>get_user_structural_division_id()</code>
| Пошук id поточного підрозділу
|-
| <code>get_user_structural_division_id_tree()</code>
| Пошук підрозділів за ієрархією
|-
| <code>get_menu_url()</code>
| Повертає список URL активних пунктів меню
|-
| <code>search_menu_items()</code>
| Пошук пунктів меню
|-
| <code>search_menu_items_category()</code>
| Пошук категорій пунктів меню
|-
| <code>search_static_files()</code>
| Пошук статичних файлів
|-
| <code>url_map()</code>
| Робота з картою URL
|}


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


==== current_template(self) ====
!; Основні системні класи:


Search current template
K2().create_db_role(user_name, password)
 
<pre>
==== db_custom_engine(self, db) ====
У K2 ERP використовуються допоміжні JavaScript-функції для роботи з інтерфейсом, зображеннями, завантаженням і повідомленнями користувачу.; Властивість
 
|-
Зміна custom параметрів підключення
| <code>K2</code>
 
| Ядро системи K2 ERP
==== db_user_engine(self, db) ====
|-
 
| <code>K2Obj</code>
Зміна параметрів підключення для поточного користувача
| Базовий клас для об’єктів системи
 
|-
==== dell_authorized_users(self, user_id) ====
| <code>K2admin_menus</code>
 
| Формування меню для конкретного користувача
Видалити користувача зі списку авторизованих
|-
 
| <code>k2data</code>
==== drop_db_role(self, user_name) ====
| Робота з даними
 
|-
Видалення користувача на рівні БД
| <code>k2datasync</code>
 
| Синхронізація даних
==== get_all_subclasses(cls) ====
|-
 
| <code>k2logging</code>
==== Пошук підкласів ====
| Логування повідомлень і помилок
 
|-
==== get_authorized_users(self) ====
| <code>k2mail</code>
 
| Робота з поштою
Отримати список авторизованих користувачів
|-
 
| <code>k2notifications</code>
==== get_current_user(self) ====
| Сповіщення користувачів
 
|-
Повертає об’єкт поточного користувача
| <code>k2path</code>
 
| Пошук шляхів у системі
==== K2().get_current_user() ====
|-
 
| <code>k2secur</code>
==== get_menu_url(self) ====
| Безпека та доступи
 
|-
Повертає список url активних пунктів меню
| <code>k2settings</code>
 
| конфігурація системи
==== get_project_setting(self) ====
|-
 
| <code>k2trans</code>
Форма зміни проекту
| Переклади
 
|-
==== get_user_counterparts_id(self) ====
| <code>k2upd</code>
 
| актуалізація
Пошук 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) ====


==== Рекурсивний пошук властивостей нащадків базового класу ====
│ ├── examples/


==== search_class_prop(path_objs) ==== search_menu_items(self) ====
│ ├── history.txt


Search menu items
=== Основні властивості класу ===


==== search_menu_items_category(self) ====
[[Категорія:K2 ERP]]
 
Search menu items category
 
==== search_static_files(self) ====
 
==== url_map(self) ====
 
==== Методи класу ====
 
=== Окремо варто відзначити всі властивості і методи отримуються від батьківського класу.; Клас K2CRM наслідується від K2Obj. ===
 
==== search_babel_translation_directories() ====
 
Exception: If an error occurs during database query execution.;==== Залежності ====
 
Для кожного запиту виконується SQL-запит та результат додається до result_dict.; Лід і контакт взаємодіють через базу даних, де інформаційні дані ліда переносяться в таблицю контактів.;=== Він надає доступ до ключових глобальних налаштувань та ресурсів, необхідних для роботи з документами або іншими функціями CRM.; Клас K2DocsCRM є собою частиною системи K2CRM і наслідується від K2Obj. ===
 
date_to = "2023-12-31"
 
self._data_source #датасети
 
Видаляє застарілі ('old').; Формує SQL-запити для витягування даних із таблиць бази даних (Товари, Організація, Контрагент, складський облік, Договір, Відповідальна особа, замовник).; Параметри:


</pre>
</pre>
Виклик K2.get_path_abs(__file__)
Завантаження перекладів
==== Компоненти, які публікуються в K2 Cloud ERP повинні мати щонайменше такі атрибути ====
K2_Cloud_ERP_Python_01.png|Ілюстрація K2 Cloud ERP Python|посилання=Файл:K2_Cloud_ERP_Python_01.png
<gallery mode="packed" heights="180">
Перевіряє наявність записів у таблиці k2tm_fields з parentid != '0'
Обробка k2doc_rows_detail:
Команда для автоматичної генерації html файлу з документацією по док стрінгах:
<pre>
<pre>
{| class="wikitable" style="width:100%;"
|-
| <code>domain_name</code>
| Назва домену
|-
| <code>domain_protocol</code>
| Протокол домену
|-
| <code>domain</code>
| Поточний домен
|-
| <code>port</code>
| Порт
|-
| <code>db</code>
| Підключення до бази даних
|-
| <code>default_language</code>
| Мова за замовчуванням
|}


Основні операції:
Визначити платформу:


To search for a yml file named 'users.yml', call this method as follows:
!;=== Основні властивості класу ===
!;== Клас K2CRM ==


│ └── additional_developer_docs/
</pre>
</pre>
</pre>


Якщо затверджувачів не знайдено, повертає помилку 404
{| class="wikitable" style="width:100%;"
 
==== Основні функціональні можливості модуля ====


{| class="wikitable" style="width:100%;"
</pre>
</pre>
<code>K2</code> — це ядро системи K2 ERP.; Призначення
│ └── views.py
<code>check_lead()</code> перевіряє, чи існує контакт із заданим номером телефону в таблиці <code>k2contacts</code>.; │ ├── yml/
datasource_keys = ["table1_data", "table2_data"]
!; Призначення
!; │ ├── user_manual/
== Ілюстрації ==


The caller directory where the yml file was found, or None if the file was not found.; Якщо записів немає, повертає помилку 404
{| class="wikitable" style="width:100%;"


name_yml_master: str = '')
=== Приклад Jinja-шаблону ===
[[Категорія:Корпоративна Wiki]]
<code>process_options()</code> обробляє JSON-запит і налаштовує K2Grid залежно від значення параметра <code>name</code>.; Призначення


dict: A dictionary containing formatted log messages, the count of 'error' messages, and the count of 'warning' messages.;=== Клас для актуалізація залишків на основі даних з отриманих від клієнтів. ===
pydoc -w k2/k2obj.py


itemName (str) – назва товару.;=== Клас K2Report ===
Отримати список встановлених компонент:
 
{% extends template_name + '/base.html' %}
'49952f397efff44d7ce0e5cb9aa625fb']
 
Створює JSON-дані на основі джерел даних та періоду.;=== Клас k2trans ===
 
Успішний результат повертається у форматі JSON із ключем data.; (One greenlet will duplicate one thread,
create_contact() - Цей метод створює контакт на основі даних існуючого ліда.; порівняння версій
 
У разі помилки виконує відкат (rollback).; Винятки:
 
Відповідає за обробку даних з логів.;==== compare_versions(version1, version2) ====
 
name (str): Name of the object (page) to load messages for.; керування лідами
 
==== Властивості ====
def test_dashboard():
self._off_buttons #вимкнути кнопки
 
Обробка k2doc_move:
 
</pre>
datasource_is_storage_id = [False, True]
<pre>
=== Клас k2upd ===
== K2 Cloud ERP Javascript ==
</pre>
</pre>


'old' – застарілі інформаційні дані, що підлягають видаленню.; date_to (str, опціонально): Кінцева дата періоду.; Повертає:
{% if error %}
 
crm_data(route, data) - Цей метод отримує інформаційні дані із відповідних таблиць з бази даних на основі переданих параметрів для подальшого оформлення друкованої форми документів у компоненті k2CRM
 
документація з вимогами до створення компонентів забезпечується через '''K2 Cloud ERP Python; додатково реалізовано структури пакетів, системних класів, API, компонентних класів і допоміжних JavaScript-функцій системи [[K2 Cloud ERP]] виступає ключовою рисою розробників'''.; ==== mrt_report_create(report_id, design_type_id=None) ==== table_report_data(datasource_value, datasource_keys) ==== save_info_report_designer() ==== data_source_lists_creating(group_reports_id) ==== Клас K2Production ===
 
==== Методи класу ====
 
Схема вибору обслуговування терміналу
 
=== Клас K2LogbookTMDoc ===
 
=== Клас для керування логбуком технічного обслуговування (ТО).; return render_template('k2dashboard_production/k2dashboard_production.html',
 
period (int): Період вибірки даних.; (каталог objects/)
 
Параметри:
 
Повертає:
 
[[index.php?title=Категорія:K2 Cloud ERP]]


<pre>
<pre>
Метод повертає JSON-відповідь про успіх або помилку.;<pre>


Відображає сторінку перегляду дашборду.;== API ==
</div>


* The number of greenlets.;==== Пошук властивостей для розширення класу ====
Компонента K2 ERP повинна мати стандартизовану структуру.; '''істотно.''' Щоб автоматична документація була корисною, класи й методи потрібно описувати зрозумілими docstring-коментарями, а не залишати код без пояснень.; {| class="wikitable" style="width:100%;"
Додаткові об’єкти компоненти.; (файл requirements-components.txt)
Отримати права поточного користувача:


==== __init__(self) ====
│ ├── models.py


Retrieve user permissions based on the URL.; Response: JSON-відповідь про результат збереження.; Зберігає ідентифікатор та конфігурація звіту в JSON-файл.; Параметри (doc_id) передаються через send_params.; Повертає:
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">


check_lead() - Цей метод перевіряє, чи існує контакт із заданим номером телефону у базі даних (k2contacts).; Окремо варто відзначити створення/актуалізація записів про залишки товарів і керування їх статусами (новий, стабільний, старий).;==== generate_id() ====
повертає права поточного користувача для URL, до якого він звертається.; !; Клас
 
[[index.php?title=Категорія:Python]]


== Методи роботи з базою даних і сесіями ==
K2().get_user_counterparts_id()
Приклад команди:
page_url='/kadm/users',
=== Основні властивості інстансу ===
<pre>
<pre>
]
=== Основні методи ===


==== save_logging_message(error_id, status, message, name) ====
!; Призначення
=== Статуси залишків ===
K2.logging_message(K2.log_error, 'Operation completed with error.')


==== dump_stacks() ====
!; Група
|-
| <code>database</code>
| База даних через глобальний об’єкт <code>K2.db</code>
|-
| <code>time_zone</code>
| Часовий пояс системи через <code>K2.timezone</code>
|-
| <code>domain</code>
| Поточний домен через <code>K2.domain</code>
|}


==== update_pub_sub_remainder() ====
== Метод process_options() ==


Ім'я YML: 'k2doc_move'.; Він містить методи для обробки запитів на затвердження змін у технічній документації обладнання.; This method searches for a yml file with a specified name in the caller directories of all subclasses of K2Obj.; Вивід списку компонент з файлу components.yml у всіх шляхах пошуку
!; !;</pre>


__file__ - стандартна змінна в Python, яка містить абсолютний шлях до поточного файлу, в якому вона застосовується.; Отримує список pub_sub_list_id з логів k2pubsub_logs.; функціонує з конфігурацією домену через K2.domain
* створення звітів;
Send a logging message to the client via Socket.IO.; (файл models.py)
* робота з конструктором звітів;
* керування друкованими формами;
* генерація друкованих документів;
* взаємодія з API Stimulsoft;
* візуалізація та експорт звітів.; Призначення


==== Приклад використання ====
k2log==2.0.0.2
k2grid==2.0.4.1


Повертає:
!; Метод
Клас додатково наслідується від <code>K2Obj</code>.; file_class = 'k2equipment'
│ ├── schema/
— шлях до Python-файлу від кореня проєкту.; Призначення
reports_id = [
├── requirements.txt
|-
| <code>create_contact()</code>
| Створює контакт на основі даних ліда
|-
| <code>check_lead()</code>
| Перевіряє, чи існує контакт із заданим телефоном
|-
| <code>crm_data(route, data)</code>
| Отримує інформаційні дані для друкованих форм CRM
|-
| <code>process_options()</code>
| Обробляє параметри JSON-запиту й налаштовує об’єкти K2Grid
|}


Search for a yml file in the caller directories of subclasses.;<pre>
У K2 ERP використовуються щонайменше українська та англійська мови.; Що зберігається


==== Атрибути класу ====
== Клас K2Production ==


ORM структури.; If the user is a superadmin, a default set of permissions is returned.;==== select_grid(self) ====
== Приклад структури компоненти ==


керування друкованими формами
</pre>


self._name_yml #назва конфігураційного файлу
=== Основні методи ===
</pre>
</pre>
|-
| <code>designer()</code>
| Відображає сторінку редагування друкованої форми
|-
| <code>viewer()</code>
| Відображає сторінку перегляду друкованої форми
|-
| <code>dashboard_viewer()</code>
| Відображає сторінку перегляду дашборду
|-
| <code>dashboard_designer()</code>
| Відображає сторінку редагування дашборду
|-
| <code>json_data_create(...)</code>
| Створює JSON-дані на основі джерел даних і періоду
|-
| <code>save_report_id()</code>
| Зберігає ідентифікатор і конфігурація звіту
|-
| <code>mrt_report_create(report_id, design_type_id=None)</code>
| Створює MRT-файл звіту на основі шаблону
|-
| <code>table_report_data(datasource_value, datasource_keys)</code>
| Обробляє SQL-дані для джерел звіту
|-
| <code>save_info_report_designer()</code>
| Зберігає інформацію про звіт і генерує MRT-файл
|-
| <code>data_source_lists_creating(group_reports_id)</code>
| Створює списки джерел даних для звіту
|}


Логіка статусів:
Ресурси компоненти зберігаються у стандартних каталогах:


Передаються параметри: doc_id.;<pre>
Приклади:
Визначення операційної системи
K2().get_user_project_name()
datasource_keys,
[[Категорія:Компоненти K2 ERP]]
</pre>
== Призначення документа ==
Файли перекладів зберігаються у структурі:
[[Категорія:Документація K2]]


* рахунки
<div style="border:2px solid #f57c00; background:#fff3e0; padding:14px; margin:16px 0;">
=== ключовий метод ===
Окремо варто відзначити створюють компоненти, підключають системні класи, використовують API, пишуть документацію, тести і допоміжні JavaScript-функції виступає ключовою рисою розробників забезпечується через '''Класи та команди K2 ERP Python'''.; Властивість
!;=== Основні властивості інстансу ===


* звіти
де <code>reports_id</code> — список ідентифікаторів звітів.; Він повинен мати зрозумілу структуру, моделі, роути, API, залежності, документацію, історію змін, тести, локалізації, приклади та ресурси.; {| class="wikitable" style="width:100%;"
</pre>
=== removeBootstrapLoader() ===


* конфігурація системи CRM
Приклади сценаріїв:


K2.logging_message(K2.log_error, 'Operation completed with error.')
<code>crm_data()</code> отримує інформаційні дані з таблиць бази для формування друкованих форм документів у CRM.;<code>K2DocsCRM</code> — частина CRM-модуля, яка відповідає за роботу з документами та даними CRM.;== Локалізації ==
 
== Клас K2UpdateRemainder ==
str: HTML-шаблон сторінки перегляду.; Якщо lead_id не надано то повертається помилка.;== K2 Cloud ERP Python ==
{| class="wikitable" style="width:100%;"
{| class="wikitable" style="width:100%;"
Клас містить методи для обробки запитів на затвердження змін у технічній документації обладнання.;<pre>
│ ├── forms.py
{| class="wikitable" style="width:100%;"


</pre>
</pre>
Часовий пояс системи, визначений глобальним об'єктом K2.timezone.; domain:


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


Визначення поточної мови
</pre>


database:
Клас відповідає за базові параметри домену, підключення до бази даних, мову, поточного користувача, список компонентів, конфігурація, доступи, сесії та службові методи.;</pre>
datasource_is_counterpart_id,
=== Приклад backend Flask ===
де:
!;[[Категорія:K2 Report]]


Приклад використання функції:
{| class="wikitable" style="width:100%;"


==== designer() ====
K2ReportEmbed(reports_id: List [str])


Цей клас гарантує генерацію та друк звітів за допомогою API Stimulsoft.; Призначення: застосовується для побудови URL-адрес або інших задач, пов'язаних з доменним середовищем.; datasource_is_counterpart_id = [True, False]
<pre>


'stable' – залишки, які підтвердились та доступні користувачам.; Raises:
│ ├── business_processes/


==== show_grid(self) ====
</pre>


Parameters:
!; datasource_is_storage_id = [False, True]
</pre>
<code>K2Production</code> застосовується для виробничих процесів.;</pre>


unitId (str) – одиниця виміру (конвертується за фіксованим списком).;<pre>
== Метод crm_data(route, data) ==


message (str): The content of the message to be saved.; У разі успіху: JSON з повідомленням про успішну відправку (код 200)
Від нього наслідуються об’єкти, які використовують стандартну логіку системи: конфігурації, YML, grids, форми, параметри, кнопки, джерела даних і розширення.; Поле
Клас наслідується від <code>K2Obj</code>, з цієї причини використовує базові властивості та методи системних об’єктів K2 ERP.; Каталог
<pre>
=== Ініціалізація ===
K2_Cloud_ERP_Python_01.png|Ілюстрація K2 ERP Python|посилання=Файл:K2_Cloud_ERP_Python_01.png


Визначення id поточної мови
Приклад:


self._report_id #id звіту
Повертає ідентифікатор створеного каруселя або модального вікна.; Метод
{% endif %}
!; | <code>K2</code>
|-
| Від чого наслідуються об’єкти системи?; Параметр


==== взаємодія з API Stimulsoft для візуалізації та експорту звітів ====
</pre>
Відображає повідомлення користувачу у вигляді Bootstrap Toast.; Отримати домен:
{| class="wikitable" style="width:100%;"
<code>K2CRM</code> — клас CRM-модуля K2 ERP.; showUserAlert(message, type = 'light')
</gallery>
|-
| <code>models.py</code>
| ORM-структури та моделі бази даних компоненти
|-
| <code>views.py</code>
| центральний клас компоненти, роути та API
|-
| <code>objects/</code>
| Додаткові класи, від яких залежить функціональні можливості компоненти
|-
| <code>hooks.py</code>
| Хуки для розширення або зміни стандартної поведінки системи
|-
| <code>requirements-components.txt</code>
| Залежності від інших компонент K2 ERP
|-
| <code>requirements.txt</code>
| Python-залежності компоненти
|-
| <code>README.md</code>
| характеристика цілі компоненти, способу використання та важливих приміток
|-
| <code>history.txt</code>
| історичний розвиток змін, написана зрозумілою для користувача мовою
|-
| <code>doc/</code>
| Документація, схеми, бізнес-процеси та інструкції
|-
| <code>tests/</code>
| Юніт-тести компоненти
|-
| <code>examples/</code>
| Приклади використання компоненти
|-
| <code>widgets/</code>
| Віджети, дашборди та візуальні елементи
|-
| <code>languages/</code>
| Локалізації та переклади
|-
| <code>static/</code>
| Зображення, стилі, JavaScript, текстові ресурси
|-
| <code>templates/</code>
| Шаблони компоненти
|-
| <code>yml/</code>
| YML-конфігурації
|}


show_message (bool): True - save log and show windows, False - only save_log
!; Параметр


==== Методи інстансу ====
</pre>
!; характеристика


Отрмання roleid користувача
K2().component_list()


Відображає сторінку редагування дашборду.;==== dashboard_designer() ====
[[Категорія:K2 Production]]


==== load_logging_messages(page_url: str) ====
== Залежності компоненти ==


{% extends template_name + '/base.html' %}
Метод отримує інформаційні дані звітів із бази даних і формує JSON-структуру для відображення.; це технічна документація; додатково реалізовано які працюють із Python-версією [[K2 ERP]].;[[Категорія:K2 ERP Python]]
== Клас K2LogbookTMDoc ==
!; Якщо компонента залежить від інших компонент K2 ERP, ці залежності потрібно вказати у файлі:


==== load_babel_translation_directories() ====
!;[[Категорія:Документація для розробників]]


База даних, доступна через глобальний об'єкт K2.db.;==== search_yml(name_yml) ====
{| class="wikitable" style="width:100%;"


==== Методи ====
│ ├── __init__.py
=== Клас K2WMS ===
!; Частина
|-
| <code>/static</code>
| Зображення, тексти, JavaScript, CSS та інші статичні ресурси
|-
| <code>/static/img</code>
| Іконки та зображення компоненти
|-
| <code>/templates</code>
| Шаблони компоненти
|-
| <code>/yml</code>
| YML-конфігурації
|-
| <code>/data</code>
| інформаційні дані компоненти, якщо вони потрібні
|}


==== get_current_user_role_name() ====
/languages/en/LC_MESSAGES/messages.po
Якщо контакт знайдено то відбувається актуалізація даних у options [‘dataField’] (name, surname, email, lead_id)
 
==== _insert_new_pub_sub_nomenclature(session, nomenclature_data) ====


=== Клас K2CRM ===
!; Метод
Якщо лід знайдено то створюється новий запис у таблиці k2contacts на основі даних ліда.; Якщо знайдено, оновлює інформаційні дані ліда (ім'я, прізвище, email) у переданому об'єкті.; Створюється об'єкт K2Grid з іменем yml 'k2doc_move'.;==== Фронтенд (Jinja-шаблон) ====


Returns:
</div>


Повертає:
Додає анімацію завантаження у вказаний контейнер.; !; ├── __init__.py
[[Категорія:K2 ERP Javascript]]
|-
| <code>generate_id()</code>
| Генерація ID
|-
| <code>compare_versions(version1, version2)</code>
| Порівняння версій
|-
| <code>get_platform()</code>
| Визначення операційної системи
|-
| <code>get_locale()</code>
| Визначення поточної мови
|-
| <code>get_locale_id()</code>
| Визначення id поточної мови
|-
| <code>get_active_lang_list()</code>
| Отримання списку активних мов
|-
| <code>get_user_role(user_id)</code>
| Отримання <code>roleid</code> користувача
|-
| <code>get_current_user_role_name()</code>
| Отримання role name поточного користувача
|-
| <code>get_path_abs(caller_file)</code>
| Абсолютний шлях до файлу, в якому виконується код
|-
| <code>get_path_to_root(caller_file)</code>
| Відносний шлях до кореня
|-
| <code>search_yml(name_yml)</code>
| Пошук YML-файлу в каталогах компонент
|-
| <code>search_comp_names()</code>
| Пошук ідентифікаторів компонент
|-
| <code>load_babel_translation_directories()</code>
| Завантаження перекладів
|}


Нові ('new') переводить у стабільні ('stable').;==== Методи класу ====
{% endblock %}


│ ├── templates/
<pre>
<pre>
components/


K2.logging_message(status=K2.log_success, message='Operation completed successfully.', page_url='/kadm/users', show_message=False)
=== Основні методи K2DocsCRM ===
Відносний шлях до рута.; message (str): The content of the message to be sent.; З options [‘dataField’] отримує номер телефону (phone)
Нічого.;<pre>
Відображає сторінку перегляду друкованої форми.;=== Клас K2Site ===


Initialize self.; Переводить стабільні ('stable') в старі ('old').; Шукає ліда в таблиці k2lead за наданим параметром.;==== Методи ====
'b452a5ae84f9e92e75eb0467c196fd71',
=== Основні методи K2Report ===
</pre>


==== content(self) ====
!; '''Принцип.''' Компонента повинна бути самодостатньою, але не повинна ламати глобальну структуру K2 ERP.; Якщо контакт не знайдено, відповідні поля очищаються.; |-
| <code>__init__(sql=[])</code>
| Ініціалізує клас і отримує шлях до каталогу виклику
|-
| <code>create_report(sql=None, data_source=None)</code>
| Створює звіт і відображає редактор або переглядач
|-
| <code>get_report(file_name)</code>
| Отримує звіт за назвою файлу
|-
| <code>execute_query(query, params=None)</code>
| Виконує SQL-запит
|-
| <code>get_report_designer(file_name, design_type_id)</code>
| Отримує дизайнер звіту за типом дизайну
|-
| <code>add_reports_type(name, data)</code>
| Додає тип звіту до групи звітів
|}


Генерація ID
Створити користувача на рівні бази даних:


__file__ -стандартна змінна в Python, яка містить абсолютний шлях до поточного файлу, в якому вона застосовується.;=== Клас K2Grid ===
show_message=False
Створює порожній словник result_dict, який буде наповнюватись даними та парсить вхідні інформаційні дані data у форматі JSON і зберігає їх у result_dict [‘Header’].; гарантує функціональність для створення, перегляду, редагування записів логбука ТО, роботи з параметрами завдань та обладнання, а додатково підготовки даних про запчастини.; Структури, які потрібні для даної компоненти.; json_data_create(datasource_value, datasource_keys, datasource_is_counterpart_id, datasource_is_storage_id, period, date_from=None, date_to=None)
 
version #реліз компоненти
 
Використовує K2Notifications.send_approval_request() для відправки повідомлення
 
Add identificators to url page
 
This method fetches permissions for the current user based on the URL they are accessing.; id = K2.generate_id()
 
Load logging messages for the curren page from the error log file.; {% block content %}
 
nomenclature_data (dict) – інформаційні дані про номенклатуру:
 
datasource_is_counterpart_id (list): Список флагів, що вказують на наявність counterpart_id.;<pre>


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


== Див.; додатково ==
<pre>


Пошук затверджувачів:
{| class="wikitable" style="width:100%;"
!; | Слайдер зображень, loader, видалення loader та повідомлення користувачу
|}


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


==== viewer() ====
* [[K2 Cloud ERP|K2 ERP]]
 
* [[K2 ERP]]
==== Методи класу ====
* [[Python]]
 
* [[API]]
If no permissions are found for the user, an empty dictionary is returned.; у всіх шляхах пошуку
* [[Документація для розробників]]
 
* [[K2 Cloud ERP Javascript|K2 ERP Javascript]]
Перевіряє наявність номенклатури у таблиці k2nomenclature.; Usage:
* [[Розгортання системи K2 ERP Python для розробників]]
 
* [[Компоненти K2 ERP]]
period = 1
* [[K2 CRM]]
* [[K2 Report]]
* [[K2 Production]]


This method emits a message to the client with a given status and message content.; itemId (str) – ідентифікатор номенклатури.;=== Клас k2settings ===
Usage:
<pre>
<pre>
{| class="wikitable" style="width:100%;"
Якщо компоненту створює сторонній розробник, потрібно вказати інформацію про такого розробника.; !; Статус


[[index.php?title=Категорія:K2 ERP]]
== Клас K2EquipmentFunction ==


Логіка роботи:
{| class="wikitable" style="width:100%;"


==== namemenu(url) ====
datasource_value = ["SELECT * FROM table1", "SELECT * FROM table2"]


self._row_selection #вибір з рядка
{| class="wikitable" style="width:100%;"


Логує помилку у разі невдалої вставки даних.; Відправка запиту на затвердження:
period = 1
!; Атрибут
K2 має методи для збереження, завантаження та відправлення повідомлень користувачу.; Відповідь


Передаються параметри: row_id та storage_id.; {% endif %}
* як має виглядати структура компоненти;
* які файли є собою обов’язковими;
* де зберігати моделі, роути, хуки й додаткові об’єкти;
* як описувати залежності;
* як оформлювати документацію для користувачів і розробників;
* які базові класи доступні в ядрі K2 ERP;
* як використовувати системні API;
* які JavaScript-допоміжні функції доступні для інтерфейсу.; |-
| <code>update_pub_sub_remainder()</code>
| Оновлює залишки на основі даних Pub/Sub
|-
| <code>_insert_new_pub_sub_nomenclature(session, nomenclature_data)</code>
| Додає нову номенклатуру, якщо її ще немає
|}


==== save_report_id() ====
{% include dashboard_settings.template %}


=== Клас K2ReportDesigner ===
!; Властивість
<code>create_contact()</code> створює контакт на основі даних існуючого ліда.; Призначення
== Метод create_contact() ==
=== Метод send_approval_request_from_hook() ===
|-
| <code>doc/schema</code>
| Структура бази даних, зокрема SQL Power Architect-схеми
|-
| <code>doc/business_processes</code>
| Бізнес-процеси та схеми роботи у форматі Draw.io
|-
| <code>doc/user_manual</code>
| Інструкція користувача
|-
| <code>doc/developer_documentation</code>
| Документація для розробників, згенерована автономно з коментарів
|-
| <code>doc/additional_developer_docs</code>
| Додаткова документація для розробників
|}


Перевіряє чи було надано lead_id.; Якщо запису немає – створює його.; yml_path = K2.search_yml('users')
<pre>


datasource_keys = ["table1_data", "table2_data"]
<code>K2UpdateRemainder</code> відповідає за актуалізація залишків на основі даних, отриманих від клієнтів.; Призначення


self._name_yml_tree #назва конфігураційного файлу з деревом
{| class="wikitable" style="width:100%;"


Parameters:
!; All rights reserved.; Метод
== Класи компонент ==


==== __init__() ====
!; )


status (str): The status of the message (e.g., cls.log_error - 'ERROR', cls.log_warning - 'WARNING', cls.log_success - 'SUCCESS').; Rerurn: list of components identificators
</pre>


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


Визначення id поточної мови
!; Призначення


Ця сторінка потрібна для того, щоб розробники K2 ERP працювали з компонентами в єдиному стилі.; | У <code>requirements-components.txt</code> та <code>requirements.txt</code>
|-
| Де зберігається документація?; Призначення
datasource_is_counterpart_id = [True, False]
Системні класи K2 ERP забезпечують базову роботу ядра, об’єктів, безпеки, шляхів, даних, налаштувань, повідомлень, перекладів і оновлень.; Параметри:
{% else %}
'1673a4fab757fb6c5df970fdc6ee680c',
</pre>
</pre>
Зележності від інших компонент.; Отримає вхідний JSON, що містить options із даними для перевірки.; створення звітів за допомогою конструктора звітів
Перевіряється значення ключа name у вхідних даних:
The search is performed in the 'yml' subdirectory of each caller directory.; Returns:
==== get_path_abs(caller_file) ====


</pre>
</pre>


Save a logging message to the stack.;==== search_class_prop(path_objs) ====
│ ├── tests/
==== Використовує клас K2Notifications для відправки повідомлень ====
Створює слайдер зображень у контейнері або модальному вікні.; Значення
""" Index page """
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).;==== Окремо варто відзначити роути і api (файл views.; центральний клас компоненти.py) ====


- замовлення
date_from,


str: HTML-шаблон сторінки редагування дашборду.; Якщо 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':


Повертає:
<pre>


Додавання нової номенклатури.;<pre>
Метод:
{| class="wikitable" style="width:100%;"
== Клас K2ReportEmbed ==
|-
| <code>equipment_type_id</code>
| Ідентифікатор типу обладнання
|-
| <code>changed_fields</code>
| Словник зі зміненими полями та їхніми значеннями
|}


==== __init__(sql=[]) ==== create_report(sql=None, data_source=None) ==== get_report(file_name) ==== execute_query(query, params=None) ==== get_report_designer(file_name, design_type_id) ==== add_reports_type(name, data) ==== Клас K2ReportEmbed ===
</pre>


надає можливість отримувати та відображати звіти з бази даних на основі їх ідентифікаторів.; K2ReportEmbed - Компонент для вбудовування звітів у веб-додаток.
# перевіряє наявність записів із <code>parentid != '0'</code> у таблиці <code>k2tm_fields</code>;
# отримує інформацію про тип обладнання з таблиці <code>k2equipment_type</code>;
# шукає активних затверджувачів у таблиці <code>k2users_for_approval</code>;
# формує характеристика змін;
# формує URL для сторінки затвердження;
# надсилає повідомлення через <code>K2Notifications.send_approval_request()</code>.; Призначення


==== Атрибути класу ====
{| class="wikitable" style="width:100%;"


==== __init__(reports_id: List [str]) ==== get_report_data() -> Optional [List [Dict [str, Any]]] ==== Бекенд (Flask) ====
usr_perm = K2().get_user_permissions()


@k2production.route('/test_dashboard', methods=['GET'])
<pre>
==== Методи ====
Клас взаємодіє з базою даних, керує файлами звітів і генерує JSON-дані для подальшого використання.; |-
=== Клас k2data ===
| Відображення логбука
Формує URL для сторінки затвердження
| <code>k2logbook_tm()</code>, <code>take_logbook_tm()</code>, <code>edit_logbook_tm()</code>
| Відкриття списку, форми та редагування логбука
|-
| Планове і позапланове ТО
| <code>planned_tm()</code>, <code>unplanned_tm()</code>, <code>create_unplanned_task()</code>
| Робота з плановим і позаплановим технічним обслуговуванням
|-
| Параметри
| <code>write_logbook_params()</code>, <code>read_logbook_params()</code>
| Збереження та читання параметрів логбука
|-
| Запчастини
| <code>pull_spare_parts_data()</code>, <code>spare_parts_check()</code>, <code>take_material_by_qr()</code>, <code>return_material_by_qr()</code>
| Робота із запчастинами та матеріалами
|-
| Кроки ТО
| <code>task_step_form()</code>, <code>save_step()</code>, <code>end_step()</code>, <code>end_step_manager()</code>
| Обробка кроків технічного обслуговування
|-
| Перевірки
| <code>step_image_check()</code>, <code>step_data_check()</code>, <code>detail_check()</code>, <code>equipment_qr_confirmation()</code>
| Перевірка зображень, даних, деталей і QR-кодів
|-
| Статуси
| <code>decline_task()</code>, <code>confirm_task()</code>, <code>send_on_revision_task()</code>, <code>requires_partner()</code>, <code>join_task()</code>
| Керування статусами завдань
|-
| Звіти та зображення
| <code>e_report_logbook()</code>, <code>get_all_employee_image()</code>, <code>get_employee_image()</code>, <code>get_image_logbook()</code>
| Звіти та робота із зображеннями логбука
|}


K2.search_yml('users')
</pre>


name (str): Name of object where the message originated.; У разі помилки застосовується лог помилки і повертається повідомлення з помилкою.; The message is sent to a room identified by the current user's ID.;</pre>
== Основні методи K2 ==


</gallery>
<pre>


Домен, на якому функціонує CRM, отримується з глобального об'єкта K2.domain.; Повертає:
У документації клас згадується в контексті схеми вибору обслуговування терміналу.; характеристика


time_zone:
{| class="wikitable" style="width:100%;"
== Генерація документації з docstring ==
<pre>
|-
| <code>k2doc_rows_detail</code>
| Створює grid для деталізації рядків документа, вимикає зайві кнопки, передає <code>row_id</code> і <code>storage_id</code>
|-
| <code>k2doc_move</code>
| Створює grid руху документа, вимикає кнопки додавання, редагування, видалення та друку
|}


== Вимоги до створення компонент ==
date_to = "2023-12-31"
 
Виклик K2.get_path_to_root(__file__).; self._send_group_params #параметри групи
 
</pre>
 
threads and greenlets.; K2.get_platform()
Args:


=== Клас K2Obj ===
K2.get_platform()


{% include dashboard_settings.template %}
│ │ └── users.py


* <code>K2ReportEmbed</code>;
* <code>K2ReportDesigner</code>.; │ ├── objects/
'''Коротко.''' Компонент K2 ERP має бути не без ускладнень набором Python-файлів.; K2().domain
Метод відправляє запит на затвердження змін у технічній карті обладнання.; Клас
Документація сприяє зрозуміти:
</pre>
</pre>
|-
| <code>__init__()</code>
| Ініціалізація об’єкта
|-
| <code>content()</code>
| Формування контенту
|-
| <code>create_names_yml()</code>
| Створення назв YML-конфігурацій
|-
| <code>search_class_prop()</code>
| Пошук властивостей для розширення класу
|-
| <code>select_grid()</code>
| Вибір grid
|-
| <code>show_grid()</code>
| Відображення grid
|}


==== Атрибути ====
Клас наслідується від <code>K2Obj</code> і є собою батьківським класом для:


==== dashboard_viewer() ====
│ ├── hooks.py


===
<pre>
 
k2contacts.; Parameters:


<pre>
<pre>
<pre>
period,
|-
| <code>K2Site</code>
| Робота з сайтом
|-
| <code>K2Grid</code>
| Робота з таблицями та grid-компонентами
|-
| <code>K2WMS</code>
| Складські процеси та WMS
|-
| <code>K2CRM</code>
| CRM-функціональність
|-
| <code>K2DocsCRM</code>
| Документи CRM
|-
| <code>K2Report</code>
| Звіти та друковані форми
|-
| <code>K2ReportEmbed</code>
| Вбудовування звітів у вебсторінки
|-
| <code>K2ReportDesigner</code>
| Конструктор звітів і дашбордів
|-
| <code>K2Production</code>
| Виробничі процеси
|-
| <code>K2LogbookTMDoc</code>
| Логбук технічного обслуговування
|-
| <code>K2EquipmentFunction</code>
| Робота з обладнанням
|}


self._new_buttons #назва кнопки
[[Категорія:K2 CRM]]


the current thread and greenlet.)
!;== Див.; додатково ==


==== create_names_yml(self, name_yml: str = '', name_yml_tree: str = '', ====
<pre>


datasource_is_storage_id (list): Список флагів, що вказують на наявність storage_id.; Цей клас представляє CRM компонент, який гарантує роботу з різними розділами CRM системи такими як:
Знайти YML-файл:


== API ==
createImageSliderModal(images, containerId = null)
 
Отримати id поточного контрагента:
usr_perm = K2().get_user_permissions()
!; !; Видаляє анімацію завантаження з контейнера.; Методи
 
<pre>
Returns:
json_data = k2_designer.json_data_create(
 
|-
актуалізація залишків на основі даних Pub/Sub.; Відображає сторінку редагування друкованої форми.;==== get_platform() ====
| <code>init_db()</code>
 
| Підключення <code>db_uri</code> для вибраної бази даних
* A sequence of text lines detailing the stacks of running
|-
| <code>init_db_custom(key)</code>
| Підключення custom <code>db_uri</code> за ключем
|-
| <code>init_db_uri()</code>
| Пошук і ініціалізація файлу підключення до бази даних
|-
| <code>init_db_uri_custom()</code>
| Зчитування підключень із <code>db_custom.yml</code>
|-
| <code>init_db_uri_user()</code>
| Ініціалізація підключення до БД для поточного користувача
|-
| <code>init_db_user()</code>
| Підключення <code>db_uri</code> для користувача
|-
| <code>create_db_role(user_name, password)</code>
| Створення користувача на рівні БД
|-
| <code>drop_db_role(user_name)</code>
| Видалення користувача на рівні БД
|-
| <code>kill_user_sessions(target_username)</code>
| Завершення сесій користувача на рівні БД
|}


У разі помилки скасовує транзакцію і повертає характеристика помилки.; Load a logging message by its error_id from the error log file.; Перевірка наявності записів з parentid:
K2().get_current_user()
 
==== Класk2notifications ====
 
Відсутні.;==== get_locale() ====
 
'new' – нові залишки, отримані в поточному оновленні.; Створює характеристика змін у форматі "поле: старе_значення → нове_значення"
 
==== logging_message(status, message, page_url=None, show_message=True) ====
 
=== Клас k2logging ===
 
<pre>


│ ├── roles/
Основні приклади:
<code>K2EquipmentFunction</code> — підклас <code>K2Obj</code>, призначений для роботи з функціональністю обладнання в K2 ERP.;<code>K2Obj</code> — базовий клас для об’єктів системи K2 ERP.; !; !;=== showBootstrapLoader() ===
</pre>
</pre>
ключовий метод:
== Метод check_lead() ==
__TOC__
!; Призначення
== Логування та повідомлення K2 ==
=== Атрибути ===
|-
| <code>self.secur</code>
| Підключення класу безпеки
|-
| <code>self.path</code>
| Підключення класу пошуку шляхів
|-
| <code>self.data</code>
| Підключення класу синхронізації даних
|-
| <code>self.settings</code>
| Підключення класу налаштувань
|-
| <code>self.notifications</code>
| Підключення класу сповіщень
|}


==== Повертає ====
requirements-components.txt
 
k2report_embed = K2ReportEmbed(reports_id)


З цього класу створюються всі об’єкти системи К2.; Returns:
path_class = 'components/k2production/k2production/k2equipment'


dict: Словник з результатами запитів або помилкою.;==== Моделі які використовуються ====
!; Метод


Логіка роботи:
!; Це потрібно для того, щоб систему можна було оновлювати, документувати, тестувати й підключати до інших модулів без ручного хаосу.; характеристика


json_data = k2_designer.json_data_create(datasource_value, datasource_keys, datasource_is_counterpart_id, datasource_is_storage_id, period, date_from, date_to)
Приклад отримання абсолютного шляху:


== Класи компонент ==
!; k2report_embed = K2ReportEmbed(reports_id)


date_from (str, опціонально): Початкова дата періоду.; Абсолютний шлях до файлу, в якому виконується код.;===
!; характеристика
│ ├── users/


==== Методи класу ====
)


==== k2logbook_tm() ==== take_logbook_tm(task_id) ==== edit_logbook_tm(logbook_fields_tm_id) ==== select_current_step(connection, logbook_fields_tm_id) ==== planned_tm(data, connection) ==== unplanned_tm(data, connection) ==== write_logbook_params(data) ==== read_logbook_params() ==== fill_logbook_tm_rows(data) ==== pull_spare_parts_data() ==== send_params_to_k2logbook_spare_parts(data) ==== instruments_and_equipment_parts_params() ==== task_step_form() ==== is_unplanned_step_form(step_data) ==== save_step(data) ==== end_step(data, session_id, connection, post_request) ==== step_image_check(connection, data) ==== step_data_check(connection, data) ==== decline_task() ==== write_user_comment() ==== end_step_manager(data) ==== detail_check(connection, data) ==== send_params_to_k2mount_point_form() ==== change_scheme_equipment() ==== pass_familiarisation() ==== create_write_off_act_logbook(connection, data) ==== create_doc_rows_for_write_of_act(connection, data) ==== write_off_part_logbook(connection, data) ==== end_logbook() ==== spare_parts_check() ==== equipment_qr_confirmation() ==== add_new_equipment_parts(connection, data) ==== material_quantity() ==== create_unplanned_task(data) ==== take_material_by_qr() ==== return_material_by_qr() ==== requires_partner() ==== join_task() ==== e_report_logbook(logbook_fields_tm_id) ==== get_all_employee_image() ==== get_employee_image() ==== get_image_logbook(image_data) ==== confirm_task() ==== send_on_revision_task() ==== send_to_the_task_list_revision() ==== change_task_employee(connection, data) ==== change_step_status_revision(connection, data) ==== change_task_status_revision(connection, data, status) ==== Клас K2EquipmentFunction ===
├── history.txt


=== Клас K2EquipmentFunction є собою підкласом K2Obj і призначений для роботи з функціональністю, пов'язаною з обладнанням у системі K2.; K2.logging_message(K2.log_success, 'Operation completed successfully.'1)
Ядро K2 ERP має підтримувати роботу з перекладами та давати можливість покращувати локалізацію стороннім користувачам або розробникам.; характеристика


==== Властивості інстансу ====
<gallery mode="packed" heights="180">
== Методи класу K2 ==
id = K2.generate_id()
|-
| <code>name</code>
| Назва компоненти
|-
| <code>version</code>
| реліз компоненти
|}


</pre>
│ ├── data/


=== Основні атрибути ===
<pre>
<pre>
K2.get_path_abs(__file__)
|-
| <code>self._name_yml</code>
| Назва конфігураційного YML-файлу
|-
| <code>self._name_yml_tree</code>
| Назва YML-файлу з деревом
|-
| <code>self._new_buttons</code>
| Нові кнопки
|-
| <code>self._name_yml_master</code>
| Майстер-конфігурація
|-
| <code>self._send_params</code>
| Параметри для конфігураційного файлу
|-
| <code>self._send_group_params</code>
| Параметри групи
|-
| <code>self._report_id</code>
| ID звіту
|-
| <code>self._data_source</code>
| Джерела даних
|-
| <code>self._off_buttons</code>
| Кнопки, які потрібно вимкнути
|-
| <code>self._row_selection</code>
| Вибір рядка
|}


self._send_params #параметри для конфігураційного файлу
У компоненті має бути вказане авторство.; Метод


Виконує SQL-запит до таблиці k2contacts для пошуку контакту за номером телефону.; приклад:
<pre>
 
!; | Вимоги до компонентів, системні класи, API, CRM, звіти, production-класи та JavaScript-утиліти
</pre>
|-
 
| Який базовий клас системи?; Якщо зображення відсутні, показує повідомлення та повертає <code>null</code>.;== Клас K2Report ==
{% if error %}
=== Приклад json_data_create() ===
 
<pre>
Отрмання rolename поточного користувача
 
Формування повідомлення:
 
</pre>
 
datasource_value = ["SELECT * FROM table1", "SELECT * FROM table2"]
 
==== get_user_permissions() ====
 
datasource_keys (list): Список ключів для джерел даних.;==== ins_search_comp() ====
 
У разі помилки: JSON з описом помилки (код 404 або 500)
 
datasource_value (list): Список SQL-запитів.; Example:
Результати запитів конвертуються у словники (row_asdict) для зручного JSON-формату.; Додаткові класи від яких залежить функціональні можливості компоненти.;<pre>
name_yml: The name of the yml file to search for (without the '.yml' extension).

Поточна версія на 17:53, 1 травня 2026

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

K2.logging_message(

!;

== Клас K2ReportDesigner ==

showBootstrapLoader(containerId)

=== createImageSliderModal() ===

!; Каталог

k2form==2.0.1.27

Python-залежності, якщо вони потрібні, вказуються у файлі:

requirements.txt

Документація компоненти

  1. отримує JSON із lead_id;
  2. перевіряє, чи передано lead_id;
  3. шукає лід у таблиці k2lead;
  4. створює запис у таблиці k2contacts;
  5. у разі помилки скасовує транзакцію та повертає характеристика помилки.; Для компонент K2 застосовується стандартний формат:

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

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

return render_template(

Приклад:

Вимоги до компоненти K2 ERP

Нижче наведено приклад типової структури компоненти K2 ERP.; Призначення

├── doc/
Метод має змогу зберігати повідомлення в журналі та відправляти його клієнту через Socket.IO.;
{| class="wikitable" style="width:100%;"

!; Питання

== Ресурси компоненти ==

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

!; Властивість
{% block content %}
Результат містить roleid та прапорці доступу, зокрема:

def test_dashboard(): send_approval_request_from_hook(self, data) ├── requirements-components.txt /languages/en/LC_MESSAGES/messages.mo date_from = "2023-01-01"

Метод збирає інформаційні дані по товарах, організації, контрагенту, складу, договору, відповідальній особі та клієнту, після чого повертає результат у JSON-форматі.; | Для розробників K2 ERP Python
|-
| Що описує документ?;</div>
!; Компонента повинна мати документацію для різних груп користувачів.; └── k2adm/

!; Значення <code>name</code>
Клас надає можливість отримувати та відображати звіти з бази даних за їхніми ідентифікаторами.; Основні частини компоненти:
Отримати назву поточного проєкту:
{| class="wikitable" style="width:100%;"
 message='Operation completed successfully.',
 'k2dashboard_production/k2dashboard_production.html',
Для автоматичної генерації HTML-документації з docstring можна використовувати стандартний інструмент `pydoc`.;<pre>

k2/k2obj.py
 │ ├── developer_documentation/
!; | У каталозі <code>doc/</code>
|-
| Де зберігаються локалізації?; |-
| <code>message</code>
| Текст повідомлення
|-
| <code>type</code>
| Тип повідомлення: <code>primary</code>, <code>success</code>, <code>danger</code>, <code>warning</code>, <code>info</code>, <code>light</code>
|}

 status=K2.log_success,

 {{ error }}

removeBootstrapLoader(containerId)
=== showUserAlert() ===
|-
| Для кого ця сторінка?; |-
| <code>add_authorized_users(user_id, login)</code>
| Додає користувача до списку авторизованих
|-
| <code>check_authorized_users(user_id)</code>
| Перевіряє, чи користувач системи активний
|-
| <code>check_logout_users(user_id)</code>
| Перевіряє користувачів, що вийшли
|-
| <code>dell_authorized_users(user_id)</code>
| Видаляє користувача зі списку авторизованих
|-
| <code>get_authorized_users()</code>
| Отримує список авторизованих користувачів
|}

== K2 ERP JavaScript ==

Клас гарантує створення, перегляд і редагування записів логбука, роботу з параметрами завдань, обладнанням, запчастинами, кроками технічного обслуговування та підтвердженням виконання робіт.; !; Метод

!; Призначення

Очікувані інформаційні дані:

== Авторство ==

 dashboard_settings=k2report_embed
K2.get_path_to_root(__file__)
Документ описує загальні вимоги до компонентів K2 ERP, базові системні класи, структуру компонентів, правила документування та приклади використання окремих класів.; Згенерувати ID:

 │ ├── languages/
== Клас K2Obj ==
!;=== Основні групи методів ===
|-
| <code>images</code>
| Масив URL-адрес зображень
|-
| <code>containerId</code>
| Ідентифікатор контейнера для вставки слайдера
|}

 │ ├── static/

=== Основні методи K2Obj ===

Клас обробляє інформаційні дані з логів, створює або оновлює записи про залишки товарів і керує їхніми статусами.; Класи компонент реалізують функціональність конкретних модулів K2 ERP.;=== Основні функціональні можливості ===
 ├── k2adm/
<pre>
 │ ├── widgets/
[[Категорія:Python]]
<div style="border:2px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
)
!; характеристика

Параметри:
 datasource_is_storage_id,
== Клас K2DocsCRM ==
|-
| <code>new</code>
| Нові залишки, отримані в поточному оновленні
|-
| <code>stable</code>
| Підтверджені залишки, доступні користувачам
|-
| <code>old</code>
| Застарілі інформаційні дані, що підлягають видаленню
|}

Copyright © 2000-2025 К2®, Rudiuk Serhii.; | Від <code>K2Obj</code>
|-
| Де описуються залежності компонент?; K2.logging_message(status, message, page_url=None, show_message=True)
 └── setup.py
== Права користувача ==
 '49952f397efff44d7ce0e5cb9aa625fb'

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

{{DISPLAYTITLE:Класи та команди K2 ERP Python}}
!; Він гарантує роботу з лідами, замовленнями, рахунками, звітами та налаштуваннями CRM.; | У каталозі <code>languages/</code>
|-
| Які JavaScript-функції описані?; Призначення
{| class="wikitable" style="width:100%;"
K2().get_user_permissions()
<code>K2LogbookTMDoc</code> керує логбуком технічного обслуговування.; Дія
генерацію та друк звітів за допомогою API Stimulsoft реалізується засобами <code>K2Report </code>.; Метод

[[Категорія:API]]

* <code>r</code> — читання;
* <code>w</code> — запис;
* <code>i</code> — вставка;
* <code>d</code> — видалення;
* <code>c</code> — створення;
* <code>exp</code> — експорт;
* <code>imp</code> — імпорт;
* <code>del_</code> — відновлення;
* <code>settable</code> — конфігурація таблиці;
* <code>cutpast</code> — вирізати / вставити;
* <code>enable</code> — доступність;
* <code>active</code> — активність.;

current_user_permissions = K2().get_user_permissions()

Клас K2

datasource_value,

Приклад отримання відносного шляху до кореня:

K2ReportDesigner надає функціональність для створення, редагування та перегляду звітів і дашбордів.; Якщо контакт знайдено, метод оновлює інформаційні дані ліда: ім’я, прізвище, email та lead_id.; Метод

Коротко

│ │ └── roles.py

K2ReportEmbedзастосовують, коли потрібно для вбудовування звітів у вебзастосунок.; Логіка роботи:

yml_path = K2.search_yml('users')


Інструкція користувача повинна автономно підтягуватися системою документації K2 ERP, створюючи окремий розділ документації для встановленого продукту.;== Методи авторизації користувачів ==
|-
| <code>component_list()</code>
| Пошук встановлених компонент
|-
| <code>get_current_user()</code>
| Повертає об’єкт поточного користувача
|-
| <code>get_user_counterparts_id()</code>
| Пошук id поточного контрагента
|-
| <code>get_user_counterparts_name()</code>
| Пошук назви поточного контрагента
|-
| <code>get_user_project_id()</code>
| Пошук id поточного проєкту користувача
|-
| <code>get_user_project_name()</code>
| Пошук назви поточного проєкту користувача
|-
| <code>get_user_storage_id()</code>
| Пошук id поточного складу
|-
| <code>get_user_stoages_name()</code>
| Пошук назви поточного складу
|-
| <code>get_user_structural_division_id()</code>
| Пошук id поточного підрозділу
|-
| <code>get_user_structural_division_id_tree()</code>
| Пошук підрозділів за ієрархією
|-
| <code>get_menu_url()</code>
| Повертає список URL активних пунктів меню
|-
| <code>search_menu_items()</code>
| Пошук пунктів меню
|-
| <code>search_menu_items_category()</code>
| Пошук категорій пунктів меню
|-
| <code>search_static_files()</code>
| Пошук статичних файлів
|-
| <code>url_map()</code>
| Робота з картою URL
|}

 date_to

!; Основні системні класи:

K2().create_db_role(user_name, password)
<pre>
У K2 ERP використовуються допоміжні JavaScript-функції для роботи з інтерфейсом, зображеннями, завантаженням і повідомленнями користувачу.; Властивість
|-
| <code>K2</code>
| Ядро системи K2 ERP
|-
| <code>K2Obj</code>
| Базовий клас для об’єктів системи
|-
| <code>K2admin_menus</code>
| Формування меню для конкретного користувача
|-
| <code>k2data</code>
| Робота з даними
|-
| <code>k2datasync</code>
| Синхронізація даних
|-
| <code>k2logging</code>
| Логування повідомлень і помилок
|-
| <code>k2mail</code>
| Робота з поштою
|-
| <code>k2notifications</code>
| Сповіщення користувачів
|-
| <code>k2path</code>
| Пошук шляхів у системі
|-
| <code>k2secur</code>
| Безпека та доступи
|-
| <code>k2settings</code>
| конфігурація системи
|-
| <code>k2trans</code>
| Переклади
|-
| <code>k2upd</code>
| актуалізація
|}

 │ ├── examples/

 │ ├── history.txt

=== Основні властивості класу ===

[[Категорія:K2 ERP]]

{| class="wikitable" style="width:100%;"
|-
| <code>domain_name</code>
| Назва домену
|-
| <code>domain_protocol</code>
| Протокол домену
|-
| <code>domain</code>
| Поточний домен
|-
| <code>port</code>
| Порт
|-
| <code>db</code>
| Підключення до бази даних
|-
| <code>default_language</code>
| Мова за замовчуванням
|}

Визначити платформу:

!;=== Основні властивості класу ===
!;== Клас K2CRM ==

 │ └── additional_developer_docs/

K2 — це ядро системи K2 ERP.; Призначення

│ └── views.py

check_lead() перевіряє, чи існує контакт із заданим номером телефону в таблиці k2contacts.; │ ├── yml/ datasource_keys = ["table1_data", "table2_data"]

; Призначення ; │ ├── user_manual/

Ілюстрації

Приклад Jinja-шаблону

process_options() обробляє JSON-запит і налаштовує K2Grid залежно від значення параметра name.; Призначення

pydoc -w k2/k2obj.py

Отримати список встановлених компонент: {% extends template_name + '/base.html' %}

{% if error %}
Метод повертає JSON-відповідь про успіх або помилку.;<pre>

</div>

Компонента K2 ERP повинна мати стандартизовану структуру.; '''істотно.''' Щоб автоматична документація була корисною, класи й методи потрібно описувати зрозумілими docstring-коментарями, а не залишати код без пояснень.; {| class="wikitable" style="width:100%;"
Отримати права поточного користувача:

 │ ├── models.py

<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">

повертає права поточного користувача для URL, до якого він звертається.; !; Клас

== Методи роботи з базою даних і сесіями ==
K2().get_user_counterparts_id()
Приклад команди:
 page_url='/kadm/users',
=== Основні властивості інстансу ===
<pre>
 ]
=== Основні методи ===

!; Призначення
=== Статуси залишків ===
K2.logging_message(K2.log_error, 'Operation completed with error.')

!; Група
|-
| <code>database</code>
| База даних через глобальний об’єкт <code>K2.db</code>
|-
| <code>time_zone</code>
| Часовий пояс системи через <code>K2.timezone</code>
|-
| <code>domain</code>
| Поточний домен через <code>K2.domain</code>
|}

== Метод process_options() ==

!; !;
  • створення звітів;
  • робота з конструктором звітів;
  • керування друкованими формами;
  • генерація друкованих документів;
  • взаємодія з API Stimulsoft;
  • візуалізація та експорт звітів.; Призначення

k2log==2.0.0.2 k2grid==2.0.4.1

; Метод

Клас додатково наслідується від K2Obj.; file_class = 'k2equipment'

│ ├── schema/

— шлях до Python-файлу від кореня проєкту.; Призначення

reports_id = [
├── requirements.txt
create_contact() Створює контакт на основі даних ліда
check_lead() Перевіряє, чи існує контакт із заданим телефоном
crm_data(route, data) Отримує інформаційні дані для друкованих форм CRM
process_options() Обробляє параметри JSON-запиту й налаштовує об’єкти K2Grid

У K2 ERP використовуються щонайменше українська та англійська мови.; Що зберігається

Клас K2Production

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

Основні методи

designer() Відображає сторінку редагування друкованої форми
viewer() Відображає сторінку перегляду друкованої форми
dashboard_viewer() Відображає сторінку перегляду дашборду
dashboard_designer() Відображає сторінку редагування дашборду
json_data_create(...) Створює JSON-дані на основі джерел даних і періоду
save_report_id() Зберігає ідентифікатор і конфігурація звіту
mrt_report_create(report_id, design_type_id=None) Створює MRT-файл звіту на основі шаблону
table_report_data(datasource_value, datasource_keys) Обробляє SQL-дані для джерел звіту
save_info_report_designer() Зберігає інформацію про звіт і генерує MRT-файл
data_source_lists_creating(group_reports_id) Створює списки джерел даних для звіту

Ресурси компоненти зберігаються у стандартних каталогах:

Приклади: K2().get_user_project_name()

datasource_keys,

Призначення документа

Файли перекладів зберігаються у структурі:

ключовий метод

Окремо варто відзначити створюють компоненти, підключають системні класи, використовують API, пишуть документацію, тести і допоміжні JavaScript-функції виступає ключовою рисою розробників забезпечується через Класи та команди K2 ERP Python.; Властивість

;=== Основні властивості інстансу ===

де reports_id — список ідентифікаторів звітів.; Він повинен мати зрозумілу структуру, моделі, роути, API, залежності, документацію, історію змін, тести, локалізації, приклади та ресурси.; {| class="wikitable" style="width:100%;"

removeBootstrapLoader()

Приклади сценаріїв:

crm_data() отримує інформаційні дані з таблиць бази для формування друкованих форм документів у CRM.;K2DocsCRM — частина CRM-модуля, яка відповідає за роботу з документами та даними CRM.;== Локалізації ==

Клас K2UpdateRemainder

Клас містить методи для обробки запитів на затвердження змін у технічній документації обладнання.;
 │ ├── forms.py
{| class="wikitable" style="width:100%;"


Клас відповідає за базові параметри домену, підключення до бази даних, мову, поточного користувача, список компонентів, конфігурація, доступи, сесії та службові методи.;
datasource_is_counterpart_id,

Приклад backend Flask

де:

; K2ReportEmbed(reports_id: List [str])

 │ ├── business_processes/

; datasource_is_storage_id = [False, True] K2Production застосовується для виробничих процесів.;

Метод crm_data(route, data)

Від нього наслідуються об’єкти, які використовують стандартну логіку системи: конфігурації, YML, grids, форми, параметри, кнопки, джерела даних і розширення.; Поле Клас наслідується від K2Obj, з цієї причини використовує базові властивості та методи системних об’єктів K2 ERP.; Каталог

=== Ініціалізація ===
K2_Cloud_ERP_Python_01.png|Ілюстрація K2 ERP Python|посилання=Файл:K2_Cloud_ERP_Python_01.png

Приклад:

Повертає ідентифікатор створеного каруселя або модального вікна.; Метод
 {% endif %}
!; | <code>K2</code>
|-
| Від чого наслідуються об’єкти системи?; Параметр

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

K2CRM — клас CRM-модуля K2 ERP.; showUserAlert(message, type = 'light') </gallery>
models.py ORM-структури та моделі бази даних компоненти
views.py центральний клас компоненти, роути та API
objects/ Додаткові класи, від яких залежить функціональні можливості компоненти
hooks.py Хуки для розширення або зміни стандартної поведінки системи
requirements-components.txt Залежності від інших компонент K2 ERP
requirements.txt Python-залежності компоненти
README.md характеристика цілі компоненти, способу використання та важливих приміток
history.txt історичний розвиток змін, написана зрозумілою для користувача мовою
doc/ Документація, схеми, бізнес-процеси та інструкції
tests/ Юніт-тести компоненти
examples/ Приклади використання компоненти
widgets/ Віджети, дашборди та візуальні елементи
languages/ Локалізації та переклади
static/ Зображення, стилі, JavaScript, текстові ресурси
templates/ Шаблони компоненти
yml/ YML-конфігурації
; Параметр ; характеристика

K2().component_list()

Залежності компоненти

Метод отримує інформаційні дані звітів із бази даних і формує JSON-структуру для відображення.; це технічна документація; додатково реалізовано які працюють із Python-версією K2 ERP.;

Клас K2LogbookTMDoc

; Якщо компонента залежить від інших компонент K2 ERP, ці залежності потрібно вказати у файлі: ; │ ├── __init__.py
; Частина
/static Зображення, тексти, JavaScript, CSS та інші статичні ресурси
/static/img Іконки та зображення компоненти
/templates Шаблони компоненти
/yml YML-конфігурації
/data інформаційні дані компоненти, якщо вони потрібні

/languages/en/LC_MESSAGES/messages.po

; Метод

Додає анімацію завантаження у вказаний контейнер.; !; ├── __init__.py

generate_id() Генерація ID
compare_versions(version1, version2) Порівняння версій
get_platform() Визначення операційної системи
get_locale() Визначення поточної мови
get_locale_id() Визначення id поточної мови
get_active_lang_list() Отримання списку активних мов
get_user_role(user_id) Отримання roleid користувача
get_current_user_role_name() Отримання role name поточного користувача
get_path_abs(caller_file) Абсолютний шлях до файлу, в якому виконується код
get_path_to_root(caller_file) Відносний шлях до кореня
search_yml(name_yml) Пошук YML-файлу в каталогах компонент
search_comp_names() Пошук ідентифікаторів компонент
load_babel_translation_directories() Завантаження перекладів

{% endblock %}

│ ├── templates/
components/

=== Основні методи K2DocsCRM ===

 'b452a5ae84f9e92e75eb0467c196fd71',
=== Основні методи K2Report ===
- __init__(sql=[]) Ініціалізує клас і отримує шлях до каталогу виклику
create_report(sql=None, data_source=None) Створює звіт і відображає редактор або переглядач
get_report(file_name) Отримує звіт за назвою файлу
execute_query(query, params=None) Виконує SQL-запит
get_report_designer(file_name, design_type_id) Отримує дизайнер звіту за типом дизайну
add_reports_type(name, data) Додає тип звіту до групи звітів

Створити користувача на рівні бази даних:

show_message=False

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


{| class="wikitable" style="width:100%;"
!; | Слайдер зображень, loader, видалення loader та повідомлення користувачу
|}

<pre>

* [[K2 Cloud ERP|K2 ERP]]
* [[K2 ERP]]
* [[Python]]
* [[API]]
* [[Документація для розробників]]
* [[K2 Cloud ERP Javascript|K2 ERP Javascript]]
* [[Розгортання системи K2 ERP Python для розробників]]
* [[Компоненти K2 ERP]]
* [[K2 CRM]]
* [[K2 Report]]
* [[K2 Production]]

<pre>
{| class="wikitable" style="width:100%;"
Якщо компоненту створює сторонній розробник, потрібно вказати інформацію про такого розробника.; !; Статус

== Клас K2EquipmentFunction ==

{| class="wikitable" style="width:100%;"

datasource_value = ["SELECT * FROM table1", "SELECT * FROM table2"]

{| class="wikitable" style="width:100%;"

period = 1
!; Атрибут
K2 має методи для збереження, завантаження та відправлення повідомлень користувачу.; Відповідь

* як має виглядати структура компоненти;
* які файли є собою обов’язковими;
* де зберігати моделі, роути, хуки й додаткові об’єкти;
* як описувати залежності;
* як оформлювати документацію для користувачів і розробників;
* які базові класи доступні в ядрі K2 ERP;
* як використовувати системні API;
* які JavaScript-допоміжні функції доступні для інтерфейсу.; |-
| <code>update_pub_sub_remainder()</code>
| Оновлює залишки на основі даних Pub/Sub
|-
| <code>_insert_new_pub_sub_nomenclature(session, nomenclature_data)</code>
| Додає нову номенклатуру, якщо її ще немає
|}

 {% include dashboard_settings.template %}

!; Властивість
<code>create_contact()</code> створює контакт на основі даних існуючого ліда.; Призначення
== Метод create_contact() ==
=== Метод send_approval_request_from_hook() ===
|-
| <code>doc/schema</code>
| Структура бази даних, зокрема SQL Power Architect-схеми
|-
| <code>doc/business_processes</code>
| Бізнес-процеси та схеми роботи у форматі Draw.io
|-
| <code>doc/user_manual</code>
| Інструкція користувача
|-
| <code>doc/developer_documentation</code>
| Документація для розробників, згенерована автономно з коментарів
|-
| <code>doc/additional_developer_docs</code>
| Додаткова документація для розробників
|}

<pre>

<code>K2UpdateRemainder</code> відповідає за актуалізація залишків на основі даних, отриманих від клієнтів.; Призначення

{| class="wikitable" style="width:100%;"

!; All rights reserved.; Метод
== Класи компонент ==

!; )


!; Призначення

Ця сторінка потрібна для того, щоб розробники K2 ERP працювали з компонентами в єдиному стилі.; | У <code>requirements-components.txt</code> та <code>requirements.txt</code>
|-
| Де зберігається документація?; Призначення
datasource_is_counterpart_id = [True, False]
Системні класи K2 ERP забезпечують базову роботу ядра, об’єктів, безпеки, шляхів, даних, налаштувань, повідомлень, перекладів і оновлень.; Параметри:
 {% else %}
 '1673a4fab757fb6c5df970fdc6ee680c',
│ ├── tests/

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

date_from,

Шаблони мають бути розроблені так, щоб не конфліктувати з глобальними шаблонами системи.; Призначення


Метод:
{| class="wikitable" style="width:100%;"
== Клас K2ReportEmbed ==
|-
| <code>equipment_type_id</code>
| Ідентифікатор типу обладнання
|-
| <code>changed_fields</code>
| Словник зі зміненими полями та їхніми значеннями
|}

  1. перевіряє наявність записів із parentid != '0' у таблиці k2tm_fields;
  2. отримує інформацію про тип обладнання з таблиці k2equipment_type;
  3. шукає активних затверджувачів у таблиці k2users_for_approval;
  4. формує характеристика змін;
  5. формує URL для сторінки затвердження;
  6. надсилає повідомлення через K2Notifications.send_approval_request().; Призначення
usr_perm = K2().get_user_permissions()
Клас взаємодіє з базою даних, керує файлами звітів і генерує JSON-дані для подальшого використання.; |-
| Відображення логбука
| <code>k2logbook_tm()</code>, <code>take_logbook_tm()</code>, <code>edit_logbook_tm()</code>
| Відкриття списку, форми та редагування логбука
|-
| Планове і позапланове ТО
| <code>planned_tm()</code>, <code>unplanned_tm()</code>, <code>create_unplanned_task()</code>
| Робота з плановим і позаплановим технічним обслуговуванням
|-
| Параметри
| <code>write_logbook_params()</code>, <code>read_logbook_params()</code>
| Збереження та читання параметрів логбука
|-
| Запчастини
| <code>pull_spare_parts_data()</code>, <code>spare_parts_check()</code>, <code>take_material_by_qr()</code>, <code>return_material_by_qr()</code>
| Робота із запчастинами та матеріалами
|-
| Кроки ТО
| <code>task_step_form()</code>, <code>save_step()</code>, <code>end_step()</code>, <code>end_step_manager()</code>
| Обробка кроків технічного обслуговування
|-
| Перевірки
| <code>step_image_check()</code>, <code>step_data_check()</code>, <code>detail_check()</code>, <code>equipment_qr_confirmation()</code>
| Перевірка зображень, даних, деталей і QR-кодів
|-
| Статуси
| <code>decline_task()</code>, <code>confirm_task()</code>, <code>send_on_revision_task()</code>, <code>requires_partner()</code>, <code>join_task()</code>
| Керування статусами завдань
|-
| Звіти та зображення
| <code>e_report_logbook()</code>, <code>get_all_employee_image()</code>, <code>get_employee_image()</code>, <code>get_image_logbook()</code>
| Звіти та робота із зображеннями логбука
|}

Основні методи K2


У документації клас згадується в контексті схеми вибору обслуговування терміналу.; характеристика

{| class="wikitable" style="width:100%;"
== Генерація документації з docstring ==
<pre>
|-
| <code>k2doc_rows_detail</code>
| Створює grid для деталізації рядків документа, вимикає зайві кнопки, передає <code>row_id</code> і <code>storage_id</code>
|-
| <code>k2doc_move</code>
| Створює grid руху документа, вимикає кнопки додавання, редагування, видалення та друку
|}

date_to = "2023-12-31"

K2.get_platform()

 │ │ └── users.py

* <code>K2ReportEmbed</code>;
* <code>K2ReportDesigner</code>.; │ ├── objects/
'''Коротко.''' Компонент K2 ERP має бути не без ускладнень набором Python-файлів.; K2().domain
Метод відправляє запит на затвердження змін у технічній карті обладнання.; Клас
Документація сприяє зрозуміти:
__init__() Ініціалізація об’єкта
content() Формування контенту
create_names_yml() Створення назв YML-конфігурацій
search_class_prop() Пошук властивостей для розширення класу
select_grid() Вибір grid
show_grid() Відображення grid

Клас наслідується від K2Obj і є собою батьківським класом для:

│ ├── hooks.py

<pre>
<pre>
 period,
|-
| <code>K2Site</code>
| Робота з сайтом
|-
| <code>K2Grid</code>
| Робота з таблицями та grid-компонентами
|-
| <code>K2WMS</code>
| Складські процеси та WMS
|-
| <code>K2CRM</code>
| CRM-функціональність
|-
| <code>K2DocsCRM</code>
| Документи CRM
|-
| <code>K2Report</code>
| Звіти та друковані форми
|-
| <code>K2ReportEmbed</code>
| Вбудовування звітів у вебсторінки
|-
| <code>K2ReportDesigner</code>
| Конструктор звітів і дашбордів
|-
| <code>K2Production</code>
| Виробничі процеси
|-
| <code>K2LogbookTMDoc</code>
| Логбук технічного обслуговування
|-
| <code>K2EquipmentFunction</code>
| Робота з обладнанням
|}

[[Категорія:K2 CRM]]

!;== Див.; додатково ==

<pre>

Знайти YML-файл:

createImageSliderModal(images, containerId = null)
Отримати id поточного контрагента:
!; !; Видаляє анімацію завантаження з контейнера.; Методи
<pre>
json_data = k2_designer.json_data_create(
|-
| <code>init_db()</code>
| Підключення <code>db_uri</code> для вибраної бази даних
|-
| <code>init_db_custom(key)</code>
| Підключення custom <code>db_uri</code> за ключем
|-
| <code>init_db_uri()</code>
| Пошук і ініціалізація файлу підключення до бази даних
|-
| <code>init_db_uri_custom()</code>
| Зчитування підключень із <code>db_custom.yml</code>
|-
| <code>init_db_uri_user()</code>
| Ініціалізація підключення до БД для поточного користувача
|-
| <code>init_db_user()</code>
| Підключення <code>db_uri</code> для користувача
|-
| <code>create_db_role(user_name, password)</code>
| Створення користувача на рівні БД
|-
| <code>drop_db_role(user_name)</code>
| Видалення користувача на рівні БД
|-
| <code>kill_user_sessions(target_username)</code>
| Завершення сесій користувача на рівні БД
|}

K2().get_current_user()

 │ ├── roles/
Основні приклади:
<code>K2EquipmentFunction</code> — підклас <code>K2Obj</code>, призначений для роботи з функціональністю обладнання в K2 ERP.;<code>K2Obj</code> — базовий клас для об’єктів системи K2 ERP.; !; !;=== showBootstrapLoader() ===

ключовий метод:

Метод check_lead()

; Призначення

Логування та повідомлення K2

Атрибути

self.secur Підключення класу безпеки self.path Підключення класу пошуку шляхів self.data Підключення класу синхронізації даних self.settings Підключення класу налаштувань self.notifications Підключення класу сповіщень

requirements-components.txt

path_class = 'components/k2production/k2production/k2equipment'

; Метод ; Це потрібно для того, щоб систему можна було оновлювати, документувати, тестувати й підключати до інших модулів без ручного хаосу.; характеристика

Приклад отримання абсолютного шляху:

; k2report_embed = K2ReportEmbed(reports_id) ; характеристика
│ ├── users/
)
├── history.txt

Ядро K2 ERP має підтримувати роботу з перекладами та давати можливість покращувати локалізацію стороннім користувачам або розробникам.; характеристика

<gallery mode="packed" heights="180">

Методи класу K2

id = K2.generate_id()

name Назва компоненти version реліз компоненти
│ ├── data/

Основні атрибути

K2.get_path_abs(__file__)


self._name_yml

Назва конфігураційного YML-файлу


self._name_yml_tree

Назва YML-файлу з деревом


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

Вибір рядка


У компоненті має бути вказане авторство.; Метод


Вимоги до компонентів, системні класи, API, CRM, звіти, production-класи та JavaScript-утиліти


Який базовий клас системи?; Якщо зображення відсутні, показує повідомлення та повертає null.;== Клас K2Report ==

Приклад json_data_create()