Class: OrangeData::ReceiptResult

Inherits:
PayloadContent show all
Defined in:
lib/orange_data/receipt.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from PayloadContent

#==, #as_json, #assign_attributes, #attributes, #to_hash, #to_json

Constructor Details

#initialize(payload) ⇒ ReceiptResult

Returns a new instance of ReceiptResult.



193
194
195
196
# File 'lib/orange_data/receipt.rb', line 193

def initialize(payload)
  super(payload)
  @content = ReceiptContent.new(@payload["content"])
end

Instance Attribute Details

#contentObject (readonly)

Returns the value of attribute content.



205
206
207
# File 'lib/orange_data/receipt.rb', line 205

def content
  @content
end

Class Method Details

.from_hash(hash) ⇒ Object

Raises:

  • (ArgumentError)


198
199
200
201
202
203
# File 'lib/orange_data/receipt.rb', line 198

def self.from_hash(hash)
  return if hash.nil?
  raise ArgumentError, 'Expect hash here' unless hash.is_a?(Hash)

  new(hash)
end

Instance Method Details

#qr_code_contentObject



209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
# File 'lib/orange_data/receipt.rb', line 209

def qr_code_content
  # Пример: t=20150720T1638&s=9999999.00&fn=000110000105&i=12345678&fp=123456&n=2
  # вообще это тег 1196, но OD его не присылают
  {
    # - t=<date/time - дата и время осуществления расчета в формате ГГГГММДДТЧЧММ>
    t: processed_at.gsub(/:\d{2}\z/, '').gsub(/[^0-9T]/, ''),
    # - s=<сумма расчета в рублях и копейках, разделенных точкой>
    s: content.check_close.payments.inject(0.0){|d, p| d + p.amount },
    # - fn=<заводской номер фискального накопителя>
    fn: fs_number,
    # - i=<порядковый номер фискального документа, нулями не дополняется>
    i: document_number, # documentIndex??
    # - fp=<фискальный признак документа, нулями не дополняется>
    fp: fp,
    # - n=<признак расчета>.
    n: content.raw_type,
  }.map{|k, v| "#{k}=#{v}" }.join('&')
end