service.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. from .template import Template
  2. class Service():
  3. """
  4. service - спецификация услуги каждого конкретного поставщика
  5. (например, в рамках сервиса многие могут предоставлять услуги перевозки,
  6. но конкретный шаблон с конкретным тарифом относится к отдельному перевозчику)
  7. """
  8. id = models.IntegerField(
  9. primary_key=True
  10. )
  11. # ID METASERVICE
  12. id_metaservice = Template.id_metaservice
  13. # DATA
  14. price_alg = models.CharField(
  15. max_length=100,
  16. help_text="шаблон алгоритма расчета цены для оказываемой услуги (по этой переменной определяется, какую функцию для расчета цены вызывать)"
  17. )
  18. price_km = models.DecimalField(
  19. max_digits=9,
  20. decimal_places=2,
  21. help_text="значение параметра стоимости 1км данного поставщика для данного шаблона услуги"
  22. )
  23. price_min = models.DecimalField(
  24. max_digits=9,
  25. decimal_places=2,
  26. help_text="значение параметра стоимости 1мин данного поставщика для данного шаблона услуги"
  27. )
  28. price_amount = models.DecimalField(
  29. max_digits=9,
  30. decimal_places=2,
  31. help_text="значение параметра стоимости 1 услуги данного поставщика для данного шаблона услуги"
  32. )
  33. company_comission = models.FloatField(
  34. help_text="Коммисия сервиса"
  35. )
  36. requirements = models.CharField(
  37. max_length=150,
  38. help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным. Оно вставляется автоматом, в соответствии с профилем метасервиса. Далее, если кому-то из партнеров или пользователей надо строже - применяется более строгий вариант на данную связь."
  39. )
  40. service_status = models.CharField(
  41. max_length=150,
  42. help_text="статус спецификации типа услуги, принимает значения Online, Offline, Preorder with Gap. Online/offline выставляются по проверке параметров и желанию пользователя (например, если пользователь переключает себя online, но по какой-то причине ему такую услугу оказывать запрещено - оно не переключится, то есть надо перед сменой значения этого поля всегда запускать проверку)"
  43. )
  44. status = models.CharField(
  45. max_length=150,
  46. help_text="статус обработки заявки в системе заявок. активность на основе системы заяво"
  47. )
  48. # OTHER
  49. is_global = Template.is_global
  50. is_visible = Template.is_visible
  51. # FK
  52. ticket_status = models.ForeignKey(
  53. Ticket,
  54. on_delete=models.DO_NOTHING,
  55. help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю."
  56. )
  57. resource_id = models.ForeignKey(
  58. Resource,
  59. on_delete=models.DO_NOTHING,
  60. blank=True,
  61. null=True,
  62. help_text="ответственный за ресурс(не всегда). так как ресурсы сами услугу оказать не могут, а также один ресурс может быть представлен в виде разных услуг, то фактически с точки зрения смысла системы ресурс - это как неодушевленный пользователь. Без провайдера, который с его помощью оказывает услугу - никуда. Поле остается пустым, если сервис не предусматривает использование услуг. Стоит обратить внимание, что это не обязательно ответственный за ресурс. Например, за состояние автомобиля может быть ответственен пользователь (он и указывается в таблице со свойствами ресурса), а услугу доступа или перевозки может оказывать иное лицо."
  63. )
  64. servicetype_id = models.ForeignKey(
  65. ServiceType,
  66. on_delete=models.DO_NOTHING,
  67. help_text="тип оказываемой услуги по классификатору услуг сервиса"
  68. )