odoo10 请假单扩展

# 请假单
class qingjiadan(models.Model):
    WORKFLOW_STATE_SELECTION = [
        ('draft', '草稿'),
        ('confirm', '待人力资源部审批'),
        ('reject', '人力资源部不通过'),
        ('complete', '审批通过')
    ]
    _name = 'bumen.qingjiadan'

    name = fields.Many2one('bumen.yuangong',string="申请人",readonly=True)
    days = fields.Integer(string="天数",required = True,help = "天数只能是整数",states={'draft': [('readonly', False)]},readonly=True)
    startdate = fields.Date(string="开始日期",required = True,states={'draft': [('readonly', False)]},readonly=True)
    reason = fields.Text(string="请假事由",default="",required = True,states={'draft': [('readonly', False)]},readonly=True)
    state = fields.Selection(WORKFLOW_STATE_SELECTION, default='draft', string='状态',readonly=True)

    @api.constrains('days','startdate','reason')
    def _check_something(self):
        for record in self:
            # 当前时间
            currentDate = int(time.strftime("%Y%m%d", time.localtime()))
            # 选择的开始时间
            date = int(record.startdate[0:4] + record.startdate[5:7] + record.startdate[8:10])
            if record.days < 0 or record.days == 0:
                raise ValidationError("天数不能小于等于0")
            if date < currentDate:
                raise ValidationError("开始日期不能早于当前时间")

    @api.multi
    def do_confirm(self):
        self.state = 'confirm'
        # 申请人只能填当前账户的用户名
        bianzhi = self.env['bumen.yuangong'].search([('name', '=', self.env.uid)], limit=1)
        for r in self:
            r.write({'name': bianzhi.id})
        return True

    @api.multi
    def do_reject(self):
        self.state = 'reject'
        return True

    @api.multi
    def do_complete(self):
        self.state = 'complete'
        return True


<record model="ir.ui.view" id="view_tree_bumen_qingjiadan">
  <field name="name">请假单列表</field>
  <field name="model">bumen.qingjiadan</field>
  <field name="arch" type="xml">
    <tree decoration-danger="state =='confirm'" decoration-info="state =='complete'">
      <field name="name"/>
      <field name="days"/>
      <field name="startdate"/>
      <field name="state"/>
    </tree>
  </field>
</record>

<record id="view_form_bumen_qingjiadan" model="ir.ui.view">
    <field name="name">请假单详情</field>
    <field name="model">bumen.qingjiadan</field>
    <field name="arch" type="xml">
        <form>
            <header>
                <button name="button_confirm_one" states="draft"
                string="提交" type="workflow" class="oe_highlight"/>
                <button name="button_complete_one" states="confirm"
                string="批准" type="workflow" class="oe_highlight"
                groups="bumen.group_hr"/>
                <button name="button_reject_one" states="confirm"
                string="拒绝" type="workflow" class="oe_highlight"
                groups="bumen.group_hr"/>
                <field name="state" widget="statusbar"/>
            </header>
            <sheet>
                <group name="group_top" string="请假单详情">
                    <field name="name"/>
                    <field name="days"/>
                    <field name="startdate"/>
                </group>
                <notebook>
                    <page string="原因">
                        <field name="reason"/>
                    </page>
                </notebook>
            </sheet>
        </form>
    </field>
</record>

<record model="ir.ui.view" id="qingjiadan_search_view">
    <field name="name">搜索视图</field>
    <field name="model">bumen.qingjiadan</field>
    <field name="arch" type="xml">
        <search>
            <field name="days"/>
            <field name="name"/>
            <field name="state"/>
            <filter name="state_complete" string="审批通过"
                        domain="[('state', '=', 'complete')]"/>
            <filter name="state_reject" string="人力资源部不通过"
                        domain="[('state', '=', 'reject')]"/>
            <filter name="state_confirm" string="待人力资源部审批"
                        domain="[('state', '=', 'confirm')]"/>
            <filter name="state_draft" string="草稿"
                        domain="[('state', '=', 'draft')]"/>
            <group string="Group By">
                <filter name="state" string="按审核进度分组"
            context="{'group_by': 'state'}"/>
            </group>
            <filter name="state_complete_two" string="已完成"
                        domain="[('state', '=', 'complete')]"/>
        </search>
    </field>
</record>

<!--record 规则 -->
<record id="rule_user_bumen_qingjiadan" model="ir.rule">
  <field name="name">普通员工只能看到自己的请假单</field>
  <field name="model_id" ref="model_bumen_qingjiadan" />
  <field name="domain_force">[('create_uid','=',user.id)]</field>
  <field name="groups" eval="[(4,ref('base.group_user'))]"/>
</record>
<record id="rule_user_bumen_qingjiadan_hr" model="ir.rule">
  <field name="name">人力资源部可以看到所有请假单</field>
  <field name="model_id" ref="model_bumen_qingjiadan" />
  <field name="domain_force">[(1,'=',1)]</field>
  <field name="groups" eval="[(4,ref('bumen.group_hr','bumen.group_manager'))]"/>
</record>


<openerp>
  <data>
      <!-- 工作流 -->
      <record id="workflow_bumen_qingjiadan" model="workflow">
          <field name="name">请假单工作流</field>
          <field name="osv">bumen.qingjiadan</field>
          <field name="on_create">True</field>
      </record>

      <!-- 工作流活动 -->
      <record id="activity_draft_one" model="workflow.activity">
          <field name="name">草稿</field>
          <field name="wkf_id" ref="workflow_bumen_qingjiadan"/>
          <field name="kind">dummy</field>
          <field name="flow_start">True</field>
      </record>
      <record id="activity_confirm_one" model="workflow.activity">
          <field name="name">待审核</field>
          <field name="wkf_id" ref="workflow_bumen_qingjiadan"/>
          <field name="kind">function</field>
          <field name="action">do_confirm()</field>
      </record>
      <record id="activity_reject_one" model="workflow.activity">
          <field name="name">待审核</field>
          <field name="wkf_id" ref="workflow_bumen_qingjiadan"/>
          <field name="kind">function</field>
          <field name="action">do_reject()</field>
      </record>
      <record id="activity_complete_one" model="workflow.activity">
          <field name="name">已完成</field>
          <field name="wkf_id" ref="workflow_bumen_qingjiadan"/>
          <field name="kind">function</field>
          <field name="action">do_complete()</field>
      </record>

      <!-- 工作流流转 -->
      <record id="transition_draft2confirm_one" model="workflow.transition">
          <field name="act_from" ref="activity_draft_one"/>
          <field name="act_to" ref="activity_confirm_one"/>
          <field name="signal">button_confirm_one</field>
      </record>
      <record id="transition_confirm2reject_one" model="workflow.transition">
          <field name="act_from" ref="activity_confirm_one"/>
          <field name="act_to" ref="activity_reject_one"/>
          <field name="signal">button_reject_one</field>
      </record>
      <record id="transition_confirm2complete_one" model="workflow.transition">
          <field name="act_from" ref="activity_confirm_one"/>
          <field name="act_to" ref="activity_complete_one"/>
          <field name="signal">button_complete_one</field>
      </record>

  </data>
</openerp>





发布了22 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/floracuu/article/details/79130492