diff --git a/app_base_chinese/__init__.py b/app_base_chinese/__init__.py index 0190a7f5..63a26a5a 100644 --- a/app_base_chinese/__init__.py +++ b/app_base_chinese/__init__.py @@ -5,4 +5,4 @@ from .hooks import post_init_hook from . import controllers from . import models from . import ir -from . import res \ No newline at end of file +from . import res diff --git a/app_odoo_customize/__manifest__.py b/app_odoo_customize/__manifest__.py index f7157c69..64bd54d2 100644 --- a/app_odoo_customize/__manifest__.py +++ b/app_odoo_customize/__manifest__.py @@ -23,7 +23,7 @@ { 'name': 'odoo18 Tweak,Ai Employee,Boost,Customize All in One. Customize,UI,Boost,Security,Data,Development Enhance', - 'version': '24.10.31', + 'version': '24.11.04', 'author': 'odooai.cn', 'category': 'Extra Tools', 'website': 'https://www.odooai.cn', diff --git a/app_odoo_customize/static/src/js/user_menu.js b/app_odoo_customize/static/src/js/user_menu.js index 99bf10ee..4c1aa169 100644 --- a/app_odoo_customize/static/src/js/user_menu.js +++ b/app_odoo_customize/static/src/js/user_menu.js @@ -95,7 +95,7 @@ patch(UserMenu.prototype, { browser.clearTimeout(self.toggleTimer); if (self.user_lang !== lang_code) { const res = await self.orm.call("res.users", "write", [ - session.user_id[0], {'lang': lang_code} + user.userId, {'lang': lang_code} ]); location.reload(); // 调用 action , 要先定义 self.action = useService("action") diff --git a/l10n_cn_standard_latest/__init__.py b/l10n_cn_standard_latest/__init__.py new file mode 100644 index 00000000..2ab65b43 --- /dev/null +++ b/l10n_cn_standard_latest/__init__.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- + +# Copyright (C) 2008-2008 凯源吕鑫 lvxin@gmail.com +# 维智众源 oldrev@gmail.com +# Copyright (C) 2012-2012 南京盈通 ccdos@intoerp.com +# Copyright (C) 2008-now 开阖软件 jeff@osbzr.com < PM and LTS > +# Copyright (C) 2017-now jeffery9@gmail.com +# Copyright (C) 2018-11 欧度智能 https://www.odooai.cn + +from .hooks import pre_init_hook +from .hooks import post_init_hook +from . import models + + diff --git a/l10n_cn_standard_latest/__manifest__.py b/l10n_cn_standard_latest/__manifest__.py new file mode 100644 index 00000000..aee94474 --- /dev/null +++ b/l10n_cn_standard_latest/__manifest__.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- + +# Copyright (C) 2008-2008 凯源吕鑫 lvxin@gmail.com +# 维智众源 oldrev@gmail.com +# Copyright (C) 2012-2012 南京盈通 ccdos@intoerp.com +# Copyright (C) 2008-now 开阖软件 jeff@osbzr.com < PM and LTS > +# Copyright (C) 2017-now jeffery9@gmail.com +# Copyright (C) 2018-now 欧度智能 https://www.odooai.cn + +{ + 'name': '2025最新中国会计科目表.企业标准会计.Latest Chinese Accounting for odoo18', + 'version': '24.11.04', + 'author': 'odooai.cn', + 'category': 'Accounting/Localizations/Account Charts', + 'website': 'https://www.odooai.cn', + 'live_test_url': 'https://demo.odooapp.cn', + 'license': 'LGPL-3', + 'sequence': 12, + 'summary': """ + Multi level account chart. Chinese enhance. Focus on account chart. + Add account chart group data. Account group, Chinese tax. + Set chinese account report. + """, + 'description': """ + 最新中国化财务,主要针对标准会计科目表作了优化。 + 1. 2025最新会计科目表,处理营改增后会计科目调整。更新至最新税率。odoo 18专用。 + 2. 将菜单中设置为"财务"。 + 3. 补充分类及标签信息。 + 4. 更新税信息。 + 5. 增加树状结构,支持二级科目,可设置上级科目,配合 "app_web_superbar" 使用可轻易实现树状导航。 + 6. 使用金蝶的会计科目命名法对多级科目进行初始化。可自行调整为用友科目命名法 + 7. 增加中文数字和阿拉伯数字的转换(需安装cn2an库,pip3 install cn2an) + 8. 注意,必须在没有业务数据,没有会计科目的初始环境。可以使用 "app_odoo_customize" 模块清除财务数据,重置会计科目。 + + 如果是多语种环境需要自行更改翻译,主要体现在1%,3%,6%,13%增值税处理。 + 中国财务,中国会计,中国城市 + 欧度智能,odooai.cn + The Latest Chinese Account + Including the following data in the Accounting Standards for Business Enterprises + 包含企业会计准则以下数据 + + * Chart of Accounts + * 科目表模板 + * Account templates + * 科目模板 + * Tax templates + * 税金模板 + """, + 'depends': [ + 'account', + 'app_odoo_customize', + ], + 'images': ['static/description/banner.png'], + 'data': [ + 'views/account_account_views.xml', + 'views/account_views.xml', + 'data/account_account_tag_data.xml', + 'report/account_report.xml', + 'report/report_voucher.xml', + ], + 'post_init_hook': 'post_init_hook', + 'installable': True, + 'application': True, + 'auto_install': False, + # 'external_dependencies': { + # 'python': ['cn2an'] + # }, +} diff --git a/l10n_cn_standard_latest/data/account_account_tag_data.xml b/l10n_cn_standard_latest/data/account_account_tag_data.xml new file mode 100644 index 00000000..c9e863ff --- /dev/null +++ b/l10n_cn_standard_latest/data/account_account_tag_data.xml @@ -0,0 +1,72 @@ + + + + + + + 不计销项税 + taxes + + + + 不计进项税 + taxes + + + + 8%离境退税 + taxes + + + + 9%出口退税 + taxes + + + + 11%离境退税 + taxes + + + + 银行专用 + + + + 证券专用 + + + + 金融共用 + + + + 保险专用 + + + + 银行和保险共用 + + + + 农业专用 + + + + 租赁专用 + + + + 石油天然气开采专用 + + + + 银行和证券共用 + + + + 建造承包商专用 + + + + diff --git a/l10n_cn_standard_latest/data/template/account.account-cn_standard.csv b/l10n_cn_standard_latest/data/template/account.account-cn_standard.csv new file mode 100644 index 00000000..99c343c6 --- /dev/null +++ b/l10n_cn_standard_latest/data/template/account.account-cn_standard.csv @@ -0,0 +1,195 @@ +"id","code","name","parent_id","reconcile","account_type","tag_ids" +"account_1001","1001","库存现金","","True","asset_cash","" +"account_1002","1002","银行存款","","True","asset_cash","l10n_cn_standard_latest.tag21" +"account_1002_01","1002.01","银行存款-人民币","account_1002","True","asset_cash","" +"account_1002_02","1002.02","银行存款-利息","account_1002","True","asset_cash","" +"account_1002_07","1002.07","银行暂记科目","account_1002","True","asset_current","" +"account_1002_08","1002.08","银行存款-未完成收款","account_1002","True","asset_current","" +"account_1002_09","1002.09","银行存款-未完成付款","account_1002","True","asset_current","" +"account_1003","1003","存放中央银行款项","","True","asset_current","l10n_cn_standard_latest.tag21" +"account_1011","1011","存放同业","","False","asset_current","l10n_cn_standard_latest.tag21" +"account_1012","1012","其他货币资金","","False","asset_current","" +"account_1021","1021","结算备付金","","False","asset_current","l10n_cn_standard_latest.tag22" +"account_1031","1031","存出保证金","","False","asset_current","l10n_cn_standard_latest.tag23" +"account_1101","1101","交易性金融资产","","False","asset_current","" +"account_1111","1111","买入返售金融资产","","False","asset_current","l10n_cn_standard_latest.tag23" +"account_1121","1121","应收票据","","True","asset_receivable","" +"account_1122","1122","应收账款","","True","asset_receivable","" +"account_1122_01","1122.01","应收账款-应收","account_1122","True","asset_receivable","" +"account_1122_02","1122.02","应收账款-其它","account_1122","True","asset_receivable","" +"account_1122_03","1122.03","应收账款-暂估","account_1122","True","asset_receivable","" +"account_1123","1123","预付账款","","True","asset_current","" +"account_1124","1124","应收账款(PoS)","","True","asset_receivable","" +"account_1131","1131","应收股利","","True","asset_receivable","" +"account_1132","1132","应收利息","","True","asset_receivable","" +"account_1201","1201","应收代位追偿款","","False","asset_current","l10n_cn_standard_latest.tag24" +"account_1211","1211","应收分保账款","","False","asset_current","l10n_cn_standard_latest.tag24" +"account_1212","1212","应收分保合同准备金","","False","asset_current","l10n_cn_standard_latest.tag24" +"account_1221","1221","其他应收款","","False","asset_current","" +"account_1231","1231","坏账准备","","False","asset_current","" +"account_1301","1301","贴现资产","","False","asset_current","l10n_cn_standard_latest.tag21" +"account_1302","1302","拆出资金","","False","asset_current","" +"account_1303","1303","贷款","","False","asset_current","l10n_cn_standard_latest.tag25" +"account_1304","1304","贷款损失准备","","False","asset_current","l10n_cn_standard_latest.tag25" +"account_1311","1311","代理兑付证券","","False","asset_current","l10n_cn_standard_latest.tag29" +"account_1321","1321","代理业务资产","","False","asset_current","" +"account_1401","1401","材料采购","","False","asset_current","" +"account_1402","1402","在途物资","","False","asset_current","" +"account_1403","1403","原材料","","False","asset_current","" +"account_1404","1404","材料成本差异","","False","asset_current","" +"account_1405","1405","库存商品","","False","asset_current","" +"account_1405_01","1405.01","其中:数据资源","account_1405","False","asset_current","" +"account_1406","1406","发出商品","","False","asset_current","" +"account_1407","1407","商品进销差价","","False","asset_current","" +"account_1408","1408","委托加工物资","","False","asset_current","" +"account_1411","1411","周转材料","","False","asset_non_current","" +"account_1421","1421","消耗性生物资产","","False","asset_non_current","l10n_cn_standard_latest.tag26" +"account_1431","1431","贵金属","","False","asset_non_current","l10n_cn_standard_latest.tag21" +"account_1441","1441","抵债资产","","False","asset_non_current","l10n_cn_standard_latest.tag23" +"account_1451","1451","损余物资","","False","asset_non_current","l10n_cn_standard_latest.tag24" +"account_1461","1461","融资租赁资产","","False","asset_non_current","l10n_cn_standard_latest.tag27" +"account_1471","1471","存货跌价准备","","False","asset_non_current","" +"account_1501","1501","债权投资","","False","asset_non_current","" +"account_1502","1502","债权投资减值准备","","False","asset_non_current","" +"account_1503","1503","其它债权投资","","False","asset_non_current","" +"account_1504","1504","其它权益工具投资","","False","asset_non_current","" +"account_1511","1511","长期股权投资","","False","asset_non_current","" +"account_1512","1512","长期股权投资减值准备","","False","asset_non_current","" +"account_1521","1521","投资性房地产","","False","asset_non_current","" +"account_1531","1531","长期应收款","","False","asset_non_current","" +"account_1532","1532","未实现融资收益","","False","asset_non_current","" +"account_1541","1541","存出资本保证金","","False","asset_non_current","l10n_cn_standard_latest.tag24" +"account_1601","1601","固定资产","","False","asset_fixed","" +"account_1602","1602","累计折旧","","False","expense_direct_cost","" +"account_1603","1603","固定资产减值准备","","False","asset_fixed","" +"account_1604","1604","在建工程","","False","asset_fixed","" +"account_1605","1605","工程物资","","False","asset_fixed","" +"account_1606","1606","固定资产清理","","False","asset_fixed","" +"account_1611","1611","未担保余值","","False","asset_current","l10n_cn_standard_latest.tag27" +"account_1621","1621","生产性生物资产","","False","asset_current","l10n_cn_standard_latest.tag26" +"account_1622","1622","生产性生物资产累计折旧","","False","asset_current","l10n_cn_standard_latest.tag26" +"account_1623","1623","公益性生物资产","","False","asset_current","l10n_cn_standard_latest.tag26" +"account_1631","1631","油气资产","","False","asset_current","l10n_cn_standard_latest.tag28" +"account_1632","1632","累计折耗","","False","asset_current","l10n_cn_standard_latest.tag28" +"account_1701","1701","无形资产","","False","asset_current","" +"account_1701_01","1701.01","其中:数据资源","account_1701","False","asset_current","" +"account_1702","1702","累计摊销","","False","asset_current","" +"account_1703","1703","无形资产减值准备","","False","asset_current","" +"account_1711","1711","商誉","","False","asset_current","" +"account_1801","1801","长期待摊费用","","False","asset_current","" +"account_1811","1811","递延所得税资产","","False","asset_current","" +"account_1821","1821","独立账户资产","","False","asset_current","l10n_cn_standard_latest.tag24" +"account_1901","1901","待处理财产损溢","","False","asset_current","" +"account_2001","2001","短期借款","","False","liability_current","" +"account_2002","2002","存入保证金","","False","liability_current","l10n_cn_standard_latest.tag23" +"account_2003","2003","拆入资金","","False","liability_current","l10n_cn_standard_latest.tag23" +"account_2004","2004","向中央银行借款","","False","liability_current","l10n_cn_standard_latest.tag21" +"account_2011","2011","吸收存款","","False","liability_current","l10n_cn_standard_latest.tag21" +"account_2012","2012","同业存放","","False","liability_current","l10n_cn_standard_latest.tag21" +"account_2021","2021","贴现负债","","False","liability_current","l10n_cn_standard_latest.tag21" +"account_2101","2101","交易性金融负债","","False","liability_current","" +"account_2111","2111","卖出回购金融资产款","","False","liability_current","l10n_cn_standard_latest.tag23" +"account_2201","2201","应付票据","","True","liability_payable","" +"account_2202","2202","应付账款","","True","liability_payable","" +"account_2202_01","2202.01","应付账款-应付","account_2202","True","liability_payable","" +"account_2202_02","2202.02","应付账款-其他","account_2202","True","liability_payable","" +"account_2202_03","2202.03","应付账款-暂估","account_2202","True","liability_payable","" +"account_2203","2203","预收账款","","True","liability_current","" +"account_2211","2211","应付职工薪酬","","False","liability_current","" +"account_2221","2221","应交税费","","False","liability_current","" +"account_2221_1","2221.01","应交增值税","account_2221","False","liability_current","" +"account_2221_1_1","2221.01.01","进项税额","account_2221_1","False","liability_current","" +"account_2221_1_2","2221.01.02","已交税金","account_2221_1","False","liability_current","" +"account_2221_1_3","2221.01.03","转出未交增值税","account_2221_1","False","liability_current","" +"account_2221_1_4","2221.01.04","减免税款","account_2221_1","False","liability_current","" +"account_2221_1_5","2221.01.05","销项税额","account_2221_1","False","liability_current","" +"account_2221_1_6","2221.01.06","出口退税","account_2221_1","False","liability_current","" +"account_2221_1_7","2221.01.07","进项税额转出","account_2221_1","False","liability_current","" +"account_2221_1_8","2221.01.08","出口抵减内销产品应纳税额","account_2221_1","False","liability_current","" +"account_2221_1_9","2221.01.09","转出多交增值税","account_2221_1","False","liability_current","" +"account_2221_2","2221.02","未交增值税","account_2221","False","liability_current","" +"account_2221_3","2221.03","应交营业税","account_2221","False","liability_current","" +"account_2221_4","2221.04","应交消费税","account_2221","False","liability_current","" +"account_2221_5","2221.05","应交资源税","account_2221","False","liability_current","" +"account_2221_6","2221.06","应交所得税","account_2221","False","liability_current","" +"account_2221_7","2221.07","应交土地增值税","account_2221","False","liability_current","" +"account_2221_8","2221.08","应交城市维护建设税","account_2221","False","liability_current","" +"account_2221_9","2221.09","应交房产税","account_2221","False","liability_current","" +"account_2221_10","2221.1","应交土地使用税","account_2221","False","liability_current","" +"account_2221_11","2221.11","应交车船使用税","account_2221","False","liability_current","" +"account_2221_12","2221.12","应交个人所得税","account_2221","False","liability_current","" +"account_2231","2231","应付利息","","False","liability_current","" +"account_2232","2232","应付股利","","False","liability_current","" +"account_2241","2241","其他应付款","","False","liability_current","" +"account_2251","2251","应付保单红利","","False","liability_current","l10n_cn_standard_latest.tag24" +"account_2261","2261","应付分保账款","","False","liability_current","l10n_cn_standard_latest.tag24" +"account_2311","2311","代理买卖证券款","","False","liability_current","l10n_cn_standard_latest.tag22" +"account_2312","2312","代理承销证券款","","False","liability_current","l10n_cn_standard_latest.tag29" +"account_2313","2313","代理兑付证券款","","False","liability_current","l10n_cn_standard_latest.tag29" +"account_2314","2314","代理业务负债","","False","liability_current","" +"account_2401","2401","递延收益","","False","liability_current","" +"account_2501","2501","长期借款","","False","liability_current","" +"account_2502","2502","应付债券","","False","liability_current","" +"account_2601","2601","未到期责任准备金","","False","liability_current","l10n_cn_standard_latest.tag24" +"account_2602","2602","保险责任准备金","","False","liability_current","l10n_cn_standard_latest.tag24" +"account_2611","2611","保户储金","","False","liability_current","l10n_cn_standard_latest.tag24" +"account_2621","2621","独立账户负债","","False","liability_current","l10n_cn_standard_latest.tag24" +"account_2701","2701","长期应付款","","False","liability_current","" +"account_2702","2702","未确认融资费用","","False","liability_current","" +"account_2711","2711","专项应付款","","False","liability_current","" +"account_2801","2801","预计负债","","False","liability_current","" +"account_2901","2901","递延所得税负债","","False","liability_current","" +"account_3001","3001","清算资金往来","","False","off_balance","l10n_cn_standard_latest.tag21" +"account_3002","3002","货币兑换","","False","off_balance","l10n_cn_standard_latest.tag23" +"account_3101","3101","衍生工具","","False","off_balance","" +"account_3201","3201","套期工具","","False","off_balance","" +"account_3202","3202","被套期项目","","False","off_balance","" +"account_4001","4001","实收资本","","False","equity","" +"account_4002","4002","资本公积","","False","equity","" +"account_4101","4101","盈余公积","","False","equity","" +"account_4102","4102","一般风险准备","","False","equity","l10n_cn_standard_latest.tag23" +"account_4103","4103","本年利润","","False","equity","" +"account_4104","4104","利润分配","","False","equity","" +"account_4104_10","4104.1","未分配利润","account_4104","False","equity_unaffected","" +"account_4201","4201","库存股","","False","equity","" +"account_5001","5001","生产成本","","False","asset_current","" +"account_5101","5101","制造费用","","False","asset_current","" +"account_5201","5201","劳务成本","","False","asset_current","" +"account_5301","5301","研发支出","","False","asset_current","" +"account_5301_01","5301.01","其中:数据资源","account_5301","False","asset_current","" +"account_5401","5401","工程施工","","False","asset_current","l10n_cn_standard_latest.tag30" +"account_5402","5402","工程结算","","False","asset_current","l10n_cn_standard_latest.tag30" +"account_5403","5403","机械作业","","False","asset_current","l10n_cn_standard_latest.tag30" +"account_6001","6001","主营业务收入","","False","income","" +"account_6011","6011","利息收入","","False","income","l10n_cn_standard_latest.tag23" +"account_6021","6021","手续费及佣金收入","","False","income","l10n_cn_standard_latest.tag23" +"account_6031","6031","保费收入","","False","income","l10n_cn_standard_latest.tag24" +"account_6041","6041","租赁收入","","False","income","l10n_cn_standard_latest.tag27" +"account_6051","6051","其他业务收入","","False","income","" +"account_6061","6061","汇兑损益","","False","income","l10n_cn_standard_latest.tag23" +"account_6101","6101","公允价值变动损益","","False","income","" +"account_6111","6111","投资收益","","False","income","" +"account_6201","6201","摊回保险责任准备金","","False","expense","l10n_cn_standard_latest.tag24" +"account_6202","6202","摊回赔付支出","","False","expense","l10n_cn_standard_latest.tag24" +"account_6203","6203","摊回分保费用","","False","expense","l10n_cn_standard_latest.tag24" +"account_6301","6301","营业外收入","","False","expense","" +"account_6401","6401","主营业务成本","","False","expense","" +"account_6402","6402","其他业务成本","","False","expense","" +"account_6403","6403","税金及附加","","False","expense","" +"account_6411","6411","利息支出","","False","expense","l10n_cn_standard_latest.tag23" +"account_6421","6421","手续费及佣金支出","","False","expense","l10n_cn_standard_latest.tag23" +"account_6501","6501","提取未到期责任准备金","","False","expense","l10n_cn_standard_latest.tag24" +"account_6502","6502","提取保险责任准备金","","False","expense","l10n_cn_standard_latest.tag24" +"account_6511","6511","赔付支出","","False","expense","l10n_cn_standard_latest.tag24" +"account_6521","6521","保户红利支出","","False","expense","l10n_cn_standard_latest.tag24" +"account_6531","6531","退保金","","False","expense","l10n_cn_standard_latest.tag24" +"account_6541","6541","分出保费","","False","expense","l10n_cn_standard_latest.tag24" +"account_6542","6542","分保费用","","False","expense","l10n_cn_standard_latest.tag24" +"account_6601","6601","销售费用","","False","expense","" +"account_6602","6602","管理费用","","False","expense","" +"account_6603","6603","财务费用","","False","expense","" +"account_6604","6604","勘探费用","","False","expense","" +"account_6701","6701","资产减值损失","","False","expense","" +"account_6711","6711","营业外支出","","False","expense","" +"account_6801","6801","所得税费用","","False","expense","" +"account_6901","6901","以前年度损益调整","","False","equity","" \ No newline at end of file diff --git a/l10n_cn_standard_latest/data/template/account.group-cn_standard.csv b/l10n_cn_standard_latest/data/template/account.group-cn_standard.csv new file mode 100644 index 00000000..9d01ce8c --- /dev/null +++ b/l10n_cn_standard_latest/data/template/account.group-cn_standard.csv @@ -0,0 +1,7 @@ +"id","code_prefix_start","code_prefix_end","name","name@zh_CN" +"account_group_1","1","1","资产类","资产类" +"account_group_2","2","2","负债类","负债类" +"account_group_3","3","3","共同类","共同类" +"account_group_4","4","4","所有者权益类","所有者权益类" +"account_group_5","5","5","成本类","成本类" +"account_group_6","6","6","损益类","损益类" \ No newline at end of file diff --git a/l10n_cn_standard_latest/data/template/account.tax-cn_standard.csv b/l10n_cn_standard_latest/data/template/account.tax-cn_standard.csv new file mode 100644 index 00000000..841a9bc6 --- /dev/null +++ b/l10n_cn_standard_latest/data/template/account.tax-cn_standard.csv @@ -0,0 +1,105 @@ +"id","name","description","invoice_label","amount","amount_type","type_tax_use","price_include","tax_group_id","repartition_line_ids/repartition_type","repartition_line_ids/document_type","repartition_line_ids/account_id","description@zh_CN" +"l10n_cn_standard_sale_0","0%销项税","增值税销项税0%","0%","0","percent","sale","False","l10n_cn_tax_group_vat_0","base","invoice","","增值税销项税0%" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_purchase_0","0%进项税","增值税进项税0%","0%","0","percent","purchase","False","l10n_cn_tax_group_vat_0","base","invoice","","增值税进项税0%" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" +"l10n_cn_standard_sale_included_13","13%销项税(含)","增值税销项税13%(价内税)","13%","13.0","percent","sale","True","l10n_cn_tax_group_vat_13","base","invoice","","增值税销项税13%(价内税)" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_sale_included_10","10%销项税(含)","增值税销项税10%(价内税)","10%","10.0","percent","sale","True","l10n_cn_tax_group_vat_10","base","invoice","","增值税销项税10%(价内税)" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_sale_included_9","9%销项税(含)","增值税销项税9%(价内税)","9%","9.0","percent","sale","True","l10n_cn_tax_group_vat_9","base","invoice","","增值税销项税9%(价内税)" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_sale_included_6","6%销项税(含)","增值税销项税6%(价内税)","6%","6.0","percent","sale","True","l10n_cn_tax_group_vat_6","base","invoice","","增值税销项税6%(价内税)" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_sale_included_3","3%销项税(含)","增值税销项税3%(价内税)","3%","3.0","percent","sale","True","l10n_cn_tax_group_vat_3","base","invoice","","增值税销项税3%(价内税)" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_sale_included_1","1%销项税(含)","增值税销项税1%(价内税)","1%","1.0","percent","sale","True","l10n_cn_tax_group_vat_1","base","invoice","","增值税销项税1%(价内税)" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_sale_excluded_13","13%销项税","增值税销项税13%(价外税)","13%","13.0","percent","sale","False","l10n_cn_tax_group_vat_13","base","invoice","","增值税销项税13%(价外税)" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_sale_excluded_10","10%销项税","增值税销项税10%(价外税)","10%","10.0","percent","sale","False","l10n_cn_tax_group_vat_10","base","invoice","","增值税销项税10%(价外税)" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_sale_excluded_9","9%销项税","增值税销项税9%(价外税)","9%","9.0","percent","sale","False","l10n_cn_tax_group_vat_9","base","invoice","","增值税销项税9%(价外税)" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_sale_excluded_6","6%销项税","增值税销项税6%(价外税)","6%","6.0","percent","sale","False","l10n_cn_tax_group_vat_6","base","invoice","","增值税销项税6%(价外税)" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_sale_excluded_3","3%销项税","增值税销项税3%(价外税)","3%","3.0","percent","sale","False","l10n_cn_tax_group_vat_3","base","invoice","","增值税销项税3%(价外税)" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_sale_excluded_1","1%销项税","增值税销项税1%(价外税)","1%","3.0","percent","sale","False","l10n_cn_tax_group_vat_3","base","invoice","","增值税销项税1%(价外税)" +"","","","","","","","","","tax","invoice","account_2221_1_5","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_5","" +"l10n_cn_standard_purchase_excluded_13","13%进项税","增值税进项税13%(价外税)","13%","13.0","percent","purchase","False","l10n_cn_tax_group_vat_13","base","invoice","","增值税进项税13%(价外税)" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" +"l10n_cn_standard_purchase_excluded_10","10%进项税","增值税进项税10%(价外税)","10%","10.0","percent","purchase","False","l10n_cn_tax_group_vat_10","base","invoice","","增值税进项税10%(价外税)" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" +"l10n_cn_standard_purchase_excluded_9","9%进项税","增值税进项税9%(价外税)","9%","9.0","percent","purchase","False","l10n_cn_tax_group_vat_9","base","invoice","","增值税进项税9%(价外税)" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" +"l10n_cn_standard_purchase_excluded_6","6%进项税","增值税进项税6%(价外税)","6%","6.0","percent","purchase","False","l10n_cn_tax_group_vat_6","base","invoice","","增值税进项税6%(价外税)" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" +"l10n_cn_standard_purchase_excluded_3","3%进项税","增值税进项税3%(价外税)","3%","3.0","percent","purchase","False","l10n_cn_tax_group_vat_3","base","invoice","","增值税进项税3%(价外税)" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" +"l10n_cn_standard_purchase_excluded_1","1%进项税","增值税进项税1%(价外税)","1%","1.0","percent","purchase","False","l10n_cn_tax_group_vat_1","base","invoice","","增值税进项税1%(价外税)" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" +"l10n_cn_standard_purchase_included_13","13%进项税(含)","增值税进项税13%(价内税)","13%","13.0","percent","purchase","False","l10n_cn_tax_group_vat_13","base","invoice","","增值税进项税13%(价内税)" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" +"l10n_cn_standard_purchase_included_10","10%进项税(含)","增值税进项税10%(价内税)","10%","10.0","percent","purchase","False","l10n_cn_tax_group_vat_10","base","invoice","","增值税进项税10%(价内税)" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" +"l10n_cn_standard_purchase_included_9","9%进项税(含)","增值税进项税9%(价内税)","9%","9.0","percent","purchase","False","l10n_cn_tax_group_vat_9","base","invoice","","增值税进项税9%(价内税)" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" +"l10n_cn_standard_purchase_included_6","6%进项税(含)","增值税进项税6%(价内税)","6%","6.0","percent","purchase","False","l10n_cn_tax_group_vat_6","base","invoice","","增值税进项税6%(价内税)" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" +"l10n_cn_standard_purchase_included_3","3%进项税(含)","增值税进项税3%(价内税)","3%","3.0","percent","purchase","False","l10n_cn_tax_group_vat_3","base","invoice","","增值税进项税3%(价内税)" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" +"l10n_cn_standard_purchase_included_1","1%进项税(含)","增值税进项税1%(价内税)","1%","1.0","percent","purchase","False","l10n_cn_tax_group_vat_1","base","invoice","","增值税进项税1%(价内税)" +"","","","","","","","","","tax","invoice","account_2221_1_1","" +"","","","","","","","","","base","refund","","" +"","","","","","","","","","tax","refund","account_2221_1_1","" \ No newline at end of file diff --git a/l10n_cn_standard_latest/data/template/account.tax.group-cn_standard.csv b/l10n_cn_standard_latest/data/template/account.tax.group-cn_standard.csv new file mode 100644 index 00000000..9d4fba52 --- /dev/null +++ b/l10n_cn_standard_latest/data/template/account.tax.group-cn_standard.csv @@ -0,0 +1,8 @@ +"id","name","country_id","name@zh_CN" +"l10n_cn_tax_group_vat_0","VAT 0%","base.cn","增值税0%" +"l10n_cn_tax_group_vat_1","VAT 1%","base.cn","增值税1%" +"l10n_cn_tax_group_vat_3","VAT 3%","base.cn","增值税3%" +"l10n_cn_tax_group_vat_6","VAT 6%","base.cn","增值税6%" +"l10n_cn_tax_group_vat_9","VAT 9%","base.cn","增值税9%" +"l10n_cn_tax_group_vat_10","VAT 10%","base.cn","增值税10%" +"l10n_cn_tax_group_vat_13","VAT 13%","base.cn","增值税13%" \ No newline at end of file diff --git a/l10n_cn_standard_latest/hooks.py b/l10n_cn_standard_latest/hooks.py new file mode 100644 index 00000000..c61573fe --- /dev/null +++ b/l10n_cn_standard_latest/hooks.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- + +# Created on 2017-11-22 +# 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, SUPERUSER_ID + +def pre_init_hook(env): + """ + 数据初始化,只在安装时执行,更新时不执行 + """ + pass + + +def post_init_hook(env): + """ + 数据初始化,只在安装后执行,更新时不执行 + 注意 account.account 中 code 处理已不同,主要用 json 存在 code_store 中,故要不可使用 sql, + 同时 group_id 已为 compute 字段,无需设置 + + """ + # cr.execute("UPDATE account_account_template set group_id = " + # "(select id from account_group where account_group.code_prefix_start=trim(substring(account_account_template.code from 1 for 1)) limit 1);") + + # for g in [ + # env.ref('l10n_cn_standard_latest.account_group_1'), + # env.ref('l10n_cn_standard_latest.account_group_2'), + # env.ref('l10n_cn_standard_latest.account_group_3'), + # env.ref('l10n_cn_standard_latest.account_group_4'), + # env.ref('l10n_cn_standard_latest.account_group_5'), + # env.ref('l10n_cn_standard_latest.account_group_6'), + # ]: + # res = env['account.account'].search([('code', 'like', g.code_prefix_start + '%')]) + # if res: + # res.write({'group_id': g.id}) + # env.cr.commit() + pass + diff --git a/l10n_cn_standard_latest/i18n/zh_CN.po b/l10n_cn_standard_latest/i18n/zh_CN.po new file mode 100644 index 00000000..42c3aa98 --- /dev/null +++ b/l10n_cn_standard_latest/i18n/zh_CN.po @@ -0,0 +1,274 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_cn_standard_latest +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0+e-20240821\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-11-04 08:40+0000\n" +"PO-Revision-Date: 2024-11-04 08:40+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: l10n_cn_standard_latest +#: model:ir.actions.report,print_report_name:l10n_cn_standard_latest.account_voucher_cn +msgid "'Voucher_%s' % (object.name)" +msgstr "'收据_%s' % (object.name)" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag_cn11_dept +msgid "11%离境退税" +msgstr "" + +#. module: l10n_cn_standard_latest +#. odoo-python +#: code:addons/l10n_cn_standard_latest/models/template_cn_standard.py:0 +#, python-format +msgid "2024中国企业会计科目表-odoo17" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag_cn08_dept +msgid "8%离境退税" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag_cn09_ex +msgid "9%出口退税" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.report_voucher_document +msgid "Account" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.report_voucher_document +msgid "Accounting Voucher" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.report_voucher_document +msgid "Balance" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.report_voucher_document +msgid "Credit" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.report_voucher_document +msgid "Debit" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.report_voucher_document +msgid "Total:" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.report_voucher_document +msgid "Date:" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.report_voucher_document +msgid "Number of attachments:" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.report_voucher_document +msgid "Poster:" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.report_voucher_document +msgid "Reference:" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.report_voucher_document +msgid "Salesperson:" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.report_voucher_document +msgid "Validator:" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:ir.model,name:l10n_cn_standard_latest.model_account_account +msgid "Account" +msgstr "科目" + +#. module: l10n_cn_standard_latest +#: model:ir.model,name:l10n_cn_standard_latest.model_account_chart_template +msgid "Account Chart Template" +msgstr "科目表模版" + +#. module: l10n_cn_standard_latest +#: model:ir.model.fields,field_description:l10n_cn_standard_latest.field_account_tax_group__active +msgid "Active" +msgstr "" + +#. module: l10n_cn_standard_latest +#. odoo-python +#: code:addons/l10n_cn_standard_latest/models/template_cn_standard.py:0 +#, python-format +msgid "Bank" +msgstr "" + +#. module: l10n_cn_standard_latest +#. odoo-python +#: code:addons/l10n_cn_standard_latest/models/account_account.py:0 +#, python-format +msgid "Cannot generate an unused account code." +msgstr "无法生成未使用的科目" + +#. module: l10n_cn_standard_latest +#. odoo-python +#: code:addons/l10n_cn_standard_latest/models/template_cn_standard.py:0 +#, python-format +msgid "Cash on Hand" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:ir.model.fields,field_description:l10n_cn_standard_latest.field_account_account__child_ids +msgid "Child Chart" +msgstr "下级科目" + +#. module: l10n_cn_standard_latest +#: model:ir.model,name:l10n_cn_standard_latest.model_res_currency +msgid "Currency" +msgstr "币种" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.app_view_account_search +msgid "Group" +msgstr "组" + +#. module: l10n_cn_standard_latest +#: model:ir.model,name:l10n_cn_standard_latest.model_account_journal +msgid "Journal" +msgstr "日记账" + +#. module: l10n_cn_standard_latest +#: model:ir.model,name:l10n_cn_standard_latest.model_account_move +msgid "Journal Entry" +msgstr "日记账分录" + +#. module: l10n_cn_standard_latest +#: model_terms:ir.ui.view,arch_db:l10n_cn_standard_latest.external_layout_boxed +msgid "Logo" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:ir.model.fields,field_description:l10n_cn_standard_latest.field_account_account__parent_id +msgid "Parent Chart" +msgstr "上级科目" + +#. module: l10n_cn_standard_latest +#: model:ir.model.fields,field_description:l10n_cn_standard_latest.field_account_account__parent_path +msgid "Parent Path" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:ir.model.fields,help:l10n_cn_standard_latest.field_account_tax_group__active +msgid "Set active to false to hide the tax without removing it." +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:ir.model,name:l10n_cn_standard_latest.model_account_tax_group +msgid "Tax Group" +msgstr "税组" + +#. module: l10n_cn_standard_latest +#: model:ir.actions.report,name:l10n_cn_standard_latest.account_voucher_cn +msgid "Voucher" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag_cn0_p +msgid "不计进项税" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag_cn0_s +msgid "不计销项税" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag24 +msgid "保险专用" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag26 +msgid "农业专用" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag_cn13_p +msgid "增值税13%进项税" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag_cn13_s +msgid "增值税13%销项税" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag_cn16_p +msgid "增值税16%进项税" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag_cn16_s +msgid "增值税16%销项税" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag30 +msgid "建造承包商专用" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag28 +msgid "石油天然气开采专用" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag27 +msgid "租赁专用" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag22 +msgid "证券专用" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag23 +msgid "金融共用" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag21 +msgid "银行专用" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag25 +msgid "银行和保险共用" +msgstr "" + +#. module: l10n_cn_standard_latest +#: model:account.account.tag,name:l10n_cn_standard_latest.tag29 +msgid "银行和证券共用" +msgstr "" diff --git a/l10n_cn_standard_latest/models/__init__.py b/l10n_cn_standard_latest/models/__init__.py new file mode 100644 index 00000000..bd733064 --- /dev/null +++ b/l10n_cn_standard_latest/models/__init__.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- + +from . import template_cn_standard +from . import account_account +from . import account_tax_group +from . import account_journal +from . import res_currency +from . import account_move + + + + diff --git a/l10n_cn_standard_latest/models/account_account.py b/l10n_cn_standard_latest/models/account_account.py new file mode 100644 index 00000000..4912f16a --- /dev/null +++ b/l10n_cn_standard_latest/models/account_account.py @@ -0,0 +1,43 @@ +# -*- 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) + + @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.')) diff --git a/l10n_cn_standard_latest/models/account_journal.py b/l10n_cn_standard_latest/models/account_journal.py new file mode 100644 index 00000000..0526f5ee --- /dev/null +++ b/l10n_cn_standard_latest/models/account_journal.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models, _ + + +# 调整初始化算法 +class AccountJournal(models.Model): + _inherit = "account.journal" + + @api.model + def _prepare_liquidity_account(self, name, company, currency_id, type): + digits = 6 + chart = self.company_id.chart_template_id + if chart: + digits = int(chart.code_digits) + # Seek the next available number for the account code + if type == 'bank': + account_code_prefix = company.bank_account_code_prefix or '' + else: + account_code_prefix = company.cash_account_code_prefix or company.bank_account_code_prefix or '' + digits = len(account_code_prefix) + # 获取上级 + p_account = self.env['account.account'].search([('code', '=', account_code_prefix), ('company_id', '=', company.id)], limit=1) + + return { + 'name': name, + 'currency_id': currency_id or False, + 'code': self.env['account.account']._search_new_account_code(company, digits, account_code_prefix), + 'account_type': 'asset_cash', + 'parent_id': p_account and p_account.id or False, + 'group_id': p_account and p_account.group_id and p_account.group_id.id or False, + 'company_id': company.id, + } diff --git a/l10n_cn_standard_latest/models/account_move.py b/l10n_cn_standard_latest/models/account_move.py new file mode 100644 index 00000000..2e3839cd --- /dev/null +++ b/l10n_cn_standard_latest/models/account_move.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError +from odoo.osv import expression + +try: + from cn2an import an2cn +except ImportError: + an2cn = None + +class AccountMove(models.Model): + _inherit = 'account.move' + + @api.model + def check_cn2an(self): + return an2cn + + @api.model + def _convert_to_amount_in_word(self, number): + """Convert number to ``amount in words`` for Chinese financial usage.""" + if not self.check_cn2an(): + return None + return an2cn(number, 'rmb') + + def _count_attachments(self): + domains = [[('res_model', '=', 'account.move'), ('res_id', '=', self.id)]] + statement_ids = self.line_ids.mapped('statement_id') + payment_ids = self.line_ids.mapped('payment_id') + if statement_ids: + domains.append([('res_model', '=', 'account.bank.statement'), ('res_id', 'in', statement_ids.ids)]) + if payment_ids: + domains.append([('res_model', '=', 'account.payment'), ('res_id', 'in', payment_ids.ids)]) + return self.env['ir.attachment'].search_count(expression.OR(domains)) diff --git a/l10n_cn_standard_latest/models/account_tax_group.py b/l10n_cn_standard_latest/models/account_tax_group.py new file mode 100644 index 00000000..d1413359 --- /dev/null +++ b/l10n_cn_standard_latest/models/account_tax_group.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models, _, tools + +class AccountTaxGroup(models.Model): + _inherit = 'account.tax.group' + + active = fields.Boolean(default=True, help="Set active to false to hide the tax without removing it.") + diff --git a/l10n_cn_standard_latest/models/res_currency.py b/l10n_cn_standard_latest/models/res_currency.py new file mode 100644 index 00000000..c20f2009 --- /dev/null +++ b/l10n_cn_standard_latest/models/res_currency.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models, exceptions, _ + + +class ResCurrency(models.Model): + _inherit = 'res.currency' + + def rmb_upper(self, value): + """ + 人民币大写 + 传入浮点类型的值返回 unicode 字符串 + :param 传入阿拉伯数字 + :return 返回值是对应阿拉伯数字的绝对值的中文数字 + """ + if self.name != 'CNY': + return; + rmbmap = [u"零", u"壹", u"贰", u"叁", u"肆", u"伍", u"陆", u"柒", u"捌", u"玖"] + unit = [u"分", u"角", u"元", u"拾", u"佰", u"仟", u"万", u"拾", u"佰", u"仟", u"亿", + u"拾", u"佰", u"仟", u"万", u"拾", u"佰", u"仟", u"兆"] + # 冲红负数处理 + xflag = 0 + if value < 0: + xflag = value + value = abs(value) + # 先把value 数字进行格式化保留两位小数,转成字符串然后去除小数点 + nums = map(int, list(str('%0.2f' % value).replace('.', ''))) + words = [] + zflag = 0 # 标记连续0次数,以删除万字,或适时插入零字 + start = len(nums) - 3 + for i in range(start, -3, -1): # 使i对应实际位数,负数为角分 + # 大部分情况对应数字不等于零 或者是刚开始循环 + if 0 != nums[start - i] or len(words) == 0: + if zflag: + words.append(rmbmap[0]) + zflag = 0 + words.append(rmbmap[nums[start - i]]) # 数字对应的中文字符 + words.append(unit[i + 2]) # 列表此位置的单位 + # 控制‘万/元’ 万和元比较特殊,如2拾万和2拾1万 无论有没有这个1 万字是必须的 + elif 0 == i or (0 == i % 4 and zflag < 3): + # 上面那种情况定义了 2拾1万 的显示 这个是特殊对待的 2拾万(一类)的显示 + words.append(unit[i + 2]) + # 元(控制条件为 0 == i )和万(控制条为(0 == i % 4 and zflag < 3))的情况的处理是一样的 + zflag = 0 + else: + zflag += 1 + if words[-1] != unit[0]: # 结尾非‘分’补整字 最小单位 如果最后一个字符不是最小单位(分)则要加一个整字 + words.append(u"整") + if xflag < 0: # 如果为负数则要在数字前面加上‘负’字 + words.insert(0, u"负") + return ''.join(words) diff --git a/l10n_cn_standard_latest/models/template_cn_standard.py b/l10n_cn_standard_latest/models/template_cn_standard.py new file mode 100644 index 00000000..7bb2e8b3 --- /dev/null +++ b/l10n_cn_standard_latest/models/template_cn_standard.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +from odoo import models, _ +from odoo.addons.account.models.chart_template import template + + +class AccountChartTemplate(models.AbstractModel): + _inherit = 'account.chart.template' + + # 注意,coa 相关模型 + # TEMPLATE_MODELS = ( + # 'account.group', + # 'account.account', + # 'account.tax.group', + # 'account.tax', + # 'account.journal', + # 'account.reconcile.model', + # 'account.fiscal.position', + # ) + + @template('cn_standard') + def _get_cn_standard_template_data(self): + return { + 'name': _('2024中国企业会计科目表-odoo17'), + 'code_digits': 4, + 'property_account_receivable_id': 'account_1122', + 'property_account_payable_id': 'account_2202', + 'property_account_income_categ_id': 'account_6001', + 'property_account_expense_categ_id': 'account_6401', + 'property_tax_receivable_account_id': 'account_2221_1_5', + 'property_tax_payable_account_id': 'account_2221_1_1', + } + + @template('cn_standard', 'res.company') + def _get_cn_standard_res_company(self): + return { + self.env.company.id: { + 'account_fiscal_country_id': 'base.cn', + 'cash_account_code_prefix': '1001', + 'bank_account_code_prefix': '1002', + 'transfer_account_code_prefix': '1003', + 'account_default_pos_receivable_account_id': 'account_1124', + 'account_sale_tax_id': 'l10n_cn_standard_sale_included_13', + 'account_purchase_tax_id': 'l10n_cn_standard_purchase_excluded_13', + 'income_currency_exchange_account_id': 'account_6061', + 'expense_currency_exchange_account_id': 'account_6061', + 'default_pos_receivable_account_id': 'account_1124', + 'account_journal_suspense_account_id': 'account_1002_07', + 'account_journal_payment_debit_account_id': 'account_1002_08', + 'account_journal_payment_credit_account_id': 'account_1002_09', + # 现金差异收入 + 'default_cash_difference_income_account_id': 'account_6603', + # 现金差额费用 + 'default_cash_difference_expense_account_id': 'account_6603', + # 现金折扣收益科目 + 'account_journal_early_pay_discount_gain_account_id': 'account_6603', + # 现金折扣损失科目 + 'account_journal_early_pay_discount_loss_account_id': 'account_6603', + }, + } + + @template('cn_standard', 'account.journal') + def _get_cn_account_journal(self): + return { + 'cash': { + 'name': _('Cash on Hand'), + 'default_account_id': 'account_1001' + }, + 'bank': { + 'name': _('Bank'), + 'default_account_id': 'account_1002_01', + }, + } diff --git a/l10n_cn_standard_latest/report/account_report.xml b/l10n_cn_standard_latest/report/account_report.xml new file mode 100644 index 00000000..140e68f9 --- /dev/null +++ b/l10n_cn_standard_latest/report/account_report.xml @@ -0,0 +1,16 @@ + + + + + + Voucher + account.move + qweb-pdf + l10n_cn_standard_latest.report_voucher + l10n_cn_standard_latest.report_voucher + 'Voucher_%s' % (object.name) + form + + + + diff --git a/l10n_cn_standard_latest/report/report_voucher.xml b/l10n_cn_standard_latest/report/report_voucher.xml new file mode 100644 index 00000000..eaea2047 --- /dev/null +++ b/l10n_cn_standard_latest/report/report_voucher.xml @@ -0,0 +1,116 @@ + + + + + + + + + + diff --git a/l10n_cn_standard_latest/static/description/banner.png b/l10n_cn_standard_latest/static/description/banner.png new file mode 100644 index 00000000..a69a762b Binary files /dev/null and b/l10n_cn_standard_latest/static/description/banner.png differ diff --git a/l10n_cn_standard_latest/static/description/cnreadme.png b/l10n_cn_standard_latest/static/description/cnreadme.png new file mode 100644 index 00000000..ed2b6e7c Binary files /dev/null and b/l10n_cn_standard_latest/static/description/cnreadme.png differ diff --git a/l10n_cn_standard_latest/static/description/icon.png b/l10n_cn_standard_latest/static/description/icon.png new file mode 100644 index 00000000..7f014907 Binary files /dev/null and b/l10n_cn_standard_latest/static/description/icon.png differ diff --git a/l10n_cn_standard_latest/static/description/index.html b/l10n_cn_standard_latest/static/description/index.html new file mode 100644 index 00000000..5023d628 --- /dev/null +++ b/l10n_cn_standard_latest/static/description/index.html @@ -0,0 +1,68 @@ +
+
+
+

App Latest Chinese Account chart 2024.

+

Set all chinese default value. Like Default country, timezone, currency, partner...

+
+

Lastest update: v17.24.11.04

+
+ +
+
+
+ Key features: +
    +
  • + + The Latest Account Chart for Odoo17. +
  • +
+
+
+

Use super, easy to navigate account data.

+
+ +
+

How to use

+
+ +
+
+
+
+
+ +
+
+
+

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

+
+
+
+
+

More Powerful addons, Make your odoo very easy to use, easy customize: + odooai.cn Odoo Addons +

+
+
+ diff --git a/l10n_cn_standard_latest/static/description/superbar1.png b/l10n_cn_standard_latest/static/description/superbar1.png new file mode 100644 index 00000000..27a25df8 Binary files /dev/null and b/l10n_cn_standard_latest/static/description/superbar1.png differ diff --git a/l10n_cn_standard_latest/views/account_account_views.xml b/l10n_cn_standard_latest/views/account_account_views.xml new file mode 100644 index 00000000..053dd4b9 --- /dev/null +++ b/l10n_cn_standard_latest/views/account_account_views.xml @@ -0,0 +1,52 @@ + + + + + + app.account.list + account.account + + + + code + + + + + + + + + + app.account.setup.opening.move.line.tree + account.account + + + + + + + + + + app.account.account.form + account.account + + + + + + + + + app.account.account.search + account.account + + + + + + + + + diff --git a/l10n_cn_standard_latest/views/account_views.xml b/l10n_cn_standard_latest/views/account_views.xml new file mode 100644 index 00000000..3825c261 --- /dev/null +++ b/l10n_cn_standard_latest/views/account_views.xml @@ -0,0 +1,8 @@ + + + + + + +