|
|
@@ -1,8 +1,5 @@
|
|
|
class StockByPointsaleDatatable
|
|
|
-
|
|
|
- delegate :params, :image_tag, :is_a, :number_to_currency,
|
|
|
- :available_products_path, :stock_by_pointsale_path,
|
|
|
- to: :@view
|
|
|
+ delegate :params, :image_tag, :is_a, :number_to_currency, :available_products_path, :stock_by_pointsale_path, to: :@view
|
|
|
|
|
|
def initialize(view, user, selected)
|
|
|
@view = view
|
|
|
@@ -10,7 +7,7 @@ class StockByPointsaleDatatable
|
|
|
@selected = selected
|
|
|
end
|
|
|
|
|
|
- def as_json(options = {})
|
|
|
+ def as_json(_options = {})
|
|
|
total = WarehouseStock.activos.where('stock > 0').count + AvailableProduct.activos.where('stock > 0').count
|
|
|
{
|
|
|
sEcho: params[:sEcho].to_i,
|
|
|
@@ -20,31 +17,27 @@ class StockByPointsaleDatatable
|
|
|
}
|
|
|
end
|
|
|
|
|
|
-private
|
|
|
+ private
|
|
|
|
|
|
def data
|
|
|
stock.map do |available|
|
|
|
- if available.product.img_product?
|
|
|
- img = available.product.img_product.url(:small)
|
|
|
- else
|
|
|
- img = "/images/small/missing.png"
|
|
|
- end
|
|
|
+ img = available.product.img_product? ? available.product.img_product.url(:small) : "/images/small/missing.png"
|
|
|
category = available.categories[0]
|
|
|
|
|
|
if @current_user.usertype == 'C'
|
|
|
[
|
|
|
(image_tag img),
|
|
|
get_display_name(available.product),
|
|
|
- (category.parent_id == 0 ? category.category : category.parent.category),
|
|
|
+ (category.parent_id.zero? ? category.category : category.parent.category),
|
|
|
(category.parent_id != 0 ? category.category : ' '),
|
|
|
- # available.stock.round,
|
|
|
+ available.stock.round,
|
|
|
"<h3> $#{get_price_sale(available.product)} </h3>"
|
|
|
].compact
|
|
|
else
|
|
|
[
|
|
|
(image_tag img),
|
|
|
get_display_name(available.product),
|
|
|
- (category.parent_id == 0 ? category.category : category.parent.category),
|
|
|
+ (category.parent_id.zero? ? category.category : category.parent.category),
|
|
|
(category.parent_id != 0 ? category.category : ' '),
|
|
|
available.stock_min.round,
|
|
|
available.stock_max.round,
|
|
|
@@ -68,17 +61,12 @@ private
|
|
|
name += "<br> <i class='fa fa-barcode'></i>: #{product.barcode}"
|
|
|
end
|
|
|
|
|
|
- return name
|
|
|
-
|
|
|
+ name
|
|
|
end
|
|
|
|
|
|
def get_price_sale(product)
|
|
|
- if @current_user.usertype != 'S'
|
|
|
- location_id = params[:location][2, params[:location].length] if !params[:location].blank?
|
|
|
- return product.get_price_sale(location_id)
|
|
|
- else
|
|
|
- return ''
|
|
|
- end
|
|
|
+ location_id = params[:location][2, params[:location].length] unless params[:location].blank?
|
|
|
+ @current_user.usertype == 'S' ? '' : product.get_price_sale(location_id)
|
|
|
end
|
|
|
|
|
|
def stock
|
|
|
@@ -86,23 +74,22 @@ private
|
|
|
end
|
|
|
|
|
|
def fetch_stock
|
|
|
-
|
|
|
location = params[:location]
|
|
|
category = params[:category]
|
|
|
sub_category = params[:sub_category]
|
|
|
|
|
|
- location_id = params[:location][2, params[:location].length] if !location.blank?
|
|
|
+ location_id = params[:location][2, params[:location].length] unless location.blank?
|
|
|
|
|
|
- if ( @current_user.usertype == 'S' && location.blank? ) || ( !location.blank? && location.first == 'W' )
|
|
|
- stock = WarehouseStock.activos.includes(:categories, :warehouse).where(:warehouse_id => (location_id.blank? ? @current_user.warehouse_id : location_id) ).where('stock > 0')
|
|
|
- elsif ( @current_user.usertype != 'S' && location.blank? ) || ( !location.blank? && location.first == 'P' )
|
|
|
- stock = AvailableProduct.activos.includes(:categories, :pointsale).where(:pointsale_id => (location_id.blank? ? @current_user.pointsale_id : location_id) ).where('stock > 0')
|
|
|
+ if (@current_user.usertype == 'S' && location.blank?) || (!location.blank? && location.first == 'W')
|
|
|
+ stock = WarehouseStock.activos.includes(:categories, :warehouse).where(warehouse_id: (location_id.blank? ? @current_user.warehouse_id : location_id)).where('stock > 0')
|
|
|
+ elsif (@current_user.usertype != 'S' && location.blank?) || (!location.blank? && location.first == 'P')
|
|
|
+ stock = AvailableProduct.activos.includes(:categories, :pointsale).where(pointsale_id: (location_id.blank? ? @current_user.pointsale_id : location_id)).where('stock > 0')
|
|
|
end
|
|
|
|
|
|
if sub_category.present?
|
|
|
stock = stock.joins(:categories).where('categories.id = ?', sub_category)
|
|
|
elsif category.present?
|
|
|
- subs_ids = Category.activos.where(:parent_id => category).pluck(:id)
|
|
|
+ subs_ids = Category.activos.where(parent_id: category).pluck(:id)
|
|
|
stock = stock.joins(:categories).where('categories.id IN (?)', subs_ids)
|
|
|
end
|
|
|
|
|
|
@@ -110,7 +97,6 @@ private
|
|
|
stock = stock.page(page).per_page(per_page)
|
|
|
end
|
|
|
|
|
|
-
|
|
|
unless params[:busqueda].blank?
|
|
|
stock = stock.where("products.sku ilike :search or products.name ilike :search", search: "%#{params[:busqueda]}%")
|
|
|
end
|
|
|
@@ -119,7 +105,7 @@ private
|
|
|
end
|
|
|
|
|
|
def page
|
|
|
- params[:start].to_i/per_page + 1
|
|
|
+ params[:start].to_i / per_page + 1
|
|
|
end
|
|
|
|
|
|
def per_page
|
|
|
@@ -134,5 +120,4 @@ private
|
|
|
def sort_direction
|
|
|
params[:sSortDir_0] == "desc" ? "desc" : "asc"
|
|
|
end
|
|
|
-
|
|
|
end
|