mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
优化account结构
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
|
||||
{
|
||||
'name': "App Account Multi Level Chart, parent children tree",
|
||||
'version': '24.06.13',
|
||||
'version': '17.0.24.12.12',
|
||||
'author': 'odooai.cn',
|
||||
'category': 'Extra tools',
|
||||
'website': 'https://www.odooai.cn',
|
||||
@@ -38,22 +38,11 @@
|
||||
'currency': 'EUR',
|
||||
'depends': [
|
||||
'account',
|
||||
'l10n_cn_standard_latest',
|
||||
],
|
||||
'images': ['static/description/banner.gif'],
|
||||
'images': ['static/description/banner.png'],
|
||||
'data': [
|
||||
'views/account_account_views.xml',
|
||||
],
|
||||
'demo': [
|
||||
],
|
||||
'test': [
|
||||
],
|
||||
'css': [
|
||||
],
|
||||
'qweb': [
|
||||
'static/src/xml/*.xml',
|
||||
],
|
||||
'js': [
|
||||
'views/res_company_views.xml',
|
||||
],
|
||||
'post_load': None,
|
||||
'post_init_hook': 'post_init_hook',
|
||||
|
||||
@@ -1,14 +1,95 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * app_account_ztree
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Project-Id-Version: Odoo Server 16.0+e-20231112\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-01-08 14:28+0000\n"
|
||||
"PO-Revision-Date: 2018-01-08 14:28+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"POT-Creation-Date: 2024-12-12 14:09+0000\n"
|
||||
"PO-Revision-Date: 2024-12-12 14:09+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_account_ztree
|
||||
#: model:ir.model,name:app_account_ztree.model_account_account
|
||||
msgid "Account"
|
||||
msgstr "科目"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#: model:ir.model,name:app_account_ztree.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "科目表模版"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#: model:ir.model.fields,field_description:app_account_ztree.field_res_company__coa_delimiter
|
||||
msgid "COA Delimiter"
|
||||
msgstr "会计科目分隔符"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#. odoo-python
|
||||
#: code:addons/app_account_ztree/models/account_chart_template.py:0
|
||||
#, python-format
|
||||
msgid "Cannot generate an unused account code."
|
||||
msgstr "无法生成关联会计科目"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#: model:ir.model.fields,field_description:app_account_ztree.field_account_account__child_ids
|
||||
#: model:ir.model.fields,field_description:app_account_ztree.field_account_account_template__child_ids
|
||||
msgid "Child Chart"
|
||||
msgstr "下级科目"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#: model:ir.model.fields,field_description:app_account_ztree.field_account_chart_template__delimiter
|
||||
msgid "Code Delimiter"
|
||||
msgstr "分隔符"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#: model:ir.model,name:app_account_ztree.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "公司"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#: model:ir.model.fields,help:app_account_ztree.field_account_chart_template__delimiter
|
||||
msgid "Delimiter after parent account chart"
|
||||
msgstr "本会计科目与上级科目之前的分隔符"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#: model:ir.model.fields,help:app_account_ztree.field_res_company__coa_delimiter
|
||||
msgid "Delimiter after parent account in Chart of Accounts"
|
||||
msgstr "当前会计科目表中,下级科目与上级科目之前的分隔符"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#. odoo-python
|
||||
#: code:addons/app_account_ztree/models/account_chart_template.py:0
|
||||
#, python-format
|
||||
msgid "Liquidity Transfer"
|
||||
msgstr "流动性转移"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#: model:ir.model.fields,field_description:app_account_ztree.field_account_account__parent_id
|
||||
#: model:ir.model.fields,field_description:app_account_ztree.field_account_account_template__parent_id
|
||||
msgid "Parent Chart"
|
||||
msgstr "上级科目"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#: model:ir.model.fields,field_description:app_account_ztree.field_account_account__parent_path
|
||||
#: model:ir.model.fields,field_description:app_account_ztree.field_account_account_template__parent_path
|
||||
msgid "Parent Path"
|
||||
msgstr "树状级别路径"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#: model:ir.model,name:app_account_ztree.model_account_account_template
|
||||
msgid "Templates for Accounts"
|
||||
msgstr "会计科目模板"
|
||||
|
||||
#. module: app_account_ztree
|
||||
#. odoo-python
|
||||
#: code:addons/app_account_ztree/models/account_account.py:0
|
||||
#, python-format
|
||||
msgid "Update parent account chart done.<br/>【%s】 records updated."
|
||||
msgstr "更新会计科目表上下级关系完成。<br/>【%s】 条记录更新完成。"
|
||||
|
||||
@@ -1 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import account_account
|
||||
from . import res_company
|
||||
|
||||
|
||||
71
app_account_ztree/models/account_account.py
Normal file
71
app_account_ztree/models/account_account.py
Normal file
@@ -0,0 +1,71 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Created on 2018-11-28
|
||||
# author: 欧度智能,https://www.odooai.cn
|
||||
# email: 300883@qq.com
|
||||
# resource of odooai
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
# Odoo在线中文用户手册(长期更新)
|
||||
# https://www.odooai.cn/documentation/user/10.0/zh_CN/index.html
|
||||
|
||||
# Odoo10离线中文用户手册下载
|
||||
# https://www.odooai.cn/odoo10_user_manual_document_offline/
|
||||
# Odoo10离线开发手册下载-含python教程,jquery参考,Jinja2模板,PostgresSQL参考(odoo开发必备)
|
||||
# https://www.odooai.cn/odoo10_developer_document_offline/
|
||||
# description:
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
|
||||
class AccountAccount(models.Model):
|
||||
_inherit = ['account.account']
|
||||
_parent_name = "parent_id"
|
||||
_parent_store = True
|
||||
_parent_order = 'code'
|
||||
# _rec_name = 'complete_name'
|
||||
|
||||
parent_id = fields.Many2one('account.account', 'Parent Chart', index=True, ondelete='cascade')
|
||||
child_ids = fields.One2many('account.account', 'parent_id', 'Child Chart')
|
||||
parent_path = fields.Char(index=True, unaccent=False)
|
||||
|
||||
@api.model
|
||||
def _search_new_account_code(self, company, digits, prefix, cache=None):
|
||||
# 分隔符,金蝶为 ".",用友为"",注意odoo中一级科目,现金默认定义是4位头,银行是6位头
|
||||
delimiter = '.'
|
||||
for num in range(1, 100):
|
||||
new_code = str(prefix.ljust(digits - 1, '0')) + delimiter + '%02d' % (num)
|
||||
if new_code in (cache or []):
|
||||
continue
|
||||
rec = self.search([('code', '=', new_code), ('company_id', 'child_of', company.root_id.id)], limit=1)
|
||||
if not rec:
|
||||
return new_code
|
||||
raise UserError(_('Cannot generate an unused account code.'))
|
||||
|
||||
def refresh_account_parent(self, company=None):
|
||||
if not company:
|
||||
company = self.env.user.company_id
|
||||
self = self.filtered(lambda r: len(r.code) > 2).sorted(key=lambda r: r.code)
|
||||
done = 0
|
||||
# 分隔符 delimiter,用友为"",金蝶为 ".",注意odoo中一级科目,现金默认定义是4位头,银行是6位头
|
||||
# 我们使用 用友的多级科目方式,自动生成下级,此处直接覆盖原生
|
||||
delimiter = company.coa_delimiter or ''
|
||||
for rec in self:
|
||||
if len(rec.code) > 2:
|
||||
p_code = rec.code[:len(rec.code) - 2]
|
||||
if delimiter and delimiter != '':
|
||||
p_code = rec.code[:len(rec.code) - 2 - len(delimiter)]
|
||||
p_acc = self.search([('company_id', '=', company.id), ('code', '=', p_code)])
|
||||
if p_acc and rec.parent_id != p_acc:
|
||||
rec.write({'parent_id': p_acc.id})
|
||||
done += 1
|
||||
|
||||
return {
|
||||
'effect': {
|
||||
'fadeout': 'fast',
|
||||
'message': _('Update parent account chart done.<br/>【%s】 records updated.' % done),
|
||||
'img_url': '/web/image/%s/%s/image_1024' % (self.env.user._name,
|
||||
self.env.user.id) if self.env.user.image_1024 else '/web/static/src/img/smile.svg',
|
||||
'type': 'rainbow_man',
|
||||
}
|
||||
}
|
||||
18
app_account_ztree/models/res_company.py
Normal file
18
app_account_ztree/models/res_company.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from datetime import timedelta, datetime, date
|
||||
import calendar
|
||||
|
||||
from odoo import fields, models, api, _
|
||||
from odoo.exceptions import ValidationError, UserError, RedirectWarning
|
||||
from odoo.tools.mail import is_html_empty
|
||||
from odoo.tools.misc import format_date
|
||||
from odoo.tools.float_utils import float_round, float_is_zero
|
||||
from odoo.addons.account.models.account_move import MAX_HASH_VERSION
|
||||
|
||||
|
||||
class ResCompany(models.Model):
|
||||
_inherit = ['res.company']
|
||||
|
||||
coa_delimiter = fields.Char(string='COA Delimiter', readonly=False, default='.',
|
||||
help='Delimiter after parent account in Chart of Accounts')
|
||||
BIN
app_account_ztree/static/description/banner.png
Normal file
BIN
app_account_ztree/static/description/banner.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
@@ -36,7 +36,7 @@
|
||||
<div class="alert alert-info" style="padding:8px;font-weight: 300; font-size: 20px;">
|
||||
<i class="fa fa-hand-o-right"></i>
|
||||
<b>
|
||||
<a href="http://www.odoo.com/apps/modules/17.0/app_web_superbar/" target="_blank" class="text-danger">
|
||||
<a href="./app_web_superbar/" target="_blank" class="text-danger">
|
||||
Extend features. superbar advance search navigator
|
||||
</a>
|
||||
</b>
|
||||
@@ -52,19 +52,19 @@
|
||||
<ul class="list-unstyled">
|
||||
<li>
|
||||
<i class="fa fa-link text-primary"></i>
|
||||
<a href="http://www.odoo.com/apps/modules/17.0/app_web_widget_ztree/" target="_blank" class="text-danger">zTree widget (must need to use in following demo).</a>
|
||||
<a href="./app_web_widget_ztree/" target="_blank" class="text-danger">zTree widget (must need to use in following demo).</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-link text-primary"></i>
|
||||
<a href="http://www.odoo.com/apps/modules/17.0/app_product_ztree/" target="_blank">Product and category.</a>
|
||||
<a href="./app_product_ztree/" target="_blank">Product and category.</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-link text-primary"></i>
|
||||
<a href="http://www.odoo.com/apps/modules/17.0/app_stock_ztree/" target="_blank">Stock and Location.</a>
|
||||
<a href="./app_stock_ztree/" target="_blank">Stock and Location.</a>
|
||||
</li>
|
||||
<li>
|
||||
<i class="fa fa-link text-primary"></i>
|
||||
<a href="http://www.odoo.com/apps/modules/17.0/app_hr_ztree/" target="_blank">hr department and employee.</a>
|
||||
<a href="./app_hr_ztree/" target="_blank">hr department and employee.</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -120,7 +120,7 @@
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h2> </h2>
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">(!Need extra module and pay, release soon)Easy to navigator.</h2>
|
||||
<h2 class="bg-warning text-center pt8 pb8 mt16 mb16">(!Need extra module and pay)Easy to navigator.</h2>
|
||||
<h4 class="oe_slogan">Product, employee in kanban view</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo11.jpg">
|
||||
@@ -130,7 +130,7 @@
|
||||
|
||||
<section class="oe_container container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<h4 class="oe_slogan">(!Need extra module and pay, release soon)List view</h4>
|
||||
<h4 class="oe_slogan">(!Need extra module and pay)List view</h4>
|
||||
<div class="oe_demo oe_screenshot img img-fluid">
|
||||
<img src="demo12.jpg">
|
||||
</div>
|
||||
|
||||
@@ -1,14 +1,28 @@
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- hr -->
|
||||
<!-- list -->
|
||||
<record id="app_view_account_list" model="ir.ui.view">
|
||||
<field name="name">app.account.account.list.view</field>
|
||||
<field name="model">account.account</field>
|
||||
<field name="inherit_id" ref="account.view_account_list"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//tree" position="attributes">
|
||||
<attribute name="default_order">code</attribute>
|
||||
</xpath>
|
||||
<xpath expr="field[@name='account_type']" position="after">
|
||||
<field name="parent_id" optional="show"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="app_view_account_form" model="ir.ui.view">
|
||||
<field name="name">app.account.account.form</field>
|
||||
<field name="model">account.account</field>
|
||||
<field name="inherit_id" ref="account.view_account_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='parent_id']" position="attributes">
|
||||
<attribute name="widget">ztree_select</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='account_type']" position="after">
|
||||
<field name="parent_id" widget="ztree_select" options="{'ztree_name_field': 'display_name'}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
15
app_account_ztree/views/res_company_views.xml
Normal file
15
app_account_ztree/views/res_company_views.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="app_view_company_form" model="ir.ui.view">
|
||||
<field name="name">app.res.company.form</field>
|
||||
<field name="model">res.company</field>
|
||||
<field name="inherit_id" ref="base.view_company_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='currency_id']" position="after">
|
||||
<field name="coa_delimiter"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user