最近學習《Odoo快速入門與實戰》,書中示例主要是基於 Odoo11,雖然書中也說可以在12中使用,但實踐中,基於13,12的安裝都出錯。
網上尋找升級模塊的資料,匯總如下:
1、如何升級到odoo13,模塊從odoo12到13的開發對比及注意要點(來源百度快照 https://www.sunpop.cn/):
總結了 odoo12 --> odoo13 的部份不同,分為 1 模型,2 視圖,3 前端開發, 4 業務邏輯三大部份:
Tip: 可通過指令操作找出需要改的后端代碼:
grep -nri 'oldname\|sudo([^\)]\+)\|api.multi\|api.returns\|api.one\|api.cr\|api.model_cr\|12.0\|compute=' $MODULE
1 模型
1.1 __manifest__ 改版本號如 13.19.11.30 1.2 移除的@api @api.multi, @api.returns, @api.one, @api.cr, @api.model_cr 1.3 chromeheadless 即將取代 wkhtmltopdf 1.4 多用 active_ids 取代 active_id 1.5 compute變化 多用 compute 取代 onchange compute_sudo 默認是True 增加 @api.depends_context 翻譯的 key 是 lang,這個常用 延遲 recompute(),flush()后才存儲 compute設置關聯字段值時,要注意關聯字段已有賦值 recompute會改生在 create, write 和 onchange 更好的 recompute 觸發器 1.6 延遲update,write()不馬上更改,要flush() 1.7 @api.create_multi 批量創建,多用提升性能 1.8 debug模式下log可見到更多的權限信息 1.9 增加 with_user(user) 直接處理用戶切換, 判斷值 env.su 1.10 審計處理從 track,track_sequence 改為 tracking 1.11 ir.actions.act_window 中移除 multi,替代為binding_view_types 1.12 小數點處理去除dp.get_precision 1.13 selections 類型的 field 只能支持 string 1.14 binary字段類型默認是存到附件模型中 1.15 sql執行注意增加 cr.commit 1.16 多公司處理,depends_context(company), with_company() 1.17 cli指令增加參數 upgrade-path 2 視圖 2.1 tree views 的匯總增加 avg 2.2 xml定義移除view_type 2.3 views 增加參數 import, optional, expand 2.4 tree中<groupby>中可放<button>標簽 3 前端 3.1 jQuery 3.x 3.2 Chartjs 3.3 bootstrap 4.x 3.4 font awesome 4.x 要改為直接使用名稱,如area-chart 改 chart-area 3.5 rpc 傳參要用 context 3.6 multi-company widget 4 業務邏輯 4.1 財務 account.invoice 改為 account.move account.invoice.line 改為 account.move.line account.invoice.tax 改為 account.move.lin account.voucher 改為 account.move account.voucher.line 改為 account.move.line 4.2 基礎 res.partner的客戶/供應商由 customer_rank/ supplier_rank處理
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
記錄odoo11到odoo12的一些變化,供參考:https://www.jianshu.com/p/8e1de5f25ef4
表單模型變化
model | odoo11 | odoo12 |
---|---|---|
計量單位 | product.uom | uom.uom |
產品變體 | product.attribute.line | product.template.attribute.line |
貿易條款 | stock.incoterms | account.incoterms |
框架變化
- odoo12會檢查對象定義,沒有寫_description會在日志中顯示WARNING
- form視圖不再支持不帶for的label標簽,可用<p></p>替代
- search視圖中的filter標簽不允許沒有name屬性