38 lines
1.4 KiB
Ruby
38 lines
1.4 KiB
Ruby
|
Article.class_eval do
|
||
|
def unequal_attributes(new_article, options = {})
|
||
|
# try to convert different units when desired
|
||
|
if options[:convert_units] == false
|
||
|
new_price = nil
|
||
|
new_unit_quantity = nil
|
||
|
else
|
||
|
new_price, new_unit_quantity = convert_units(new_article)
|
||
|
end
|
||
|
if new_price && new_unit_quantity
|
||
|
new_unit = self.unit
|
||
|
else
|
||
|
new_price = new_article.price
|
||
|
new_unit_quantity = new_article.unit_quantity
|
||
|
new_unit = new_article.unit
|
||
|
end
|
||
|
|
||
|
attribute_hash = {
|
||
|
:name => [self.name, new_article.name],
|
||
|
:manufacturer => [self.manufacturer, new_article.manufacturer.to_s],
|
||
|
:origin => [self.origin, new_article.origin],
|
||
|
:unit => [self.unit, new_unit],
|
||
|
:price => [self.price.to_f.round(2), new_price.to_f.round(2)],
|
||
|
:tax => [self.tax, new_article.tax],
|
||
|
:deposit => [self.deposit.to_f.round(2), new_article.deposit.to_f.round(2)],
|
||
|
# take care of different num-objects.
|
||
|
:unit_quantity => [self.unit_quantity.to_s.to_f, new_unit_quantity.to_s.to_f],
|
||
|
:note => [self.note.to_s, new_article.note.to_s]
|
||
|
}
|
||
|
if options[:update_category] == true
|
||
|
new_article_category = new_article.article_category
|
||
|
attribute_hash[:article_category] = [self.article_category, new_article_category] unless new_article_category.blank?
|
||
|
end
|
||
|
|
||
|
Article.compare_attributes(attribute_hash)
|
||
|
end
|
||
|
end
|