company.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. """
  6. Company - это таблица с партнерами сервисов. Партнер сервиса -
  7. юридическое лицо или ИП, которое непосредственно организует работу с
  8. исполнителями и отвечает перед клиентами и перед сервисом за качество
  9. оказанных услуг. Юридически это лица, фактически оказывающие услуги
  10. по договору.
  11. """
  12. id = models.IntegerField(
  13. primary_key=True
  14. )
  15. # ID METASERVICE
  16. # FIXME: id_metaservice должно принимать текущий идентификатор метасервиса, на котором происходит создание записи
  17. id_metaservice = models.PositiveIntegerField(
  18. default=1,
  19. help_text="Уникальный идентификатор метасервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких метасервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер."
  20. )
  21. # DATA
  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. legal_name = models.CharField(
  35. "Название организации",
  36. max_length=150,
  37. help_text="Настоящее имя юридического лица"
  38. )
  39. address = models.CharField(
  40. "Юридический адрес",
  41. max_length=150
  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=15
  55. )
  56. bank_name = models.CharField(
  57. "Название банка",
  58. max_length=150,
  59. help_text="Название банка с расчетным счетом"
  60. )
  61. bik = models.CharField(
  62. "БИК компании",
  63. max_length=11
  64. )
  65. rs = models.CharField(
  66. "Расчетный счет",
  67. max_length=20
  68. )
  69. ks = models.CharField(
  70. "Корреспондентский счет",
  71. max_length=20,
  72. help_text="Корреспондентский счет (счет, открываемый банковской организацией в подразделении самого банка)"
  73. )
  74. tax_method = models.IntegerField(
  75. help_text="Система налогооблажения"
  76. )
  77. # OTHER
  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. # FK
  89. repr =models.ForeignKey(
  90. get_user_model(),
  91. blank=True,
  92. verbose_name="Представитель организации",
  93. on_delete=models.DO_NOTHING,
  94. help_text="Уникальный идентификатор представителя компании"
  95. )
  96. ticket_status = models.ForeignKey(
  97. Ticket,
  98. on_delete=models.SET_NULL,
  99. blank=True,
  100. null=True,
  101. help_text="ID заявки, привязанной к текущей записи",
  102. verbose_name="Связанный тикет"
  103. )
  104. def deactivate(self):
  105. self.status = "deactivated"
  106. self.save()
  107. class Meta:
  108. db_table = "company"
  109. verbose_name = "Компания"
  110. verbose_name_plural = "Компании"