搭建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加群: