main.typ 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. // ПРИМЕР ДОГОВОРА. Текст является заготовкой и требует юридической проверки.
  2. #import "/.template/lib/index.typ": document, profiles, party, signer, attachment, attachment-set, load-company, empty-private-settings, private-company-media
  3. #let company-id = "scientia" // "scientia" | "technology" | "too"
  4. #let document-mode = "final" // "final" | "draft" | "clean-copy"
  5. #let use-private-assets = false // true — читать .private/settings.typ
  6. #let private-settings = if use-private-assets {
  7. import "/.private/settings.typ": settings
  8. settings
  9. } else {
  10. empty-private-settings
  11. }
  12. #let company-media = private-company-media(private-settings, company-id)
  13. #let company = load-company(
  14. company-id,
  15. logo: auto,
  16. signature: company-media.signature,
  17. stamp: company-media.stamp,
  18. )
  19. #let contractor = party(
  20. "contractor",
  21. "Исполнитель",
  22. company.legal.name,
  23. legal: company.legal,
  24. contacts: company.contacts,
  25. banking: company.banking,
  26. representative: signer(
  27. company.director.name,
  28. company.director.title,
  29. basis: "Устава",
  30. signature: company.resources.signature,
  31. stamp: company.resources.stamp,
  32. ),
  33. )
  34. #let customer = party(
  35. "customer",
  36. "Заказчик",
  37. "АО «Заказчик»",
  38. legal: (
  39. inn: "0000000000",
  40. kpp: "000000000",
  41. ogrn: "0000000000000",
  42. address: "620000, г. Екатеринбург, ул. Примерная, 1",
  43. ),
  44. contacts: (
  45. email: "customer@example.invalid",
  46. phone: "+7 (000) 000-00-00",
  47. ),
  48. banking: (
  49. bank: "Пример Банк",
  50. account: "00000000000000000000",
  51. correspondent-account: "00000000000000000000",
  52. bik: "000000000",
  53. ),
  54. representative: signer(
  55. "Иванов И.И.",
  56. "Генеральный директор",
  57. basis: "Устава",
  58. signature: none,
  59. stamp: none,
  60. ),
  61. )
  62. #let sections = (
  63. profiles.contract_section(
  64. "subject",
  65. "Предмет договора",
  66. [#include "chapters/10-subject.typ"],
  67. number: auto,
  68. level: 1,
  69. ),
  70. profiles.contract_section(
  71. "price",
  72. "Цена и порядок расчётов",
  73. [#include "chapters/20-price.typ"],
  74. number: auto,
  75. level: 1,
  76. ),
  77. profiles.contract_section(
  78. "responsibility",
  79. "Ответственность сторон",
  80. [#include "chapters/30-responsibility.typ"],
  81. number: auto,
  82. level: 1,
  83. ),
  84. )
  85. #let attachments = attachment-set(
  86. items: (
  87. attachment(
  88. "specification",
  89. "Техническое задание",
  90. [#include "chapters/99-appendices.typ"],
  91. subtitle: none,
  92. number: auto,
  93. outlined: true,
  94. ),
  95. ),
  96. numbering: "arabic",
  97. start: 1,
  98. )
  99. #document(
  100. [],
  101. company: company,
  102. profile: profiles.contract(
  103. number: "Д-001/2026",
  104. date: "01 января 2026 г.",
  105. place: "г. Екатеринбург",
  106. title: "Договор оказания услуг",
  107. parties: (contractor, customer),
  108. preamble: auto,
  109. sections: sections,
  110. attachments: attachments,
  111. ),
  112. options: (
  113. mode: document-mode,
  114. watermark: if document-mode == "draft" { "ЧЕРНОВИК" } else { none },
  115. media-policy: if document-mode == "final" { "placeholder" } else { "reserve-space" },
  116. diagnostics: true,
  117. ),
  118. )