service.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. from django.db import models
  2. from dbsynce.models.resource import Resource
  3. from dbsynce.models.company import Company
  4. from dbsynce.models.service_category import ServiceCategory
  5. from tickets.models import Ticket
  6. from dbsynce.docs.database.service import Service as HelpTexts
  7. from core.settings_vars import METASERVICE_ID
  8. from dbsynce.lib import dicts
  9. class Service(models.Model):
  10. """
  11. service - спецификация услуги каждого конкретного поставщика
  12. (например, в рамках сервиса многие могут предоставлять услуги перевозки,
  13. но конкретный шаблон с конкретным тарифом относится к отдельному перевозчику)
  14. """
  15. # ID METASERVICE
  16. id_metaservice = models.PositiveIntegerField(
  17. default=METASERVICE_ID,
  18. help_text=HelpTexts.id_metaservice
  19. )
  20. codename = models.CharField(
  21. max_length=30,
  22. #help_text=HelpTexts.codename
  23. )
  24. requirements = models.CharField(
  25. max_length=300,
  26. #TODO fix default value!
  27. default="DSMPU",
  28. #help_text=HelpTexts.requirements
  29. )
  30. caption = models.CharField(
  31. max_length=255,
  32. null=True,
  33. #help_text=HelpTexts.caption
  34. )
  35. description = models.TextField(
  36. blank=True,
  37. #help_text=HelpTexts.description
  38. )
  39. resource_type = models.CharField(
  40. max_length=5,
  41. null=True,
  42. choices = list(dicts.resource_type_by_code.items()),
  43. #help_text=HelpTexts.resource_type
  44. )
  45. # DATA
  46. #price_type = models.ForeignKey(
  47. # ServiceCategory,
  48. # max_length=1,
  49. # help_text=HelpTexts.price_type
  50. #)
  51. price_km = models.DecimalField(
  52. max_digits=9,
  53. decimal_places=2,
  54. null=True,
  55. help_text=HelpTexts.price_km
  56. )
  57. price_min = models.DecimalField(
  58. max_digits=9,
  59. decimal_places=2,
  60. null=True,
  61. help_text=HelpTexts.price_min
  62. )
  63. price_amount = models.DecimalField(
  64. max_digits=9,
  65. decimal_places=2,
  66. null=True,
  67. help_text=HelpTexts.price_amount
  68. )
  69. company_comission = models.FloatField(
  70. help_text=HelpTexts.company_comission
  71. )
  72. requirements = models.CharField(
  73. max_length=50,
  74. help_text=HelpTexts.requirements
  75. )
  76. status = models.CharField(
  77. max_length=1,
  78. choices = list(dicts.activity_status_by_code.items()),
  79. help_text=HelpTexts.status,
  80. default="1",
  81. )
  82. # OTHER
  83. is_global = models.CharField(
  84. max_length=1,
  85. default="f",
  86. choices = list(dicts.is_global_by_code.items()),
  87. help_text=HelpTexts.is_global
  88. )
  89. is_visible = models.CharField(
  90. max_length=1,
  91. default="f",
  92. choices = list(dicts.is_visible_by_code.items()),
  93. help_text=HelpTexts.is_visible
  94. )
  95. # FK
  96. ticket_status = models.ForeignKey(
  97. Ticket,
  98. null=True,
  99. on_delete=models.DO_NOTHING,
  100. help_text=HelpTexts.ticket_status
  101. )
  102. #resource = models.ForeignKey(
  103. # Resource,
  104. # on_delete=models.DO_NOTHING,
  105. # blank=True,
  106. # null=True,
  107. # help_text=HelpTexts.resource
  108. #)
  109. company = models.ForeignKey(
  110. Company,
  111. on_delete=models.DO_NOTHING,
  112. blank=True,
  113. null=True,
  114. #help_text=HelpTexts.company
  115. )
  116. service_category = models.ForeignKey(
  117. ServiceCategory,
  118. on_delete=models.DO_NOTHING,
  119. help_text=HelpTexts.service_category
  120. )
  121. class Meta:
  122. db_table = "service"
  123. verbose_name = "Услуга"
  124. verbose_name_plural = "Услуги"