119 lines
5.2 KiB
Ruby
119 lines
5.2 KiB
Ruby
class BatchLineItemsController < ApplicationController
|
|
require "csv"
|
|
skip_before_filter :verify_authenticity_token
|
|
before_action :authenticate_member!
|
|
|
|
|
|
def index
|
|
# user_id=current_member.user_id
|
|
@product_category_id=""
|
|
@clients=Client.all.order('id desc')
|
|
@product_categories=ProductCategory.all.order('id desc')
|
|
|
|
find_client=Client.select(:id).order('id desc').last
|
|
if !find_client.nil?
|
|
client_id=find_client.id
|
|
|
|
find_batch=Batch.where('client_id=?',client_id).order('id desc').first
|
|
if !find_batch.nil?
|
|
@product_category_id=find_batch.product_category_id
|
|
end
|
|
sub_query="(select * from batches where client_id="+client_id.to_s+" and product_category_id ="+@product_category_id.to_s+" )"
|
|
@batchLineItems=BatchLineItem.joins('inner join '+sub_query+' as batches on batches.id=batch_line_items.batch_id')
|
|
.select('batch_line_items.*,batches.order_ref as batch_name').order('batch_line_items.id desc').page(params[:page]).per(10)
|
|
@result_count= @batchLineItems.total_count
|
|
else
|
|
@batchLineItems=BatchLineItem.joins('inner join batches on batches.id=batch_line_items.batch_id')
|
|
.select('batch_line_items.*,batches.order_ref as batch_name').order('batch_line_items.id desc').page(params[:page]).per(10)
|
|
@result_count= @batchLineItems.total_count
|
|
end
|
|
end
|
|
def search
|
|
# user_id=current_member.user_id
|
|
|
|
batch_list=params[:batch]
|
|
client_id=params[:client]
|
|
product_category_id=params[:product_category]
|
|
|
|
|
|
@batchLineItems=nil
|
|
|
|
if !batch_list.empty?
|
|
sub_query="(select * from batches where id in ("+batch_list+") and client_id="+client_id.to_s+" and product_category_id="+product_category_id.to_s+")"
|
|
|
|
@batchLineItems=BatchLineItem.joins('inner join '+ sub_query +' as batches on batches.id=batch_line_items.batch_id')
|
|
.select('batch_line_items.*,batches.order_ref as batch_name').order('batch_line_items.id desc').page(params[:page]).per(10)
|
|
@result_count= @batchLineItems.total_count
|
|
else
|
|
sub_query="(select * from batches where client_id="+client_id.to_s+" and product_category_id="+product_category_id.to_s+")"
|
|
@batchLineItems=BatchLineItem.joins('inner join '+ sub_query +'as batches on batches.id=batch_line_items.batch_id')
|
|
.select('batch_line_items.*,batches.order_ref as batch_name').order('batch_line_items.id desc').page(params[:page]).per(10)
|
|
@result_count= @batchLineItems.total_count
|
|
end
|
|
|
|
# if @batchLineItems.nil?
|
|
# @message="No search found!"
|
|
# end
|
|
end
|
|
def get_batch
|
|
client_id=params[:client_id]
|
|
product_category_id=params[:product_category_id]
|
|
|
|
batches=Batch.where('client_id=? and product_category_id=?',client_id,product_category_id)
|
|
.select('order_ref,id')
|
|
if !batches.nil?
|
|
render :json => { :data => batches,:status => true }
|
|
# respond_with(data: batches,status: true)
|
|
# else
|
|
# respond_with(data: nil,status: false)
|
|
end
|
|
end
|
|
def export
|
|
batch_list=""
|
|
@batchLineItems=nil
|
|
user_id=current_member.user_id
|
|
|
|
@clients=Client.all
|
|
@batches=Batch.where('user_id=?',user_id)
|
|
client_id=params[:client]
|
|
product_category_id=params[:product_category]
|
|
find_client=Client.find_by_id(client_id)
|
|
location_code=find_client.location_code
|
|
client_name=find_client.name.downcase
|
|
find_product=ProductCategory.find_by_id(product_category_id)
|
|
product_name=find_product.name.downcase
|
|
|
|
find_user=User.find_by_id(user_id)
|
|
if !find_user.nil?
|
|
exported_by=find_user.name
|
|
end
|
|
if params[:batch].present?
|
|
batch_list=params[:batch]
|
|
end
|
|
|
|
if !batch_list.empty?
|
|
res=Batch.where("client_id=? and product_category_id=? and id in (?)",client_id,product_category_id,batch_list).update_all("export_count = export_count + 1,exported_by='"+exported_by+"'")
|
|
|
|
|
|
sub_query= "(select * from batches where client_id="+client_id.to_s+" and product_category_id="+ product_category_id.to_s+")"
|
|
|
|
@batchLineItems = BatchLineItem.joins('inner join '+sub_query +" as batches on batches.id=batch_line_items.batch_id")
|
|
.joins('inner join product_categories product on product.id=batches.product_category_id')
|
|
.where('batch_id in (?)',batch_list)
|
|
.select("*,product.product_type_id ,product.name,'' as secret_token,'' as location")
|
|
else
|
|
Batch.where("client_id=? ",client_id).update_all("export_count = export_count + 1,exported_by='"+exported_by+"'")
|
|
sub_query="(select * from batches where client_id ="+client_id+" and product_category_id="+ product_category_id+")"
|
|
@batchLineItems = BatchLineItem.joins('inner join '+sub_query+' as batches on batches.id=batch_line_items.batch_id')
|
|
.joins('inner join product_categories as product on product.id=batches.product_category_id')
|
|
.select("*,product.product_type_id ,product.name,'' as secret_token,'' as location")
|
|
end
|
|
|
|
datestr= Time.now.strftime("%Y/%m/%d %H:%M:%S")
|
|
filename=client_name.to_s+"_"+product_name.to_s+"_"+datestr
|
|
respond_to do |format|
|
|
format.html
|
|
format.csv { send_data @batchLineItems.to_csv(client_id,location_code), filename: "#{filename}.csv" }
|
|
end
|
|
end
|
|
end |