class Multicash::PaymentOrder
Attributes
currency[R]
date[R]
errors[RW]
ordering_bae[R]
reference[RW]
total_ammount[R]
transfers[R]
transfers_number[RW]
Public Class Methods
new()
click to toggle source
# File lib/multicash/payment_order.rb, line 11 def initialize @currency = nil @date = Time.now.strftime('%y%m%d') @errors = ActiveModel::Errors.new(self) @ordering_bae = nil @transfers = [] @total_ammount = 0.00 end
Public Instance Methods
<<(transfer)
click to toggle source
# File lib/multicash/payment_order.rb, line 20 def << (transfer) @transfers << transfer transfer.reference_counter = @transfers.size @total_ammount += (transfer.ammount.to_f) @currency ||= transfer.currency @ordering_bae ||= transfer.ordering_bae end
body()
click to toggle source
# File lib/multicash/payment_order.rb, line 52 def body lines = [] transfers.each do |transfer| lines << transfer.generate end lines.join("\x0C") end
generate()
click to toggle source
# File lib/multicash/payment_order.rb, line 61 def generate return false if transfers.blank? "#{header}#{body}" end
header()
click to toggle source
# File lib/multicash/payment_order.rb, line 28 def header first_line = "{1:F01" first_line << self.ordering_bae first_line << "XXXX0000000000}" first_line << "{2:I198" first_line << self.ordering_bae first_line << "XXXXN0000}" "#{first_line}#{header_body}\x0c" end
header_body()
click to toggle source
# File lib/multicash/payment_order.rb, line 39 def header_body payment_labels = Multicash::Labels::PaymentOrder.new(self) lines = [] lines << "{4:" lines << payment_labels.label_20 lines << payment_labels.label_12 lines << payment_labels.label_77E lines << payment_labels.label_B1T lines.join("\x0D\x0A") + "\x0D\x0A-}" end
save_to_file()
click to toggle source
# File lib/multicash/payment_order.rb, line 67 def save_to_file return false unless self.errors.blank? bank_file = File.join(Dir.tmpdir, "#{Time.now.strftime('%Y-%m-%d')}.txt") File.open(bank_file, "w+", cr_newline: false, external_encoding: Encoding::CP1251) do |file| file.write generate.encode("CP1251") end bank_file end
Private Instance Methods
valid_transfers()
click to toggle source
# File lib/multicash/payment_order.rb, line 80 def valid_transfers transfers.each_with_index do |transfer, index| self.errors.add("transfer_#{index}", transfer.errors.full_messages) unless transfer.valid? end end