Как я могу автоматизировать импорт файла Excel в пользовательский модуль Odoo 10? - PullRequest
0 голосов
/ 08 сентября 2018

Цель:

Я использую Odoo 10 как систему только для внешнего вида для удаленного персонала.

Я хочу:

  1. регулярно экспортировать файл (excel), содержащий полный набор данных из основной производственной базы данных (SQL Server),
  2. удалить все записи в Odoo и
  3. импортировать новые данные.

Набор данных составляет около + 400K записей.

Я знаю

  • как я могу экспортировать данные из SQL и сделать файл доступным для Odoo.

Я не знаю

  • как удалить все записи из модуля (если не считать переустановка)
  • как я могу запускать автоматизированные задачи для импорта новых данных в одночасье (низкое рабочее время)

Полагаю, я могу добиться этого с помощью встроенной функции запланированных действий в Odoo, но я нахожусь в тупике, как на самом деле использовать ее и написать необходимый код на Python. (Я знаю VBA и сейчас изучаю Python.)

Я также открыт для предложений, если есть лучший способ сделать.

1 Ответ

0 голосов
/ 08 сентября 2018

Будет лучше, если вы напрямую подключитесь из Odoo к вашему MSSQL-серверу, чтобы запросить данные, чтобы вставить их в таблицу моделей Odoo. Удалить все записи таблицы модели Odoo так же просто, как использовать этот оператор:

self.env['custom.model'].search([]).unlink()

Вы можете поместить этот код среди операторов импорта / создания записей в метод модели, который может быть выполнен в задаче Odoo Cron для планирования и выполнения. Вы можете найти меню Odoo Crons в меню Settings/Technical/Automation/Scheduled Actions при активации режима разработчика Odoo.

Также есть несколько модулей, позволяющих вам напрямую подключаться к внешнему источнику БД, например, MSSQL Server, чтобы вы могли напрямую взаимодействовать с вашей основной БД.

https://github.com/OCA/server-tools/tree/10.0/base_external_dbsource

https://github.com/OCA/server-tools/tree/10.0/base_external_dbsource_mssql

Конечно, все это потребует немного глубоких знаний о внутренностях Odoo, чтобы это можно было запустить.

...