Sha256: 08cdd7b1c6b18e3da12c7c77923654f56c44cd5bf8f4b39685b44ebc8e54a5b2

Contents?: true

Size: 1.34 KB

Versions: 3

Compression:

Stored size: 1.34 KB

Contents

module Spree
  class ReturnedProductsReport < Spree::Report
    DEFAULT_SORTABLE_ATTRIBUTE = :product_name
    HEADERS                    = { sku: :string, product_name: :string, return_count: :integer }
    SEARCH_ATTRIBUTES          = { start_date: :product_returned_from, end_date: :product_returned_till }
    SORTABLE_ATTRIBUTES        = [:product_name, :sku, :return_count]

    deeplink product_name: { template: %Q{<a href="/admin/products/{%# o.product_slug %}" target="_blank">{%# o.product_name %}</a>} }

    class Result < Spree::Report::Result
      class Observation < Spree::Report::Observation
        observation_fields [:sku, :product_name, :return_count, :product_slug]

        def sku
          @sku.presence || @product_name
        end
      end
    end

    def report_query
      Spree::ReturnAuthorization
        .joins(:return_items)
        .joins(:inventory_units)
        .joins(:variants)
        .joins(:products)
        .where(spree_return_items: { created_at: reporting_period })
        .group('spree_variants.id', 'spree_products.name', 'spree_products.slug', 'spree_variants.sku')
        .select(
          'spree_products.name       as product_name',
          'spree_products.slug       as product_slug',
          'spree_variants.sku        as sku',
          'COUNT(spree_variants.id)  as return_count'
        )
    end

  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
spree_admin_insights-3.2.0 app/reports/spree/returned_products_report.rb
solidus_admin_insights-2.1.1 app/reports/spree/returned_products_report.rb
solidus_admin_insights-2.1.0 app/reports/spree/returned_products_report.rb