Add possibility to add an attachment to an invoice #345

This commit is contained in:
Patrick Gansterer 2016-05-06 15:04:58 +02:00
parent 8d5467ab7c
commit 749791bb7a
14 changed files with 75 additions and 1 deletions

View file

@ -1,3 +1,5 @@
require 'filemagic'
class Invoice < ActiveRecord::Base
belongs_to :supplier
@ -7,12 +9,27 @@ class Invoice < ActiveRecord::Base
validates_presence_of :supplier_id
validates_numericality_of :amount, :deposit, :deposit_credit
validate :valid_attachment
scope :unpaid, -> { where(paid_on: nil) }
attr_accessor :delete_attachment
# Replace numeric seperator with database format
localize_input_of :amount, :deposit, :deposit_credit
def attachment=(incoming_file)
self.attachment_data = incoming_file.read
self.attachment_mime = FileMagic.new(FileMagic::MAGIC_MIME).buffer(self.attachment_data)
end
def delete_attachment=(value)
if value == '1'
self.attachment_data = nil
self.attachment_mime = nil
end
end
def user_can_edit?(user)
user.role_finance? || (user.role_invoices? && !self.paid_on && self.created_by.id == user.id)
end
@ -21,4 +38,15 @@ class Invoice < ActiveRecord::Base
def net_amount
amount - deposit + deposit_credit
end
protected
def valid_attachment
if attachment_data
mime = MIME::Type.simplified(attachment_mime)
unless ['application/pdf', 'image/jpeg'].include? mime
errors.add :attachment, I18n.t('model.invoice.invalid_mime', :mime => mime)
end
end
end
end