У цьому блозі ми пройдемо крок за кроком, як підключити ERPNext до локального сервера Flask. Це означає, що коли в ERPNext відбудеться важлива подія, наприклад, створення нового замовлення чи клієнта, ці дані можуть бути автоматично відправлені на сервер Flask для подальшої обробки. Оскільки сервер Flask працює локально на комп'ютері користувача, ми також покажемо, як використовувати інструмент ngrok, щоб тимчасово зробити сервер доступним через інтернет.
1. Вступ
Інтеграція ERPNext з локальним сервером дозволяє користувачу покращити свою ERP-систему шляхом обробки даних у реальному часі та налаштування робочих процесів під потреби користувача. Наприклад, коли в ERPNext відбувається подія, така як подання рахунку або створення нового клієнта, вебхук може надіслати дані на локальний сервер користувача. Звідти користувач може легко реєструвати дані, перетворювати їх або запускати інші дії на основі отриманої інформації.
2. Налаштування вебхука ERPNext
2.1. Доступ до конфігурації вебхука
- Увійдіть в ERPNext.
- Перейдіть до “Webhook” через панель пошуку.
2.2. Створення або редагування вебхука
- Створення нового вебхука:
- Натисніть “New”, щоб створити новий вебхук.
2. Налаштуйте вебхук:
- Webhook URL: Спочатку користувач може вказати тимчасову URL-адресу. Згодом її оновлять на публічну URL-адресу, яку надасть ngrok.
- HTTP Method: Виберіть POST для надсилання даних.
- Request Structure: Змініть це поле на JSON. Це забезпечить правильне відправлення даних у форматі JSON, що необхідно для коректного парсингу на сервері.
- JSON Request Body: Визначте JSON-запит, використовуючи шаблони Jinja2.
Приклад:
{
"invoice_number": "{{ doc.name }}",
"customer": "{{ doc.customer }}",
"total_amount": "{{ doc.grand_total }}"
}
Попередній перегляд додатку ERPNext
Попередній перегляд додатку ERPNext
- Збережіть вебхук:
- Збережіть конфігурацію та переконайтеся, що вона активна.
3. Налаштування локального сервера Flask
3.1. Встановлення Flask
- Відкрийте термінал і встановіть Flask за допомогою pip:
pip install flask
3.2. Створення додатку Flask
- Створіть Python файл (наприклад: app.py):
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/', methods=['POST'])
def handle_webhook():
print("Received a POST request")
if request.is_json:
data = request.get_json()
print(f"Received data: {data}")
return jsonify({"message": "Webhook received successfully"}), 200
else:
print("Received unsupported media type")
return jsonify({"error": "Unsupported Media Type"}), 415
if __name__ == '__main__':
app.run(port=5000)
Пояснення коду
Цей код Flask налаштовує простий веб-сервер, який слухає POST-запити за адресою кореневого URL (/).
- Коли отримується POST-запит, сервер перевіряє, чи містить запит дані у форматі JSON.
- Якщо запит містить JSON, сервер витягує ці дані, виводить їх на консоль і повертає повідомлення про успіх з кодом статусу 200.
- Якщо запит не в JSON-форматі, сервер виводить повідомлення про помилку і повертає помилку 415 (Unsupported Media Type).
2. Запустіть додаток Flask:
python app.py
Сервер користувача запуститься за адресою http://localhost:5000.
Відкриття локального сервера за допомогою ngrok
4.1. Завантаження та встановлення ngrok
- Завантажте ngrok:
- Перейдіть на сторінку завантаження ngrok (https://ngrok.com/download) і завантажте версію для вашої операційної системи.
2.
Розпакування завантаженого файлу:
- Розпакуйте файл і перемістіть його до каталогу вашого проєкту або в інший каталог, який ви оберете.
- Якщо ви вирішите зберегти його в іншому каталозі, вам потрібно буде перейти до цього каталогу у вашому терміналі перед запуском команд ngrok.
4.2. Налаштування ngrok
1. Аутентифікація в ngrok:
- Відкрийте термінал і виконайте команду
ngrok config add-authtoken USER_AUTHTOKEN
- Щоб отримати authtoken, вам слід зареєструватися для безкоштовного акаунту на сайті ngrok (https://ngrok.com). Після реєстрації увійдіть в акаунт, і у вас буде доступний унікальний authtoken на панелі управління. Цей токен необхідний для зв'язування установки ngrok з вашим акаунтом, що дозволяє створювати безпечні тунелі та отримати доступ до додаткових функцій.
- Запуск ngrok:
- У терміналі перейдіть до каталогу, в якому знаходиться ngrok, іngrok http 5000
```
- Після виконання команди ngrok створить тунель і надасть вам публічну URL-адресу для переспрямування. Скопіюйте цю URL-адресу
Тестування вебхука
- Оновіть URL вебхука ERPNext:
- Встановіть URL вебхука в ERPNext на публічну URL-адресу, надану ngrok (ту URL-адресу, яку ви щойно скопіювали).
2. Викликайте подію в ERPNext:
- Подайте рахунок за продаж або виконайте дію, яку ви налаштували для вашого вебхука.
3. Перевірте журнали сервера Flask:
- Перевірте, чи реєструє сервер Flask отримані дані, як показано нижче.
Висновок
У цьому блозі ми розглянули, як інтегрувати ERPNext з локальним сервером третьої сторони за допомогою ngrok. Ви налаштували ERPNext для відправлення даних вебхука на локальний сервер, який потім було відкрито в інтернеті за допомогою ngrok. Виконуючи ці кроки, ви можете розширити функціональність ERPNext, дозволяючи обробку даних у реальному часі та налаштування власних робочих процесів безпосередньо через ваш локальний сервер.
Автор Chidambaram Azhagu
Про нас
Компанія була заснована у 2016 році з метою стати правильним вибором для клієнтів, талантів і постачальників рішень. Ми розробляємо, проектуємо та інтегруємо програмне забезпечення для вирішення викликів динамічного бізнес-середовища, що відповідає потребам наших клієнтів. Сьогодні ми є однією з компаній, що швидко розвиваються в індустрії програмного забезпечення, яка надає послуги з розробки індивідуальних додатків та технічних рішень. Наша команда прагне забезпечити високу якість роботи для наших клієнтів, надаючи рішення та послуги «під ключ» за доступними цінами.
Вебсайт:https://aalamsoft.com/
Слідкуйте за нами,
LinkedIn : https://www.linkedin.com/company/aalam-info-solution-llp
Instagram :https://instagram.com/aalaminfo?igshid=YmMyMTA2M2Y=
Facebook : https://www.facebook.com/Aalam-Info-Solutions-LLP-775574966147738/
Facebook : https://www.facebook.com/Aalam-Info-Solutions-LLP-775574966147738/
Перекладено з: Fetching Data from ERPNext to 3rd-Party Server Using ngrok