foodsoft/app/lib/bank_transaction_reference.rb

32 lines
838 B
Ruby

class BankTransactionReference
# parses a string from a bank transaction field
def self.parse(data)
m = /(^|[^\w.])FS(?<group>\d+)(\.(?<user>\d+))?(?<parts>([A-Za-z]+\d+(\.\d+)?)+)([^\w.]|$)/.match(data)
return unless m
parts = {}
m[:parts].scan(/([A-Za-z]+)(\d+(\.\d+)?)/) do |category, value|
value = value.to_f
value += parts[category] if parts[category]
parts[category] = value
end
ret = { group: m[:group].to_i, parts: parts }
ret[:user] = m[:user].to_i if m[:user]
ret
end
def self.js_code_for_user(user)
%{
function(items) {
var ret = "FS#{user.ordergroup.id}.#{user.id}";
for (var key in items) {
if (items.hasOwnProperty(key)) {
ret += key + items[key];
}
}
return ret;
}
}
end
end