增加云客户端

This commit is contained in:
Ivan Office
2024-11-08 18:41:02 +08:00
parent be545f3db7
commit 9041a4d74a
38 changed files with 679 additions and 26 deletions

View File

@@ -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',

View File

@@ -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<br/>"
msgstr ""
"您可快速获取Odoo中文应用模块主题行业应用方案等。"
"SaaS云客户端在此免费下载<br/>"
#. 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

View File

@@ -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

View File

@@ -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')

View File

@@ -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)

View File

@@ -26,16 +26,30 @@
</div>
</div>
<block title="odooAi Cloud" class="mt16" name="odooai_cloud_block">
<setting title="Setup the communication to odooAi Cloud" string="Setup the communication to odooAi Cloud">
<setting id="odooai_cloud_block_title" title="Setup the communication to odooAi Cloud" string="Setup the communication to odooAi Cloud">
<div name="app_odooapp_link">
<a href="https://www.odooapp.cn" target="_blank">Get the Industry Apps, Themes and Support from China odooapp store.
https://www.odooapp.cn
</a>
</div>
</setting>
<setting id="odooai_cloud_saas_ok" string="Enable CN SaaS" documentation="https://www.odooapp.cn/faq">
<field name="app_saas_ok"/>
<div class="content-group">
<div>
<p class="text-warning">Checked and Save to Enable odoo China cloud service.</p>
<p class="ml4">
Easy Get Odoo Chinese App, Theme, and industry solution. You can get the SaaS client from<br/>
<a href="https://www.odooapp.cn/apps/modules/app_saas" class="o_doc_link ml8"
target="_blank">https://www.odooapp.cn/apps/modules/app_saas
</a>
</p>
</div>
</div>
</setting>
</block>
<div id="app_slot2" class="o_hidden"></div>
</app>
</app>
</xpath>
</field>
</record>

View File

@@ -60,8 +60,6 @@
<field name="app_navbar_pos_mobile"/>
</group>
</group>
<group string="User Menu">
<group>
<field name="app_show_lang"/>

12
app_saas/__init__.py Normal file
View File

@@ -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

78
app_saas/__manifest__.py Normal file
View File

@@ -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 Deng300883@qq.com
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
# See <http://www.gnu.org/licenses/>.
#
# 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,
}

View File

@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
# from . import main

View File

@@ -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/<string:lang>', 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/<model("default.default"):obj>/', auth='public')
# def object(self, obj, **kw):
# return http.request.render('default.object', {
# 'object': obj
# })

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Demo data -->
<record id="model_new_data_01" model="model.new">
<field name="name">demo1</field>
<field name="ref">demo1</field>
<field name="amount">888</field>
<field name="date">2023-09-13</field>
<field name="image" type="base64" file="app_sample/static/img/icon_odooai.png"/>
<field name="w_progressbar">0.5</field>
<field name="state">draft</field>
<field name="user_id" ref="base.user_admin"/>
</record>
<record id="model_new_data_02" model="model.new">
<field name="name">demo2</field>
<field name="ref">demo2</field>
<field name="amount">1600</field>
<field name="date">2023-10-03</field>
<field name="image" type="base64" file="app_sample/static/img/icon_odooai.png"/>
<field name="w_progressbar">0.6</field>
<field name="state">done</field>
<field name="user_id" ref="base.user_admin"/>
</record>
<record id="model_new_data_03" model="model.new">
<field name="name">demo3</field>
<field name="ref">demo3</field>
<field name="amount">3000</field>
<field name="date">2023-09-16</field>
<field name="image" type="base64" file="app_sample/static/img/icon_odooapp.png"/>
<field name="w_progressbar">0.3</field>
<field name="state">cancel</field>
<field name="user_id" ref="base.user_demo"/>
</record>
<record id="model_new_data_04" model="model.new">
<field name="name">demo4</field>
<field name="ref">demo4</field>
<field name="amount">40000</field>
<field name="date">2023-10-06</field>
<field name="image" type="base64" file="app_sample/static/img/icon_odooapp.png"/>
<field name="w_progressbar">0.99</field>
<field name="state">draft</field>
<field name="user_id" ref="base.user_demo"/>
</record>
</data>
</odoo>

29
app_saas/hooks.py Normal file
View File

@@ -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("")

2
app_saas/i18n/README.txt Normal file
View File

@@ -0,0 +1,2 @@
Please follow this tutorial for more guides:
https://www.odoo.com/documentation/master/developer/misc/i18n/translations.html

48
app_saas/i18n/zh_CN.po Normal file
View File

@@ -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 "<strong>Save</strong> to Install Chinese PO App if downloaded."
msgstr "<strong>保存</strong> 后即可安装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"

View File

@@ -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

View File

@@ -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")

View File

@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
# from . import model_new_report

View File

@@ -0,0 +1,77 @@
# -*- coding: utf-8 -*-
##############################################################################
# Copyright (C) 2009-TODAY odooai.cn Ltd. https://www.odooai.cn
# Author: Ivan Deng300883@qq.com
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
# See <http://www.gnu.org/licenses/>.
#
# 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)

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Graph view, 图表-->
<record id="app_model_new_report_view_graph" model="ir.ui.view">
<field name="name">app.model.new.report.graph</field>
<field name="model">model.new.report</field>
<field name="arch" type="xml">
<graph string="Model New Analysis" sample="1">
<field name="amount"/>
<field name="date" interval="month"/>
</graph>
</field>
</record>
<!-- Pivot view, 透视表-->
<record id="app_model_new_report_view_pivot" model="ir.ui.view">
<field name="name">app.model.new.report.pivot</field>
<field name="model">model.new.report</field>
<field name="arch" type="xml">
<pivot string="Model new pivot" sample="1">
<field name="name" type="col"/>
<field name="user_id" type="col"/>
<field name="date" interval="month" type="row"/>
</pivot>
</field>
</record>
<!-- Tree view, 列表-->
<record id="app_model_new_report_view_tree" model="ir.ui.view">
<field name="name">app.model.new.report.tree</field>
<field name="model">model.new.report</field>
<field name="arch" type="xml">
<tree default_order="date desc">
<field name="date"/>
<field name="name"/>
<field name="amount"/>
<field name="user_id" groups="base.group_multi_company"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<record id="app_model_new_report_view_search" model="ir.ui.view">
<field name="name">app.model.new.report.search</field>
<field name="model">model.new.report</field>
<field name="arch" type="xml">
<search string="Model New Search">
<field name="name"/>
<field name="user_id"/>
<filter string="Trailing 12 months" name="completion_date" domain="[
('date', '>=', (datetime.datetime.combine(context_today() + relativedelta(days=-365), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')),
('date', '>=', (datetime.datetime.combine(context_today(), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))]"/>
<separator/>
<filter name="filter_date" date="date"/>
<separator/>
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
<group expand="1" string="Group By">
<filter string="Date" name="group_by_date" context="{'group_by': 'date:month'}"/>
<separator/>
<filter string="User" name="group_by_user_id" context="{'group_by': 'user_id'}"/>
<filter string="Company" name="company" context="{'group_by': 'company_id'}" groups="base.group_multi_company"/>
</group>
</search>
</field>
</record>
<record id="action_model_new_report" model="ir.actions.act_window">
<field name="name">Model New Report</field>
<field name="res_model">model.new.report</field>
<field name="view_mode">graph,pivot,tree</field>
<field name="context">{
'pivot_column_groupby': ['user_id'],
'pivot_row_groupby': ['date:month'],
'graph_mode': 'bar',
'graph_groupbys': ['date:month', 'user_id'],
}
</field>
<field name="domain">[]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
No data yet!
</p>
<p>
Start Analysis
</p>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Create new App security category, 创建应用 -->
<record model="ir.module.category" id="app_module_category_1">
<field name="name">App...</field>
<field name="description">Helps you manage your ...</field>
<field name="sequence">8</field>
</record>
<!-- Cretate new App security group, 权限组 -->
<!-- User group, 普通用记 -->
<record id="group_app_user" model="res.groups">
<field name="name">App User</field>
<field name="category_id" ref="app_module_category_1"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
<field name="comment">The user will be able to ...</field>
</record>
<!-- Admin group管理员可以配置 -->
<record id="group_app_admin" model="res.groups">
<field name="name">App Admin</field>
<field name="category_id" ref="app_module_category_1"/>
<field name="implied_ids" eval="[(4, ref('group_app_user'))]"/>
<field name="comment">The user will be able to config ...</field>
</record>
<!-- Auto set erp admin full accessgroup_erp_manager自动有完整权限 -->
<record id="base.group_erp_manager" model="res.groups">
<field name="implied_ids" eval="[(4, ref('group_app_admin'))]"/>
</record>
<!-- IR Rules, user can only see my record记录集权限用户只能见到自已的记录 -->
<!-- <record id="rule_user" model="ir.rule">-->
<!-- <field name="name">Users are allowed to access their own record</field>-->
<!-- <field name="model_id" ref="model_app_order"/>-->
<!-- <field name="domain_force">['|', ('partner_id', 'in', [user.partner_id.id]), ('user_id.id', '=', user.id)]</field>-->
<!-- <field name="groups" eval="[(4, ref('base.group_user'))]"/>-->
<!-- </record>-->
<!--End -->
</data>
</odoo>

View File

@@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_model_new access_model_new model_model_new base.group_user 1 1 1 1
3 access_model_new_report access_model_new_report model_model_new_report base.group_user 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

View File

@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
# -*- coding: utf-8 -*-
##############################################################################
# Copyright (C) 2009~2024 odooAi.cn
##############################################################################
-->
<html>
<!-- begin title-->
<section class="oe_container container o_cc o_cc2">
<h2 class="text-center bg-warning text-white pt24 pb24">odooapp.cn SaaS Client.Odoo中文应用商店SaaS云服务客户端</h2>
<h3 class="text-center">快速访问Odoo中文应用商店并获取独享Odoo中文通行码</h3>
<h4 class="text-center">一键获取最新应用信息最新行业服务包一键获取Odoo中文翻译更新快速获取Odoo服务Odoo升级评估</h4>
</section>
<!-- end title-->
<!-- quick demo-->
<section class="oe_container container">
<div class="oe_row oe_spaced">
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">启用后快速获取Odoo中文应用商店模块及行业方案</h2>
<h4 class="oe_slogan">未经用户明确同意,本应用不会获取任何用户系统数据</h4>
<p class="">相关内容,请参考用户协议及我们的隐私政策:</p>
<p> https://www.odooapp.cn/conditions</p>
<p> https://www.odooapp.cn/privacy-policy</p>
<div class="oe_demo oe_screenshot img img-fluid">
<img src="demo1.jpg"/>
</div>
</div>
</section>
<!-- end quick demo-->
<!-- begin howto-->
<section class="oe_container container s_text_block o_colored_level pt16 pb16">
<h2 class="text-center bg-info text-white pt16 pb16">- How to setup and use -</h2>
<h3>This app need no extra module. The price already included</h3>
</section>
<section class="oe_container container">
<div class="oe_row oe_spaced">
<h4 class="pt16">
1. Buy and Install
</h4>
<h4 class="pt16">
2. Read the app description for user guide
</h4>
<h4 class="pt16">
3. Enjoy and easy use
</h4>
<div class="row">
<div class="oe_demo oe_screenshot img img-fluid">
<img src="banner.png">
</div>
</div>
<h4 class="pt16">4. More information in our FAQ</h4>
<div class="row">
https://www.odooai.cn/faq
</div>
</div>
</section>
<!-- end howto-->
<!-- begin upsell-->
<!-- end upsell-->
<!-- begin support-->
<section class="container oe_dark">
<div class="oe_row oe_spaced text-center">
<div class="row">
<h2 class="oe_slogan">Technical Help & Support</h2>
</div>
<div class="col-md-12 pad0">
<div class="oe_mt16">
<p><h4 class="pt16">
For any type of technical help & support requests, Feel free to contact us</h4></p>
<a style="background: #002e5a none repeat scroll 0% 0%; color: rgb(255, 255, 255);position: relative; overflow: hidden;"
class="btn btn-warning btn-lg" rel="nofollow" href="mailto:odoo@china.com"><span
style="height: 354px; width: 354px; top: -147.433px; left: -6.93335px;" class="o_ripple"></span>
<i class="fa fa-envelope"></i> odoo@china.com</a>
<p><h4 class="pt16">
Via QQ: 300883 (App user would not get QQ or any other IM support. Only for odoo project customize.)</h4></p>
<a style="background: #002e5a none repeat scroll 0% 0%; color: rgb(255, 255, 255);position: relative; overflow: hidden;"
class="btn btn-warning btn-lg" rel="nofollow" href="mailto:300883@qq.com"><span
style="height: 354px; width: 354px; top: -147.433px; left: -6.93335px;" class="o_ripple"></span>
<i class="fa fa-envelope"></i> 300883@qq.com</a>
</div>
<div class="oe_mt16">
<h4 class="pt16">Visit our website for more support.</h4>
<h4 class="pt16">https://www.odooai.cn</h4>
</div>
</div>
</div>
</section>
<!-- end support-->
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

View File

View File

@@ -0,0 +1,3 @@
// scss sample

View File

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="app_res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.app_common</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//setting[@id='odooai_cloud_saas_ok']" position="after">
<setting string="SaaS Chinese PO" help="Checked to Sync Odoo Chinese from www.odooapp.cn" id="module_app_cn_po">
<field name="module_app_cn_po"/>
<div class="content-group mt16" invisible="not module_app_cn_po" id="msg_module_app_cn_po">
<div class="mt16 text-warning">
<strong>Save</strong> to Install Chinese PO App if downloaded.
</div>
<div class="text-warning">
Or get the app from
<a href="https://www.odooapp.cn/apps/modules/app_cn_po" class="o_doc_link ml8"
target="_blank">https://www.odooapp.cn/apps/modules/app_cn_po
</a>
</div>
</div>
</setting>
</xpath>
</field>
</record>
</data>
</odoo>

View File