[@ant] feat(blagorost): шаблон 1010 «Служебная записка по расходам программы» + протокол 1011

— 1010.ExpenseStatement переписан под бумажный шаблон 1010.СлужебнаяЗапискаПоРасходам.pdf (Action: project_name/component_name/deadline/total_amount/items[]/position/statement_number; Liquid-разметка по образцу 1005 InitProjectStatement).
— 1011.ExpenseDecision переписан как протокол решения совета по записке 1010 (по образцу 1006 InitProjectDecision; повестка ссылается на номер записки и состав затрат, решение фиксирует согласование списания по Фонду хозяйственной деятельности).
— Из ProgramExpensesManagementResolver/Service удалены дублирующие generator-мутации capitalGenerateProgramExpenseStatement/Decision: генерация теперь только через общие capitalGenerateExpenseStatement/Decision (тот же registry 1010/1011).

SDK: schema.gql + Zeus regenerated.
This commit is contained in:
coopops
2026-06-02 09:10:56 +00:00
parent 9102732b8b
commit d35029ad28
9 changed files with 287 additions and 149 deletions
-14
View File
@@ -7923,20 +7923,6 @@ type Mutation {
"""
capitalGenerateGetLoanStatement(data: GenerateDocumentInput!, options: GenerateDocumentOptionsInput): GeneratedDocument!
"""
Сгенерировать решение совета о расходе программы (registry 1013)
Требуемые роли: chairman, member.
"""
capitalGenerateProgramExpenseDecision(data: GenerateDocumentInput!, options: GenerateDocumentOptionsInput): GeneratedDocument!
"""
Сгенерировать заявление о расходе программы (registry 1012)
Требуемые роли: chairman, member.
"""
capitalGenerateProgramExpenseStatement(data: GenerateDocumentInput!, options: GenerateDocumentOptionsInput): GeneratedDocument!
"""
Сгенерировать заявление об инвестировании в программу благороста (без привязки к проекту)
@@ -1,13 +1,9 @@
import { Args, Mutation, Resolver } from '@nestjs/graphql';
import { UseGuards } from '@nestjs/common';
import { Throttle } from '@nestjs/throttler';
import { GqlJwtAuthGuard } from '~/application/auth/guards/graphql-jwt-auth.guard';
import { RolesGuard } from '~/application/auth/guards/roles.guard';
import { AuthRoles } from '~/application/auth/decorators/auth.decorator';
import { TransactionDTO } from '~/application/common/dto/transaction-result-response.dto';
import { GeneratedDocumentDTO } from '~/application/document/dto/generated-document.dto';
import { GenerateDocumentInputDTO } from '~/application/document/dto/generate-document-input.dto';
import { GenerateDocumentOptionsInputDTO } from '~/application/document/dto/generate-document-options-input.dto';
import { ProgramExpensesManagementService } from '../services/program-expenses-management.service';
import {
ApproveProgramExpenseInputDTO,
@@ -85,31 +81,4 @@ export class ProgramExpensesManagementResolver {
return this.service.topupProgramExpense(data);
}
@Mutation(() => GeneratedDocumentDTO, {
name: 'capitalGenerateProgramExpenseStatement',
description: 'Сгенерировать заявление о расходе программы (registry 1012)',
})
@Throttle({ default: { limit: 3, ttl: 60000 } })
@UseGuards(GqlJwtAuthGuard, RolesGuard)
@AuthRoles(['chairman', 'member'])
generateProgramExpenseStatement(
@Args('data') data: GenerateDocumentInputDTO,
@Args('options', { nullable: true }) options: GenerateDocumentOptionsInputDTO,
): Promise<GeneratedDocumentDTO> {
return this.service.generateProgramExpenseStatement(data, options);
}
@Mutation(() => GeneratedDocumentDTO, {
name: 'capitalGenerateProgramExpenseDecision',
description: 'Сгенерировать решение совета о расходе программы (registry 1013)',
})
@Throttle({ default: { limit: 3, ttl: 60000 } })
@UseGuards(GqlJwtAuthGuard, RolesGuard)
@AuthRoles(['chairman', 'member'])
generateProgramExpenseDecision(
@Args('data') data: GenerateDocumentInputDTO,
@Args('options', { nullable: true }) options: GenerateDocumentOptionsInputDTO,
): Promise<GeneratedDocumentDTO> {
return this.service.generateProgramExpenseDecision(data, options);
}
}
@@ -1,11 +1,6 @@
import { Injectable } from '@nestjs/common';
import { Cooperative } from 'cooptypes';
import type { TransactResult } from '@wharfkit/session';
import { ProgramExpensesManagementInteractor } from '../use-cases/program-expenses-management.interactor';
import { DocumentInteractor } from '~/application/document/interactors/document.interactor';
import { GenerateDocumentInputDTO } from '~/application/document/dto/generate-document-input.dto';
import { GenerateDocumentOptionsInputDTO } from '~/application/document/dto/generate-document-options-input.dto';
import { GeneratedDocumentDTO } from '~/application/document/dto/generated-document.dto';
import type {
ApproveProgramExpenseInputDTO,
AuthorizeProgramExpenseInputDTO,
@@ -17,13 +12,14 @@ import type {
/**
* Сервис уровня приложения для расходов программы Благорост (Эпик B).
*
* Генерация документов — через общие `capitalGenerateExpenseStatement` /
* `capitalGenerateExpenseDecision` (registry 1010/1011), см.
* `ExpensesManagementService`.
*/
@Injectable()
export class ProgramExpensesManagementService {
constructor(
private readonly interactor: ProgramExpensesManagementInteractor,
private readonly documentInteractor: DocumentInteractor,
) {}
constructor(private readonly interactor: ProgramExpensesManagementInteractor) {}
createProgramExpense(data: CreateProgramExpenseInputDTO): Promise<TransactResult> {
return this.interactor.createProgramExpense(data);
@@ -43,24 +39,4 @@ export class ProgramExpensesManagementService {
topupProgramExpense(data: TopupProgramExpensePoolInputDTO): Promise<TransactResult> {
return this.interactor.topupProgramExpense(data);
}
async generateProgramExpenseStatement(
data: GenerateDocumentInputDTO,
options: GenerateDocumentOptionsInputDTO,
): Promise<GeneratedDocumentDTO> {
return (await this.documentInteractor.generateDocument({
data: { ...data, registry_id: Cooperative.Registry.ExpenseStatement.registry_id },
options,
})) as GeneratedDocumentDTO;
}
async generateProgramExpenseDecision(
data: GenerateDocumentInputDTO,
options: GenerateDocumentOptionsInputDTO,
): Promise<GeneratedDocumentDTO> {
return (await this.documentInteractor.generateDocument({
data: { ...data, registry_id: Cooperative.Registry.ExpenseDecision.registry_id },
options,
})) as GeneratedDocumentDTO;
}
}
-10
View File
@@ -867,14 +867,6 @@ export const AllTypesProps: Record<string,any> = {
data:"GenerateDocumentInput",
options:"GenerateDocumentOptionsInput"
},
capitalGenerateProgramExpenseDecision:{
data:"GenerateDocumentInput",
options:"GenerateDocumentOptionsInput"
},
capitalGenerateProgramExpenseStatement:{
data:"GenerateDocumentInput",
options:"GenerateDocumentOptionsInput"
},
capitalGenerateProgramMoneyInvestStatement:{
data:"ProgramCapitalizationMoneyInvestStatementGenerateDocumentInput",
options:"GenerateDocumentOptionsInput"
@@ -3640,8 +3632,6 @@ export const ReturnTypes: Record<string,any> = {
capitalGenerateGenerationPropertyInvestStatement:"GeneratedDocument",
capitalGenerateGetLoanDecision:"GeneratedDocument",
capitalGenerateGetLoanStatement:"GeneratedDocument",
capitalGenerateProgramExpenseDecision:"GeneratedDocument",
capitalGenerateProgramExpenseStatement:"GeneratedDocument",
capitalGenerateProgramMoneyInvestStatement:"GeneratedDocument",
capitalGenerateProjectGenerationContract:"GeneratedDocument",
capitalGenerateRegistrationDocuments:"GenerateCapitalRegistrationDocumentsOutputDTO",
-20
View File
@@ -6523,8 +6523,6 @@ capitalGenerateGenerationPropertyInvestDecision?: [{ data: ValueTypes["GenerateD
capitalGenerateGenerationPropertyInvestStatement?: [{ data: ValueTypes["GenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateGetLoanDecision?: [{ data: ValueTypes["GenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateGetLoanStatement?: [{ data: ValueTypes["GenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateProgramExpenseDecision?: [{ data: ValueTypes["GenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateProgramExpenseStatement?: [{ data: ValueTypes["GenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateProgramMoneyInvestStatement?: [{ data: ValueTypes["ProgramCapitalizationMoneyInvestStatementGenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateProjectGenerationContract?: [{ data: ValueTypes["ProjectGenerationContractGenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateRegistrationDocuments?: [{ data: ValueTypes["GenerateCapitalRegistrationDocumentsInputDTO"] | Variable<any, string>},ValueTypes["GenerateCapitalRegistrationDocumentsOutputDTO"]],
@@ -14941,8 +14939,6 @@ capitalGenerateGenerationPropertyInvestDecision?: [{ data: ResolverInputTypes["G
capitalGenerateGenerationPropertyInvestStatement?: [{ data: ResolverInputTypes["GenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateGetLoanDecision?: [{ data: ResolverInputTypes["GenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateGetLoanStatement?: [{ data: ResolverInputTypes["GenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateProgramExpenseDecision?: [{ data: ResolverInputTypes["GenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateProgramExpenseStatement?: [{ data: ResolverInputTypes["GenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateProgramMoneyInvestStatement?: [{ data: ResolverInputTypes["ProgramCapitalizationMoneyInvestStatementGenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateProjectGenerationContract?: [{ data: ResolverInputTypes["ProjectGenerationContractGenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateRegistrationDocuments?: [{ data: ResolverInputTypes["GenerateCapitalRegistrationDocumentsInputDTO"]},ResolverInputTypes["GenerateCapitalRegistrationDocumentsOutputDTO"]],
@@ -23291,14 +23287,6 @@ export type ModelTypes = {
Требуемые роли: chairman, member. */
capitalGenerateGetLoanStatement: ModelTypes["GeneratedDocument"],
/** Сгенерировать решение совета о расходе программы (registry 1013)
Требуемые роли: chairman, member. */
capitalGenerateProgramExpenseDecision: ModelTypes["GeneratedDocument"],
/** Сгенерировать заявление о расходе программы (registry 1012)
Требуемые роли: chairman, member. */
capitalGenerateProgramExpenseStatement: ModelTypes["GeneratedDocument"],
/** Сгенерировать заявление об инвестировании в программу благороста (без привязки к проекту)
Требуемые роли: chairman, member, user. */
@@ -32342,14 +32330,6 @@ export type GraphQLTypes = {
Требуемые роли: chairman, member. */
capitalGenerateGetLoanStatement: GraphQLTypes["GeneratedDocument"],
/** Сгенерировать решение совета о расходе программы (registry 1013)
Требуемые роли: chairman, member. */
capitalGenerateProgramExpenseDecision: GraphQLTypes["GeneratedDocument"],
/** Сгенерировать заявление о расходе программы (registry 1012)
Требуемые роли: chairman, member. */
capitalGenerateProgramExpenseStatement: GraphQLTypes["GeneratedDocument"],
/** Сгенерировать заявление об инвестировании в программу благороста (без привязки к проекту)
Требуемые роли: chairman, member, user. */
@@ -1,22 +1,122 @@
import type { ICommonUser, ICooperativeData, IVars } from '../../model'
import type { IGenerate, IMetaDocument } from '../../document'
export const registry_id = 1010
// Модель действия для генерации
/**
* Интерфейс генерации служебной записки по расходам программы «Благорост».
* Соответствует бумажному шаблону 1010 (см. `~/blago/production/shared/1010.СлужебнаяЗапискаПоРасходам.pdf`).
*/
export interface Action extends IGenerate {
registry_id: number
statement_number: string
project_name: string
project_hash: string
component_name: string
component_hash: string
deadline: string
total_amount: string
items: string[]
position: string
}
export type Meta = IMetaDocument & Action
// Модель данных документа
export interface Model {
meta: IMetaDocument
coop: ICooperativeData
vars: IVars
user: ICommonUser
statement_number: string
project_name: string
project_hash: string
component_name: string
component_hash: string
deadline: string
total_amount: string
items: string[]
position: string
}
export const title = 'Заявление о расходах'
export const description = 'Форма заявления о произведенных расходах'
export const context = '<div class="digital-document"><div style="text-align: center"><h2>ЗАЯВЛЕНИЕ О РАСХОДАХ</h2></div><p>Прошу рассмотреть и утвердить произведенные расходы на нужды кооператива.</p><p>Подпись: Иван Иванович</p></div>'
export const title = 'Служебная записка по расходам программы Благорост'
export const description = 'Заявление пайщика в Совет кооператива о согласовании списания затрат по компоненту проекта из средств целевой программы «Благорост»'
export const translations = {}
export const exampleData = {}
export const context = `<style>
.digital-document { padding: 20px; white-space: pre-wrap; }
.digital-document p { margin: 0 0 8px 0; }
.header-right { text-align: right; }
.title { text-align: center; font-weight: bold; margin: 24px 0 16px 0; }
.items { padding-left: 32px; }
.items li { margin-bottom: 4px; }
.signature { display: flex; justify-content: space-between; margin-top: 32px; }
.signature .who { text-align: left; }
.signature .sig { text-align: right; }
</style>
<div class="digital-document">
<p class="header-right">{% trans 'addressee_council' %}<br/>{% trans 'addressee_coop_label' %} {{ vars.full_abbr }}<br/>"{{ vars.name }}"</p>
<p class="header-right">{% trans 'addressee_from' %} {{ user.full_name_or_short_name }}</p>
<p>{% trans 'date_label' %} {{ meta.created_at }}</p>
<p class="title">{% trans 'document_title', statement_number %}</p>
<p>{% trans 'preamble', component_name, project_name, deadline, total_amount %}</p>
<ol class="items">
{% for item in items %}<li>{{ item }}</li>
{% endfor %}
</ol>
<p>{% trans 'fund_clause' %}</p>
<div class="signature">
<div class="who">{{ user.full_name_or_short_name }}<br/>{{ position }}</div>
<div class="sig">{% trans 'signed_by_digital_signature' %}</div>
</div>
</div>`
export const translations = {
ru: {
addressee_council: 'В Совет Потребительского Кооператива',
addressee_coop_label: '',
addressee_from: 'от пайщика',
date_label: 'Дата:',
document_title: 'СЛУЖЕБНАЯ ЗАПИСКА № {0}',
preamble:
'Прошу согласовать списание затрат на реализацию Компонента "{0}", в рамках Проекта "{1}" в срок до {2}, согласно условий и из средств целевой потребительской программы "БЛАГОРОСТ" в общей сумме {3} руб., а именно:',
fund_clause: 'по Фонду хозяйственной деятельности.',
signed_by_digital_signature: 'Подписано электронной подписью',
},
en: {
addressee_council: 'To the Council of the Consumer Cooperative',
addressee_coop_label: '',
addressee_from: 'from the participant',
date_label: 'Date:',
document_title: 'SERVICE MEMO No. {0}',
preamble:
'I request approval of expenses for implementation of Component "{0}", within Project "{1}" by {2}, in accordance with terms and from funds of the targeted consumer program "BLAGOROST" in the total amount of {3} RUB, namely:',
fund_clause: 'from the Operating Activities Fund.',
signed_by_digital_signature: 'Signed with electronic signature',
},
}
export const exampleData = {
meta: {
created_at: '01.06.2026',
},
statement_number: '12',
project_name: 'Цифровой кооператив',
project_hash: 'B2C3D4E5F6789ABC',
component_name: 'Платёжный шлюз',
component_hash: 'A1B2C3D4E5F6789A',
deadline: '31.07.2026',
total_amount: '150 000',
items: [
'Оплата хостинга и доменных имён за июль 2026 г. — 30 000 руб.',
'Закупка SSL-сертификатов на 12 мес. — 20 000 руб.',
'Оплата работ подрядчика по интеграции — 100 000 руб.',
],
position: 'Председатель Совета',
vars: {
name: 'ВОСХОД',
full_abbr: 'Потребительский Кооператив',
},
user: {
full_name_or_short_name: 'Иванов Иван Иванович',
},
}
@@ -1,24 +1,191 @@
import type { IGenerate, IMetaDocument } from '../../document'
import type { IDecisionData, IGenerate, IMetaDocument } from '../../document'
import type { ICooperativeData, IVars } from '../../model'
export const registry_id = 1011
// Модель действия для генерации
/**
* Интерфейс генерации протокола решения совета по служебной записке о расходах
* программы «Благорост» (соответствует записке 1010).
*/
export interface Action extends IGenerate {
registry_id: number
request_id: number
decision_id: number
statement_number: string
project_name: string
project_hash: string
component_name: string
component_hash: string
deadline: string
total_amount: string
items: string[]
applicant_full_name: string
}
export type Meta = IMetaDocument & Action
// Модель данных документа
export interface Model {
coop: ICooperativeData
meta: IMetaDocument
decision: IDecisionData
vars: IVars
statement_number: string
project_name: string
project_hash: string
component_name: string
component_hash: string
deadline: string
total_amount: string
items: string[]
applicant_full_name: string
}
export const title = 'Решение совета о расходах'
export const description = 'Форма решения совета о произведенных расходах'
export const context = '<div class="digital-document"><h1>ПРОТОКОЛ № 1</h1><p>Собрания Совета кооператива ВОСХОД</p><p>Решение: Одобрить произведенные расходы пайщика Иван Иванович.</p><p>Подпись: Алексей Муравьев</p></div>'
export const title = 'Протокол решения совета по служебной записке о расходах программы Благорост'
export const description = 'Форма протокола решения совета по согласованию списания затрат по записке 1010 из средств программы «Благорост»'
export const translations = {}
export const exampleData = {}
export const context = `<style>
h1 { margin: 0; text-align: center; }
h3 { margin: 0; padding-top: 15px; }
.about { padding: 20px; }
.about p { margin: 0; }
.signature { padding-top: 20px; }
.digital-document { padding: 20px; white-space: pre-wrap; }
.subheader { padding-bottom: 20px; }
table { width: 100%; border-collapse: collapse; }
th, td { border: 1px solid #ccc; padding: 8px; text-align: left; word-wrap: break-word; overflow-wrap: break-word; }
th { background-color: #f4f4f4; width: 30%; }
.items { padding-left: 32px; margin: 0; }
.items li { margin-bottom: 4px; }
</style>
<div class="digital-document">
<h1 class="header">{% trans 'protocol_number', decision.id %}</h1>
<p style="text-align:center" class="subheader">{% trans 'council_meeting_name' %} {{ vars.full_abbr_genitive }} "{{ vars.name }}"</p>
<p style="text-align: right">{{ meta.created_at }}, {{ coop.city }}</p>
<table class="about">
<tbody>
<tr><th>{% trans 'meeting_format' %}</th><td>{% trans 'meeting_format_value' %}</td></tr>
<tr><th>{% trans 'meeting_place' %}</th><td>{{ coop.full_address }}</td></tr>
<tr><th>{% trans 'meeting_date' %}</th><td>{{ decision.date }}</td></tr>
<tr><th>{% trans 'opening_time' %}</th><td>{{ decision.time }}</td></tr>
</tbody>
</table>
<h3>{% trans 'council_members' %}</h3>
<table>
<tbody>
{% for member in coop.members %}
<tr><th>{% if member.is_chairman %}{% trans 'chairman_of_the_council' %}{% else %}{% trans 'member_of_the_council' %}{% endif %}</th><td>{{ member.last_name }} {{ member.first_name }} {{ member.middle_name }}</td></tr>
{% endfor %}
</tbody>
</table>
<h3>{% trans 'meeting_legality' %}</h3>
<p>{% trans 'voting_results', decision.voters_percent %} {% trans 'quorum' %} {% trans 'chairman_of_the_meeting', coop.chairman.last_name, coop.chairman.first_name, coop.chairman.middle_name %}.</p>
<h3>{% trans 'agenda' %}</h3>
<table>
<tbody>
<tr><th>№</th><td>{% trans 'question' %}</td></tr>
<tr><th>1</th><td>{% trans 'expense_question', statement_number, applicant_full_name, component_name, project_name, deadline, total_amount %}</td></tr>
</tbody>
</table>
<h3>{% trans 'expense_items_label' %}</h3>
<ol class="items">
{% for item in items %}<li>{{ item }}</li>
{% endfor %}
</ol>
<h3>{% trans 'voting' %}</h3>
<p>{% trans 'vote_results' %}</p>
<table>
<tbody>
<tr><th>{% trans 'votes_for' %}</th><td>{{ decision.votes_for }}</td></tr>
<tr><th>{% trans 'votes_against' %}</th><td>{{ decision.votes_against }}</td></tr>
<tr><th>{% trans 'votes_abstained' %}</th><td>{{ decision.votes_abstained }}</td></tr>
</tbody>
</table>
<h3>{% trans 'decision_made' %}</h3>
<table>
<tbody>
<tr><th>№</th><td>{% trans 'decision' %}</td></tr>
<tr><th>1</th><td>{% trans 'expense_decision', component_name, project_name, deadline, total_amount %}</td></tr>
</tbody>
</table>
<hr>
<p>{% trans 'closing_time', decision.time %}</p>
<div class="signature"><p>{% trans 'signature' %}</p><p>{% trans 'chairman' %} {{ coop.chairman.last_name }} {{ coop.chairman.first_name }} {{ coop.chairman.middle_name }}</p></div>
</div>`
export const translations = {
ru: {
meeting_format: 'Форма',
meeting_format_value: 'Заочная',
meeting_place: 'Место',
meeting_date: 'Дата',
opening_time: 'Время открытия',
council_members: 'ЧЛЕНЫ СОВЕТА',
voting_results: 'Количество голосов составляет {0}% от общего числа членов Совета.',
quorum: 'Кворум для решения поставленных на повестку дня вопросов имеется.',
meeting_legality: 'СОБРАНИЕ ПРАВОМОЧНО',
chairman_of_the_meeting: 'Председатель собрания совета: {0} {1} {2}',
agenda: 'ПОВЕСТКА ДНЯ',
question: 'Вопрос',
expense_question:
'О согласовании служебной записки № {0} от {1} по списанию затрат на реализацию Компонента "{2}" в рамках Проекта "{3}" в срок до {4} из средств программы "БЛАГОРОСТ" в общей сумме {5} руб.',
expense_items_label: 'СОСТАВ ЗАТРАТ',
voting: 'ГОЛОСОВАНИЕ',
vote_results: 'По первому вопросу повестки дня проголосовали:',
votes_for: 'ЗА',
votes_against: 'ПРОТИВ',
votes_abstained: 'ВОЗДЕРЖАЛСЯ',
decision_made: 'РЕШИЛИ',
decision: 'Решение',
expense_decision:
'Согласовать списание затрат на реализацию Компонента "{0}" в рамках Проекта "{1}" в срок до {2} в общей сумме {3} руб. из средств целевой потребительской программы "БЛАГОРОСТ" по Фонду хозяйственной деятельности.',
closing_time: 'Время закрытия собрания совета: {0}.',
protocol_number: 'ПРОТОКОЛ № {0}',
council_meeting_name: 'Собрания Совета',
chairman_of_the_council: 'Председатель совета',
member_of_the_council: 'Член совета',
signature: 'Документ подписан электронной подписью.',
chairman: 'Председатель',
},
}
export const exampleData = {
meta: {
created_at: '02.06.2026 00:01',
},
statement_number: '12',
applicant_full_name: 'Иванов Иван Иванович',
project_name: 'Цифровой кооператив',
project_hash: 'B2C3D4E5F6789ABC',
component_name: 'Платёжный шлюз',
component_hash: 'A1B2C3D4E5F6789A',
deadline: '31.07.2026',
total_amount: '150 000',
items: [
'Оплата хостинга и доменных имён за июль 2026 г. — 30 000 руб.',
'Закупка SSL-сертификатов на 12 мес. — 20 000 руб.',
'Оплата работ подрядчика по интеграции — 100 000 руб.',
],
coop: {
city: 'Москва',
full_address: 'Смольная 3-84',
chairman: {
last_name: 'Муравьев',
first_name: 'Алексей',
middle_name: 'Николаевич',
},
},
decision: {
time: '00:01',
date: '02.06.2026',
votes_for: '3',
votes_against: '0',
votes_abstained: '0',
voters_percent: '100',
id: '12',
},
vars: {
full_abbr_genitive: 'потребительского кооператива',
name: 'ВОСХОД',
},
}
-10
View File
@@ -867,14 +867,6 @@ export const AllTypesProps: Record<string,any> = {
data:"GenerateDocumentInput",
options:"GenerateDocumentOptionsInput"
},
capitalGenerateProgramExpenseDecision:{
data:"GenerateDocumentInput",
options:"GenerateDocumentOptionsInput"
},
capitalGenerateProgramExpenseStatement:{
data:"GenerateDocumentInput",
options:"GenerateDocumentOptionsInput"
},
capitalGenerateProgramMoneyInvestStatement:{
data:"ProgramCapitalizationMoneyInvestStatementGenerateDocumentInput",
options:"GenerateDocumentOptionsInput"
@@ -3640,8 +3632,6 @@ export const ReturnTypes: Record<string,any> = {
capitalGenerateGenerationPropertyInvestStatement:"GeneratedDocument",
capitalGenerateGetLoanDecision:"GeneratedDocument",
capitalGenerateGetLoanStatement:"GeneratedDocument",
capitalGenerateProgramExpenseDecision:"GeneratedDocument",
capitalGenerateProgramExpenseStatement:"GeneratedDocument",
capitalGenerateProgramMoneyInvestStatement:"GeneratedDocument",
capitalGenerateProjectGenerationContract:"GeneratedDocument",
capitalGenerateRegistrationDocuments:"GenerateCapitalRegistrationDocumentsOutputDTO",
-20
View File
@@ -6523,8 +6523,6 @@ capitalGenerateGenerationPropertyInvestDecision?: [{ data: ValueTypes["GenerateD
capitalGenerateGenerationPropertyInvestStatement?: [{ data: ValueTypes["GenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateGetLoanDecision?: [{ data: ValueTypes["GenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateGetLoanStatement?: [{ data: ValueTypes["GenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateProgramExpenseDecision?: [{ data: ValueTypes["GenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateProgramExpenseStatement?: [{ data: ValueTypes["GenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateProgramMoneyInvestStatement?: [{ data: ValueTypes["ProgramCapitalizationMoneyInvestStatementGenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateProjectGenerationContract?: [{ data: ValueTypes["ProjectGenerationContractGenerateDocumentInput"] | Variable<any, string>, options?: ValueTypes["GenerateDocumentOptionsInput"] | undefined | null | Variable<any, string>},ValueTypes["GeneratedDocument"]],
capitalGenerateRegistrationDocuments?: [{ data: ValueTypes["GenerateCapitalRegistrationDocumentsInputDTO"] | Variable<any, string>},ValueTypes["GenerateCapitalRegistrationDocumentsOutputDTO"]],
@@ -14941,8 +14939,6 @@ capitalGenerateGenerationPropertyInvestDecision?: [{ data: ResolverInputTypes["G
capitalGenerateGenerationPropertyInvestStatement?: [{ data: ResolverInputTypes["GenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateGetLoanDecision?: [{ data: ResolverInputTypes["GenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateGetLoanStatement?: [{ data: ResolverInputTypes["GenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateProgramExpenseDecision?: [{ data: ResolverInputTypes["GenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateProgramExpenseStatement?: [{ data: ResolverInputTypes["GenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateProgramMoneyInvestStatement?: [{ data: ResolverInputTypes["ProgramCapitalizationMoneyInvestStatementGenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateProjectGenerationContract?: [{ data: ResolverInputTypes["ProjectGenerationContractGenerateDocumentInput"], options?: ResolverInputTypes["GenerateDocumentOptionsInput"] | undefined | null},ResolverInputTypes["GeneratedDocument"]],
capitalGenerateRegistrationDocuments?: [{ data: ResolverInputTypes["GenerateCapitalRegistrationDocumentsInputDTO"]},ResolverInputTypes["GenerateCapitalRegistrationDocumentsOutputDTO"]],
@@ -23291,14 +23287,6 @@ export type ModelTypes = {
Требуемые роли: chairman, member. */
capitalGenerateGetLoanStatement: ModelTypes["GeneratedDocument"],
/** Сгенерировать решение совета о расходе программы (registry 1013)
Требуемые роли: chairman, member. */
capitalGenerateProgramExpenseDecision: ModelTypes["GeneratedDocument"],
/** Сгенерировать заявление о расходе программы (registry 1012)
Требуемые роли: chairman, member. */
capitalGenerateProgramExpenseStatement: ModelTypes["GeneratedDocument"],
/** Сгенерировать заявление об инвестировании в программу благороста (без привязки к проекту)
Требуемые роли: chairman, member, user. */
@@ -32342,14 +32330,6 @@ export type GraphQLTypes = {
Требуемые роли: chairman, member. */
capitalGenerateGetLoanStatement: GraphQLTypes["GeneratedDocument"],
/** Сгенерировать решение совета о расходе программы (registry 1013)
Требуемые роли: chairman, member. */
capitalGenerateProgramExpenseDecision: GraphQLTypes["GeneratedDocument"],
/** Сгенерировать заявление о расходе программы (registry 1012)
Требуемые роли: chairman, member. */
capitalGenerateProgramExpenseStatement: GraphQLTypes["GeneratedDocument"],
/** Сгенерировать заявление об инвестировании в программу благороста (без привязки к проекту)
Требуемые роли: chairman, member, user. */