搭建erp用于远程协作, 团队协作, 远程办公
 
 
朗读全文 
Your browser does not support the audio element.       
有什么用/怎么用 如何安装Odoo社区版
如何安装Odoo企业版
https://system0.carlzeng.com:3/web/login 
相关内容 
社区版Docker安装实现方法 需要准备的目录有:
Odoo ERP的部分
	odoo-web-data
	config
	addons
Odoo 数据库的部分: 
	odoo-db-data
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 version:  '3.1' services:   web:      image:  odoo:17.0      depends_on:        -  odoodb      ports:        -  "8069:8069"      volumes:        -  ./odoo-web-data:/var/lib/odoo                    environment:        -  HOST=odoodb        -  USER=odoo        -  PASSWORD=myodoo20250401    odoodb:      image:  postgres:15      environment:        -  POSTGRES_DB=postgres        -  POSTGRES_USER=odoo        -  POSTGRES_PASSWORD=myodoo20250401        -  PGDATA=/var/lib/postgresql/data/pgdata      volumes:        -  ./odoo-db-data:/var/lib/postgresql/data/pgdata  
 
运行命令: 1 2 3 4 5 6 7 cd ~ mkdir odoo cd odoo mkdir odoo-web-data && mkdir config && mkdir addons && mkdir odoo-db-data vi docker-compose.yaml docker-compose up 
 
访问 http://192.168.6.117:8069 
Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
后台显示的错误以及解决办法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 web-1     | 2025-04-01 13:30:10,775 1 ERROR ? odoo.http: Exception during request handling.               web-1     | Traceback (most recent call last):                                                            web-1     |   File "/usr/lib/python3/dist-packages/odoo/http.py", line 2206, in __call__                  web-1     |     request._post_init()                                                                      web-1     |   File "/usr/lib/python3/dist-packages/odoo/http.py", line 1391, in _post_init                web-1     |     self.session, self.db = self._get_session_and_dbname()                                    web-1     |   File "/usr/lib/python3/dist-packages/odoo/http.py", line 1397, in _get_session_and_dbname   web-1     |     session = root.session_store.new()                                                        web-1     |   File "/usr/lib/python3/dist-packages/odoo/tools/func.py", line 28, in __get__               web-1     |     value = self.fget(obj)                                                                    web-1     |   File "/usr/lib/python3/dist-packages/odoo/http.py", line 2132, in session_store             web-1     |     path = odoo.tools.config.session_dir                                                      web-1     |   File "/usr/lib/python3/dist-packages/odoo/tools/config.py", line 766, in session_dir        web-1     |     os.makedirs(d, 0o700)                                                                     web-1     |   File "/usr/lib/python3.10/os.py", line 225, in makedirs                                     web-1     |     mkdir(name, mode)                                                                         web-1     | PermissionError: [Errno 13] Permission denied: '/var/lib/odoo/sessions'                       web-1     | 2025-04-01 13:30:10,776 1 INFO ? werkzeug: 192.168.6.221 - - [01/Apr/2025 13:30:10] "GET /fav icon.ico HTTP/1.1" 500 - 0 0.000 0.001   
 
1 2 3 4 5 6 7 # 解决办法: $  sudo chmod  -R 777 addons $  sudo chmod  -R 777 config $  sudo chmod  -R 777 odoo-db-data $  sudo chmod  -R 777 odoo-web-data 
 
设置好权限以后, 可以运行访问网页
企业版Odoo安装步骤 下载网盘地址 https://drive.google.com/drive/folders/1VUujb8d9Y1sQ98xA0jk4WZteryn0oOoe 
How to install Odoo Enterprise.
1: download and install community edition. 2: download the zip file called addons-18e.zip  and put it into /usr/lib/python3/dist-packages 3: extract the file and allow overwrite all 4: restart odoo server & update apps 5: download odoo18_unlimited.zip  from the same drive link 6: unzip odoo18_unlimited.zip into your addons directory (try to keep separate from main odoo addons. 7: restart odoo server again and then update apps in odoo 8: activate odoo_unlimited 9: install accounting module 10: activate odoo 11: All done
本小节来源: https://babia.to/threads/odoo-enterprise.37673/page-100 
1. download and install community edition 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 mkdir odoo18e cd odoo18e docker pull odoo:18.0-20241125 # 选了半天, 只知道是16版本, 先试试16.9; 在https://hub.docker.com/_/postgres找到的tag docker pull postgres:16.9 mkdir odoo-web-data && mkdir config && mkdir addons && mkdir odoo-db-data mkdir dist-packages vi docker-compose.yaml $  sudo chmod  -R 777 addons $  sudo chmod  -R 777 config && sudo chmod  -R 777 odoo-db-data && sudo chmod  -R 777 odoo-web-data && sudo chmod  -R 777 dist-packages docker-compose up 
 
docker pull odoo:18.0-20241125
使用docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 version:  '3.1' services:   web1:      image:  odoo:17.0      depends_on:        -  odoodb2      ports:        -  "8070:8069"      volumes:        -  ./odoo-web-data:/var/lib/odoo          -  ./addons:/mnt/extra-addons        -  ./dist-packages:/usr/lib/python3/dist-packages      environment:        -  HOST=odoodb2        -  USER=odoo        -  PASSWORD=myodoo20250713    odoodb2:      image:  postgres:15      environment:        -  POSTGRES_DB=postgres        -  POSTGRES_USER=odoo        -  POSTGRES_PASSWORD=myodoo20250713        -  PGDATA=/var/lib/postgresql/data/pgdata2      volumes:        -  ./odoo-db-data:/var/lib/postgresql/data/pgdata2         
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 odoodb-1  | PostgreSQL Database directory appears to contain a database; Skipping initialization odoodb-1  |  odoodb-1  | 2025-07-13 14:53:40.108 UTC [1] LOG:  starting PostgreSQL 15.12 (Debian 15.12-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit odoodb-1  | 2025-07-13 14:53:40.108 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432 odoodb-1  | 2025-07-13 14:53:40.108 UTC [1] LOG:  listening on IPv6 address "::", port 5432 odoodb-1  | 2025-07-13 14:53:40.119 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" odoodb-1  | 2025-07-13 14:53:40.129 UTC [29] LOG:  database system was shut down at 2025-07-13 14:53:13 UTC odoodb-1  | 2025-07-13 14:53:40.138 UTC [1] LOG:  database system is ready to accept connections web-1     | Traceback (most recent call last): web-1     |   File "/usr/local/bin/wait-for-psql.py", line 3, in <module> web-1     |     import psycopg2 web-1     | ModuleNotFoundError: No module named 'psycopg2' web-1 exited with code 1 
 
把odoo:18.0-20241125 换成了odoo18
故障依旧
把odoo:18 换成能正常使用的 odoo:17
故障依旧, 说明不是odoo包本身的问题.  
成功使用18.0-20241125版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 version:  '3.1' services:   web:      image:  odoo:18.0-20241125      depends_on:        -  odoodb      ports:        -  "8070:8069"      volumes:        -  ./odoo-web-data:/var/lib/odoo               -  ./addons:/mnt/extra-addons             environment:        -  HOST=odoodb        -  USER=odoo        -  PASSWORD=myodoo20250713    odoodb:      image:  postgres:15      environment:        -  POSTGRES_DB=postgres        -  POSTGRES_USER=odoo        -  POSTGRES_PASSWORD=myodoo20250713        -  PGDATA=/var/lib/postgresql/data/pgdata      volumes:        -  ./odoo-db-data:/var/lib/postgresql/data/pgdata  
 
下一步 进一步把配置的目录都逐一映射出来
原因是这个: - ./dist-packages:/usr/lib/python3/dist-packages 一旦添加这个, 就会报错误, 原因是系统里面有内容, 而映射出来的目录是空的.  需要先运行起来以后, 然后把 docker里面的dist-packages内容都复制出来,然后在添加映射.
2: download the zip file called addons-18e.zip  and put it into /usr/lib/python3/dist-packages 通过复制出来的方式, 添加addons-18e.zip, 可是…
docker cp 容器Id或name:容器内路径 本地文件夹路径 docker cp containername:/usr/share/nginx/html /volume2/KingchuxingSSD512G/docker/compose/it-tools/html
docker cp b55461b312c7:/usr/lib/python3/dist-packages /root/odoo18e/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 root@debian12:~/odoo18e/dist-packages# ls Babel-2.10.3.egg-info			       _distutils_hack Jinja2-3.1.2.egg-info			       _ldap.cpython-312-x86_64-linux-gnu.so MarkupSafe-2.1.5.egg-info		       _rjsmin.cpython-312-x86_64-linux-gnu.so OpenSSL					       _sass.abi3.so PIL					       _yaml PyPDF2					       asn1crypto PyYAML-6.0.1.dist-info			       asn1crypto-1.5.1.egg-info Unidecode-1.3.8.egg-info		       attr XlsxWriter-3.1.9.egg-info		       attrs __pycache__				       attrs-23.2.0.dist-info _cbor2.cpython-312-x86_64-linux-gnu.so	       babel _cffi_backend.cpython-312-x86_64-linux-gnu.so root@debian12:~/odoo18e/dist-packages# cd .. root@debian12:~/odoo18e# ls addons	config	dist-packages  docker-compose.yaml  odoo-db-data  odoo-web-data root@debian12:~/odoo18e# docker cp b55461b312c7:/usr/lib/python3/dist-packages /root/odoo18e/ invalid symlink "/root/odoo18e/dist-packages/babel/global.dat" -> "../../../../share/python-babel-localedata/global.dat" root@debian12:~/odoo18e# docker cp b55461b312c7:/usr/lib/python3/dist-packages /root/odoo18e/ invalid symlink "/root/odoo18e/dist-packages/babel/global.dat" -> "../../../../share/python-babel-localedata/global.dat" 
 
有没有其他办法永久性改变docker中的某个特定目录内容?
临时的workaround: 直接复制到docker中去, 每次 重启docker 都要重新去复制进去, 然后解压缩, 覆盖
Steps:
复制本机addons-18e.zip到debian12的目录中去/root/odoo18e/
scp -P 22226 /Users/carlzeng/Downloads/addons-18e.zip carlzeng@127.0.0.1 :/home/carlzeng/addons-18e.zip
 
由于权限的缘故, 只能先传输到目录: /home/carlzeng
 
scp -P 22226 /Users/carlzeng/Downloads/addons-18e.zip carlzeng@127.0.0.1 :/home/carlzeng/addons-18e.zip
carlzeng@127.0.0.1 ‘s password: 
stalledaddaddaddaddons-18e.zip                          14%  55MB  4.6MB/s  01:11 ETA
 
ssh进入debian12的root, 然后复制到root用户目录/root/odoo18e/
 
cp /home/carlzeng/addons-18e.zip /root/odoo18e/addons-18e.zip 
 
解压缩在/root/odoo18e/
unzip addons-18e.zip  
生成出来addons文件夹 
 
 
 
 
 
复制debian12中的addons-18e.zip到docker的/usr/lib/python3/dist-packages中去
docker cp /root/odoo18e/addons-18e.zip  b55461b312c7:/usr/lib/python3/dist-packages/addons-18e.zip  
成功了, 但是docker中无法运行unzip(没有安装, 且无法安装) 
复制debian12中的addons文件夹(以及下面的所有文件和文件夹)到docker的/usr/lib/python3/dist-packages中去 
docker cp /root/odoo18e/addons/ b55461b312c7:/usr/lib/python3/dist-packages/ 
 
 
[忽略]docker exec -it 进入docker的目录进行addons-18e.zip解压缩并覆盖
unzip archive_name.zip`:这将解压缩ZIP文件到当前目录。
 
tar 无法解压缩.zip文件.
 
odoo@b55461b312c7:/usr/lib/python3/dist-packages$ apt-get install zip
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
 
如何在docker中解压缩?
 
 
 
 
 
 
   docker cp 忽略某个文件
先使用
tar -zcvf archive.tar.gz –exclude=/usr/lib/python3/dist-packages/babel/global.dat  /usr/lib/python3/dist-packages
1 2 3 4 5 6 7 8 9 10 11 tar -zcvf archive.tar.gz dist-packages tar (child): archive.tar.gz: Cannot open: Permission denied tar (child): Error is not recoverable: exiting now dist-packages/ dist-packages/num2words-0.5.13.egg-info/ dist-packages/num2words-0.5.13.egg-info/requires.txt dist-packages/num2words-0.5.13.egg-info/PKG-INFO tar: archive.tar.gz: Cannot write: Broken pipe tar: Child returned status 2 tar: Error is not recoverable: exiting now 
 
20250715思路: 
可以使用UI工具, 浏览 和 打包整个/dist-packages/文件夹, 然后拿到容器外面来修改
使用类似这样的批量命令复制全部
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/_cbor2.cpython-312-x86_64-linux-gnu.so  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/_cffi_backend.cpython-312-x86_64-linux-gnu.so  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/_ldap.cpython-312-x86_64-linux-gnu.so  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/_rjsmin.cpython-312-x86_64-linux-gnu.so  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/_sass.abi3.so  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/cached_property.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/decorator.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/distutils-precedence.pth  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/docopt.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/ldapurl.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/ldif.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/png.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/polib.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pyasn1_modules-0.2.8.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pycairo-1.25.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pysassc.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/requests_file.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/rjsmin.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/roman.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/sass.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/six.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/typing_extensions.py  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/zope.event-5.0-nspkg.pth  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/zope.interface-6.1-nspkg.pth 
 
web-1   | ImportError: cannot import name ‘localedata’ from partially initialized module ‘babel’ (most likely due to a circular import) (/usr/lib/python3/dist-packages/babel/init .py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 名称  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/Babel-2.10.3.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/Jinja2-3.1.2.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/MarkupSafe-2.1.5.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/OpenSSL  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/PIL  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/PyPDF2  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/PyYAML-6.0.1.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/Unidecode-1.3.8.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/XlsxWriter-3.1.9.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/__pycache__  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/_distutils_hack  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/_yaml  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/asn1crypto  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/asn1crypto-1.5.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/attr  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/attrs  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/attrs-23.2.0.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/babel  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/beautifulsoup4-4.12.3.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/bs4  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/cached_property-1.5.2.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/cairo  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/cbor2  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/cbor2-5.6.2.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/certifi  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/certifi-2023.11.17.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/chardet  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/chardet-5.2.0.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/charset_normalizer  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/charset_normalizer-3.3.2.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/cryptography  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/cryptography-41.0.7.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/cryptography.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/dateutil  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/decorator-5.1.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/defusedxml  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/defusedxml-0.7.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/docopt-0.6.2.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/docutils  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/docutils-0.20.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/et_xmlfile  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/et_xmlfile-1.0.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/freetype  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/freetype_py-2.4.0.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/freezegun  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/freezegun-1.2.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/geoip2  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/geoip2-2.9.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/gevent  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/gevent-24.2.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/greenlet  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/greenlet-3.0.3.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/gyp  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/gyp-0.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/idna  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/idna-3.6.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/isodate  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/isodate-0.6.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/jinja2  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/ldap  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/libsass-0.22.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/lxml  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/lxml-5.2.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/lxml_html_clean  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/lxml_html_clean-0.1.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/magic  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/markupsafe  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/maxminddb  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/maxminddb-2.5.2.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/num2words  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/num2words-0.5.13.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/odf  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/odfpy-1.4.2.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/odoo  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/odoo-18.0.post20241125.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/ofxparse  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/ofxparse-0.21.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/openpyxl  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/openpyxl-3.1.2.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/passlib  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/passlib-1.7.4.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pdfminer  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pdfminer.six-20221105.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/phonenumbers  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/phonenumbers-8.12.57.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pillow-10.2.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pip  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pip-24.0.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pkg_resources  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/platformdirs  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/platformdirs-4.2.0.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/polib-1.1.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/psutil  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/psutil-5.9.8.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/psycopg2  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/psycopg2-2.9.9.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pyOpenSSL-23.2.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pyasn1  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pyasn1-0.4.8.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pyasn1_modules  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pypdf2-2.12.1.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pypng-0.20231004.0.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pyserial-3.5.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/python_dateutil-2.8.2.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/python_ldap-3.4.4.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/python_magic-0.4.27.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/python_slugify-8.0.4.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/python_stdnum-1.19.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pytz  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pytz-2024.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/pyusb-1.2.1.post2.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/qrcode  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/qrcode-7.4.2.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/reportlab  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/reportlab-4.1.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/requests  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/requests-2.31.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/requests_file-1.5.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/requests_toolbelt  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/requests_toolbelt-1.0.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/rjsmin-1.2.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/rlPyCairo  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/rlPyCairo-0.3.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/roman-3.3.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/sassutils  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/serial  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/setuptools  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/setuptools-68.1.2.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/six-1.16.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/slapdtest  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/slugify  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/soupsieve  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/soupsieve-2.5.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/stdnum  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/typing_extensions-4.10.0.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/unidecode  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/urllib3  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/urllib3-2.0.7.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/usb  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/vobject  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/vobject-0.9.6.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/watchdog  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/watchdog-3.0.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/werkzeug  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/werkzeug-3.0.1.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/wheel  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/wheel-0.42.0.dist-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/xlrd  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/xlrd-2.0.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/xlsxwriter  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/xlwt  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/xlwt-1.3.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/yaml  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/zeep  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/zeep-4.2.1.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/zope  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/zope.event-5.0.egg-info  /root/odoo18e/dist-packages/  docker cp 8d0116c1f93d:/usr/lib/python3/dist-packages/zope.interface-6.1.egg-info 
 
复制完成了babel文件夹下面的所有文件, 不包含那些连接文件的2个文件
运行报错:
1 2 3 4 5 6 7 8 9 10 11 12 13 odoodb-1  | 2025-07-15 15:13:35.829 UTC [1] LOG:  database system is ready to accept connections web-1     | Traceback (most recent call last): web-1     |   File "/usr/bin/odoo", line 5, in <module> web-1     |     import odoo web-1     |   File "/usr/lib/python3/dist-packages/odoo/__init__.py", line 49, in <module> web-1     |     _monkeypatches.patch_all() web-1     |   File "/usr/lib/python3/dist-packages/odoo/_monkeypatches/__init__.py", line 31, in patch_all web-1     |     patch_werkzeug() web-1     |   File "/usr/lib/python3/dist-packages/odoo/_monkeypatches/werkzeug_urls.py", line 1044, in patch_werkzeug web-1     |     from ..tools.json import scriptsafe  # noqa: PLC0415 web-1     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ web-1     | ModuleNotFoundError: No module named 'odoo.tools' web-1 exited with code 1 
 
先把addons-18e.zip unzip到dist-packages目录下, 在看看错误会不会自己消失?
cp -r addons/* dist-packages/
还是依旧报同样上方的错误
0716 检查出来: 原来
docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo /root/odoo18e/dist-packages/
invalid symlink “/root/odoo18e/dist-packages/odoo/addons/point_of_sale/static/src/fonts/Inconsolata.otf” -> “../../../../../../../../../share/fonts/truetype/inconsolata/Inconsolata.otf”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/cli  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/conf  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/exceptions.py  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/fields.py  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/http.py  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/import_xml.rng  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/loglevels.py  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/models.py  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/modules  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/netsvc.py  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/osv  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/release.py  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/service  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/sql_db.py  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/tests  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/tools  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/upgrade  /root/odoo18e/dist-packages/odoo/  docker cp 17c661c4ff14:/usr/lib/python3/dist-packages/odoo/upgrade_code /root/odoo18e/dist-packages/odoo/  
 
终于解决了错误; 错误变了
1 2 3 4 5 6 7 8 9 web-1     |   File "/usr/lib/python3/dist-packages/odoo/_monkeypatches/werkzeug_urls.py", line 1044, in patch_werkzeug web-1     |     from ..tools.json import scriptsafe  # noqa: PLC0415 web-1     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ web-1     |   File "/usr/lib/python3/dist-packages/odoo/tools/__init__.py", line 8, in <module> web-1     |     from . import pdf web-1     |   File "/usr/lib/python3/dist-packages/odoo/tools/pdf/__init__.py", line 13, in <module> web-1     |     from reportlab.lib import colors web-1     | ModuleNotFoundError: No module named 'reportlab.lib' web-1 exited with code 1 
 
docker cp f9f29717401a:/usr/lib/python3/dist-packages/reportlab/graphics /root/odoo18e/dist-packages/reportlab/ 
docker cp f9f29717401a:/usr/lib/python3/dist-packages/reportlab/lib /root/odoo18e/dist-packages/reportlab/
docker cp f9f29717401a:/usr/lib/python3/dist-packages/reportlab/pdfbase /root/odoo18e/dist-packages/reportlab/
docker cp f9f29717401a:/usr/lib/python3/dist-packages/reportlab/pdfgen /root/odoo18e/dist-packages/reportlab/
docker cp f9f29717401a:/usr/lib/python3/dist-packages/reportlab/platypus /root/odoo18e/dist-packages/reportlab/
docker cp f9f29717401a:/usr/lib/python3/dist-packages/reportlab/rl_config.py /root/odoo18e/dist-packages/reportlab/
docker cp f9f29717401a:/usr/lib/python3/dist-packages/reportlab/rl_settings.py /root/odoo18e/dist-packages/reportlab/
6: unzip odoo18_unlimited.zip into your addons directory (try to keep separate from main odoo addons. 
scp -P 22226 /Users/carlzeng/Downloads/odoo18_unlimited.zip carlzeng@127.0.0.1 :/home/carlzeng/odoo18_unlimited.zip
carlzeng@127.0.0.1 ‘s password: 
odoo18_unlimited.zip                                            100% 2105    34.0KB/s   00:00    
 
ssh进入debian12的root, 然后复制到root用户目录/root/odoo18e/
 
cp /home/carlzeng/odoo18_unlimited.zip /root/odoo18e/odoo18_unlimited.zip
 
解压缩在/root/odoo18e/
unzip odoo18_unlimited.zip 
Archive: odoo18_unlimited.zip
  creating: odoo_unlimited/
  creating: odoo_unlimited/models/
 inflating: odoo_unlimited/models/update.py  
 inflating: odoo_unlimited/models/init .py  
 inflating: odoo_unlimited/init .py  
 inflating: odoo_unlimited/manifest .py
 
生成出来odoo_unlimited文件夹
 
 
 
把新生成的odoo_unlimited文件夹放到 addons文件夹中去
 
cp -r odoo_unlimited ./addons/
 
核实/编辑docker-compose, 确保 - ./addons:/mnt/extra-addons
 
 
 
如何在UI上更新应用? 刷新
更新应用列表和安装/升级应用。首先,需要激活开发者模式,然后更新应用列表。更新完成后,就可以搜索并安装或升级需要的应用。
8: activate odoo_unlimited 搜索的页面, 默认选择了‘应用’, 这时无法搜索到odoo_unlimited. 需要先删除掉‘应用’这个filter.
9: install accounting module 成功安装, 但是会报JS错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 Odoo客户端错误 UncaughtClientError > TypeError Uncaught Javascript Error > this.titleService.setCounters is not a function Occured on o.carlzeng.com on 2025-07-16 14:45:02 GMT TypeError: this.titleService.setCounters is not a function     clearUnreadMessage@https://o.carlzeng.com/web/assets/f5ab0f4/web.assets_web.min.js:15472:658     setup/<@https://o.carlzeng.com/web/assets/f5ab0f4/web.assets_web.min.js:15472:539     trigger@https://o.carlzeng.com/web/assets/f5ab0f4/web.assets_web.min.js:745:63     onFocusChange@https://o.carlzeng.com/web/assets/f5ab0f4/web.assets_web.min.js:10466:168     start/<@https://o.carlzeng.com/web/assets/f5ab0f4/web.assets_web.min.js:10469:97      
 
4: restart odoo server & update apps 无法完成, 因为一重启docker, 上一步复制进去的内容就全部消失, 洗干净了.
根据odoo_18.0.2024-11-25.deb文件制作dockerfile 根据18.0的https://github.com/odoo/docker/blob/b254689862e8a1bbb9624bf86022867544582dd2/18.0/Dockerfile 
待测试
Odoo定制单据打印的PDF内容 激活开发者模式后,可在”设置->技术->用户界面->视图”搜索和编辑视图:
可以看到打印模板视图是QWeb 视图。QWeb是一个基于XML的模板引擎,用于生成HTML片段和界面。模板命令是写在XML标签内以”t-“开头的属性。
以报价单打印模板为例,可通过“t-field=doc.字段名 ”输出单据头体信息:
功能定制 odoo产品目录树 父子产品 需求: 比如实现如PS5; PS5更换霍尔摇杆这样的子产品; 或者说产品分类
实现: 
启用: 库存 
 
要设置产品类型,请转到 库存应用程序 ‣ 产品 ‣ 产品,然后从列表中选择所需的产品。
在产品表单的 产品类型 字段中
Product Type
https://system0.carlzeng.com:3/web#action=173&model=product.category&view_type=list&cids=1&menu_id=229 
odoo没有父子产品的概念
可以设置系统字段: Category
odoo配置邮件发送 因为收不到邮件, 管理员新建的用户, 无法完成密码设置, 导致新用户无法进入系统
收不到Email的情况下, 如何新建用户?
直接在登录页面注册, 然后管理员到后台修改.
发现: 访问权限  中无法设置权限. 
解决办法: 直接在用户设置页面的; 设置(齿轮图标) - 修改密码
销售模块 如何关闭报价单模块 无法关闭, 需关闭整个‘销售’应用模块才行; 而这样做就偏离了预期
如何设置默认视图, 这样一打开就看到 销售订单/订单
或者如何在odoo中自定义页头的菜单; 这样我新建一个菜单, 比如叫做 ‘打开订单列表’ 就时默认的销售订单.
解决办法: 设置菜单, 自定义. Setting - Technical - User Interface - Menu Items 
如何直接创建一个销售订单 如何直接创建一个销售订单, 而不是每次都从报价单开始
折中方案: 每次在手机上创建好报价单后, 点击‘Confirm’ 确认, 确定为销售订单.
如何修改销售订单的表单? 想要把 ‘客户参考号’放到主页面Main的部位, 方便手机用户查看 和录入/核实
From View
Odoo Form View Customization Step-by-Step Guide
灵感来源 Odoo (formerly known as OpenERP) is a suite of open-source business apps.  
https://github.com/minhng92/odoo-17-docker-compose 
        
        
        
        
        
        个性化需求沟通  扫客服加V加群: