Made in Ukraine · Odoo 18 · 19 · 20
Premium · OPL-1
Інтеграція Odoo з M.E.Doc · Community

Медова стиковка
для Odoo

Та сама медова стиковка, яку бухгалтери знають з обліку в інших програмах, — тепер для Odoo: рахунки, акти й накладні йдуть в M.E.Doc без ручного набору. Потрібні тільки стандартні sale і account та безкоштовний l10n_ua_registration — усе працює на Odoo Community і готове до роботи одразу після встановлення. Це модуль для Odoo 18, 19 і 20, який перетворює замовлення на продаж (sale.order) і рахунки (account.move) на XML-файл, придатний для імпорту в M.E.Doc як готовий первинний документ. Під будь-який шаблон — навіть той, який ви самі налаштували у M.E.Doc: одне рішення для всіх ваших шаблонів.

01 / Навіщо

У M.E.Doc немає фіксованого переліку шаблонів.

Odoo — чудова сучасна ERP. Але український бізнес живе ще й у своїй, окремій екосистемі: M.E.Doc, електронна звітність, ЄДРПОУ, податкова.

І головне: у кожного клієнта M.E.Doc власний, довільно названий шаблон із власним набором полів. Жоден конектор, зашитий під один формат, не вгадає його наперед. Тому цей модуль не прив'язаний до жодного конкретного шаблону — він дає інструмент описати ваш шаблон один раз, після чого Odoo формує під нього файл сам.

02 / Як це працює

Чотири кроки — і кнопка в меню документа.

1 · Завантажте опис шаблону

Файл «Опис полів шаблону» у форматі xls, який генерує сам M.E.Doc. Завантажується як є, без конвертації: майстер визначає CHARCODE з самого файлу і створює шаблон разом з усіма полями.

CHARCODE — автоматично

2 · Налаштуйте відповідність

Кожне поле шаблону прив'язується до Odoo одним із чотирьох способів. Найпопулярніші теги майстер підставляє сам — з бази знань мапінгу.

4 способи

3 · Перевірте на реальному документі

«Тест мапінгу» на картці шаблону: оберіть справжнє замовлення чи рахунок і одразу побачте, яке значення дасть кожне поле — і для шапки, і для кожного рядка табличної частини. Без генерації файлу.

Тест мапінгу

4 · Створити дію вивантаження

Одна кнопка — і в меню ⚙ «Дії» на моделі-джерелі з'являється пункт «Експорт в M.E.Doc: назва шаблону». Клік одразу завантажує файл. Повторний клік оновлює дію, а не плодить дублікати.

⚙ Дії
03 / Мапінг

Чотири способи заповнити будь-яке поле.

Довільний шаблон означає довільні поля: у чужому шаблоні може не бути жодного, що один-в-один збігається з полем Odoo. Тому мапінг не обмежений вибором зі списку — механіка та сама, що й у ядрі Odoo:

Довідник рецептів Python-мапінгу

Для полів, які не мапляться ані прямим полем, ані сталим значенням, є окрема стаття: контракт змінної result, доступні у виразі змінні (record, env, datetime, relativedelta), готові рецепти й розбір типових помилок — зріз замість індексу, зріз recordset замість списку, непередбачуваний порядок набору.

Python-мапінг у шаблонах M.E.Doc: довідник рецептів — відкрита стаття, читати можна без реєстрації.

Таблична частина

Поле рядків на шаблоні вказує, яке one2many-поле моделі містить позиції документа — order_line для замовлення, invoice_line_ids для рахунку; пікер заповнює технічну назву сам.

Табличні поля мапляться так само, як поля шапки, але record у виразі — це один рядок, а не весь документ. Підтримується одна таблиця: цього вистачає переважній більшості реальних шаблонів рахунків, актів і накладних.

04 / База знань

Другий шаблон налаштовується швидше за перший.

Теги в шаблонах M.E.Doc повторюються: FIRM_NAME, FIRM_EDRPOU, SIDE_CD_K, DOCSUM, SUMPDV трапляються майже в кожному. Тому модуль їх запам'ятовує.

Щойно тест дає для поля непорожній результат без помилки, мапінг автоматично потрапляє до бази знань за назвою тега. Наступного разу майстер підставить найпопулярніший відомий варіант сам — у поставці вже є 16 таких підказок.

Поповнюється з практики

Не статичний довідник: кожен ваш успішний тест робить базу знань трохи розумнішою — під ваші моделі та ваші дані.

Самонавчання

Сталі значення — не підказуються

Свідомо: поле, значення якого ви задали руками для одного контрагента, не має тихо переїжджати в шаблон для іншого. Підказка є лише для полів і Python-коду.

Обережність за замовчуванням
05 / Файл

Помилка називає конкретне поле.

windows-1251 і конверт ZVIT

Файл формується у кодуванні, якого вимагає M.E.Doc, із правильним конвертом — без проміжних конвертацій на вашому боці.

XML · windows-1251

Символ поза кодуванням — стоп

Символ, якого немає у windows-1251, не перетворюється тихо на «?». Генерація зупиняється й називає поле та причину: зіпсутий символ у поданому документі знаходить не той, хто його формував.

Без тихої втрати

Помилка виразу — теж стоп

Поле з помилковим виразом чи Python-кодом зупиняє генерацію з чіткою вказівкою, яке саме поле винне.

Named-field errors
06 / Охоплення

Шість типів документів, два джерела.

07 / Питання

Коротко про головне.

Як завантажити рахунок з Odoo в M.E.Doc?

Відкрийте рахунок або замовлення в Odoo, у меню «Дії» оберіть «Експорт в M.E.Doc: назва шаблону» — і Odoo віддасть XML-файл. У M.E.Doc імпортуйте його як готовий первинний документ. Один раз перед цим налаштовується шаблон: завантажується згенерований M.E.Doc «Опис полів шаблону», і кожне поле зіставляється з даними Odoo.

Що краще: файловий обмін з M.E.Doc чи пряма інтеграція?

Для більшості компаній — файловий обмін, і ось чому. M.E.Doc зазвичай стоїть на комп'ютері чи сервері в офісі, а Odoo — у хмарі або в дата-центрі: пряма інтеграція потребує мережевого доступу між ними, VPN чи відкритих портів, і ламається, щойно щось змінилося на одному з боків. Файл же переноситься будь-як і не залежить від того, де що встановлено. Друге — контроль: файл можна відкрити й перевірити до імпорту, а нічого не потрапляє в M.E.Doc без відома бухгалтера. Підпис КЕП і відправка контрагенту чи до податкової все одно робляться в M.E.Doc, тож пряме з'єднання тут не економить кроків, які мають значення. Третє — шаблони: модуль формує файл під будь-який ваш шаблон M.E.Doc, навіть налаштований вами самими. І четверте — оновлення: нова версія M.E.Doc не обриває обмін, бо формат файлу визначає ваш шаблон, а не внутрішній інтерфейс програми. Пряма інтеграція має сенс, коли документів сотні на день і M.E.Doc стоїть в одній мережі з Odoo; для звичайного потоку рахунків, актів і накладних один імпорт файлу — найпростіший і найнадійніший шлях.

Що таке медова стиковка і чи є вона для Odoo?

Так бухгалтери називають обробку, що передає первинні документи з облікової програми в M.E.Doc. Для Odoo це модуль l10n_ua_medoc: він формує з рахунків і замовлень Odoo XML для імпорту в M.E.Doc під будь-який ваш шаблон.

Чи потрібен окремий модуль під кожен шаблон M.E.Doc?

Ні. M.E.Doc не має фіксованого переліку шаблонів — у кожного клієнта свій, довільно названий. Тому шаблон описується даними всередині Odoo: ви завантажуєте згенерований M.E.Doc опис полів, зіставляєте кожне поле з даними Odoo і зберігаєте. Код під конкретний шаблон писати не треба.

Які документи Odoo можна вивантажити в M.E.Doc?

Замовлення на продаж (sale.order) і рахунки та інвойси (account.move). Перелік джерел свідомо обмежений цими двома моделями, щоб не пропонувати вибір довільної моделі Odoo.

Які типи документів M.E.Doc підтримуються?

Шість: Рахунок, Акт, Видаткова накладна, Товаро-транспортна накладна, Специфікація та Інші документи. Тип задається кодом SDOCTYPE у шаблоні.

Звідки взяти опис полів шаблону?

Його генерує сам M.E.Doc для будь-якого налаштованого у вас шаблону — файл «Опис полів шаблону» у форматі xls. В Odoo він завантажується як є, без конвертації: майстер сам визначає CHARCODE з файлу і створює шаблон разом з усіма його полями.

Що робити, якщо поле шаблону не має прямого відповідника в Odoo?

Поле заповнюється одним із чотирьох способів: значенням поля Odoo за шляхом через крапку, сталим значенням, Python-кодом або порядковим номером рядка. Python-код виконується через safe_eval і закриває випадки, коли значення треба зібрати з кількох полів чи перетворити. Готові рецепти, доступні змінні та розбір типових помилок зібрані у відкритій статті «Python-мапінг у шаблонах M.E.Doc: довідник рецептів» за адресою https://odoo.golodaeva.org.ua/knowledge/article/39.

Чи можна мати кілька варіантів одного шаблону?

Так. Той самий CHARCODE можна завести кілька разів — наприклад, під різних контрагентів або договори, з різними сталими значеннями. Кожен варіант дає власний іменований пункт у меню дій.

Чи надсилає модуль документи контрагенту або до податкової?

Ні. Odoo формує файл і на цьому зупиняється. Імпорт, підписання та відправка виконуються в M.E.Doc.

Чи працює модуль на Odoo Community?

Так. Залежності — стандартні sale і account та безкоштовний l10n_ua_registration, з якого беруться реквізити компанії. Odoo Enterprise для цього модуля не потрібен. На сервері має бути бібліотека xlrd; якщо її немає, майстер приймає CSV.

08 / За цифрами

Коротко — у числах.

6Типів документів
Рахунок · Акт · ВН · ТТН · Специфікація
4Способи заповнити
поле шаблону
16Підказок мапінгу
у поставці
141Тестів
у складі модуля
MD

Подружити два світи — без модуля під кожен шаблон.

Встановіть модуль з Odoo App Store: завантажте опис свого шаблону, налаштуйте відповідність полів — і дія вивантаження з'явиться просто в меню документа.

Модуль розроблено незалежно. Він не пов'язаний із розробником M.E.Doc, не схвалений, не сертифікований і не перевірений ним. «M.E.Doc» — торговельна марка її правовласника, і згадується тут виключно для опису сумісності.