@@ -4,9 +4,7 @@
|
||||
<!-- 天河投资办公室 - 采购办公用品 -->
|
||||
<record id="approval_category_data_tianhe_purchase_work_approval" model="approval.category">
|
||||
<field name="name">采购办公用品</field>
|
||||
<field name="category_type_number">purchase_work_approval</field>
|
||||
<field name="model_name">approval.request</field>
|
||||
<!-- <field name="image" type="base64" file="approvals/static/src/img/Suitcase.png"/>-->
|
||||
<field name="approval_category_type">purchase_work</field>
|
||||
<field name="sequence">1</field>
|
||||
<field name="has_date">no</field>
|
||||
<field name="has_period">no</field>
|
||||
|
||||
@@ -6,31 +6,7 @@ class ApprovalCategory(models.Model):
|
||||
_inherit = 'approval.category'
|
||||
_description = 'tian he 审批框架拓展'
|
||||
|
||||
def create_request(self):
|
||||
self.ensure_one()
|
||||
if not self.category_type_number:
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
"res_model": "approval.request",
|
||||
"views": [[False, "form"]],
|
||||
"context": {
|
||||
'default_name': _('New') if self.automated_sequence else self.name,
|
||||
'default_category_id': self.id,
|
||||
'default_request_owner_id': self.env.user.id,
|
||||
'default_request_status': 'new'
|
||||
},
|
||||
}
|
||||
else:
|
||||
form_str = 'tianhe_approvals.approvals_category_type_code_%s' % self.category_type_number
|
||||
approvals_form_id = self.env.ref(form_str).id or ''
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
"res_model": self.model_name,
|
||||
"views": [[approvals_form_id, "form"]],
|
||||
"context": {
|
||||
'default_name': _('New') if self.automated_sequence else self.name,
|
||||
'default_category_id': self.id,
|
||||
'default_request_owner_id': self.env.user.id,
|
||||
'default_request_status': 'new'
|
||||
},
|
||||
}
|
||||
approval_category_type = fields.Selection([
|
||||
('demo', 'demo测试'),
|
||||
('purchase_work', '采购审批单'),
|
||||
])
|
||||
@@ -7,9 +7,6 @@ class TianHePurchaseApproval(models.Model):
|
||||
_inherit = "approval.request"
|
||||
_description = '天河采购审批单'
|
||||
|
||||
# approvals_department_id 部门
|
||||
# date_confirm 确认日期
|
||||
# purchase_work_notice = fields.Text(string="采购原由")
|
||||
# 产品明细,设备名称,型号,单价,数量,小计,库存,备注
|
||||
purchase_work_notice = fields.Text(string="采购原由")
|
||||
|
||||
|
||||
|
||||
@@ -8,13 +8,10 @@
|
||||
<xpath expr="//field[@name='company_id']" position="after">
|
||||
<field name="approvals_department_id"/>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='description']" position="attributes">
|
||||
<attribute name="string">采购原由</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='products']" position="replace">
|
||||
<page string="采购清单" name="products" invisible="has_product == 'no'">
|
||||
<!-- 未知功能,暂留 -->
|
||||
<!-- contex"{'tree_view_ref': 'approvals.approval_product_line_view_tree', 'kanban_view_ref': 'approvals.approval_product_kanban_mobile_view'}"-->
|
||||
<!-- 未知功能,暂留 -->
|
||||
<!-- contex"{'tree_view_ref': 'approvals.approval_product_line_view_tree', 'kanban_view_ref': 'approvals.approval_product_kanban_mobile_view'}"-->
|
||||
<field name="product_line_ids" readonly="request_status != 'new'">
|
||||
<tree editable="bottom" string="采购清单">
|
||||
<field name="company_id" column_invisible="True"/>
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
'depends': ['approvals'],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'data/approval_category_type_data.xml',
|
||||
'wizard/approval_notice_wizard_views.xml',
|
||||
'wizard/approval_refuse_wizard_views.xml',
|
||||
'views/inherit_approval_category_views.xml',
|
||||
'views/inherit_approval_request_views.xml',
|
||||
'views/approval_process_views.xml',
|
||||
'views/demo_approval_request.xml',
|
||||
'data/approval_category_type_data.xml',
|
||||
'report/all_demo_report.xml',
|
||||
],
|
||||
'installable': True,
|
||||
|
||||
@@ -2,11 +2,10 @@
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- 审批导入模板,测试用 -->
|
||||
<record id="approval_category_data_business_trip" model="approval.category">
|
||||
<record id="approval_category_data_demo_request" model="approval.category">
|
||||
<field name="name">demo测试</field>
|
||||
<field name="category_type_number">demo_request</field>
|
||||
<field name="model_name">demo.request</field>
|
||||
<field name="image" type="base64" file="approvals/static/src/img/Suitcase.png"/>
|
||||
<field name="approval_category_type">demo</field>
|
||||
<!-- <field name="image" type="base64" file="approvals/static/src/img/Suitcase.png"/>-->
|
||||
<field name="sequence">1</field>
|
||||
<field name="has_date">no</field>
|
||||
<field name="has_period">required</field>
|
||||
|
||||
@@ -5,7 +5,7 @@ from odoo.exceptions import ValidationError
|
||||
|
||||
class DemoApprovalRequest(models.Model):
|
||||
_inherit = "approval.request"
|
||||
_description = '默认审批'
|
||||
_description = '默认测试审批'
|
||||
|
||||
demo1 = fields.Char(string="demo1")
|
||||
demo2 = fields.Char(string="demo2")
|
||||
|
||||
@@ -6,10 +6,11 @@ class ApprovalCategory(models.Model):
|
||||
_inherit = 'approval.category'
|
||||
_description = '审批框架拓展'
|
||||
|
||||
model_name = fields.Char(string="模型名称")
|
||||
category_type_number = fields.Char(string='审批视图编号')
|
||||
approval_department_ids = fields.Many2many('hr.department', string="审批所属部门")
|
||||
approval_process_id = fields.Many2one('approval.process', string="审批流程")
|
||||
approval_category_type = fields.Selection([
|
||||
('demo', 'demo测试')
|
||||
], string="审批类别", help="后台计算")
|
||||
is_enable = fields.Boolean(string="启用", default=True)
|
||||
category_start_date = fields.Date(string="开始日期", default=fields.Date.today())
|
||||
category_end_date = fields.Date(string="结束日期")
|
||||
@@ -24,33 +25,4 @@ class ApprovalCategory(models.Model):
|
||||
'user_id': user,
|
||||
'category_id': record.id
|
||||
}))
|
||||
record.approver_ids = category_approver
|
||||
|
||||
def create_request(self):
|
||||
self.ensure_one()
|
||||
if not self.category_type_number:
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
"res_model": "approval.request",
|
||||
"views": [[False, "form"]],
|
||||
"context": {
|
||||
'default_name': _('New') if self.automated_sequence else self.name,
|
||||
'default_category_id': self.id,
|
||||
'default_request_owner_id': self.env.user.id,
|
||||
'default_request_status': 'new'
|
||||
},
|
||||
}
|
||||
else:
|
||||
form_str = 'yuthon_approval.approvals_category_type_code_%s' % self.category_type_number
|
||||
approvals_form_id = self.env.ref(form_str).id or ''
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
"res_model": self.model_name,
|
||||
"views": [[approvals_form_id, "form"]],
|
||||
"context": {
|
||||
'default_name': _('New') if self.automated_sequence else self.name,
|
||||
'default_category_id': self.id,
|
||||
'default_request_owner_id': self.env.user.id,
|
||||
'default_request_status': 'new'
|
||||
},
|
||||
}
|
||||
record.approver_ids = category_approver
|
||||
@@ -6,6 +6,8 @@ from odoo.exceptions import ValidationError
|
||||
class ApprovalRequest(models.Model):
|
||||
_inherit = "approval.request"
|
||||
|
||||
approval_category_name = fields.Selection(string="类别名称", related='category_id.approval_category_type')
|
||||
|
||||
def print_approval_report(self):
|
||||
return self.env.ref('yuthon_approval.all_demo_report_actions').report_action(self)
|
||||
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
<field name="inherit_id" ref="approvals.approval_request_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='company_id']" position="after">
|
||||
<field name="demo1"/>
|
||||
<field name="demo2"/>
|
||||
<field name="demo3"/>
|
||||
<field name="demo1" invisible="approval_category_name != 'demo'"/>
|
||||
<field name="demo2" invisible="approval_category_name != 'demo'"/>
|
||||
<field name="demo3" invisible="approval_category_name != 'demo'"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
<field name="inherit_id" ref="approvals.approval_category_view_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='name']" position="after">
|
||||
<field name="category_type_number"/>
|
||||
<field name="is_enable"/>
|
||||
<field name="category_start_date"/>
|
||||
<field name="category_end_date"/>
|
||||
@@ -20,9 +19,8 @@
|
||||
<field name="inherit_id" ref="approvals.approval_category_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='description']" position="after">
|
||||
<field name="category_type_number" column_invisible="True"/>
|
||||
<field name="approval_department_ids" widget="many2many_tags"/>
|
||||
<field name="model_name" column_invisible="True"/>
|
||||
<field name="approval_category_type"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='approver_ids']" position="after">
|
||||
<field name="approval_process_id" widget="many2one_avatar_user"/>
|
||||
|
||||
@@ -7,25 +7,30 @@
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='approver_ids']/tree//field[@name='status']" position="after">
|
||||
<field name="approval_notice"/>
|
||||
<field name="approval_sign" widget="image" options='{"size": [80, 40]}' />
|
||||
<field name="approval_sign" widget="image" options='{"size": [80, 40]}'/>
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='action_cancel']" position="after">
|
||||
<button name="print_approval_report" string="打印" type="object"
|
||||
invisible="request_status in ['new', 'cancel']"/>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//button[@name='action_approve']" position="attributes">
|
||||
<xpath expr="//button[@name='action_approve']" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='action_refuse']" position="attributes">
|
||||
<xpath expr="//button[@name='action_refuse']" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='action_approve']" position="after">
|
||||
<button name="%(approval_notice_wizard_action)d" string="批准" type="action" invisible="request_status in ['approved', 'refused', 'cancel'] or user_status != 'pending'" data-hotkey="v"/>
|
||||
<button name="%(approval_notice_wizard_action)d" string="批准" type="action"
|
||||
invisible="request_status in ['approved', 'refused', 'cancel'] or user_status != 'pending'"
|
||||
data-hotkey="v"/>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//button[@name='action_refuse']" position="after">
|
||||
<button name="%(approval_refuse_wizard_action)d" string="拒绝" type="action" invisible="request_status in ['approved', 'refused', 'cancel'] or user_status != 'pending'" data-hotkey="z"/>
|
||||
<button name="%(approval_refuse_wizard_action)d" string="拒绝" type="action"
|
||||
invisible="request_status in ['approved', 'refused', 'cancel'] or user_status != 'pending'"
|
||||
data-hotkey="z"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='company_id']" position="after">
|
||||
<field name="approval_category_name" invisible="1"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<odoo>
|
||||
<record id="approval_notice_wizard_form" model="ir.ui.view">
|
||||
<record id="approval_notice_wizard_form" model="ir.ui.view">
|
||||
<field name="name">审批意见弹窗</field>
|
||||
<field name="model">approval.notice.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<field name="approval_user_line_id" invisible="1" />
|
||||
<field name="approval_user_line_id" invisible="1"/>
|
||||
<group>
|
||||
<field name="approval_notice_text"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="approval_sign" widget="signature" options="{'size': ['',200]}"/>
|
||||
<field name="approval_sign" widget="signature" options="{'size': ['',200]}"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button name="confirm" string="确认" type="object" class="oe_highlight"/>
|
||||
@@ -18,15 +18,15 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="approval_notice_wizard_action" model="ir.actions.act_window">
|
||||
<record id="approval_notice_wizard_action" model="ir.actions.act_window">
|
||||
<field name="name">审批意见弹窗</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">approval.notice.wizard</field>
|
||||
<field name="context">{
|
||||
'default_approval_user_line_id': active_id,
|
||||
}</field>
|
||||
}
|
||||
</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
@@ -1,10 +1,10 @@
|
||||
<odoo>
|
||||
<record id="approval_refuse_wizard_form" model="ir.ui.view">
|
||||
<record id="approval_refuse_wizard_form" model="ir.ui.view">
|
||||
<field name="name">审批意见弹窗</field>
|
||||
<field name="model">approval.refuse.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<field name="approval_user_line_id" invisible="1" />
|
||||
<field name="approval_user_line_id" invisible="1"/>
|
||||
<group>
|
||||
<field name="approval_notice_text"/>
|
||||
</group>
|
||||
@@ -18,13 +18,14 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="approval_refuse_wizard_action" model="ir.actions.act_window">
|
||||
<record id="approval_refuse_wizard_action" model="ir.actions.act_window">
|
||||
<field name="name">审批意见弹窗</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">approval.refuse.wizard</field>
|
||||
<field name="context">{
|
||||
'default_approval_user_line_id': active_id,
|
||||
}</field>
|
||||
}
|
||||
</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import models
|
||||
@@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
{
|
||||
'name': "Yuthon Purchase approval",
|
||||
'summary': "审批采购",
|
||||
'description': """
|
||||
|
||||
""",
|
||||
'author': 'pengyuthon',
|
||||
'website': 'https://www.pengyuthon.com',
|
||||
'category': 'Human Resources/Attendances',
|
||||
'version': '0.1',
|
||||
'license': 'LGPL-3',
|
||||
'depends': ['base', 'product', 'yuthon_approval'],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
],
|
||||
'installable': True,
|
||||
'application': True,
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user