Skip to content

Commit

Permalink
Orders and Distribution: Make SKU visible for items
Browse files Browse the repository at this point in the history
  • Loading branch information
jeronimo committed Mar 29, 2017
1 parent b1d69be commit 444ee92
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
angular.module("admin.reports").controller "ordersAndDistributorsController", ($scope, $http, OrdersAndDistributorsReport, Enterprises, OrderCycles, LineItems, Orders, Products) ->
angular.module("admin.reports").controller "ordersAndDistributorsController", ($scope, $http, OrdersAndDistributorsReport, Enterprises, OrderCycles, LineItems, Orders, Products, Variants) ->
$scope.orderCycles = OrderCycles.all
$scope.gridOptions = OrdersAndDistributorsReport.gridOptions()
$scope.gridOptions.onRegisterApi = (gridApi) -> $scope.gridApi = gridApi
Expand All @@ -12,8 +12,10 @@ angular.module("admin.reports").controller "ordersAndDistributorsController", ($
$http.get('/admin/reports/orders_and_distributors.json', params: params).success (data) ->
LineItems.load data.line_items
Orders.load data.orders
Variants.load data.variants
Products.load data.products
Enterprises.load data.distributors
Orders.linkToDistributors()
LineItems.linkToOrders()
LineItems.linkToVariants()
$scope.gridOptions.data = LineItems.all
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ angular.module("admin.reports").factory 'OrdersAndDistributorsReport', (uiGridGr
enableSorting: true
enableFiltering: true
columnDefs: [
{ field: 'order.created_at', displayName: 'Order date', width: '15%', visible: true, groupingShowAggregationMenu: false, groupingShowGroupingMenu: false }
{ field: 'order.id', displayName: 'Order ID', width: '8%', visible: true, groupingShowAggregationMenu: true, groupingShowGroupingMenu: true, grouping: { groupPriority: 1 } }
{ field: 'order.created_at', displayName: 'Order date', width: '15%', groupingShowAggregationMenu: false, groupingShowGroupingMenu: false, treeAggregationType: uiGridGroupingConstants.aggregation.CUSTOM, customTreeAggregationFn: @orderAggregator, customTreeAggregationFinalizerFn: @orderDateFinalizer }
{ field: 'order.id', displayName: 'Order ID', width: '8%', visible: true, groupingShowAggregationMenu: false, groupingShowGroupingMenu: false, grouping: { groupPriority: 2 } }
{ field: 'order.customer', displayName: 'Customer name', width: '15%', groupingShowAggregationMenu: false, groupingShowGroupingMenu: false, treeAggregationType: uiGridGroupingConstants.aggregation.CUSTOM, customTreeAggregationFn: @orderAggregator, customTreeAggregationFinalizerFn: @customerFinalizer }
{ field: 'order.email', displayName: 'Email', width: '15%', visible: true, groupingShowAggregationMenu: true, groupingShowGroupingMenu: truetreeAggregationType: uiGridGroupingConstants.aggregation.CUSTOM, customTreeAggregationFn: @orderAggregator, customTreeAggregationFinalizerFn: @customerEmailFinalizer }
{ field: 'order.phone', displayName: 'Phone', width: '10%', visible: true, groupingShowAggregationMenu: false, groupingShowGroupingMenu: false }
{ field: 'order.city', displayName: 'City', width: '10%', visible: true, groupingShowAggregationMenu: false, groupingShowGroupingMenu: false }
{ field: 'product.sku', displayName: 'SKU', width: '5%', visible: true, groupingShowAggregationMenu: false, groupingShowGroupingMenu: false }
{ field: 'product.name', displayName: 'Item name', width: '10%', visible: true, groupingShowAggregationMenu: false, groupingShowGroupingMenu: false }
{ field: 'full_name', displayName: 'Variant', width: '10%', visible: true, groupingShowAggregationMenu: false, groupingShowGroupingMenu: false }
{ field: 'order.email', displayName: 'Email', width: '15%', groupingShowAggregationMenu: false, groupingShowGroupingMenu: false, treeAggregationType: uiGridGroupingConstants.aggregation.CUSTOM, customTreeAggregationFn: @orderAggregator, customTreeAggregationFinalizerFn: @customerEmailFinalizer }
{ field: 'order.phone', displayName: 'Phone', width: '10%', groupingShowAggregationMenu: false, groupingShowGroupingMenu: false, treeAggregationType: uiGridGroupingConstants.aggregation.CUSTOM, customTreeAggregationFn: @orderAggregator, customTreeAggregationFinalizerFn: @customerPhoneFinalizer }
{ field: 'order.city', displayName: 'City', width: '10%', groupingShowAggregationMenu: false, groupingShowGroupingMenu: false, treeAggregationType: uiGridGroupingConstants.aggregation.CUSTOM, customTreeAggregationFn: @orderAggregator, customTreeAggregationFinalizerFn: @customerCityFinalizer }
{ field: 'variant.sku', displayName: 'SKU', width: '5%', groupingShowAggregationMenu: false, groupingShowGroupingMenu: false }
{ field: 'product.name', displayName: 'Item name', width: '10%', groupingShowAggregationMenu: false, groupingShowGroupingMenu: false }
{ field: 'full_name', displayName: 'Variant', width: '10%', groupingShowAggregationMenu: false, groupingShowGroupingMenu: false }
{ field: 'quantity', displayName: 'Qty', width: '5%', groupingShowAggregationMenu: false, groupingShowGroupingMenu: false }
{ field: 'max_quantity', displayName: 'Max Qty', width: '5%', groupingShowAggregationMenu: false, groupingShowGroupingMenu: false }
{ field: 'cost', displayName: 'Cost', width: '5%', groupingShowAggregationMenu: false, groupingShowGroupingMenu: false }
Expand All @@ -35,6 +35,15 @@ angular.module("admin.reports").factory 'OrdersAndDistributorsReport', (uiGridGr
customerEmailFinalizer: (aggregation) ->
aggregation.rendered = aggregation.order.email

orderDateFinalizer: (aggregation) ->
aggregation.rendered = aggregation.order.created_at

customerPhoneFinalizer: (aggregation) ->
aggregation.rendered = aggregation.order.phone

customerCityFinalizer: (aggregation) ->
aggregation.rendered = aggregation.order.city

productFinalizer: (aggregation) ->
aggregation.rendered = "TOTAL"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,10 @@ angular.module("admin.resources").factory 'LineItems', ($q, $injector, LineItemR
ordersByID = $injector.get('Orders').byID
for id, lineItem of @byID
lineItem.order = ordersByID[lineItem.order.id] if lineItem.order?

linkToVariants: ->
if $injector.has('Variants')
variantsByID = $injector.get('Variants').byID
for id, lineItem of @byID
lineItem.variant = variantsByID[lineItem.variant.id] if lineItem.variant?

3 changes: 2 additions & 1 deletion app/controllers/spree/admin/reports_controller_decorator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,9 @@ def orders_and_distributors
orders = ActiveModel::ArraySerializer.new(orders, each_serializer: Api::Admin::Reports::OrderSerializer)
products = ActiveModel::ArraySerializer.new(products, each_serializer: Api::Admin::Reports::ProductSerializer)
distributors = ActiveModel::ArraySerializer.new(distributors, each_serializer: Api::Admin::Reports::EnterpriseSerializer)
variants = ActiveModel::ArraySerializer.new(variants, each_serializer: Api::Admin::Reports::VariantSerializer)

report_data = { line_items: line_items, orders: orders, products: products, distributors: distributors }
report_data = { line_items: line_items, orders: orders, products: products, distributors: distributors, variants: variants }
render json: report_data
else
prepare_date_params params
Expand Down
1 change: 1 addition & 0 deletions app/serializers/api/admin/reports/line_item_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ class Api::Admin::Reports::LineItemSerializer < ActiveModel::Serializer

has_one :order, serializer: Api::Admin::IdSerializer
has_one :product, serializer: Api::Admin::IdNameSerializer
has_one :variant, serializer: Api::Admin::IdSerializer

def price
object.amount.to_f
Expand Down
2 changes: 1 addition & 1 deletion app/serializers/api/admin/reports/variant_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
class Api::Admin::Reports::VariantSerializer < ActiveModel::Serializer
attributes :id, :options_text
attributes :id, :options_text, :sku
end
2 changes: 1 addition & 1 deletion lib/open_food_network/order_and_distributor_report.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def table_items
orders = search.result

line_items = permissions.visible_line_items.merge(Spree::LineItem.where(order_id: orders))
line_items = line_items.preload([:order, :product])
line_items = line_items.preload([:order, :variant, :product])
line_items = line_items.supplied_by_any(params[:supplier_id_in]) if params[:supplier_id_in].present?

line_items
Expand Down

0 comments on commit 444ee92

Please sign in to comment.