Skip to content

Commit

Permalink
Make Parts tab available on all admin controllers.
Browse files Browse the repository at this point in the history
  • Loading branch information
BDQ committed Dec 3, 2009
1 parent a6419ea commit 153fc43
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 46 deletions.
39 changes: 19 additions & 20 deletions app/controllers/admin/parts_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,30 @@ class Admin::PartsController < Admin::BaseController
def index
@parts = @product.parts
end

def remove
@part = Variant.find(params[:id])
@product.remove_part(@part)
render :update do |page|
page.replace_html :product_parts, :partial => "parts_table",
:locals => {:parts => @product.parts}
end
render :update do |page|
page.replace_html :product_parts, :partial => "parts_table",
:locals => {:parts => @product.parts}
end
end

def set_count
@part = Variant.find(params[:id])
@product.set_part_count(@part, params[:count].to_i)
render :update do |page|
page.replace_html :product_parts, :partial => "parts_table",
:locals => {:parts => @product.parts}
end
render :update do |page|
page.replace_html :product_parts, :partial => "parts_table",
:locals => {:parts => @product.parts}
end
end

def available
if params[:q].blank?
@available_products = []
else
@available_products =
@available_products =
Product.not_deleted.available.keywords(params[:q]).can_be_part_equals(true) +
Product.not_deleted.available.variants_sku_equals(params[:q]).can_be_part_equals(true) +
Product.not_deleted.available.master_sku_equals(params[:q]).can_be_part_equals(true)
Expand All @@ -40,21 +40,20 @@ def available
format.js {render :layout => false}
end
end

def create
@part = Variant.find(params[:part_id])
qty = params[:part_count].to_i
qty = params[:part_count].to_i
@product.add_part(@part, qty) if qty > 0
render :update do |page|
page.replace_html :product_parts, :partial => "parts_table",
:locals => {:parts => @product.parts}
page.hide :search_hits
page.replace_html :product_parts, :partial => "parts_table",
:locals => {:parts => @product.parts}
page.hide :search_hits
end
end

private
def find_product
@product = Product.find_by_permalink(params[:product_id])
@product_admin_tabs << { :name => "Parts", :url => "admin_product_parts_url" }
end
end
end
52 changes: 26 additions & 26 deletions product_assembly_extension.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@ class ProductAssemblyExtension < Spree::Extension
def self.require_gems(config)
#config.gem 'composite_primary_keys', :lib => false
end

def activate

Admin::ProductsController.class_eval do
Admin::BaseController.class_eval do
before_filter :add_parts_tab
private
def add_parts_tab
@product_admin_tabs << { :name => "Parts", :url => "admin_product_parts_url" }
end
end

Product.class_eval do

has_and_belongs_to_many :assemblies, :class_name => "Product",
Expand All @@ -32,11 +32,11 @@ def add_parts_tab
:join_table => "assemblies_parts",
:foreign_key => "assembly_id", :association_foreign_key => "part_id"


named_scope :individual_saled, {
:conditions => ["products.individual_sale = ?", true]
}

named_scope :active, lambda { |*args|
not_deleted.individual_saled.available(args.first).scope(:find)
}
Expand Down Expand Up @@ -68,56 +68,56 @@ def has_stock?

def add_part(variant, count = 1)
ap = AssembliesPart.get(self.id, variant.id)
unless ap.nil?
unless ap.nil?
ap.count += count
ap.save
else
self.parts << variant
set_part_count(variant, count) if count > 1
end
end
end

def remove_part(variant)
ap = AssembliesPart.get(self.id, variant.id)
unless ap.nil?
unless ap.nil?
ap.count -= 1
if ap.count > 0
ap.save
else
ap.destroy
end
end
end
end

def set_part_count(variant, count)
ap = AssembliesPart.get(self.id, variant.id)
unless ap.nil?
if count > 0
if count > 0
ap.count = count
ap.save
else
ap.destroy
ap.destroy
end
end
end
end

def assembly?
parts.present?
end

def part?
assemblies.present?
end

def count_of(variant)
ap = AssembliesPart.get(self.id, variant.id)
ap ? ap.count : 0
end

end



InventoryUnit.class_eval do
def self.sell_units(order)
order.line_items.each do |line_item|
Expand All @@ -136,20 +136,20 @@ def self.sell_units(order)
end
end
end

private
def self.mark_units_as_selled(order, units, variant, quantity)
# mark all of these units as sold and associate them with this order
units.each do |unit|

def self.mark_units_as_selled(order, units, variant, quantity)
# mark all of these units as sold and associate them with this order
units.each do |unit|
unit.order = order
unit.sell!
end
# right now we always allow back ordering
backorder = quantity - units.size
backorder.times do
backorder.times do
order.inventory_units.create(:variant => variant, :state => "backordered")
end
end
end
end

Expand Down

0 comments on commit 153fc43

Please sign in to comment.