@@ -6,8 +6,8 @@
|
||||
<field name="model">property.accounts.receivable.summary</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree create="false" edit="false" delete="false" default_order="contract_id desc">
|
||||
<field name="contract_id"/>
|
||||
<field name="property_name"/>
|
||||
<field name="contract_id"/>
|
||||
<field name="admin_id"/>
|
||||
<field name="rent_unpaid" sum="合计" options='{"fg_color": "red: rent_unpaid > 0;" }'/>
|
||||
<field name="management_unpaid" sum="合计" options='{"fg_color": "red: management_unpaid > 0;" }'/>
|
||||
|
||||
@@ -332,9 +332,8 @@
|
||||
<!--
|
||||
============================================================
|
||||
物业管理根菜单下的「应收账单」副本(挂在 生成应收 之后)
|
||||
与上面那组菜单的唯一区别:所有动作的 domain 追加
|
||||
('admin_id', '=', uid)——只显示片区管理员为当前登录人的记录。
|
||||
汇总动作用独立 server action(返回按合同汇总窗口 + 本人片区 domain)。
|
||||
与上面那组菜单内容完全一致(不再追加 ('admin_id', '=', uid) 过滤)。
|
||||
汇总动作用独立 server action(直接返回按合同汇总窗口)。
|
||||
============================================================
|
||||
-->
|
||||
<menuitem id="menu_receivable_type_my_root"
|
||||
@@ -342,14 +341,20 @@
|
||||
parent="yuthon_property.yuthon_property_menu_root"
|
||||
sequence="11"/>
|
||||
|
||||
<!-- 0. 汇总(按合同汇总,仅当前登录人片区的数据) -->
|
||||
<!-- 0. 汇总(按合同汇总;searchpanel 片区管理员默认当前登录人对应片区) -->
|
||||
<record id="action_receivable_summary_my" model="ir.actions.server">
|
||||
<field name="name">应收账单汇总(本人片区)</field>
|
||||
<field name="name">应收账单汇总</field>
|
||||
<field name="model_id" ref="yuthon_property.model_property_accounts_receivable"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code"><![CDATA[
|
||||
action = env.ref('yuthon_property_approval.action_receivable_unpaid_window').sudo().read()[0]
|
||||
action['domain'] = [('admin_id', '=', env.user.id)]
|
||||
employee = env['hr.employee'].search([('user_id', '=', env.user.id)], limit=1)
|
||||
precinct = env['yuthon.precinct.message'].search([('employee_id', '=', employee.id)], limit=1) if employee else env['yuthon.precinct.message']
|
||||
# 汇总搜索视图的 searchpanel 字段是 admin_id(res.users),去掉原 group_by contract_id
|
||||
ctx = {}
|
||||
if precinct:
|
||||
ctx['searchpanel_default_admin_id'] = env.user.id
|
||||
action['context'] = ctx
|
||||
]]></field>
|
||||
</record>
|
||||
<menuitem id="menu_receivable_summary_my"
|
||||
@@ -358,132 +363,152 @@ action['domain'] = [('admin_id', '=', env.user.id)]
|
||||
action="action_receivable_summary_my"
|
||||
sequence="0"/>
|
||||
|
||||
<!-- 1. 租金(本人片区) -->
|
||||
<record id="action_receivable_type_rent_my" model="ir.actions.act_window">
|
||||
<!--
|
||||
1~8. 类型子菜单:每个类型一个独立 server action(硬编码类型 + 注入 searchpanel 片区管理员默认)。
|
||||
注:menuitem 不能带 context(RelaxNG 不允许),故用独立 server action 取代「按 context 分发」。
|
||||
目的:searchpanel「片区管理员」默认选中当前登录人对应的片区
|
||||
(res.users -> employee_id -> yuthon.precinct.message);若无对应片区则不预选(显示全部)。
|
||||
数据范围与「物业财务管理 - 应收账单」一致(不加 domain 硬过滤),仅在 searchpanel 上做默认选中。
|
||||
「其他」按应收类型分组显示(恢复分组折叠)。
|
||||
-->
|
||||
<record id="action_receivable_type_rent_my_srv" model="ir.actions.server">
|
||||
<field name="name">租金</field>
|
||||
<field name="res_model">property.accounts.receivable</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="domain">[('management_type_id.name', '=', '租金'), ('admin_id', '=', uid)]</field>
|
||||
<field name="context">{'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}</field>
|
||||
<field name="search_view_id" ref="yuthon_work_brand.view_receivable_type_search"/>
|
||||
<field name="view_id" ref="yuthon_work_brand.view_receivable_type_tree_no_type"/>
|
||||
<field name="model_id" ref="yuthon_property.model_property_accounts_receivable"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code"><![CDATA[
|
||||
employee = env['hr.employee'].search([('user_id', '=', env.user.id)], limit=1)
|
||||
precinct = env['yuthon.precinct.message'].search([('employee_id', '=', employee.id)], limit=1) if employee else env['yuthon.precinct.message']
|
||||
domain = [('management_type_id.name', '=', '租金')]
|
||||
view_id = env.ref('yuthon_work_brand.view_receivable_type_tree_no_type').id
|
||||
ctx = {'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}
|
||||
if precinct:
|
||||
ctx['searchpanel_default_precinct_id'] = precinct.id
|
||||
action = {'type': 'ir.actions.act_window', 'name': '租金', 'res_model': 'property.accounts.receivable', 'view_mode': 'tree', 'domain': domain, 'context': ctx, 'search_view_id': env.ref('yuthon_work_brand.view_receivable_type_search').id, 'view_id': view_id}
|
||||
]]></field>
|
||||
</record>
|
||||
<menuitem id="menu_receivable_type_rent_my"
|
||||
name="租金"
|
||||
parent="menu_receivable_type_my_root"
|
||||
action="action_receivable_type_rent_my"
|
||||
sequence="1"/>
|
||||
|
||||
<!-- 2. 管理费(本人片区) -->
|
||||
<record id="action_receivable_type_management_fee_my" model="ir.actions.act_window">
|
||||
<record id="action_receivable_type_management_fee_my_srv" model="ir.actions.server">
|
||||
<field name="name">管理费</field>
|
||||
<field name="res_model">property.accounts.receivable</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="domain">[('management_type_id.name', '=', '管理费'), ('admin_id', '=', uid)]</field>
|
||||
<field name="context">{'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}</field>
|
||||
<field name="search_view_id" ref="yuthon_work_brand.view_receivable_type_search"/>
|
||||
<field name="view_id" ref="yuthon_work_brand.view_receivable_type_tree_no_type"/>
|
||||
<field name="model_id" ref="yuthon_property.model_property_accounts_receivable"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code"><![CDATA[
|
||||
employee = env['hr.employee'].search([('user_id', '=', env.user.id)], limit=1)
|
||||
precinct = env['yuthon.precinct.message'].search([('employee_id', '=', employee.id)], limit=1) if employee else env['yuthon.precinct.message']
|
||||
domain = [('management_type_id.name', '=', '管理费')]
|
||||
view_id = env.ref('yuthon_work_brand.view_receivable_type_tree_no_type').id
|
||||
ctx = {'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}
|
||||
if precinct:
|
||||
ctx['searchpanel_default_precinct_id'] = precinct.id
|
||||
action = {'type': 'ir.actions.act_window', 'name': '管理费', 'res_model': 'property.accounts.receivable', 'view_mode': 'tree', 'domain': domain, 'context': ctx, 'search_view_id': env.ref('yuthon_work_brand.view_receivable_type_search').id, 'view_id': view_id}
|
||||
]]></field>
|
||||
</record>
|
||||
<menuitem id="menu_receivable_type_management_fee_my"
|
||||
name="管理费"
|
||||
parent="menu_receivable_type_my_root"
|
||||
action="action_receivable_type_management_fee_my"
|
||||
sequence="2"/>
|
||||
|
||||
<!-- 3. 水费(本人片区) -->
|
||||
<record id="action_receivable_type_water_fee_my" model="ir.actions.act_window">
|
||||
<record id="action_receivable_type_water_fee_my_srv" model="ir.actions.server">
|
||||
<field name="name">水费</field>
|
||||
<field name="res_model">property.accounts.receivable</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="domain">[('management_type_id.name', '=', '水费'), ('admin_id', '=', uid)]</field>
|
||||
<field name="context">{'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}</field>
|
||||
<field name="search_view_id" ref="yuthon_work_brand.view_receivable_type_search"/>
|
||||
<field name="view_id" ref="yuthon_work_brand.view_receivable_type_tree_no_type"/>
|
||||
<field name="model_id" ref="yuthon_property.model_property_accounts_receivable"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code"><![CDATA[
|
||||
employee = env['hr.employee'].search([('user_id', '=', env.user.id)], limit=1)
|
||||
precinct = env['yuthon.precinct.message'].search([('employee_id', '=', employee.id)], limit=1) if employee else env['yuthon.precinct.message']
|
||||
domain = [('management_type_id.name', '=', '水费')]
|
||||
view_id = env.ref('yuthon_work_brand.view_receivable_type_tree_no_type').id
|
||||
ctx = {'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}
|
||||
if precinct:
|
||||
ctx['searchpanel_default_precinct_id'] = precinct.id
|
||||
action = {'type': 'ir.actions.act_window', 'name': '水费', 'res_model': 'property.accounts.receivable', 'view_mode': 'tree', 'domain': domain, 'context': ctx, 'search_view_id': env.ref('yuthon_work_brand.view_receivable_type_search').id, 'view_id': view_id}
|
||||
]]></field>
|
||||
</record>
|
||||
<menuitem id="menu_receivable_type_water_fee_my"
|
||||
name="水费"
|
||||
parent="menu_receivable_type_my_root"
|
||||
action="action_receivable_type_water_fee_my"
|
||||
sequence="3"/>
|
||||
|
||||
<!-- 4. 电费(本人片区) -->
|
||||
<record id="action_receivable_type_electricity_fee_my" model="ir.actions.act_window">
|
||||
<record id="action_receivable_type_electricity_fee_my_srv" model="ir.actions.server">
|
||||
<field name="name">电费</field>
|
||||
<field name="res_model">property.accounts.receivable</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="domain">[('management_type_id.name', '=', '电费'), ('admin_id', '=', uid)]</field>
|
||||
<field name="context">{'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}</field>
|
||||
<field name="search_view_id" ref="yuthon_work_brand.view_receivable_type_search"/>
|
||||
<field name="view_id" ref="yuthon_work_brand.view_receivable_type_tree_no_type"/>
|
||||
<field name="model_id" ref="yuthon_property.model_property_accounts_receivable"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code"><![CDATA[
|
||||
employee = env['hr.employee'].search([('user_id', '=', env.user.id)], limit=1)
|
||||
precinct = env['yuthon.precinct.message'].search([('employee_id', '=', employee.id)], limit=1) if employee else env['yuthon.precinct.message']
|
||||
domain = [('management_type_id.name', '=', '电费')]
|
||||
view_id = env.ref('yuthon_work_brand.view_receivable_type_tree_no_type').id
|
||||
ctx = {'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}
|
||||
if precinct:
|
||||
ctx['searchpanel_default_precinct_id'] = precinct.id
|
||||
action = {'type': 'ir.actions.act_window', 'name': '电费', 'res_model': 'property.accounts.receivable', 'view_mode': 'tree', 'domain': domain, 'context': ctx, 'search_view_id': env.ref('yuthon_work_brand.view_receivable_type_search').id, 'view_id': view_id}
|
||||
]]></field>
|
||||
</record>
|
||||
<menuitem id="menu_receivable_type_electricity_fee_my"
|
||||
name="电费"
|
||||
parent="menu_receivable_type_my_root"
|
||||
action="action_receivable_type_electricity_fee_my"
|
||||
sequence="4"/>
|
||||
|
||||
<!-- 5. 违约金(本人片区) -->
|
||||
<record id="action_receivable_type_penalty_my" model="ir.actions.act_window">
|
||||
<record id="action_receivable_type_penalty_my_srv" model="ir.actions.server">
|
||||
<field name="name">违约金</field>
|
||||
<field name="res_model">property.accounts.receivable</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="domain">[('management_type_id.name', '=', '违约金'), ('admin_id', '=', uid)]</field>
|
||||
<field name="context">{'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}</field>
|
||||
<field name="search_view_id" ref="yuthon_work_brand.view_receivable_type_search"/>
|
||||
<field name="view_id" ref="yuthon_work_brand.view_receivable_type_tree_no_type"/>
|
||||
<field name="model_id" ref="yuthon_property.model_property_accounts_receivable"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code"><![CDATA[
|
||||
employee = env['hr.employee'].search([('user_id', '=', env.user.id)], limit=1)
|
||||
precinct = env['yuthon.precinct.message'].search([('employee_id', '=', employee.id)], limit=1) if employee else env['yuthon.precinct.message']
|
||||
domain = [('management_type_id.name', '=', '违约金')]
|
||||
view_id = env.ref('yuthon_work_brand.view_receivable_type_tree_no_type').id
|
||||
ctx = {'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}
|
||||
if precinct:
|
||||
ctx['searchpanel_default_precinct_id'] = precinct.id
|
||||
action = {'type': 'ir.actions.act_window', 'name': '违约金', 'res_model': 'property.accounts.receivable', 'view_mode': 'tree', 'domain': domain, 'context': ctx, 'search_view_id': env.ref('yuthon_work_brand.view_receivable_type_search').id, 'view_id': view_id}
|
||||
]]></field>
|
||||
</record>
|
||||
<menuitem id="menu_receivable_type_penalty_my"
|
||||
name="违约金"
|
||||
parent="menu_receivable_type_my_root"
|
||||
action="action_receivable_type_penalty_my"
|
||||
sequence="5"/>
|
||||
|
||||
<!-- 6. 押金(本人片区) -->
|
||||
<record id="action_receivable_type_deposit_my" model="ir.actions.act_window">
|
||||
<record id="action_receivable_type_deposit_my_srv" model="ir.actions.server">
|
||||
<field name="name">押金</field>
|
||||
<field name="res_model">property.accounts.receivable</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="domain">[('management_type_id.name', '=', '押金'), ('admin_id', '=', uid)]</field>
|
||||
<field name="context">{'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}</field>
|
||||
<field name="search_view_id" ref="yuthon_work_brand.view_receivable_type_search"/>
|
||||
<field name="view_id" ref="yuthon_work_brand.view_receivable_type_tree_no_type"/>
|
||||
<field name="model_id" ref="yuthon_property.model_property_accounts_receivable"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code"><![CDATA[
|
||||
employee = env['hr.employee'].search([('user_id', '=', env.user.id)], limit=1)
|
||||
precinct = env['yuthon.precinct.message'].search([('employee_id', '=', employee.id)], limit=1) if employee else env['yuthon.precinct.message']
|
||||
domain = [('management_type_id.name', '=', '押金')]
|
||||
view_id = env.ref('yuthon_work_brand.view_receivable_type_tree_no_type').id
|
||||
ctx = {'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}
|
||||
if precinct:
|
||||
ctx['searchpanel_default_precinct_id'] = precinct.id
|
||||
action = {'type': 'ir.actions.act_window', 'name': '押金', 'res_model': 'property.accounts.receivable', 'view_mode': 'tree', 'domain': domain, 'context': ctx, 'search_view_id': env.ref('yuthon_work_brand.view_receivable_type_search').id, 'view_id': view_id}
|
||||
]]></field>
|
||||
</record>
|
||||
<menuitem id="menu_receivable_type_deposit_my"
|
||||
name="押金"
|
||||
parent="menu_receivable_type_my_root"
|
||||
action="action_receivable_type_deposit_my"
|
||||
sequence="6"/>
|
||||
|
||||
<!-- 7. 灯箱(本人片区) -->
|
||||
<record id="action_receivable_type_lightbox_my" model="ir.actions.act_window">
|
||||
<record id="action_receivable_type_lightbox_my_srv" model="ir.actions.server">
|
||||
<field name="name">灯箱</field>
|
||||
<field name="res_model">property.accounts.receivable</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="domain">[('management_type_id.name', '=', '灯箱'), ('admin_id', '=', uid)]</field>
|
||||
<field name="context">{'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}</field>
|
||||
<field name="search_view_id" ref="yuthon_work_brand.view_receivable_type_search"/>
|
||||
<field name="view_id" ref="yuthon_work_brand.view_receivable_type_tree_no_type"/>
|
||||
<field name="model_id" ref="yuthon_property.model_property_accounts_receivable"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code"><![CDATA[
|
||||
employee = env['hr.employee'].search([('user_id', '=', env.user.id)], limit=1)
|
||||
precinct = env['yuthon.precinct.message'].search([('employee_id', '=', employee.id)], limit=1) if employee else env['yuthon.precinct.message']
|
||||
domain = [('management_type_id.name', '=', '灯箱')]
|
||||
view_id = env.ref('yuthon_work_brand.view_receivable_type_tree_no_type').id
|
||||
ctx = {'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}
|
||||
if precinct:
|
||||
ctx['searchpanel_default_precinct_id'] = precinct.id
|
||||
action = {'type': 'ir.actions.act_window', 'name': '灯箱', 'res_model': 'property.accounts.receivable', 'view_mode': 'tree', 'domain': domain, 'context': ctx, 'search_view_id': env.ref('yuthon_work_brand.view_receivable_type_search').id, 'view_id': view_id}
|
||||
]]></field>
|
||||
</record>
|
||||
<menuitem id="menu_receivable_type_lightbox_my"
|
||||
name="灯箱"
|
||||
parent="menu_receivable_type_my_root"
|
||||
action="action_receivable_type_lightbox_my"
|
||||
sequence="7"/>
|
||||
|
||||
<!-- 8. 其他(本人片区;含多个类型,按应收类型分组显示) -->
|
||||
<record id="action_receivable_type_others_my" model="ir.actions.act_window">
|
||||
<record id="action_receivable_type_others_my_srv" model="ir.actions.server">
|
||||
<field name="name">其他</field>
|
||||
<field name="res_model">property.accounts.receivable</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="domain">[('management_type_id.name', 'in', ['广告灯箱费', '有偿服务收入', '停车费', '管子间', '更名费', '维修费', '其他费用', '评估费', '保险费']), ('admin_id', '=', uid)]</field>
|
||||
<field name="context">{'group_by': 'management_type_id', 'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}</field>
|
||||
<field name="search_view_id" ref="yuthon_work_brand.view_receivable_type_search"/>
|
||||
<field name="view_id" ref="yuthon_property.view_property_accounts_receivable_tree"/>
|
||||
<field name="model_id" ref="yuthon_property.model_property_accounts_receivable"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code"><![CDATA[
|
||||
employee = env['hr.employee'].search([('user_id', '=', env.user.id)], limit=1)
|
||||
precinct = env['yuthon.precinct.message'].search([('employee_id', '=', employee.id)], limit=1) if employee else env['yuthon.precinct.message']
|
||||
domain = [('management_type_id.name', 'in', ['广告灯箱费', '有偿服务收入', '停车费', '管子间', '更名费', '维修费', '其他费用', '评估费', '保险费'])]
|
||||
view_id = env.ref('yuthon_property.view_property_accounts_receivable_tree').id
|
||||
ctx = {'group_by': 'management_type_id', 'orderedBy': [{'name': 'due_date', 'asc': False}], 'searchpanel_default_deposit_state': 'unpaid'}
|
||||
if precinct:
|
||||
ctx['searchpanel_default_precinct_id'] = precinct.id
|
||||
action = {'type': 'ir.actions.act_window', 'name': '其他', 'res_model': 'property.accounts.receivable', 'view_mode': 'tree', 'domain': domain, 'context': ctx, 'search_view_id': env.ref('yuthon_work_brand.view_receivable_type_search').id, 'view_id': view_id}
|
||||
]]></field>
|
||||
</record>
|
||||
<menuitem id="menu_receivable_type_others_my"
|
||||
name="其他"
|
||||
parent="menu_receivable_type_my_root"
|
||||
action="action_receivable_type_others_my"
|
||||
sequence="8"/>
|
||||
|
||||
<menuitem id="menu_receivable_type_rent_my" name="租金" parent="menu_receivable_type_my_root" action="action_receivable_type_rent_my_srv" sequence="1"/>
|
||||
<menuitem id="menu_receivable_type_management_fee_my" name="管理费" parent="menu_receivable_type_my_root" action="action_receivable_type_management_fee_my_srv" sequence="2"/>
|
||||
<menuitem id="menu_receivable_type_water_fee_my" name="水费" parent="menu_receivable_type_my_root" action="action_receivable_type_water_fee_my_srv" sequence="3"/>
|
||||
<menuitem id="menu_receivable_type_electricity_fee_my" name="电费" parent="menu_receivable_type_my_root" action="action_receivable_type_electricity_fee_my_srv" sequence="4"/>
|
||||
<menuitem id="menu_receivable_type_penalty_my" name="违约金" parent="menu_receivable_type_my_root" action="action_receivable_type_penalty_my_srv" sequence="5"/>
|
||||
<menuitem id="menu_receivable_type_deposit_my" name="押金" parent="menu_receivable_type_my_root" action="action_receivable_type_deposit_my_srv" sequence="6"/>
|
||||
<menuitem id="menu_receivable_type_lightbox_my" name="灯箱" parent="menu_receivable_type_my_root" action="action_receivable_type_lightbox_my_srv" sequence="7"/>
|
||||
<menuitem id="menu_receivable_type_others_my" name="其他" parent="menu_receivable_type_my_root" action="action_receivable_type_others_my_srv" sequence="8"/>
|
||||
|
||||
<!-- 清理:旧的 8 个 _my act_window 记录(已被独立 server action 取代) -->
|
||||
<delete model="ir.actions.act_window" id="action_receivable_type_rent_my"/>
|
||||
<delete model="ir.actions.act_window" id="action_receivable_type_management_fee_my"/>
|
||||
<delete model="ir.actions.act_window" id="action_receivable_type_water_fee_my"/>
|
||||
<delete model="ir.actions.act_window" id="action_receivable_type_electricity_fee_my"/>
|
||||
<delete model="ir.actions.act_window" id="action_receivable_type_penalty_my"/>
|
||||
<delete model="ir.actions.act_window" id="action_receivable_type_deposit_my"/>
|
||||
<delete model="ir.actions.act_window" id="action_receivable_type_lightbox_my"/>
|
||||
<delete model="ir.actions.act_window" id="action_receivable_type_others_my"/>
|
||||
|
||||
</odoo>
|
||||
|
||||
Reference in New Issue
Block a user