lib/fin/models/deal.rb in fin-0.1.0 vs lib/fin/models/deal.rb in fin-0.1.2

- old
+ new

@@ -1,75 +1,69 @@ require 'fin/models/model' module Fin # Represents a single deal (trade) for one security - # Source table: FORTS_FUTTRADE_REPL::deal – cделки + # Source table: FORTS_FUTTRADE_REPL::deal / user_deal – cделки # class Deal < Model + model_class_id 11 # Properties as per P2ClientGate API - prop_accessor [:repl_id, :id], [:repl_rev, :rev], - [:isin_id, :isin], # i4 Уникальный числовой идентификатор инструмента - :price, # price d16.5 Цена - :amount, # amount i4 Объем, кол-во единиц инструмента - [:deal_id, :id_deal], # id_deal i8 Номер сделки - [:sess_id, :session_id], # sess_id i4 Идентификатор сессии - :moment, # moment t Время заключения сделки. - :pos, # i4 Кол-во позиций по инструменту на рынке после сделки. - :nosystem, # i1 1-внесистемная сделка, 0-обычная - [:repo_id, :repo, :id_repo], # i8 Номер другой части сделки РЕПО - :id_deal_multileg # i8 Номер сделки по связке + property :isin_id => :i4, # - Уникальный числовой идент. инструмента + :price => :'d16.5', # - Цена + :amount => :i4, # - Объем, кол-во единиц инструмента + [:id_deal, :deal_id] => :i8, # - Номер сделки + [:sess_id, :session_id] => :i4, # Идентификатор сессии + :moment => :t, # Время заключения сделки. + :pos => :i4, # Кол-во позиций по инструменту на рынке после сделки. + :nosystem => :i1 # 1-внесистемная сделка, 0-обычная - # Эти поля заполняются только для своих сделок: - prop_accessor :code_sell, # c7 Код продавца:status_sell, - :id_ord_sell, # i8 Номер заявки продавца - :ext_id_sell, # i4 Внешний номер из заявки продавца - :comment_sell, # c20 Комментарий из заявки продавца. - :trust_sell, # i1 Признак ДУ (доверительного управления) из заявки продавца - :status_sell, # i4 Статус сделки со стороны продавца - :hedge_sell, # i1 Признак хеджевой сделки со стороны продавца - :fee_sell, # d26.2 Сбор по сделке продавца - :login_sell, # c20 Логин пользователя продавца - :code_rts_sell, # c7 Код РТС продавца - :code_buy, # c7 Код покупателя - :id_ord_buy, # i8 Номер заявки покупателя. - :ext_id_buy, # i4 Внешний номер из заявки покупателя - :comment_buy, # c20 Комментарий из заявки покупателя - :trust_buy, # i1 Признак ДУ (доверительного управления) из заявки покупателя - :status_buy, # i4 Статус сделки со стороны покупателя - :hedge_buy, # i1 Признак хеджевой сделки со стороны покупателя - :fee_buy, # d26.2 Сбор по сделке покупателя - :login_buy, # c20 Логин пользователя покупателя - :code_rts_buy # c7 Код РТС покупателя + # Optional fields, only for repo/multileg deals: + property [:id_deal_multileg, :deal_multileg_id] => :i8, # Номер сделки по связке + [:id_repo, :repo_id] => :i8 # Номер другой части сделки РЕПО + # Optional fields, only for OWN deals: + property :code_sell => :c7, # Код продавца:status_sell, + :id_ord_sell => :i8, # Номер заявки продавца + :ext_id_sell => :i4, # Внешний номер из заявки продавца + :comment_sell => :c20, # Комментарий из заявки продавца. + :trust_sell => :i1, # Признак доверительного управления из заявки продавца + :status_sell => :i4, # Статус сделки со стороны продавца + :hedge_sell => :i1, # Признак хеджевой сделки со стороны продавца + :fee_sell => :'d26.2', # Сбор по сделке продавца + :login_sell => :c20, # Логин пользователя продавца + :code_rts_sell => :c7, # Код РТС продавца + :code_buy => :c7, # Код покупателя + :id_ord_buy => :i8, # Номер заявки покупателя. + :ext_id_buy => :i4, # Внешний номер из заявки покупателя + :comment_buy => :c20, # Комментарий из заявки покупателя + :trust_buy => :i1, # Признак доверительного управления из заявки покупателя + :status_buy => :i4, # Статус сделки со стороны покупателя + :hedge_buy => :i1, # Признак хеджевой сделки со стороны покупателя + :fee_buy => :'d26.2', # Сбор по сделке покупателя + :login_buy => :c20, # Логин пользователя покупателя + :code_rts_buy => :c7 # Код РТС покупателя + attr_accessor :book - def self.from_record rec - new :isin_id => rec.GetValAsLong('isin_id'), - :deal_id => rec.GetValAsLong('id_deal'), - :id => rec.GetValAsString('replID').to_i, - :rev => rec.GetValAsString('replRev').to_i, - :price => rec.GetValAsString('price').to_f, - :moment => rec.GetValAsString('moment'), - :amount => rec.GetValAsString('amount').to_i - end - def self.index_for rec rec.GetValAsLong('id_deal') end def index - @deal_id + deal_id end - def price= val - val = val.to_f - @price = val.round == val ? val.to_i : val + def price_as_integer + if price && price.round == price + price.to_i + else + price + end end - def inspect - "#{moment}:#{id}[#{isin}] #{price}>#{amount}" + def to_s + "#{moment}:#{deal_id}[#{isin_id}] #{price}>#{amount}" end - alias to_s inspect end end