class OrangeData::ReceiptResult

Attributes

content[R]

Public Class Methods

from_hash(hash) click to toggle source
# File lib/orange_data/receipt.rb, line 199
def self.from_hash(hash)
  return if hash.nil?
  raise ArgumentError, 'Expect hash here' unless hash.is_a?(Hash)

  new(hash)
end
new(payload) click to toggle source
# File lib/orange_data/receipt.rb, line 194
def initialize(payload)
  @payload = payload
  @content = ReceiptContent.new(@payload["content"])
end

Public Instance Methods

qr_code_content() click to toggle source
# 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