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

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

Матеріал з K2 ERP Wiki
Прибрав слово Cloud
Немає опису редагування
 
Рядок 1: Рядок 1:
</pre>  
</pre>  


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


{% include dashboard_settings.template %}
K2.logging_message(


Відправка запиту на затвердження:
!;<pre>
Метод очікує вхідні інформаційні дані у форматі JSON і доступ до них здійснюється через request.json.; Відображає сторінку редагування дашборду.; Якщо запису немає – створює його.;=== Клас K2Site ===
== Клас K2ReportDesigner ==


=== Клас k2upd ===
showBootstrapLoader(containerId)


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


session (Session) – об'єкт сесії бази даних.; unitId (str) – одиниця виміру (конвертується за фіксованим списком).; Структури, які потрібні для даної компоненти.;==== dashboard_viewer() ====
!; Каталог


<pre>
k2form==2.0.1.27
""" Index page """
</pre>
 
__TOC__


itemId (str) – ідентифікатор номенклатури.;<pre>
Python-залежності, якщо вони потрібні, вказуються у файлі:
Повернення результату у форматі JSON
date_to (str, опціонально): Кінцева дата періоду.; Витягує інформаційні дані про залишки (inventSumLines).; period = 1
 
Логує помилку у разі невдалої вставки даних.;[[index.php?title=Категорія:Документація для розробників]]
 
=== Клас k2data ===
 
[[Index.php?title=Категорія:K2 Cloud ERP|index.php?title=Категорія:K2 ERP]]
 
dashboard_settings=k2report_embed)
current_user_permissions = K2().get_user_permissions()
 
Request information about the running threads of the current process.; (файл requirements-components.txt)


<pre>
<pre>
requirements.txt
</pre>


Виклик K2.get_path_abs(__file__)
== Документація компоненти ==
Перевіряє чи було надано lead_id.;==== get_user_role(user_id) ====


Формує SQL-запити для витягування даних із таблиць бази даних (Товари, Організація, Контрагент, складський облік, Договір, Відповідальна особа, замовник).;==== Залежності ====
# отримує JSON із <code>lead_id</code>;
актуалізація залишків на основі даних Pub/Sub.; Returns:
# перевіряє, чи передано <code>lead_id</code>;
# шукає лід у таблиці <code>k2lead</code>;
# створює запис у таблиці <code>k2contacts</code>;
# у разі помилки скасовує транзакцію та повертає характеристика помилки.; Для компонент K2 застосовується стандартний формат:


Формування повідомлення:
== Системні класи ==


@k2production.route('/test_dashboard', methods=['GET'])
Отримати поточного користувача:


This method emits a message to the client with a given status and message content.;== K2 ERP Javascript ==
</pre>
Rerurn: list of components identificators
return render_template(
Приклад:


Формує URL для сторінки затвердження
== Вимоги до компоненти K2 ERP ==


Викликає конструктор батьківського класу K2Docs.; page_url(str): url of page with Errors.;=== Клас K2Report ===
Нижче наведено приклад типової структури компоненти K2 ERP.; Призначення


datasource_is_storage_id (list): Список флагів, що вказують на наявність storage_id.; name (str): Name of the object (page) to load messages for.; З цього класу створюються всі об’єкти системи К2.; Призначення: застосовують, коли потрібно для зберігання та обробки даних, пов'язаних з CRM.; status (str): The status of the message (e.g., cls.log_error - 'ERROR', cls.log_warning - 'WARNING', cls.log_success - 'SUCCESS').;==== designer() ====
├── doc/
{| class="wikitable" style="width:100%;"
Метод має змогу зберігати повідомлення в журналі та відправляти його клієнту через Socket.IO.;<pre>
{| class="wikitable" style="width:100%;"


Передаються параметри: row_id та storage_id.;==== Методи ====
!; Питання


Шукає ліда в таблиці k2lead за наданим параметром.;==== search_babel_translation_directories() ====
== Ресурси компоненти ==


[[index.php?title=Категорія:Python]]
@k2production.route('/test_dashboard', methods=['GET'])


<pre>
!; Властивість
 
{% block content %}
==== Класk2notifications ====
Результат містить roleid та прапорці доступу, зокрема:
 
Save a logging message to the stack.;<pre>
 
створення звітів за допомогою конструктора звітів
 
=== Клас K2admin_menus ===
 
Зележності від інших компонент.;==== dashboard_designer() ====
 
== API ==


</pre>
</pre>


==== Методи ====
{| class="wikitable" style="width:100%;"
def test_dashboard():
send_approval_request_from_hook(self, data)


Призначення: застосовується для побудови URL-адрес або інших задач, пов'язаних з доменним середовищем.; Якщо lead_id не надано то повертається помилка.;==== get_user_permissions() ====
├── requirements-components.txt
Parameters:
Приклад використання функції:
Логіка роботи:
The search is performed in the 'yml' subdirectory of each caller directory.; Передає список затверджувачів, ідентифікатор об'єкта, URL та характеристика змін


K2.logging_message(status=K2.log_success, message='Operation completed successfully.', page_url='/kadm/users', show_message=False)
/languages/en/LC_MESSAGES/messages.mo
date_from = "2023-01-01"
{| class="wikitable" style="width:100%;"


Вимикаються кнопки: add, edit, delete, printReport.;==== save_logging_message(error_id, status, message, name) ====
<pre>


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


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


k2report_embed = K2ReportEmbed(reports_id)
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,
 
Генерація ID
 
Створює JSON-дані на основі джерел даних та періоду.; This method fetches permissions for the current user based on the URL they are accessing.; Returns:
 
==== get_locale() ====
 
Зберігає ідентифікатор та конфігурація звіту в JSON-файл.; Об'єкт класу K2UpdateRemainder.; Таблиця, в яку додається новий контакт на основі даних ліда.;<pre>
 
self._name_yml #назва конфігураційного файлу


</pre>
</pre>
 
<pre>
Видаляє застарілі ('old').;=== Клас k2secur ===
{{ error }}
 
Використовує K2Notifications.send_approval_request() для відправки повідомлення


</pre>
</pre>


З options [‘dataField’] отримує номер телефону (phone)
<pre>
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>
| Отримує список авторизованих користувачів
|}


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


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


json_data = k2_designer.json_data_create(datasource_value, datasource_keys, datasource_is_counterpart_id, datasource_is_storage_id, period, date_from, date_to)
!; Призначення
 
self._name_yml_tree #назва конфігураційного файлу з деревом
 
<pre>


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


==== update_pub_sub_remainder() ====
== Авторство ==


str: HTML-шаблон сторінки редагування дашборду.; 'stable' – залишки, які підтвердились та доступні користувачам.; Перевіряє наявність номенклатури у таблиці k2nomenclature.; self._new_buttons #назва кнопки
dashboard_settings=k2report_embed
K2.get_path_to_root(__file__)
Документ описує загальні вимоги до компонентів K2 ERP, базові системні класи, структуру компонентів, правила документування та приклади використання окремих класів.; Згенерувати ID:


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


==== logging_message(status, message, page_url=None, show_message=True) ====
│ ├── static/


{% endif %}
=== Основні методи K2Obj ===


date_from (str, опціонально): Початкова дата періоду.; Лід і контакт взаємодіють через базу даних, де інформаційні дані ліда переносяться в таблицю контактів.; check_lead() - Цей метод перевіряє, чи існує контакт із заданим номером телефону у базі даних (k2contacts).; Вимикаються кнопки add, edit, delete, printReport на панелі інструментів.; Цей клас представляє CRM компонент, який гарантує роботу з різними розділами CRM системи такими як:
Клас обробляє інформаційні дані з логів, створює або оновлює записи про залишки товарів і керує їхніми статусами.; Класи компонент реалізують функціональність конкретних модулів K2 ERP.;=== Основні функціональні можливості ===
self._data_source #датасети
├── k2adm/
<pre>
<pre>
==== взаємодія з API Stimulsoft для візуалізації та експорту звітів ====
│ ├── widgets/
[[Категорія:Python]]
<div style="border:2px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
)
!; характеристика


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


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


Виконує SQL-запит до таблиці k2contacts для пошуку контакту за номером телефону.;==== Метод очікує вхідний JSON, що містить ідентифікатор ліда (lead_id) ====
get_report_data() -> Optional [List [Dict [str, Any]]]


</pre>
{{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>.; Метод


=== Клас K2Grid ===
[[Категорія:API]]


This method searches for a yml file with a specified name in the caller directories of all subclasses of K2Obj.;===
* <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()


path_class: 'components/k2production/k2production/k2equipment'
== Клас K2 ==


file_class: 'k2equipment'
datasource_value,


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


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


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


Потребує доступу до бази даних через self.db
<pre>
<pre>
==== ins_search_comp() ====


period (int): Період вибірки даних.; Створюється об'єкт K2Grid з іменем yml 'k2doc_move'.;== Вимоги до створення компонент ==
Інструкція користувача повинна автономно підтягуватися системою документації 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
|}


{% else %}
date_to


k2form==2.0.1.27
!; Основні системні класи:
</pre>


Python залежності, якщо є. (файл requirements.txt)
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>
| актуалізація
|}


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


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


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


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


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


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


(потрібно завершити автоматичне збирання із компонент)
!;=== Основні властивості класу ===
!;== Клас K2CRM ==


Документація для розробників (не обов’язково, але желательно). Додатково, якщо потрібно, щось додатково відмітити. Каталог doc/additional_developer_docs)
│ └── additional_developer_docs/
 
</pre>
Приклади програмного коду з використанням компонент. Які автоматично з’являються в Examples при встановленні компоненти. І по яким можна протестувати функціонал. /examples (потрібно вирішити як додавати)
</pre>


Віджети. Дашборди та інші візуальні елементи для вставки на головну сторінку та інші сторінки, які можна додавати автоматично. (потрібно вирішити як додавати) /widgets
{| class="wikitable" style="width:100%;"


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


Демо-дані. Це дані, які розгортаються на демо-базі даних для демонстрації роботи з продуктом. (потрібно вирішити як додавати)
{| class="wikitable" style="width:100%;"


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


YML, якщо є. Каталог /yml
pydoc -w k2/k2obj.py


Іконки, які будуть використовуватись для представлення компоненти. Каталог /static/img
Отримати список встановлених компонент:
 
{% extends template_name + '/base.html' %}
Авторство. Якщо К2, то в форматі, як прийнято в цілому для К2, якщо сторонній розробник - інформація про стороннього розробника. Copyright © 2000-2025 К2®, Rudiuk Serhii. All rights reserved.
</pre>
 
Шаблони, якщо є. Вказуємо каталог. Звертаю увагу, що К2 ERP повинна мати змогу використовувати не обмежену кількість шаблонів. Шаблони повинні бути так розроблені, щоб не конфліктувати з глобальними шаблонами системи. Каталог /templates


==== Приклад дерева структури компоненти ====
{% if error %}


<pre>
<pre>
components/
Метод повертає JSON-відповідь про успіх або помилку.;<pre>
└── 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
</pre>


== Системні класи ==
</div>


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


Ядро системи K2CloudERP.
│ ├── models.py


==== Властивості ====
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">


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


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


self.path #властивість що підключає до ядра клас пошуку шляхів по ієрархії self.data #властивість що підключає до ядра клас синхронізації даних
!; Призначення
=== Статуси залишків ===
K2.logging_message(K2.log_error, 'Operation completed with error.')


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


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


==== Методи ====
!; !;</pre>


==== Методи інстансу ==== K2().get_user_counterparts_id() ==== K2().component_list() ==== K2().get_user_project_name() ==== K2().get_current_user() ==== K2().create_db_role(user_name, password) ====
* створення звітів;
* робота з конструктором звітів;
* керування друкованими формами;
* генерація друкованих документів;
* взаємодія з API Stimulsoft;
* візуалізація та експорт звітів.; Призначення


==== __init__(self, *args, **kwargs) ====
k2log==2.0.0.2
k2grid==2.0.4.1


Initialize self. See help(type(self)) for accurate signature.
!; Метод
Клас додатково наслідується від <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
|}


==== add_authorized_users(self, user_id, login) ====
У K2 ERP використовуються щонайменше українська та англійська мови.; Що зберігається


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


==== check_authorized_users(self, user_id) ====
== Приклад структури компоненти ==


Перевірити чи користувач системи активний
</pre>


==== check_logout_users(self, user_id) ====
=== Основні методи ===
</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>
| Створює списки джерел даних для звіту
|}


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


==== component_list() ====
Приклади:
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'''.; Властивість
!;=== Основні властивості інстансу ===


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


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


==== create_db_role(self, user_name, password) ====
<code>crm_data()</code> отримує інформаційні дані з таблиць бази для формування друкованих форм документів у CRM.;<code>K2DocsCRM</code> — частина CRM-модуля, яка відповідає за роботу з документами та даними CRM.;== Локалізації ==
== Клас K2UpdateRemainder ==
{| class="wikitable" style="width:100%;"
{| class="wikitable" style="width:100%;"
Клас містить методи для обробки запитів на затвердження змін у технічній документації обладнання.;<pre>
│ ├── forms.py
{| class="wikitable" style="width:100%;"


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


==== current_template(self) ====
<pre>


Search current template
</pre>


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


Зміна custom параметрів підключення
{| class="wikitable" style="width:100%;"


==== db_user_engine(self, db) ====
K2ReportEmbed(reports_id: List [str])


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


==== dell_authorized_users(self, user_id) ====
│ ├── business_processes/


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


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


Видалення користувача на рівні БД
== Метод crm_data(route, data) ==


==== get_all_subclasses(cls) ====
Від нього наслідуються об’єкти, які використовують стандартну логіку системи: конфігурації, YML, grids, форми, параметри, кнопки, джерела даних і розширення.; Поле
 
Клас наслідується від <code>K2Obj</code>, з цієї причини використовує базові властивості та методи системних об’єктів K2 ERP.; Каталог
==== Пошук підкласів ====
<pre>
 
=== Ініціалізація ===
==== 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) ==== search_menu_items(self) ====
 
Search menu items
 
==== search_menu_items_category(self) ====
 
Search menu items category
 
==== search_static_files(self) ====
 
==== url_map(self) ====
 
==== Методи класу ====
 
Вставляє нові записи у таблицю k2remainder_by_parties зі статусом 'new'.; У разі помилки скасовує транзакцію і повертає характеристика помилки.; порівняння версій
 
База даних, доступна через глобальний об'єкт K2.db.;==== get_platform() ====
Якщо тип обладнання не знайдено, повертає помилку 404
 
dict: The logging message if found, None otherwise.;==== Компоненти, які публікуються в K2 ERP повинні мати щонайменше такі атрибути ====
K2_Cloud_ERP_Python_01.png|Ілюстрація K2 ERP Python|посилання=Файл:K2_Cloud_ERP_Python_01.png
K2_Cloud_ERP_Python_01.png|Ілюстрація K2 ERP Python|посилання=Файл:K2_Cloud_ERP_Python_01.png
документація з вимогами до створення компонентів забезпечується через '''K2 ERP Python; додатково реалізовано структури пакетів, системних класів, API, компонентних класів і допоміжних JavaScript-функцій системи [[K2 Cloud ERP|K2 ERP]] виступає ключовою рисою розробників'''.; datasource_is_storage_id = [False, True]


Usage:
Приклад:


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


=== Клас K2Obj ===
</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-конфігурації
|}


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


Отримує список pub_sub_list_id з логів k2pubsub_logs.; Повертає:
</pre>
!; характеристика


str: HTML-шаблон сторінки перегляду.; Перевіряється значення ключа name у вхідних даних:
K2().component_list()


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


==== get_path_to_root(caller_file) ====
== Залежності компоненти ==


Load logging messages for the curren page from the error log file.; Example:
Метод отримує інформаційні дані звітів із бази даних і формує JSON-структуру для відображення.; це технічна документація; додатково реалізовано які працюють із Python-версією [[K2 ERP]].;[[Категорія:K2 ERP Python]]
== Клас K2LogbookTMDoc ==
!; Якщо компонента залежить від інших компонент K2 ERP, ці залежності потрібно вказати у файлі:


name #Назва компоненти.; Таблиця яка містить інформаційні дані про лідів.; self._report_id #id звіту
!;[[Категорія:Документація для розробників]]


==== Використовує клас K2Notifications для відправки повідомлень ====
{| class="wikitable" style="width:100%;"


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


Масово оновлює статуси залишків:
/languages/en/LC_MESSAGES/messages.po


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


Response: JSON-відповідь про результат збереження.; Пошук файлів з перекладами
</div>


</pre>
Додає анімацію завантаження у вказаний контейнер.; !; ├── __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>
| Завантаження перекладів
|}


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


datasource_value = ["SELECT * FROM table1", "SELECT * FROM table2"]
│ ├── templates/
Clear all logging message by user
<pre>
Отримує список активних користувачів для затвердження з таблиці k2users_for_approval
components/


Обробка k2doc_move:
=== Основні методи K2DocsCRM ===


коректну обробку часу в межах системи реалізується засобами Призначення:.; Алгоритм роботи:
'b452a5ae84f9e92e75eb0467c196fd71',
=== Основні методи K2Report ===
</pre>
</pre>
{% if error %}


==== create_system_settings() ====
!; '''Принцип.''' Компонента повинна бути самодостатньою, але не повинна ламати глобальну структуру 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>
| Додає тип звіту до групи звітів
|}


У разі успіху: JSON з повідомленням про успішну відправку (код 200)
Створити користувача на рівні бази даних:
Parameters:
datasource_keys (list): Список ключів для джерел даних.; message (str): The content of the message to be saved.;===


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


==== 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 ===
Логіка роботи:


=== Клас K2EquipmentFunction є собою підкласом K2Obj і призначений для роботи з функціональністю, пов'язаною з обладнанням у системі K2.; У разі помилки повертає повідомлення з помилкою.; Додаткові класи від яких залежить функціональні можливості компоненти.; date_to = "2023-12-31"
<pre>


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


Args:
<pre>


==== namemenu(url) ====
* [[K2 Cloud ERP|K2 ERP]]
 
K2.get_platform()
 
Виділяється doc_id із вхідних даних.; Повертає:
 
</pre>
 
Exception: If an error occurs during database query execution.;==== select_grid(self) ====
 
==== 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 ===
 
=== Клас для керування логбуком технічного обслуговування (ТО).;</pre>
 
Відображає сторінку перегляду друкованої форми.; * [[K2 Cloud ERP|K2 ERP]]
* [[K2 ERP]]
* [[K2 ERP]]
* [[Python]]
* [[Python]]
Рядок 543: Рядок 773:
* [[Документація для розробників]]
* [[Документація для розробників]]
* [[K2 Cloud ERP Javascript|K2 ERP Javascript]]
* [[K2 Cloud ERP Javascript|K2 ERP Javascript]]
* [[Розгортання системи K2 ERP Python для розробників]]
* [[Компоненти K2 ERP]]
* [[K2 CRM]]
* [[K2 Report]]
* [[K2 Production]]


Search for a yml file in the caller directories of subclasses.; The message is sent to a room identified by the current user's ID.;<pre>
<pre>
{| class="wikitable" style="width:100%;"
Якщо компоненту створює сторонній розробник, потрібно вказати інформацію про такого розробника.; !; Статус


==== Методи ====
== Клас K2EquipmentFunction ==


Витягує equipment_type_name та equipment_type_code з таблиці k2equipment_type
{| class="wikitable" style="width:100%;"


Повертає:
datasource_value = ["SELECT * FROM table1", "SELECT * FROM table2"]


* A sequence of text lines detailing the stacks of running
{| class="wikitable" style="width:100%;"


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


name (str): Name of object where the message originated.; dict: Словник з результатами запитів або помилкою.; (файл models.py)
* як має виглядати структура компоненти;
* які файли є собою обов’язковими;
* де зберігати моделі, роути, хуки й додаткові об’єкти;
* як описувати залежності;
* як оформлювати документацію для користувачів і розробників;
* які базові класи доступні в ядрі 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 %}


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).;==== Моделі які використовуються ====
!; Властивість
<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>
| Додаткова документація для розробників
|}


* The number of greenlets.; ==== createImageSliderModal(images, containerId = null) ==== showBootstrapLoader(containerId) ==== removeBootstrapLoader(containerId) ==== showUserAlert(message, type = 'light') ==== Стилі (Назва) ==
<pre>


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


Заголовок 1
{| class="wikitable" style="width:100%;"


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


Заголовок 3
!; )


Заголовок 4
</pre>


Заголовок 5
<pre>


Заголовок 6
!; Призначення
 
Звичвйний текст
 
== Ілюстрації з документа ==
 
функціонує з конфігурацією домену через K2.domain
Відповідає за обробку даних з логів.; The caller directory where the yml file was found, or None if the file was not found.; pydoc -w k2/k2obj.py, де k2/k2obj.py - шлях до файлу з корня
 
Якщо лід знайдено то створюється новий запис у таблиці k2contacts на основі даних ліда.;==== viewer() ====
 
- замовлення
Initialize self.; K2.search_yml('users')
 
Завантаження перекладів
 
str: HTML-шаблон сторінки перегляду дашборду.; У разі помилки застосовується лог помилки і повертається повідомлення з помилкою.; yml_path = K2.search_yml('users')
 
datasource_value (list): Список SQL-запитів.; date_from = "2023-01-01"
 
Основні операції:
 
def test_dashboard():


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


</pre>
</pre>


datasource_is_counterpart_id (list): Список флагів, що вказують на наявність counterpart_id.; __file__ - стандартна змінна в Python, яка містить абсолютний шлях до поточного файлу, в якому вона застосовується.;=== Клас K2ReportDesigner ===
│ ├── tests/
==== Атрибути ====
Створює слайдер зображень у контейнері або модальному вікні.; Значення
Вимикаються кнопки: add, delete, printReport.; Домен, на якому функціонує CRM, отримується з глобального об'єкта K2.domain.; the current thread and greenlet.)


==== get_path_abs(caller_file) ====
date_from,


'new' – нові залишки, отримані в поточному оновленні.; 'old' – застарілі інформаційні дані, що підлягають видаленню.; {% endblock %
Шаблони мають бути розроблені так, щоб не конфліктувати з глобальними шаблонами системи.; Призначення


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


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


==== search_yml(name_yml) ====
</pre>


Параметри:
# перевіряє наявність записів із <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%;"


Add identificators to url page
usr_perm = K2().get_user_permissions()
Повертає:
==== Властивості ====
nomenclature_data (dict) – інформаційні дані про номенклатуру:
Load a logging message by its error_id from the error log file.;<pre>


dict: A dictionary containing formatted log messages, the count of 'error' messages, and the count of 'warning' messages.; Визначення поточної мови
<pre>
 
Клас взаємодіє з базою даних, керує файлами звітів і генерує JSON-дані для подальшого використання.; |-
==== save_report_id() ====
| Відображення логбука
 
| <code>k2logbook_tm()</code>, <code>take_logbook_tm()</code>, <code>edit_logbook_tm()</code>
==== get_current_user_role_name() ====
| Відкриття списку, форми та редагування логбука
 
|-
self._name_yml_master #назва конфігураційного файлу
| Планове і позапланове ТО
| <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>
| Звіти та робота із зображеннями логбука
|}


</pre>
</pre>


{{ error }}
== Основні методи K2 ==
 
Отрмання roleid користувача
 
==== Класk2mail ====
 
<gallery mode="packed" heights="180">
 
Приклад використання:


<pre>
<pre>


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


Пошук затверджувачів:
{| class="wikitable" style="width:100%;"
 
== Генерація документації з docstring ==
Вивід списку компонент з файлу components.yml у всіх шляхах пошуку
 
==== generate_id() ====
 
керування друкованими формами
 
threads and greenlets.; Відсутні.; Приклад використання:
 
Send a logging message to the client via Socket.IO.; Фіксує зміни у базі (commit).; (каталог objects/)
 
Логіка роботи:
 
k2contacts.; Ім'я YML: 'k2doc_rows_detail'.; self._send_group_params #параметри групи
 
database:
 
show_message (bool): True - save log and show windows, False - only save_log
 
error_id (str): The ID of the error to load.; Якщо знайдено, оновлює інформаційні дані ліда (ім'я, прізвище, email) у переданому об'єкті.; Він має основну базову функціональність, що розширюється та розвивається та яка є собою у всіх класів системи
 
Успішний результат повертається у форматі JSON із ключем data.; Хуки.; (One greenlet will duplicate one thread,
 
==== get_active_lang_list() ====
 
=== Клас K2WMS ===
 
{% block content %}
 
Відображає сторінку редагування друкованої форми.; Використовуються для розширення або зміни поведінки стандартних методів системи (файл hooks.py)
 
Часовий пояс системи, визначений глобальним об'єктом K2.timezone.; Цей клас гарантує генерацію та друк звітів за допомогою API Stimulsoft.;[[index.php?title=Категорія:Документація K2]]
<pre>
<pre>
==== Атрибути класу ====
|-
Отримає вхідний JSON, що містить options із даними для перевірки.;</gallery>
| <code>k2doc_rows_detail</code>
| Створює grid для деталізації рядків документа, вимикає зайві кнопки, передає <code>row_id</code> і <code>storage_id</code>
|-
| <code>k2doc_move</code>
| Створює grid руху документа, вимикає кнопки додавання, редагування, видалення та друку
|}


=== Клас k2path ===
date_to = "2023-12-31"


__file__ -стандартна змінна в Python, яка містить абсолютний шлях до поточного файлу, в якому вона застосовується.; гарантує функціональність для створення, перегляду, редагування записів логбука ТО, роботи з параметрами завдань та обладнання, а додатково підготовки даних про запчастини.; self._off_buttons #вимкнути кнопки
K2.get_platform()


==== show_grid(self) ====
│ │ └── users.py
 
[[index.php?title=Категорія:K2 ERP]]
 
usr_perm = K2().get_user_permissions()
 
==== load_logging_message_by_id(error_id: str) ====
 
Parameters:
 
Якщо записів немає, повертає помилку 404
 
=== Клас для актуалізація залишків на основі даних з отриманих від клієнтів. ===
 
Повертає:
 
Визначення id поточної мови
 
==== search_class_prop(path_objs) ====
 
:return: A tuple containing:
 
==== Повертає ====
K2Lead.;=== Клас k2logging ===
 
=== K2UpdateRemainder ===
 
time_zone:


* <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
|}


Якщо контакт знайдено то відбувається актуалізація даних у options [‘dataField’] (name, surname, email, lead_id)
Клас наслідується від <code>K2Obj</code> і є собою батьківським класом для:


status (str): The status of the message (e.g., cls.log_error - 'ERROR', cls.log_warning - 'WARNING', cls.log_success - 'SUCCESS').; Usage:
│ ├── hooks.py


==== Властивості класу ====
<pre>


Обробка k2doc_rows_detail:
<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]]


==== _insert_new_pub_sub_nomenclature(session, nomenclature_data) ====
!;== Див.; додатково ==


==== Методи класу ====
<pre>
===


Витягує нові залишки з логів, додає їх у таблицю k2remainder_by_parties, оновлює статуси існуючих записів та видаляє застарілі залишки.; Окремо варто відзначити створення/актуалізація записів про залишки товарів і керування їх статусами (новий, стабільний, старий).; If the user is a superadmin, a default set of permissions is returned.; Абсолютний шлях до файлу, в якому виконується код.; Виклик K2.get_path_to_root(__file__).; Відображає сторінку перегляду дашборду.; Параметри:
Знайти YML-файл:
 
crm_data(route, data) - Цей метод отримує інформаційні дані із відповідних таблиць з бази даних на основі переданих параметрів для подальшого оформлення друкованої форми документів у компоненті k2CRM
</pre>
=== Клас k2trans ===
==== Основні функціональні можливості модуля ====
Переводить стабільні ('stable') в старі ('old').;=== Клас k2settings ===
 
</pre>
 
self._send_params #параметри для конфігураційного файлу
 
reports_id = ['b452a5ae84f9e92e75eb0467c196fd71', '1673a4fab757fb6c5df970fdc6ee680c',
 
Ім'я YML: 'k2doc_move'.; У разі помилки виконує відкат (rollback).;==== Приклад використання ====
 
=== K2DocsCRM ===
 
Передаються параметри: doc_id.; Raises:
 
генерація друкованих документів
 
==== compare_versions(version1, version2) ====
 
Якщо затверджувачів не знайдено, повертає помилку 404
 
==== create_names_yml(self, name_yml: str = '', name_yml_tree: str = '', ====


createImageSliderModal(images, containerId = null)
Отримати id поточного контрагента:
!; !; Видаляє анімацію завантаження з контейнера.; Методи
<pre>
<pre>
Повертає:
json_data = k2_designer.json_data_create(
Перевіряє наявність записів у таблиці k2tm_fields з parentid != '0'
|-
 
| <code>init_db()</code>
datasource_keys = ["table1_data", "table2_data"]
| Підключення <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>
| Завершення сесій користувача на рівні БД
|}


==== load_logging_messages(page_url: str) ====
K2().get_current_user()


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


Retrieve user permissions based on the URL.;==== __init__() ====
requirements-components.txt


Ініціалізація класу.;== Класи компонент ==
path_class = 'components/k2production/k2production/k2equipment'


itemName (str) – назва товару.; у всіх шляхах пошуку
!; Метод


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


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


Нічого.; Він містить методи для обробки запитів на затвердження змін у технічній документації обладнання.;<pre>
!; k2report_embed = K2ReportEmbed(reports_id)


k2log==2.0.0.2
!; характеристика
k2grid==2.0.4.1
│ ├── users/


Якщо 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':


Логіка роботи:
├── history.txt


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


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


==== Окремо варто відзначити роути і api (файл views.; центральний клас компоненти.py) ====
  │ ├── data/
 
==== Методи класу ====
 
domain:
 
У разі помилки: JSON з описом помилки (код 404 або 500)
 
=== Він взаємодіє з базою даних.; створення забезпечується через Клас K2ReportDesigner надає функціональність; додатково реалізовано редагування та перегляду звітів і дашбордів.; Окремо варто відзначити управляє файлами звітів і генерує JSON-дані для подальшого використання. ===
 
self._row_selection #вибір з рядка
 
  приклад:
 
datasource_is_counterpart_id = [True, False]
 
dict: A dictionary containing the user permissions, including 'roleid' and various permission flags
 
Команда для автоматичної генерації html файлу з документацією по док стрінгах:
 
K2.logging_message(K2.log_success, 'Operation completed successfully.'1)
 
</pre>
 
message (str): The content of the message to be sent.; See help(type(self)) for accurate signature.;=== Клас K2CRM ===
 
Нові ('new') переводить у стабільні ('stable').;=== Клас k2datasync ===
 
Отримання інформації про тип обладнання:
 
To search for a yml file named 'users.yml', call this method as follows:
 
==== dump_stacks() ====
 
Якщо контакт не знайдено то для полів name, surname, email встановлюється значення None.;==== Властивості інстансу ====
 
</pre>
 
керування лідами
 
Додавання нової номенклатури.; Для кожного запиту виконується SQL-запит та результат додається до result_dict.; Параметри (doc_id) передаються через send_params.; If no permissions are found for the user, an empty dictionary is returned.; str: HTML-шаблон сторінки редагування.; Додаткові об’єкти компоненти.; json_data_create(datasource_value, datasource_keys, datasource_is_counterpart_id, datasource_is_storage_id, period, date_from=None, date_to=None)
 
name_yml: The name of the yml file to search for (without the '.yml' extension).; {% extends template_name + '/base.html' %}
 
Returns:


=== Основні атрибути ===
<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>
| Вибір рядка
|}


create_contact() - Цей метод створює контакт на основі даних існуючого ліда.; ==== __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 ===
У компоненті має бути вказане авторство.; Метод
 
K2ReportEmbed - Компонент для вбудовування звітів у веб-додаток.; надає можливість отримувати та відображати звіти з бази даних на основі їх ідентифікаторів.
 
==== Атрибути класу ====
 
==== __init__(reports_id: List [str]) ==== get_report_data() -> Optional [List [Dict [str, Any]]] ==== Бекенд (Flask) ====
 
Створює порожній словник result_dict, який буде наповнюватись даними та парсить вхідні інформаційні дані data у форматі JSON і зберігає їх у result_dict [‘Header’].; ORM структури.; * рахунки
 
* звіти
 
* конфігурація системи CRM


<pre>
<pre>
 
!; | Вимоги до компонентів, системні класи, API, CRM, звіти, production-класи та JavaScript-утиліти
==== get_locale_id() ====
|-
 
| Який базовий клас системи?; Якщо зображення відсутні, показує повідомлення та повертає <code>null</code>.;== Клас K2Report ==
==== log_entry(error_id, status, message, name) ====
=== Приклад json_data_create() ===
 
<pre>
Returns:
 
'49952f397efff44d7ce0e5cb9aa625fb']
 
Результати запитів конвертуються у словники (row_asdict) для зручного JSON-формату.; Повертає:

Поточна версія на 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()