Guest User

Untitled

a guest
Jun 18th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.50 KB | None | 0 0
  1. @api.multi
  2. def action_sm(self):
  3. u"""مدير القطاع."""
  4. for request in self:
  5. request.state = 'sm'
  6. # SM notification
  7. if request.employee_id.sector_manager_id:
  8. title = 'إشعار بوجود أمر شراء'
  9. message = 'لقد تم تقديم طلب شراء من طرف الموظف %s ' % request.employee_id.display_name
  10. request.env['base.notification'].create({'title': title,
  11. 'message': message,
  12. 'user_id': self.employee_id.sector_manager_id.user_id.id,
  13. 'type': 'purchase_request',
  14. 'res_id': request.id,
  15. 'res_model': request._name,
  16. 'res_method_accept': 'action_management_strategy',
  17. 'res_method_refuse': 'action_refuse',
  18. 'res_action': 'purchase_request.purchase_request_action'})
  19.  
  20. @api.multi
  21. @api.depends('employee_id')
  22. def _compute_sector_manager(self):
  23. """Check if current user is a sector manager of the employee."""
  24. for rec in self:
  25. is_sector_manager = False
  26. sector_manager_id = rec.employee_id.sector_manager_id
  27. if sector_manager_id and sector_manager_id.user_id.id == self._uid:
  28. is_sector_manager = True
  29. rec.is_sector_manager = is_sector_manager
  30.  
  31. class PurchaseRequest(models.Model):
  32. _name = 'purchase.request'
  33. _inherit = ['mail.thread']
  34. _rec_name = 'employee_id'
  35. name = fields.Char(string='رقم الطلب', readonly=1)
  36. date = fields.Date(string='تاريخ الطلب', required=1, default=fields.Datetime.now, readonly=1, states={'draft': [('readonly', 0)]})
  37. employee_id = fields.Many2one('hr.employee', string='صاحب الطلب', required=1, readonly=1, default=lambda self: self.env['hr.employee'].search([('user_id', '=', self._uid), ('emp_state', 'not in', ['suspended', 'terminated'])], limit=1))
  38. approver_id = fields.Many2one('hr.employee', string='مدير القطاع', readonly=1)
  39. type = fields.Selection([('material', 'مواد'),
  40. ('project', 'مشروع'),
  41. ('other', 'أخرى')], string='النوع', default='material', readonly=1, states={'draft': [('readonly', 0)]})
  42. description = fields.Text(string='الوصف', readonly=1, states={'draft': [('readonly', 0)]})
  43. duration = fields.Integer(string='مدة التنفيذ', required=1, readonly=1, states={'draft': [('readonly', 0)]})
  44. estimated_budget = fields.Float(string='السعر التقديري (بالريال)', default=0.0, readonly=1, states={'draft': [('readonly', 0)]})
  45. attachment_types = fields.Many2many('purchase.attachment.type', string='نوع المرفقات', readonly=1, states={'draft': [('readonly', 0)]})
  46. attachment_ids = fields.Many2many('ir.attachment', string='المرفقات', readonly=1, states={'draft': [('readonly', 0)]})
  47. is_sector_manager = fields.Boolean(string='Sector Manager', compute='_compute_sector_manager')
  48. is_current_user = fields.Boolean(string='Current User', compute='_compute_current_user')
  49.  
  50. <record id="rule_sm_hr_purchases" model="ir.rule">
  51. <field name="name">طلبات أوامر الشراء موظفي القطاع</field>
  52. <field name="model_id" ref="model_purchase_request"/>
  53. <field name="domain_force">['|',('employee_id.sector_manager_id.user_id','=',user.id),('employee_id.user_id','=',user.id)]</field>
  54. <field name="groups" eval="[(4, ref('hr_base.group_sector_manager'))]"/>
  55. </record>
  56.  
  57. <record id="purchase_request_1" model="purchase.request">
  58. <field name="type">material</field>
  59. <field name="duration">10</field>
  60. <field name="estimated_budget">500</field>
  61. <field name="description">شراء مع اصطحاب كراس الشروط</field>
  62. </record>
  63.  
  64. def test_sm_state(self):
  65. """Check state sm and notification."""
  66. # test state
  67. request = self.env.ref('purchase_request.purchase_request_1')
  68. request.action_sm()
  69. self.assertEqual('sm', request.state, "Error while executing 'action_sm'.")
  70. # test notification
  71. # notification_count = self.env['base.notification'].search_count([('user_id', '=', self.employee_id.sector_manager_id.user_id.id), ('res_id', '=', self.request.id)])
  72. # print(notification_count)
  73. #self.assertEqual('1', notification_count, "Error while sending 'notification'.")
Add Comment
Please, Sign In to add comment