|  | # Copyright 2016 上海开阖软件有限公司 (http://www.osbzr.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models, _
class FinanceConfigWizard(models.TransientModel):
    _name = 'finance.config.settings'
    _inherit = 'res.config.settings'
    _description = '会计默认设置'
    # 凭证
    # 凭证日期
    defaul_voucher_date = fields.Selection(
        [('today', '当前日期'), ('last', '上一凭证日期')],
        string='新凭证的默认日期', default='today', help='选择新凭证的默认日期')
    # 凭证号重置设置  此部分参考了步科的设计
    defaul_auto_reset = fields.Boolean('是否重置凭证号', )
    defaul_reset_period = fields.Selection(
        [('year', '每年'), ('month', '每月')],
        '重置间隔', required=True, default='month')
    defaul_reset_init_number = fields.Integer(
        '重置后起始数字', required=True, default=1, help="重置后,起始编号的数字,例从1起:1,2,3....")
    # 资产负债表 利润表
    # 是否能查看未结账期间
    defaul_period_domain = fields.Selection(
        [('can', '能'), ('cannot', '不能')],
        string='是否能查看未结账期间',
        default='can',
        help='是否能查看未结账期间')
    company_id = fields.Many2one(
        'res.company',
        string='公司',
        change_default=True,
        default=lambda self: self.env.company)
    # 科目编码规则
    defaul_account_hierarchy_level = fields.Selection(
        string='科目层级级别',
        selection=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5')],
        default='5',
        required=True
    )
    defaul_top_length = fields.Selection(
        string='一级科目编码长度',
        selection=[('4', '4')], default='4'
    )
    defaul_child_step = fields.Selection(
        string='下级科目编码递增长度',
        selection=[('2', '2')], default='2'
    )
    @api.model
    def set_defaults(self):
        self.env['ir.default'].set(
            'finance.config.settings', 'defaul_auto_reset', True)
        self.env['ir.default'].set(
            'finance.config.settings', 'defaul_account_hierarchy_level', '5')
        self.env['ir.default'].set(
            'finance.config.settings', 'defaul_top_length', '4')
        self.env['ir.default'].set(
            'finance.config.settings', 'defaul_child_step', '2')
        self.env['ir.default'].set(
            'finance.config.settings', 'defaul_voucher_date', 'today')
        self.env['ir.default'].set(
            'finance.config.settings', 'defaul_reset_period', 'month')
        self.env['ir.default'].set(
            'finance.config.settings', 'defaul_reset_init_number', 1)
        self.env['ir.default'].set(
            'finance.config.settings', 'defaul_period_domain', 'can')
        return True
    def set_values(self):
        voucher_date = self.defaul_voucher_date
        self.env['ir.default'].set(
            'finance.config.settings', 'defaul_voucher_date', voucher_date)
        self.env['ir.default'].set(
            'finance.config.settings',
            'defaul_account_hierarchy_level',
            self.defaul_account_hierarchy_level)
        self.env['ir.default'].set(
            'finance.config.settings',
            'defaul_top_length',
            self.defaul_top_length)
        period_domain = self.defaul_period_domain
        self.env['ir.default'].set(
            'finance.config.settings', 'defaul_period_domain', period_domain)
        auto_reset = self.defaul_auto_reset
        self.env['ir.default'].set(
            'finance.config.settings', 'defaul_auto_reset', auto_reset)
        reset_period = self.defaul_reset_period
        self.env['ir.default'].set(
            'finance.config.settings', 'defaul_reset_period', reset_period)
        reset_init_number = self.defaul_reset_init_number
        self.env['ir.default'].set(
            'finance.config.settings',
            'defaul_reset_init_number',
            reset_init_number)
 |