service.py 3.8 KB

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