Анализ эффективности вложений денежных средств в РКО
Содержание.
стр.
Введение. 3
Глава 1. Функционирование рынка РКО. 4
Участники рынка. 4
Процедура торгов. 4
Первичное размещение (аукцион). 4
Вторичные торги. 5
Погашение. 5
Документооборот. 5
Отчеты, предоставляемые биржей. 5
Отчеты, предоставляемые Дилерами. 5
Глава 2. Задачи Дилера на рынке РКО. 7
Ведение бэк-офиса. 7
Оптимизация вложений собственных средств. 7
Управление средствами инвесторов. 7
Исполнение поручений Инвесторов. 8
Анализ эффективности вложений. 8
Глава 3. Задачи формирования и ведения собственного портфеля облигаций Дилера. 9
Формирование портфеля облигаций. 9
Ликвидность портфеля. 9
Период инвестирования. 9
Инвестирование с целью максимизации дохода. 10
Безрисковое инвестирование. 10
Анализ эффективности вложений денежных средств в РКО. 11
Постановка задачи. 11
Метод решения. 11
Экономическая интерпретация метода. 13
Экономическая интерпретация полученных результатов. 14
Применение результатов исследования для построения методов эффективного управления портфелем облигаций. 14
Заключение. 16
Список литературы. 17
Приложения. 19
Приложение № 1. Программа автоматизации учета РКО. 19
Приложение 1.1. Руководство пользователя. 19
Приложение 1.2. Текст программы. 21
Приложение № 1.3. Журнал оборотов. 64
Приложение № 1.4. Журнал лицевого учета. 65
Приложение № 1.5. Мемориальный ордер. 66
Приложение № 1.6. Отчет инвестору о совершенных сделках. 67
Приложение № 1.7. Структура пртфеля в разрезе по бумагам. 68
Приложение № 1.8. Структура портфеля обобщенная. 69
Приложение № 1.9. Биржевая информация. 70
Приложение № 1.10. Еженедельный отчет в депозитарий. 71
Приложение № 1.11. Ежемесячный отчет в депозитарий. 72
Приложение № 2. Программа анализа эффективности вложений в РКО. 73
Приложение 2.1. Текст программы. 73
Приложение № 2.2. Диаграмма сравнения доходности портфеля и рынка. 82
Приложение № 2.3. Диаграмма сравнения индекса портфеля и рынка. 83
Приложение № 3. Входные статистические данные. 84
Приложение 3.1. Информация о бумагах. 84
Приложение 3.2. Информация о сделках. 85
Приложение 3.3. Информация о движениях денежных средств. 91
Приложение 3.4. Биржевая информация. 93
Введение.
Республиканские краткосрочные бескупонные облигации (РКО) выпускаются Министерством Финансов Республики Татарстан. Рынок РКО существует с 1995 года. За три года он стал важнейшим сегментом в экономике Татарстана, сравнимый по объему заимствований с рынком межбанковских кредитов и иностранной валюты.
Гарантом надежности вложений в РКО является Правительство РТ. РКО — ликвидный и наиболее доходный инструмент финансового рынка. Доходность по РКО выше, чем по банковским вкладам и депозитным сертификатам, а также государственным ценным бумагам. Имея льготное налогообложение, РКО является наиболее привлекательным вложением свободных финансовых ресурсов.
Вкладывать средства в РКО могут как юридические, так и физические лица. Доход по этим облигациям получается от разницы между ценой покупки и продажи, т.е. дисконт.
РКО обращаются в бездокументарной форме и учитываются записями по счетам депо. Продажа и покупка производится на фондовой бирже. В связи с этим возникает задача учета операций с РКО как со стороны биржи, так и со стороны организаций-инвесторов.
На данном сегменте фондового рынка можно производить как краткосрочные спекулятивные операции, так и долгосрочные вложения свободных собственных или заемных средств. Таким образом, актуальной является задача оценки эффективности вложений в РКО.
В данной дипломной работе решаются две задачи
1. Автоматизация учета операций с РКО;
2. Оценка эффективности вложений в РКО.
На основе результатов второй задачи можно будет сделать некоторые выводы для оптимизации принятия решений при вложении в бескупонные облигации.
Глава 1. Функционирование рынка РКО.
Республиканские краткосрочные облигации обращаются на Волжско-Камской бирже (ВКБ) посредством проведения электронных торгов. В функционировании рынка РКО можно выделить следующие моменты
1. Участники рынка.
2. Процедура торгов.
3. Документооборот.
Участники рынка.
Участники рынка разделяются на две категории Дилеры и инвесторы.
Дилер — любое юридическое лицо, профессиональным участником рынка ценных бумаг, заключившее договор на выполнение функций по обслуживанию операций с облигациями с коммунальным предприятием Дирекция по работе с ценными бумагами». Дилер может заключать сделки с РКО от своего имени и за свой счет, а также может выполнять функции финансового брокера при заключении сделок от своего имени за счет и по поручению инвестора.
Инвестор — любое юридическое или физическое лицо, заключившее с Дилером договор брокерского обслуживания на рынке РКО. Инвестор может приобретать облигации только через Дилеров, уплачивая при этом комиссию.
Процедура торгов.
В ходе торгов РКО проходят следующие этапы
Первичное размещение;
Вторичные торги;
Погашение.
Первичное размещение (аукцион).
Аукцион — это первичное размещение облигаций, проводимого Организатором (Коммунальное предприятие «Дирекция по работе с ценными бумагами», агент Министерства финансов РТ по обслуживанию выпусков облигаций) по поручению Министерства финансов Республики Татарстан. Они проводятся по специальному графику. Дата аукциона, предельный объем выпуска, место и время проведения аукциона объявляются Организатором. Контрагентами в этой процедуре являются Министерство Финансов с одной стороны, и Дилеры — другой. В ходе аукциона Дилеры подают заявки на покупку облигаций. После подачи всех заявок до установленного времени, Министерство Финансов устанавливает цену отсечения — минимальная цена, по которой он готов продать облигации. Все заявки, поданные выше цены отсечения, удовлетворяются, заявки, поданные с более низкой ценой, не удовлетворяются.
Вторичные торги.
Обращение облигаций на вторичных торгах осуществляется в форме сделок купли-продажи через Торговую систему (организация, уполномоченная на основании договора с Министерством финансов РТ и двусторонних договоров с Дилерами обеспечивать процедуру заключения сделок купли-продажи путем предоставления технических средств). Контрагентами в этой процедуре выступают Дилеры. Дилеры вводят в Торговую систему посредством рабочих терминалов заявки на покупку или продажу облигаций. Если цены заявок совпадают, то они удовлетворяются, т.е. сделка считается совершенной.
Погашение.
Погашение облигаций производится в определенный день Министерством Финансов по номинальной стоимости.
Документооборот.
РКО обращаются в электронной форме. Учет по ним ведется посредством записей на счетах депо, открытых в Волжско-Камской трастовой компании (ВКТК). В связи с этим возникают вопросы отражения учета операций в документальной форме. В ходе обращения РКО можно выделить следующие типы документов
Отчеты, предоставляемые биржей;
Отчеты, предоставляемые Дилерами.
Отчеты, предоставляемые биржей.
По завершении торгов биржа предоставляет каждому Дилеру следующие документы
Биржевая информация;
Выписка из протокола торгов;
Обязательства Дилера по итогам торгов;
Выписка из реестра сделок.
Отчеты, предоставляемые Дилерами.
В процессе участия в торгах Дилеры обязаны предоставлять следующие документы бирже
Еженедельный отчет;
Ежемесячный отчет;
Другие документы, необходимые для допуска Дилера к торгам.
После совершения сделки купли-продажи по поручению Инвестора, Дилер обязан предоставить Инвестору отчет о совершенной сделке в форме, установленной в договоре по брокерскому обслуживанию и выписку со счета депо. Дилер также может предоставить биржевую информацию и оказывать консультационные услуги.
Глава 2. Задачи Дилера на рынке РКО.
Являясь активным участником рынка РКО, Дилер сталкивается со следующими задачами
1. Ведение бэк-офиса;
2. Оптимизация вложений собственных средств;
3. Управление средствами Инвесторов;
4. Исполнение поручений Инвесторов;
5. Анализ эффективности вложений.
Ведение бэк-офиса.
Бэк-офис — система электронного учета операций с ценными бумагами. Он включает в себя очень широкий спектр функциональных вопросов
Ведение журнала лицевого учета и журнала оборотов (Приложение № 1.3, 1.4);
Формирование и печать мемориальных ордеров (Приложение №1.5);
Формирование и печать отчетов Инвесторам (Приложение №1.6);
Формирование и печать собственного портфеля Дилера (Приложение № 1.7, 1.8);
Формирование и печать биржевой информации (Приложение №1.9);
Формирование и печать еженедельного и ежемесячного отчетов (Приложение №1.10, 1.11).
Все перечисленные задачи реализованы в представленной программе автоматизированного учета операций с РКО.
Оптимизация вложений собственных средств.
Под оптимизацией вложений собственных средств понимается создание портфеля облигаций, который удовлетворял бы поставленной инвестиционной или спекулятивной задаче.
Для формирования портфеля можно исходить из следующих факторов
Ликвидность;
«Время жизни»;
Получение наибольшего дохода;
Использование РКО в залоговых операциях для получения межбанковских кредитов.
Управление средствами инвесторов.
Дилер может сам управлять средствами Инвесторов, если был заключен договор трастового обслуживания. При этом он может брать комиссию как с отдельной сделки, так и с дохода, полученного Инвестором. В данном случае актуальной является задача оптимального управления портфелем Инвестора и оценка эффективности деятельности Дилера.
Исполнение поручений Инвесторов.
Дилер, являясь также и брокером на рынке РКО, совершает операции купли-продажи от своего имени, но по поручению Инвестора и за его счет. В этом случае Дилер должен вести учет приема заявок Инвесторов, исполнение поручений на бирже и формирование отчетов. За эти услуги он получает комиссионное вознаграждение.
Анализ эффективности вложений.
Данная задача является одной из наиболее сложных и необходимых. Определение метода анализа — нетривиальная задача. В Главе 3 рассмотрены две методики анализа эффективности вложений собственных средств в облигации.
Глава 3. Задачи формирования и ведения собственного портфеля облигаций Дилера.
В процессе управления портфелем облигаций Дилер ставит перед собой следующие задачи
формирование портфеля облигаций;
анализ эффективности вложений денежных средств.
Формирование портфеля облигаций.
В процессе участия в торгах Дилер инвестирует свободные денежные средства в облигации, создавая при этом портфель, состоящий из разных серий РКО, отличающиеся тем, что имеют разные сроки до погашения.
Спецификой портфеля, состоящего из РКО, могут являться следующие моменты
ликвидность портфеля;
период инвестирования;
инвестирование с целью максимизации дохода;
безрисковое инвестирование.
Ликвидность портфеля.
При инвестировании средств в РКО необходимо учитывать следующий момент. Денежные средства Дилеров, инвестируемые в облигации на вторичных торгах, часто превышают объемы торгов по какой-либо отдельной серии облигации. В связи с этим возникает вопрос ликвидности портфеля. Как показывает практика фондового рынка, облигации с наименьшим сроком погашения более ликвидные, чем те, которые имеют более длительный срок до погашения. Но, с другой стороны, облигации с меньшим сроком до погашения имеют и меньшую доходность. Таким образом, при продаже легче всего продать облигации с меньшим сроком до погашения, а купить те, которые имеют более длительный срок до погашения.
Период инвестирования.
Дилер при инвестировании сталкивается и со следующей задачей период инвестирования. Так как ликвидность рынка напрямую зависит от срока до погашения облигации, то с этим приходится диверсифицировать портфеля по срокам погашения облигаций. Причем необходимо выбрать наилучшую стратегию, зависящую от целей инвестирования. Если целью инвестирования является получения максимального дохода за продолжительный период времени, то можно инвестировать средства в наиболее доходные серии облигаций. В случае если целью инвестирования является краткосрочная спекуляция, то наиболее оптимальной стратегией в данном случае является покупка серий облигаций со сроком погашения, близким к установленному сроку инвестирования; в этом случае минимизируется риск невозможности продажи облигаций на вторичном рынке.
Инвестирование с целью максимизации дохода.
В случае если целью инвестирования является максимизация дохода, причем срок инвестирования не фиксирован, т.е. неизвестен период инвестирования, Дилер сталкивается с двумя противоречивыми факторами доходность и ликвидность. В связи с этим возникают задачи оптимального управления портфелем облигаций. Методы, которые применяют Дилеры, являются их собственными разработками (ноу-хау). Существуют множество публикаций в финансово-экономической литературе по оптимизации вложений в бескупонные облигации, но предложенные методы либо содержат в себе неверные предпосылки при построении метода оптимизации, либо содержат упрощения, после чего модель становится неприменима на практике.
Безрисковое инвестирование.
В целях получения дохода, но также минимизации риска извлечения денежных средств из портфеля, можно формировать портфеля с помощью диверсификации по срокам погашения серий облигаций. Облигации, по определению, являясь долговыми обязательствами, имеют срок погашения, т.е. срок, в который инвестор получает номинал облигации, поэтому о риске вложений приходится говорить лишь с точки зрения периода вложения.
Анализ эффективности вложений денежных средств в РКО.
Постановка задачи.
Анализ эффективности вложения денежных в РКО можно разделить на анализ внутреннего управления портфелем облигаций и внешнего.
Внутреннее управление — это оценка изменения индекса портфеля в сравнении с индексом рынка.
Внешнее управление — это оценка изменения средневзвешенной доходности к погашению портфеля в сравнении со средневзвешенной доходностью к погашению рынка.
Таким образом, возникает задача сравнения управления портфелем облигаций относительно рынка путем построения некоторого показателя, который адекватно отражал бы динамику изменения портфеля в сравнении с динамикой изменения рынка.
Метод решения.
Предлагаются методики для решения поставленных задач путем построения следующих показателей
Индекс портфеля и рынка (для оценки внутреннего управления).
Индекс строится следующим образом.
Для портфеля
(1)
(1.1)
(1.2)
где
значение индекса в момент t
коэффициент
стоимость портфеля по средневзвешенным ценам на момент закрытия торгов в момент t
сумма дополнительных вложений (извлечений) денежных средств в портфель в момент t, причем, если
дополнительные вложения
сумма изъятых денег
средневзвешенная цена i серии на момент закрытия торгов
количество бумаг i серии в портфеле
количество серий бумаг, обращающихся на рынке
Для рынка при расчете коэффициента и переменные будут иметь следующий смысл
объем капитализации рынка по средневзвешенным ценам на момент t
сумма размещенных (погашенных) средств на аукционе
сумма размещенных средств на аукционе
сумма погашенных средств на аукционе
количество бумаг i серии, обращающихся на рынке
Данный индекс показывает, насколько эффективнее было внутреннее управление портфелем по сравнению с рыночной конъюктурой. Причем, если индекс портфеля меньше индекса рынка, то управление было неэффективным.
Эффективная норма доходности к погашению портфеля и рынка (для оценки внешнего управления).
Показатель строится следующим образом(2 метода)
В теории расчета применяется следующий метод
(2)
где
(2.1)
сумма i расходного платежа
сумма i доходного платежа
количество дней между i расходным и доходным платежами
эффективная норма доходности, которая и определяется из решения данного уравнения
количество расходных и доходных платежей
Уравнение (2) решается численными методами, причем решение единственно.
Из-за неудобства решения уравнения на практике обычно применяют другой метод нахождения
(2.2)
где
доходность к погашению i бумаги
количество i бумаги
дней до погашения i бумаги
рассчитывается следующим образом
(2.3)
где
цена покупки i бумаги в % от номинала (расходный платеж)
цена погашения в % от номинала (доходный платеж)
количество дней в году
дней до погашения i бумаги
Данный метод более удобен при расчетах и дает более быстрые результаты, вследствие чего он был применен при построении данного показателя.
Экономическая интерпретация метода.
Анализ с помощью методики построения индекса портфеля и рынка включает в себя следующие моменты
Индекс построен таким образом, что он адекватно отражает управление портфелем и поведение рынка.
По построенному индексу можно определить доходность к приобретению портфеля и рынка, что бывает необходимым для сравнения вложений в РКО с другими инвестиционными операциями. Доходность к приобретению — это доходность на день расчета, которую можно получить при продаже портфеля облигаций.
Кроме того, можно оценить поведение рынка РКО в сравнении с другими рынками. Методика сравнения может быть различной и их построение требует учета специфики различных рынков.
Второй вид анализа — вычисление эффективной нормы доходности портфеля и рынка.
Предложенный метод отражает поведение рынка и доходность к погашению портфеля в текущий момент времени. Воздействовать на этот показатель можно путем добавления или извлечения денежных средств в портфель облигаций. При этом, эффективное внешнее управление напрямую зависит от объемов добавления/извлечения денежных средств и сложившейся конъюнктурой рынка в день проведения операций, т.е. другими словами, должно быть своевременное проведение данных операций.
Этот вид анализа можно применить также для эффективного распределения свободных ресурсов между различными инвестиционными рынками, оценивая и сравнивая доходности различных рынков и направляя свободные денежные средства на наиболее доходные секторы.
Экономическая интерпретация полученных результатов.
В данной работе сравнивался портфель РКО банка и рынок РКО с февраля по май месяц 1997 года.
При анализе путем построения индекса было выявлено следующее. График, построенный на основе индекса рынка (Приложение №2.3), имеет положительный наклон. Это обусловлено тем, что рынок в то время имел тенденцию к снижению доходности, поэтому, индекс, отражающий доходность к приобретению, увеличивался. В приведенном примере, основанном на реальных данных, внутреннее управление портфелем было эффективным по сравнению с рынком до начала мая месяца.
На графике сравнения доходности портфеля и рынка (Приложение № 2.2) можно видеть падение доходности к погашению портфеля в связи со сложившейся рыночной конъюнктурой. При анализе с помощью данного показателя можно сказать, что апрель месяц был наиболее благоприятным для дополнительного инвестирования денежных средств.
Применение результатов исследования для построения методов эффективного управления портфелем облигаций.
Результаты исследования с помощью применения предложенных методик позволяют сделать основополагающие выводы для построения методов эффективного управления портфелем облигаций. В данном случае, под эффективным управлением понимается получение наибольшего дохода за определенный промежуток времени.
Для построения методик эффективного управления портфелем облигаций необходимо учитывать следующее
управление должно давать максимальный эффект;
в управлении нужно учитывать возможность ввода-вывода денежных средств;
необходимость попытки прогнозирования ситуации при изменении рыночной конъюнктуры;
управление портфелем с точки зрения как доходности, так и ликвидности;
Полученные результаты также позволяют оценить степень влияния человека (в данном случае — трейдер) на управление портфелем облигаций. От методов, применяемых им для принятия решений, зависит эффективность управления портфелем облигаций. В этом случае бывает целесообразным контроль за управлением портфелем со стороны вышестоящего начальства без применения обременительных методик расчетов, с другой стороны, можно поощрять трейдера за успешное управление портфелем облигаций. Следовательно, предложенный индекс можно применить для оценки управления портфелем облигаций трейдером.
Другая задача, которою можно решить на основе полученных результатов — это задача доверительного управления (траст). Основываясь на результатах, можно предложить следующую схему взимания платы за траст со стороны управляющего с клиента. Сравнивается индекс рынка и индекс портфеля облигаций, находящегося в трасте. В случае, если индекс портфеля превосходит индекс рынка, то дополнительный доход, получающийся от более эффективного управления портфелем облигаций, делится в определенной пропорции между управляющим и клиентом. Другой вариант управляющий гарантирует клиенту определенный процент, а плата управляющему рассчитывается по определенной методике исходя из гарантированного дохода и дохода, полученного свыше.
Заключение.
В работе решены следующие ключевые моменты, необходимые для работы с Республиканскими краткосрочными бескупонными облигациями (РКО)
Автоматизация учета операций с РКО
Оценка эффективности вложений в РКО
Описано функционирование рынка РКО, поставлены задачи, которые решает Дилер на рынке.
Решением задачи автоматизации операций с РКО является программный продукт, написанный на Visual Basic for Microsoft Excel, который позволяет вести полный документооборот Дилера на рынке РКО. Результатами автоматизации являются стандартизованные выходные формы, необходимые для ведения бухгалтерского учета РКО и предоставления различных отчетов.
При решении задачи оценки эффективности вложений в РКО применялись статьи, содержащие информацию об различных методиках расчета доходности облигаций. Результатом решения данной задачи является разработка собственной методики анализа. Методика проверена на реальных численных данных за определенный период функционирования рынка РКО. Конечным продуктом метода является программа, написанная на Visual Basic for Microsoft Excel, позволяющая делать анализ эффективности управления портфелем облигаций. Приведенный метод анализа также можно применить в дальнейшем для построения методов эффективного управления портфелем облигаций.
Обе поставленные задачи внедрены и используются на практике.
Список литературы.
1. Башарин Г.П. «Начала финансовой математики» Москва, «ИНФРА-М» 1997 г.
2. Бродский В., Горлин Ю. «Модель действительной доходности ГКО для клиентов» журнал «Рынок ценных бумаг» №1 1994 г.
3. Ветров А. «Как построить агрегированные показатели доходности рынка ГКО/ОФЗ» журнал «Рынок ценных бумаг» №5 1996 г.
4. Горелов М. «Построение оптимального портфеля ГКО как максимизировать прибыль» журнал «Рынок ценных бумаг» №6 1996 г.
5. Горелов М., Никифоров Л. «О границах применимости принципа рыночного момента» журнал «Рынок ценных бумаг» №16 1996 г.
6. Горелов М. «Что нельзя упускать при построении модели управления портфелем ГКО» журнал «Рынок ценных бумаг» №11 1996 г.
7. Горлин Ю. «Оценка доходности операций с ГКО вырианты биржевой игры» журнал «Рынок ценных бумаг» №6 1994 г.
8. Грядовая О. «Доходность как критерий оптимизации решений по управлению портфелем ГКО» журнал «Рынок ценных бумаг» №15 1994 г.
9. Губерниев В. «ГКО в оптимальном портфеле» журнал «Рынок ценных бумаг» №15 1996 г.
10. Демушкина Е. «Сделки с государственными ценными бумагами» журнал «Рынок ценных бумаг» №23 1996 г.
11. Екушов А. «Как превысить среднюю доходность рынка ГКО» журнал «Рынок ценных бумаг» №11 1997 г.
12. Ивахин А. «Как преодолеть ограничения в моделировании рынка ГКО» журнал «Рынок ценных бумаг» №12 1996 г.
13. Комягин В.Б. «Программирование в Excel 5 и Excel 7 на языке Visual Basic» Москва, «Радио и связь» 1996 г.
14. Кузнецов М., Нифатов П. «Денежный поток и торговые операции на рынке ГКО» журнал «Рынок ценных бумаг» №4 1996 г.
15. Мешкова Н. Кулакова Ю. «Прогнозирование тренда цены ГКО» журнал «Рынок ценных бумаг» №6 1996 г.
16. Михеев А. «Играем на заемные средства» журнал «Рынок ценных бумаг» №3 1997 г.
17. Остроушко О., Гришин О. «Доходность и дюрация портфеля ГКО» журнал «Рынок ценных бумаг» №5 1996г.
18. Положение об обслуживании и обращении выпусков РКО РТ(утверждено постановлением Кабинета Министров РТ от 21 апреля 1995 г. № 238)
19. «Потоки платежей,виды облигаций и вычисление доходности» Москва «Консультационное агентство «Соболев» 1996 г.
20. «Рынок ценных бумаг» учебник под ред. Галанова В.А., Басова А.И. Москва «Финансы и статистика» 1996 г.
21. Суменкова Е.В. «Операции с ценными бумагами» Москва «Перспектива» 1997 г.
22. Ушаков П. «О взаимосвязях индикаторов рынка ГКО» журнал «Рынок ценных бумаг» №3 1997 г.
23. Черкасов В.Е. «Практическое руководство по финансово-экономическим расчетам» Москва «Метаинформ» 1995 г.
24. Черновский А. «Как оценить эффективноть управления портфелем ГКО» журнал «Рынок ценных бумаг» №24 1996 г.
25. Четыркин Е. «Методы финансовых и коммерческих расчетов»
Приложения.
Приложение № 1. Программа автоматизации учета РКО.
Приложение 1.1. Руководство пользователя.
Данная программа написана на Microsoft Visual Basic for Excel. Для запуска программы необходимо открыть файл sprav.xls в Excel, после чего в линейке меню появится дополнительный пункт меню «Справочник», состоящий из следующих разделов
Дата
Просмотр остатков
Печать
Депозитарий
Портфель
Биржевая информация
Отчеты клиентам
Отчет недельный
Отчет месячный
Журнал лицевого учета
Окно
Бумаги
Сделки
Клиенты
Биржа
Рассмотрим подробнее каждое из пунктов меню.
Дата — изменение даты для работы.
Просмотр остатков — просмотр остатков по Клиентам.
Печать — распечатка на принтер следующих данных
Депозитарий — печать депозитария.
Портфель — печать собственного портфеля Дилера.
Биржевая информация — печать биржевой информации.
Отчеты клиентам — печать отчетов Клиентам.
Отчет недельный — печать еженедельного отчета, предоставляемого в депозитарий.
Отчет месячный — печать ежемесячного отчета, предоставляемого в депозитарий.
Журнал лицевого учета — печать журнала лицевого учета и журнала оборотов Дилера.
Окно — выбор следующих окон для ввода информации
Бумаги — выбор окна ввода информации об обращающихся на рынке бумагах.
Сделки — выбор окна ввода сделок.
Клиенты — выбор окна ввода Клиентов.
Биржа — выбор окна ввода биржевой информации.
Результатом работы программы являются Приложения №1.3-1.12
Приложение 1.2. Текст программы.
Option Explicit
Option Base 1
Public CurDate As Date
Public DepoArray() As Integer
Public BumArray(); BumArrayV() As Integer
Public Button; Просмотр; ExitVar; Покупка; Продажа; Погашение As Boolean
Const DilerConst = 1000900000
Const FilialConst = 1000999999
Const ConstMaxBum = 100 ‘ максимальное кол-во бумаг(выпусков)
Const MaxCount = 1000 ‘ максимальное кол-во сделок по 1-ой бумаге
Const S192 = «50202»
Const S904 = «47423»
Const S960 = «70102»
Const S970 = «70204»
Const SR970 = «70204»
Sub Auto_Open()
ActiveWindow.WindowState = xlMaximized
CurDate = Date
Worksheets(«Врем»).Cells(1; 4) = CurDate
Application.OnWindow = «CancelChanges»
Application.Windows(«Sprav.xls»).OnWindow = «Start»
End Sub
Sub Auto_Close()
MenuBars(xlModule).Reset
MenuBars(xlWorksheet).Reset
Application.OnWindow = «»
Application.Windows(«Sprav.xls»).OnWindow = «»
ActiveWorkbook.Save
End Sub
Sub Start()
Call CreateMenu
Application.DisplayFullScreen = False
ActiveWindow.WindowState = xlMaximized
CurDate = Date
Worksheets(«Врем»).Cells(1; 4) = CurDate
End Sub
Sub CancelChanges()
MenuBars(xlModule).Reset
MenuBars(xlWorksheet).Reset
End Sub
Sub CreateMenu()
MenuBars(xlModule).Reset
MenuBars(xlWorksheet).Reset
With MenuBars(xlModule).Menus.Add(«&Справочник»)
.MenuItems.Add «&Дата»; «DateChange»
.MenuItems.Add «П&росмотр остатков»; «PrintOst»
.MenuItems.AddMenu («&Печать»)
.MenuItems(«&Печать»).MenuItems.Add «&Депозитарий»; «PrintDepo»
.MenuItems(«&Печать»).MenuItems.Add «&Портфель»; «PrintPortfel»
.MenuItems(«&Печать»).MenuItems.Add «&Биржевая информация»; «PrintBirgaInfo»
.MenuItems(«&Печать»).MenuItems.Add «Отчеты &клиентам»; «PrintOtchClient»
.MenuItems(«&Печать»).MenuItems.Add «Отчет &недельный»; «PrintOtchWeek»
.MenuItems(«&Печать»).MenuItems.Add «Отчет &месячный»; «PrintOtchMonth»
.MenuItems(«&Печать»).MenuItems.Add «Журнал &лицевого учета»; «PrintMagazine»
.MenuItems.AddMenu («&Окно»)
.MenuItems(«&Окно»).MenuItems.Add «&Бумаги»; «ViewPaper»
.MenuItems(«&Окно»).MenuItems.Add «&Сделки»; «ViewDeal»
.MenuItems(«&Окно»).MenuItems.Add «&Клиенты»; «ViewClient»
.MenuItems(«&Окно»).MenuItems.Add «Би&ржа»; «ViewBirga»
.MenuItems(«&Окно»).MenuItems.Add «&Остатки 812»; «ViewOst812»
.MenuItems(«&Окно»).MenuItems.Add «О&статки биржа»; «ViewOstBirga»
.MenuItems(«&Окно»).MenuItems.Add «&Защита»; «ViewProgram»
End With
With MenuBars(xlWorksheet).Menus.Add(«&Справочник»)
.MenuItems.Add «&Дата»; «DateChange»
.MenuItems.Add «П&росмотр остатков»; «PrintOst»
.MenuItems.AddMenu («&Печать»)
.MenuItems(«&Печать»).MenuItems.Add «&Депозитарий»; «PrintDepo»
.MenuItems(«&Печать»).MenuItems.Add «&Портфель»; «PrintPortfel»
.MenuItems(«&Печать»).MenuItems.Add «&Биржевая информация»; «PrintBirgaInfo»
.MenuItems(«&Печать»).MenuItems.Add «Отчеты &клиентам»; «PrintOtchClient»
.MenuItems(«&Печать»).MenuItems.Add «Отчет &недельный»; «PrintOtchWeek»
.MenuItems(«&Печать»).MenuItems.Add «Отчет &месячный»; «PrintOtchMonth»
.MenuItems(«&Печать»).MenuItems.Add «Журнал &лицевого учета»; «PrintMagazine»
.MenuItems.AddMenu («&Окно»)
.MenuItems(«&Окно»).MenuItems.Add «&Бумаги»; «ViewPaper»
.MenuItems(«&Окно»).MenuItems.Add «&Сделки»; «ViewDeal»
.MenuItems(«&Окно»).MenuItems.Add «&Клиенты»; «ViewClient»
.MenuItems(«&Окно»).MenuItems.Add «Би&ржа»; «ViewBirga»
.MenuItems(«&Окно»).MenuItems.Add «&Остатки 812»; «ViewOst812»
.MenuItems(«&Окно»).MenuItems.Add «О&статки биржа»; «ViewOstBirga»
.MenuItems(«&Окно»).MenuItems.Add «&Защита»; «ViewProgram»
End With
End Sub
Sub ViewPaper()
Sheets(«Бумаги»).Select
Call EndOf
End Sub
Sub ViewDeal()
Sheets(«Сделки»).Select
Call EndOf
End Sub
Sub ViewClient()
Sheets(«Клиенты»).Select
Call EndOf
End Sub
Sub ViewBirga()
Sheets(«Биржа»).Select
Call EndOf
End Sub
Sub ViewOst812()
Sheets(«Остатки812»).Select
Call EndOf
End Sub
Sub ViewOstBirga()
Sheets(«ОстаткиБиржа»).Select
Call EndOf
End Sub
Sub ViewProgram()
Sheets(«Защита»).Select
End Sub
‘—————————— Печать Депозитария —————
Sub PrintDepo()
Dim BumNum; CliNum; i; j; k; a; n; Sign; s As Integer
Dim Flag As Boolean
Dim Code As Long
Dim Str As String
Dim DepoFil() As Integer
Dim Num As Integer
CurDate = Worksheets(«Врем»).Cells(1; 4)
Call FormBum
Sheets(«Депо»).Select
BumNum = Worksheets(«Врем»).Cells(1; 2)
Cells(3; 5) = Worksheets(«Врем»).Cells(1; 4)
Cells(3; 5).NumberFormat = «Д ММММ, ГГГГ»
Cells(3; 5).HorizontalAlignment = xlCenterAcrossSelection
Cells(3; 5).Font.Bold = True
Num = 9
For i = 1 To BumNum
Cells(6; i + 1) = Worksheets(«Врем»).Cells(i; 1)
Cells(6; i + 1).Font.Bold = True
Cells(6; i + 1).Interior.ColorIndex = 40
Cells(Num + 1; i + 1).Interior.ColorIndex = 15
Cells(Num + 1; i + 1) = «»
Cells(Num; i + 1).Interior.ColorIndex = 40
Cells(Num; i + 1) = «»
Cells(5; i + 1).Interior.ColorIndex = 40
Next
Cells(Num; 1).Interior.ColorIndex = 40
Cells(Num; 1) = «Итого»
Cells(Num; 1).Font.Bold = True
Cells(Num; 1).Font.Italic = True
Cells(Num; 1).HorizontalAlignment = xlCenter
Cells(Num + 1; 1) = «»
Cells(Num + 1; 1).Interior.ColorIndex = 15
CliNum = Worksheets(«Врем»).Cells(1; 3)
ReDim DepoArray(CliNum; BumNum)
ReDim DepoFil(BumNum)
a = 2
While Worksheets(«Сделки»).Cells(a; 1) <> Empty
i = 1
While Worksheets(«Клиенты»).Cells(i + 1; 2) <> _
Worksheets(«Сделки»).Cells(a; 2)
If Worksheets(«Клиенты»).Cells(i + 1; 2) = Empty Then
MsgBox «Неверный номер клиента в Окне ‘Сделки’ строка » + CStr(a)
Sheets(«Сделки»).Select
Cells(a; 2).Select
Exit Sub
End If
i = i + 1
Wend
k = 0
For j = 1 To BumNum
If Worksheets(«Врем»).Cells(j; 1) = Worksheets(«Сделки»).Cells(a; 3) Then
k = j
Exit For
End If
Next
If k = 0 Then
a = a + 1
GoTo NNN
End If
If Not IsEmpty(Worksheets(«Сделки»).Cells(a; 4)) Then
Sign = 1
Else
Sign = -1
End If
If CurDate >= Worksheets(«Сделки»).Cells(a; 1) Then
If Worksheets(«Сделки»).Cells(a; 2) = FilialConst Then
DepoFil(k) = DepoFil(k) + Sign * Worksheets(«Сделки»).Cells(a; 6)
Else
DepoArray(i; k) = DepoArray(i; k) + Sign * Worksheets(«Сделки»).Cells(a; 6)
End If
End If
a = a + 1
NNN
Wend
n = 7
For i = 1 To CliNum
Flag = False
For k = 1 To BumNum
If DepoArray(i; k) > 0 Then Flag = True
Next
If Flag Then
Str = Format(Worksheets(«Клиенты»).Cells(i + 1; 2); «0000000000»)
Str = Right(Str; 5)
Cells(n; 1).NumberFormat = «@»
Cells(n; 1).Font.Bold = True
Cells(n; 1).HorizontalAlignment = xlCenter
Cells(n; 1).Font.Italic = False
Cells(n; 1).Interior.ColorIndex = 2
Cells(n; 1) = Str
For k = 1 To BumNum
If DepoArray(i; k) <> 0 Then
Cells(n; k + 1) = DepoArray(i; k)
Else
Cells(n; k + 1) = «»
End If
Cells(n; k + 1).Font.Bold = False
Cells(n; k + 1).Font.Italic = False
Cells(n; k + 1).Interior.ColorIndex = 2
Next
If n = 7 Then
n = n + 4
Else
n = n + 1
End If
End If
Next
‘расчет по филиалу
Cells(8; 1) = «Филиал»
Cells(8; 1).Font.Bold = True
Cells(8; 1).HorizontalAlignment = xlCenter
Cells(8; 1).Font.Italic = False
Cells(8; 1).Interior.ColorIndex = 2
For k = 1 To BumNum
If DepoFil(k) <> 0 Then
Cells(8; k + 1) = DepoFil(k)
Else
Cells(8; k + 1) = «»
End If
Cells(8; k + 1).Font.Bold = False
Cells(8; k + 1).Font.Italic = False
Cells(8; k + 1).Interior.ColorIndex = 2
Next
For i = 1 To BumNum
Cells(n; i + 1).Interior.ColorIndex = 40
s = 0
For k = 11 To n — 1
s = s + Cells(k; i + 1)
Next
Cells(n; i + 1).Value = s
Next
For i = 1 To BumNum
Cells(9; i + 1) = Cells(7; i + 1) + Cells(8; i + 1)
Next
Cells(n; 1).Interior.ColorIndex = 40
Cells(n; 1) = «Итого 9998»
Cells(n; 1).Font.Bold = True
Cells(n; 1).Font.Italic = True
Range(«A1 Z200»).Borders(xlLeft).LineStyle = xlNone
Range(«A1 Z200»).Borders(xlRight).LineStyle = xlNone
Range(«A1 Z200»).Borders(xlTop).LineStyle = xlNone
Range(«A1 Z200»).Borders(xlBottom).LineStyle = xlNone
Range(«A1 Z200»).BorderAround LineStyle =xlNone
Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlLeft).Weight = xlThin
Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlRight).Weight = xlThin
Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlTop).Weight = xlThin
Range(Cells(5; 1); Cells(n; BumNum + 1)).Borders(xlBottom).Weight = xlThin
Range(Cells(5; 1); Cells(n; BumNum + 1)).BorderAround Weight =xlMedium
Range(Cells(n + 1; 1); Cells(100; 30)).Delete shift =xlToLeft
Range(Cells(1; BumNum + 2); Cells(100; 30)).Delete shift =xlToLeft
If DialogPrint(«Депо»; 1) Then Exit Sub
Call EditOstBirga(DilerConst)
End Sub
‘——————————— Печать Отчеты клиентам ————
Sub PrintOtchClient()
Dim Sheet; Ost812 As Object
Dim i; j; d; a; Col; m; MM; NN; MMM; k; b; q As Long
Dim FlagBuy; FlagCell; FlagDeal; FlagDepo As Boolean
Dim CliNum As Long
Dim ComStr; StrComS As String
Dim BumNum; z; z1; Index As Integer
Dim s; sum; SumBuy; Ost; SumCom; ComBirga; ComDiler; ComSum As Double
Dim Com As Double
Dim OstIn; OstOut; OstBegin; OstEnd As Double
Dim RowNum As Long
Dim OstInDate; OstOutDate As String
Dim DoFlag As Boolean
Dim Auk As Boolean
Set Sheet = Worksheets(«Сделки»)
Sheet.Range(«A2»).Sort Key1 =Sheet.Range(«A2»); Order1 =xlAscending; _
Key2 =Sheet.Range(«B2»); Order2 =xlAscending; _
Key3 =Sheet.Range(«D2»); Order3 =xlAscending; _
Header =xlYes; OrderCustom =1; _
MatchCase =False; Orientation =xlTopToBottom
CurDate = Worksheets(«Врем»).Cells(1; 4)
Worksheets(«ОтчетыИнвесторам»).Select
i = 2
FlagDeal = False
FlagBuy = True
FlagCell = True
NN = 29 ‘ начало
m = NN
Range(Cells(NN — 1; 2); Cells(NN + 200; 6)).Delete shift =xlToLeft
Rows(CStr(NN — 1) + » » + CStr(NN — 1)).RowHeight = 28
Rows(CStr(NN — 1) + » » + CStr(NN — 1)).WrapText = True
Rows(CStr(NN — 1) + » » + CStr(NN — 1)).HorizontalAlignment = xlCenter
Rows(CStr(NN — 1) + » » + CStr(NN — 1)).VerticalAlignment = xlBottom
Cells(NN — 1; 2) = «№ выпуска»
Cells(NN — 1; 3) = «Дата погашения»
Cells(NN — 1; 4) = «Цена сделки»
Cells(NN — 1; 5) = «Количество»
Cells(NN — 1; 6) = «Сумма сделки»
Cells(NN — 3; 3) = «Совершенные сделки на рынке РКО»
Cells(NN — 3; 3).Font.Bold = True
sum = 0
SumBuy = 0
SumCom = 0
ComBirga = 0
Call FormBum
BumNum = Worksheets(«Врем»).Cells(1; 2)
ReDim BumArray(BumNum)
ReDim BumArrayV(BumNum)
Index = CInt(InputBox(«Введите номер 1-го ордера»))
Do While Sheet.Cells(i; 1) <> Empty
If Sheet.Cells(i; 1) = CurDate And Sheet.Cells(i; 2) <> DilerConst Then
FlagDeal = True
If FlagBuy And Sheet.Cells(i; 4) <> Empty Then
Покупка = True
CliNum = Sheet.Cells(i; 2)
Cells(m; 2) = «Покупка»
Cells(m; 2).HorizontalAlignment = xlLeft
Range(Cells(m; 2); Cells(m; 6)).Interior.ColorIndex = 15
m = m + 1
MM = m
FlagBuy = False
End If
If FlagCell And Sheet.Cells(i; 4) = Empty Then
If Not FlagBuy Then
s = 0
Col = 0
SumCom = 0
ComBirga = 0
For a = MM To m — 1
Cells(a; 6) = Cells(a; 4) * Cells(a; 5) * 10
If Cells(a; 4) <> 100 Then
SumCom = SumCom + Cells(a; 4) * Cells(a; 5) * 10
ComBirga = ComBirga + _
CDbl(Format(Cells(a; 4) * Cells(a; 5) * 0,1 * Worksheets(«Инфо»).Cells(1; 2) + 0,001; «0,00»))
Else
Погашение = True
End If
Cells(a; 6).NumberFormat = «# ###»
s = s + Cells(a; 6)
Col = Col + Cells(a; 5)
Next a
sum = sum + s
SumBuy = s
Cells(m; 6) = s
Cells(m; 6).NumberFormat = «# ###»
Cells(m; 5) = Col
Cells(m; 2) = «Итого»
m = m + 1
End If
CliNum = Sheet.Cells(i; 2)
Cells(m; 2) = «Продажа»
Продажа = True
Cells(m; 2).HorizontalAlignment = xlLeft
Range(Cells(m; 2); Cells(m; 6)).Interior.ColorIndex = 15
m = m + 1
MM = m
FlagCell = False
End If
Cells(m; 2) = Sheet.Cells(i; 3)
q = 2
While Worksheets(«Бумаги»).Cells(q; 1) <> Empty
If Worksheets(«Бумаги»).Cells(q; 1) = Cells(m; 2) Then
Cells(m; 3) = Worksheets(«Бумаги»).Cells(q; 3)
Cells(m; 3).NumberFormat = «ДД.ММ.ГГ»
End If
q = q + 1
Wend
If Sheet.Cells(i; 4) <> Empty Then
Cells(m; 4) = Sheet.Cells(i; 4)
Else
Cells(m; 4) = Sheet.Cells(i; 5)
End If
Cells(m; 4).NumberFormat = «0,00»
Cells(m; 5) = Sheet.Cells(i; 6)
m = m + 1
If CliNum <> Sheet.Cells(i + 1; 2) Or Sheet.Cells(i + 1; 1) <> CurDate Then
s = 0
Col = 0
For a = MM To m — 1
Cells(a; 6) = Cells(a; 4) * Cells(a; 5) * 10
If Cells(a; 4) <> 100 Then
SumCom = SumCom + Cells(a; 4) * Cells(a; 5) * 10
ComBirga = ComBirga + _
CDbl(Format(Cells(a; 4) * Cells(a; 5) * 0,1 * Worksheets(«Инфо»).Cells(1; 2) + 0,001; «0,00»))
Else
Погашение = True
End If
Cells(a; 6).NumberFormat = «# ###,00»
s = s + Cells(a; 6)
Col = Col + Cells(a; 5)
Next a
sum = sum + s
If FlagCell Then SumBuy = s
Cells(m; 6) = s
Cells(m; 6).NumberFormat = «# ###,00»
Cells(m; 5) = Col
Cells(m; 2) = «Итого»
Cells(5; 4) = CliNum
If CliNum = FilialConst Then Cells(5; 4) = DilerConst
k = 2
While Worksheets(«Клиенты»).Cells(k; 1) <> Empty
If Worksheets(«Клиенты»).Cells(k; 2) = CliNum Then
Cells(4; 4) = Worksheets(«Клиенты»).Cells(k; 1)
End If
k = k + 1
Wend
Range(Cells(NN — 1; 2); Cells(m; 6)).Borders(xlLeft).Weight = xlThin
Range(Cells(NN — 1; 2); Cells(m; 6)).Borders(xlRight).Weight = xlThin
Range(Cells(NN — 1; 2); Cells(m; 6)).Borders(xlTop).Weight = xlThin
Range(Cells(NN — 1; 2); Cells(m; 6)).Borders(xlBottom).Weight = xlThin
Range(Cells(NN — 1; 2); Cells(m; 6)).BorderAround Weight =xlMedium
For b = 1 To BumNum
BumArray(b) = 0
BumArrayV(b) = 0
Next
b = 2
While Worksheets(«Сделки»).Cells(b; 1) <> Empty
If CurDate >= Worksheets(«Сделки»).Cells(b; 1) And _
CliNum = Worksheets(«Сделки»).Cells(b; 2) Then
z = 0
For z1 = 1 To BumNum
If Worksheets(«Врем»).Cells(z1; 1) = Worksheets(«Сделки»).Cells(b; 3) Then
z = z1
Exit For
End If
Next
If z <> 0 Then
If Not IsEmpty(Worksheets(«Сделки»).Cells(b; 4)) Then
If CurDate > Worksheets(«Сделки»).Cells(b; 1) Then
BumArrayV(z) = BumArrayV(z) + Worksheets(«Сделки»).Cells(b; 6)
End If
BumArray(z) = BumArray(z) + Worksheets(«Сделки»).Cells(b; 6)
Else
If CurDate > Worksheets(«Сделки»).Cells(b; 1) Then
BumArrayV(z) = BumArrayV(z) — Worksheets(«Сделки»).Cells(b; 6)
End If
BumArray(z) = BumArray(z) — Worksheets(«Сделки»).Cells(b; 6)
End If
End If
End If
b = b + 1
Wend
‘ M+4
MMM = m + 5
Rows(CStr(m + 1) + » » + CStr(m + 200)).Delete
FlagDepo = False
For b = 1 To BumNum
If BumArray(b) > 0 Or BumArrayV(b) > 0 Then
FlagDepo = True
Cells(MMM; 2) = Worksheets(«Врем»).Cells(b; 1)
If BumArrayV(b) < BumArray(b) Then
Cells(MMM; 4) = BumArray(b) — BumArrayV(b)
Else
If BumArrayV(b) > BumArray(b) Then
Cells(MMM; 5) = BumArrayV(b) — BumArray(b)
End If
End If
Cells(MMM; 3) = BumArrayV(b)
Cells(MMM; 6) = BumArray(b)
MMM = MMM + 1
End If
Next
If FlagDepo Then
Rows(CStr(m + 4) + » » + CStr(m + 4)).RowHeight = 28
Rows(CStr(m + 4) + » » + CStr(m + 4)).WrapText = True
Rows(CStr(m + 4) + » » + CStr(m + 4)).HorizontalAlignment = xlCenter
Rows(CStr(m + 4) + » » + CStr(m + 4)).VerticalAlignment = xlBottom
Cells(m + 4; 2) = «№ выпуска»
Cells(m + 4; 3) = «Входящий остаток»
Cells(m + 4; 4) = «Куплено»
Cells(m + 4; 5) = «Продано/ Погашено»
Cells(m + 4; 6) = «Исходящий остаток»
Cells(m + 2; 3).Font.Bold = True
Cells(m + 2; 3) = «Количество бумаг, принадлежащих Инвестору (штук)»
Range(Cells(m + 4; 2); Cells(MMM — 1; 6)).Borders(xlLeft).Weight = xlThin
Range(Cells(m + 4; 2); Cells(MMM — 1; 6)).Borders(xlRight).Weight = xlThin
Range(Cells(m + 4; 2); Cells(MMM — 1; 6)).Borders(xlTop).Weight = xlThin
Range(Cells(m + 4; 2); Cells(MMM — 1; 6)).Borders(xlBottom).Weight = xlThin
Range(Cells(m + 4; 2); Cells(MMM — 1; 6)).BorderAround Weight =xlMedium
End If
‘ ——————————————————
‘ — расчет остатков
Set Ost812 = Worksheets(«Остатки812»)
Ost812.Range(«B2»).Sort Key1 =Ost812.Range(«B2»); Order1 =xlAscending; _
Key2 =Ost812.Range(«A2»); Order2 =xlDescending; _
Header =xlYes; OrderCustom =1; _
MatchCase =False; Orientation =xlTopToBottom
OstIn = 0
OstOut = 0
OstBegin = 0
OstInDate = «»
OstOutDate = «»
RowNum = 0
k = 2
DoFlag = True
Do While Ost812.Cells(k; 1) <> Empty
If Ost812.Cells(k; 2) = CliNum And DoFlag Then
If Ost812.Cells(k; 1) < CurDate Then
OstBegin = Ost812.Cells(k; 8)
Else
Do While Ost812.Cells(k; 1) <> Empty
If Ost812.Cells(k; 2) <> CliNum Then Exit Do
If Ost812.Cells(k; 1) = CurDate Then
OstBegin = Ost812.Cells(k; 3)
OstIn = Ost812.Cells(k; 4)
OstInDate = Ost812.Cells(k; 5)
OstOut = Ost812.Cells(k; 6)
OstOutDate = Ost812.Cells(k; 7)
RowNum = k
Exit Do
End If
k = k + 1
Loop
End If
DoFlag = False
End If
k = k + 1
Loop
If RowNum = 0 Then RowNum = k
k = RowNum
‘ — начало таблицы
With DialogSheets(«ДиалогКлиент»)
.Labels(8).Text = Cells(4; 4) ‘ Клиент
.Labels(9).Text = sum ‘ Сумма сделки
.Labels(10).Text = CurDate ‘ Дата текущая
.Labels(17).Text = CliNum
If CliNum = FilialConst Then .Labels(17).Text = DilerConst
.EditBoxes(1).Text = «0» ‘ Сумма списания
.EditBoxes(1).InputType = xlNumber
.EditBoxes(2).Text = CurDate ‘ Дата сделки
.EditBoxes(7).Text = OstOutDate ‘ списано (дата)
.EditBoxes(8).Text = OstOut ‘ списано (сумма)
.EditBoxes(8).InputType = xlNumber
.EditBoxes(9).Text = OstInDate ‘ перечислено (дата)
.EditBoxes(10).Text = OstIn ‘ перечислено (сумма)
.EditBoxes(10).InputType = xlNumber
Com = 0,00015
Select Case SumCom
Case Is < 36000
Com = 0,005
Case Is < 51000
Com = 0,004
Case Is < 101000
Com = 0,003
Case Is < 301000
Com = 0,002
Case Is < 501000
Com = 0,001
Case Is < 1001000
Com = 0,0005
Case Is < 3001000
Com = 0,00025
End Select
If Cells(4; 4) = «Универсалбанк» Then Com = 0
.EditBoxes(3).Text = Com ‘ Комиссия дилера
.EditBoxes(3).InputType = xlNumber
.EditBoxes(4).Text = «0» ‘ Сумма вознаграждения дилера
.EditBoxes(4).InputType = xlNumber
.EditBoxes(5).Text = «» ‘ Запись о вознаграждении
.EditBoxes(6).Text = OstBegin ‘ Остаток на 812 счете клиента
.EditBoxes(6).InputType = xlNumber
Cells(MMM + 3; 1) = «Начальник инвестиционно-аналитического отдела_________________»
Cells(MMM + 3; 6) = «»
Again
Просмотр = False
ExitVar = False
Button = False
.Show
If .EditBoxes(1).Text = «» Then .EditBoxes(1).Text = 0
If .EditBoxes(3).Text = «» Then .EditBoxes(3).Text = 0
If .EditBoxes(4).Text = «» Then .EditBoxes(4).Text = 0
If .EditBoxes(6).Text = «» Then .EditBoxes(6).Text = 0
If .EditBoxes(8).Text = «» Then .EditBoxes(8).Text = 0
If .EditBoxes(10).Text = «» Then .EditBoxes(10).Text = 0
Cells(21; 1) = .EditBoxes(5).Text ‘ Запись о вознаграждении
Cells(21; 1).Font.Italic = True
Cells(6; 4) = .EditBoxes(2).Text ‘ Дата сделки
‘ занесение данных в итоговую таблицу
Cells(10; 6) = .EditBoxes(6).Text ‘ Входящий остаток
OstBegin = .EditBoxes(6).Text
Cells(14; 6) = SumBuy
Cells(15; 6) = sum — SumBuy
ComStr = Format(SumCom * .EditBoxes(3).Text; «0,00»)
ComDiler = CDbl(ComStr)
Cells(16; 6) = ComBirga
Cells(18; 6) = ComDiler
Cells(20; 6) = .EditBoxes(4).Text
Cells(11; 6) = .EditBoxes(8).Text
OstOut = .EditBoxes(8).Text
OstIn = .EditBoxes(10).Text
Cells(12; 6) = .EditBoxes(10).Text
Cells(13; 6) = .EditBoxes(6).Text — .EditBoxes(8).Text + .EditBoxes(10).Text
Cells(11; 1) = «2.Списано на р/с / выдано наличными » + .EditBoxes(7).Text
OstInDate = .EditBoxes(9).Text
OstOutDate = .EditBoxes(7).Text
Cells(12; 1) = «3.Перечислено на покупку » + .EditBoxes(9).Text
Cells(22; 6) = 2 * SumBuy — sum + ComBirga + ComDiler
Cells(23; 6) = .EditBoxes(1).Text
Cells(24; 6) = .EditBoxes(6).Text — .EditBoxes(8).Text + .EditBoxes(10).Text — _
(2 * SumBuy — sum + ComBirga + ComDiler) — _
.EditBoxes(1).Text — .EditBoxes(4).Text
OstEnd = Cells(24; 6)
Ost812.Cells(k; 1) = CurDate
Ost812.Cells(k; 2) = CliNum
Ost812.Cells(k; 3) = OstBegin
Ost812.Cells(k; 4) = OstIn
Ost812.Cells(k; 5) = OstInDate
Ost812.Cells(k; 6) = OstOut
Ost812.Cells(k; 7) = OstOutDate
Ost812.Cells(k; 8) = OstEnd
Ost812.Cells(k; 9) = Cells(14; 6) + Cells(15; 6)
Ost812.Cells(k; 10) = Cells(16; 6)
Ost812.Cells(k; 11) = Cells(18; 6)
Call EditOstBirga(CliNum)
‘ конец занесения данных
If Просмотр Then
Worksheets(«ОтчетыИнвесторам»).PrintPreview
GoTo Again
End If
If Button Then ActiveWindow.SelectedSheets.PrintOut copies =2
If ExitVar Then Exit Sub
End With
‘ печать мемориальных ордеров
Dim StrS As String
Auk = False
With DialogSheets(«ДиалогОперация»)
.Show
If .OptionButtons(1).Value = xlOn Then StrS = «Покупка»
If .OptionButtons(2).Value = xlOn Then StrS = «Продажа»
If .OptionButtons(3).Value = xlOn Then StrS = «Погашение»
If .OptionButtons(4).Value = xlOn Then StrS = «Покупка / Продажа»
If .OptionButtons(5).Value = xlOn Then StrS = «Покупка / Погашение»
If .OptionButtons(5).Value = xlOn Then Auk = True
End With
Worksheets(«Ордер»).Select
Dim Pos812 As Integer
Dim Page; Page1 As Object
Set Page = Worksheets(«ОтчетыИнвесторам»)
Set Page1 = Worksheets(«Клиенты»)
Pos812 = 2
While (Page1.Cells(Pos812; 1) <> Empty) And (Worksheets(«Клиенты»).Cells(Pos812; 2) <> CliNum)
Pos812 = Pos812 + 1
Wend
If Page.Cells(14; 6) — Page.Cells(15; 6) > 0 Then
If MemoOrder(Index; Page.Cells(14; 6) — Page.Cells(15; 6); 6; 7; Pos812; _
StrS + » РКО за » + CStr(CurDate)) Then Exit Sub
Index = Index + 1
Else
If MemoOrder(Index; Page.Cells(15; 6) — Page.Cells(14; 6); 7; 6; Pos812; _
StrS + » РКО за » + CStr(CurDate)) Then Exit Sub
Index = Index + 1
End If
Dim SumS As Double
SumS = Page.Cells(16; 6) + Page.Cells(18; 6) + Page.Cells(20; 6)
If SumS > 0 Then
StrS = «»
If Page.Cells(18; 6) > 0 Then StrS = «Комиссия Дилера » + CStr(Page.Cells(18; 6)) + » в т.ч. НДС » + _
CStr(Format(Page.Cells(18; 6) / 6; «0,00»))
If Page.Cells(16; 6) > 0 And Not Auk Then StrS = StrS + » возмещение ком. ВКБ » + CStr(Page.Cells(16; 6)) + » в т.ч. НДС » + _
CStr(Format(Page.Cells(16; 6) / 6; «0,00»))
If CliNum = FilialConst Then
If MemoOrder(Index; SumS; 6; 7; Pos812; StrS) Then Exit Sub
Else
If Auk Then
StrS = StrS + » по приобретению на аукционе»
If MemoOrder(Index; Page.Cells(18; 6) + Page.Cells(20; 6); 6; 12; Pos812; StrS) Then Exit Sub
StrS = «Возмещение ком. ВКБ » + CStr(Page.Cells(16; 6)) + » в т.ч. НДС » + _
CStr(Format(Page.Cells(16; 6) / 6; «0,00»))
Index = Index + 1
If MemoOrder(Index; Page.Cells(16; 6); 6; 8; Pos812; StrS) Then Exit Sub
Else
If MemoOrder(Index; SumS; 6; 8; Pos812; StrS) Then Exit Sub
End If
End If
Index = Index + 1
End If
If CliNum <> FilialConst Then
If Len(StrComS) > 0 Then
StrComS = StrComS +»