Migrace zakázkových modulů na Odoo 18

V následujících řádcích doufám, že naleznete užitečného pomocníka při migraci vašeho addonu na verzi 18. Naše addony jsou převážně zaměřené na legislativu a týkají se hlavně kódu v Pythonu a XML. Na migraci JavaScriptu jsem nenarazil, takže zde nenajdete žádné tipy ohledně změn v této oblasti.

upgrade_code od Odoo

Odoo představilo nového pomocníka, který aktuálně pomáhá hlavně s migrací XML z "tree" na "list". Z terminálu stačí spustit tento příkaz:

odoo-bin upgrade_code —addons-path ./path/to/addons_dir

(Možná bude potřeba přidat potřebné parametry v závislosti na tom, zda máte Odoo konfigurační soubor. Pokud ne, přidejte další parametry, které běžně uvádíte při spouštění.)

Jak hromadně upravit manifesty

Nahrazení pomocí regulárních výrazů je také velký pomocník. Většina IDE to umožňuje řízeně ve složce, kde chceme vyhledat řetězec:

('|\")(version)('|\"):(.*?),

nahradíme za:

$1$2$3:'18.0.0',

Výsledek můžete bezpečně otestovat například na stránce https://regex101.com/ 

Tím končí ta lehká část, ale už jsme ve fázi, kdy při spuštění Odoo 18 můžeme zkusit nainstalovat naše vlastní doplňky a případně spustit testy. Z přibližně 30+ modulů, které jsem migroval, téměř každý vyžadoval nějakou úpravu – od přejmenovaných polí přes odstraněné metody a pole až po změněné pohledy (views) a podobně.

Níže se pokusím odkázat na věci, na které jsem během migrace narazil. Doufám, že vám to usnadní hledání a zpříjemní proces migrace.

Obecné změny

V modelu metoda _name_search(...) již není, existuje name_search(...), ale blíže původní logice je _search_display_name(...).

Pokud jste někde pracovali s SQL, skládali dotazy jako řetězce a dědili od tříd, pravděpodobně narazíte na to, že předávání parametrů již nefunguje stejně jako dříve. O vše se nyní stará obálka SQL, a místo několika parametrů z metody obdržíte jen jeden objekt třídy SQL, který má vlastnosti (např. from_clause, where_clause). Součástí where_clause jsou kromě samotného SQL dotazu už i parametry. Parametry v SQL se již neřídí pořadím, ale názvem, což je přehlednější. Pokud chcete vědět více, toto chování je dobře vidět na každém účetním reportu, který něco počítá.

U fields group_operator je nově aggregator.

Testy

Prošly podle mě správnou úpravou, i když to vyžaduje pár ručních zásahů. Výsledkem je však výrazně přehlednější metoda setUpClass(), ve které se nyní odehrává celý setup, nově bez parametru chart_template_ref. A tak z následujícího:

@classmethod
def setUpClass(cls, chart_template_ref='cz_systee'):
        super(TestABOBatchPaymentGeneration, cls).setUpClass(chart_template_ref=chart_template_ref)

upravíte na následující 

@classmethod
@AccountSalesReportCommon.setup_chart_template('cz_systee')
	def setUpClass(cls):
	# tady se nově nastaví i celá company a vše co potřebujete a dříve se různě rozdělovalo 

Pozor, testy jsou pravděpodobně spuštěny s uživatelem s nižším oprávněním, a pro mnoho testů je třeba přidat práva, například:

cls.env.user.groups_id |= cls.env.ref('account.group_validate_bank_account')

Potřebujete inicializovat více společností 

cls.company_data_2 = cls.setup_other_company()

account.edi.common

Tento modul prošel asi největší změnou ze všech, které jsem migroval. Původní implementace se změnila, metody a jejich rozhraní jsou mnohdy nové.

Doporučuji prohlédnout ostatní implementace Odoo. Určitě se zaměřte na metody _find_value(...) a _retrieve_line_vals(...), které budete potřebovat pro řádky dokladu. Odoo zde bohužel kombinuje dva přístupy k XML objektu, takže buďte opatrní.

_compute_ubl_cii_format(...) zanikla, místo ní je _get_ubl_cii_formats(...)

Pole ubl_cii_format změněno na invoice_edi_format

account.move

Pole made_sequence_hole změněno na made_sequence_gap

Pole to_check změněno na checked

account.account

Pole company_id je nově kolekce company_ids

account.payment

Pole ref změněno na memo

account.payment.register

Určitě vás bude zajímat metoda _get_communication(...)

Změnila se práce s batches (nově neexistuje metoda _get_batches() přistupuje se rovnou k batches)

asset

asset_model je nově kolekce asset_model_ids

reversal_move_id je nově kolekce reversal_move_ids

Cron

Neexistují parametry numbercall, doall

ir.property

Zřejmě zanikl bez náhrady, nebo jsem ho nenašel. 
Více naleznete  https://github.com/odoo/odoo/commit/de302c2d36305c0d7562572a30587641eabfe914#diff-1db47cdbb145c8ab07b89c2288e239b8d2588881cf5917fcde02adcfcf87cb40R620

Narazili jste na další zajímavé postřehy, které by se mohly hodit ostatním? Neváhejte nám je poslat, rádi článek rozšíříme.

Migrace zakázkových modulů na Odoo 18
Stanislav Kurinec 8. října 2024
Sdílet tento příspěvek
Přihlásit se Zanechat komentář
QR Platba na fakturu pomocí Odoo Studio