docker搭建odoo企业管理开源解决方案

搭建erp用于远程协作, 团队协作, 远程办公

有什么用/怎么用

如何安装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
#- ./config:/etc/odoo
#- ./addons:/mnt/extra-addons
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

设置好权限以后, 可以运行访问网页

image-20250401213614590

企业版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
# - ./config:/etc/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
#- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
#- ./dist-packages:/usr/lib/python3/dist-packages
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内容都复制出来,然后在添加映射.

image-20250714231620552

image-20250714231811031

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:

  1. 复制本机addons-18e.zip到debian12的目录中去/root/odoo18e/

    1. scp -P 22226 /Users/carlzeng/Downloads/addons-18e.zip carlzeng@127.0.0.1:/home/carlzeng/addons-18e.zip

    2. 由于权限的缘故, 只能先传输到目录: /home/carlzeng

    3. 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

    4. ssh进入debian12的root, 然后复制到root用户目录/root/odoo18e/

    5. cp /home/carlzeng/addons-18e.zip /root/odoo18e/addons-18e.zip

    6. 解压缩在/root/odoo18e/

      1. unzip addons-18e.zip
      2. 生成出来addons文件夹
  2. 复制debian12中的addons-18e.zip到docker的/usr/lib/python3/dist-packages中去

    1. docker cp /root/odoo18e/addons-18e.zip b55461b312c7:/usr/lib/python3/dist-packages/addons-18e.zip
    2. 成功了, 但是docker中无法运行unzip(没有安装, 且无法安装)
    3. 复制debian12中的addons文件夹(以及下面的所有文件和文件夹)到docker的/usr/lib/python3/dist-packages中去
    4. docker cp /root/odoo18e/addons/ b55461b312c7:/usr/lib/python3/dist-packages/
  3. [忽略]docker exec -it 进入docker的目录进行addons-18e.zip解压缩并覆盖

    1. unzip archive_name.zip`:这将解压缩ZIP文件到当前目录。

    2. tar 无法解压缩.zip文件.

    3. 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?

    4. 如何在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

image-20250715230700882

复制完成了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

image-20250716215307666

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.

  1. 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

  2. ssh进入debian12的root, 然后复制到root用户目录/root/odoo18e/

  3. cp /home/carlzeng/odoo18_unlimited.zip /root/odoo18e/odoo18_unlimited.zip

  4. 解压缩在/root/odoo18e/

    1. 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

    2. 生成出来odoo_unlimited文件夹

  5. 把新生成的odoo_unlimited文件夹放到 addons文件夹中去

  6. cp -r odoo_unlimited ./addons/

  7. 核实/编辑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内容

激活开发者模式后,可在”设置->技术->用户界面->视图”搜索和编辑视图:

image-20250403175105057

可以看到打印模板视图是QWeb视图。QWeb是一个基于XML的模板引擎,用于生成HTML片段和界面。模板命令是写在XML标签内以”t-“开头的属性。

以报价单打印模板为例,可通过“t-field=doc.字段名”输出单据头体信息:

功能定制

odoo产品目录树 父子产品

需求: 比如实现如PS5; PS5更换霍尔摇杆这样的子产品; 或者说产品分类

实现:

  1. 启用: 库存

要设置产品类型,请转到 库存应用程序 ‣ 产品 ‣ 产品,然后从列表中选择所需的产品。

在产品表单的 产品类型 字段中

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