You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.4 KiB

  1. # -*- coding: utf-8 -*-
  2. from openerp import models, fields, api, exceptions, _
  3. from openerp.exceptions import UserError, ValidationError
  4. class ValidateAttendanceSheet(models.TransientModel):
  5. _name = "beesdoo.shift.sheet.validate"
  6. _description = """Check the user name and validate sheet.
  7. Useless for users in group_cooperative_admin"""
  8. #card = fields.Many2one("member.card", string="MemberCard")
  9. barcode = fields.Char(string="Barcode", required=True)
  10. user = fields.Many2one("res.partner", compute="_compute_user", string="User Name", readonly=True)
  11. @api.depends("barcode")
  12. def _compute_user(self):
  13. if self.barcode:
  14. card = self.env["member.card"].search([("barcode", "=", self.barcode)])
  15. if card:
  16. self.user = card[0].partner_id
  17. else:
  18. self.user = False
  19. # Is the "@api.multi" correct here ?
  20. @api.multi
  21. def validate_sheet(self):
  22. if not self.user:
  23. raise UserError("Please set a correct barcode.")
  24. sheet_id = self._context.get("active_id")
  25. sheet_model = self._context.get("active_model")
  26. sheet = self.env[sheet_model].browse(sheet_id)
  27. if not self.user.super:
  28. raise UserError(
  29. "You must be super-coop or admin to validate the sheet."
  30. )
  31. sheet.validated_by = self.user
  32. sheet.validate()
  33. return