diff --git a/app_common/__manifest__.py b/app_common/__manifest__.py
index 0aec1ce4..b8255707 100644
--- a/app_common/__manifest__.py
+++ b/app_common/__manifest__.py
@@ -39,7 +39,7 @@
{
'name': "odooAi Common Util and Tools,欧度智能基础功能及面板",
- 'version': '24.10.31',
+ 'version': '24.11.08',
'author': 'odooai.cn',
'category': 'Base',
'website': 'https://www.odooai.cn',
diff --git a/app_common/i18n/zh_CN.po b/app_common/i18n/zh_CN.po
index 38eac5c7..2a7876b1 100644
--- a/app_common/i18n/zh_CN.po
+++ b/app_common/i18n/zh_CN.po
@@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 18.0-20241031\n"
+"Project-Id-Version: Odoo Server 18.0+e-20241031\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-10-31 11:14+0000\n"
-"PO-Revision-Date: 2024-10-31 11:14+0000\n"
+"POT-Creation-Date: 2024-11-08 10:17+0000\n"
+"PO-Revision-Date: 2024-11-08 10:17+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -27,23 +27,54 @@ msgstr "================= 忽略不发送的Email: %s"
msgid "Base"
msgstr "基础"
+#. module: app_common
+#: model_terms:ir.ui.view,arch_db:app_common.app_res_config_settings_view_form
+msgid "Checked and Save to Enable odoo China cloud service."
+msgstr "勾选并保存,即可启用Odoo中文应用商店云服务"
+
+#. module: app_common
+#: model:ir.model.fields,help:app_common.field_res_config_settings__app_saas_ok
+msgid "Checked to Enable www.odooapp.cn cloud service."
+msgstr "勾选后启用Odoo中文应用商店云服务"
+
+#. module: app_common
+#: model:ir.model,name:app_common.model_res_config_settings
+msgid "Config Settings"
+msgstr "设置"
+
#. module: app_common
#: model:ir.model,name:app_common.model_res_partner
msgid "Contact"
msgstr "联系人"
+#. module: app_common
+#: model_terms:ir.ui.view,arch_db:app_common.app_res_config_settings_view_form
+msgid ""
+"Easy Get Odoo Chinese App, Theme, and industry solution. You can get the "
+"SaaS client from
"
+msgstr ""
+"您可快速获取Odoo中文应用模块,主题,行业应用方案等。"
+"SaaS云客户端在此免费下载
"
+
#. module: app_common
#. odoo-python
#: code:addons/app_common/models/ir_mail_server.py:0
msgid "Email to ignore: %s"
msgstr "忽略的Email: %s"
+#. module: app_common
+#: model:ir.model.fields,field_description:app_common.field_res_config_settings__app_saas_ok
+#: model_terms:ir.ui.view,arch_db:app_common.app_res_config_settings_view_form
+msgid "Enable CN SaaS"
+msgstr "启用Odoo中文云服务"
+
#. module: app_common
#: model_terms:ir.ui.view,arch_db:app_common.app_res_config_settings_view_form
msgid ""
"Get the Industry Apps, Themes and Support from China odooapp store.\n"
" https://www.odooapp.cn"
-msgstr "获取Odoo行业应用,模块,主题。请访问Odoo中国应用商店\n"
+msgstr ""
+"获取Odoo行业应用,模块,主题。请访问Odoo中国应用商店\n"
" https://www.odooapp.cn"
#. module: app_common
@@ -56,11 +87,6 @@ msgstr "HTTP 路由"
msgid "Last Trigger User"
msgstr "手动运行用户"
-#. module: app_common
-#: model:ir.model.fields,field_description:app_common.field_res_users__login
-msgid "Login"
-msgstr "登录"
-
#. module: app_common
#: model:ir.model,name:app_common.model_ir_mail_server
msgid "Mail Server"
@@ -81,6 +107,11 @@ msgstr "安排的动作"
msgid "Setup the communication to odooAi Cloud"
msgstr "设置云面板"
+#. module: app_common
+#: model:ir.model.fields,help:app_common.field_res_users__login
+msgid "Used to log into the system"
+msgstr "用于用户登录系统"
+
#. module: app_common
#: model_terms:ir.ui.view,arch_db:app_common.app_res_config_settings_view_form
msgid ""
@@ -90,6 +121,11 @@ msgstr ""
"欢迎访问欧度智能官方网站,获取Odoo企业级运营支持。\n"
"\t\t\t\t\t\t\t\t\t\t\t\t\t https://www.odooai.cn"
+#. module: app_common
+#: model_terms:ir.ui.view,arch_db:app_common.app_res_config_settings_view_form
+msgid "https://www.odooapp.cn/apps/modules/app_saas"
+msgstr "https://www.odooapp.cn/apps/modules/app_saas"
+
#. module: app_common
#: model:ir.actions.act_window,name:app_common.action_odooai_cloud_config
#: model_terms:ir.ui.view,arch_db:app_common.app_res_config_settings_view_form
diff --git a/app_common/models/__init__.py b/app_common/models/__init__.py
index 534ba2b7..690ea6e6 100644
--- a/app_common/models/__init__.py
+++ b/app_common/models/__init__.py
@@ -25,12 +25,12 @@
from . import base
from . import ir_ui_view
from . import ir_cron
-from . import res_users
from . import ir_mail_server
from . import mail_mail
from . import ir_http
from . import app_import
from . import res_partner
+from . import res_config_settings
diff --git a/app_common/models/res_config_settings.py b/app_common/models/res_config_settings.py
new file mode 100644
index 00000000..7f4129d7
--- /dev/null
+++ b/app_common/models/res_config_settings.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+
+import logging
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError, ValidationError
+
+_logger = logging.getLogger(__name__)
+
+
+class ResConfigSettings(models.TransientModel):
+ _inherit = 'res.config.settings'
+
+ app_saas_ok = fields.Boolean('Enable CN SaaS', help="Checked to Enable www.odooapp.cn cloud service.", default=True, config_parameter='app_saas_ok')
+
diff --git a/app_common/models/res_users.py b/app_common/models/res_users.py
deleted file mode 100644
index 1c18b7ad..00000000
--- a/app_common/models/res_users.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-from odoo import api, fields, models, tools, _
-
-
-class ResUsers(models.Model):
- _inherit = 'res.users'
-
- login = fields.Char(index=True)
diff --git a/app_common/views/res_config_settings_views.xml b/app_common/views/res_config_settings_views.xml
index 7aec1d5e..6e7fc3d2 100644
--- a/app_common/views/res_config_settings_views.xml
+++ b/app_common/views/res_config_settings_views.xml
@@ -26,16 +26,30 @@
-
+
+
+
+
+
-
+
diff --git a/app_odoo_customize/views/res_config_settings_views.xml b/app_odoo_customize/views/res_config_settings_views.xml
index 27db241c..ff921c33 100644
--- a/app_odoo_customize/views/res_config_settings_views.xml
+++ b/app_odoo_customize/views/res_config_settings_views.xml
@@ -60,8 +60,6 @@
-
-
diff --git a/app_saas/__init__.py b/app_saas/__init__.py
new file mode 100644
index 00000000..ef83fef4
--- /dev/null
+++ b/app_saas/__init__.py
@@ -0,0 +1,12 @@
+# -*- coding: utf-8 -*-
+
+# please comment follow for produce
+from . import models
+from . import report
+from . import controllers
+
+# hook form install and uninstall
+
+from .hooks import pre_init_hook
+from .hooks import post_init_hook
+from .hooks import uninstall_hook
diff --git a/app_saas/__manifest__.py b/app_saas/__manifest__.py
new file mode 100644
index 00000000..3ad80952
--- /dev/null
+++ b/app_saas/__manifest__.py
@@ -0,0 +1,78 @@
+# -*- coding: utf-8 -*-
+
+# Created on 2023-10-06
+# author: 欧度智能,https://www.odooai.cn
+# email: 300883@qq.com
+# Copyright (C) 2009~2024 odooAi.cn
+
+# Odoo16在线用户手册(长期更新)
+# https://www.odooai.cn/documentation/16.0/zh_CN/index.html
+
+# Odoo16在线开发者手册(长期更新)
+# https://www.odooai.cn/documentation/16.0/zh_CN/developer.html
+
+# 行业应用说明,应该是带 Industry 的就会放入
+
+##############################################################################
+# Copyright (C) 2009-TODAY odooAi.cn Ltd. https://www.odooai.cn
+# Author: Ivan Deng,300883@qq.com
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+# See .
+#
+# It is forbidden to publish, distribute, sublicense, or sell copies
+# of the Software or modified copies of the Software.
+##############################################################################
+
+{
+ 'name': 'odooapp.cn SaaS Client.Odoo中文应用商店SaaS云服务客户端',
+ 'version': '24.11.08',
+ 'author': 'odooai.cn',
+ 'category': 'Base',
+ 'website': 'https://www.odooai.cn',
+ 'live_test_url': 'https://demo.odooapp.cn',
+ 'license': 'OPL-1',
+ 'sequence': 2,
+ 'price': 0.00,
+ 'currency': 'EUR',
+ 'images': ['static/description/banner.png'],
+ 'summary': '''
+ Odoo中文云服务客户端,模块持续更新中。
+ 支持Odoo中文版在线更新及 www.odooapp.cn 的信息推送等。
+ 安装即代表同意我司云服务用户协议及隐私政策。 https://www.odooapp.cn/conditions
+ ''',
+ 'description': '''
+ 1. 快速访问Odoo中文应用商店并获取独享Odoo中文通行码
+ 2. 一键获取最新应用信息,最新行业服务包
+ 3. 一键获取Odoo中文翻译更新
+ 4. 快速获取Odoo服务,Odoo升级评估
+ 11.多语言支持,多公司支持
+ 12.仅从Odoo18企业版,社区版版本开始支持
+ 13.代码完全开源
+ ''',
+ 'depends': [
+ 'app_common',
+ # 'website',
+ ],
+ 'data': [
+ 'views/res_config_settings_views.xml',
+ ],
+ 'assets': {
+ 'web.assets_frontend': [
+ # 'app_/static/src/scss/style.scss',
+ ],
+ 'web.assets_backend': [
+ # 'app_/static/src/js/*.js',
+ ],
+ },
+ 'demo': [
+ # 'data/model_new_demo.xml',
+ # 'views/website_templates.xml',
+ ],
+ # 'pre_init_hook': 'pre_init_hook',
+ # 'post_init_hook': 'post_init_hook',
+ # 'uninstall_hook': 'uninstall_hook',
+ 'installable': True,
+ 'application': True,
+ 'auto_install': False,
+}
diff --git a/app_saas/controllers/__init__.py b/app_saas/controllers/__init__.py
new file mode 100644
index 00000000..83118e09
--- /dev/null
+++ b/app_saas/controllers/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+# from . import main
diff --git a/app_saas/controllers/main.py b/app_saas/controllers/main.py
new file mode 100644
index 00000000..1e0963f0
--- /dev/null
+++ b/app_saas/controllers/main.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+#
+# from odoo import http
+# from odoo.addons.portal.controllers.portal import CustomerPortal
+#
+#
+# class appCustomerPortal(CustomerPortal):
+#
+# # Controler sample
+# @http.route('/my/webclient/locale/', type='http', auth="none")
+# def index(self, **kw):
+# return "Hello, world"
+#
+# @http.route('/default/default/objects/', auth='public')
+# def list(self, **kw):
+# return http.request.render('default.listing', {
+# 'root': '/default/default',
+# 'objects': http.request.env['default.default'].search([]),
+# })
+#
+# @http.route('/default/default/objects//', auth='public')
+# def object(self, obj, **kw):
+# return http.request.render('default.object', {
+# 'object': obj
+# })
diff --git a/app_saas/data/model_new_demo.xml b/app_saas/data/model_new_demo.xml
new file mode 100644
index 00000000..e2eca3bc
--- /dev/null
+++ b/app_saas/data/model_new_demo.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+ demo1
+ demo1
+ 888
+ 2023-09-13
+
+ 0.5
+ draft
+
+
+
+ demo2
+ demo2
+ 1600
+ 2023-10-03
+
+ 0.6
+ done
+
+
+
+ demo3
+ demo3
+ 3000
+ 2023-09-16
+
+ 0.3
+ cancel
+
+
+
+ demo4
+ demo4
+ 40000
+ 2023-10-06
+
+ 0.99
+ draft
+
+
+
+
\ No newline at end of file
diff --git a/app_saas/hooks.py b/app_saas/hooks.py
new file mode 100644
index 00000000..8f76cdea
--- /dev/null
+++ b/app_saas/hooks.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+
+# Created on 2023-10-06
+# author: 欧度智能,https://www.odooai.cn
+# email: 300883@qq.com
+# Copyright (C) 2009~2024 odooAi.cn
+
+# Odoo16在线用户手册(长期更新)
+# https://www.odooai.cn/documentation/16.0/zh_CN/index.html
+
+# Odoo16在线开发者手册(长期更新)
+# https://www.odooai.cn/documentation/16.0/zh_CN/developer.html
+
+from odoo import api, SUPERUSER_ID, _
+
+
+def pre_init_hook(env):
+ pass
+ # cr.execute("")
+
+
+def post_init_hook(env):
+ pass
+ # cr.execute("")
+
+
+def uninstall_hook(env):
+ pass
+ # cr.execute("")
diff --git a/app_saas/i18n/README.txt b/app_saas/i18n/README.txt
new file mode 100644
index 00000000..222b84cd
--- /dev/null
+++ b/app_saas/i18n/README.txt
@@ -0,0 +1,2 @@
+Please follow this tutorial for more guides:
+https://www.odoo.com/documentation/master/developer/misc/i18n/translations.html
\ No newline at end of file
diff --git a/app_saas/i18n/zh_CN.po b/app_saas/i18n/zh_CN.po
new file mode 100644
index 00000000..51835a3a
--- /dev/null
+++ b/app_saas/i18n/zh_CN.po
@@ -0,0 +1,48 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * app_saas
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 18.0+e-20241031\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-11-08 10:21+0000\n"
+"PO-Revision-Date: 2024-11-08 10:21+0000\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: app_saas
+#: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form
+msgid "Save to Install Chinese PO App if downloaded."
+msgstr "保存 后即可安装Odoo中文云翻译模块。本模块可至Odoo中文应用商店下载。"
+
+#. module: app_saas
+#: model:ir.model.fields,help:app_saas.field_res_config_settings__module_app_cn_po
+#: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form
+msgid "Checked to Sync Odoo Chinese from www.odooapp.cn"
+msgstr "勾选后即可启用Odoo中文云翻译,相关服务由 www.odooapp.cn 提供"
+
+#. module: app_saas
+#: model:ir.model,name:app_saas.model_res_config_settings
+msgid "Config Settings"
+msgstr "设置"
+
+#. module: app_saas
+#: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form
+msgid "Or get the app from"
+msgstr "您可以在此获取本应用模块"
+
+#. module: app_saas
+#: model:ir.model.fields,field_description:app_saas.field_res_config_settings__module_app_cn_po
+#: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form
+msgid "SaaS Chinese PO"
+msgstr "中文云翻译PO"
+
+#. module: app_saas
+#: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form
+msgid "https://www.odooapp.cn/apps/modules/app_cn_po"
+msgstr "https://www.odooapp.cn/apps/modules/app_cn_po"
diff --git a/app_saas/models/__init__.py b/app_saas/models/__init__.py
new file mode 100644
index 00000000..ce7ed9e5
--- /dev/null
+++ b/app_saas/models/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of odooAi.cn. See LICENSE file for full copyright and licensing details.
+
+from . import res_config_settings
diff --git a/app_saas/models/res_config_settings.py b/app_saas/models/res_config_settings.py
new file mode 100644
index 00000000..01c8ed94
--- /dev/null
+++ b/app_saas/models/res_config_settings.py
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+
+import logging
+
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError, ValidationError
+
+_logger = logging.getLogger(__name__)
+
+
+class ResConfigSettings(models.TransientModel):
+ _inherit = 'res.config.settings'
+
+ module_app_cn_po = fields.Boolean('SaaS Chinese PO', help="Checked to Sync Odoo Chinese from www.odooapp.cn")
diff --git a/app_saas/report/__init__.py b/app_saas/report/__init__.py
new file mode 100644
index 00000000..1735152f
--- /dev/null
+++ b/app_saas/report/__init__.py
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+# from . import model_new_report
+
diff --git a/app_saas/report/model_new_report.py b/app_saas/report/model_new_report.py
new file mode 100644
index 00000000..1789c71b
--- /dev/null
+++ b/app_saas/report/model_new_report.py
@@ -0,0 +1,77 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+# Copyright (C) 2009-TODAY odooai.cn Ltd. https://www.odooai.cn
+# Author: Ivan Deng,300883@qq.com
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+# See .
+#
+# It is forbidden to publish, distribute, sublicense, or sell copies
+# of the Software or modified copies of the Software.
+
+# Create on 2023-10-06
+##############################################################################
+
+from odoo import fields, models, tools, api
+
+
+class ModelNewReport(models.Model):
+
+ # Model New Analysis
+ _name = 'model.new.report'
+ _auto = False
+ _description = 'Model New Analysis'
+ _rec_name = 'name'
+
+ # Base field
+ name = fields.Char(string='Name', readonly=True)
+ ref = fields.Char(string='Reference', readonly=True)
+ amount = fields.Float(string="Amount", readonly=True)
+ date = fields.Datetime(string="Date", readonly=True)
+ user_id = fields.Many2one('res.users', string='User', readonly=True)
+ user_login = fields.Char(string='User Login', readonly=True)
+ company_id = fields.Many2one('res.company', 'Company', readonly=True)
+ active = fields.Boolean(string="Active", readonly=True)
+
+ @api.model
+ def _select(self):
+ return '''
+ SELECT
+ m.id,
+ m.name,
+ m.ref,
+ m.amount,
+ m.date,
+ m.user_id,
+ u.login AS user_login,
+ m.company_id,
+ m.active
+ '''
+
+ @api.model
+ def _from(self):
+ return '''
+ FROM model_new AS m
+ '''
+
+ @api.model
+ def _join(self):
+ return '''
+ JOIN res_users AS u ON m.user_id = u.id
+ '''
+
+ @api.model
+ def _where(self):
+ return ''
+
+ def init(self):
+ tools.drop_view_if_exists(self._cr, self._table)
+ sql = '''
+ CREATE OR REPLACE VIEW %s AS (
+ %s
+ %s
+ %s
+ %s
+ )
+ ''' % (self._table, self._select(), self._from(), self._join(), self._where())
+ self._cr.execute(sql)
diff --git a/app_saas/report/model_new_report_views.xml b/app_saas/report/model_new_report_views.xml
new file mode 100644
index 00000000..f04ea2b3
--- /dev/null
+++ b/app_saas/report/model_new_report_views.xml
@@ -0,0 +1,88 @@
+
+
+
+
+ app.model.new.report.graph
+ model.new.report
+
+
+
+
+
+
+
+
+
+
+ app.model.new.report.pivot
+ model.new.report
+
+
+
+
+
+
+
+
+
+
+
+ app.model.new.report.tree
+ model.new.report
+
+
+
+
+
+
+
+
+
+
+
+
+ app.model.new.report.search
+ model.new.report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Model New Report
+ model.new.report
+ graph,pivot,tree
+ {
+ 'pivot_column_groupby': ['user_id'],
+ 'pivot_row_groupby': ['date:month'],
+ 'graph_mode': 'bar',
+ 'graph_groupbys': ['date:month', 'user_id'],
+ }
+
+ []
+
+
+ No data yet!
+
+
+ Start Analysis
+
+
+
+
diff --git a/app_saas/security/app_security.xml b/app_saas/security/app_security.xml
new file mode 100644
index 00000000..99b55a21
--- /dev/null
+++ b/app_saas/security/app_security.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+ App...
+ Helps you manage your ...
+ 8
+
+
+
+
+ App User
+
+
+ The user will be able to ...
+
+
+
+
+ App Admin
+
+
+ The user will be able to config ...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app_saas/security/ir.model.access.csv b/app_saas/security/ir.model.access.csv
new file mode 100644
index 00000000..fc156047
--- /dev/null
+++ b/app_saas/security/ir.model.access.csv
@@ -0,0 +1,3 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_model_new,access_model_new,model_model_new,base.group_user,1,1,1,1
+access_model_new_report,access_model_new_report,model_model_new_report,base.group_user,1,1,1,1
diff --git a/app_saas/static/description/banner.png b/app_saas/static/description/banner.png
new file mode 100644
index 00000000..db48c7e8
Binary files /dev/null and b/app_saas/static/description/banner.png differ
diff --git a/app_saas/static/description/banner1.png b/app_saas/static/description/banner1.png
new file mode 100644
index 00000000..08b91f6c
Binary files /dev/null and b/app_saas/static/description/banner1.png differ
diff --git a/app_saas/static/description/demo1.jpg b/app_saas/static/description/demo1.jpg
new file mode 100644
index 00000000..f53cf780
Binary files /dev/null and b/app_saas/static/description/demo1.jpg differ
diff --git a/app_saas/static/description/icon.png b/app_saas/static/description/icon.png
new file mode 100644
index 00000000..8c7b0fbb
Binary files /dev/null and b/app_saas/static/description/icon.png differ
diff --git a/app_saas/static/description/index.html b/app_saas/static/description/index.html
new file mode 100644
index 00000000..15f7d1e3
--- /dev/null
+++ b/app_saas/static/description/index.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+ odooapp.cn SaaS Client.Odoo中文应用商店SaaS云服务客户端
+ 快速访问Odoo中文应用商店并获取独享Odoo中文通行码
+ 一键获取最新应用信息,最新行业服务包,一键获取Odoo中文翻译更新,快速获取Odoo服务,Odoo升级评估
+
+
+
+
+
+
+
启用后快速获取Odoo中文应用商店模块及行业方案
+
未经用户明确同意,本应用不会获取任何用户系统数据
+
相关内容,请参考用户协议及我们的隐私政策:
+
https://www.odooapp.cn/conditions
+
https://www.odooapp.cn/privacy-policy
+
+

+
+
+
+
+
+
+
+
+ - How to setup and use -
+ This app need no extra module. The price already included
+
+
+
+
+ 1. Buy and Install
+
+
+ 2. Read the app description for user guide
+
+
+ 3. Enjoy and easy use
+
+
+
+

+
+
+
4. More information in our FAQ
+
+ https://www.odooai.cn/faq
+
+
+
+
+
+
+
+
+
+
+
+
+
Technical Help & Support
+
+
+
+
+ For any type of technical help & support requests, Feel free to contact us
+
+ odoo@china.com
+
+ Via QQ: 300883 (App user would not get QQ or any other IM support. Only for odoo project customize.)
+
+ 300883@qq.com
+
+
+
Visit our website for more support.
+ https://www.odooai.cn
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app_saas/static/description/qr.png b/app_saas/static/description/qr.png
new file mode 100644
index 00000000..b7433fc9
Binary files /dev/null and b/app_saas/static/description/qr.png differ
diff --git a/app_saas/static/img/icon_odooai.png b/app_saas/static/img/icon_odooai.png
new file mode 100644
index 00000000..a022f8d0
Binary files /dev/null and b/app_saas/static/img/icon_odooai.png differ
diff --git a/app_saas/static/img/icon_odooapp.png b/app_saas/static/img/icon_odooapp.png
new file mode 100644
index 00000000..775a12ee
Binary files /dev/null and b/app_saas/static/img/icon_odooapp.png differ
diff --git a/app_saas/static/img/logo_odooai.png b/app_saas/static/img/logo_odooai.png
new file mode 100644
index 00000000..482f2a50
Binary files /dev/null and b/app_saas/static/img/logo_odooai.png differ
diff --git a/app_saas/static/src/js/odooai.cn b/app_saas/static/src/js/odooai.cn
new file mode 100644
index 00000000..e69de29b
diff --git a/app_saas/static/src/scss/odooai.cn b/app_saas/static/src/scss/odooai.cn
new file mode 100644
index 00000000..e69de29b
diff --git a/app_saas/static/src/scss/style.scss b/app_saas/static/src/scss/style.scss
new file mode 100644
index 00000000..210b0a1e
--- /dev/null
+++ b/app_saas/static/src/scss/style.scss
@@ -0,0 +1,3 @@
+// scss sample
+
+
diff --git a/app_saas/static/src/xml/odooai.cn b/app_saas/static/src/xml/odooai.cn
new file mode 100644
index 00000000..e69de29b
diff --git a/app_saas/views/res_config_settings_views.xml b/app_saas/views/res_config_settings_views.xml
new file mode 100644
index 00000000..73b96eaf
--- /dev/null
+++ b/app_saas/views/res_config_settings_views.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ res.config.settings.view.form.inherit.app_common
+ res.config.settings
+
+
+
+
+
+
+
+ Save to Install Chinese PO App if downloaded.
+
+
+
+
+
+
+
+
+
diff --git a/app_saas/wizard/odooai.cn b/app_saas/wizard/odooai.cn
new file mode 100644
index 00000000..e69de29b
diff --git a/l10n_cn_standard_latest/security/res_groups.xml b/l10n_cn_standard_latest/security/res_groups.xml
index 065de67e..81a31e25 100644
--- a/l10n_cn_standard_latest/security/res_groups.xml
+++ b/l10n_cn_standard_latest/security/res_groups.xml
@@ -6,4 +6,4 @@
-
\ No newline at end of file
+