首先是views的xml
<?xml version="1.0"?>
<openerp>
<data>
<record id="finance_period_tree" model="ir.ui.view">
<field name="name">finance.period.tree</field>
<field name="model">finance.period</field>
<field name="arch" type="xml">
<tree editable="TOP" string="会计期间"> <!-- delete='false'这个是控制删除按钮的-->
<field name="name"/>
<field name="year" attrs="{'readonly': [('is_closed','=',True)]}"/>
<field name="month" attrs="{'readonly': [('is_closed','=',True)]}"/>
<field name="is_closed" /><!--readonly='1' 用来控制只读-->
</tree>
</field>
</record>
<record id="create_finance_period_wizard_form" model="ir.ui.view">
<field name="name">create.finance.period.wizard.form</field>
<field name="model">create.finance.period.wizard</field>
<field name="arch" type="xml">
<form>
<group>
<group>
<field name="company_id" readonly='1'/>
</group>
</group>
<footer>
<button name="create_finance_period" string="会计期间" type="object" class="oe_highlight"/>
或者
<button string="取消" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="finance_period_search" model="ir.ui.view">
<field name="name">finance.period.search</field>
<field name="model">finance.period</field>
<field name="arch" type="xml">
<search string="会计期间">
<filter name='unclosed' string='未结账' domain="[('is_closed', '=', False)]"/>
<filter name='closed' string='已结账' domain="[('is_closed', '=', True)]"/>
<group expand="0" string="分组">
<filter string="会计年度" domain="[]" context="{'group_by':'year'}"/>
</group>
</search>
</field>
</record>
<record id="profit_statement_tree_template" model="ir.ui.view">
<field name="name">profit_statement_tree_template</field>
<field name="model">profit.statement</field>
<field name="arch" type="xml">
<tree string='利润表模板' editable="bottom" >
<field name="sequence" widget="handle"/>
<field name="balance"/>
<field name="line_num"/>
<field name="occurrence_balance_formula"/>
</tree>
</field>
</record>
<record id="create_profit_statement_wizard_form" model="ir.ui.view">
<field name="name">create.profit.statement.wizard.form</field>
<field name="model">create.profit.statement.wizard</field>
<field name="arch" type="xml">
<form>
<group>
<group>
<field name="company_id" readonly='1'/>
</group>
</group>
<footer>
<button name="create_profit_statement" string="利润表模版" type="object" class="oe_highlight"/>
或者
<button string="取消" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="balance_sheet_tree_two" model="ir.ui.view">
<field name="name">balance_sheet_tree_two</field>
<field name="model">balance.sheet</field>
<field name="arch" type="xml">
<tree string="资产负债表模板" editable="bottom" >
<field name="sequence" widget="handle"/>
<field name="balance"/>
<field name="line_num"/>
<field name="balance_formula"/>
<field name="balance_two" />
<field name="line_num_two"/>
<field name="balance_two_formula" />
</tree>
</field>
</record>
<record id="create_balance_sheet_two_wizard_form" model="ir.ui.view">
<field name="name">create.balance.sheet.two.wizard.form</field>
<field name="model">create.balance.sheet.two.wizard</field>
<field name="arch" type="xml">
<form>
<group>
<group>
<field name="company_id" readonly='1'/>
</group>
</group>
<footer>
<button name="create_balance_sheet_two" string="资产负债表模版" type="object" class="oe_highlight"/>
或者
<button string="取消" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<record model="ir.ui.view" id="gl_company_year_balance_tree_view">
<field name="name">glpany.year.balance.tree.view</field>
<field name="model">glpany.year.balance</field>
<field name="arch" type="xml">
<tree string="年初余额设置">
<field name="company_id"/>
<field name="annual"/>
</tree>
</field>
</record>
<record id="create_gl_opening_balance_wizard_form" model="ir.ui.view">
<field name="name">create.gl.opening.balance.form</field>
<field name="model">create.gl.opening.balance.wizard</field>
<field name="arch" type="xml">
<form>
<group>
<group>
<field name="company_id" readonly='1'/>
<field name="annual"/>
</group>
</group>
<footer>
<button name="create_gl_opening_balance" string="年初余额设置" type="object" class="oe_highlight"/>
或者
<button string="取消" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<act_window id="action_gl_opening_balance"
name="年初余额"
res_model="create.gl.opening.balance.wizard"
multi="True"
view_type="form"
view_mode="form,tree"
target="new"
/>
<act_window id="create_profit_statement_wizard_action"
name='利润表模版'
res_model="create.profit.statement.wizard"
multi="True"
view_type="form"
view_mode="form"
target="new"
/>
<act_window id="create_balance_sheet_two_wizard_action"
name='资产负债表模版'
res_model="create.balance.sheet.two.wizard"
multi="True"
view_type="form"
view_mode="form"
target="new"
/>
<act_window id="create_finance_period_wizard_action"
name='会计期间'
res_model="create.finance.period.wizard"
multi="True"
view_type="form"
view_mode="form"
target="new"
/>
<!--会计根菜单-->
<menuitem id='finance_menu' name='会计报表' />
<menuitem id='finance_setting_menu' name= '报表设置' parent='finance_menu'/>
<menuitem id='period_menu_test1' action='create_finance_period_wizard_action' parent='finance_setting_menu' name="会计期间"/>
<menuitem id='period_menu_test2' action='create_profit_statement_wizard_action' parent='finance_setting_menu' name="利润表模版"/>
<menuitem id='period_menu_test3' action='create_balance_sheet_two_wizard_action' parent='finance_setting_menu' name="资产负债表模版"/>
<menuitem id='period_menu_test4' action='action_gl_opening_balance' parent='finance_setting_menu' name="年初余额设置"/>
</data>
</openerp>
然后是关联的py文件
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class CreateProfitStatementWizard(models.TransientModel):
_name = "create.profit.statement.wizard"
_description = u'利润表模版的创建向导'
company_id = fields.Many2one('respany', string=u'查询的公司', change_default=True,
default=lambda self: self.env['respany']._company_default_get())
@api.multi
def create_profit_statement(self):
current_company = selfpany_id.id
sql = '''select id from
profit_statement where company_id = {}'''.format(current_company)
self.env.cr.execute(sql)
my_end_dic = self.env.cr.dictfetchall()
# print my_end_dic
create_profit_ids = []
for dic in my_end_dic:
create_profit_ids.append(dic.get('id'))
# print trial_balance_ids
# trial_balance_ids = [self.env['profit.statement'].create(vals).id for (key, vals) in my_end_dic.items()]
view_id = self.env.ref('juxinerp.profit_statement_tree_template').id #得到插入的视图 id
return {
'type': 'ir.actions.act_window',
'name': u'利润表模版',
'view_type': 'form',
'view_mode': 'tree',
'res_model': 'profit.statement',
'target': 'current',
'view_id': False,
'views': [(view_id, 'tree')],
'domain': [('id', 'in', create_profit_ids)], # 对应的输出修改对应的接收
}
class CreateFinancePeriodWizard(models.TransientModel):
_name = "create.finance.period.wizard"
_description = u'会计期间的创建向导'
company_id = fields.Many2one('respany', string=u'查询的公司', change_default=True,
default=lambda self: self.env['respany']._company_default_get())
@api.multi
def create_finance_period(self):
current_company = selfpany_id.id
sql = '''select id from
finance_period where company_id = {}'''.format(current_company)
self.env.cr.execute(sql)
my_end_dic = self.env.cr.dictfetchall()
finance_period_ids = []
for dic in my_end_dic:
finance_period_ids.append(dic.get('id'))
view_id = self.env.ref('juxinerp.finance_period_tree').id #得到插入的视图 id
return {
'type': 'ir.actions.act_window',
'name': u'会计期间',
'view_type': 'form',
'view_mode': 'tree',
'res_model': 'finance.period',
'target': 'current',
'view_id': False,
'views': [(view_id, 'tree')],
'domain': [('id', 'in', finance_period_ids)], # 对应的输出修改对应的接收
}
class CreateBalanceSheetTwoWizard(models.TransientModel):
_name = "create.balance.sheet.two.wizard"
_description = u'资产负债表的创建向导'
company_id = fields.Many2one('respany', string=u'查询的公司', change_default=True,
default=lambda self: self.env['respany']._company_default_get())
@api.multi
def create_balance_sheet_two(self):
current_company = selfpany_id.id
sql = '''select id from
balance_sheet where company_id = {}'''.format(current_company)
self.env.cr.execute(sql)
my_end_dic = self.env.cr.dictfetchall()
balance_sheet_two_ids = []
for dic in my_end_dic:
balance_sheet_two_ids.append(dic.get('id'))
view_id = self.env.ref('juxinerp.balance_sheet_tree_two').id #得到插入的视图 id
return {
'type': 'ir.actions.act_window',
'name': u'资产负债表模版',
'view_type': 'form',
'view_mode': 'tree',
'res_model': 'balance.sheet',
'target': 'current',
'view_id': False,
'views': [(view_id, 'tree')],
'domain': [('id', 'in', balance_sheet_two_ids)], # 对应的输出修改对应的接收
}
更多推荐
odoo10(基于python2)使用向导的完整用法
发布评论