Made in Ukraine · Odoo 18 & 19
Premium · OPL-1
Модуль · Документообіг

Медова стиковка:
Odoo ↔ M.E.Doc

Медова стиковка — модуль для Odoo 18 і 19, який перетворює замовлення на продаж (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 / Питання

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

Чи потрібен окремий модуль під кожен шаблон 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» — торговельна марка її правовласника, і згадується тут виключно для опису сумісності.