company.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. from django.db import models
  2. from django.urls import reverse
  3. from django.contrib.auth import get_user_model
  4. from django.contrib.contenttypes.models import ContentType
  5. from tickets.models import Ticket
  6. class Company(models.Model):
  7. legal_name = models.CharField(
  8. "Название организации",
  9. max_length=150,
  10. help_text="Настоящее имя юридического лица"
  11. )
  12. # FIXME: Нет уверенности, что после удаления пользователя следует оставлять `models.DO_NOTHING`
  13. repr_id =models.ForeignKey(
  14. get_user_model(),
  15. blank=True,
  16. verbose_name="Представитель организации",
  17. on_delete=models.DO_NOTHING,
  18. help_text="Уникальный идентификатор представителя компании"
  19. )
  20. requirements = models.CharField(
  21. "Ограничения",
  22. max_length=150,
  23. default="DS01y04y05y06y07yMPUCS13MPUB",
  24. help_text="Код необходимый для того, чтобы ресурс мог стать активным"
  25. )
  26. status = models.CharField(
  27. "Статус",
  28. max_length=150,
  29. default="deactivated",
  30. help_text="Cтатус обработки заявки"
  31. )
  32. # FIXME: Нет уверенности, что после удаления заявки следует оставлять `models.DO_NOTHING`
  33. ticket_status = models.ForeignKey(
  34. Ticket,
  35. on_delete=models.SET_NULL,
  36. blank=True,
  37. null=True,
  38. help_text="ID заявки, привязанной к текущей записи",
  39. verbose_name="Связанный тикет"
  40. )
  41. inn = models.CharField(
  42. "ИНН компании",
  43. max_length=12,
  44. unique=True
  45. )
  46. kpp = models.CharField(
  47. "КПП компании",
  48. max_length=9
  49. )
  50. ogrn = models.CharField(
  51. "ОГРН компании",
  52. max_length=13
  53. )
  54. bank_name = models.CharField(
  55. "Название банка",
  56. max_length=150,
  57. help_text="Название банка с расчетным счетом"
  58. )
  59. bik = models.CharField(
  60. "БИК компании",
  61. max_length=9
  62. )
  63. rs = models.CharField(
  64. "Расчетный счет",
  65. max_length=50
  66. )
  67. ks = models.CharField(
  68. "Корреспондентский счет",
  69. max_length=50,
  70. help_text="Корреспондентский счет (счет, открываемый банковской организацией в подразделении самого банка)"
  71. )
  72. address = models.CharField(
  73. "Юридический адрес",
  74. max_length=150
  75. )
  76. is_global = models.CharField(
  77. max_length=1,
  78. default="f",
  79. help_text="Доступно ли для хранения в глобальном сервисе / Нужна синхронизация данных"
  80. )
  81. is_visible = models.CharField(
  82. max_length=1,
  83. default="f",
  84. help_text="Доступно ли для планирования в цепочке с другими услугами в глобальном сервисе"
  85. )
  86. # FIXME: id_metaservice должно принимать текущий идентификатор метасервиса, на котором происходит создание записи
  87. id_metaservice = models.PositiveBigIntegerField(
  88. default=1,
  89. help_text="Уникальный идентификатор метасервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких метасервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер."
  90. )
  91. def get_admin_url(self):
  92. """
  93. Возвращает URL-адрес текущего объекта в административной панели Django.
  94. Returns:
  95. str: URL-адрес текущего объекта в административной панели Django
  96. """
  97. content_type = ContentType.objects.get_for_model(self.__class__)
  98. return reverse("admin:%s_%s_change" % (content_type.app_label, content_type.model), args=(self.id,))
  99. def deactivate(self):
  100. self.status = "deactivated"
  101. self.save()
  102. class Meta:
  103. db_table = "company"
  104. verbose_name = "Компания"
  105. verbose_name_plural = "Компании"