class StockTakingsController < ApplicationController

  def index
    @stock_takings = StockTaking.find(:all)

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @stock_takings }
    end
  end

  def show
    @stock_taking = StockTaking.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @stock_taking }
    end
  end

  def new
    @stock_taking = StockTaking.new
    StockArticle.without_deleted.each { |a| @stock_taking.stock_changes.build(:stock_article => a) }
    
    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @stock_taking }
    end
  end


  def edit
    @stock_taking = StockTaking.find(params[:id])
  end

  def create
    @stock_taking = StockTaking.new(params[:stock_taking])

    respond_to do |format|
      if @stock_taking.save
        flash[:notice] = 'StockTaking was successfully created.'
        format.html { redirect_to(@stock_taking) }
        format.xml  { render :xml => @stock_taking, :status => :created, :location => @stock_taking }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @stock_taking.errors, :status => :unprocessable_entity }
      end
    end
  end

  def update
    @stock_taking = StockTaking.find(params[:id])

    respond_to do |format|
      if @stock_taking.update_attributes(params[:stock_taking])
        flash[:notice] = 'StockTaking was successfully updated.'
        format.html { redirect_to(@stock_taking) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @stock_taking.errors, :status => :unprocessable_entity }
      end
    end
  end

  def destroy
    @stock_taking = StockTaking.find(params[:id])
    @stock_taking.destroy

    respond_to do |format|
      format.html { redirect_to(stock_takings_url) }
      format.xml  { head :ok }
    end
  end

  def fill_new_stock_article_form
    article = Article.find(params[:article_id])
    supplier = article.supplier
    stock_article = supplier.stock_articles.build(
      article.attributes.reject { |attr| attr == ('id' || 'type')}
    )

    render :partial => 'stock_article_form', :locals => {:stock_article => stock_article}
  end
  
  def add_stock_article
    article = StockArticle.new(params[:stock_article])
    render :update do |page|
      if article.save
        page.insert_html :top, 'stock_changes', :partial => 'stock_change',
          :locals => {:stock_change => article.stock_changes.build}

        page.replace_html 'new_stock_article', :partial => 'stock_article_form',
          :locals => {:stock_article => StockArticle.new}
      else
        page.replace_html 'new_stock_article', :partial => 'stock_article_form',
          :locals => {:stock_article => article}
      end
    end
  end

  def drop_stock_change
    stock_change = StockChange.find(params[:stock_change_id])
    stock_change.destroy

    render :update do |page|
      page.visual_effect :DropOut, "stock_change_#{stock_change.id}"
    end
  end


end