# An enterprise is a kind of organization. According to the system concept, # only enterprises can offer products and services. class Enterprise < Organization N_('Enterprise') has_many :products, :dependent => :destroy, :order => 'name ASC' has_many :inputs, :through => :products has_many :production_costs, :as => :owner has_and_belongs_to_many :fans, :class_name => 'Person', :join_table => 'favorite_enteprises_people' extra_data_for_index :product_categories N_('Organization website'); N_('Historic and current context'); N_('Activities short description'); N_('City'); N_('State'); N_('Country'); N_('ZIP code') settings_items :organization_website, :historic_and_current_context, :activities_short_description, :zip_code, :city, :state, :country before_save do |enterprise| enterprise.organization_website = enterprise.maybe_add_http(enterprise.organization_website) end include MaybeAddHttp def business_name self.nickname end def business_name=(value) self.nickname = value end N_('Business name') FIELDS = %w[ business_name organization_website historic_and_current_context activities_short_description acronym foundation_year ] def self.fields super + FIELDS end def validate super self.required_fields.each do |field| if self.send(field).blank? self.errors.add(field, _("%{fn} can't be blank")) end end end def active_fields environment ? environment.active_enterprise_fields : [] end def highlighted_products_with_image(options = {}) Product.find(:all, {:conditions => {:highlighted => true}, :joins => :image}.merge(options)) end def required_fields environment ? environment.required_enterprise_fields : [] end def signup_fields environment ? environment.signup_enterprise_fields : [] end def product_categories products.map{|p| p.category_full_name}.compact end def product_updated ferret_update end after_save do |e| e.products.each{ |p| p.enterprise_updated(e) } end def closed? true end def blocked? data[:blocked] end def block data[:blocked] = true save end def unblock data[:blocked] = false save end def enable(owner) return if enabled affiliate(owner, Profile::Roles.all_roles(environment.id)) update_attribute(:enabled,true) if environment.replace_enterprise_template_when_enable apply_template(template) end save_without_validation! end def question if !self.foundation_year.blank? :foundation_year elsif !self.cnpj.blank? :cnpj else nil end end after_create :create_activation_task def create_activation_task if !self.enabled EnterpriseActivation.create!(:enterprise => self, :code_length => 7) end end def default_set_of_blocks links = [ {:name => _("Enterprises's profile"), :address => '/profile/{profile}', :icon => 'ok'}, {:name => _('Blog'), :address => '/{profile}/blog', :icon => 'edit'}, {:name => _('Products'), :address => '/catalog/{profile}', :icon => 'new'}, ] blocks = [ [MainBlock.new], [ProfileImageBlock.new, LinkListBlock.new(:links => links)], [] ] if !environment.enabled?('disable_products_for_enterprises') blocks[2].unshift ProductsBlock.new end blocks end def default_set_of_articles [ Blog.new(:name => _('Blog')), ] end before_create do |enterprise| enterprise.validated = enterprise.environment.enabled?('enterprises_are_validated_when_created') if enterprise.environment.enabled?('enterprises_are_disabled_when_created') enterprise.enabled = false end true end def template if enabled? environment.enterprise_template else environment.inactive_enterprise_template end end settings_items :enable_contact_us, :type => :boolean, :default => true def enable_contact? enable_contact_us end def control_panel_settings_button {:title => __('Enterprise Info and settings'), :icon => 'edit-profile-enterprise'} end def create_product? true end end