diff --git a/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_exchanges_controller.js.coffee b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_exchanges_controller.js.coffee index 9d0fff7929..ee7c1aa5cf 100644 --- a/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_exchanges_controller.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/controllers/order_cycle_exchanges_controller.js.coffee @@ -18,7 +18,8 @@ angular.module('admin.orderCycles') OrderCycle.exchangeDirection(exchange) $scope.enterprisesWithFees = -> - $scope.enterprises[id] for id in [OrderCycle.participatingEnterpriseIds()..., [OrderCycle.order_cycle.coordinator_id]...] when $scope.enterpriseFeesForEnterprise(id).length > 0 + ids = [OrderCycle.participatingEnterpriseIds()..., [OrderCycle.order_cycle.coordinator_id]...] + $scope.enterprises[id] for id in Array.from(new Set(ids)) when $scope.enterpriseFeesForEnterprise(id).length > 0 $scope.removeExchange = ($event, exchange) -> $event.preventDefault() diff --git a/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee b/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee index 25a5606370..88ad9da1b8 100644 --- a/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee @@ -93,9 +93,9 @@ angular.module('admin.orderCycles').factory 'OrderCycle', ($resource, $window, $ variant_ids participatingEnterpriseIds: -> - suppliers = (exchange.enterprise_id for exchange in this.order_cycle.incoming_exchanges) - distributors = (exchange.enterprise_id for exchange in this.order_cycle.outgoing_exchanges) - jQuery.unique(suppliers.concat(distributors)).sort() + suppliers = (parseInt(exchange.enterprise_id) for exchange in this.order_cycle.incoming_exchanges) + distributors = (parseInt(exchange.enterprise_id) for exchange in this.order_cycle.outgoing_exchanges) + Array.from(new Set([suppliers..., distributors...])) exchangesByDirection: (direction) -> if direction == 'incoming' diff --git a/spec/javascripts/unit/admin/order_cycles/controllers/order_cycle_exchanges_controller_spec.js.coffee b/spec/javascripts/unit/admin/order_cycles/controllers/order_cycle_exchanges_controller_spec.js.coffee index 89768cd8db..af2f0012da 100644 --- a/spec/javascripts/unit/admin/order_cycles/controllers/order_cycle_exchanges_controller_spec.js.coffee +++ b/spec/javascripts/unit/admin/order_cycles/controllers/order_cycle_exchanges_controller_spec.js.coffee @@ -57,6 +57,21 @@ describe 'AdminOrderCycleExchangesCtrl', -> {id: 2, name: 'Pepper Tree Place'}, {id: 4, name: 'coordinator'} ]) + + it 'Finds unique enterprises participating in the order cycle that have fees', -> + scope.enterpriseFeesForEnterprise = (enterprise_id) -> + EnterpriseFee.forEnterprise(parseInt(enterprise_id)) + scope.enterprises = + 1: {id: 1, name: 'Eaterprises'} + 2: {id: 2, name: 'Pepper Tree Place'} + 3: {id: 3, name: 'South East'} + 4: {id: 4, name: 'coordinator'} + OrderCycle.participatingEnterpriseIds = jasmine.createSpy('participatingEnterpriseIds').and.returnValue([2, 2]) + EnterpriseFee.enterprise_fees = [ {enterprise_id: 2} ] + expect(scope.enterprisesWithFees()).toEqual([ + {id: 2, name: 'Pepper Tree Place'}, + {id: 4, name: 'coordinator'} + ]) it 'Removes order cycle exchanges', -> scope.removeExchange(event, 'exchange')