odoo-forge-bundle 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1190) hide show
  1. package/index.js +6 -0
  2. package/manifest.json +13 -0
  3. package/package.json +16 -0
  4. package/payload/README.md +4 -0
  5. package/payload/config/product.json +11 -0
  6. package/payload/platforms/claude/hooks.template.json +15 -0
  7. package/payload/platforms/claude/mcp.template.json +9 -0
  8. package/payload/platforms/claude/plugin.template.json +8 -0
  9. package/payload/platforms/claude/settings.template.json +3 -0
  10. package/payload/platforms/codex/mcp.template.json +12 -0
  11. package/payload/platforms/codex/plugin.template.json +19 -0
  12. package/payload/skills/company-rules/SKILL.md +244 -0
  13. package/payload/skills/company-rules/agents/openai.yaml +6 -0
  14. package/payload/skills/company-rules/assets/icon-large.svg +1 -0
  15. package/payload/skills/company-rules/assets/icon-small.svg +5 -0
  16. package/payload/skills/company-rules/references/1 /343/200/212/350/256/276/350/256/241/345/274/200/345/267/245/346/212/245/345/221/212/343/200/213/347/274/226/345/210/266/350/247/204/345/256/2329920ZD1811A-2018.md" +128 -0
  17. package/payload/skills/company-rules/references/1 /350/256/276/350/256/241/345/274/200/345/267/245/346/212/245/345/221/212TBED-9920-201A-2018.md" +15 -0
  18. package/payload/skills/company-rules/references/10 /344/270/223/344/270/232/350/256/276/350/256/241/344/273/273/345/212/241/345/247/224/346/211/230/344/271/246TBED-9920-222A-2018.md" +16 -0
  19. package/payload/skills/company-rules/references/11 /347/272/240/346/255/243/357/274/210/351/242/204/351/230/262/357/274/211/346/216/252/346/226/275/350/241/250TBQM-9920-201A-2009.md" +12 -0
  20. package/payload/skills/company-rules/references/11 /350/256/276/350/256/241/346/226/207/344/273/266/345/217/212/346/212/200/346/234/257/346/226/207/344/273/266/347/274/226/345/217/267/350/247/204/345/256/2329920ZD1822A-2018.md" +411 -0
  21. package/payload/skills/company-rules/references/11-1/351/231/204/344/273/266/357/274/232/346/226/260/345/245/245/345/244/251/347/204/266/346/260/224/350/202/241/344/273/275/346/234/211/351/231/220/345/205/254/345/217/270/346/227/240/345/275/242/350/265/204/344/272/247/347/256/241/347/220/206/345/212/236/346/263/225.md +56 -0
  22. package/payload/skills/company-rules/references/12 /350/256/276/350/256/241/350/201/224/347/273/234/345/215/225TBED-4002-221A-2024.md" +16 -0
  23. package/payload/skills/company-rules/references/12 /351/241/271/347/233/256/350/256/276/345/244/207/346/235/220/346/226/231/350/257/267/350/264/255/346/216/247/345/210/266/347/250/213/345/272/217XMZX KZCL004A-2023.md" +244 -0
  24. package/payload/skills/company-rules/references/13 /345/237/271/350/256/255/350/256/260/345/275/225/350/241/250TBHR-9920-235A-2013.md" +36 -0
  25. package/payload/skills/company-rules/references/14 /345/244/226/345/207/272/345/237/271/350/256/255/347/224/263/350/257/267/350/241/250XDNYQM12A-B01-2025.md" +16 -0
  26. package/payload/skills/company-rules/references/14 /350/264/250/351/207/217/351/243/216/351/231/251/347/256/241/347/220/206/350/247/204/345/256/232 ENN NG 9920TEI003A-2025.md" +227 -0
  27. package/payload/skills/company-rules/references/15 /345/272/224/350/201/230/347/231/273/350/256/260/350/241/250XDNYQM12A-B02-2025.md" +31 -0
  28. package/payload/skills/company-rules/references/16 /351/235/242/350/257/225/346/265/213/350/257/204/345/215/225XDNYQM12A-B03-2025.md" +34 -0
  29. package/payload/skills/company-rules/references/17 /345/214/226/345/267/245/350/256/276/350/256/241/344/270/255/345/277/203/344/270/223/344/270/232/344/274/232/347/255/276/350/246/201/346/261/202/345/222/214/350/214/203/345/233/264/350/247/204/345/256/232ENN NG 4002 ENG001A-2023.md" +97 -0
  30. package/payload/skills/company-rules/references/17 /350/247/222/350/211/262/350/257/264/346/230/216/344/271/246XDNYQM12A-B04-2025.md" +175 -0
  31. package/payload/skills/company-rules/references/17 /350/264/250/351/207/217/347/256/241/347/220/206/350/247/204/345/256/232 ENN NG 9920TEI015A-2025.md" +218 -0
  32. package/payload/skills/company-rules/references/18 /345/212/236/345/205/254/347/224/250/345/223/201/351/242/206/347/224/250/347/231/273/350/256/260/350/241/250XDNYQM12A-B05-2025.md" +37 -0
  33. package/payload/skills/company-rules/references/18 /345/215/260/347/253/240/347/256/241/347/220/206/350/247/204/345/256/232 ENN NG 9920ASC011A-2024.md" +212 -0
  34. package/payload/skills/company-rules/references/19 /350/256/276/350/256/241/344/273/273/345/212/241/351/200/232/347/237/245/345/215/225XDNYQM12A-B06-2025.md" +35 -0
  35. package/payload/skills/company-rules/references/2 /350/256/276/350/256/241/350/257/204/345/256/241/347/256/241/347/220/206/350/247/204/345/256/2329920ZD1812A-2018.md" +139 -0
  36. package/payload/skills/company-rules/references/2 /350/256/276/350/256/241/350/257/204/345/256/241/350/256/260/345/275/225TBED-9920-202A-2015.md" +11 -0
  37. package/payload/skills/company-rules/references/20 /345/233/272/345/256/232/350/265/204/344/272/247/347/256/241/347/220/206/345/210/266/345/272/246 ENN NG 9920FIN004A-2024.md" +277 -0
  38. package/payload/skills/company-rules/references/20 /346/264/276/350/275/246/345/215/225ENN NG 4002ASC003A-2025-B03.md" +10 -0
  39. package/payload/skills/company-rules/references/21 /345/221/230/345/267/245/345/237/271/350/256/255/347/256/241/347/220/206/345/212/236/346/263/2259920ZD0313A-2013.md" +142 -0
  40. package/payload/skills/company-rules/references/23 /350/256/276/350/256/241/350/264/250/351/207/217/346/216/247/345/210/266/347/256/241/347/220/206/345/212/236/346/263/225ENN NG 4002ENG001A-2025.md" +116 -0
  41. package/payload/skills/company-rules/references/24 /345/267/245/347/250/213/350/256/276/350/256/241/350/264/250/351/207/217/347/272/242/351/273/204/347/272/277/347/256/241/347/220/206/345/212/236/346/263/225 ENN NG 4002/357/274/217ENG003A-2025.md" +100 -0
  42. package/payload/skills/company-rules/references/26 /346/212/200/346/234/257/346/241/243/346/241/210/347/256/241/347/220/206/345/212/236/346/263/225ENN NG 4002TEI002A-2025.md" +346 -0
  43. package/payload/skills/company-rules/references/27 /345/220/210/345/220/214/347/256/241/347/220/206/345/212/236/346/263/225ENN NG 4002LEG001A-2025.md" +151 -0
  44. package/payload/skills/company-rules/references/28 /350/256/276/350/256/241/346/226/207/344/273/266/346/231/222/345/217/221/347/256/241/347/220/206/345/212/236/346/263/225 ENN NG 4002MFG001A-2025.md" +109 -0
  45. package/payload/skills/company-rules/references/29 /346/212/225/346/240/207/347/256/241/347/220/206/347/273/206/345/210/231ENN NG 4002MKT001A-2024.md" +161 -0
  46. package/payload/skills/company-rules/references/3 /350/256/276/350/256/241/346/226/207/344/273/266/346/240/274/345/274/217/350/247/204/345/256/2329920ZD1821A-2018.md" +371 -0
  47. package/payload/skills/company-rules/references/3 /350/256/276/350/256/241/350/241/245/345/205/205/343/200/201/345/217/230/346/233/264/351/200/232/347/237/245/345/215/225TBED-9920-208A-2018.md" +19 -0
  48. package/payload/skills/company-rules/references/3 /350/256/276/350/256/241/351/252/214/350/257/201/350/247/204/345/256/2329920ZD1813A-2018.md" +97 -0
  49. package/payload/skills/company-rules/references/30 /350/256/276/350/256/241/347/273/217/347/220/206/345/210/206/347/272/247/347/256/241/347/220/206/345/212/236/346/263/225ENN NG 4002HR001A-2025.md" +139 -0
  50. package/payload/skills/company-rules/references/31 /350/256/276/350/256/241/351/241/271/347/233/256/350/277/233/345/272/246/347/256/241/347/220/206/345/212/236/346/263/225ENN NG 4003ENG001A-2024.md" +153 -0
  51. package/payload/skills/company-rules/references/32 EPC/351/241/271/347/233/256/350/256/276/350/256/241/347/256/241/347/220/206/345/212/236/346/263/225ENN NG 4003ENG004A-2024.md" +295 -0
  52. package/payload/skills/company-rules/references/4 /346/226/260/345/234/260/350/203/275/346/272/220/345/267/245/347/250/213/346/212/200/346/234/257/346/234/211/351/231/220/345/205/254/345/217/270/347/237/263/345/256/266/345/272/204/350/203/275/346/272/220/345/214/226/345/267/245/346/212/200/346/234/257/345/210/206/345/205/254/345/217/270/345/233/276/344/271/246/347/256/241/347/220/206/345/212/236/346/263/225ENN NG 4002TEI001A-2025.md" +88 -0
  53. package/payload/skills/company-rules/references/4 /350/256/276/350/256/241/344/273/273/345/212/241/351/200/232/347/237/245/344/271/246TBED-9920-209A-2011.md" +14 -0
  54. package/payload/skills/company-rules/references/4 /350/256/276/350/256/241/346/210/220/345/223/201/350/264/250/351/207/217/350/257/204/345/256/232/350/247/204/345/256/2329920ZD1815A-2018.md" +205 -0
  55. package/payload/skills/company-rules/references/5 /350/256/276/350/256/241/346/235/241/344/273/266/347/256/241/347/220/206/350/247/204/345/256/2329920ZD1816A-2018.md" +70 -0
  56. package/payload/skills/company-rules/references/5 /350/256/276/350/256/241/350/277/233/345/272/246/350/256/241/345/210/222/350/241/250TBED-9920-211A-2011.md" +14 -0
  57. package/payload/skills/company-rules/references/6 /345/267/245/347/250/213/350/256/276/350/256/241/350/265/204/346/240/274/347/256/241/347/220/206/345/212/236/346/263/2259920ZD1817A-2015.md" +169 -0
  58. package/payload/skills/company-rules/references/6 /350/256/241/347/256/227/344/271/246TBED-9920-212A-2011.md" +30 -0
  59. package/payload/skills/company-rules/references/7 /350/256/276/350/256/241/344/272/244/345/272/225/350/256/260/345/275/225TBED-9920-213A-2015.md" +16 -0
  60. package/payload/skills/company-rules/references/7 /351/241/271/347/233/256/350/256/276/350/256/241/347/273/204/347/273/207/345/222/214/346/212/200/346/234/257/346/216/245/345/217/243/350/247/204/345/256/2329920ZD1818A-2018.md" +138 -0
  61. package/payload/skills/company-rules/references/8 /350/256/276/350/256/241/346/234/215/345/212/241/347/256/241/347/220/206/350/247/204/345/256/2329920ZD1819A-2015.md" +98 -0
  62. package/payload/skills/company-rules/references/8 /350/256/276/350/256/241/357/274/210/346/226/207/346/234/254/357/274/211/346/240/241/345/256/241/350/256/260/345/275/225TBED-9920-214A-2018.md" +13 -0
  63. package/payload/skills/company-rules/references/9 /350/256/276/350/256/241/346/226/207/344/273/266/347/255/276/347/275/262/350/247/204/345/256/2329920ZD1820A-2018.md" +133 -0
  64. package/payload/skills/company-rules/references/9 /350/256/276/350/256/241/350/276/223/345/205/245/350/257/204/345/256/241/350/241/250TBED-9920-215A-2020.md" +10 -0
  65. package/payload/skills/company-rules/references/ENN NG 4002/357/274/217TEI001A-2025-B01/346/240/207/345/207/206/345/233/276/344/271/246/350/256/242/350/264/255/347/224/263/350/257/267/345/215/225.md" +30 -0
  66. package/payload/skills/company-rules/references/ENN NG 4002/357/274/217TEI001A-2025-B02/345/233/276/344/271/246/345/200/237/351/230/205/347/231/273/350/256/260/350/241/250.md" +10 -0
  67. package/payload/skills/company-rules/references/ENN NG 4002/357/274/217TEI001A-2025-B03/345/233/276/344/271/246/345/200/237/351/230/205/346/230/216/347/273/206/350/241/250.md" +11 -0
  68. package/payload/skills/company-rules/references/ENN NG 4002/357/274/217TEI001A-2025-L01~03/345/233/276/344/271/246/347/256/241/347/220/206/346/265/201/347/250/213 /357/274/2103/344/270/252/357/274/211 PDF.md" +26 -0
  69. package/payload/skills/company-rules/references//345/256/242/346/210/267/346/273/241/346/204/217/345/272/246/350/260/203/346/237/245/345/217/212/345/233/236/350/256/277/345/267/245/345/205/267/350/241/250/345/215/225.md +184 -0
  70. package/payload/skills/company-rules/references//345/256/242/346/210/267/346/273/241/346/204/217/345/272/246/350/260/203/346/237/245/345/217/212/345/233/236/350/256/277/347/256/241/347/220/206/350/247/204/345/256/232 ENN NG 9920MKT002A-2025.md" +225 -0
  71. package/payload/skills/company-rules/references//345/267/245/347/250/213/350/264/250/351/207/217/347/246/201/344/273/244/347/256/241/347/220/206/350/247/204/345/256/232 ENN NG 9920TEI012A-2025.md" +84 -0
  72. package/payload/skills/company-rules/references//346/227/240/345/275/242/350/265/204/344/272/247/347/256/241/347/220/206/345/212/236/346/263/225 ENN NG FIN014B-2024.md" +110 -0
  73. package/payload/skills/company-rules/references//347/207/203/346/260/224/345/214/226/345/267/245/350/256/276/350/256/241/344/270/255/345/277/203/350/264/250/351/207/217/345/210/206/346/211/213/345/206/214XDNYQM12A-2025.md +1102 -0
  74. package/payload/skills/company-rules/references//350/264/250/351/207/217/344/272/213/346/225/205/347/256/241/347/220/206/350/247/204/345/256/232ENN NG 9920TEI014A-2025.md" +188 -0
  75. package/payload/skills/company-rules/references//351/231/204/344/273/2661 /345/220/204/344/270/223/344/270/232/344/274/232/347/255/276/346/204/217/350/247/201/346/261/207/346/200/273/350/241/250.md" +14 -0
  76. package/payload/skills/company-rules/references//351/231/204/344/273/2661 /345/267/245/347/250/213/350/264/250/351/207/217/347/246/201/344/273/244/350/277/235/350/247/204/350/241/214/344/270/272/350/256/244/345/256/232/346/212/245/345/221/212.docx.md" +9 -0
  77. package/payload/skills/company-rules/references//351/231/204/344/273/2661/357/274/232/345/211/215/346/234/237/345/267/245/344/275/234/343/200/201/345/210/235/346/255/245/350/256/276/350/256/241/347/255/211/350/256/276/350/256/241/346/226/207/344/273/266/347/274/226/345/210/266/346/240/274/345/274/217.md +73 -0
  78. package/payload/skills/company-rules/references//351/231/204/344/273/2661/357/274/232/350/264/250/351/207/217/344/272/213/346/225/205/345/277/253/346/212/245.md +14 -0
  79. package/payload/skills/company-rules/references//351/231/204/344/273/2662 /345/267/245/347/250/213/350/264/250/351/207/217/347/246/201/344/273/244/350/277/235/350/247/204/350/241/214/344/270/272/347/273/237/350/256/241/345/217/260/350/264/246.docx.md" +9 -0
  80. package/payload/skills/company-rules/references//351/231/204/344/273/2662/357/274/232/346/266/210/351/230/262/350/256/276/350/256/241/346/226/207/344/273/266/343/200/201/346/266/210/351/230/262/350/256/276/350/256/241/344/270/223/347/257/207/347/274/226/345/210/266/346/240/274/345/274/217.md +103 -0
  81. package/payload/skills/company-rules/references//351/231/204/344/273/2662/357/274/232/350/264/250/351/207/217/344/272/213/346/225/205/350/260/203/346/237/245/346/212/245/345/221/212.md +71 -0
  82. package/payload/skills/company-rules/references//351/231/204/344/273/2663 /345/267/245/347/250/213/350/264/250/351/207/217/347/246/201/344/273/244/346/235/241/346/254/276/345/210/206/350/247/243/345/217/212/347/275/232/345/210/231.md" +80 -0
  83. package/payload/skills/company-rules/references//351/231/204/344/273/2663/357/274/232/345/256/211/345/205/250/350/256/276/346/226/275/350/256/276/350/256/241/344/270/223/347/257/207/357/274/210/346/210/226HAZOP/345/210/206/346/236/220/357/274/211/347/274/226/345/210/266/346/240/274/345/274/217.md +48 -0
  84. package/payload/skills/company-rules/references//351/231/204/344/273/2663/357/274/232/350/264/250/351/207/217/344/272/213/346/225/205/344/272/213/344/273/266/345/217/260/350/264/246.md +37 -0
  85. package/payload/skills/company-rules/references//351/231/204/344/273/2664/357/274/232/350/201/214/344/270/232/347/227/205/351/230/262/346/212/244/350/256/276/346/226/275/350/256/276/350/256/241/344/270/223/347/257/207/347/274/226/345/210/266/346/240/274/345/274/217/357/274/210/347/234/201/347/272/247/357/274/211.md +44 -0
  86. package/payload/skills/company-rules/references//351/231/204/344/273/2665/357/274/232/350/212/202/350/203/275/346/212/245/345/221/212/347/274/226/345/210/266/346/240/274/345/274/217.md +52 -0
  87. package/payload/skills/company-rules/references//351/231/204/344/273/2666/357/274/232/346/212/200/346/234/257/350/247/204/346/240/274/344/271/246/347/274/226/345/210/266/346/240/274/345/274/217.md +60 -0
  88. package/payload/skills/company-rules/references//351/231/204/344/273/2667/357/274/232/345/255/227/344/275/223/347/244/272/344/276/213.md +223 -0
  89. package/payload/skills/company-rules/scripts/convert.py +295 -0
  90. package/payload/skills/company-rules/scripts/summarize.py +144 -0
  91. package/payload/skills/dev/SKILL.md +310 -0
  92. package/payload/skills/dev/agents/openai.yaml +6 -0
  93. package/payload/skills/dev/assets/icon-large.svg +1 -0
  94. package/payload/skills/dev/assets/icon-small.svg +5 -0
  95. package/payload/skills/dev/references/repo-conventions.md +104 -0
  96. package/payload/skills/discovery/SKILL.md +360 -0
  97. package/payload/skills/discovery/agents/openai.yaml +6 -0
  98. package/payload/skills/discovery/assets/icon-large.svg +1 -0
  99. package/payload/skills/discovery/assets/icon-small.svg +5 -0
  100. package/payload/skills/discovery/references/output-template.md +264 -0
  101. package/payload/skills/discovery/references/question-dimensions.md +375 -0
  102. package/payload/skills/global-context/SKILL.md +341 -0
  103. package/payload/skills/global-context/agents/openai.yaml +6 -0
  104. package/payload/skills/global-context/assets/icon-large.svg +1 -0
  105. package/payload/skills/global-context/assets/icon-small.svg +5 -0
  106. package/payload/skills/global-context/references/document-specs.md +300 -0
  107. package/payload/skills/industry-practice/SKILL.md +273 -0
  108. package/payload/skills/industry-practice/agents/openai.yaml +6 -0
  109. package/payload/skills/industry-practice/assets/icon-large.svg +1 -0
  110. package/payload/skills/industry-practice/assets/icon-small.svg +5 -0
  111. package/payload/skills/industry-practice/references/review-checklist.md +63 -0
  112. package/payload/skills/module-report/SKILL.md +214 -0
  113. package/payload/skills/module-report/agents/openai.yaml +6 -0
  114. package/payload/skills/module-report/assets/icon-large.svg +1 -0
  115. package/payload/skills/module-report/assets/icon-small.svg +5 -0
  116. package/payload/skills/module-research/SKILL.md +151 -0
  117. package/payload/skills/module-research/agents/openai.yaml +6 -0
  118. package/payload/skills/module-research/assets/icon-large.svg +1 -0
  119. package/payload/skills/module-research/assets/icon-small.svg +5 -0
  120. package/payload/skills/odoo18-docs/SKILL.md +97 -0
  121. package/payload/skills/odoo18-docs/agents/openai.yaml +6 -0
  122. package/payload/skills/odoo18-docs/assets/icon-large.svg +1 -0
  123. package/payload/skills/odoo18-docs/assets/icon-small.svg +5 -0
  124. package/payload/skills/odoo18-docs/references/catalog/administration-catalog.md +44 -0
  125. package/payload/skills/odoo18-docs/references/catalog/applications-catalog.md +949 -0
  126. package/payload/skills/odoo18-docs/references/catalog/contributing-catalog.md +18 -0
  127. package/payload/skills/odoo18-docs/references/catalog/developer-catalog.md +162 -0
  128. package/payload/skills/odoo18-docs/references/docs/administration/hosting.md +115 -0
  129. package/payload/skills/odoo18-docs/references/docs/administration/mobile.md +69 -0
  130. package/payload/skills/odoo18-docs/references/docs/administration/neutralized_database.md +39 -0
  131. package/payload/skills/odoo18-docs/references/docs/administration/odoo_accounts.md +105 -0
  132. package/payload/skills/odoo18-docs/references/docs/administration/odoo_online.md +198 -0
  133. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/advanced/containers.md +235 -0
  134. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/advanced/frequent_technical_questions.md +60 -0
  135. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/advanced/submodules.md +109 -0
  136. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/advanced.md +15 -0
  137. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/getting_started/branches.md +543 -0
  138. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/getting_started/builds.md +121 -0
  139. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/getting_started/create.md +192 -0
  140. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/getting_started/first_module.md +518 -0
  141. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/getting_started/online-editor.md +196 -0
  142. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/getting_started/settings.md +332 -0
  143. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/getting_started/status.md +15 -0
  144. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/getting_started.md +19 -0
  145. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/overview/introduction.md +14 -0
  146. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh/overview.md +13 -0
  147. package/payload/skills/odoo18-docs/references/docs/administration/odoo_sh.md +15 -0
  148. package/payload/skills/odoo18-docs/references/docs/administration/on_premise/community_to_enterprise.md +106 -0
  149. package/payload/skills/odoo18-docs/references/docs/administration/on_premise/deploy.md +901 -0
  150. package/payload/skills/odoo18-docs/references/docs/administration/on_premise/email_gateway.md +51 -0
  151. package/payload/skills/odoo18-docs/references/docs/administration/on_premise/geo_ip.md +65 -0
  152. package/payload/skills/odoo18-docs/references/docs/administration/on_premise/packages.md +166 -0
  153. package/payload/skills/odoo18-docs/references/docs/administration/on_premise/source.md +487 -0
  154. package/payload/skills/odoo18-docs/references/docs/administration/on_premise/update.md +146 -0
  155. package/payload/skills/odoo18-docs/references/docs/administration/on_premise.md +114 -0
  156. package/payload/skills/odoo18-docs/references/docs/administration/supported_versions.md +110 -0
  157. package/payload/skills/odoo18-docs/references/docs/administration/upgrade.md +436 -0
  158. package/payload/skills/odoo18-docs/references/docs/applications/essentials/activities.md +336 -0
  159. package/payload/skills/odoo18-docs/references/docs/applications/essentials/contacts/merge.md +80 -0
  160. package/payload/skills/odoo18-docs/references/docs/applications/essentials/contacts.md +248 -0
  161. package/payload/skills/odoo18-docs/references/docs/applications/essentials/export_import_data.md +532 -0
  162. package/payload/skills/odoo18-docs/references/docs/applications/essentials/html_editor.md +295 -0
  163. package/payload/skills/odoo18-docs/references/docs/applications/essentials/in_app_purchase.md +185 -0
  164. package/payload/skills/odoo18-docs/references/docs/applications/essentials/keyboard_shortcuts.md +89 -0
  165. package/payload/skills/odoo18-docs/references/docs/applications/essentials/reporting.md +185 -0
  166. package/payload/skills/odoo18-docs/references/docs/applications/essentials/search.md +275 -0
  167. package/payload/skills/odoo18-docs/references/docs/applications/essentials.md +18 -0
  168. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/bank/bank_synchronization/enablebanking.md +36 -0
  169. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/bank/bank_synchronization/ponto.md +103 -0
  170. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/bank/bank_synchronization/saltedge.md +96 -0
  171. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/bank/bank_synchronization.md +197 -0
  172. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/bank/foreign_currency.md +115 -0
  173. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/bank/internal_transfers.md +73 -0
  174. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/bank/loans.md +70 -0
  175. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/bank/reconciliation.md +138 -0
  176. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/bank/reconciliation_models.md +121 -0
  177. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/bank/transactions.md +136 -0
  178. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/bank.md +194 -0
  179. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/cash_discounts.md +176 -0
  180. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/cash_rounding.md +42 -0
  181. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/credit_notes.md +119 -0
  182. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/customer_addresses.md +46 -0
  183. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/deferred_revenues.md +187 -0
  184. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/argentina.md +55 -0
  185. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/austria.md +53 -0
  186. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/basque_country.md +51 -0
  187. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/belgium.md +54 -0
  188. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/brazil.md +54 -0
  189. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/chile.md +52 -0
  190. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/colombia.md +52 -0
  191. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/croatia.md +51 -0
  192. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/denmark.md +48 -0
  193. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/ecuador.md +51 -0
  194. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/estonia.md +48 -0
  195. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/finland.md +48 -0
  196. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/france.md +51 -0
  197. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/germany.md +48 -0
  198. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/hungary.md +47 -0
  199. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/ireland.md +47 -0
  200. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/italy.md +51 -0
  201. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/latvia.md +46 -0
  202. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/lithuania.md +47 -0
  203. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/luxembourg.md +48 -0
  204. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/mexico.md +58 -0
  205. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/netherlands.md +47 -0
  206. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/norway.md +45 -0
  207. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/peru.md +56 -0
  208. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/poland.md +46 -0
  209. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/portugal.md +49 -0
  210. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/romania.md +55 -0
  211. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/slovenia.md +46 -0
  212. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/spain.md +51 -0
  213. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing/uruguay.md +58 -0
  214. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/electronic_invoicing.md +294 -0
  215. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/epc_qr_code.md +62 -0
  216. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/incoterms.md +59 -0
  217. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/overview.md +154 -0
  218. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/payment_terms.md +185 -0
  219. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/sequence.md +68 -0
  220. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/snailmail.md +55 -0
  221. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices/terms_conditions.md +42 -0
  222. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/customer_invoices.md +231 -0
  223. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/get_started/avg_price_valuation.md +433 -0
  224. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/get_started/chart_of_accounts.md +189 -0
  225. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/get_started/cheat_sheet.md +252 -0
  226. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/get_started/consolidation.md +182 -0
  227. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/get_started/multi_currency.md +157 -0
  228. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/get_started/tax_units.md +70 -0
  229. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/get_started.md +189 -0
  230. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/payments/batch.md +69 -0
  231. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/payments/batch_sdd.md +126 -0
  232. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/payments/checks.md +126 -0
  233. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/payments/follow_up.md +154 -0
  234. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/payments/forecast.md +49 -0
  235. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/payments/online/install_portal_patch.md +58 -0
  236. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/payments/online.md +50 -0
  237. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/payments/pay_checks.md +59 -0
  238. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/payments/pay_sepa.md +87 -0
  239. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/payments/trusted_accounts.md +63 -0
  240. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/payments.md +375 -0
  241. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/reporting/analytic_accounting.md +138 -0
  242. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/reporting/budget.md +167 -0
  243. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/reporting/customize.md +308 -0
  244. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/reporting/data_inalterability.md +115 -0
  245. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/reporting/intrastat.md +189 -0
  246. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/reporting/silverfin.md +69 -0
  247. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/reporting/tax_carryover.md +42 -0
  248. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/reporting/tax_returns.md +114 -0
  249. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/reporting/year_end.md +114 -0
  250. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/reporting.md +138 -0
  251. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/taxes/B2B_B2C.md +182 -0
  252. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/taxes/avatax/avalara_portal.md +252 -0
  253. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/taxes/avatax/avatax_use.md +164 -0
  254. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/taxes/avatax.md +423 -0
  255. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/taxes/cash_basis.md +118 -0
  256. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/taxes/eu_distance_selling.md +66 -0
  257. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/taxes/fiscal_positions.md +116 -0
  258. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/taxes/retention.md +44 -0
  259. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/taxes/vat_verification.md +44 -0
  260. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/taxes.md +336 -0
  261. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/vendor_bills/assets.md +244 -0
  262. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/vendor_bills/deferred_expenses.md +187 -0
  263. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/vendor_bills/invoice_digitization.md +98 -0
  264. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/vendor_bills/sequence.md +68 -0
  265. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting/vendor_bills.md +116 -0
  266. package/payload/skills/odoo18-docs/references/docs/applications/finance/accounting.md +243 -0
  267. package/payload/skills/odoo18-docs/references/docs/applications/finance/expenses/approve_expenses.md +118 -0
  268. package/payload/skills/odoo18-docs/references/docs/applications/finance/expenses/expense_reports.md +131 -0
  269. package/payload/skills/odoo18-docs/references/docs/applications/finance/expenses/log_expenses.md +228 -0
  270. package/payload/skills/odoo18-docs/references/docs/applications/finance/expenses/post_expenses.md +77 -0
  271. package/payload/skills/odoo18-docs/references/docs/applications/finance/expenses/reimburse.md +140 -0
  272. package/payload/skills/odoo18-docs/references/docs/applications/finance/expenses/reinvoice_expenses.md +150 -0
  273. package/payload/skills/odoo18-docs/references/docs/applications/finance/expenses.md +105 -0
  274. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/argentina.md +1164 -0
  275. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/australia.md +498 -0
  276. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/austria.md +126 -0
  277. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/belgium.md +615 -0
  278. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/brazil.md +574 -0
  279. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/canada.md +305 -0
  280. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/chile.md +1211 -0
  281. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/colombia.md +480 -0
  282. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/denmark.md +83 -0
  283. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/ecuador.md +760 -0
  284. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/egypt.md +234 -0
  285. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/employment_hero.md +78 -0
  286. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/france.md +629 -0
  287. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/germany.md +330 -0
  288. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/hong_kong.md +89 -0
  289. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/india.md +702 -0
  290. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/indonesia.md +174 -0
  291. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/italy.md +726 -0
  292. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/jordan.md +250 -0
  293. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/kenya.md +361 -0
  294. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/luxembourg.md +100 -0
  295. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/malaysia.md +225 -0
  296. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/mexico.md +1078 -0
  297. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/netherlands.md +28 -0
  298. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/new_zealand.md +18 -0
  299. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/peru.md +1009 -0
  300. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/philippines.md +184 -0
  301. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/romania.md +165 -0
  302. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/saudi_arabia.md +136 -0
  303. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/singapore.md +66 -0
  304. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/spain.md +201 -0
  305. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/switzerland.md +144 -0
  306. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/thailand.md +158 -0
  307. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/united_arab_emirates.md +203 -0
  308. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/united_kingdom.md +389 -0
  309. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/united_states.md +738 -0
  310. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/uruguay.md +375 -0
  311. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations/vietnam.md +263 -0
  312. package/payload/skills/odoo18-docs/references/docs/applications/finance/fiscal_localizations.md +192 -0
  313. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/adyen.md +159 -0
  314. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/amazon_payment_services.md +46 -0
  315. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/asiapay.md +52 -0
  316. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/authorize.md +162 -0
  317. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/buckaroo.md +39 -0
  318. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/demo.md +40 -0
  319. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/flutterwave.md +46 -0
  320. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/mercado_pago.md +42 -0
  321. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/mollie.md +33 -0
  322. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/nuvei.md +88 -0
  323. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/paypal.md +81 -0
  324. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/razorpay.md +56 -0
  325. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/stripe.md +119 -0
  326. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/wire_transfer.md +57 -0
  327. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/worldline.md +68 -0
  328. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers/xendit.md +57 -0
  329. package/payload/skills/odoo18-docs/references/docs/applications/finance/payment_providers.md +459 -0
  330. package/payload/skills/odoo18-docs/references/docs/applications/finance.md +15 -0
  331. package/payload/skills/odoo18-docs/references/docs/applications/general/apps_modules.md +90 -0
  332. package/payload/skills/odoo18-docs/references/docs/applications/general/companies/digest_emails.md +259 -0
  333. package/payload/skills/odoo18-docs/references/docs/applications/general/companies/email_template.md +288 -0
  334. package/payload/skills/odoo18-docs/references/docs/applications/general/companies.md +251 -0
  335. package/payload/skills/odoo18-docs/references/docs/applications/general/developer_mode.md +68 -0
  336. package/payload/skills/odoo18-docs/references/docs/applications/general/email_communication/azure_oauth.md +285 -0
  337. package/payload/skills/odoo18-docs/references/docs/applications/general/email_communication/email_domain.md +152 -0
  338. package/payload/skills/odoo18-docs/references/docs/applications/general/email_communication/email_servers_inbound.md +350 -0
  339. package/payload/skills/odoo18-docs/references/docs/applications/general/email_communication/email_servers_outbound.md +326 -0
  340. package/payload/skills/odoo18-docs/references/docs/applications/general/email_communication/faq.md +369 -0
  341. package/payload/skills/odoo18-docs/references/docs/applications/general/email_communication/google_oauth.md +210 -0
  342. package/payload/skills/odoo18-docs/references/docs/applications/general/email_communication/mailjet_api.md +185 -0
  343. package/payload/skills/odoo18-docs/references/docs/applications/general/email_communication.md +111 -0
  344. package/payload/skills/odoo18-docs/references/docs/applications/general/integrations/barcodelookup.md +41 -0
  345. package/payload/skills/odoo18-docs/references/docs/applications/general/integrations/geolocation.md +43 -0
  346. package/payload/skills/odoo18-docs/references/docs/applications/general/integrations/google_translate.md +121 -0
  347. package/payload/skills/odoo18-docs/references/docs/applications/general/integrations/mail_plugins/gmail.md +159 -0
  348. package/payload/skills/odoo18-docs/references/docs/applications/general/integrations/mail_plugins/outlook.md +154 -0
  349. package/payload/skills/odoo18-docs/references/docs/applications/general/integrations/mail_plugins.md +58 -0
  350. package/payload/skills/odoo18-docs/references/docs/applications/general/integrations/unsplash.md +34 -0
  351. package/payload/skills/odoo18-docs/references/docs/applications/general/integrations.md +15 -0
  352. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/connect.md +141 -0
  353. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/devices/camera.md +83 -0
  354. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/devices/footswitch.md +54 -0
  355. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/devices/measurement_tool.md +92 -0
  356. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/devices/printer.md +481 -0
  357. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/devices/scale.md +81 -0
  358. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/devices/screen.md +110 -0
  359. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/devices.md +27 -0
  360. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/iot_advanced/https_certificate_iot.md +160 -0
  361. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/iot_advanced/ssh_connect.md +39 -0
  362. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/iot_advanced/updating_iot.md +91 -0
  363. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/iot_advanced.md +14 -0
  364. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/iot_box.md +94 -0
  365. package/payload/skills/odoo18-docs/references/docs/applications/general/iot/windows_iot.md +171 -0
  366. package/payload/skills/odoo18-docs/references/docs/applications/general/iot.md +89 -0
  367. package/payload/skills/odoo18-docs/references/docs/applications/general/multi_company.md +131 -0
  368. package/payload/skills/odoo18-docs/references/docs/applications/general/users/2fa.md +125 -0
  369. package/payload/skills/odoo18-docs/references/docs/applications/general/users/access_rights.md +187 -0
  370. package/payload/skills/odoo18-docs/references/docs/applications/general/users/azure.md +178 -0
  371. package/payload/skills/odoo18-docs/references/docs/applications/general/users/facebook.md +130 -0
  372. package/payload/skills/odoo18-docs/references/docs/applications/general/users/google.md +163 -0
  373. package/payload/skills/odoo18-docs/references/docs/applications/general/users/language.md +50 -0
  374. package/payload/skills/odoo18-docs/references/docs/applications/general/users/ldap.md +48 -0
  375. package/payload/skills/odoo18-docs/references/docs/applications/general/users/portal.md +168 -0
  376. package/payload/skills/odoo18-docs/references/docs/applications/general/users.md +235 -0
  377. package/payload/skills/odoo18-docs/references/docs/applications/general.md +18 -0
  378. package/payload/skills/odoo18-docs/references/docs/applications/hr/appraisals/appraisal_analysis.md +117 -0
  379. package/payload/skills/odoo18-docs/references/docs/applications/hr/appraisals/goals.md +87 -0
  380. package/payload/skills/odoo18-docs/references/docs/applications/hr/appraisals/new_appraisals.md +275 -0
  381. package/payload/skills/odoo18-docs/references/docs/applications/hr/appraisals/skills_evolution.md +165 -0
  382. package/payload/skills/odoo18-docs/references/docs/applications/hr/appraisals.md +182 -0
  383. package/payload/skills/odoo18-docs/references/docs/applications/hr/attendances/check_in_check_out.md +90 -0
  384. package/payload/skills/odoo18-docs/references/docs/applications/hr/attendances/hardware.md +107 -0
  385. package/payload/skills/odoo18-docs/references/docs/applications/hr/attendances/kiosks.md +185 -0
  386. package/payload/skills/odoo18-docs/references/docs/applications/hr/attendances.md +303 -0
  387. package/payload/skills/odoo18-docs/references/docs/applications/hr/employees/certifications.md +118 -0
  388. package/payload/skills/odoo18-docs/references/docs/applications/hr/employees/departments.md +150 -0
  389. package/payload/skills/odoo18-docs/references/docs/applications/hr/employees/equipment.md +86 -0
  390. package/payload/skills/odoo18-docs/references/docs/applications/hr/employees/new_employee.md +532 -0
  391. package/payload/skills/odoo18-docs/references/docs/applications/hr/employees/offboarding.md +106 -0
  392. package/payload/skills/odoo18-docs/references/docs/applications/hr/employees/retention_report.md +106 -0
  393. package/payload/skills/odoo18-docs/references/docs/applications/hr/employees.md +22 -0
  394. package/payload/skills/odoo18-docs/references/docs/applications/hr/fleet/accidents.md +275 -0
  395. package/payload/skills/odoo18-docs/references/docs/applications/hr/fleet/models.md +198 -0
  396. package/payload/skills/odoo18-docs/references/docs/applications/hr/fleet/new_vehicle.md +326 -0
  397. package/payload/skills/odoo18-docs/references/docs/applications/hr/fleet/service.md +509 -0
  398. package/payload/skills/odoo18-docs/references/docs/applications/hr/fleet.md +94 -0
  399. package/payload/skills/odoo18-docs/references/docs/applications/hr/frontdesk/visitors.md +162 -0
  400. package/payload/skills/odoo18-docs/references/docs/applications/hr/frontdesk.md +223 -0
  401. package/payload/skills/odoo18-docs/references/docs/applications/hr/lunch/management.md +189 -0
  402. package/payload/skills/odoo18-docs/references/docs/applications/hr/lunch/orders.md +220 -0
  403. package/payload/skills/odoo18-docs/references/docs/applications/hr/lunch/products.md +65 -0
  404. package/payload/skills/odoo18-docs/references/docs/applications/hr/lunch/user-accounts.md +104 -0
  405. package/payload/skills/odoo18-docs/references/docs/applications/hr/lunch/vendors.md +160 -0
  406. package/payload/skills/odoo18-docs/references/docs/applications/hr/lunch.md +130 -0
  407. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/contracts.md +295 -0
  408. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/payroll_localizations/australia.md +858 -0
  409. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/payroll_localizations/belgium.md +3024 -0
  410. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/payroll_localizations/hong_kong.md +433 -0
  411. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/payroll_localizations/jordan.md +125 -0
  412. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/payroll_localizations/united_arab_emirates.md +401 -0
  413. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/payroll_localizations.md +60 -0
  414. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/payslips.md +453 -0
  415. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/reporting.md +226 -0
  416. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/salary_attachment.md +66 -0
  417. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/salary_attachments.md +155 -0
  418. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/work_entries.md +332 -0
  419. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll/work_entry_analysis.md +82 -0
  420. package/payload/skills/odoo18-docs/references/docs/applications/hr/payroll.md +912 -0
  421. package/payload/skills/odoo18-docs/references/docs/applications/hr/recruitment/add-new-applicants.md +167 -0
  422. package/payload/skills/odoo18-docs/references/docs/applications/hr/recruitment/new_job.md +139 -0
  423. package/payload/skills/odoo18-docs/references/docs/applications/hr/recruitment/offer_job_positions.md +160 -0
  424. package/payload/skills/odoo18-docs/references/docs/applications/hr/recruitment/recruitment-flow.md +228 -0
  425. package/payload/skills/odoo18-docs/references/docs/applications/hr/recruitment/recruitment_analysis.md +102 -0
  426. package/payload/skills/odoo18-docs/references/docs/applications/hr/recruitment/refuse_applicant.md +144 -0
  427. package/payload/skills/odoo18-docs/references/docs/applications/hr/recruitment/schedule_interviews.md +319 -0
  428. package/payload/skills/odoo18-docs/references/docs/applications/hr/recruitment/source_analysis.md +86 -0
  429. package/payload/skills/odoo18-docs/references/docs/applications/hr/recruitment/team_performance.md +96 -0
  430. package/payload/skills/odoo18-docs/references/docs/applications/hr/recruitment/time_in_stage.md +81 -0
  431. package/payload/skills/odoo18-docs/references/docs/applications/hr/recruitment.md +387 -0
  432. package/payload/skills/odoo18-docs/references/docs/applications/hr/referrals/alerts.md +62 -0
  433. package/payload/skills/odoo18-docs/references/docs/applications/hr/referrals/points.md +74 -0
  434. package/payload/skills/odoo18-docs/references/docs/applications/hr/referrals/reporting.md +89 -0
  435. package/payload/skills/odoo18-docs/references/docs/applications/hr/referrals/rewards.md +89 -0
  436. package/payload/skills/odoo18-docs/references/docs/applications/hr/referrals/share_jobs.md +161 -0
  437. package/payload/skills/odoo18-docs/references/docs/applications/hr/referrals.md +266 -0
  438. package/payload/skills/odoo18-docs/references/docs/applications/hr/time_off/allocations.md +176 -0
  439. package/payload/skills/odoo18-docs/references/docs/applications/hr/time_off/management.md +151 -0
  440. package/payload/skills/odoo18-docs/references/docs/applications/hr/time_off/my_time.md +114 -0
  441. package/payload/skills/odoo18-docs/references/docs/applications/hr/time_off/request_time_off.md +74 -0
  442. package/payload/skills/odoo18-docs/references/docs/applications/hr/time_off.md +585 -0
  443. package/payload/skills/odoo18-docs/references/docs/applications/hr.md +21 -0
  444. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode/operations/adjustments.md +185 -0
  445. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode/operations/barcode_nomenclature.md +240 -0
  446. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode/operations/gs1_nomenclature.md +226 -0
  447. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode/operations/gs1_usage.md +235 -0
  448. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode/operations/process_transfers.md +58 -0
  449. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode/operations/receipts_deliveries.md +203 -0
  450. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode/operations/transfers_scratch.md +222 -0
  451. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode/operations.md +20 -0
  452. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode/setup/device_troubleshooting.md +206 -0
  453. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode/setup/hardware.md +162 -0
  454. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode/setup/software.md +100 -0
  455. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode/setup.md +16 -0
  456. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/barcode.md +25 -0
  457. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/configure/package.md +210 -0
  458. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/configure/packaging.md +184 -0
  459. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/configure/type.md +339 -0
  460. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/configure/uom.md +167 -0
  461. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/configure.md +169 -0
  462. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/inventory_valuation/inventory_valuation_config.md +484 -0
  463. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/inventory_valuation/landed_costs.md +167 -0
  464. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/inventory_valuation/using_inventory_valuation.md +176 -0
  465. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/inventory_valuation/valuation_by_lots.md +204 -0
  466. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/inventory_valuation.md +17 -0
  467. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/product_tracking/expiration_dates.md +254 -0
  468. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/product_tracking/lots.md +405 -0
  469. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/product_tracking/reassign.md +90 -0
  470. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/product_tracking/serial_numbers.md +373 -0
  471. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management/product_tracking.md +109 -0
  472. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/product_management.md +15 -0
  473. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/cross_dock.md +94 -0
  474. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/delivery_three_steps.md +119 -0
  475. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/dropshipping.md +86 -0
  476. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/owned_stock.md +123 -0
  477. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.md +96 -0
  478. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/receipts_delivery_one_step.md +144 -0
  479. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/receipts_delivery_two_steps.md +224 -0
  480. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/receipts_three_steps.md +111 -0
  481. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/stock_warehouses.md +232 -0
  482. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.md +173 -0
  483. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/use_routes.md +336 -0
  484. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations.md +162 -0
  485. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/picking_methods/batch.md +219 -0
  486. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/picking_methods/cluster.md +167 -0
  487. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/picking_methods/wave.md +135 -0
  488. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/picking_methods.md +15 -0
  489. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/removal_strategies/closest_location.md +100 -0
  490. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/removal_strategies/fefo.md +128 -0
  491. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/removal_strategies/fifo.md +99 -0
  492. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/removal_strategies/least_packages.md +75 -0
  493. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/removal_strategies/lifo.md +69 -0
  494. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/removal_strategies.md +180 -0
  495. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/reservation_methods/at_confirmation.md +92 -0
  496. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/reservation_methods/before_scheduled_date.md +154 -0
  497. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/reservation_methods/manually.md +141 -0
  498. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/reservation_methods.md +112 -0
  499. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/bpost.md +107 -0
  500. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/cancel.md +52 -0
  501. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/dhl_credentials.md +130 -0
  502. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/dispatch.md +258 -0
  503. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/envia_shipping.md +287 -0
  504. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/fedex.md +169 -0
  505. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/invoicing.md +123 -0
  506. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/label_type.md +73 -0
  507. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/labels.md +163 -0
  508. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/multipack.md +118 -0
  509. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/new_delivery_method.md +195 -0
  510. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/print_on_validation.md +327 -0
  511. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.md +307 -0
  512. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/starshipit_shipping.md +235 -0
  513. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/third_party_shipper.md +339 -0
  514. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/ups_credentials.md +205 -0
  515. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/zebra.md +234 -0
  516. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration.md +89 -0
  517. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/shipping_receiving.md +17 -0
  518. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products.md +341 -0
  519. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/cycle_counts.md +124 -0
  520. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/product_catalog.md +109 -0
  521. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/scrap_inventory.md +118 -0
  522. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/use_locations.md +147 -0
  523. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouses.md +77 -0
  524. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management.md +140 -0
  525. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/replenishment/lead_times.md +376 -0
  526. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/replenishment/mto.md +142 -0
  527. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/replenishment/reordering_rules.md +552 -0
  528. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/replenishment/report.md +140 -0
  529. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/replenishment/resupply_warehouses.md +170 -0
  530. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/replenishment.md +117 -0
  531. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/reporting/aging.md +223 -0
  532. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/reporting/forecast.md +163 -0
  533. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/reporting/locations.md +159 -0
  534. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/reporting/moves_history.md +102 -0
  535. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/reporting/stock.md +137 -0
  536. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage/reporting.md +17 -0
  537. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory/warehouses_storage.md +15 -0
  538. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/inventory.md +24 -0
  539. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/maintenance/add_new_equipment.md +94 -0
  540. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/maintenance/maintenance_calendar.md +373 -0
  541. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/maintenance/maintenance_requests.md +108 -0
  542. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/maintenance/maintenance_setup.md +240 -0
  543. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/maintenance.md +26 -0
  544. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/advanced_configuration/kit_shipping.md +110 -0
  545. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/advanced_configuration/product_variants.md +190 -0
  546. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/advanced_configuration/sub_assemblies.md +203 -0
  547. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/advanced_configuration/using_work_centers.md +283 -0
  548. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/advanced_configuration/work_order_dependencies.md +118 -0
  549. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/advanced_configuration.md +17 -0
  550. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/basic_setup/bill_configuration.md +257 -0
  551. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/basic_setup/configure_manufacturing_product.md +100 -0
  552. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/basic_setup/mo_costs.md +231 -0
  553. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/basic_setup/one_step_manufacturing.md +157 -0
  554. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/basic_setup/three_step_manufacturing.md +191 -0
  555. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/basic_setup/two_step_manufacturing.md +176 -0
  556. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/basic_setup.md +18 -0
  557. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/reporting/allocation.md +132 -0
  558. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/reporting/oee.md +163 -0
  559. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/reporting/production_analysis.md +164 -0
  560. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/reporting.md +14 -0
  561. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/shop_floor/shop_floor_overview.md +256 -0
  562. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/shop_floor/shop_floor_tracking.md +120 -0
  563. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/shop_floor.md +14 -0
  564. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/subcontracting/basic_subcontracting_lead_times.md +102 -0
  565. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/subcontracting/dropship_subcontracting_lead_times.md +191 -0
  566. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/subcontracting/resupply_subcontracting_lead_times.md +161 -0
  567. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic.md +195 -0
  568. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_dropship.md +256 -0
  569. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_resupply.md +270 -0
  570. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/subcontracting.md +135 -0
  571. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/workflows/byproducts.md +77 -0
  572. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/workflows/continuous_improvement.md +241 -0
  573. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/workflows/manufacture_lots_serials.md +136 -0
  574. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/workflows/manufacturing_backorders.md +133 -0
  575. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/workflows/scrap_manufacturing.md +95 -0
  576. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/workflows/split_merge.md +84 -0
  577. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/workflows/unbuild_orders.md +92 -0
  578. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/workflows/use_mps.md +269 -0
  579. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/workflows/work_center_time_off.md +112 -0
  580. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing/workflows.md +21 -0
  581. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/manufacturing.md +29 -0
  582. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/plm/manage_changes/eco_type.md +140 -0
  583. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/plm/manage_changes/engineering_change_orders.md +331 -0
  584. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/plm/manage_changes/version_control.md +168 -0
  585. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/plm/manage_changes.md +14 -0
  586. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/plm/management/approvals.md +103 -0
  587. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/plm/management.md +12 -0
  588. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/plm.md +23 -0
  589. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/advanced/analyze.md +147 -0
  590. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/advanced/edi.md +109 -0
  591. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/advanced/procurement_expenses_report.md +128 -0
  592. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/advanced/vendor_costs_report.md +107 -0
  593. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/advanced.md +16 -0
  594. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/manage_deals/blanket_orders.md +185 -0
  595. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/manage_deals/calls_for_tenders.md +248 -0
  596. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/manage_deals/control_bills.md +158 -0
  597. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/manage_deals/manage.md +237 -0
  598. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/manage_deals/purchase_templates.md +81 -0
  599. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/manage_deals/rfq.md +213 -0
  600. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/manage_deals.md +18 -0
  601. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/products/pricelist.md +253 -0
  602. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/products/reordering.md +105 -0
  603. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/products/temporary_reordering.md +132 -0
  604. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase/products.md +15 -0
  605. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/purchase.md +24 -0
  606. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/quality/quality_check_types/instructions_check.md +98 -0
  607. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/quality/quality_check_types/measure_check.md +208 -0
  608. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/quality/quality_check_types/pass_fail_check.md +144 -0
  609. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/quality/quality_check_types/picture_check.md +181 -0
  610. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/quality/quality_check_types.md +16 -0
  611. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/quality/quality_management/failure_locations.md +108 -0
  612. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/quality/quality_management/quality_alerts.md +111 -0
  613. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/quality/quality_management/quality_checks.md +156 -0
  614. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/quality/quality_management/quality_control_points.md +149 -0
  615. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/quality/quality_management.md +16 -0
  616. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/quality.md +24 -0
  617. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/repairs/repair_orders.md +266 -0
  618. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp/repairs.md +19 -0
  619. package/payload/skills/odoo18-docs/references/docs/applications/inventory_and_mrp.md +19 -0
  620. package/payload/skills/odoo18-docs/references/docs/applications/marketing/email_marketing/analyze_metrics.md +209 -0
  621. package/payload/skills/odoo18-docs/references/docs/applications/marketing/email_marketing/lost_leads_email.md +350 -0
  622. package/payload/skills/odoo18-docs/references/docs/applications/marketing/email_marketing/mailing_lists.md +225 -0
  623. package/payload/skills/odoo18-docs/references/docs/applications/marketing/email_marketing/unsubscriptions.md +129 -0
  624. package/payload/skills/odoo18-docs/references/docs/applications/marketing/email_marketing.md +813 -0
  625. package/payload/skills/odoo18-docs/references/docs/applications/marketing/events/create_events.md +425 -0
  626. package/payload/skills/odoo18-docs/references/docs/applications/marketing/events/event_booths.md +269 -0
  627. package/payload/skills/odoo18-docs/references/docs/applications/marketing/events/event_templates.md +216 -0
  628. package/payload/skills/odoo18-docs/references/docs/applications/marketing/events/event_tracks.md +306 -0
  629. package/payload/skills/odoo18-docs/references/docs/applications/marketing/events/registration_desk.md +83 -0
  630. package/payload/skills/odoo18-docs/references/docs/applications/marketing/events/revenues_report.md +188 -0
  631. package/payload/skills/odoo18-docs/references/docs/applications/marketing/events/sell_tickets.md +144 -0
  632. package/payload/skills/odoo18-docs/references/docs/applications/marketing/events/track_manage_talks.md +143 -0
  633. package/payload/skills/odoo18-docs/references/docs/applications/marketing/events.md +255 -0
  634. package/payload/skills/odoo18-docs/references/docs/applications/marketing/marketing_automation/campaign_templates/double_optin.md +156 -0
  635. package/payload/skills/odoo18-docs/references/docs/applications/marketing/marketing_automation/campaign_templates.md +13 -0
  636. package/payload/skills/odoo18-docs/references/docs/applications/marketing/marketing_automation/target_audience.md +87 -0
  637. package/payload/skills/odoo18-docs/references/docs/applications/marketing/marketing_automation/testing_running.md +154 -0
  638. package/payload/skills/odoo18-docs/references/docs/applications/marketing/marketing_automation/understanding_metrics.md +179 -0
  639. package/payload/skills/odoo18-docs/references/docs/applications/marketing/marketing_automation/workflow_activities.md +331 -0
  640. package/payload/skills/odoo18-docs/references/docs/applications/marketing/marketing_automation.md +200 -0
  641. package/payload/skills/odoo18-docs/references/docs/applications/marketing/sms_marketing/create_sms.md +117 -0
  642. package/payload/skills/odoo18-docs/references/docs/applications/marketing/sms_marketing/mailing_lists_blacklists.md +144 -0
  643. package/payload/skills/odoo18-docs/references/docs/applications/marketing/sms_marketing/marketing_campaigns.md +156 -0
  644. package/payload/skills/odoo18-docs/references/docs/applications/marketing/sms_marketing/pricing_and_faq.md +114 -0
  645. package/payload/skills/odoo18-docs/references/docs/applications/marketing/sms_marketing/sms_analysis.md +98 -0
  646. package/payload/skills/odoo18-docs/references/docs/applications/marketing/sms_marketing.md +85 -0
  647. package/payload/skills/odoo18-docs/references/docs/applications/marketing/social_marketing/social_campaigns.md +147 -0
  648. package/payload/skills/odoo18-docs/references/docs/applications/marketing/social_marketing/social_posts.md +386 -0
  649. package/payload/skills/odoo18-docs/references/docs/applications/marketing/social_marketing.md +163 -0
  650. package/payload/skills/odoo18-docs/references/docs/applications/marketing/surveys/analysis.md +259 -0
  651. package/payload/skills/odoo18-docs/references/docs/applications/marketing/surveys/create.md +326 -0
  652. package/payload/skills/odoo18-docs/references/docs/applications/marketing/surveys/live_session.md +218 -0
  653. package/payload/skills/odoo18-docs/references/docs/applications/marketing/surveys/questions.md +331 -0
  654. package/payload/skills/odoo18-docs/references/docs/applications/marketing/surveys/scoring.md +60 -0
  655. package/payload/skills/odoo18-docs/references/docs/applications/marketing/surveys.md +264 -0
  656. package/payload/skills/odoo18-docs/references/docs/applications/marketing.md +18 -0
  657. package/payload/skills/odoo18-docs/references/docs/applications/productivity/appointments.md +195 -0
  658. package/payload/skills/odoo18-docs/references/docs/applications/productivity/calendar/google.md +254 -0
  659. package/payload/skills/odoo18-docs/references/docs/applications/productivity/calendar/outlook.md +249 -0
  660. package/payload/skills/odoo18-docs/references/docs/applications/productivity/calendar.md +280 -0
  661. package/payload/skills/odoo18-docs/references/docs/applications/productivity/data_cleaning.md +474 -0
  662. package/payload/skills/odoo18-docs/references/docs/applications/productivity/discuss/canned_responses.md +135 -0
  663. package/payload/skills/odoo18-docs/references/docs/applications/productivity/discuss/chatter.md +413 -0
  664. package/payload/skills/odoo18-docs/references/docs/applications/productivity/discuss/ice_servers.md +83 -0
  665. package/payload/skills/odoo18-docs/references/docs/applications/productivity/discuss/team_communication.md +112 -0
  666. package/payload/skills/odoo18-docs/references/docs/applications/productivity/discuss.md +168 -0
  667. package/payload/skills/odoo18-docs/references/docs/applications/productivity/documents.md +378 -0
  668. package/payload/skills/odoo18-docs/references/docs/applications/productivity/knowledge/articles_editing.md +138 -0
  669. package/payload/skills/odoo18-docs/references/docs/applications/productivity/knowledge/management.md +204 -0
  670. package/payload/skills/odoo18-docs/references/docs/applications/productivity/knowledge/properties.md +103 -0
  671. package/payload/skills/odoo18-docs/references/docs/applications/productivity/knowledge.md +27 -0
  672. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/algeria.md +72 -0
  673. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/angola.md +74 -0
  674. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/argentina.md +73 -0
  675. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/australia.md +71 -0
  676. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/azerbaijan.md +72 -0
  677. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/bangladesh.md +72 -0
  678. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/brazil.md +76 -0
  679. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/canada.md +74 -0
  680. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/chile.md +75 -0
  681. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/china.md +71 -0
  682. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/colombia.md +74 -0
  683. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/dominican_republic.md +72 -0
  684. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/ecuador.md +72 -0
  685. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/egypt.md +71 -0
  686. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/ethiopia.md +71 -0
  687. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/germany.md +73 -0
  688. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/guatemala.md +71 -0
  689. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/hong_kong.md +71 -0
  690. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/india.md +75 -0
  691. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/indonesia.md +77 -0
  692. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/iran.md +70 -0
  693. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/iraq.md +75 -0
  694. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/israel.md +71 -0
  695. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/japan.md +72 -0
  696. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/kazakhstan.md +73 -0
  697. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/kenya.md +71 -0
  698. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/kuwait.md +70 -0
  699. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/malaysia.md +73 -0
  700. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/mexico.md +74 -0
  701. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/morocco.md +72 -0
  702. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/new_zealand.md +72 -0
  703. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/nigeria.md +70 -0
  704. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/norway.md +73 -0
  705. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/oman.md +71 -0
  706. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/pakistan.md +72 -0
  707. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/peru.md +74 -0
  708. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/philippines.md +74 -0
  709. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/qatar.md +72 -0
  710. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/russia.md +76 -0
  711. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/saudi_arabia.md +71 -0
  712. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/singapore.md +69 -0
  713. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/south_africa.md +72 -0
  714. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/south_korea.md +74 -0
  715. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/switzerland.md +72 -0
  716. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/thailand.md +69 -0
  717. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/turkey.md +73 -0
  718. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/ukraine.md +71 -0
  719. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/united_arab_emirates.md +74 -0
  720. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/united_kingdom.md +78 -0
  721. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/uzbekistan.md +72 -0
  722. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign/vietnam.md +74 -0
  723. package/payload/skills/odoo18-docs/references/docs/applications/productivity/sign.md +371 -0
  724. package/payload/skills/odoo18-docs/references/docs/applications/productivity/spreadsheet/functions.md +826 -0
  725. package/payload/skills/odoo18-docs/references/docs/applications/productivity/spreadsheet/global_filters.md +202 -0
  726. package/payload/skills/odoo18-docs/references/docs/applications/productivity/spreadsheet/insert.md +60 -0
  727. package/payload/skills/odoo18-docs/references/docs/applications/productivity/spreadsheet/templates.md +70 -0
  728. package/payload/skills/odoo18-docs/references/docs/applications/productivity/spreadsheet.md +46 -0
  729. package/payload/skills/odoo18-docs/references/docs/applications/productivity/to_do.md +92 -0
  730. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip/axivox/axivox_config.md +74 -0
  731. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip/axivox/call_queues.md +236 -0
  732. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip/axivox/conference_calls.md +99 -0
  733. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip/axivox/dial_plan_advanced.md +403 -0
  734. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip/axivox/dial_plan_basics.md +199 -0
  735. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip/axivox/dynamic_caller_id.md +114 -0
  736. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip/axivox/manage_users.md +340 -0
  737. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip/axivox/vm_audio_messages.md +257 -0
  738. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip/axivox.md +20 -0
  739. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip/devices_integrations.md +196 -0
  740. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip/onsip.md +162 -0
  741. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip/voip_widget.md +196 -0
  742. package/payload/skills/odoo18-docs/references/docs/applications/productivity/voip.md +106 -0
  743. package/payload/skills/odoo18-docs/references/docs/applications/productivity/whatsapp.md +869 -0
  744. package/payload/skills/odoo18-docs/references/docs/applications/productivity.md +23 -0
  745. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/acquire_leads/convert.md +99 -0
  746. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/acquire_leads/email_manual.md +128 -0
  747. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/acquire_leads/lead_mining.md +117 -0
  748. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/acquire_leads/opportunities_form.md +119 -0
  749. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/acquire_leads/send_quotes.md +223 -0
  750. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/acquire_leads.md +17 -0
  751. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/optimize/gamification.md +154 -0
  752. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/optimize/lead_enrichment.md +123 -0
  753. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/optimize/partner_autocomplete.md +84 -0
  754. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/optimize/utilize_activities.md +251 -0
  755. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/optimize.md +16 -0
  756. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/performance/expected_revenue_report.md +210 -0
  757. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/performance/forecast_report.md +108 -0
  758. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/performance/win_loss.md +649 -0
  759. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/performance.md +15 -0
  760. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/pipeline/lost_opportunities.md +208 -0
  761. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/pipeline/manage_sales_teams.md +109 -0
  762. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/pipeline/merge_similar.md +113 -0
  763. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/pipeline.md +15 -0
  764. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/track_leads/lead_distribution_report.md +191 -0
  765. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/track_leads/lead_scoring.md +186 -0
  766. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/track_leads/marketing_attribution.md +161 -0
  767. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/track_leads/quality_leads_report.md +217 -0
  768. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/track_leads/resellers.md +129 -0
  769. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/track_leads/unattended_leads_report.md +185 -0
  770. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm/track_leads.md +18 -0
  771. package/payload/skills/odoo18-docs/references/docs/applications/sales/crm.md +27 -0
  772. package/payload/skills/odoo18-docs/references/docs/applications/sales/members/members_analysis.md +57 -0
  773. package/payload/skills/odoo18-docs/references/docs/applications/sales/members.md +91 -0
  774. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/combos.md +62 -0
  775. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/configuration/epos_printers.md +69 -0
  776. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/configuration/epos_ssc.md +286 -0
  777. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/configuration/https.md +25 -0
  778. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/configuration/pos_iot.md +60 -0
  779. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/configuration.md +93 -0
  780. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/employee_login.md +75 -0
  781. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/online_food_delivery.md +208 -0
  782. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/payment_methods/qr_code_payment.md +106 -0
  783. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/payment_methods/terminals/adyen.md +85 -0
  784. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/payment_methods/terminals/ingenico.md +52 -0
  785. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/payment_methods/terminals/mercado_pago.md +101 -0
  786. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/payment_methods/terminals/razorpay.md +57 -0
  787. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/payment_methods/terminals/six.md +60 -0
  788. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/payment_methods/terminals/stripe.md +106 -0
  789. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/payment_methods/terminals/tyro.md +63 -0
  790. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/payment_methods/terminals/viva_wallet.md +116 -0
  791. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/payment_methods/terminals/worldline.md +90 -0
  792. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/payment_methods/terminals.md +62 -0
  793. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/payment_methods.md +36 -0
  794. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/pos_based_marketing.md +119 -0
  795. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/preparation.md +109 -0
  796. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/pricing/cash_rounding.md +49 -0
  797. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/pricing/discount_tags.md +54 -0
  798. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/pricing/discounts.md +99 -0
  799. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/pricing/electronic_labels.md +183 -0
  800. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/pricing/fiscal_position.md +53 -0
  801. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/pricing/loyalty.md +47 -0
  802. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/pricing/pricelists.md +130 -0
  803. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/pricing.md +19 -0
  804. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/receipts_invoices.md +107 -0
  805. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/reporting.md +16 -0
  806. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/restaurant/bill_printing.md +42 -0
  807. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/restaurant/floors_tables.md +98 -0
  808. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/restaurant/kitchen_printing.md +66 -0
  809. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/restaurant/tips.md +89 -0
  810. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/restaurant.md +56 -0
  811. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/self_order.md +222 -0
  812. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/shop/barcode.md +59 -0
  813. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/shop/customer_display.md +61 -0
  814. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/shop/sales_order.md +49 -0
  815. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/shop/serial_numbers.md +62 -0
  816. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/shop/ship_later.md +47 -0
  817. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale/shop.md +17 -0
  818. package/payload/skills/odoo18-docs/references/docs/applications/sales/point_of_sale.md +189 -0
  819. package/payload/skills/odoo18-docs/references/docs/applications/sales/rental.md +276 -0
  820. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/amazon_connector/features.md +115 -0
  821. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/amazon_connector/manage.md +195 -0
  822. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/amazon_connector/setup.md +155 -0
  823. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/amazon_connector.md +15 -0
  824. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/gelato.md +159 -0
  825. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/invoicing/down_payment.md +286 -0
  826. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/invoicing/expense.md +258 -0
  827. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/invoicing/invoicing_policy.md +86 -0
  828. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/invoicing/milestone.md +240 -0
  829. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/invoicing/proforma.md +73 -0
  830. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/invoicing/time_materials.md +364 -0
  831. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/invoicing.md +18 -0
  832. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/products_prices/ewallets_giftcards.md +145 -0
  833. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/products_prices/loyalty_discount.md +206 -0
  834. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/products_prices/prices/currencies.md +224 -0
  835. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/products_prices/prices/discounts.md +88 -0
  836. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/products_prices/prices/pricing.md +280 -0
  837. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/products_prices/prices.md +15 -0
  838. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/products_prices/products/import.md +253 -0
  839. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/products_prices/products/product_images.md +164 -0
  840. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/products_prices/products/variants.md +291 -0
  841. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/products_prices/products.md +15 -0
  842. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/products_prices/returns.md +119 -0
  843. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/products_prices.md +17 -0
  844. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/sales_quotations/create_quotations.md +323 -0
  845. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/sales_quotations/deadline.md +58 -0
  846. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/sales_quotations/different_addresses.md +81 -0
  847. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/sales_quotations/get_paid_to_validate.md +92 -0
  848. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/sales_quotations/get_signature_to_validate.md +80 -0
  849. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/sales_quotations/optional_products.md +101 -0
  850. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/sales_quotations/orders_and_variants.md +116 -0
  851. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/sales_quotations/pdf_quote_builder.md +266 -0
  852. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/sales_quotations/quote_template.md +256 -0
  853. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/sales_quotations.md +139 -0
  854. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/shopee_connector/manage.md +191 -0
  855. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/shopee_connector/setup.md +226 -0
  856. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales/shopee_connector.md +74 -0
  857. package/payload/skills/odoo18-docs/references/docs/applications/sales/sales.md +27 -0
  858. package/payload/skills/odoo18-docs/references/docs/applications/sales/subscriptions/automatic_alerts.md +169 -0
  859. package/payload/skills/odoo18-docs/references/docs/applications/sales/subscriptions/closing.md +107 -0
  860. package/payload/skills/odoo18-docs/references/docs/applications/sales/subscriptions/ecommerce.md +28 -0
  861. package/payload/skills/odoo18-docs/references/docs/applications/sales/subscriptions/payment_providers/wire_transfer.md +157 -0
  862. package/payload/skills/odoo18-docs/references/docs/applications/sales/subscriptions/payment_providers.md +13 -0
  863. package/payload/skills/odoo18-docs/references/docs/applications/sales/subscriptions/plans.md +104 -0
  864. package/payload/skills/odoo18-docs/references/docs/applications/sales/subscriptions/products.md +158 -0
  865. package/payload/skills/odoo18-docs/references/docs/applications/sales/subscriptions/renewals.md +133 -0
  866. package/payload/skills/odoo18-docs/references/docs/applications/sales/subscriptions/reports.md +396 -0
  867. package/payload/skills/odoo18-docs/references/docs/applications/sales/subscriptions/scheduled_actions.md +188 -0
  868. package/payload/skills/odoo18-docs/references/docs/applications/sales/subscriptions/upselling.md +111 -0
  869. package/payload/skills/odoo18-docs/references/docs/applications/sales/subscriptions.md +90 -0
  870. package/payload/skills/odoo18-docs/references/docs/applications/sales.md +18 -0
  871. package/payload/skills/odoo18-docs/references/docs/applications/services/field_service/creating_tasks.md +31 -0
  872. package/payload/skills/odoo18-docs/references/docs/applications/services/field_service/planning_itinerary.md +39 -0
  873. package/payload/skills/odoo18-docs/references/docs/applications/services/field_service/product_management.md +87 -0
  874. package/payload/skills/odoo18-docs/references/docs/applications/services/field_service/worksheets.md +66 -0
  875. package/payload/skills/odoo18-docs/references/docs/applications/services/field_service.md +22 -0
  876. package/payload/skills/odoo18-docs/references/docs/applications/services/helpdesk/advanced/after_sales.md +283 -0
  877. package/payload/skills/odoo18-docs/references/docs/applications/services/helpdesk/advanced/close_tickets.md +111 -0
  878. package/payload/skills/odoo18-docs/references/docs/applications/services/helpdesk/advanced/track_and_bill.md +248 -0
  879. package/payload/skills/odoo18-docs/references/docs/applications/services/helpdesk/advanced.md +15 -0
  880. package/payload/skills/odoo18-docs/references/docs/applications/services/helpdesk/overview/help_center.md +344 -0
  881. package/payload/skills/odoo18-docs/references/docs/applications/services/helpdesk/overview/ratings.md +116 -0
  882. package/payload/skills/odoo18-docs/references/docs/applications/services/helpdesk/overview/receiving_tickets.md +341 -0
  883. package/payload/skills/odoo18-docs/references/docs/applications/services/helpdesk/overview/reports.md +178 -0
  884. package/payload/skills/odoo18-docs/references/docs/applications/services/helpdesk/overview/sla.md +213 -0
  885. package/payload/skills/odoo18-docs/references/docs/applications/services/helpdesk/overview/stages.md +111 -0
  886. package/payload/skills/odoo18-docs/references/docs/applications/services/helpdesk/overview.md +18 -0
  887. package/payload/skills/odoo18-docs/references/docs/applications/services/helpdesk.md +183 -0
  888. package/payload/skills/odoo18-docs/references/docs/applications/services/planning.md +327 -0
  889. package/payload/skills/odoo18-docs/references/docs/applications/services/project/project_management/project_dashboard.md +123 -0
  890. package/payload/skills/odoo18-docs/references/docs/applications/services/project/project_management/project_profitability.md +107 -0
  891. package/payload/skills/odoo18-docs/references/docs/applications/services/project/project_management.md +118 -0
  892. package/payload/skills/odoo18-docs/references/docs/applications/services/project/tasks/recurring_tasks.md +50 -0
  893. package/payload/skills/odoo18-docs/references/docs/applications/services/project/tasks/sub-tasks.md +53 -0
  894. package/payload/skills/odoo18-docs/references/docs/applications/services/project/tasks/task_creation.md +124 -0
  895. package/payload/skills/odoo18-docs/references/docs/applications/services/project/tasks/task_dependencies.md +46 -0
  896. package/payload/skills/odoo18-docs/references/docs/applications/services/project/tasks/task_stages_statuses.md +74 -0
  897. package/payload/skills/odoo18-docs/references/docs/applications/services/project/tasks.md +17 -0
  898. package/payload/skills/odoo18-docs/references/docs/applications/services/project.md +23 -0
  899. package/payload/skills/odoo18-docs/references/docs/applications/services/timesheets/overview/time_off.md +50 -0
  900. package/payload/skills/odoo18-docs/references/docs/applications/services/timesheets/overview.md +13 -0
  901. package/payload/skills/odoo18-docs/references/docs/applications/services/timesheets.md +20 -0
  902. package/payload/skills/odoo18-docs/references/docs/applications/services.md +17 -0
  903. package/payload/skills/odoo18-docs/references/docs/applications/studio/approval_rules.md +95 -0
  904. package/payload/skills/odoo18-docs/references/docs/applications/studio/automated_actions/webhooks.md +274 -0
  905. package/payload/skills/odoo18-docs/references/docs/applications/studio/automated_actions.md +354 -0
  906. package/payload/skills/odoo18-docs/references/docs/applications/studio/fields.md +547 -0
  907. package/payload/skills/odoo18-docs/references/docs/applications/studio/models_modules_apps.md +283 -0
  908. package/payload/skills/odoo18-docs/references/docs/applications/studio/pdf_reports.md +558 -0
  909. package/payload/skills/odoo18-docs/references/docs/applications/studio/views.md +363 -0
  910. package/payload/skills/odoo18-docs/references/docs/applications/studio.md +43 -0
  911. package/payload/skills/odoo18-docs/references/docs/applications/websites/blog.md +128 -0
  912. package/payload/skills/odoo18-docs/references/docs/applications/websites/ecommerce/cart.md +110 -0
  913. package/payload/skills/odoo18-docs/references/docs/applications/websites/ecommerce/checkout.md +171 -0
  914. package/payload/skills/odoo18-docs/references/docs/applications/websites/ecommerce/customer_accounts.md +45 -0
  915. package/payload/skills/odoo18-docs/references/docs/applications/websites/ecommerce/order_handling.md +109 -0
  916. package/payload/skills/odoo18-docs/references/docs/applications/websites/ecommerce/payments.md +55 -0
  917. package/payload/skills/odoo18-docs/references/docs/applications/websites/ecommerce/performance.md +63 -0
  918. package/payload/skills/odoo18-docs/references/docs/applications/websites/ecommerce/products/catalog.md +200 -0
  919. package/payload/skills/odoo18-docs/references/docs/applications/websites/ecommerce/products/cross_upselling.md +70 -0
  920. package/payload/skills/odoo18-docs/references/docs/applications/websites/ecommerce/products/price_management.md +193 -0
  921. package/payload/skills/odoo18-docs/references/docs/applications/websites/ecommerce/products.md +400 -0
  922. package/payload/skills/odoo18-docs/references/docs/applications/websites/ecommerce/shipping.md +124 -0
  923. package/payload/skills/odoo18-docs/references/docs/applications/websites/ecommerce.md +36 -0
  924. package/payload/skills/odoo18-docs/references/docs/applications/websites/elearning.md +245 -0
  925. package/payload/skills/odoo18-docs/references/docs/applications/websites/forum.md +394 -0
  926. package/payload/skills/odoo18-docs/references/docs/applications/websites/livechat/chatbots.md +260 -0
  927. package/payload/skills/odoo18-docs/references/docs/applications/websites/livechat/participate.md +98 -0
  928. package/payload/skills/odoo18-docs/references/docs/applications/websites/livechat/ratings.md +147 -0
  929. package/payload/skills/odoo18-docs/references/docs/applications/websites/livechat/reports.md +187 -0
  930. package/payload/skills/odoo18-docs/references/docs/applications/websites/livechat/responses.md +182 -0
  931. package/payload/skills/odoo18-docs/references/docs/applications/websites/livechat.md +255 -0
  932. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/configuration/address_autocomplete.md +64 -0
  933. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/configuration/cdn.md +109 -0
  934. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/configuration/cookies_bar.md +58 -0
  935. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/configuration/domain_names.md +368 -0
  936. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/configuration/google_search_console.md +99 -0
  937. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/configuration/multi_website.md +152 -0
  938. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/configuration/spam_protection.md +149 -0
  939. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/configuration/translate.md +112 -0
  940. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/configuration.md +20 -0
  941. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/mail_groups.md +129 -0
  942. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/pages/menus.md +95 -0
  943. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/pages/seo.md +175 -0
  944. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/pages.md +194 -0
  945. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/reporting/analytics.md +178 -0
  946. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/reporting/link_tracker.md +74 -0
  947. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/reporting.md +14 -0
  948. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/web_design/building_blocks/dynamic_content.md +103 -0
  949. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/web_design/building_blocks/features.md +42 -0
  950. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/web_design/building_blocks/inner_content.md +36 -0
  951. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/web_design/building_blocks/structure.md +61 -0
  952. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/web_design/building_blocks.md +165 -0
  953. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/web_design/elements.md +194 -0
  954. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/web_design/themes.md +164 -0
  955. package/payload/skills/odoo18-docs/references/docs/applications/websites/website/web_design.md +15 -0
  956. package/payload/skills/odoo18-docs/references/docs/applications/websites/website.md +66 -0
  957. package/payload/skills/odoo18-docs/references/docs/applications/websites.md +18 -0
  958. package/payload/skills/odoo18-docs/references/docs/contributing/development/coding_guidelines.md +1305 -0
  959. package/payload/skills/odoo18-docs/references/docs/contributing/development/git_guidelines.md +142 -0
  960. package/payload/skills/odoo18-docs/references/docs/contributing/development.md +175 -0
  961. package/payload/skills/odoo18-docs/references/docs/contributing/documentation/content_guidelines.md +329 -0
  962. package/payload/skills/odoo18-docs/references/docs/contributing/documentation/rst_guidelines.md +1317 -0
  963. package/payload/skills/odoo18-docs/references/docs/contributing/documentation.md +300 -0
  964. package/payload/skills/odoo18-docs/references/docs/contributing/install_git.md +25 -0
  965. package/payload/skills/odoo18-docs/references/docs/developer/glossary.md +46 -0
  966. package/payload/skills/odoo18-docs/references/docs/developer/howtos/accounting_localization.md +305 -0
  967. package/payload/skills/odoo18-docs/references/docs/developer/howtos/company.md +224 -0
  968. package/payload/skills/odoo18-docs/references/docs/developer/howtos/connect_device.md +191 -0
  969. package/payload/skills/odoo18-docs/references/docs/developer/howtos/create_reports.md +119 -0
  970. package/payload/skills/odoo18-docs/references/docs/developer/howtos/frontend_owl_components.md +180 -0
  971. package/payload/skills/odoo18-docs/references/docs/developer/howtos/javascript_client_action.md +50 -0
  972. package/payload/skills/odoo18-docs/references/docs/developer/howtos/javascript_field.md +101 -0
  973. package/payload/skills/odoo18-docs/references/docs/developer/howtos/javascript_view.md +259 -0
  974. package/payload/skills/odoo18-docs/references/docs/developer/howtos/scss_tips.md +233 -0
  975. package/payload/skills/odoo18-docs/references/docs/developer/howtos/standalone_owl_application.md +166 -0
  976. package/payload/skills/odoo18-docs/references/docs/developer/howtos/translations.md +261 -0
  977. package/payload/skills/odoo18-docs/references/docs/developer/howtos/upgrade_custom_db.md +303 -0
  978. package/payload/skills/odoo18-docs/references/docs/developer/howtos/web_services.md +149 -0
  979. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/animations.md +166 -0
  980. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/building_blocks.md +1179 -0
  981. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/forms.md +126 -0
  982. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/going_live.md +70 -0
  983. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/gradients.md +57 -0
  984. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/layout.md +846 -0
  985. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/media.md +190 -0
  986. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/navigation.md +267 -0
  987. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/pages.md +373 -0
  988. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/setup.md +297 -0
  989. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/shapes.md +299 -0
  990. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/theming.md +896 -0
  991. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes/translations.md +161 -0
  992. package/payload/skills/odoo18-docs/references/docs/developer/howtos/website_themes.md +41 -0
  993. package/payload/skills/odoo18-docs/references/docs/developer/howtos.md +112 -0
  994. package/payload/skills/odoo18-docs/references/docs/developer/reference/backend/actions.md +474 -0
  995. package/payload/skills/odoo18-docs/references/docs/developer/reference/backend/data.md +291 -0
  996. package/payload/skills/odoo18-docs/references/docs/developer/reference/backend/http.md +87 -0
  997. package/payload/skills/odoo18-docs/references/docs/developer/reference/backend/mixins.md +1060 -0
  998. package/payload/skills/odoo18-docs/references/docs/developer/reference/backend/module.md +159 -0
  999. package/payload/skills/odoo18-docs/references/docs/developer/reference/backend/orm/changelog.md +109 -0
  1000. package/payload/skills/odoo18-docs/references/docs/developer/reference/backend/orm.md +1234 -0
  1001. package/payload/skills/odoo18-docs/references/docs/developer/reference/backend/performance.md +448 -0
  1002. package/payload/skills/odoo18-docs/references/docs/developer/reference/backend/reports.md +318 -0
  1003. package/payload/skills/odoo18-docs/references/docs/developer/reference/backend/security.md +572 -0
  1004. package/payload/skills/odoo18-docs/references/docs/developer/reference/backend/testing.md +958 -0
  1005. package/payload/skills/odoo18-docs/references/docs/developer/reference/backend.md +23 -0
  1006. package/payload/skills/odoo18-docs/references/docs/developer/reference/cli.md +965 -0
  1007. package/payload/skills/odoo18-docs/references/docs/developer/reference/external_api.md +1447 -0
  1008. package/payload/skills/odoo18-docs/references/docs/developer/reference/extract_api.md +563 -0
  1009. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/assets.md +356 -0
  1010. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/error_handling.md +568 -0
  1011. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/framework_overview.md +633 -0
  1012. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/hooks.md +341 -0
  1013. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/javascript_modules.md +361 -0
  1014. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/javascript_reference.md +1364 -0
  1015. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/mobile.md +201 -0
  1016. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/odoo_editor.md +227 -0
  1017. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/owl_components.md +1095 -0
  1018. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/patching_code.md +255 -0
  1019. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/qweb.md +976 -0
  1020. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/registries.md +298 -0
  1021. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend/services.md +886 -0
  1022. package/payload/skills/odoo18-docs/references/docs/developer/reference/frontend.md +26 -0
  1023. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/account/account_account.md +20 -0
  1024. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/account/account_account_tag.md +18 -0
  1025. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/account/account_fiscal_position.md +24 -0
  1026. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/account/account_group.md +16 -0
  1027. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/account/account_report.md +34 -0
  1028. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/account/account_report_line.md +21 -0
  1029. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/account/account_tax.md +30 -0
  1030. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/account/account_tax_repartition.md +19 -0
  1031. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/account.md +20 -0
  1032. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/payment/payment_method.md +13 -0
  1033. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/payment/payment_provider.md +19 -0
  1034. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/payment/payment_token.md +16 -0
  1035. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/payment/payment_transaction.md +28 -0
  1036. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules/payment.md +16 -0
  1037. package/payload/skills/odoo18-docs/references/docs/developer/reference/standard_modules.md +14 -0
  1038. package/payload/skills/odoo18-docs/references/docs/developer/reference/upgrades/upgrade_scripts.md +108 -0
  1039. package/payload/skills/odoo18-docs/references/docs/developer/reference/upgrades/upgrade_utils.md +106 -0
  1040. package/payload/skills/odoo18-docs/references/docs/developer/reference/upgrades.md +14 -0
  1041. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/icons.md +361 -0
  1042. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/scss_inheritance.md +106 -0
  1043. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/button_attribute_context.md +19 -0
  1044. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/button_attribute_help.md +18 -0
  1045. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/button_attribute_icon.md +19 -0
  1046. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/button_attribute_name.md +14 -0
  1047. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/button_attribute_string.md +18 -0
  1048. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/button_attribute_type.md +31 -0
  1049. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/field_attribute_name.md +22 -0
  1050. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/field_attribute_readonly.md +20 -0
  1051. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/field_attribute_required.md +20 -0
  1052. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/field_attribute_string.md +13 -0
  1053. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/generic_attribute_class.md +39 -0
  1054. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/generic_attribute_column_invisible.md +22 -0
  1055. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/generic_attribute_groups.md +21 -0
  1056. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/generic_attribute_invisible.md +32 -0
  1057. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/root_attribute_create.md +13 -0
  1058. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/root_attribute_default_group_by.md +14 -0
  1059. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/root_attribute_default_order.md +23 -0
  1060. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/root_attribute_delete.md +13 -0
  1061. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/root_attribute_edit.md +13 -0
  1062. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/root_attribute_sample.md +21 -0
  1063. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures/root_attribute_string.md +14 -0
  1064. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_architectures.md +3899 -0
  1065. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface/view_records.md +366 -0
  1066. package/payload/skills/odoo18-docs/references/docs/developer/reference/user_interface.md +16 -0
  1067. package/payload/skills/odoo18-docs/references/docs/developer/reference.md +23 -0
  1068. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/backend.md +1332 -0
  1069. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/define_module_data.md +404 -0
  1070. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/discover_js_framework/01_owl_components.md +517 -0
  1071. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/discover_js_framework/02_build_a_dashboard.md +458 -0
  1072. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/discover_js_framework.md +48 -0
  1073. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/importable_modules.md +931 -0
  1074. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/master_odoo_web_framework/01_build_clicker_game.md +426 -0
  1075. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/master_odoo_web_framework/02_create_gallery_view.md +446 -0
  1076. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/master_odoo_web_framework/03_customize_kanban_view.md +192 -0
  1077. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/master_odoo_web_framework.md +59 -0
  1078. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/mixins.md +16 -0
  1079. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/pdf_reports.md +291 -0
  1080. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/restrict_data_access.md +500 -0
  1081. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/01_architecture.md +131 -0
  1082. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/02_newapp.md +100 -0
  1083. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/03_basicmodel.md +298 -0
  1084. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/04_securityintro.md +124 -0
  1085. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/05_firstui.md +284 -0
  1086. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/06_basicviews.md +242 -0
  1087. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/07_relations.md +261 -0
  1088. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/08_compute_onchange.md +298 -0
  1089. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/09_actions.md +138 -0
  1090. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/10_constraints.md +127 -0
  1091. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/11_sprinkles.md +504 -0
  1092. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/12_inheritance.md +248 -0
  1093. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/13_other_module.md +170 -0
  1094. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/14_qwebintro.md +129 -0
  1095. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101/15_final_word.md +32 -0
  1096. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/server_framework_101.md +47 -0
  1097. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/setup_guide.md +302 -0
  1098. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/unit_tests.md +295 -0
  1099. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/web.md +2275 -0
  1100. package/payload/skills/odoo18-docs/references/docs/developer/tutorials/website.md +992 -0
  1101. package/payload/skills/odoo18-docs/references/docs/developer/tutorials.md +92 -0
  1102. package/payload/skills/odoo18-docs/references/url-mapping.json +3906 -0
  1103. package/payload/skills/prd/SKILL.md +333 -0
  1104. package/payload/skills/prd/agents/openai.yaml +6 -0
  1105. package/payload/skills/prd/assets/icon-large.svg +1 -0
  1106. package/payload/skills/prd/assets/icon-small.svg +5 -0
  1107. package/payload/skills/prd/evals/evals.json +23 -0
  1108. package/payload/skills/prd/references/output-template.md +197 -0
  1109. package/payload/skills/prd/references/section-guide.md +191 -0
  1110. package/payload/skills/review/SKILL.md +249 -0
  1111. package/payload/skills/review/agents/openai.yaml +6 -0
  1112. package/payload/skills/review/assets/icon-large.svg +1 -0
  1113. package/payload/skills/review/assets/icon-small.svg +5 -0
  1114. package/payload/skills/review/evals/evals.json +23 -0
  1115. package/payload/skills/review/references/brd-checklist.md +43 -0
  1116. package/payload/skills/review/references/gate-rules.md +73 -0
  1117. package/payload/skills/review/references/output-template.md +43 -0
  1118. package/payload/skills/review/references/prd-checklist.md +39 -0
  1119. package/payload/skills/review/references/solution-checklist.md +37 -0
  1120. package/payload/skills/review/references/trd-checklist.md +40 -0
  1121. package/payload/skills/review/references/uat-checklist.md +38 -0
  1122. package/payload/skills/solution/SKILL.md +389 -0
  1123. package/payload/skills/solution/agents/openai.yaml +6 -0
  1124. package/payload/skills/solution/assets/icon-large.svg +1 -0
  1125. package/payload/skills/solution/assets/icon-small.svg +5 -0
  1126. package/payload/skills/solution/references/modeling-guide.md +173 -0
  1127. package/payload/skills/solution/references/output-template.md +229 -0
  1128. package/payload/skills/translation/SKILL.md +259 -0
  1129. package/payload/skills/translation/agents/openai.yaml +6 -0
  1130. package/payload/skills/translation/assets/icon-large.svg +1 -0
  1131. package/payload/skills/translation/assets/icon-small.svg +5 -0
  1132. package/payload/skills/translation/scripts/translate.py +275 -0
  1133. package/payload/skills/translation/tests/test_translate.py +124 -0
  1134. package/payload/skills/trd/SKILL.md +340 -0
  1135. package/payload/skills/trd/agents/openai.yaml +6 -0
  1136. package/payload/skills/trd/assets/icon-large.svg +1 -0
  1137. package/payload/skills/trd/assets/icon-small.svg +5 -0
  1138. package/payload/skills/trd/evals/evals.json +23 -0
  1139. package/payload/skills/trd/references/modeling-guide.md +212 -0
  1140. package/payload/skills/trd/references/output-template.md +242 -0
  1141. package/payload/skills/trd/references/section-guide.md +167 -0
  1142. package/payload/skills/uat/SKILL.md +339 -0
  1143. package/payload/skills/uat/agents/openai.yaml +6 -0
  1144. package/payload/skills/uat/assets/icon-large.svg +1 -0
  1145. package/payload/skills/uat/assets/icon-small.svg +5 -0
  1146. package/payload/skills/uat/evals/evals.json +23 -0
  1147. package/payload/skills/uat/references/output-template.md +158 -0
  1148. package/payload/skills/uat/references/section-guide.md +165 -0
  1149. package/payload/skills/view-dev/SKILL.md +167 -0
  1150. package/payload/skills/view-dev/agents/openai.yaml +6 -0
  1151. package/payload/skills/view-dev/assets/README.md +7 -0
  1152. package/payload/skills/view-dev/assets/icon-large.svg +1 -0
  1153. package/payload/skills/view-dev/assets/icon-small.svg +5 -0
  1154. package/payload/skills/view-dev/references/actions.md +277 -0
  1155. package/payload/skills/view-dev/references/activity.md +65 -0
  1156. package/payload/skills/view-dev/references/calendar.md +92 -0
  1157. package/payload/skills/view-dev/references/cohort.md +80 -0
  1158. package/payload/skills/view-dev/references/common-architecture.md +35 -0
  1159. package/payload/skills/view-dev/references/field-widgets.md +529 -0
  1160. package/payload/skills/view-dev/references/form.md +520 -0
  1161. package/payload/skills/view-dev/references/gantt.md +162 -0
  1162. package/payload/skills/view-dev/references/graph.md +76 -0
  1163. package/payload/skills/view-dev/references/grid.md +221 -0
  1164. package/payload/skills/view-dev/references/kanban.md +232 -0
  1165. package/payload/skills/view-dev/references/list.md +233 -0
  1166. package/payload/skills/view-dev/references/mail-thread.md +504 -0
  1167. package/payload/skills/view-dev/references/map.md +69 -0
  1168. package/payload/skills/view-dev/references/orm-api.md +149 -0
  1169. package/payload/skills/view-dev/references/pivot.md +109 -0
  1170. package/payload/skills/view-dev/references/python-expressions.md +48 -0
  1171. package/payload/skills/view-dev/references/qweb-templates.md +326 -0
  1172. package/payload/skills/view-dev/references/qweb.md +53 -0
  1173. package/payload/skills/view-dev/references/search.md +249 -0
  1174. package/payload/skills/view-dev/references/security.md +306 -0
  1175. package/payload/skills/view-dev/references/settings.md +140 -0
  1176. package/payload/skills/view-dev/references/ui-icons.md +44 -0
  1177. package/payload/skills/view-dev/references/view-records.md +171 -0
  1178. package/payload/skills/view-dev/scripts/README.md +7 -0
  1179. package/payload/skills/view-spec/SKILL.md +301 -0
  1180. package/payload/skills/view-spec/agents/openai.yaml +6 -0
  1181. package/payload/skills/view-spec/assets/icon-large.svg +1 -0
  1182. package/payload/skills/view-spec/assets/icon-small.svg +5 -0
  1183. package/payload/skills/view-spec/examples/sample-maintenance-request.md +304 -0
  1184. package/payload/skills/view-spec/references/analytics-templates.md +161 -0
  1185. package/payload/skills/view-spec/references/form-templates.md +237 -0
  1186. package/payload/skills/view-spec/references/kanban-templates.md +127 -0
  1187. package/payload/skills/view-spec/references/layout-rules.md +427 -0
  1188. package/payload/skills/view-spec/references/list-templates.md +128 -0
  1189. package/payload/skills/view-spec/references/search-templates.md +177 -0
  1190. package/payload/skills/view-spec/references/settings-templates.md +115 -0
@@ -0,0 +1,3899 @@
1
+ ---
2
+ title: ""
3
+ source_url: "https://docs.odoo.sbggai.top/developer/reference/user_interface/view_architectures.html"
4
+ ---
5
+
6
+ :custom-css: showcase_tables.css
7
+ #
8
+ # View architectures
9
+
10
+ # Generic architecture
11
+
12
+ The architecture of a view is defined by XML data interpreted by the JavaScript framework.
13
+
14
+ For most views, there is a :file:`\*.rng` file defining the attributes and possible architectures.
15
+ Some views are not ruled by such a file either because they accept HTML content, or for performance
16
+ reasons.
17
+
18
+ > **note**:
19
+ > The current context and user access rights may impact the view abilities.
20
+
21
+ .. seealso::
22
+ :doc:`view_records`
23
+
24
+ .. _reference/view_architectures/python_expression:
25
+
26
+ # Python expression
27
+
28
+ When evaluating node attributes, e.g. the `readonly` modifier, it is possible to provide a **Python
29
+ expression** that will be executed in an environment that has access to the following variables:
30
+
31
+ - The names of all fields present in the current view, containing the value of the current record,
32
+ except for `column_invisible` in :ref:`list view <reference/view_architectures/list/field>`;
33
+ relational fields are given as a list of IDs;
34
+ - The ID of the current record;
35
+ - `parent`: the record that refers to the container; only inside sub-views of :ref:`relational
36
+ fields <studio/fields/relational-fields>`;
37
+ - `context (dict)`: the current view's context;
38
+ - `uid (int)`: the id of the current user;
39
+ - `today (str)`: the current local date in the `YYYY-MM-DD` format;
40
+ - `now (str)`: the current local datetime in the `YYYY-MM-DD hh:mm:ss` format.
41
+
42
+ .. example::
43
+ ```xml
44
+
45
+ <field name="field_a" readonly="True"/>
46
+ <field name="field_b" invisible="context.get('show_me') and field_a == 4"/>
47
+
48
+ .. example::
49
+ ```xml
50
+
51
+ <field name="field_a"/>
52
+ <field name="x2m">
53
+ <!-- sub-view -->
54
+ <form>
55
+ <field name="field_b" invisible="parent.field_a"/>
56
+ </form>
57
+ </field>
58
+
59
+ .. _reference/view_architectures/form:
60
+
61
+ # Form
62
+
63
+ Form views are used to display the data from a single record. They are composed of regular HTML_
64
+ with additional semantic and structural components.
65
+
66
+ The root element of form views is `form`.
67
+
68
+ ```xml
69
+
70
+ <form>
71
+ ...
72
+ </form>
73
+
74
+ .. _reference/view_architectures/form/root:
75
+
76
+ ## Root attributes
77
+
78
+ Optional attributes can be added to the root element `form` to customize the view.
79
+
80
+ .. include:: view_architectures/root_attribute_string.rst
81
+
82
+ .. include:: view_architectures/root_attribute_create.rst
83
+
84
+ .. include:: view_architectures/root_attribute_edit.rst
85
+
86
+ .. attribute:: duplicate
87
+ :noindex:
88
+
89
+ Disable/enable record duplication on the view through the **Action** dropdown.
90
+
91
+ :requirement: Optional
92
+ :type: bool
93
+ :default: `True`
94
+
95
+ .. include:: view_architectures/root_attribute_delete.rst
96
+
97
+ .. attribute:: js_class
98
+ :noindex:
99
+
100
+ The name of the JavaScript component the webclient will instantiate instead of the form view.
101
+
102
+ :requirement: Optional
103
+ :type: str
104
+ :default: `''`
105
+
106
+ .. attribute:: disable_autofocus
107
+ :noindex:
108
+
109
+ Disable automatic focusing on the first field in the view.
110
+
111
+ :requirement: Optional
112
+ :type: bool
113
+ :default: `False`
114
+
115
+ .. _reference/view_architectures/form/semantic:
116
+
117
+ ## Semantic components
118
+
119
+ Semantic components tie into the Odoo system and allow interaction with it.
120
+
121
+ Form views accept the following children semantic components: :ref:`field
122
+ <reference/view_architectures/form/field>`, :ref:`label <reference/view_architectures/form/label>`,
123
+ :ref:`button <reference/view_architectures/form/button>`,
124
+ :ref:`reference/view_architectures/form/chatter`, and
125
+ :ref:`reference/view_architectures/form/attachment`.
126
+
127
+ Placeholders are denoted in all caps.
128
+
129
+ .. _reference/view_architectures/form/field:
130
+
131
+ ### `field`: display field values
132
+
133
+ The `field` element renders (and allows editing of, possibly) a single field of the current record.
134
+
135
+ Using the same field multiple times in a form view is supported, and the fields can receive
136
+ different values for the `invisible` and `readonly` attributes. These fields may have the same
137
+ values but can be displayed differently. However, the behavior is not guaranteed when several fields
138
+ exist with different values for the `required` attribute.
139
+
140
+ ```xml
141
+
142
+ <form>
143
+ <field name="FIELD_NAME"/>
144
+ </form>
145
+
146
+ The `field` element can have the following attributes:
147
+
148
+ .. include:: view_architectures/field_attribute_name.rst
149
+
150
+ .. attribute:: id
151
+ :noindex:
152
+
153
+ The node id. Useful when there are several occurrences of the same field in the view (see
154
+ :ref:`reference/view_architectures/form/label`).
155
+
156
+ :requirement: Optional
157
+ :type: str
158
+ :default: The field name
159
+
160
+ .. include:: view_architectures/field_attribute_string.rst
161
+
162
+ .. attribute:: help
163
+ :noindex:
164
+
165
+ The tooltip displayed when hovering the field or its label.
166
+
167
+ :requirement: Optional
168
+ :type: str
169
+ :default: `''`
170
+
171
+ .. attribute:: options
172
+ :noindex:
173
+
174
+ The configuration options for the field's widget (including default widgets), as a Python
175
+ expression that evaluates to a dict.
176
+
177
+ For relation fields, the following options are available: `no_create`, `no_quick_create`,
178
+ `no_open`, and `no_create_edit`.
179
+
180
+ .. example::
181
+ ```xml
182
+
183
+ <field name="tag_ids" widget="many2many_tags" options="{'color_field': 'FIELD_NAME', 'no_quick_create': True}"/>
184
+
185
+ :requirement: Optional
186
+ :type: :ref:`Python expression <reference/view_architectures/python_expression>`
187
+ :default: `{}`
188
+
189
+ .. include:: view_architectures/field_attribute_readonly.rst
190
+
191
+ .. include:: view_architectures/field_attribute_required.rst
192
+
193
+ .. include:: view_architectures/generic_attribute_invisible.rst
194
+
195
+ .. include:: view_architectures/generic_attribute_groups.rst
196
+
197
+ .. attribute:: domain
198
+ :noindex:
199
+
200
+ The filters to apply when displaying existing records for selection, as a Python expression that
201
+ evaluates to a :ref:`domain <reference/orm/domains>`.
202
+
203
+ .. example::
204
+ ```xml
205
+
206
+ <field name="fname" domain="[('fname_a', '=', parent.fname_b)]"/>
207
+
208
+ :requirement: Optional
209
+ :type: :ref:`Python expression <reference/view_architectures/python_expression>`
210
+ :default: `[]`
211
+ :scope: Relational fields
212
+
213
+ .. attribute:: context
214
+ :noindex:
215
+
216
+ .. todo:: extensive documentation on all the magic context values (TYPE_view_ref, group_by,
217
+ search_default_FIELD...
218
+
219
+ The context to use when fetching possible values and creating or searching records, as a Python
220
+ expression that evaluates to a dict.
221
+
222
+ .. example::
223
+ ```xml
224
+
225
+ <field name="fname" context="{
226
+ 'TYPE_view_ref': 'ADDON.MODEL_view_TYPE',
227
+ 'group_by': 'FIELD_NAME',
228
+ 'default_FIELD_NAME': ANY,
229
+ 'search_default_FIELD_NAME': True,
230
+ 'OTHER_BUSINESS_KEY': ANY,
231
+ }"/>
232
+
233
+ :requirement: Optional
234
+ :type: :ref:`Python expression <reference/view_architectures/python_expression>`
235
+ :default: `{}`
236
+ :scope: Relational fields
237
+
238
+ .. attribute:: nolabel
239
+ :noindex:
240
+
241
+ Whether the field label should be hidden.
242
+
243
+ :requirement: Optional
244
+ :type: bool
245
+ :default: `False`
246
+ :scope: Fields that are a direct child of a `group` element
247
+
248
+ .. attribute:: placeholder
249
+ :noindex:
250
+
251
+ The help message to display on *empty* fields. It can replace field labels in complex forms.
252
+ However, it *should not* be an example of data, as users may confuse placeholder text with filled
253
+ fields.
254
+
255
+ :requirement: Optional
256
+ :type: str
257
+ :default: `''`
258
+
259
+ .. attribute:: mode
260
+ :noindex:
261
+
262
+ The comma-separated list of display modes (view types) to use for the field's linked records.
263
+ Allowed modes are: `list`, `form`, `kanban`, and `graph`.
264
+
265
+ :requirement: Optional
266
+ :type: str
267
+ :default: `list`
268
+ :scope: :class:`~odoo.fields.One2many` and :class:`~odoo.fields.Many2many` fields
269
+
270
+ .. include:: view_architectures/generic_attribute_class.rst
271
+
272
+ .. attribute:: filename
273
+ :noindex:
274
+
275
+ The name of the related field providing the name of the file.
276
+
277
+ :requirement: Optional
278
+ :type: str
279
+ :default: `''`
280
+ :scope: :class:`~odoo.fields.Binary` fields
281
+
282
+ .. attribute:: password
283
+ :noindex:
284
+
285
+ Whether the field stores a password and thus its data should not be displayed.
286
+
287
+ :requirement: Optional
288
+ :type: bool
289
+ :default: `False`
290
+ :scope: :class:`~odoo.fields.Char` fields
291
+
292
+ .. attribute:: kanban_view_ref
293
+ :noindex:
294
+
295
+ The XMLID of the specific Kanban :doc:`view record <view_records>` that should be used when
296
+ selecting records in a mobile environment.
297
+
298
+ :requirement: Optional
299
+ :type: str
300
+ :default: `''`
301
+ :scope: Relational fields
302
+
303
+ .. attribute:: default_focus
304
+ :noindex:
305
+
306
+ Whether the field is focused when the view opens. It can be applied to only one field of a view.
307
+
308
+ :requirement: Optional
309
+ :type: bool
310
+ :default: `False`
311
+
312
+ > **note**:
313
+ > :ref:`Relational fields <studio/fields/relational-fields>` nodes can contain specific subviews.
314
+
315
+ .. example::
316
+ ```xml
317
+
318
+ <field name="children_ids">
319
+ <list>
320
+ <field name="name"/>
321
+ </list>
322
+ <form>
323
+ <field name="id"/>
324
+ <field name="name"/>
325
+ </form>
326
+ </field>
327
+
328
+ .. _reference/view_architectures/form/label:
329
+
330
+ ### `label`: display field labels
331
+
332
+ When a :ref:`field <reference/view_architectures/form/field>` component is not placed directly
333
+ inside a :ref:`group <reference/view_architectures/form/group>`, or when its `nolabel` attribute is
334
+ set, the field's label is not automatically displayed alongside its value. The `label` component is
335
+ the manual alternative of displaying the label of a field.
336
+
337
+ ```xml
338
+
339
+ <form>
340
+ <div class="col col-md-auto">
341
+ <label for="FIELD_NAME" string="LABEL"/>
342
+ <div>
343
+ <field name="FIELD_NAME" class="oe_inline"/>
344
+ </div>
345
+ </div>
346
+ </form>
347
+
348
+ The `label` element can have the following attributes:
349
+
350
+ .. attribute:: for
351
+ :noindex:
352
+
353
+ The reference to the field associated with the label. It can be either the name of the field, or
354
+ its id (the `id` attribute set on the :ref:`field <reference/view_architectures/form/field>`).
355
+
356
+ When there are several occurrences of the same field in the view, and there are several `label`
357
+ components associated with these field nodes, these labels must have unique `for` attribute; in
358
+ this case, referencing the `id` attribute of the corresponding field nodes.
359
+
360
+ :requirement: Mandatory
361
+ :type: str
362
+
363
+ .. attribute:: string
364
+ :noindex:
365
+
366
+ The label to display.
367
+
368
+ :requirement: Optional
369
+ :type: str
370
+ :default: The field's label coming from the field definition on the model
371
+
372
+ .. include:: view_architectures/generic_attribute_class.rst
373
+
374
+ .. include:: view_architectures/generic_attribute_invisible.rst
375
+
376
+ .. _reference/view_architectures/form/button:
377
+
378
+ ### `button`: display action buttons
379
+
380
+ ```xml
381
+
382
+ <form>
383
+ <button type="object" name="ACTION" string="LABEL"/>
384
+ <button type="object" name="ACTION" icon="FONT_AWESOME"/>
385
+ </form>
386
+
387
+ The `button` element can have the following attributes:
388
+
389
+ .. include:: view_architectures/button_attribute_type.rst
390
+
391
+ .. include:: view_architectures/button_attribute_name.rst
392
+
393
+ .. include:: view_architectures/button_attribute_string.rst
394
+
395
+ .. include:: view_architectures/button_attribute_icon.rst
396
+
397
+ .. include:: view_architectures/button_attribute_help.rst
398
+
399
+ .. include:: view_architectures/button_attribute_context.rst
400
+
401
+ .. include:: view_architectures/generic_attribute_groups.rst
402
+
403
+ .. include:: view_architectures/generic_attribute_invisible.rst
404
+
405
+ .. include:: view_architectures/generic_attribute_class.rst
406
+
407
+ .. attribute:: special
408
+ :noindex:
409
+
410
+ The behavior of the button for form views opened in dialog. It can have two different values:
411
+
412
+ .. attribute:: save
413
+ :noindex:
414
+
415
+ Save the record and close the dialog.
416
+
417
+ .. attribute:: cancel
418
+ :noindex:
419
+
420
+ Close the dialog without saving.
421
+
422
+ .. example::
423
+ ```xml
424
+
425
+ <button special="cancel" icon="fa-trash"/>
426
+
427
+ :requirement: Optional
428
+ :type: str
429
+ :default: `''`
430
+
431
+ .. attribute:: confirm
432
+ :noindex:
433
+
434
+ The confirmation message to display (and for the user to accept) before performing the button's
435
+ action.
436
+
437
+ .. example::
438
+ ```xml
439
+
440
+ <button name="action_destroye_gate" string="Send the goa'uld" type="object" confirm="Do you confirm the action?"/>
441
+
442
+ :requirement: Optional
443
+ :type: str
444
+ :default: `''`
445
+
446
+ .. attribute:: data-hotkey
447
+ :noindex:
448
+
449
+ The hotkey (`keyboard_shortcut`_, similar to an accesskey_) that is bound to the button. It is
450
+ enabled when the `alt` key is pressed together with the selected character, or together with the
451
+ `shift` key and the selected character when `shift+` is prepended to the value.
452
+
453
+ .. example::
454
+ ```xml
455
+
456
+ <button type="object" name="action_confirm" string="Confirm" data-hotkey="c"/>
457
+ <button type="object" name="action_tear" string="Tear the sheet" data-hotkey="shift+k"/>
458
+
459
+ :requirement: Optional
460
+ :type: str
461
+ :default: `''`
462
+
463
+ .. _reference/view_architectures/form/chatter:
464
+
465
+ ### Chatter widget
466
+
467
+ The :ref:`chatter widget <reference/mixins/mail/chatter>` is the communication and log tool allowing
468
+ to email colleagues and customers directly from a record (task, order, invoice, event, note...).
469
+
470
+ It is added with a `div` element with the class `oe_chatter` when the model inherits the
471
+ `mail.thread` mixin.
472
+
473
+ .. example::
474
+ ```xml
475
+
476
+ <form>
477
+ <sheet>
478
+ ...
479
+ </sheet>
480
+ <div class="oe_chatter">
481
+ <field name="message_follower_ids"/>
482
+ <field name="activity_ids"/>
483
+ <field name="message_ids" options="OPTIONS"/>
484
+ </div>
485
+ </form>
486
+
487
+ .. _reference/view_architectures/form/attachment:
488
+
489
+ ### Attachments preview widget
490
+
491
+ The attachment preview widget is added with an *empty* `div` element with the class
492
+ `o_attachment_preview`.
493
+
494
+ .. example::
495
+ ```xml
496
+
497
+ <form>
498
+ <sheet>
499
+ ...
500
+ </sheet>
501
+ <div class="o_attachment_preview"/>
502
+ <form>
503
+
504
+ .. _reference/view_architectures/form/structural:
505
+
506
+ ## Structural components
507
+
508
+ Structural components provide structure or "visual" features with little logic. They are used as
509
+ elements or sets of elements in form views.
510
+
511
+ Form views accept the following children structural components: :ref:`group
512
+ <reference/view_architectures/form/group>`, :ref:`sheet <reference/view_architectures/form/sheet>`,
513
+ :ref:`notebook <reference/view_architectures/form/notebook>`,
514
+ :ref:`notebook <reference/view_architectures/form/notebook>`,
515
+ :ref:`newline <reference/view_architectures/form/newline>`,
516
+ :ref:`separator <reference/view_architectures/form/separator>`,
517
+ :ref:`header <reference/view_architectures/form/header>`,
518
+ :ref:`footer <reference/view_architectures/form/footer>`,
519
+ :ref:`reference/view_architectures/form/button_container`, and
520
+ :ref:`reference/view_architectures/form/title_container`.
521
+
522
+ Placeholders are denoted in all caps.
523
+
524
+ .. _reference/view_architectures/form/group:
525
+
526
+ ### `group`: define columns layouts
527
+
528
+ The `group` element is used to define column layouts in forms. By default, groups define 2 columns,
529
+ and most direct children of groups take a single column.
530
+
531
+ :ref:`field <reference/view_architectures/form/field>` elements that are direct children of groups
532
+ display a `label` by default, and the label and the field itself have a `colspan` of `1` each.
533
+
534
+ Children are laid out horizontally (they try to fill the next column before changing row).
535
+
536
+ ```xml
537
+
538
+ <form>
539
+ <group>
540
+ ...
541
+ </group>
542
+ </form>
543
+
544
+ The `group` element can have the following attributes:
545
+
546
+ .. attribute:: string
547
+ :noindex:
548
+
549
+ The title displayed for the group.
550
+
551
+ :requirement: Optional
552
+ :type: str
553
+ :default: `''`
554
+
555
+ .. attribute:: col
556
+ :noindex:
557
+
558
+ The number of columns in a `group`.
559
+
560
+ :requirement: Optional
561
+ :type: int
562
+ :default: `2`
563
+
564
+ .. attribute:: colspan
565
+ :noindex:
566
+
567
+ The number of columns taken by a child element.
568
+
569
+ :requirement: Optional
570
+ :type: int
571
+ :default: `1`
572
+
573
+ .. include:: view_architectures/generic_attribute_invisible.rst
574
+
575
+ .. admonition:: Possible structure and representation of its rendering
576
+
577
+ .. list-table::
578
+ :class: o-showcase-table
579
+
580
+ * - .. image:: view_architectures/form_group.svg
581
+ :align: center
582
+
583
+ * - ```xml
584
+
585
+ <group>
586
+ <field name="a" string="custom"/>
587
+ <field name="b"/>
588
+ </group>
589
+ <group string="title 1">
590
+ <group string="title 2">
591
+ <field name="c"/>
592
+ <field name="d"/>
593
+ </group>
594
+ <group>
595
+ <field name="e"/>
596
+ <field name="f"/>
597
+ <field name="g"/>
598
+ </group>
599
+ </group>
600
+ <group col="12">
601
+ <group colspan="8">
602
+ <field name="h"/>
603
+ </group>
604
+ <group colspan="4">
605
+ <field name="i"/>
606
+ </group>
607
+ </group>
608
+
609
+ .. _reference/view_architectures/form/sheet:
610
+
611
+ ### `sheet`: make the layout responsive
612
+
613
+ The `sheet` element can be used as a direct child of the :ref:`form
614
+ <reference/view_architectures/form>` root element for a narrower and more responsive form layout
615
+ (centered page, margin...). It usually contains :ref:`group
616
+ <reference/view_architectures/form/group>` elements.
617
+
618
+ ```xml
619
+
620
+ <form>
621
+ <sheet>
622
+ ...
623
+ </sheet>
624
+ </form>
625
+
626
+ .. _reference/view_architectures/form/notebook:
627
+
628
+ ### `notebook` & `page`: add tabbed sections
629
+
630
+ The `notebook` element defines a tabbed section. Each tab is defined through a `page` child element.
631
+
632
+ The `notebook` element should not be placed within `group` elements.
633
+
634
+ ```xml
635
+
636
+ <form>
637
+ <notebook>
638
+ <page string="LABEL">
639
+ ...
640
+ </page>
641
+ </notebook>
642
+ </form>
643
+
644
+ The `page` element can have the following attributes:
645
+
646
+ .. attribute:: string
647
+ :noindex:
648
+
649
+ The title of the tab.
650
+
651
+ :requirement: Optional
652
+ :type: `str`
653
+ :default: `''`
654
+
655
+ .. include:: view_architectures/generic_attribute_invisible.rst
656
+
657
+ .. admonition:: Possible structure and representation of its rendering
658
+
659
+ .. list-table::
660
+ :class: o-showcase-table
661
+
662
+ * - .. image:: view_architectures/form_notebook.svg
663
+ :align: center
664
+
665
+ * - ```xml
666
+
667
+ <form>
668
+ <notebook>
669
+ <page string="Page1">
670
+ ...
671
+ </page>
672
+ <page string="Page2">
673
+ ...
674
+ </page>
675
+ </notebook>
676
+ </form>
677
+
678
+ .. _reference/view_architectures/form/newline:
679
+
680
+ ### `newline`: start new group rows
681
+
682
+ The `newline` element is used within :ref:`group <reference/view_architectures/form/group>`
683
+ elements to end the current row early and immediately switch to a new row, without filling any
684
+ remaining column beforehand.
685
+
686
+ ```xml
687
+
688
+ <form>
689
+ <group>
690
+ ...
691
+ <newline/>
692
+ ...
693
+ </group>
694
+ </form>
695
+
696
+ .. admonition:: Possible structure and representation of its rendering
697
+
698
+ .. list-table::
699
+ :class: o-showcase-table
700
+
701
+ * - .. image:: view_architectures/form_newline.svg
702
+ :align: center
703
+
704
+ * - ```xml
705
+
706
+ <form>
707
+ <group string="Title 1">
708
+ <group string="Title 1.1">...</group>
709
+ <newline/>
710
+ <group string="Title 1.2">...</group>
711
+ <group string="Title 1.3">...</group>
712
+ </group>
713
+ </form>
714
+
715
+ .. _reference/view_architectures/form/separator:
716
+
717
+ ### `separator`: add horizontal spacing
718
+
719
+ The `separator` element adds vertical spacing between elements within a group.
720
+
721
+ ```xml
722
+
723
+ <form>
724
+ ...
725
+ <separator/>
726
+ ...
727
+ </form>
728
+
729
+ The `<separator>` element can have the following attributes:
730
+
731
+ .. attribute:: string
732
+ :noindex:
733
+
734
+ The title as a section title.
735
+
736
+ :requirement: Optional
737
+ :type: `str`
738
+ :default: `''`
739
+
740
+ .. admonition:: Possible structure and representation of its rendering
741
+
742
+ .. list-table::
743
+ :class: o-showcase-table
744
+
745
+ * - .. image:: view_architectures/form_separator.svg
746
+ :align: center
747
+
748
+ * - ```xml
749
+
750
+ <form>
751
+ <group>
752
+ <FIELD/>
753
+ <separator string="Title 1"/>
754
+ <FIELD/>
755
+ <group>
756
+ <FIELD/>
757
+ <separator string="Title 2"/>
758
+ <FIELD/>
759
+ </group>
760
+ <group>
761
+ <FIELD/>
762
+ <FIELD/>
763
+ </group>
764
+ </group>
765
+ </form>
766
+
767
+ > **tip**:
768
+ > The `separator` element can be used to achieve visual separation between elements within the same
769
+ inner `group` element while keeping them horizontally aligned.
770
+
771
+ .. _reference/view_architectures/form/header:
772
+
773
+ ### `header`: display workflow buttons and a status
774
+
775
+ The `header` element combined with the :ref:`sheet <reference/view_architectures/form/sheet>`
776
+ element provides a full-width location above the sheet itself generally used to display workflow
777
+ :ref:`button <reference/view_architectures/form/button>` elements and a :ref:`field
778
+ <reference/view_architectures/form/field>` element rendered as status widget.
779
+
780
+ ```xml
781
+
782
+ <form>
783
+ <header>
784
+ <BUTTONS/>
785
+ </header>
786
+ <sheet>
787
+ ...
788
+ </sheet>
789
+ </form>
790
+
791
+ .. example::
792
+
793
+ ```xml
794
+
795
+ <header>
796
+ <button string="Reset" type="object" name="set_draft" invisible="state != 'done'"/>
797
+ <field name="state" widget="statusbar" statusbar_visible="draft,posted" options="{'clickable': 1}"/>
798
+ </header>
799
+
800
+ .. _reference/view_architectures/form/footer:
801
+
802
+ ### `footer`: display dialog buttons
803
+
804
+ The `footer` element is used to display :ref:`buttons <reference/view_architectures/form/button>`
805
+ elements at the end of dialogs.
806
+
807
+ ```xml
808
+
809
+ <form>
810
+ <sheet>
811
+ ...
812
+ </sheet>
813
+ <footer>
814
+ <BUTTONS/>
815
+ </footer>
816
+ </form>
817
+
818
+ .. example::
819
+ ```xml
820
+
821
+ <footer>
822
+ <button string="Save" special="save"/>
823
+ <button string="Feature action" type="object" name="my_action" class="btn-primary"/>
824
+ <button string="Discard" special="cancel"/>
825
+ </footer>
826
+
827
+ When no `footer` element is specified, the view's standard buttons (like Save or Discard) will be
828
+ present by default. It is also possible to avoid replacing the standard buttons in form or x2many
829
+ dialogs by using the `replace` attribute. This attribute defaults to `True` if not specified but
830
+ setting it to `False` (or 0) will make it so that the specified `footer` will be added next to the
831
+ default buttons instead of replacing them.
832
+
833
+ .. example::
834
+ ```xml
835
+
836
+ <footer replace="0">
837
+ <button string="Custom added action" type="object" name="my_action" class="btn-primary"/>
838
+ </footer>
839
+
840
+ .. _reference/view_architectures/form/button_container:
841
+
842
+ ### Buttons container
843
+
844
+ A :ref:`button <reference/view_architectures/form/button>` elements container can be created with a
845
+ `div` element with the class `button_box`.
846
+
847
+ ```xml
848
+
849
+ <form>
850
+ <div name="button_box">
851
+ <BUTTONS/>
852
+ </div>
853
+ <form>
854
+
855
+ .. admonition:: Possible structure and representation of its rendering
856
+
857
+ .. list-table::
858
+ :class: o-showcase-table
859
+
860
+ * - .. image:: view_architectures/form_button_box.svg
861
+ :align: center
862
+
863
+ * - ```xml
864
+
865
+ <form>
866
+ <div name="button_box">
867
+ <button type="edit" name="edit" icon="fa-edit" string="Button1"/>
868
+ <button type="object" name="my_action" icon="fa-dollar">
869
+ <field name="total_inv" widget="statinfo" string="Invoices"/>
870
+ </button>
871
+ </div>
872
+ <form>
873
+
874
+ .. _reference/view_architectures/form/title_container:
875
+
876
+ ### Title container
877
+
878
+ A title :ref:`field <reference/view_architectures/form/field>` element container can be created with
879
+ a `div` element with the class `oe_title`.
880
+
881
+ ```xml
882
+
883
+ <form>
884
+ <sheet>
885
+ <div class="oe_title">
886
+ <h1><FIELD/></h1>
887
+ </div>
888
+ </sheet>
889
+ <form>
890
+
891
+ .. _reference/view_architectures/settings:
892
+
893
+ # Settings
894
+
895
+ Settings views are a customization of the :ref:`form <reference/view_architectures/form>` view. They
896
+ are used to display settings in a centralized place. They differ from generic form views in that
897
+ they have a search bar and a sidebar.
898
+
899
+ .. example::
900
+
901
+ ```xml
902
+
903
+ <app string="CRM" name="crm">
904
+ <setting type="header" string="Foo">
905
+ <field name="foo" title="Foo?."/>
906
+ <button name="nameAction" type="object" string="Button"/>
907
+ </setting>
908
+ <block title="Title of group Bar">
909
+ <setting help="this is bar" documentation="/applications/technical/web/settings/this_is_a_test.html">
910
+ <field name="bar"/>
911
+ </setting>
912
+ <setting string="This is Big BAR" company_specific="1">
913
+ <field name="bar"/>
914
+ </setting>
915
+ </block>
916
+ <block title="Title of group Foo">
917
+ <setting string="Personalize setting" help="this is full personalize setting">
918
+ <div>This is a different setting</div>
919
+ </setting>
920
+ </block>
921
+ </app>
922
+
923
+ .. _reference/view_architectures/settings/components:
924
+
925
+ ## Components
926
+
927
+ Settings views accept the :ref:`field <reference/view_architectures/form/field>`, :ref:`label
928
+ <reference/view_architectures/form/label>` and :ref:`button
929
+ <reference/view_architectures/form/button>` elements of :ref:`form
930
+ <reference/view_architectures/form>` views, as well as three additional children elements:
931
+ :ref:`app <reference/view_architectures/settings/app>`, :ref:`block
932
+ <reference/view_architectures/settings/block>`, and :ref:`setting
933
+ <reference/view_architectures/settings/setting>`.
934
+
935
+ Placeholders are denoted in all caps.
936
+
937
+ .. _reference/view_architectures/settings/app:
938
+
939
+ ### `app`: declare the application
940
+
941
+ The `app` element is used to declare the application on the settings view. It creates an entry with
942
+ the logo of the application on the sidebar of the view. It also acts as delimiter when searching.
943
+
944
+ ```xml
945
+
946
+ <form>
947
+ <app string="NAME" name="TECHNICAL_NAME">
948
+ ...
949
+ </app>
950
+ </form>
951
+
952
+ The `app` element can have the following attributes:
953
+
954
+ .. attribute:: string
955
+ :noindex:
956
+
957
+ The name of the application.
958
+
959
+ :requirement: Mandatory
960
+ :type: str
961
+
962
+ .. attribute:: name
963
+ :noindex:
964
+
965
+ The technical name of the application (the name of the module).
966
+
967
+ :requirement: Mandatory
968
+ :type: str
969
+
970
+ .. attribute:: logo
971
+ :noindex:
972
+
973
+ The `relative path`_ to the logo.
974
+
975
+ :requirement: Optional
976
+ :type: path_
977
+ :default: A path computed with the `name` attribute: :file:`/{name}/static/description/icon.png`
978
+
979
+ .. todo: document attribute notApp
980
+
981
+ .. include:: view_architectures/generic_attribute_groups.rst
982
+
983
+ .. include:: view_architectures/generic_attribute_invisible.rst
984
+
985
+ .. _reference/view_architectures/settings/block:
986
+
987
+ ### `block`: declare a group of settings
988
+
989
+ The `block` element is used to declare a group of settings. This group can have a title and a
990
+ description.
991
+
992
+ ```xml
993
+
994
+ <form>
995
+ <app string="NAME" name="TECHNICAL_NAME">
996
+ ...
997
+ <block title="TITLE">
998
+ ...
999
+ </block>
1000
+ ...
1001
+ </app>
1002
+ </form>
1003
+
1004
+ The `block` element can have the following attributes:
1005
+
1006
+ .. attribute:: title
1007
+ :noindex:
1008
+
1009
+ The title of the block of settings. One can search on its value.
1010
+
1011
+ :requirement: Optional
1012
+ :type: str
1013
+ :default: `''`
1014
+
1015
+ .. attribute:: help
1016
+ :noindex:
1017
+
1018
+ The description of the block of settings. One can search on its value.
1019
+
1020
+ :requirement: Optional
1021
+ :type: str
1022
+ :default: `''`
1023
+
1024
+ .. include:: view_architectures/generic_attribute_groups.rst
1025
+
1026
+ .. include:: view_architectures/generic_attribute_invisible.rst
1027
+
1028
+ .. _reference/view_architectures/settings/setting:
1029
+
1030
+ ### `setting`: declare the setting
1031
+
1032
+ The `setting` element is used to declare the setting itself.
1033
+
1034
+ The first :ref:`field <reference/view_architectures/form/field>` element in the setting is used as
1035
+ the main field. It is placed on the left panel if it is a boolean field, and on the top of the right
1036
+ panel otherwise. The field is also used to create the setting label if a `string` attribute is not
1037
+ defined.
1038
+
1039
+ The `setting` element can also contain additional elements (e.g., HTML). All of those elements are
1040
+ rendered in the right panel.
1041
+
1042
+ ```xml
1043
+
1044
+ <form>
1045
+ <app string="NAME" name="TECHNICAL_NAME">
1046
+ <block title="TITLE">
1047
+ ...
1048
+ <setting string="SETTING_NAME">
1049
+ ...
1050
+ <field name="FIELD_NAME"/>
1051
+ ...
1052
+ </setting>
1053
+ ...
1054
+ </block>
1055
+ </app>
1056
+ </form>
1057
+
1058
+ The `<setting>` element can have the following attributes:
1059
+
1060
+ .. attribute:: type
1061
+ :noindex:
1062
+
1063
+ By default, a setting is visually separated on two panels (left and right), and is used to edit a
1064
+ given :ref:`field <reference/view_architectures/form/field>`. By defining `type="header"`, a
1065
+ special kind of setting is rendered instead. This setting is used to modify the scope of the
1066
+ other settings. For example, on the Website application, this setting is used to indicate to
1067
+ which website the other settings apply. The header setting is visually represented as a banner on
1068
+ top of the screen.
1069
+
1070
+ :requirement: Optional
1071
+ :type: str
1072
+ :default: `''`
1073
+
1074
+ .. attribute:: string
1075
+ :noindex:
1076
+
1077
+ The text used as the label of the setting.
1078
+
1079
+ :requirement: Optional
1080
+ :type: str
1081
+ :default: The first field's label
1082
+
1083
+ .. attribute:: title
1084
+ :noindex:
1085
+
1086
+ The text used as a tooltip.
1087
+
1088
+ :requirement: Optional
1089
+ :type: str
1090
+ :default: `''`
1091
+
1092
+ .. attribute:: help
1093
+ :noindex:
1094
+
1095
+ The description of the setting. This text is displayed just below the setting label (with the
1096
+ class `text-muted`).
1097
+
1098
+ :requirement: Optional
1099
+ :type: str
1100
+ :default: `''`
1101
+
1102
+ .. attribute:: company_dependent
1103
+ :noindex:
1104
+
1105
+ Whether the setting is company-specific. If set, an icon is displayed next to the setting label.
1106
+
1107
+ It accepts only the value `'1'`.
1108
+
1109
+ :requirement: Optional
1110
+ :type: str
1111
+ :default: `''`
1112
+
1113
+ .. attribute:: documentation
1114
+ :noindex:
1115
+
1116
+ The `path`_ to the documentation on the setting. If set, a clickable icon is displayed next to
1117
+ the setting label. The path can be both an absolute or a `relative path`_. In the latter case, it
1118
+ is relative to `https://www.odoo.com/documentation/<version>`.
1119
+
1120
+ :requirement: Optional
1121
+ :type: `path_`
1122
+ :default: `''`
1123
+
1124
+ .. include:: view_architectures/generic_attribute_groups.rst
1125
+
1126
+ .. include:: view_architectures/generic_attribute_invisible.rst
1127
+
1128
+ .. _reference/view_architectures/list:
1129
+
1130
+ # List
1131
+
1132
+ The root element of list views is `list` (the previous name was `tree`).
1133
+
1134
+ .. admonition:: Possible structure and representation of its rendering
1135
+
1136
+ .. list-table::
1137
+ :class: o-showcase-table
1138
+
1139
+ * - .. image:: view_architectures/list.svg
1140
+ :align: center
1141
+
1142
+ * - ```xml
1143
+
1144
+ <list>
1145
+ ...
1146
+ </list>
1147
+
1148
+ .. _reference/view_architectures/list/root:
1149
+
1150
+ ## Root attributes
1151
+
1152
+ Optional attributes can be added to the root element `list` to customize the view.
1153
+
1154
+ .. include:: view_architectures/root_attribute_string.rst
1155
+
1156
+ .. include:: view_architectures/root_attribute_create.rst
1157
+
1158
+ .. include:: view_architectures/root_attribute_edit.rst
1159
+
1160
+ .. include:: view_architectures/root_attribute_delete.rst
1161
+
1162
+ .. attribute:: import
1163
+ :noindex:
1164
+
1165
+ Disable/enable record import from data on the view.
1166
+
1167
+ :requirement: Optional
1168
+ :type: bool
1169
+ :default: `True`
1170
+
1171
+ .. attribute:: export_xlsx
1172
+ :noindex:
1173
+
1174
+ Disable/enable record export to data on the view.
1175
+
1176
+ :requirement: Optional
1177
+ :type: bool
1178
+ :default: `True`
1179
+
1180
+ .. attribute:: editable
1181
+ :noindex:
1182
+
1183
+ Make the view's records editable in-place, and allow creating new records from a row of the list.
1184
+ It can have two different values:
1185
+
1186
+ .. attribute:: top
1187
+ :noindex:
1188
+
1189
+ New records are created from the top of the list.
1190
+
1191
+ .. attribute:: bottom
1192
+ :noindex:
1193
+
1194
+ New records are created from the bottom of the list.
1195
+
1196
+ The architecture for the inline :ref:`form <reference/view_architectures/form>` view is derived
1197
+ from the list view. Most attributes valid on a form view's fields and buttons are thus accepted
1198
+ by list views, although they may not have any meaning if the list view is non-editable.
1199
+
1200
+ > **important**:
1201
+ > This behavior is disabled if the `edit` attribute is set to `False`.
1202
+
1203
+ :requirement: Optional
1204
+ :type: str
1205
+ :default: `''`
1206
+
1207
+ .. attribute:: multi_edit
1208
+ :noindex:
1209
+
1210
+ Activate the multi-editing feature that allows updating a field to the same value for multiple
1211
+ records at once.
1212
+
1213
+ It accepts only the value `'1'`.
1214
+
1215
+ :requirement: Optional
1216
+ :type: str
1217
+ :default: `''`
1218
+
1219
+ .. attribute:: open_form_view
1220
+ :noindex:
1221
+
1222
+ Display a button at the end of each row to open the record in a form view.
1223
+
1224
+ It has no effect if the view is non-editable.
1225
+
1226
+ :requirement: Optional
1227
+ :type: bool
1228
+ :default: `False`
1229
+
1230
+ .. include:: view_architectures/root_attribute_default_group_by.rst
1231
+
1232
+ .. include:: view_architectures/root_attribute_default_order.rst
1233
+
1234
+ .. attribute:: decoration-<style>
1235
+ :noindex:
1236
+
1237
+ The style that should be applied to matching records' rows, as a Python expression that evaluates
1238
+ to a bool.
1239
+
1240
+ `<style>` must be replaced by one of `bf` (bold), `it` (italic), `info`, `warning`, `danger`,
1241
+ `muted`, `primary`, and `success`.
1242
+
1243
+ .. example::
1244
+ ```xml
1245
+
1246
+ <list decoration-danger="field_qty &gt; field_limit">
1247
+ ...
1248
+ </list>
1249
+
1250
+ :requirement: Optional
1251
+ :type: :ref:`Python expression <reference/view_architectures/python_expression>`
1252
+ :default: `False`
1253
+
1254
+ .. attribute:: limit
1255
+ :noindex:
1256
+
1257
+ The default size of a page. It must be strictly positive.
1258
+
1259
+ :requirement: Optional
1260
+ :type: int
1261
+ :default: `80` for list views, `40` for X2many lists in form views
1262
+
1263
+ .. attribute:: groups_limit
1264
+ :noindex:
1265
+
1266
+ The default number of groups on a page when the list view is grouped. It must be strictly
1267
+ positive.
1268
+
1269
+ :requirement: Optional
1270
+ :type: int
1271
+ :default: `80` for list views, `40` for X2many lists in form views
1272
+
1273
+ .. attribute:: expand
1274
+ :noindex:
1275
+
1276
+ Whether the first level of groups should be opened by default when the list view is grouped.
1277
+
1278
+ > **warning**:
1279
+ > It may be slow, depending on the number of groups.
1280
+
1281
+ :requirement: Optional
1282
+ :type: bool
1283
+ :default: `False`
1284
+
1285
+ .. include:: view_architectures/root_attribute_sample.rst
1286
+
1287
+ .. _reference/view_architectures/list/components:
1288
+
1289
+ ## Components
1290
+
1291
+ List views accept the following children elements: :ref:`field
1292
+ <reference/view_architectures/list/field>`, :ref:`button
1293
+ <reference/view_architectures/list/button>`, :ref:`groupby
1294
+ <reference/view_architectures/list/groupby>`, :ref:`header
1295
+ <reference/view_architectures/list/header>`, :ref:`control, and create
1296
+ <reference/view_architectures/list/control>`.
1297
+
1298
+ Placeholders are denoted in all caps.
1299
+
1300
+ .. _reference/view_architectures/list/field:
1301
+
1302
+ ### `field`: display field values
1303
+
1304
+ The `field` element renders (and allows editing of, possibly) a single field of all current records
1305
+ as a column.
1306
+
1307
+ Using the same field multiple times in a list view is not supported
1308
+
1309
+ ```xml
1310
+
1311
+ <list>
1312
+ <field name="FIELD_NAME"/>
1313
+ </list>
1314
+
1315
+ The `field` element can have the following attributes:
1316
+
1317
+ .. include:: view_architectures/field_attribute_name.rst
1318
+
1319
+ .. include:: view_architectures/field_attribute_string.rst
1320
+
1321
+ .. attribute:: optional
1322
+ :noindex:
1323
+
1324
+ Make the visibility of the field optional. The field's column can be hidden or shown through a
1325
+ button on the view's header.
1326
+
1327
+ It can have two different values:
1328
+
1329
+ .. attribute:: show
1330
+ :noindex:
1331
+
1332
+ The field is shown by default.
1333
+
1334
+ .. attribute:: hide
1335
+ :noindex:
1336
+
1337
+ The field is hidden by default.
1338
+
1339
+ .. example::
1340
+ ```xml
1341
+
1342
+ <field name="fname_a" optional="show"/>
1343
+ <field name="fname_b" optional="hide"/>
1344
+
1345
+ :requirement: Optional
1346
+ :type: str
1347
+
1348
+ .. include:: view_architectures/field_attribute_readonly.rst
1349
+
1350
+ .. include:: view_architectures/field_attribute_required.rst
1351
+
1352
+ .. include:: view_architectures/generic_attribute_invisible.rst
1353
+
1354
+ .. include:: view_architectures/generic_attribute_column_invisible.rst
1355
+
1356
+ .. include:: view_architectures/generic_attribute_groups.rst
1357
+
1358
+ .. attribute:: decoration-<style>
1359
+ :noindex:
1360
+
1361
+ The style that should be applied to matching records' field, as a Python expression that
1362
+ evaluates to a bool.
1363
+
1364
+ `<style>` must be replaced by one of `bf` (bold), `it` (italic), `info`, `warning`, `danger`,
1365
+ `muted`, `primary`, and `success`.
1366
+
1367
+ .. example::
1368
+ ```xml
1369
+
1370
+ <field name="name" decoration-bf="1"/>
1371
+ <field name="quantity" decoration-info="state == 'draft'"/>
1372
+
1373
+ :requirement: Optional
1374
+ :type: :ref:`Python expression <reference/view_architectures/python_expression>`
1375
+ :default: `False`
1376
+
1377
+ .. attribute:: sum, avg
1378
+ :noindex:
1379
+
1380
+ The aggregate to display at the bottom of the column. The aggregation is computed on only
1381
+ records that are currently displayed. The aggregation operation must match the corresponding
1382
+ field's `aggregator`.
1383
+
1384
+ .. example::
1385
+ ```xml
1386
+
1387
+ <field name="sent" sum="Total" />
1388
+ <field name="clicks_ratio" avg="Average"/>
1389
+
1390
+ :requirement: Optional
1391
+ :type: str
1392
+ :default: `''`
1393
+
1394
+ .. attribute:: width
1395
+ :noindex:
1396
+
1397
+ The list view always tries to optimize the available space among columns. For some field types,
1398
+ this is done by enforcing a width, depending on the field type. For instance, we know exactly the
1399
+ number of pixels required to display a date, so we can ensure that a column for a date field
1400
+ doesn't take more space than what is strictly necessary, thus leaving the extra space for the
1401
+ other columns. However, the framework can't guess the adequate width for every field types. For
1402
+ instance, char fields can be used to encode large values, or 3-letter country codes. In the
1403
+ latter case, one can set the width directly in the arch (e.g. `width="40px"`). It represents
1404
+ the width (always in pixels) required to render the values inside the cells. The width of the
1405
+ column will then be the sum of the given value and the cells' left and right paddings.
1406
+
1407
+ :requirement: Optional
1408
+ :type: str
1409
+ :default: `''`
1410
+
1411
+ .. attribute:: nolabel
1412
+ :noindex:
1413
+
1414
+ Whether the field's column header should remain empty. If set, the column will not be sortable.
1415
+
1416
+ It accepts only the value `'1'`
1417
+
1418
+ :requirement: Optional
1419
+ :type: str
1420
+ :default: `''`
1421
+
1422
+ > **note**:
1423
+ > When a list view is grouped, numeric fields are aggregated and displayed for each group. Also, if
1424
+ there are too many records in a group, a pager appears on the right of the group row. For this
1425
+ reason, it is a bad practice to have a numeric field in the last column when the list view is in
1426
+ a situation where it can be grouped. However, it does not pose a problem for X2many fields in a
1427
+ form view, as they cannot be grouped.
1428
+
1429
+ .. admonition:: Possible structure and representation of its rendering
1430
+
1431
+ .. list-table::
1432
+ :class: o-showcase-table
1433
+
1434
+ * - .. image:: view_architectures/list_field.svg
1435
+ :align: center
1436
+
1437
+ * - ```xml
1438
+
1439
+ <list>
1440
+ <field name="name" string="My Custom Name"/>
1441
+ <field name="amount" sum="Total"/>
1442
+ <field name="currency_id"/>
1443
+ <field name="tax_id"/>
1444
+ </list>
1445
+
1446
+ .. _reference/view_architectures/list/button:
1447
+
1448
+ ### `button`: display action buttons
1449
+
1450
+ ```xml
1451
+
1452
+ <list>
1453
+ <button type="object" name="ACTION" string="LABEL"/>
1454
+ <button type="object" name="ACTION" icon="FONT_AWESOME"/>
1455
+ </list>
1456
+
1457
+ The `button` element can have the following attributes:
1458
+
1459
+ .. include:: view_architectures/button_attribute_type.rst
1460
+
1461
+ .. include:: view_architectures/button_attribute_name.rst
1462
+
1463
+ .. include:: view_architectures/button_attribute_string.rst
1464
+
1465
+ .. include:: view_architectures/button_attribute_icon.rst
1466
+
1467
+ .. include:: view_architectures/button_attribute_help.rst
1468
+
1469
+ .. include:: view_architectures/button_attribute_context.rst
1470
+
1471
+ .. include:: view_architectures/generic_attribute_groups.rst
1472
+
1473
+ .. include:: view_architectures/generic_attribute_invisible.rst
1474
+
1475
+ .. include:: view_architectures/generic_attribute_column_invisible.rst
1476
+
1477
+ .. include:: view_architectures/generic_attribute_class.rst
1478
+
1479
+ .. admonition:: Possible structure and representation of its rendering
1480
+
1481
+ .. list-table::
1482
+ :class: o-showcase-table
1483
+
1484
+ * - .. image:: view_architectures/list_button.svg
1485
+ :align: center
1486
+
1487
+ * - ```xml
1488
+
1489
+ <list>
1490
+ <field name="name"/>
1491
+ <button type="edit" name="edit" icon="fa-edit" title="Edit"/>
1492
+ <button type="object" name="my_method" string="Button1" column_invisible="context.get('hide_button')" invisible="amount &gt; 3"/>
1493
+ <field name="amount"/>
1494
+ <field name="currency_id"/>
1495
+ <field name="tax_id"/>
1496
+ </list>
1497
+
1498
+ .. _reference/view_architectures/list/groupby:
1499
+
1500
+ ### `groupby`: define group headers
1501
+
1502
+ The `groupby` element is used to define group headers with :ref:`button
1503
+ <reference/view_architectures/list/button>` elements when grouping records on
1504
+ :attr:`~odoo.fields.Many2one` fields. It also accepts :ref:`field
1505
+ <reference/view_architectures/list/field>` elements, which can be used for modifiers. These fields
1506
+ thus belong on the Many2one co-model. These extra fields are fetched in batch.
1507
+
1508
+ ```xml
1509
+
1510
+ <list>
1511
+ ...
1512
+ <groupby name="FIELD_NAME">
1513
+ <BUTTONS/>
1514
+ <FIELDS/>
1515
+ </groupby>
1516
+ </list>
1517
+
1518
+ The `groupby` element can have the following attributes:
1519
+
1520
+ .. attribute:: name
1521
+ :noindex:
1522
+
1523
+ The name of the a :attr:`~odoo.fields.Many2one` field to use as header.
1524
+
1525
+ A special :ref:`button <reference/view_architectures/list/button>` element with `type="edit"` can
1526
+ be defined to open the Many2one field's form view.
1527
+
1528
+ :requirement: Mandatory
1529
+ :type: str
1530
+
1531
+ .. admonition:: Possible structure and representation of its rendering
1532
+
1533
+ .. list-table::
1534
+ :class: o-showcase-table
1535
+
1536
+ * - .. image:: view_architectures/list_groupby.svg
1537
+ :align: center
1538
+
1539
+ * - ```xml
1540
+
1541
+ <list>
1542
+ <field name="name"/>
1543
+ <field name="amount"/>
1544
+ <field name="currency"/>
1545
+ <field name="tax_id"/>
1546
+
1547
+ <groupby name="partner_id">
1548
+ <button type="edit" name="edit" icon="fa-edit" title="Edit"/>
1549
+ <field name="email"/>
1550
+ <button type="object" name="my_method" string="Button1" invisible="email == 'jhon@conor.com'"/>
1551
+ </groupby>
1552
+ </list>
1553
+
1554
+ > **note**:
1555
+ > Fields inside the `groupby` element are used only to fetch and store the value, but they are
1556
+ never displayed.
1557
+
1558
+ .. _reference/view_architectures/list/header:
1559
+
1560
+ ### `header`: display workflow buttons
1561
+
1562
+ ```xml
1563
+
1564
+ <list>
1565
+ <header>
1566
+ <BUTTONS/>
1567
+ </header>
1568
+ ...
1569
+ </list>
1570
+
1571
+ The `header` element accepts the following children elements:
1572
+
1573
+ .. attribute:: button
1574
+ :noindex:
1575
+
1576
+ The `button` element allows defining buttons in the control panel. It is the same element as the
1577
+ :ref:`button element in list views <reference/view_architectures/list/button>`, but it accepts
1578
+ one more attribute when placed inside a `header` element:
1579
+
1580
+ .. attribute:: display
1581
+ :noindex:
1582
+
1583
+ Make the button available at all time, without having to select records.
1584
+
1585
+ It accepts only the value `always`.
1586
+
1587
+ .. example::
1588
+
1589
+ ```xml
1590
+
1591
+ <header>
1592
+ <button name="toDoAlways" type="object" string="Always displayed" display="always"/>
1593
+ <button name="toDoSelection" type="object" string="Displayed if selection"/>
1594
+ </header>
1595
+
1596
+ :requirement: Optional
1597
+ :type: str
1598
+ :default: `''`
1599
+
1600
+ .. admonition:: Possible structure and representation of its rendering
1601
+
1602
+ .. list-table::
1603
+ :class: o-showcase-table
1604
+
1605
+ * - .. image:: view_architectures/list_header.svg
1606
+ :align: center
1607
+
1608
+ * - ```xml
1609
+
1610
+ <list>
1611
+ <header>
1612
+ <button type="object" name="to_draft" string="Button1" invisible="context.get('hide_button')"/>
1613
+ </header>
1614
+ <field name="name"/>
1615
+ <field name="amount"/>
1616
+ <field name="currency"/>
1617
+ <field name="tax_id"/>
1618
+ </list>
1619
+
1620
+ .. _reference/view_architectures/list/control:
1621
+
1622
+ ### `control` & `create`: add inline create buttons
1623
+
1624
+ The `control` element defines a control row that accepts create buttons. Each create button is
1625
+ defined through a `create` element.
1626
+
1627
+ ```xml
1628
+
1629
+ <list>
1630
+ <control>
1631
+ <create string="LABEL"/>
1632
+ <BUTTONS/>
1633
+ </control>
1634
+ ...
1635
+ </list>
1636
+
1637
+ The `control` element takes no attributes.
1638
+
1639
+ The `create` element can have the following attributes:
1640
+
1641
+ .. attribute:: string
1642
+ :noindex:
1643
+
1644
+ The button's text.
1645
+
1646
+ :requirement: Mandatory
1647
+ :type: str
1648
+
1649
+ .. attribute:: context
1650
+ :noindex:
1651
+
1652
+ The context that is merged into the view's context when performing the button's call, as a Python
1653
+ expression that evaluates to a dict.
1654
+
1655
+ :requirement: Optional
1656
+ :type: :ref:`Python expression <reference/view_architectures/python_expression>`
1657
+ :default: `{}`
1658
+
1659
+ .. admonition:: Possible structure and representation of its rendering
1660
+
1661
+ .. list-table::
1662
+ :class: o-showcase-table
1663
+
1664
+ * - .. image:: view_architectures/list_control.svg
1665
+ :align: center
1666
+
1667
+ * - ```xml
1668
+
1669
+ <list>
1670
+ <field name="name"/>
1671
+ <field name="amount"/>
1672
+ <field name="currency"/>
1673
+ <field name="tax_id"/>
1674
+ <control>
1675
+ <create string="Add a item"/>
1676
+ <create string="Add a section" context="{'default_type': 'section'}"/>
1677
+ <create string="Add a note" context="{'default_type': 'note'}"/>
1678
+ </control>
1679
+ </list>
1680
+
1681
+ > **note**:
1682
+ > Using the `control` element makes sense only if the list view is inside a
1683
+ :class:`~odoo.fields.One2many` or :class:`~odoo.fields.Many2many` field. If any `create` element
1684
+ is defined, it overwrites the default :guilabel:`add a line` button.
1685
+
1686
+ .. _reference/view_architectures/search:
1687
+
1688
+ # Search
1689
+
1690
+ Search views are different from other view types in that they are not used to display content.
1691
+ Although they apply to a specific model, they are used to filter another view's content (usually
1692
+ aggregated views; e.g., :ref:`reference/view_architectures/list` and
1693
+ :ref:`reference/view_architectures/graph`).
1694
+
1695
+ The root element of search views is `search`.
1696
+
1697
+ It takes no attributes.
1698
+
1699
+ .. admonition:: Possible structure and representation of its rendering
1700
+
1701
+ .. list-table::
1702
+ :class: o-showcase-table
1703
+
1704
+ * - .. image:: view_architectures/search.svg
1705
+ :align: center
1706
+
1707
+ * - ```xml
1708
+
1709
+ <search>
1710
+ ...
1711
+ </search>
1712
+
1713
+ .. _reference/view_architectures/search/components:
1714
+
1715
+ ## Components
1716
+
1717
+ Search views accept the following children elements: :ref:`field
1718
+ <reference/view_architectures/search/field>`, :ref:`filter
1719
+ <reference/view_architectures/search/filter>`, :ref:`separator
1720
+ <reference/view_architectures/search/separator>`, :ref:`group
1721
+ <reference/view_architectures/search/group>`, and :ref:`searchpanel
1722
+ <reference/view_architectures/search/searchpanel>`.
1723
+
1724
+ Placeholders are denoted in all caps.
1725
+
1726
+ .. _reference/view_architectures/search/field:
1727
+
1728
+ ### `field`: filter based on field values
1729
+
1730
+ The `field` element defines domains or contexts with user-provided values. When search domains are
1731
+ generated, field domains are joined with each other and with filters using the **AND** operator.
1732
+
1733
+ ```xml
1734
+
1735
+ <search>
1736
+ <field name="FIELD_NAME"/>
1737
+ </search>
1738
+
1739
+ The `field` element can have the following attributes:
1740
+
1741
+ .. attribute:: name
1742
+ :noindex:
1743
+
1744
+ The name of the field to filter on.
1745
+
1746
+ :requirement: Mandatory
1747
+ :type: str
1748
+
1749
+ .. include:: view_architectures/field_attribute_string.rst
1750
+
1751
+ .. attribute:: operator
1752
+ :noindex:
1753
+
1754
+ By default, fields generate domains of the form :samp:`[(name, {operator}, value)]`, where `name`
1755
+ is the field's name and `value` is the value provided by the user, possibly filtered or
1756
+ transformed (e.g., a user is expected to provide the *label* of a selection field's value, not
1757
+ the value itself).
1758
+
1759
+ The `operator` attribute allows overriding the default operator, which depends on the field's
1760
+ type (e.g., `=` for float fields, but `ilike` for char fields and `child_of` for many2one).
1761
+
1762
+ :requirement: Optional
1763
+ :type: str
1764
+ :default: `=`
1765
+
1766
+ .. attribute:: filter_domain
1767
+ :noindex:
1768
+
1769
+ The domain to use as the field's search domain, as a Python expression that evaluates to a
1770
+ :ref:`domain <reference/orm/domains>`.
1771
+
1772
+ It can use the `self` variable to inject the provided value in the custom domain. It can be used
1773
+ to generate significantly more flexible domains than with the `operator` attribute alone (e.g.,
1774
+ search on multiple fields at once).
1775
+
1776
+ If both the `operator` and `filter_domain` attributes are provided, `filter_domain` takes
1777
+ precedence.
1778
+
1779
+ :requirement: Optional
1780
+ :type: :ref:`Python expression <reference/view_architectures/python_expression>`
1781
+ :default: `[]`
1782
+
1783
+ .. attribute:: context
1784
+ :noindex:
1785
+
1786
+ The context to merge into the context of the view that the search view is targeting, as a Python
1787
+ expression that evaluates to a dict.
1788
+
1789
+ It can contain user-provided values, which are available under the `self` variable.
1790
+
1791
+ :requirement: Optional
1792
+ :type: :ref:`Python expression <reference/view_architectures/python_expression>`
1793
+ :default: `{}`
1794
+
1795
+ .. attribute:: domain
1796
+ :noindex:
1797
+
1798
+ The filters to apply to the completion results for fields that allow for auto-completion (e.g.,
1799
+ :class:`~odoo.fields.Many2one`).
1800
+
1801
+ :requirement: Optional
1802
+ :type: :ref:`Python expression <reference/view_architectures/python_expression>`
1803
+ :default: `[]`
1804
+
1805
+ .. include:: view_architectures/generic_attribute_groups.rst
1806
+
1807
+ .. include:: view_architectures/generic_attribute_invisible.rst
1808
+
1809
+ .. admonition:: Possible structure and representation of its rendering
1810
+
1811
+ .. list-table::
1812
+ :class: o-showcase-table
1813
+
1814
+ * - .. image:: view_architectures/search_field.svg
1815
+ :align: center
1816
+
1817
+ * - ```xml
1818
+
1819
+ <search>
1820
+ <field name="name" string="My Custom Name"/>
1821
+ <field name="amount"/>
1822
+ <field name="currency_id"/>
1823
+ <field name="ref" filter_domain="[('name', 'like', self)]"/>
1824
+ </search>
1825
+
1826
+ .. _reference/view_architectures/search/filter:
1827
+
1828
+ ### `filter`: create pre-defined filters
1829
+
1830
+ The `filter` element is used to create pre-defined filters that can be toggled in the search view.
1831
+ It allows adding data to the search context :dfn:`the context passed to the data view for
1832
+ searching/filtering`, or appending new sections to the search filter.
1833
+
1834
+ ```xml
1835
+
1836
+ <search>
1837
+ <filter string="LABEL" domain="DOMAIN"/>
1838
+ </search>
1839
+
1840
+ The `filter` element can have the following attributes:
1841
+
1842
+ .. attribute:: name
1843
+ :noindex:
1844
+
1845
+ The technical name of the filter. It can be used to :ref:`enable it by default
1846
+ <reference/view_architectures/search/defaults>` or as an :ref:`inheritance hook
1847
+ <reference/view_records/inheritance>`.
1848
+
1849
+ :requirement: Mandatory
1850
+ :type: str
1851
+
1852
+ .. attribute:: string
1853
+ :noindex:
1854
+
1855
+ The label of the filter.
1856
+
1857
+ :requirement: Mandatory
1858
+ :type: str
1859
+
1860
+ .. attribute:: help
1861
+ :noindex:
1862
+
1863
+ The tooltip displayed when hovering the filter.
1864
+
1865
+ :requirement: Optional
1866
+ :type: str
1867
+ :default: `''`
1868
+
1869
+ .. attribute:: domain
1870
+ :noindex:
1871
+
1872
+ The domain to append to the action's domain as part of the search domain.
1873
+
1874
+ :requirement: Optional
1875
+ :type: :ref:`Python expression <reference/view_architectures/python_expression>`
1876
+ :default: `[]`
1877
+
1878
+ .. attribute:: date
1879
+ :noindex:
1880
+
1881
+ The name of the `date` or `datetime` field to filter on.
1882
+
1883
+ When used, this attribute creates a set of filters available in a sub-menu of the
1884
+ :guilabel:`Filters` menu. The available filters are time-dependent but not dynamic in the sense
1885
+ that their domains are evaluated at the time of the control panel instantiation.
1886
+
1887
+ .. example::
1888
+ ```xml
1889
+
1890
+ <filter string="Creation Date" name="filter_create_date" date="create_date"/>
1891
+
1892
+ By default, these filters contain a dropdown with different sub-filters that allow you to filter based on months, quarters and years.
1893
+ Additionally, you can create custom sub-filters that allow filtering using domains.
1894
+ These custom filters must have the following attributes: `name`, `string` and `domain`.
1895
+
1896
+ .. example::
1897
+ ```xml
1898
+
1899
+ <filter string="Creation Date" name="filter_create_date" date="create_date">
1900
+ <filter name="create_date_last_30_days" string="Last 30 Days" domain="[('create_date', '&gt;', datetime.datetime.combine(context_today() - relativedelta(days=30), datetime.time(23, 59, 59)).to_utc())]"/>
1901
+ </filter>
1902
+
1903
+ Note that all custom filters defined this way are mutually exclusive with each other and with the other sub-filters.
1904
+
1905
+ :requirement: Optional
1906
+ :type: str
1907
+ :default: `''`
1908
+
1909
+ .. attribute:: start_month
1910
+ :noindex:
1911
+
1912
+ The earliest month that will show up in the dropdown of a date filter, as an offset relative to the current month.
1913
+
1914
+ .. example::
1915
+ ```xml
1916
+
1917
+ <filter string="Creation Date" name="filter_create_date" date="create_date" start_month="-3"/>
1918
+
1919
+ If the current month is February, the earliest month selectable in the dropdown will be November.
1920
+
1921
+ :requirement: Optional
1922
+ :type: int
1923
+ :default: `-2`
1924
+ :scope: Filters with a non-empty `date` attribute
1925
+
1926
+ .. attribute:: end_month
1927
+ :noindex:
1928
+
1929
+ The latest month that will show up in the dropdown of a date filter, as an offset relative to the current month.
1930
+
1931
+ .. example::
1932
+ ```xml
1933
+
1934
+ <filter string="Creation Date" name="filter_create_date" date="create_date" end_month="2"/>
1935
+
1936
+ If the current month is February, the latest month selectable in the dropdown will be March.
1937
+
1938
+ :requirement: Optional
1939
+ :type: int
1940
+ :default: `0`
1941
+ :scope: Filters with a non-empty `date` attribute
1942
+
1943
+ .. attribute:: start_year
1944
+ :noindex:
1945
+
1946
+ The earliest year that will show up in the dropdown of a date filter, as an offset relative to the current year.
1947
+
1948
+ .. example::
1949
+ ```xml
1950
+
1951
+ <filter string="Creation Date" name="filter_create_date" date="create_date" start_year="-3"/>
1952
+
1953
+ If the current year is 2024, the earliest year selectable in the dropdown will be 2021.
1954
+
1955
+ :requirement: Optional
1956
+ :type: int
1957
+ :default: `-2`
1958
+ :scope: Filters with a non-empty `date` attribute
1959
+
1960
+ .. attribute:: end_year
1961
+ :noindex:
1962
+
1963
+ The latest year that will show up in the dropdown of a date filter, as an offset relative to the current year.
1964
+
1965
+ .. example::
1966
+ ```xml
1967
+
1968
+ <filter string="Creation Date" name="filter_create_date" date="create_date" end_year="2"/>
1969
+
1970
+ If the current year is 2024, the latest year selectable in the dropdown will be 2025.
1971
+
1972
+ :requirement: Optional
1973
+ :type: int
1974
+ :default: `0`
1975
+ :scope: Filters with a non-empty `date` attribute
1976
+
1977
+ .. attribute:: default_period
1978
+ :noindex:
1979
+
1980
+ The default period of the time-based filter (with a `date` attribute). It must be one of, or a
1981
+ comma-separated list of valid filter ids.
1982
+
1983
+ Valid filter ids include the following:
1984
+
1985
+ - `first_quarter`, `second_quarter`, `third_quarter` and `fourth_quarter`.
1986
+ - One of `month`, `month-x` and `month+x`, where `x` is a non-zero integer value between `start_month` and `end_month`.
1987
+ - One of `year`, `year-x` and `year+x`, where `x` is a non-zero integer value between `start_year` and `end_year`.
1988
+ - The `name` of any custom filter defined within the filter, prepended with `custom_`.
1989
+
1990
+ The filter must be in the default set of filters activated at the view initialization.
1991
+
1992
+ .. example::
1993
+ ```xml
1994
+
1995
+ <filter string="Creation Date" name="filter_create_date" date="create_date" default_period="year,month-1"/>
1996
+
1997
+ .. example::
1998
+ ```xml
1999
+
2000
+ <filter string="Creation Date" name="filter_create_date" date="create_date" default_period="custom_create_date_last_30_days">
2001
+ <filter name="create_date_last_30_days" string="Last 30 Days" domain="[('create_date', '&gt;', datetime.datetime.combine(context_today() - relativedelta(days=30), datetime.time(23, 59, 59)).to_utc())]"/>
2002
+ </filter>
2003
+
2004
+ :requirement: Optional
2005
+ :type: str
2006
+ :default: `month`, or the closest value to the current month if unavailable
2007
+ :scope: Filters with a non-empty `date` attribute
2008
+
2009
+ .. include:: view_architectures/generic_attribute_invisible.rst
2010
+
2011
+ .. include:: view_architectures/generic_attribute_groups.rst
2012
+
2013
+ .. attribute:: context
2014
+ :noindex:
2015
+
2016
+ The context merged into the action's domain to generate the search domain
2017
+
2018
+ The context key `group_by` set with a field as value can be used to define a group available in
2019
+ the :guilabel:`Group By` menu. When the field is of type `date` or `datetime`, the filter
2020
+ generates a submenu of the :guilabel:`Group By` menu with the following interval options
2021
+ available: :guilabel:`Year`, :guilabel:`Quarter`, :guilabel:`Month`, :guilabel:`Week`, and
2022
+ :guilabel:`Day`. When the filter is in the default set of filters activated at the view
2023
+ initialization, the records are grouped by month by default. This can be changed by using the
2024
+ syntax `date_field:interval`.
2025
+
2026
+ .. example::
2027
+ ```xml
2028
+
2029
+ <filter string="Category" name="groupby_category" context="{'group_by': 'category_id'}"/>
2030
+ <filter string="Creation Date" name="groupby_create_date" context="{'group_by': 'create_date:week'}"/>
2031
+
2032
+ > **note**:
2033
+ > The results of `read_groups` grouped on a field may be influenced by its `group_expand`
2034
+ attribute, allowing to display empty groups when needed. For more information, please refer to
2035
+ :class:`~odoo.fields.Field`.
2036
+
2037
+ :requirement: Optional
2038
+ :type: :ref:`Python expression <reference/view_architectures/python_expression>`
2039
+ :default: `{}`
2040
+
2041
+ .. caution::
2042
+ Sequences of filters (without non-filters elements separating them) are treated as inclusively
2043
+ composited: they will be composed with `OR` rather than the usual `AND`.
2044
+
2045
+ .. example::
2046
+ ```xml
2047
+
2048
+ <filter domain="[('state', '=', 'draft')]"/>
2049
+ <filter domain="[('state', '=', 'done')]"/>
2050
+
2051
+ Records whose `state` field is `draft` or `done` are shown.
2052
+
2053
+ .. example::
2054
+ ```xml
2055
+
2056
+ <filter domain="[('state', '=', 'draft')]"/>
2057
+ <separator/>
2058
+ <filter domain="[('delay', '&lt;', 15)]"/>
2059
+
2060
+ Records whose `state` field is `draft` **and** `delay` field is below 15.
2061
+
2062
+ .. admonition:: Possible structure and representation of its rendering
2063
+
2064
+ .. list-table::
2065
+ :class: o-showcase-table
2066
+
2067
+ * - .. image:: view_architectures/search_filter.svg
2068
+ :align: center
2069
+
2070
+ * - ```xml
2071
+
2072
+ <search>
2073
+ <filter string="My Custom Name" domain="[('name', 'ilike', 'AAA')]"/>
2074
+ <filter string="My orders" domain="[('user_id', '=', uid)]"/>
2075
+ <filter string="Category" context="{'group_by': 'category_id'}"/>
2076
+ </search>
2077
+
2078
+ .. _reference/view_architectures/search/separator:
2079
+
2080
+ ### `separator`: separate groups of filters
2081
+
2082
+ The `separator` element is used to separates groups of :ref:`filters
2083
+ <reference/view_architectures/search/filter>` in simple search views. For more complex search views,
2084
+ the :ref:`group <reference/view_architectures/search/group>` element is recommended.
2085
+
2086
+ ```xml
2087
+
2088
+ <search>
2089
+ <FILTERS/>
2090
+ <separator/>
2091
+ <FILTERS/>
2092
+ </search>
2093
+
2094
+ The `separator` element takes no attributes.
2095
+
2096
+ .. _reference/view_architectures/search/group:
2097
+
2098
+ ### `group`: separate groups of filters
2099
+
2100
+ The `group` element is used to separate groups of :ref:`filters
2101
+ <reference/view_architectures/search/filter>` in cluttered search views. In simpler search views, it
2102
+ can be substituted for the :ref:`separator <reference/view_architectures/search/group>` element.
2103
+
2104
+ ```xml
2105
+
2106
+ <search>
2107
+ <group>
2108
+ <FILTERS/>
2109
+ </group>
2110
+ </search>
2111
+
2112
+ The `group` element takes no attributes.
2113
+
2114
+ .. _reference/view_architectures/search/searchpanel:
2115
+
2116
+ ### `searchpanel`: display search panels
2117
+
2118
+ The `searchpanel` element displays a search panel to the left of multi-records views. It allows for
2119
+ quickly filtering data on the basis of given fields.
2120
+
2121
+ ```xml
2122
+
2123
+ <search>
2124
+ <searchpanel>
2125
+ <FIELDS/>
2126
+ </searchpanel>
2127
+ </search>
2128
+
2129
+ The `searchpanel` element accepts only `field` children elements.
2130
+
2131
+ The `field` element used as a child element of a `searchpanel` element can have the following
2132
+ attributes:
2133
+
2134
+ .. attribute:: name
2135
+ :noindex:
2136
+
2137
+ The name of the field to filter on.
2138
+
2139
+ :requirement: Mandatory
2140
+ :type: str
2141
+
2142
+ .. include:: view_architectures/field_attribute_string.rst
2143
+
2144
+ .. attribute:: select
2145
+ :noindex:
2146
+
2147
+ The behavior and display of the field. It can have two different values:
2148
+
2149
+ .. attribute:: one
2150
+ :noindex:
2151
+
2152
+ At most one value can be selected. Supported field types are `many2one` and `selection`.
2153
+
2154
+ .. attribute:: multi
2155
+ :noindex:
2156
+
2157
+ Several values can be selected. Supported field types are `many2one`, `many2many` and
2158
+ `selection`.
2159
+
2160
+ :requirement: Optional
2161
+ :type: str
2162
+ :default: `one`
2163
+
2164
+ .. include:: view_architectures/generic_attribute_groups.rst
2165
+
2166
+ .. attribute:: icon
2167
+ :noindex:
2168
+
2169
+ The icon of the field.
2170
+
2171
+ :requirement: Optional
2172
+ :type: str
2173
+ :default: `''`
2174
+
2175
+ .. attribute:: color
2176
+ :noindex:
2177
+
2178
+ The color of the field.
2179
+
2180
+ :requirement: Optional
2181
+ :type: str
2182
+ :default: `''`
2183
+
2184
+ When the `field` element has the `select=one` attribute set, it can have the following additional
2185
+ attributes:
2186
+
2187
+ .. attribute:: hierarchize
2188
+ :noindex:
2189
+
2190
+ Whether child categories should appear under their parent category, or at the same hierarchy
2191
+ level.
2192
+
2193
+ :requirement: Optional
2194
+ :type: bool
2195
+ :default: `True`
2196
+ :scope: :class:`~odoo.fields.Many2one` fields
2197
+
2198
+ When the `field` element has the `select=multi` attribute set, it can have the following additional
2199
+ attributes:
2200
+
2201
+ .. attribute:: enable_counters
2202
+ :noindex:
2203
+
2204
+ Whether the record counters is computed and displayed if non-zero.
2205
+
2206
+ > **tip**:
2207
+ > This attribute exists to avoid impacting performance. Another way to address performance
2208
+ issues is to override the `search_panel_select_range` and `search_panel_select_multi_range`
2209
+ methods.
2210
+
2211
+ :requirement: Optional
2212
+ :type: bool
2213
+ :default: `False`
2214
+
2215
+ .. attribute:: expand
2216
+ :noindex:
2217
+
2218
+ Whether categories and filters with no records should be shown.
2219
+
2220
+ :requirement: Optional
2221
+ :type: bool
2222
+ :default: `False`
2223
+
2224
+ .. attribute:: limit
2225
+ :noindex:
2226
+
2227
+ The maximal number of values to fetch for the field. If the limit is reached, no values are
2228
+ displayed on the search panel, and an error message is shown instead. If set to 0, all values are
2229
+ fetched.
2230
+
2231
+ :requirement: Optional
2232
+ :type: int
2233
+ :default: `200`
2234
+
2235
+ .. attribute:: domain
2236
+ :noindex:
2237
+
2238
+ The conditions that the records have to satisfy.
2239
+
2240
+ .. example::
2241
+ ```xml
2242
+
2243
+ <searchpanel>
2244
+ <field name="department_id"/>
2245
+ <field name="manager_id" select="multi" domain="[('department_id', '=', department_id)]"/>
2246
+ </searchpanel>
2247
+
2248
+ :requirement: Optional
2249
+ :type: :ref:`Python expression <reference/view_architectures/python_expression>`
2250
+ :default: `[]`
2251
+
2252
+ .. attribute:: groupby
2253
+ :noindex:
2254
+
2255
+ The name of the field name on which values should be grouped.
2256
+
2257
+ :requirement: Optional
2258
+ :type: str
2259
+ :default: `''`
2260
+ :scope: :class:`~odoo.fields.Many2one` and :class:`~odoo.fields.Many2many` fields
2261
+
2262
+ .. _reference/view_architectures/search/defaults:
2263
+
2264
+ ## Search defaults
2265
+
2266
+ Search fields and filters can be configured through the action's `context` using
2267
+ :samp:`search_default_{name}` keys. For fields, the value must be the value to set to the field. For
2268
+ filters, it must be a boolean value or a number.
2269
+
2270
+ .. example::
2271
+ With `foo`, a field, and `bar`, a filter, the following action context will search `foo` on
2272
+ `acro` and enable `bar` by default:
2273
+
2274
+ ```python
2275
+
2276
+ {
2277
+ 'search_default_foo': 'acro',
2278
+ 'search_default_bar': 1
2279
+ }
2280
+
2281
+ A numeric value (between 1 and 99) can be used to define the order of default *groupby* filters.
2282
+
2283
+ .. example::
2284
+ With `foo` and `bar`, two *groupby* filters, the following action context will first enable
2285
+ `bar`, then `foo`.
2286
+
2287
+ ```python
2288
+
2289
+ {
2290
+ 'search_default_foo': 2,
2291
+ 'search_default_bar': 1
2292
+ }
2293
+
2294
+ .. _reference/view_architectures/kanban:
2295
+
2296
+ # Kanban
2297
+
2298
+ Kanban views are used as a [kanban board ](https://en.wikipedia.org/wiki/Kanban_board)
2299
+ visualisation: they display records as "cards", halfway between a :ref:`list
2300
+ <reference/view_architectures/list>` and a :ref:`form <reference/view_architectures/form>` view.
2301
+
2302
+ Records may be grouped in columns for use in workflow visualisation or manipulation (e.g., tasks or
2303
+ work-progress management), or ungrouped (used simply to visualize records).
2304
+
2305
+ The root element of Kanban views is `kanban`.
2306
+
2307
+ .. admonition:: Possible structure and representation of its rendering
2308
+
2309
+ .. list-table::
2310
+ :class: o-showcase-table
2311
+
2312
+ * - .. image:: view_architectures/kanban.svg
2313
+ :align: center
2314
+
2315
+ * - ```xml
2316
+
2317
+ <kanban>
2318
+ ...
2319
+ </kanban>
2320
+
2321
+ > **note**:
2322
+ > Kanban views load and display a maximum of ten columns. Any column after that is closed but can
2323
+ still be opened by the user.
2324
+
2325
+ .. _reference/view_architectures/kanban/root:
2326
+
2327
+ ## Root attributes
2328
+
2329
+ Optional attributes can be added to the root element `kanban` to customize the view.
2330
+
2331
+ .. include:: view_architectures/root_attribute_string.rst
2332
+
2333
+ .. include:: view_architectures/root_attribute_create.rst
2334
+
2335
+ .. include:: view_architectures/root_attribute_edit.rst
2336
+
2337
+ .. include:: view_architectures/root_attribute_delete.rst
2338
+
2339
+ .. include:: view_architectures/root_attribute_default_group_by.rst
2340
+
2341
+ .. include:: view_architectures/root_attribute_default_order.rst
2342
+
2343
+ .. attribute:: class
2344
+ :noindex:
2345
+
2346
+ Add HTML classes to the root HTML element of the view.
2347
+
2348
+ :requirement: Optional
2349
+ :type: str
2350
+ :default: `''`
2351
+
2352
+ .. attribute:: examples
2353
+ :noindex:
2354
+
2355
+ The key in the `KanbanExamplesRegistry` of the examples that can be browsed when creating a new
2356
+ column in the grouped kanban view.
2357
+
2358
+ .. seealso::
2359
+ [Use of the examples attribute in the utm module
2360
+ ]({GITHUB_PATH}/addons/utm/static/src/js/utm_campaign_kanban_examples.js)
2361
+
2362
+ :requirement: Optional
2363
+ :type: str
2364
+ :default: `''`
2365
+
2366
+ .. attribute:: group_create
2367
+ :noindex:
2368
+
2369
+ Whether the :guilabel:`Add a new column` bar is visible.
2370
+
2371
+ :requirement: Optional
2372
+ :type: bool
2373
+ :default: `True`
2374
+
2375
+ .. attribute:: group_delete
2376
+ :noindex:
2377
+
2378
+ Whether columns can be deleted via the cog menu.
2379
+
2380
+ :requirement: Optional
2381
+ :type: bool
2382
+ :default: `True`
2383
+
2384
+ .. attribute:: group_edit
2385
+ :noindex:
2386
+
2387
+ Whether columns can be edited via the cog menu.
2388
+
2389
+ :requirement: Optional
2390
+ :type: bool
2391
+ :default: `True`
2392
+
2393
+ .. attribute:: groups_draggable
2394
+ :noindex:
2395
+
2396
+ Whether columns can be reordered.
2397
+
2398
+ :requirement: Optional
2399
+ :type: bool
2400
+ :default: `True`
2401
+
2402
+ .. attribute:: records_draggable
2403
+ :noindex:
2404
+
2405
+ Whether records can be dragged when the kanban view is grouped.
2406
+
2407
+ :requirement: Optional
2408
+ :type: bool
2409
+ :default: `True`
2410
+
2411
+ .. attribute:: archivable
2412
+ :noindex:
2413
+
2414
+ Whether records belonging to a column can be archived and unarchived when the `active` field is
2415
+ defined on the model.
2416
+
2417
+ :requirement: Optional
2418
+ :type: bool
2419
+ :default: `True`
2420
+
2421
+ .. attribute:: quick_create
2422
+ :noindex:
2423
+
2424
+ Whether it should be possible to create records without switching to the form view.
2425
+
2426
+ :requirement: Optional
2427
+ :type: bool
2428
+ :default: `True` when the kanban view is grouped by many2one, selection, char, or boolean fields,
2429
+ otherwise `False`
2430
+
2431
+ .. attribute:: quick_create_view
2432
+ :noindex:
2433
+
2434
+ The reference of the :ref:`form <reference/view_architectures/form>` view to open when using the
2435
+ quick creation of records.
2436
+
2437
+ :requirement: Optional
2438
+ :type: str
2439
+ :default: `''`
2440
+
2441
+ .. attribute:: on_create
2442
+ :noindex:
2443
+
2444
+ The custom action to call when clicking on :guilabel:`Create`.
2445
+
2446
+ If set to `'quick_create'`, the quick creation of records is used instead. If the quick creation
2447
+ is disabled, the standard create action is called.
2448
+
2449
+ :requirement: Optional
2450
+ :type: str
2451
+ :default: `''`
2452
+
2453
+ .. attribute:: can_open
2454
+ :noindex:
2455
+
2456
+ By default, clicking on a kanban card opens the corresponding record in a form view.
2457
+ This behavior can be disabled by setting the attribute `can_open` to `False`.
2458
+
2459
+ :requirement: Optional
2460
+ :type: bool
2461
+ :default: `True`
2462
+
2463
+ .. attribute:: highlight_color
2464
+ :noindex:
2465
+
2466
+ Name of the integer field used to color the left border of the kanban cards.
2467
+
2468
+ :requirement: Optional
2469
+ :type: str
2470
+
2471
+ .. include:: view_architectures/root_attribute_sample.rst
2472
+
2473
+ .. _reference/view_architectures/kanban/components:
2474
+
2475
+ ## Components
2476
+
2477
+ Kanban views accept the following children elements: :ref:`templates
2478
+ <reference/view_architectures/kanban/templates>`, :ref:`field
2479
+ <reference/view_architectures/kanban/field>`, :ref:`header
2480
+ <reference/view_architectures/kanban/header>`, :ref:`progressbar
2481
+ <reference/view_architectures/kanban/progressbar>`.
2482
+
2483
+ .. _reference/view_architectures/kanban/templates:
2484
+
2485
+ ### `templates`: define cards structure
2486
+
2487
+ The `templates` element is used to define the :ref:`QWeb templates <reference/qweb>` that structure
2488
+ the kanban cards.
2489
+
2490
+ The definition of a card's structure can be split into multiple templates for clarity, but at least
2491
+ one root `card` template must be defined.
2492
+
2493
+ An additional template can be defined: `menu`. If defined, it is rendered inside a dropdown
2494
+ that can be toggled with a vertical ellipsis (:guilabel:`⋮`) on the top right of the card.
2495
+
2496
+ The templates are written in :ref:`JavaScript QWeb <reference/qweb/javascript>`.
2497
+
2498
+ ```xml
2499
+
2500
+ <kanban>
2501
+ <templates>
2502
+ <t t-name="card">
2503
+ <field name="name"/>
2504
+ </t>
2505
+ </templates>
2506
+ </kanban>
2507
+
2508
+ > **warning**:
2509
+ > These are QWeb templates, not [Owl ](https://github.com/odoo/owl) templates, meaning that
2510
+ directives like `t-on-click` aren't available.
2511
+
2512
+ Fields
2513
+ ******
2514
+
2515
+ Inside those templates, the `field` element allows to render a field. It can have the following
2516
+ attributes:
2517
+
2518
+ .. include:: view_architectures/field_attribute_name.rst
2519
+
2520
+ By default, field nodes are replaced by a `span` containing their formatted value, unless the
2521
+ `widget` attribute is specified, in which case their rendering and behavior depends on the
2522
+ corresponding widget. The `widget` attribute can have different values including:
2523
+
2524
+ .. attribute:: handle
2525
+ :noindex:
2526
+
2527
+ Allows reordering records with a drag and drop, using the corresponding field as order.
2528
+
2529
+ .. attribute:: kanban_color_picker
2530
+ :noindex:
2531
+
2532
+ Allows editing a color (integer) field. Combined with the root attribute `highlight_color`,
2533
+ allows editing the color of the cards.
2534
+
2535
+ See the :ref:`Field section <reference/js/widgets>` to discover
2536
+ various widgets and their options.
2537
+
2538
+ Rendering Context
2539
+ *****************
2540
+
2541
+ Kanban templates being rendered with the :ref:`QWeb engine <reference/qweb/javascript>`, they have
2542
+ a *rendering context*, a set of variables available in the templates, containing useful information
2543
+ and tools. Here're the available variables:
2544
+
2545
+ .. attribute:: record
2546
+ :noindex:
2547
+
2548
+ An object with all the fields defined in the view. Each field has two attributes: `value`
2549
+ and `raw_value`. The former is formatted according to current user parameters, while the latter
2550
+ is the raw value (e.g. the `id` for a many2one field). This object is useful for instance, for
2551
+ using field values inside `t-if` conditions. For display purposes, we recommend using the
2552
+ `<field>` tag.
2553
+
2554
+ .. example::
2555
+ ```xml
2556
+
2557
+ <kanban>
2558
+ <templates>
2559
+ <field name="is_company"/>
2560
+ <t t-name="card">
2561
+ <field name="name"/>
2562
+ <field t-if="!record.is_company.raw_value" name="parent_id">
2563
+ </t>
2564
+ </templates>
2565
+ </kanban>
2566
+
2567
+ .. attribute:: widget
2568
+ :noindex:
2569
+
2570
+ An object with 2 keys defining the available actions for the user:
2571
+
2572
+ - `editable`: true if the user can edit records, false otherwise;
2573
+ - `deletable`: true if the user can delete records, false otherwise.
2574
+
2575
+ This is useful to conditionally display elements requiring specific access rights.
2576
+
2577
+ .. example::
2578
+ ```xml
2579
+
2580
+ <kanban>
2581
+ <templates>
2582
+ <t t-name="card">
2583
+ <field name="name"/>
2584
+ </t>
2585
+ <t t-name="menu">
2586
+ <a t-if="widget.deletable" role="menuitem" type="delete" class="dropdown-item">Delete</a>
2587
+ </t>
2588
+ </templates>
2589
+ </kanban>
2590
+
2591
+ .. attribute:: context
2592
+ :noindex:
2593
+
2594
+ The current context propagated from either the action that opens the kanban view, or the one2many
2595
+ or many2many field that embeds the kanban view in a form view.
2596
+
2597
+ .. attribute:: read_only_mode
2598
+ :noindex:
2599
+
2600
+ Indicates that the view is readonly.
2601
+
2602
+ :type: bool
2603
+
2604
+ .. attribute:: selection_mode
2605
+ :noindex:
2606
+
2607
+ Whether the kanban view is opened when selecting a many2one or many2many field (in mobile
2608
+ environment).
2609
+
2610
+ :type: bool
2611
+
2612
+ .. attribute:: luxon
2613
+ :noindex:
2614
+
2615
+ The [luxon ](https://moment.github.io/luxon/api-docs/index.html) object, allowing to
2616
+ manipulate date and datetime field values.
2617
+
2618
+ .. attribute:: JSON
2619
+ :noindex:
2620
+
2621
+ The Javascript [JSON ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON)
2622
+ namespace object containing a `parse` method allowing to parse json field values into Javascript
2623
+ Objects.
2624
+
2625
+ Buttons and links
2626
+ *****************
2627
+
2628
+ While most of the kanban templates are standard :ref:`QWeb templates <reference/qweb>`, the kanban
2629
+ view processes `button` and `a` elements is a special way. Buttons and links with a `type` attribute
2630
+ perform different operations than their standard HTML function. The `type` attribute can have the
2631
+ values `action` and `object` of :ref:`regular buttons <reference/view_architectures/list/button>`,
2632
+ or the following values:
2633
+
2634
+ .. attribute:: open
2635
+ :noindex:
2636
+
2637
+ Clicking the element opens the card's record in form view.
2638
+
2639
+ .. attribute:: delete
2640
+ :noindex:
2641
+
2642
+ Clicking the element deletes the card's record and removes the card.
2643
+
2644
+ .. attribute:: archive
2645
+ :noindex:
2646
+
2647
+ Clicking the element archives the card's record and removes the card.
2648
+
2649
+ .. attribute:: unarchive
2650
+ :noindex:
2651
+
2652
+ Clicking the element unarchives the card's record and removes the card.
2653
+
2654
+ .. attribute:: set_cover
2655
+ :noindex:
2656
+
2657
+ Clicking the element allows to select an image to set as cover image of the record.
2658
+
2659
+ Widgets
2660
+ *******
2661
+
2662
+ The `widget` element allows to insert dynamically generated (in Javascript) html inside the cards. It
2663
+ has a mandatory `name` attribute, referring to a Javascript implementation (an Owl component)
2664
+ registered to the `view_widgets` registry.
2665
+
2666
+ .. todo: document view_widgets registry and standard widgets
2667
+
2668
+ See the :ref:`Widget section <reference/javascript_reference/view_widgets>` to discover various
2669
+ widgets and their options.
2670
+
2671
+ Layouts
2672
+ *******
2673
+
2674
+ Several card layouts can be easily obtained using standard html elements and [Bootstrap utility
2675
+ classes ](https://getbootstrap.com/docs/5.0/utilities/api/). By default, the card is a [flexbox
2676
+ container ](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_flexible_box_layout/Basic_concepts_of_flexbox)
2677
+ with `column` direction.
2678
+
2679
+ .. example::
2680
+ ```xml
2681
+
2682
+ <kanban>
2683
+ <templates>
2684
+ <t t-name="card">
2685
+ <field class="fw-bold fs-5" name="display_name"/>
2686
+ <field class="text-muted" name="parent_id"/>
2687
+ <field name="tag_ids" widget="many2many_tags"/>
2688
+ </t>
2689
+ </templates>
2690
+ </kanban>
2691
+
2692
+ The `footer` html element is styled to stick to the bottom of the card, and is as a flexbox
2693
+ container with `row` direction, allowing to easily display several fields on the same line.
2694
+
2695
+ .. example::
2696
+ ```xml
2697
+
2698
+ <kanban>
2699
+ <templates>
2700
+ <t t-name="card">
2701
+ <field class="fw-bold fs-5" name="display_name"/>
2702
+ <field class="text-muted" name="parent_id"/>
2703
+ <field name="tag_ids" widget="many2many_tags"/>
2704
+ <footer>
2705
+ <field name="priority" widget="priority"/> <!-- bottom left corner -->
2706
+ <field class="ms-auto" name="activity_ids" widget="kanban_activity"/> <!-- bottom right corner -->
2707
+ </footer>
2708
+ </t>
2709
+ </templates>
2710
+ </kanban>
2711
+
2712
+ To display some content, like an image, on the side of the card, one can use `aside` and `main` html
2713
+ elements, with the `flex-row` classname on the card. The `main` node is a flexbox container like the
2714
+ card is when there's no `aside`.
2715
+
2716
+ .. example::
2717
+ ```xml
2718
+
2719
+ <kanban>
2720
+ <templates>
2721
+ <t t-name="card" class="flex-row">
2722
+ <aside>
2723
+ <field name="avatar_128" widget="image" alt="Avatar"/>
2724
+ </aside>
2725
+ <main class="ms-2">
2726
+ <field class="fw-bold fs-5" name="display_name"/>
2727
+ <field class="text-muted" name="parent_id"/>
2728
+ <field name="tag_ids" widget="many2many_tags"/>
2729
+ <footer>
2730
+ <field name="priority" widget="priority"/>
2731
+ <field class="ms-auto" name="activity_ids" widget="kanban_activity"/>
2732
+ </footer>
2733
+ </main>
2734
+ </t>
2735
+ </templates>
2736
+ </kanban>
2737
+
2738
+ > **tip**:
2739
+ > The classname `o_kanban_aside_full` set on the `aside` element removes the padding so that the
2740
+ image spreads to the borders of the card.
2741
+
2742
+ .. _reference/view_architectures/kanban/field:
2743
+
2744
+ ### `field`: declare more fields to fetch
2745
+
2746
+ The `field` element can also be used *outside* the kanban :ref:`templates
2747
+ <reference/view_architectures/kanban/templates>`. In that case, it allows to declare fields that are
2748
+ not displayed in the card, but still need to be fetched, for instance because their value is used
2749
+ in a `t-if` condition.
2750
+
2751
+ .. example::
2752
+ ```xml
2753
+
2754
+ <kanban>
2755
+ <templates>
2756
+ <field name="is_company"/>
2757
+ <t t-name="card">
2758
+ <field name="name"/>
2759
+ <field t-if="!record.is_company.raw_value" name="parent_id">
2760
+ </t>
2761
+ </templates>
2762
+ </kanban>
2763
+
2764
+ .. _reference/view_architectures/kanban/header:
2765
+
2766
+ ### `header`: display buttons in the control panel
2767
+
2768
+ The `header` element is used to insert custom buttons in the control panel.
2769
+
2770
+ ```xml
2771
+
2772
+ <kanban>
2773
+ <header>
2774
+ ...
2775
+ </header>
2776
+ ...
2777
+ </kanban>
2778
+
2779
+ The `header` element accepts only `button` children elements, similar to :ref:`list views' button
2780
+ <reference/view_architectures/list/button>` elements.
2781
+
2782
+ The `button` element used as a child element of the `header` element can have the following
2783
+ additional attributes:
2784
+
2785
+ .. attribute:: display
2786
+ :noindex:
2787
+
2788
+ The display mode of the button. It can have two different values:
2789
+
2790
+ .. attribute:: display
2791
+ :noindex:
2792
+
2793
+ The button is displayed only when some records are selected; their action applies to the
2794
+ selected records.
2795
+
2796
+
2797
+ .. attribute:: always
2798
+ :noindex:
2799
+
2800
+ The button is displayed at all times, even if no records are selected.
2801
+
2802
+ > **important**:
2803
+ > Only the `always` display mode is available because it is not yet possible to select records
2804
+ in a kanban view.
2805
+
2806
+ .. example::
2807
+ ```xml
2808
+
2809
+ <header>
2810
+ <button name="toDoAlways" type="object" string="Always displayed" display="always"/>
2811
+ <button name="toDoSelection" type="object" string="Displayed if selection"/>
2812
+ </header>
2813
+
2814
+ :requirement: Optional
2815
+ :type: str
2816
+ :default: `display`
2817
+
2818
+ .. _reference/view_architectures/kanban/progressbar:
2819
+
2820
+ ### `progressbar`: show progress bars on top of columns
2821
+
2822
+ The `progressbar` element is used to define a progress bar to display on top of kanban columns in
2823
+ grouped kanban views.
2824
+
2825
+ ```xml
2826
+
2827
+ <kanban>
2828
+ <progressbar field="FIELD_NAME"/>
2829
+ ...
2830
+ </kanban>
2831
+
2832
+ The `progressbar` element can have the following attributes:
2833
+
2834
+ .. attribute:: field
2835
+ :noindex:
2836
+
2837
+ The name of the field on which the progress bar's sub-groups
2838
+ are based.
2839
+
2840
+ :requirement: Mandatory
2841
+ :type: str
2842
+
2843
+ .. attribute:: colors
2844
+ :noindex:
2845
+
2846
+ The mapping of the progress bar's field values to the color values `muted`, `success`, `warning`,
2847
+ and `danger`.
2848
+
2849
+ :requirement: Mandatory
2850
+ :type: [JSON
2851
+ ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON)
2852
+
2853
+ .. attribute:: sum_field
2854
+ :noindex:
2855
+
2856
+ The name of the field to use in a sum displayed next to the progress bar. If not set, the total
2857
+ number of records is displayed instead.
2858
+
2859
+ :requirement: Optional
2860
+ :type: str
2861
+ :default: `''`
2862
+
2863
+ .. admonition:: Possible structure and representation of its rendering
2864
+
2865
+ .. list-table::
2866
+ :class: o-showcase-table
2867
+
2868
+ * - .. image:: view_architectures/kanban_progressbar.svg
2869
+ :align: center
2870
+
2871
+ * - ```xml
2872
+
2873
+ <kanban>
2874
+ <progressbar field="activity_state"
2875
+ colors="{'planned': 'success', 'today': 'warning', 'overdue': 'danger'}"
2876
+ sum_field="expected_revenue"/>
2877
+ <templates>
2878
+ ...
2879
+ </templates>
2880
+ </kanban>
2881
+
2882
+ .. todo::
2883
+ - kanban-specific CSS
2884
+ - kanban structures/widgets (vignette, details, ...)
2885
+
2886
+ .. ALL VIEWS BELOW HAVE NOT YET BEEN CONVERTED TO THE NEW REFERENCE DOCUMENTATION FORMAT
2887
+
2888
+ .. _reference/view_architectures/qweb:
2889
+
2890
+ # QWeb
2891
+
2892
+ QWeb views are standard :ref:`reference/qweb` templates inside a view's
2893
+ `arch`. They don't have a specific root element. Because QWeb views don't
2894
+ have a specific root element, their type must be specified explicitly (it can
2895
+ not be inferred from the root element of the `arch` field).
2896
+
2897
+ QWeb views have two use cases:
2898
+
2899
+ * they can be used as frontend templates, in which case
2900
+ :ref:`reference/data/template` should be used as a shortcut.
2901
+ * they can be used as actual qweb views (opened inside an action), in which
2902
+ case they should be defined as regular view with an explicit `type` (it
2903
+ can not be inferred) and a model.
2904
+
2905
+ The main additions of qweb-as-view to the basic qweb-as-template are:
2906
+
2907
+ * qweb-as-view has a special case for a `<nav>` element bearing the CSS
2908
+ class `o_qweb_cp_buttons`: its contents should be buttons and will be
2909
+ extracted and moved to the control panel's button area, the `<nav>` itself
2910
+ will be removed, this is a work-around to control panel views not existing
2911
+ yet
2912
+ * qweb-as-view rendering adds several items to the standard qweb rendering
2913
+ context:
2914
+
2915
+ .. rst-class:: o-definition-list
2916
+
2917
+ `model`
2918
+ the model to which the qweb view is bound
2919
+ `domain`
2920
+ the domain provided by the search view
2921
+ `context`
2922
+ the context provided by the search view
2923
+ `records`
2924
+ a lazy proxy to `model.search(domain)`, this can be used if you just
2925
+ want to iterate the records and not perform more complex operations
2926
+ (e.g. grouping)
2927
+ * qweb-as-view also provides additional rendering hooks:
2928
+
2929
+ - `_qweb_prepare_context(view_id, domain)` prepares the rendering context
2930
+ specific to qweb-as-view
2931
+ - `qweb_render_view(view_id, domain)` is the method called by the client
2932
+ and will call the context-preparation methods and ultimately
2933
+ `env['ir.qweb'].render()`.
2934
+
2935
+ .. _reference/view_architectures/graph:
2936
+
2937
+ # Graph
2938
+
2939
+ The graph view is used to visualize aggregations over a number of records or
2940
+ record groups. Its root element is `<graph>` which can take the following
2941
+ attributes:
2942
+
2943
+ .. rst-class:: o-definition-list
2944
+
2945
+ `type` (optional)
2946
+ one of `bar` (default), `pie` and `line`, the type of graph to use
2947
+
2948
+ `stacked` (optional)
2949
+ only used for `bar` charts. Set to `0` to prevent the bars within a group
2950
+ to be stacked initially.
2951
+
2952
+ `disable_linking` (optional)
2953
+ set to `1` to prevent from redirecting clicks on graph to list view
2954
+
2955
+ `order` (optional)
2956
+ if set, x-axis values will be sorted by default according their measure with
2957
+ respect to the given order (`asc` or `desc`). Only used for `bar` and
2958
+ `pie` charts.
2959
+
2960
+ `string` (optional)
2961
+ string displayed in the breadcrumbs when redirecting to list view.
2962
+
2963
+ .. include:: view_architectures/root_attribute_sample.rst
2964
+
2965
+ The only allowed element within a graph view is `field` which can have the
2966
+ following attributes:
2967
+
2968
+ .. rst-class:: o-definition-list
2969
+
2970
+ `name` (mandatory)
2971
+ the name of a field to use in the view. If used for grouping (rather
2972
+ than aggregating)
2973
+
2974
+ `invisible` (optional)
2975
+ if true, the field will not appear either in the active measures nor in the
2976
+ selectable measures.
2977
+
2978
+ `type` (optional)
2979
+ if set to `measure`, the field will be used as an aggregated value within a
2980
+ group instead of a grouping criteria. It only works for the last field
2981
+ with that attribute but it is useful for other fields with string attribute
2982
+ (see below).
2983
+
2984
+ `interval` (optional)
2985
+ on date and datetime fields, groups by the specified interval (`day`,
2986
+ `week`, `month`, `quarter` or `year`) instead of grouping on the
2987
+ specific datetime (fixed second resolution) or date (fixed day resolution).
2988
+ Default is `month`.
2989
+
2990
+ `string` (optional)
2991
+ only used for field with `type="measure"`. The name that will be used to
2992
+ display the field in the graph view, overrides the default python String
2993
+ attribute of the field.
2994
+
2995
+ The measures are automatically generated from the model fields; only the
2996
+ aggregatable fields are used. Those measures are also alphabetically
2997
+ sorted on the string of the field.
2998
+
2999
+ > **warning**:
3000
+ > graph view aggregations are performed on database content, non-stored
3001
+ function fields can not be used in graph views
3002
+
3003
+
3004
+ In Graph views, a `field` can have a `widget` attribute to dictate its format.
3005
+ The widget should be a field formatter, of which the most interesting are
3006
+ `float_time`, and `monetary`.
3007
+
3008
+ ```xml
3009
+
3010
+ <field name="working_hours_close" widget="float_time"/>
3011
+
3012
+ .. _reference/view_architectures/pivot:
3013
+
3014
+ # Pivot
3015
+
3016
+ The pivot view is used to visualize aggregations as a `pivot table`_. Its root
3017
+ element is `<pivot>` which can take the following attributes:
3018
+
3019
+ .. rst-class:: o-definition-list
3020
+
3021
+ `disable_linking` (optional)
3022
+ Set to `1` to remove table cell's links to list view.
3023
+ `display_quantity` (optional)
3024
+ Set to `1` to display the Quantity column by default.
3025
+ `default_order` (optional)
3026
+ The name of the measure and the order (asc or desc) to use as default order
3027
+ in the view.
3028
+
3029
+ ```xml
3030
+
3031
+ <pivot default_order="foo asc">
3032
+ <field name="foo" type="measure"/>
3033
+ </pivot>
3034
+
3035
+ The only allowed element within a pivot view is `field` which can have the
3036
+ following attributes:
3037
+
3038
+ .. rst-class:: o-definition-list
3039
+
3040
+ `name` (mandatory)
3041
+ the name of a field to use in the view. If used for grouping (rather
3042
+ than aggregating)
3043
+
3044
+ `string` (optional)
3045
+ the name that will be used to display the field in the pivot view,
3046
+ overrides the default python String attribute of the field.
3047
+
3048
+ `type` (optional)
3049
+ indicates whether the field should be used as a grouping criteria or as an
3050
+ aggregated value within a group. Possible values are:
3051
+
3052
+ .. rst-class:: o-definition-list
3053
+
3054
+ `row` (default)
3055
+ groups by the specified field, each group gets its own row.
3056
+ `col`
3057
+ creates column-wise groups
3058
+ `measure`
3059
+ field to aggregate within a group
3060
+ `interval`
3061
+ on date and datetime fields, groups by the specified interval (`day`,
3062
+ `week`, `month`, `quarter` or `year`) instead of grouping on the
3063
+ specific datetime (fixed second resolution) or date (fixed day resolution).
3064
+
3065
+ `invisible` (optional)
3066
+ if true, the field will not appear either in the active measures nor
3067
+ in the selectable measures (useful for fields that do not make sense aggregated,
3068
+ such as fields in different units, e.g. € and $).
3069
+
3070
+ .. include:: view_architectures/root_attribute_sample.rst
3071
+
3072
+ The measures are automatically generated from the model fields; only the
3073
+ aggregatable fields are used. Those measures are also alphabetically
3074
+ sorted on the string of the field.
3075
+
3076
+ > **warning**:
3077
+ > like the graph view, the pivot aggregates data on database content
3078
+ which means that non-stored function fields can not be used in pivot views
3079
+
3080
+
3081
+ In Pivot view a `field` can have a `widget` attribute to dictate its format.
3082
+ The widget should be a field formatter, of which the most interesting are
3083
+ `date`, `datetime`, `float_time`, and `monetary`.
3084
+
3085
+ For instance a timesheet pivot view could be defined as::
3086
+
3087
+ <pivot string="Timesheet">
3088
+ <field name="employee_id" type="row"/>
3089
+ <field name="date" interval="month" type="col"/>
3090
+ <field name="unit_amount" type="measure" widget="float_time"/>
3091
+ </pivot>
3092
+
3093
+ .. _reference/view_architectures/calendar:
3094
+
3095
+ # Calendar
3096
+
3097
+ Calendar views display records as events in a daily, weekly, monthly or yearly
3098
+ calendar.
3099
+
3100
+ .. note:: By default the calendar view will be centered around the current date
3101
+ (today). You can pass a specific initial date to the context of the action in
3102
+ order to set the initial focus of the calendar on the period (see `mode`) around
3103
+ this date (the context key to use being `initial_date`)
3104
+
3105
+ Their root element is `<calendar>`. Available attributes on the
3106
+ calendar view are:
3107
+
3108
+ :string:
3109
+ string (default: `''`)
3110
+
3111
+ This view title is displayed only if you open an action that has no name and
3112
+ whose target is 'new' (opening a dialog)
3113
+
3114
+ :create:
3115
+ bool (default: `True`)
3116
+
3117
+ Disable/enable record creation on the view.
3118
+
3119
+ :edit:
3120
+ bool (default: `True`)
3121
+
3122
+ Disable/enable record edition on the view.
3123
+
3124
+ :delete:
3125
+ bool (default: `True`)
3126
+
3127
+ Disable/enable record deletion on the view through the **Action** dropdown.
3128
+
3129
+ .. rst-class:: o-definition-list
3130
+
3131
+ `date_start` (required)
3132
+ name of the record's field holding the start date for the event
3133
+ `date_stop`
3134
+ name of the record's field holding the end date for the event, if
3135
+ `date_stop` is provided records become movable (via drag and drop)
3136
+ directly in the calendar
3137
+ `date_delay`
3138
+ alternative to `date_stop`, provides the duration of the event instead of
3139
+ its end date (unit: day)
3140
+ `color`
3141
+ name of a record field to use for *color segmentation*. Records in the
3142
+ same color segment are allocated the same highlight color in the calendar,
3143
+ colors are allocated semi-randomly.
3144
+ Displayed the display_name/avatar of the visible record in the sidebar
3145
+ `form_view_id`
3146
+ view to open when the user create or edit an event. Note that if this attribute
3147
+ is not set, the calendar view will fall back to the id of the form view in the
3148
+ current action, if any.
3149
+ `event_open_popup`
3150
+ If the option 'event_open_popup' is set to true, then the calendar view will
3151
+ open events (or records) in a FormViewDialog. Otherwise, it will open events
3152
+ in a new form view (with a do_action)
3153
+ `quick_create`
3154
+ enables quick-event creation on click: only asks the user for a `name`
3155
+ (the field to which this values is saved can be controlled through
3156
+ `rec_name`) and tries to create a new event with just that and the clicked
3157
+ event time. Falls back to a full form dialog if the quick creation fails
3158
+ `quick_create_view_id`
3159
+ View to open when the attribute `quick_create` is set and the user creates
3160
+ an event instead of the default dialog.
3161
+ `create_name_field`
3162
+ name of the record's field holding the textual representation of the record,
3163
+ this is used when creating records through the 'quick create' mechanism
3164
+ `all_day`
3165
+ name of a boolean field on the record indicating whether the corresponding
3166
+ event is flagged as day-long (and duration is irrelevant)
3167
+ `mode`
3168
+ Default display mode when loading the calendar.
3169
+ Possible attributes are: `day`, `week`, `month`, `year`
3170
+ `scales`
3171
+ Comma-separated list of scales to provide. By default, all scales are
3172
+ available. See mode for possible scale values.
3173
+ `create`, `delete`
3174
+ allows disabling the corresponding action in the view by setting the
3175
+ corresponding attribute to `false`
3176
+ `<field>`
3177
+ declares fields to aggregate or to use in kanban *logic*. If the field is
3178
+ simply displayed in the calendar cards.
3179
+
3180
+ Fields can have additional attributes:
3181
+
3182
+ .. rst-class:: o-definition-list
3183
+
3184
+ `invisible`
3185
+ use "True" to hide the value in the cards
3186
+ `avatar_field`
3187
+ only for x2many field, to display the avatar instead of the display_name
3188
+ in the cards
3189
+ `write_model` and `write_field` and `filter_field`
3190
+ you can add a filter and save the result in the defined model, the
3191
+ filter is added in the sidebar. The `filter_field` is optional and allows
3192
+ you to specify the field that will hold the status of the filter.
3193
+ `filters` and `color`
3194
+ use "True" to add this field in filter in the sidebar. You can specify
3195
+ a `color` field used to colorize the checkbox.
3196
+
3197
+
3198
+ ## Model Commons
3199
+
3200
+ .. currentmodule:: odoo.addons.base.models.ir_ui_view
3201
+ .. autoattribute:: Model._date_name
3202
+ :noindex:
3203
+
3204
+ .. _reference/view_architectures/activity:
3205
+
3206
+ # Activity
3207
+
3208
+ The Activity view is used to display the activities linked to the records. The
3209
+ data are displayed in a chart with the records forming the rows and the activity
3210
+ types the columns. The first cell of each row displays a (customizable, see
3211
+ `templates`, quite similarly to :ref:`reference/view_architectures/kanban`) card representing
3212
+ the corresponding record. When clicking on others cells, a detailed description
3213
+ of all activities of the same type for the record is displayed.
3214
+
3215
+ > **warning**:
3216
+ > The Activity view is only available when the `mail` module is installed,
3217
+ and for the models that inherit from the `mail.activity.mixin`.
3218
+
3219
+ The root element of the Activity view is `<activity>`, it accepts the following
3220
+ attributes:
3221
+
3222
+ .. rst-class:: o-definition-list
3223
+
3224
+ `string` (mandatory)
3225
+ A title, which should describe the view
3226
+
3227
+ Possible children of the view element are:
3228
+
3229
+ .. rst-class:: o-definition-list
3230
+
3231
+ `field`
3232
+ declares fields to use in activity *logic*. If the field is simply displayed
3233
+ in the activity view, it does not need to be pre-declared.
3234
+
3235
+ Possible attributes are:
3236
+
3237
+ .. rst-class:: o-definition-list
3238
+
3239
+ `name` (required)
3240
+ the name of the field to fetch
3241
+
3242
+ `templates`
3243
+ defines the :ref:`reference/qweb` templates. Cards definition may be
3244
+ split into multiple templates for clarity, but activity views *must* define at
3245
+ least one root template `activity-box`, which will be rendered once for each
3246
+ record.
3247
+
3248
+ The activity view uses mostly-standard :ref:`javascript qweb
3249
+ <reference/qweb/javascript>` and provides the following context variables
3250
+ (see :ref:`reference/view_architectures/kanban` for more details):
3251
+
3252
+ .. rst-class:: o-definition-list
3253
+
3254
+ `widget`
3255
+ the current :js:class:`ActivityRecord`, can be used to fetch some
3256
+ meta-information. These methods are also available directly in the
3257
+ template context and don't need to be accessed via `widget`
3258
+ `record`
3259
+ an object with all the requested fields as its attributes. Each field has
3260
+ two attributes `value` and `raw_value`
3261
+
3262
+ .. _reference/view_architectures/cohort:
3263
+
3264
+ # Cohort
3265
+
3266
+ .. raw:: html
3267
+
3268
+ <span class="badge" style="background-color:#AD5E99">Enterprise feature</span>
3269
+
3270
+ The cohort view is used to display and understand the way some data changes over
3271
+ a period of time. For example, imagine that for a given business, clients can
3272
+ subscribe to some service. The cohort view can then display the total number
3273
+ of subscriptions each month, and study the rate at which client leave the service
3274
+ (churn). When clicking on a cell, the cohort view will redirect you to a new action
3275
+ in which you will only see the records contained in the cell's time interval;
3276
+ this action contains a list view and a form view.
3277
+
3278
+ .. note:: By default the cohort view will use the same list and form views as those
3279
+ defined on the action. You can pass a list view and a form view
3280
+ to the context of the action in order to set/override the views that will be
3281
+ used (the context keys to use being `form_view_id` and `list_view_id`)
3282
+
3283
+ For example, here is a very simple cohort view:
3284
+
3285
+ ```xml
3286
+
3287
+ <cohort string="Subscription" date_start="date_start" date_stop="date" interval="month"/>
3288
+
3289
+ The root element of the Cohort view is <cohort>, it accepts the following
3290
+ attributes:
3291
+
3292
+ .. rst-class:: o-definition-list
3293
+
3294
+ `string` (mandatory)
3295
+ A title, which should describe the view
3296
+
3297
+ `date_start` (mandatory)
3298
+ A valid date or datetime field. This field is understood by the view as the
3299
+ beginning date of a record
3300
+
3301
+ `date_stop` (mandatory)
3302
+ A valid date or datetime field. This field is understood by the view as the
3303
+ end date of a record. This is the field that will determine the churn.
3304
+
3305
+ `disable_linking` (optional)
3306
+ Set to `1` to prevent from redirecting clicks on cohort cells to list view.
3307
+
3308
+ `mode` (optional)
3309
+ A string to describe the mode. It should be either 'churn' or
3310
+ 'retention' (default). Churn mode will start at 0% and accumulate over time
3311
+ whereas retention will start at 100% and decrease over time.
3312
+
3313
+ `timeline` (optional)
3314
+ A string to describe the timeline. It should be either 'backward' or 'forward' (default).
3315
+ Forward timeline will display data from date_start to date_stop, whereas backward timeline
3316
+ will display data from date_stop to date_start (when the date_start is in future / greater
3317
+ than date_stop).
3318
+
3319
+ `interval` (optional)
3320
+ A string to describe a time interval. It should be 'day', 'week', 'month''
3321
+ (default) or 'year'.
3322
+
3323
+ `measure` (optional)
3324
+ A field that can be aggregated. This field will be used to compute the values
3325
+ for each cell. If not set, the cohort view will count the number of occurrences.
3326
+
3327
+ `<field>` (optional)
3328
+ allows to specify a particular field in order to manage it from the available measures, it's
3329
+ main use is for hiding a field from the selectable measures:
3330
+
3331
+ .. rst-class:: o-definition-list
3332
+
3333
+ `name` (mandatory)
3334
+ the name of the field to use in the view.
3335
+ `string` (optional)
3336
+ the name that would be used to display the field in the cohort view, overrides the
3337
+ default python String attribute of the field.
3338
+ `invisible` (optional)
3339
+ if true, the field will not appear either in the active measures nor in the selectable
3340
+ measures (useful for fields that do not make sense aggregated, such as fields in different
3341
+ units, e.g. € and $).
3342
+ If the value is a domain, the domain is evaluated in the context of the current row's
3343
+ record, if `True` the corresponding attribute is set on the cell.
3344
+ `widget` (optional)
3345
+ alternate representations for a field's display.
3346
+
3347
+ .. include:: view_architectures/root_attribute_sample.rst
3348
+
3349
+ .. _reference/view_architectures/grid:
3350
+
3351
+ # Grid
3352
+
3353
+ .. raw:: html
3354
+
3355
+ <span class="badge" style="background-color:#AD5E99">Enterprise feature</span>
3356
+
3357
+ ## Limitations
3358
+
3359
+ This view is a work in progress and may have to be expanded or altered.
3360
+
3361
+ * only `date` column fields have been tested, `selection` and `many2one`
3362
+ are nominally implemented and supported but have not been tested,
3363
+ `datetime` is not implemented at all.
3364
+ * column cells are hardly configurable and must be numerical
3365
+ * cell adjustment is disabled by default and must be configured to be enabled
3366
+ * `create`, `edit` and `delete` ACL metadata doesn't get automatically
3367
+ set on the view root due to limitations in `fields_view_get`
3368
+ post-processing (there's a fixed explicit list of the view types getting
3369
+ those attributes)
3370
+
3371
+ ## Schema
3372
+
3373
+ The grid view has its own schema and additional validation in this module. The
3374
+ view architecture is:
3375
+
3376
+ `<grid>` (1)
3377
+ architecture root element
3378
+
3379
+ * mandatory `string` attribute
3380
+ * optional `create`, `edit` and `delete` attributes
3381
+ * optional `adjustment` and `adjust_name` attributes
3382
+
3383
+ `adjustment` can be either `object` or `action` to indicate
3384
+ whether a cell's adjustment should be performed through a method call
3385
+ or an action execution. `adjust_name` provides respectively the method
3386
+ name and the action id.
3387
+
3388
+ In both cases, the adjustment parameters are provided as a
3389
+ `grid_adjust` context member, in the `object` case, the parameters
3390
+ are also provided as positional function parameters (next to an empty
3391
+ list of ids):
3392
+
3393
+ `row_domain`
3394
+ the domain matching the entire row of the adjusted cell
3395
+ `column_field`
3396
+ the name of the column for the adjusted cell
3397
+ `column_value`
3398
+ the value of the column for the adjusted cell
3399
+ `cell_field`
3400
+ the measure field of the adjusted cell
3401
+ `change`
3402
+ the difference between the old value of the cell and the adjusted one,
3403
+ may be positive or negative
3404
+
3405
+ * optional `hide_line_total` and `hide_column_total` attributes
3406
+
3407
+ `hide_line_total`
3408
+ set to true to hide total line (default false)
3409
+ `hide_column_total`
3410
+ set to true to hide total column (default false)
3411
+
3412
+ * optional `barchart_total` attribute
3413
+
3414
+ `barchart_total`
3415
+ set to `true` in order to display a bar chart at the bottom of the grid, based on
3416
+ the totals of the columns (default false).
3417
+
3418
+ * optional `create_inline` and `display_empty` attributes
3419
+
3420
+ `create_inline`
3421
+ set to `true` in order to display an additional row at bottom of the grid with an
3422
+ `Add a line` button (default false). When this option is set to `true`, the `Add a line` button
3423
+ from the control panel is hidden. When no data is available and when `display_empty` is
3424
+ not set (so when the help content is displayed), the the `Add a line` button from the
3425
+ control panel is shown in order to let the user create a first record.
3426
+ `display_empty`
3427
+ set to `true` in order to keep displaying the grid when there is no data (default false). This can
3428
+ be useful when you want the user to be able to keep track of the current period (as dates
3429
+ are displayed in the columns headers). As a reminder, when no data are present and when this
3430
+ attribute is no set, the help content is displayed instead of the grid.
3431
+
3432
+ `<button>` (0+)
3433
+ Regular Odoo action buttons, displayed in the view header
3434
+
3435
+ * mandatory `string` attribute (the button label)
3436
+ * mandatory `type` attribute, either `object` or `action`
3437
+
3438
+ .. note:: workflow buttons are not supported
3439
+
3440
+ * mandatory `name` attribute, either the name of the method to call, or
3441
+ the ID of the action to execute
3442
+ * optional `context`
3443
+
3444
+ The server callback is provided with all the record ids displayed in the
3445
+ view, either as the ids passed to the method (`object` button) or as
3446
+ the context's `active_ids` (`action` buttons)
3447
+
3448
+ `<field type="row">` (1+)
3449
+ Row grouping fields, will be replaced by the search view's groupby filter
3450
+ if any.
3451
+
3452
+ The order of `row` fields in the view provides their grouping depth:
3453
+ if the first field is `school` and the second is `age` the records
3454
+ will be grouped by `school` first and by `age` within each school.
3455
+
3456
+ `<field type="col">` (1)
3457
+ Column grouping field.
3458
+
3459
+ The col field can contain 0+ `<range>` elements which specify
3460
+ customisable column ranges. `range` elements have the following
3461
+ mandatory attributes
3462
+
3463
+ `name`
3464
+ can be used to override the default range (the first one by default)
3465
+ through the `grid_range` context value
3466
+ `string`
3467
+ the range button's label (user-visible)
3468
+ `span`
3469
+ symbolic name of the span of all columns to display at once in the
3470
+ view, may trigger pagination.
3471
+
3472
+ For `date` fields, valid spans are currently `week` and `month`.
3473
+ `step`
3474
+ symbolic name of the step between one column and the previous/next
3475
+
3476
+ For `date` fields, the only valid span is currently `day`.
3477
+ `<field type="measure">` (1)
3478
+ Cell field, automatically accumulated (by `read_group`).
3479
+
3480
+ The measure field can take a `widget` attribute to customise its
3481
+ display.
3482
+
3483
+ ## Server interactions
3484
+
3485
+ Aside from optional buttons, the grid view currently calls two methods:
3486
+
3487
+ * `read_grid` (provided on all models by the module) returns almost the
3488
+ entirety of the grid's content as a dict:
3489
+
3490
+ * the row titles is a list of dictionaries with the following keys:
3491
+
3492
+ `values` (required)
3493
+ this maps to a dictionary with a key per `row` field, the values are
3494
+ *always* of the form `[value, label]`.
3495
+ `domain` (required)
3496
+ the domain of any record at the source of this row, in case it's
3497
+ necessary to copy a record during cell adjustment
3498
+
3499
+ * the column titles is a list of dictionaries with at least one key:
3500
+
3501
+ `values` (required)
3502
+ see row title values
3503
+ `domain` (required)
3504
+ see column domain value
3505
+ `current` (optional)
3506
+ boolean, marks/highlights a column
3507
+
3508
+ * the grid data as a list (of rows) of list (of cells) of cell dicts each
3509
+ with the following keys:
3510
+
3511
+ `value`
3512
+ the numeric value associated with the cell
3513
+ `domain`
3514
+ the domain matching the cell's records (should be assumed opaque)
3515
+ `size`
3516
+ the number of records grouped in the cell
3517
+ `readonly` (optional)
3518
+ a boolean indicating that this specific cell should not be
3519
+ client-editable
3520
+ `classes` (optional)
3521
+ a list of classes (as strings) to add on the cell's container (between
3522
+ the cell's TD and the cell's potentially-editable element).
3523
+
3524
+ In case of conflicts between this list and the base classes (prefixed
3525
+ with `o_grid_cell_`), the classes in this list are ignored.
3526
+
3527
+ Note that the grid data is *dense*, if querying the database yields no
3528
+ group matching a cell a cell will generate an "empty" cell with default
3529
+ values for required keys.
3530
+ * `prev` and `next` which can be either falsy (no pagination) or a
3531
+ context item to merge into the view's own context to `read_grid` the
3532
+ previous or next page, it should be assumed to be opaque
3533
+
3534
+ * `read_grid_domain(field, range)` (provided on al models by the module)
3535
+ returns the domain matching the current configured "span" of the grid. This
3536
+ is also done internally by `read_grid`, but can be useful or necessary to
3537
+ call independently to use with separate e.g. `search_count` or
3538
+ `read_group`.
3539
+
3540
+ * `adjust_grid`, for which there currently isn't a blanket implementation
3541
+ and whose semantics are likely to evolve with time and use cases
3542
+
3543
+ ## Server Hooks
3544
+
3545
+ `read_grid` calls a number of hooks allowing the customisation of its
3546
+ operations from within without having to override the entire method:
3547
+
3548
+ `_grid_format_cell(group, cell_field)`
3549
+ converts the output of a read_group (group-by-group) into cells in the
3550
+ format described above (as part of "the grid data")
3551
+ `_grid_make_empty_cell(row_domain, column_domain, view_domain)`
3552
+ generates an empty version of a cell (if there is no corresponding group)
3553
+ `_grid_column_info(name, range)`
3554
+ generates a ColumnMetadata object based on the column type, storing values
3555
+ either returned directly (as part of `read_grid`) or used query and
3556
+ reformat `read_group` into `read_grid`:
3557
+
3558
+ `grouping`
3559
+ the actual grouping field/query for the columns
3560
+ `domain`
3561
+ domain to apply to `read_group` in case the column field is
3562
+ paginated, can be an empty list
3563
+ `prev` and `next`
3564
+ context segments which will be sent to `read_grid` for pages before
3565
+ and after the current one. If `False`, disables pagination in that
3566
+ direction
3567
+ `values`
3568
+ column values to display on the "current page", each value is a
3569
+ dictionary with the following keys:
3570
+
3571
+ `values`
3572
+ dictionary mapping field names to values for the entire column,
3573
+ usually just `name` -> a value
3574
+ `domain`
3575
+ domain matching this specific column
3576
+ `is_current`
3577
+ `True` if the current column should be specifically outlined in
3578
+ the grid, `False` otherwise
3579
+ `format`
3580
+ how to format the values of that column/type from `read_group`
3581
+ formatting to `read_grid` formatting (matching `values` in
3582
+ ColumnInfo)
3583
+
3584
+ ## ACL
3585
+
3586
+ * if the view is not editable, individual cells won't be editable
3587
+ * if the view is not creatable, the `Add a Line` button will not be
3588
+ displayed (it currently creates a new empty record)
3589
+
3590
+ ## Context Keys
3591
+
3592
+ `grid_range`
3593
+ selects which range should be used by default if the view has multiple
3594
+ ranges
3595
+ `grid_anchor`
3596
+ if applicable, used as the default anchor of column ranges instead of
3597
+ whatever `read_grid` defines as its default.
3598
+
3599
+ For date fields, the reference date around which the initial span will be
3600
+ computed. The default date anchor is "today" (in the user's timezone)
3601
+
3602
+ .. _reference/view_architectures/gantt:
3603
+
3604
+ # Gantt
3605
+
3606
+ .. raw:: html
3607
+
3608
+ <span class="badge" style="background-color:#AD5E99">Enterprise feature</span>
3609
+
3610
+ Gantt views appropriately display Gantt charts (for scheduling).
3611
+
3612
+ The root element of gantt views is `<gantt/>`, it has no children but can
3613
+ take the following attributes:
3614
+
3615
+ :string:
3616
+ string (default: `''`)
3617
+
3618
+ This view title is displayed only if you open an action that has no name and
3619
+ whose target is 'new' (opening a dialog)
3620
+
3621
+ :create:
3622
+ bool (default: `True`)
3623
+
3624
+ Disable/enable record creation on the view.
3625
+
3626
+ :edit:
3627
+ bool (default: `True`)
3628
+
3629
+ Disable/enable record edition on the view.
3630
+
3631
+ :delete:
3632
+ bool (default: `True`)
3633
+
3634
+ Disable/enable record deletion on the view through the **Action** dropdown.
3635
+
3636
+ .. rst-class:: o-definition-list
3637
+
3638
+ `date_start` (required)
3639
+ name of the field providing the start datetime of the event for each
3640
+ record.
3641
+ `date_stop` (required)
3642
+ name of the field providing the end duration of the event for each
3643
+ record.
3644
+ `dependency_field`
3645
+ name of the `many2many` field that provides the dependency relation between two records.
3646
+ If B depends on A, `dependency_field` is the field that allows getting A
3647
+ from B. Both this field and `dependency_inverted_field` field are used to
3648
+ draw dependency arrows between pills and reschedule them.
3649
+ `dependency_inverted_field` (required if `dependency_field` is provided)
3650
+ name of the `many2many` field that provides the invert dependency relation than
3651
+ `dependency_field`. If B depends on A, `dependency_inverted_field` is
3652
+ the field that allows getting B from A.
3653
+ `color`
3654
+ name of the field used to color the pills according to its value
3655
+ `decoration-{$name}`
3656
+ `python expression`_ that evaluates to a bool
3657
+
3658
+ allow changing the style of a cell's text based on the corresponding
3659
+ record's attributes.
3660
+
3661
+ `{$name}` can be one of the following `bootstrap contextual color`_ (`danger`,
3662
+ `info`, `secondary`, `success` or `warning`).
3663
+
3664
+ Define a conditional display of a record in the style of a row's text based on the corresponding
3665
+ record's attributes.
3666
+
3667
+ Values are Python expressions. For each record, the expression is evaluated
3668
+ with the record's attributes as context values and if `true`, the
3669
+ corresponding style is applied to the row. Here are some of the other values
3670
+ available in the context:
3671
+
3672
+ * `uid`: the id of the current user,
3673
+ * `today`: the current local date as a string of the form `YYYY-MM-DD`,
3674
+ * `now`: same as `today` with the addition of the current time.
3675
+ This value is formatted as `YYYY-MM-DD hh:mm:ss`.
3676
+
3677
+ ```xml
3678
+
3679
+ <gantt decoration-info="state == 'draft'"
3680
+ decoration-danger="state == 'help_needed'"
3681
+ decoration-bf="state == 'busy'">
3682
+ ...
3683
+ </gantt>
3684
+ `default_group_by`
3685
+ name of a field to group tasks by
3686
+ `disable_drag_drop`
3687
+ if set to true, the gantt view will not have any drag&drop support
3688
+ `consolidation`
3689
+ field name to display consolidation value in record cell
3690
+ `consolidation_max`
3691
+ dictionary with the "group by" field as key and the maximum consolidation
3692
+ value that can be reached before displaying the cell in red
3693
+ (e.g. `{"user_id": 100}`)
3694
+ `consolidation_exclude`
3695
+ name of the field that describes if the task has to be excluded
3696
+ from the consolidation
3697
+ if set to true it displays a striped zone in the consolidation line
3698
+ `create`, `cell_create`, `edit`, `delete`, `plan`
3699
+ allows *dis*\ abling the corresponding action in the view by setting the
3700
+ corresponding attribute to `false` (default: `true`).
3701
+
3702
+ * `create`: If enabled, an `Add` button will be available in the control
3703
+ panel to create records.
3704
+ * `cell_create`: If enabled and `create` enabled, a "**+**" button will be
3705
+ displayed while hovering on a time slot cell to create a new record on that slot.
3706
+ * `edit`: If enabled, the opened records will be in edit mode (thus editable).
3707
+ * `plan`: If enabled and `edit` enabled, a "magnifying glass" button will be displayed
3708
+ on time slots to plan unassigned records into that time slot.
3709
+
3710
+ .. example::
3711
+
3712
+ When you do not want to create records on the gantt view and the beginning and end
3713
+ dates are required on the model, the planning feature should be disabled
3714
+ because no record will ever be found.
3715
+ `offset`
3716
+ Depending on the scale, the number of units to add to today to compute the
3717
+ default period. Examples: An offset of +1 in default_scale week will open the
3718
+ gantt view for next week, and an offset of -2 in default_scale month will open
3719
+ the gantt view of 2 months ago.
3720
+ `progress`
3721
+ name of a field providing the completion percentage for the record's event,
3722
+ between 0 and 100
3723
+ `string`
3724
+ title of the gantt view
3725
+ `precision`
3726
+ JSON object specifying snapping precisions for the pills in each scale.
3727
+
3728
+ Possible values for scale `day` are (default: `hour`):
3729
+
3730
+ - `hour`: records times snap to full hours (ex: 7:12 becomes 8:00)
3731
+
3732
+ - `hour:half`: records times snap to half hours (ex: 7:12 becomes 7:30)
3733
+
3734
+ - `hour:quarter`: records times snap to half hours (ex: 7:12 becomes 7:15)
3735
+
3736
+ Possible values for scale `week` are (default: `day:half`):
3737
+
3738
+ - `day`: records times snap to full days (ex: 7:28 AM becomes 11:59:59 PM of the previous day, 10:32 PM becomes 12:00 PM of the current day)
3739
+
3740
+ - `day:half`: records times snap to half hours (ex: 7:28 AM becomes 12:00 PM)
3741
+
3742
+ Possible values for scale `month` are (default: `day:half`):
3743
+
3744
+ - `day`: records times snap to full days (ex: 7:28 AM becomes 11:59:59 PM of the previous day, 10:32 PM becomes 12:00 PM of the current day)
3745
+
3746
+ - `day:half`: records times snap to half hours (ex: 7:28 AM becomes 12:00 PM)
3747
+
3748
+ Scale `year` always snap to full day.
3749
+
3750
+ Example of precision attribute: `{"day": "hour:quarter", "week": "day:half", "month": "day"}`
3751
+ `total_row`
3752
+ boolean to control whether the row containing the total count of records should
3753
+ be displayed. (default: `false`)
3754
+ `collapse_first_level`
3755
+ boolean to control whether it is possible to collapse each row if grouped by
3756
+ one field. (default: `false`, the collapse starts when grouping by two fields)
3757
+ `display_unavailability`
3758
+ boolean to mark the dates returned by the `gantt_unavailability` function of
3759
+ the model as available inside the gantt view. Records can still be scheduled
3760
+ in them, but their unavailability is visually displayed. (default: `false`)
3761
+ `default_scale`
3762
+ default scale when rendering the view. Possible values are (default: `month`):
3763
+
3764
+ * `day`
3765
+ * `week`
3766
+ * `month`
3767
+ * `year`
3768
+
3769
+ `scales`
3770
+ comma-separated list of allowed scales for this view. By default, all scales
3771
+ are allowed. For possible scale values to use in this list, see `default_scale`.
3772
+
3773
+ `templates`
3774
+ defines the :ref:`reference/qweb` template `gantt-popover` which is used
3775
+ when the user hovers over one of the records in the gantt view.
3776
+
3777
+ The gantt view uses mostly-standard :ref:`javascript qweb
3778
+ <reference/qweb/javascript>` and provides the following context variables:
3779
+
3780
+ .. rst-class:: o-definition-list
3781
+
3782
+ `widget`
3783
+ the current :js:class:`GanttRow`, can be used to fetch some
3784
+ meta-information. The `getColor` method to convert in a color integer is
3785
+ also available directly in the template context without using `widget`.
3786
+
3787
+ `on_create`
3788
+ If specified when clicking the add button on the view, instead of opening a generic dialog, launch a client action.
3789
+ this should hold the xmlid of the action (eg: `on_create="%(my_module.my_wizard)d"`
3790
+
3791
+ `form_view_id`
3792
+ view to open when the user create or edit a record. Note that if this attribute
3793
+ is not set, the gantt view will fall back to the id of the form view in the
3794
+ current action, if any.
3795
+
3796
+ `dynamic_range`
3797
+ if set to true, the gantt view will start at the first record,
3798
+ instead of starting at the beginning of the year/month/day.
3799
+
3800
+ `pill_label`
3801
+ If set to true, the time appears in the pill label when the scale is set on week or month. (e.g.
3802
+ `7:00 AM - 11:00 AM (4h) - DST Task 1`)
3803
+
3804
+ `thumbnails`
3805
+ This allows to display a thumbnail next to groups name if the group is a relationnal field.
3806
+ This expects a python dict which keys are the name of the field on the active model.
3807
+ Values are the names of the field holding the thumbnail on the related model.
3808
+
3809
+ Example: tasks have a field user_id that reference res.users. The res.users model has a field image that holds the avatar,
3810
+ then:
3811
+
3812
+ ```xml
3813
+
3814
+ <gantt
3815
+ date_start="date_start"
3816
+ date_stop="date_stop"
3817
+ thumbnails="{'user_id': 'image_128'}"
3818
+ >
3819
+ </gantt>
3820
+
3821
+ will display the users avatars next to their names when grouped by user_id.
3822
+
3823
+ .. include:: view_architectures/root_attribute_sample.rst
3824
+
3825
+ .. _reference/view_architectures/map:
3826
+
3827
+ # Map
3828
+
3829
+ .. raw:: html
3830
+
3831
+ <span class="badge" style="background-color:#AD5E99">Enterprise feature</span>
3832
+
3833
+ This view is able to display records on a map and the routes between them. The records are represented by pins. It also allows the visualization of fields from the model in a popup tied to the record's pin.
3834
+
3835
+ > **note**:
3836
+ > The model on which the view is applied should contain a `res.partner` many2one since the view relies on the `res.partner`'s address and coordinates fields to localize the records.
3837
+
3838
+ ## API
3839
+
3840
+ The view uses location data platforms' API to fetch the tiles (the map's background), do the geoforwarding (converting addresses to a set of coordinates) and fetch the routes.
3841
+ The view implements two API, OpenStreetMap and MapBox. OpenStreetMap is used by default and is able to fetch `tiles`_ and do `geoforwarding`_. This API does not require a token.
3842
+ As soon as a valid `MapBox`_ token is provided in the general settings the view switches to the MapBox API. This API is faster and allows the computation of routes. A token can be obtained by `signing up`_ to MapBox.
3843
+
3844
+ ## Structural components
3845
+
3846
+ The view's root element is `<map>`. It can have the following attributes:
3847
+
3848
+
3849
+ .. rst-class:: o-definition-list
3850
+
3851
+ `res_partner`
3852
+ Contains the `res.partner` many2one. If not provided the view resorts to create an empty map.
3853
+ `default_order`
3854
+ If a field is provided the view overrides the model's default order. The field must be part of the model on which the view is applied, not from `res.partner`.
3855
+ `routing`
3856
+ if `1` display the routes between the records. The view needs a valid MapBox token and at least two located records (i.e the records have a `res.partner` many2one and the partner has an address or valid coordinates).
3857
+ `hide_name`
3858
+ if `1` hide the name from the pin's popup (default: `0`).
3859
+ `hide_address`
3860
+ if `1` hide the address from the pin's popup (default: `0`).
3861
+ `hide_title`
3862
+ if `1` hide the title from the pin list (default: `0`).
3863
+ `panel_title`
3864
+ String to display as title of the pin list. If not provided, the title is the action's name or "Items" if the view is not in an action.
3865
+ `limit`
3866
+ Maximum number of records to fetch (default: `80`). It must be a positive integer.
3867
+
3868
+ The `<map>` element can contain multiple `<field>` elements. Each `<field>` element is interpreted as a line in the pin's popup. The field's attributes are the following:
3869
+
3870
+ .. rst-class:: o-definition-list
3871
+
3872
+ `name`
3873
+ The field to display.
3874
+ `string`
3875
+ String to display before the field's content. It can be used as a description.
3876
+
3877
+ For example here is a map:
3878
+ ```xml
3879
+
3880
+ <map res_partner="partner_id" default_order="date_begin" routing="1" hide_name="1">
3881
+ <field name="partner_id" string="Customer Name"/>
3882
+ </map>
3883
+
3884
+ .. _`accesskey`: https://www.w3.org/TR/html5/editing.html#the-accesskey-attribute
3885
+ .. _`bootstrap contextual color`: https://getbootstrap.com/docs/3.3/components/#available-variations
3886
+ .. _`Comma-separated values`: https://en.wikipedia.org/wiki/Comma-separated_values
3887
+ .. _`floats`: https://developer.mozilla.org/en-US/docs/Web/CSS/float
3888
+ .. _`geoforwarding`: https://nominatim.org/release-docs/develop/
3889
+ .. _`HTML`: https://en.wikipedia.org/wiki/HTML
3890
+ .. _`integer`: https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex
3891
+ .. _`keyboard_shortcut`: https://en.wikipedia.org/wiki/Keyboard_shortcut
3892
+ .. _`MapBox`: https://docs.mapbox.com/api/
3893
+ .. _`Odoo`: https://www.odoo.com/
3894
+ .. _`path`: https://en.wikipedia.org/wiki/Path_(computing)
3895
+ .. _`pivot table`: https://en.wikipedia.org/wiki/Pivot_table
3896
+ .. _`python expression`: https://docs.python.org/3/library/stdtypes.html#boolean-operations-and-or-not
3897
+ .. _`relative path`: https://en.wikipedia.org/wiki/URL
3898
+ .. _`signing up`: https://account.mapbox.com/auth/signup/
3899
+ .. _`tiles`: https://wiki.openstreetmap.org/wiki/Tile_data_server