mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-11-29 10:24:20 +01:00
55 lines
1.9 KiB
Ruby
55 lines
1.9 KiB
Ruby
class Avoir < Invoice
|
|
belongs_to :invoice
|
|
after_create :expire_subscription, if: :subscription_to_expire
|
|
|
|
validates :avoir_mode, :inclusion => {:in => %w(stripe cheque transfer none cash)}
|
|
|
|
attr_accessor :invoice_items_ids
|
|
|
|
def generate_reference
|
|
pattern = Setting.find_by({name: 'invoice_reference'}).value
|
|
|
|
# invoice number per day (dd..dd)
|
|
reference = pattern.gsub(/d+(?![^\[]*\])/) do |match|
|
|
pad_and_truncate(number_of_invoices('day'), match.to_s.length)
|
|
end
|
|
# invoice number per month (mm..mm)
|
|
reference.gsub!(/m+(?![^\[]*\])/) do |match|
|
|
pad_and_truncate(number_of_invoices('month'), match.to_s.length)
|
|
end
|
|
# invoice number per year (yy..yy)
|
|
reference.gsub!(/y+(?![^\[]*\])/) do |match|
|
|
pad_and_truncate(number_of_invoices('year'), match.to_s.length)
|
|
end
|
|
|
|
# full year (YYYY)
|
|
reference.gsub!(/YYYY(?![^\[]*\])/, self.created_at.strftime('%Y'))
|
|
# year without century (YY)
|
|
reference.gsub!(/YY(?![^\[]*\])/, self.created_at.strftime('%y'))
|
|
|
|
# abreviated month name (MMM)
|
|
reference.gsub!(/MMM(?![^\[]*\])/, self.created_at.strftime('%^b'))
|
|
# month of the year, zero-padded (MM)
|
|
reference.gsub!(/MM(?![^\[]*\])/, self.created_at.strftime('%m'))
|
|
# month of the year, non zero-padded (M)
|
|
reference.gsub!(/M(?![^\[]*\])/, self.created_at.strftime('%-m'))
|
|
|
|
# day of the month, zero-padded (DD)
|
|
reference.gsub!(/DD(?![^\[]*\])/, self.created_at.strftime('%d'))
|
|
# day of the month, non zero-padded (DD)
|
|
reference.gsub!(/DD(?![^\[]*\])/, self.created_at.strftime('%-d'))
|
|
|
|
# information about refund/avoir (R[text])
|
|
reference.gsub!(/R\[([^\]]+)\]/, '\1')
|
|
|
|
# remove information about online selling (X[text])
|
|
reference.gsub!(/X\[([^\]]+)\]/, ''.to_s)
|
|
|
|
self.reference = reference
|
|
end
|
|
|
|
def expire_subscription
|
|
user.subscription.expire(Time.now)
|
|
end
|
|
end
|