project_service.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. # -*- coding: utf-8 -*-
  2. from openerp import models, fields, api, tools
  3. from openerp.exceptions import ValidationError, except_orm, Warning, RedirectWarning
  4. class ProjectService(models.Model):
  5. _name = 'project.service'
  6. name = fields.Many2one('product.service', string='Nombre', required=True)
  7. date_start = fields.Date(string='Start Date')
  8. date_due = fields.Date(string='Expiration Date')
  9. sequence = fields.Integer(string='Sequence')
  10. partner_id = fields.Many2one('res.partner', string='Customer')
  11. image_medium = fields.Binary('Binary File', related="name.logo")
  12. state = fields.Selection([('draft', 'Nuevo'),('open', 'En progreso'),
  13. ('cancelled', 'Cancelado'),
  14. ('pending', 'Pendiente'),
  15. ('close', 'Cerrado')],
  16. string='Status')
  17. color = fields.Integer(string='Color Index')
  18. project_service_task_ids = fields.One2many(
  19. 'project.service.task',
  20. 'project_id',
  21. )
  22. project_service_task_count = fields.Integer(
  23. string='Contador de tareas',
  24. compute='_get_project_service_task_count',
  25. )
  26. date_in = fields.Date(string='Fecha de entrada', default=fields.Date.today())
  27. date_out = fields.Date(string='Fecha de Salida')
  28. _defaults = {
  29. 'state': 'open',
  30. }
  31. @api.multi
  32. def unlink(self):
  33. for project in self:
  34. if project.state in ('close'):
  35. raise Warning('No puedes borrar un proyecto en estado cerrado')
  36. if len(project.project_service_task_ids) > 0:
  37. raise Warning('No puedes borrar un proyecto que tiene tareas')
  38. return super(ProjectService, self).unlink()
  39. def on_change_product(self):
  40. if not self.name:
  41. return {}
  42. model = self.pool.get('product.service').browse(self.name)
  43. return {
  44. 'value': {
  45. 'image_medium': model.logo,
  46. }
  47. }
  48. @api.one
  49. @api.depends('project_service_task_ids')
  50. def _get_project_service_task_count(self):
  51. self.project_service_task_count = len(self.project_service_task_ids)
  52. @api.one
  53. @api.onchange('name')
  54. def onchange_name(self):
  55. self.partner_id = self.name.partner_id.id