48 lines
1.2 KiB
Ruby
48 lines
1.2 KiB
Ruby
class Supplier
|
|
include SimplyStored::Couch
|
|
include Devise::Orm::SimplyStored
|
|
devise :database_authenticatable, :recoverable, :rememberable, :trackable
|
|
|
|
property :name
|
|
#has_many :orders, through: :lists
|
|
has_many :products, dependent: :destroy
|
|
has_many :product_categories, dependent: :destroy
|
|
has_many :tables, dependent: :destroy
|
|
#has_many :lists, through: :tables
|
|
has_many :orders
|
|
has_many :sections, dependent: :destroy
|
|
|
|
after_create :add_section_on_create
|
|
|
|
def active_orders
|
|
return @active_orders if @active_orders
|
|
@active_orders = Order.active_for_supplier(id)
|
|
@active_orders.include_relation(list: :table, product_orders: :order)
|
|
@active_orders
|
|
end
|
|
|
|
def active_lists
|
|
return @active_lists if @active_lists
|
|
@tables ||= active_tables
|
|
@tables.include_relation(:lists)
|
|
@active_lists = @tables.map(&:lists).flatten.select(&:active?)
|
|
@active_lists.include_relations(:table, orders: {product_orders: :product})
|
|
end
|
|
|
|
|
|
def active_tables
|
|
tables
|
|
end
|
|
|
|
def non_placed_tables
|
|
tables.reject{|t| t.section_id.present? }
|
|
end
|
|
|
|
private
|
|
|
|
def add_section_on_create
|
|
@section = Section.create supplier: self, title: I18n.t('section.first_section_title')
|
|
end
|
|
|
|
end
|