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.

44 lines
1.5 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. def _get_sheet(self):
  9. return self._context.get("active_id")
  10. # current user as default value !
  11. #card = fields.Many2one("member.card", string="MemberCard")
  12. barcode = fields.Char(string="Barcode", required=True)
  13. user = fields.Many2one("res.partner", compute="_compute_user", string="User Name", readonly=True)
  14. @api.depends("barcode")
  15. def _compute_user(self):
  16. if self.barcode:
  17. card = self.env["member.card"].search([("barcode", "=", self.barcode)])
  18. if card:
  19. self.user = card[0].partner_id
  20. else:
  21. self.user = False
  22. # Is the "@api.multi" correct here ?
  23. @api.multi
  24. def validate_sheet(self):
  25. if not self.user:
  26. raise UserError("Please set a correct barcode.")
  27. sheet_id = self._context.get("active_id")
  28. sheet_model = self._context.get("active_model")
  29. sheet = self.env[sheet_model].browse(sheet_id)
  30. sheet.ensure_one()
  31. if not self.user.super:
  32. raise UserError(
  33. "You must be super-coop or admin to validate the sheet."
  34. )
  35. sheet.validated_by = self.user
  36. sheet.validate()
  37. return