@@ -16,30 +16,21 @@ def recreate_all_fees!
16
16
# See https://github.com/rails/rails/blob/3-2-stable/activerecord/lib/active_record/locking/pessimistic.rb#L69
17
17
# and https://www.postgresql.org/docs/current/static/sql-select.html#SQL-FOR-UPDATE-SHARE
18
18
order . with_lock do
19
- EnterpriseFee . clear_order_adjustments order
19
+ EnterpriseFee . clear_all_adjustments order
20
20
21
- # To prevent issue with fee being removed when a product is not linked to the order cycle
22
- # anymore, we now create or update line item fees.
23
- # Previously fees were deleted and recreated, like we still do for order fees.
24
- create_or_update_line_item_fees!
21
+ create_line_item_fees!
25
22
create_order_fees!
26
23
end
27
24
28
25
tax_enterprise_fees! unless order . before_payment_state?
29
26
order . update_order!
30
27
end
31
28
32
- def create_or_update_line_item_fees!
33
- order . line_items . includes ( :variant ) . each do |line_item |
34
- # No fee associated with the line item so we just create them
35
- if line_item . enterprise_fee_adjustments . blank?
36
- create_line_item_fees! ( line_item )
37
- next
29
+ def create_line_item_fees!
30
+ order . line_items . includes ( variant : :product ) . each do |line_item |
31
+ if provided_by_order_cycle? line_item
32
+ calculator . create_line_item_adjustments_for line_item
38
33
end
39
-
40
- create_or_update_line_item_fee! ( line_item )
41
-
42
- delete_removed_fees! ( line_item )
43
34
end
44
35
end
45
36
@@ -75,34 +66,5 @@ def provided_by_order_cycle?(line_item)
75
66
@order_cycle_variant_ids ||= order_cycle &.variants &.map ( &:id ) || [ ]
76
67
@order_cycle_variant_ids . include? line_item . variant_id
77
68
end
78
-
79
- def create_line_item_fees! ( line_item )
80
- return unless provided_by_order_cycle? line_item
81
-
82
- calculator . create_line_item_adjustments_for ( line_item )
83
- end
84
-
85
- def create_or_update_line_item_fee! ( line_item )
86
- fee_applicators ( line_item . variant ) . each do |fee_applicator |
87
- fee_adjustment = line_item . adjustments . find_by ( originator : fee_applicator . enterprise_fee )
88
-
89
- if fee_adjustment
90
- fee_adjustment . update_adjustment! ( line_item , force : true )
91
- elsif provided_by_order_cycle? line_item
92
- fee_applicator . create_line_item_adjustment ( line_item )
93
- end
94
- end
95
- end
96
-
97
- def delete_removed_fees! ( line_item )
98
- order_cycle_fees = fee_applicators ( line_item . variant ) . map ( &:enterprise_fee )
99
- removed_fees = line_item . enterprise_fee_adjustments . where . not ( originator : order_cycle_fees )
100
-
101
- removed_fees . each ( &:destroy )
102
- end
103
-
104
- def fee_applicators ( variant )
105
- calculator . order_cycle_per_item_enterprise_fee_applicators_for ( variant )
106
- end
107
69
end
108
70
end
0 commit comments