company.py 4.6 KB

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