spree_backend 2.0.7 → 2.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/admin/admin.js.erb +10 -9
  3. data/app/assets/javascripts/admin/line_items.js.coffee +61 -0
  4. data/app/assets/javascripts/admin/payments/edit.js.coffee +1 -1
  5. data/app/assets/javascripts/admin/product_picker.js +2 -1
  6. data/app/assets/javascripts/admin/shipments.js.erb +243 -0
  7. data/app/assets/javascripts/admin/variant_autocomplete.js.erb +0 -244
  8. data/app/assets/javascripts/admin/variant_management.js.coffee +10 -0
  9. data/app/controllers/spree/admin/orders/customer_details_controller.rb +4 -0
  10. data/app/controllers/spree/admin/orders_controller.rb +3 -4
  11. data/app/controllers/spree/admin/payments_controller.rb +4 -0
  12. data/app/controllers/spree/admin/reports_controller.rb +20 -4
  13. data/app/controllers/spree/admin/resource_controller.rb +6 -3
  14. data/app/controllers/spree/admin/variants_including_master_controller.rb +15 -0
  15. data/app/helpers/spree/admin/base_helper.rb +1 -1
  16. data/app/helpers/spree/admin/navigation_helper.rb +5 -2
  17. data/app/helpers/spree/admin/stock_movements_helper.rb +5 -1
  18. data/app/views/spree/admin/mail_methods/_form.html.erb +2 -2
  19. data/app/views/spree/admin/orders/_form.html.erb +5 -1
  20. data/app/views/spree/admin/orders/_line_items.html.erb +46 -0
  21. data/app/views/spree/admin/orders/_shipment.html.erb +10 -2
  22. data/app/views/spree/admin/orders/customer_details/edit.html.erb +1 -1
  23. data/app/views/spree/admin/orders/index.html.erb +10 -4
  24. data/app/views/spree/admin/payment_methods/_form.html.erb +0 -2
  25. data/app/views/spree/admin/products/_form.html.erb +0 -1
  26. data/app/views/spree/admin/products/stock.html.erb +9 -0
  27. data/app/views/spree/admin/shared/_destroy.js.erb +5 -14
  28. data/app/views/spree/admin/shared/_order_tabs.html.erb +4 -4
  29. data/app/views/spree/admin/variants/update.js.erb +1 -0
  30. data/config/routes.rb +1 -0
  31. metadata +24 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 40b3e0c50a3466e2d27a556b75ddb02aa69ddb0c
4
- data.tar.gz: cc2fab5e9597e131ce33008e97c28fd611d65830
3
+ metadata.gz: c3c7d240755279b9b1986b47039266db4ca6b87f
4
+ data.tar.gz: 1967d9b543c924495c3d8ec0155a56aa5b6e5822
5
5
  SHA512:
6
- metadata.gz: 7e36ce2f094093b78ad6e89f3eb08ffa2595ff8ac01d714c0f73e7d85f87368803a409aaf6cb5e651f79be681a4066f722c02fc1e33278900570dcff392f88b6
7
- data.tar.gz: 257141c17829aabbcc8c15b46d3218751a3f7e4047b51ab0ff262927a461a3cf7ce7122070a629ef95983bc4f9a61f11cb5c406e9842d50ce8e8190c817d37ee
6
+ metadata.gz: 9f775eddc2be3f07de1afc10dc055aca996de2a9e7414d49147d99016c9653a54a469f66b7943503cacaa89c34653556904fe088c43866bc5d16fa4f8772c3b2
7
+ data.tar.gz: 4d1a6db7a3b72b22d5438e1d9fbc5f63f2823387c4bad175827d57e963b328fd767b26f740436e6ec81f7aefde47a6d0745cfee135ed5562c1e44dc60171bb96
@@ -78,15 +78,16 @@ jQuery(function($) {
78
78
 
79
79
  $.fn.visible = function(cond) { this[cond ? 'show' : 'hide' ]() };
80
80
 
81
- show_flash_error = function(message) {
82
- var error_div = $('.flash.error');
83
- if (error_div.length == 0) {
84
- error_div = $('<div class="flash error" />');
85
- $('#wrapper').prepend(error_div);
81
+ show_flash = function(type, message) {
82
+ var flash_div = $('.flash.' + type);
83
+ if (flash_div.length == 0) {
84
+ flash_div = $('<div class="flash ' + type + '" />');
85
+ $('#wrapper').prepend(flash_div);
86
86
  }
87
- error_div.html(message).show().fadeOut(5000);
87
+ flash_div.html(message).show().delay(5000).fadeOut(500);
88
88
  }
89
89
 
90
+
90
91
  // Apply to individual radio button that makes another element visible when checked
91
92
  $.fn.radioControlsVisibilityOfElement = function(dependentElementSelector){
92
93
  if(!this.get(0)){ return }
@@ -169,12 +170,12 @@ $(document).ready(function(){
169
170
  _method: 'delete',
170
171
  authenticity_token: AUTH_TOKEN
171
172
  },
172
- dataType: 'html',
173
+ dataType: 'script',
173
174
  success: function(response) {
174
175
  el.parents("tr").fadeOut('hide');
175
176
  },
176
177
  error: function(response, textStatus, errorThrown) {
177
- show_flash_error(response.responseText);
178
+ show_flash('error', response.responseText);
178
179
  }
179
180
  });
180
181
  }
@@ -199,7 +200,7 @@ $(document).ready(function(){
199
200
  el.parents("tr").fadeOut('hide');
200
201
  },
201
202
  error: function(response, textStatus, errorThrown) {
202
- show_flash_error(response.responseText);
203
+ show_flash('error', response.responseText);
203
204
  }
204
205
 
205
206
  })
@@ -0,0 +1,61 @@
1
+ $(document).ready ->
2
+ #handle edit click
3
+ $('a.edit-line-item').click toggleLineItemEdit
4
+
5
+ #handle cancel click
6
+ $('a.cancel-line-item').click toggleLineItemEdit
7
+
8
+ #handle save click
9
+ $('a.save-line-item').click ->
10
+ save = $ this
11
+ line_item_id = save.data('line-item-id')
12
+ quantity = parseInt(save.parents('tr').find('input.line_item_quantity').val())
13
+
14
+ toggleItemEdit()
15
+ adjustLineItem(line_item_id, quantity)
16
+ false
17
+
18
+ # handle delete click
19
+ $('a.delete-line-item').click ->
20
+ if confirm(Spree.translations.are_you_sure_delete)
21
+ del = $(this);
22
+ line_item_id = del.data('line-item-id');
23
+
24
+ toggleItemEdit()
25
+ deleteLineItem(line_item_id)
26
+
27
+ toggleLineItemEdit = ->
28
+ link = $(this);
29
+ link.parent().find('a.edit-line-item').toggle();
30
+ link.parent().find('a.cancel-line-item').toggle();
31
+ link.parent().find('a.save-line-item').toggle();
32
+ link.parent().find('a.delete-line-item').toggle();
33
+ link.parents('tr').find('td.line-item-qty-show').toggle();
34
+ link.parents('tr').find('td.line-item-qty-edit').toggle();
35
+
36
+ false
37
+
38
+ lineItemURL = (line_item_id) ->
39
+ url = Spree.routes.orders_api + "/" + order_number + "/line_items/" + line_item_id + ".json"
40
+
41
+ adjustLineItem = (line_item_id, quantity) ->
42
+ url = lineItemURL(line_item_id)
43
+ $.ajax(
44
+ type: "PUT",
45
+ url: Spree.url(url),
46
+ data:
47
+ line_item:
48
+ quantity: quantity
49
+ ).done (msg) ->
50
+ advanceOrder()
51
+
52
+ deleteLineItem = (line_item_id) ->
53
+ url = lineItemURL(line_item_id)
54
+ $.ajax(
55
+ type: "DELETE"
56
+ url: Spree.url(url)
57
+ ).done (msg) ->
58
+ $('#line-item-' + line_item_id).remove()
59
+ if $('.line-items tr.line-item').length == 0
60
+ $('.line-items').remove()
61
+ advanceOrder()
@@ -19,7 +19,7 @@ jQuery ($) ->
19
19
  @data = data
20
20
  jqXHR.fail ->
21
21
  response = $.parseJSON(jqXHR.responseText)
22
- show_flash_error(response.error)
22
+ show_flash('error', response.error)
23
23
 
24
24
  amount: -> @data.amount
25
25
  display_amount: -> @data.display_amount
@@ -24,8 +24,9 @@ $.fn.productAutocomplete = function () {
24
24
  };
25
25
  },
26
26
  results: function (data, page) {
27
+ var products = data.products ? data.products : [];
27
28
  return {
28
- results: data.products
29
+ results: products
29
30
  };
30
31
  }
31
32
  },
@@ -2,6 +2,62 @@
2
2
  $(document).ready(function () {
3
3
  'use strict';
4
4
 
5
+ // handle variant selection, show stock level.
6
+ $('#add_variant_id').change(function(){
7
+ var variant_id = $(this).val();
8
+
9
+ var variant = _.find(window.variants, function(variant){
10
+ return variant.id == variant_id
11
+ })
12
+ $('#stock_details').html(variantStockTemplate({variant: variant}));
13
+ $('#stock_details').show();
14
+
15
+ $('button.add_variant').click(addVariantFromStockLocation);
16
+
17
+ // Add some tips
18
+ $('.with-tip').powerTip({
19
+ smartPlacement: true,
20
+ fadeInTime: 50,
21
+ fadeOutTime: 50,
22
+ intentPollInterval: 300
23
+ });
24
+
25
+ });
26
+
27
+ //handle edit click
28
+ $('a.edit-item').click(toggleItemEdit);
29
+
30
+ //handle cancel click
31
+ $('a.cancel-item').click(toggleItemEdit);
32
+
33
+ //handle split click
34
+ $('a.split-item').click(startItemSplit);
35
+
36
+ //handle save click
37
+ $('a.save-item').click(function(){
38
+ var save = $(this);
39
+ var shipment_number = save.data('shipment-number');
40
+ var variant_id = save.data('variant-id');
41
+
42
+ var quantity = parseInt(save.parents('tr').find('input.line_item_quantity').val());
43
+
44
+ toggleItemEdit();
45
+ adjustShipmentItems(shipment_number, variant_id, quantity);
46
+ return false;
47
+ });
48
+
49
+ //handle delete click
50
+ $('a.delete-item').click(function(){
51
+ if (confirm(Spree.translations.are_you_sure_delete)) {
52
+ var del = $(this);
53
+ var shipment_number = del.data('shipment-number');
54
+ var variant_id = del.data('variant-id');
55
+
56
+ toggleItemEdit();
57
+ adjustShipmentItems(shipment_number, variant_id, 0);
58
+ }
59
+ });
60
+
5
61
  // handle ship click
6
62
  $('[data-hook=admin_order_edit_form] a.ship').on('click', function () {
7
63
  var link = $(this);
@@ -72,3 +128,190 @@ $(document).ready(function () {
72
128
  });
73
129
 
74
130
  });
131
+
132
+
133
+ adjustShipmentItems = function(shipment_number, variant_id, quantity){
134
+ var shipment = _.findWhere(shipments, {number: shipment_number + ''});
135
+ var inventory_units = _.where(shipment.inventory_units, {variant_id: variant_id});
136
+
137
+ var url = Spree.routes.orders_api + "/" + order_number + "/shipments/" + shipment_number;
138
+
139
+ var new_quantity = 0;
140
+ if(inventory_units.length<quantity){
141
+ url += "/add"
142
+ new_quantity = (quantity - inventory_units.length);
143
+ }else if(inventory_units.length>quantity){
144
+ url += "/remove"
145
+ new_quantity = (inventory_units.length - quantity);
146
+ }
147
+ url += '.json';
148
+
149
+ if(new_quantity!=0){
150
+ $.ajax({
151
+ type: "PUT",
152
+ url: Spree.url(url),
153
+ data: { variant_id: variant_id, quantity: new_quantity }
154
+ }).done(function( msg ) {
155
+ advanceOrder();
156
+ });
157
+ }
158
+ }
159
+
160
+ toggleTrackingEdit = function(){
161
+ var link = $(this);
162
+ link.parents('tbody').find('tr.edit-tracking').toggle();
163
+ link.parents('tbody').find('tr.show-tracking').toggle();
164
+ }
165
+
166
+ toggleMethodEdit = function(){
167
+ var link = $(this);
168
+ link.parents('tbody').find('tr.edit-method').toggle();
169
+ link.parents('tbody').find('tr.show-method').toggle();
170
+ }
171
+
172
+ toggleItemEdit = function(){
173
+ var link = $(this);
174
+ link.parent().find('a.edit-item').toggle();
175
+ link.parent().find('a.cancel-item').toggle();
176
+ link.parent().find('a.split-item').toggle();
177
+ link.parent().find('a.save-item').toggle();
178
+ link.parent().find('a.delete-item').toggle();
179
+ link.parents('tr').find('td.item-qty-show').toggle();
180
+ link.parents('tr').find('td.item-qty-edit').toggle();
181
+
182
+ return false;
183
+ }
184
+
185
+ startItemSplit = function(event){
186
+ event.preventDefault();
187
+ var link = $(this);
188
+ link.parent().find('a.edit-item').toggle();
189
+ link.parent().find('a.split-item').toggle();
190
+ link.parent().find('a.delete-item').toggle();
191
+ var variant_id = link.data('variant-id');
192
+
193
+ var variant = {};
194
+ $.ajax({
195
+ type: "GET",
196
+ async: false,
197
+ url: Spree.url(Spree.routes.variants_api),
198
+ data: {
199
+ q: {
200
+ "id_eq": variant_id
201
+ }
202
+ }
203
+ }).success(function( data ) {
204
+ variant = data['variants'][0];
205
+ }).error(function( msg ) {
206
+ console.log(msg);
207
+ });
208
+
209
+ var max_quantity = link.closest('tr').data('item-quantity');
210
+ var split_item_template = Handlebars.compile($('#variant_split_template').text());
211
+ link.closest('tr').after(split_item_template({ variant: variant, shipments: shipments, max_quantity: max_quantity }));
212
+ $('a.cancel-split').click(cancelItemSplit);
213
+ $('a.save-split').click(completeItemSplit);
214
+
215
+ // Add some tips
216
+ $('.with-tip').powerTip({
217
+ smartPlacement: true,
218
+ fadeInTime: 50,
219
+ fadeOutTime: 50,
220
+ intentPollInterval: 300
221
+ });
222
+ $('#item_stock_location').select2({ width: 'resolve', placeholder: 'Choose Location' });
223
+ }
224
+
225
+ completeItemSplit = function(event) {
226
+ event.preventDefault();
227
+ var link = $(this);
228
+ var order_number = link.closest('tbody').data('order-number');
229
+ var stock_item_row = link.closest('tr');
230
+ var variant_id = stock_item_row.data('variant-id');
231
+ var quantity = stock_item_row.find('#item_quantity').val();
232
+
233
+ var stock_location_id = stock_item_row.find('#item_stock_location').val();
234
+ var original_shipment_number = link.closest('tbody').data('shipment-number');
235
+
236
+ var selected_shipment = stock_item_row.find($('#item_stock_location').select2('data').element);
237
+ var target_shipment_number = selected_shipment.data('shipment-number');
238
+ var new_shipment = selected_shipment.data('new-shipment');
239
+
240
+ if (stock_location_id != 'new_shipment') {
241
+ // first remove item(s) from original shipment
242
+ $.ajax({
243
+ type: "PUT",
244
+ async: false,
245
+ url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments/" + original_shipment_number + "/remove.json"),
246
+ data: { variant_id: variant_id, quantity: quantity }
247
+ });
248
+
249
+ if (new_shipment != undefined) {
250
+ $.ajax({
251
+ type: "POST",
252
+ async: false,
253
+ url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments.json"),
254
+ data: { variant_id: variant_id, quantity: quantity, stock_location_id: stock_location_id }
255
+ }).done(function(msg) {
256
+ advanceOrder();
257
+ });
258
+ } else {
259
+ $.ajax({
260
+ type: "PUT",
261
+ async: false,
262
+ url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments/" + target_shipment_number + "/add.json"),
263
+ data: { variant_id: variant_id, quantity: quantity }
264
+ }).done(function(msg) {
265
+ advanceOrder();
266
+ });
267
+ }
268
+ }
269
+ }
270
+
271
+ advanceOrder = function() {
272
+ $.ajax({
273
+ type: "PUT",
274
+ async: false,
275
+ url: Spree.url(Spree.routes.checkouts_api + "/" + order_number + "/advance")
276
+ }).done(function() {
277
+ window.location.reload();
278
+ });
279
+ }
280
+
281
+ cancelItemSplit = function(event) {
282
+ event.preventDefault();
283
+ var link = $(this);
284
+ var prev_row = link.closest('tr').prev();
285
+ link.closest('tr').remove();
286
+ prev_row.find('a.edit-item').toggle();
287
+ prev_row.find('a.split-item').toggle();
288
+ prev_row.find('a.delete-item').toggle();
289
+ }
290
+
291
+ addVariantFromStockLocation = function() {
292
+ $('#stock_details').hide();
293
+
294
+ var variant_id = $('input.variant_autocomplete').val();
295
+ var stock_location_id = $(this).data('stock-location-id');
296
+ var quantity = $("input.quantity[data-stock-location-id='" + stock_location_id + "']").val();
297
+
298
+ var shipment = _.find(shipments, function(shipment){
299
+ return shipment.stock_location_id == stock_location_id && (shipment.state == 'ready' || shipment.state == 'pending');
300
+ });
301
+
302
+ if(shipment==undefined){
303
+ $.ajax({
304
+ type: "POST",
305
+ url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments.json"),
306
+ data: { variant_id: variant_id, quantity: quantity, stock_location_id: stock_location_id }
307
+ }).done(function( msg ) {
308
+ advanceOrder();
309
+ }).error(function( msg ) {
310
+ console.log(msg);
311
+ });
312
+ }else{
313
+ //add to existing shipment
314
+ adjustShipmentItems(shipment.number, variant_id, quantity);
315
+ }
316
+ return 1
317
+ }
@@ -6,253 +6,9 @@ $(document).ready(function() {
6
6
  if ($('#variant_autocomplete_template').length > 0) {
7
7
  window.variantTemplate = Handlebars.compile($('#variant_autocomplete_template').text());
8
8
  window.variantStockTemplate = Handlebars.compile($('#variant_autocomplete_stock_template').text());
9
-
10
- // handle variant selection, show stock level.
11
- $('#add_variant_id').change(function(){
12
- var variant_id = $(this).val();
13
-
14
- var variant = _.find(window.variants, function(variant){
15
- return variant.id == variant_id
16
- })
17
- $('#stock_details').html(variantStockTemplate({variant: variant}));
18
- $('#stock_details').show();
19
-
20
- $('button.add_variant').click(addVariantFromStockLocation);
21
-
22
- // Add some tips
23
- $('.with-tip').powerTip({
24
- smartPlacement: true,
25
- fadeInTime: 50,
26
- fadeOutTime: 50,
27
- intentPollInterval: 300
28
- });
29
-
30
- });
31
-
32
- //handle edit click
33
- $('a.edit-item').click(toggleItemEdit);
34
-
35
- //handle cancel click
36
- $('a.cancel-item').click(toggleItemEdit);
37
-
38
- //handle split click
39
- $('a.split-item').click(startItemSplit);
40
-
41
- //handle save click
42
- $('a.save-item').click(function(){
43
- var save = $(this);
44
- var shipment_number = save.data('shipment-number');
45
- var variant_id = save.data('variant-id');
46
-
47
- var quantity = parseInt(save.parents('tr').find('input.line_item_quantity').val());
48
-
49
- toggleItemEdit();
50
-
51
- adjustItems(shipment_number, variant_id, quantity);
52
- return false;
53
- });
54
-
55
- //handle delete click
56
- $('a.delete-item').click(function(){
57
- if (confirm(Spree.translations.are_you_sure_delete)) {
58
- var del = $(this);
59
- var shipment_number = del.data('shipment-number');
60
- var variant_id = del.data('variant-id');
61
-
62
- toggleItemEdit();
63
-
64
- adjustItems(shipment_number, variant_id, 0);
65
- }
66
- });
67
9
  }
68
10
  });
69
11
 
70
- adjustItems = function(shipment_number, variant_id, quantity){
71
- var shipment = _.findWhere(shipments, {number: shipment_number + ''});
72
- var inventory_units = _.where(shipment.inventory_units, {variant_id: variant_id});
73
-
74
- var url = Spree.routes.orders_api + "/" + order_number + "/shipments/" + shipment_number;
75
-
76
- var new_quantity = 0;
77
- if(inventory_units.length<quantity){
78
- url += "/add"
79
- new_quantity = (quantity - inventory_units.length);
80
- }else if(inventory_units.length>quantity){
81
- url += "/remove"
82
- new_quantity = (inventory_units.length - quantity);
83
- }
84
- url += '.json';
85
-
86
- if(new_quantity!=0){
87
- $.ajax({
88
- type: "PUT",
89
- url: Spree.url(url),
90
- data: { variant_id: variant_id, quantity: new_quantity }
91
- }).done(function( msg ) {
92
- advanceOrder();
93
- });
94
- }
95
- }
96
-
97
- toggleTrackingEdit = function(){
98
- var link = $(this);
99
- link.parents('tbody').find('tr.edit-tracking').toggle();
100
- link.parents('tbody').find('tr.show-tracking').toggle();
101
- }
102
-
103
- toggleMethodEdit = function(){
104
- var link = $(this);
105
- link.parents('tbody').find('tr.edit-method').toggle();
106
- link.parents('tbody').find('tr.show-method').toggle();
107
- }
108
-
109
- toggleItemEdit = function(){
110
- var link = $(this);
111
- link.parent().find('a.edit-item').toggle();
112
- link.parent().find('a.cancel-item').toggle();
113
- link.parent().find('a.split-item').toggle();
114
- link.parent().find('a.save-item').toggle();
115
- link.parent().find('a.delete-item').toggle();
116
- link.parents('tr').find('td.item-qty-show').toggle();
117
- link.parents('tr').find('td.item-qty-edit').toggle();
118
-
119
- return false;
120
- }
121
-
122
- startItemSplit = function(event){
123
- event.preventDefault();
124
- var link = $(this);
125
- link.parent().find('a.edit-item').toggle();
126
- link.parent().find('a.split-item').toggle();
127
- link.parent().find('a.delete-item').toggle();
128
- var variant_id = link.data('variant-id');
129
-
130
- var variant = {};
131
- $.ajax({
132
- type: "GET",
133
- async: false,
134
- url: Spree.url(Spree.routes.variants_api),
135
- data: {
136
- q: {
137
- "id_eq": variant_id
138
- }
139
- }
140
- }).success(function( data ) {
141
- variant = data['variants'][0];
142
- }).error(function( msg ) {
143
- console.log(msg);
144
- });
145
-
146
- var max_quantity = link.closest('tr').data('item-quantity');
147
- var split_item_template = Handlebars.compile($('#variant_split_template').text());
148
- link.closest('tr').after(split_item_template({ variant: variant, shipments: shipments, max_quantity: max_quantity }));
149
- $('a.cancel-split').click(cancelItemSplit);
150
- $('a.save-split').click(completeItemSplit);
151
-
152
- // Add some tips
153
- $('.with-tip').powerTip({
154
- smartPlacement: true,
155
- fadeInTime: 50,
156
- fadeOutTime: 50,
157
- intentPollInterval: 300
158
- });
159
- $('#item_stock_location').select2({ width: 'resolve', placeholder: 'Choose Location' });
160
- }
161
-
162
- completeItemSplit = function(event) {
163
- event.preventDefault();
164
- var link = $(this);
165
- var order_number = link.closest('tbody').data('order-number');
166
- var stock_item_row = link.closest('tr');
167
- var variant_id = stock_item_row.data('variant-id');
168
- var quantity = stock_item_row.find('#item_quantity').val();
169
-
170
- var stock_location_id = stock_item_row.find('#item_stock_location').val();
171
- var original_shipment_number = link.closest('tbody').data('shipment-number');
172
-
173
- var selected_shipment = stock_item_row.find($('#item_stock_location').select2('data').element);
174
- var target_shipment_number = selected_shipment.data('shipment-number');
175
- var new_shipment = selected_shipment.data('new-shipment');
176
-
177
- if (stock_location_id != 'new_shipment') {
178
- // first remove item(s) from original shipment
179
- $.ajax({
180
- type: "PUT",
181
- async: false,
182
- url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments/" + original_shipment_number + "/remove.json"),
183
- data: { variant_id: variant_id, quantity: quantity }
184
- });
185
-
186
- if (new_shipment != undefined) {
187
- $.ajax({
188
- type: "POST",
189
- async: false,
190
- url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments.json"),
191
- data: { variant_id: variant_id, quantity: quantity, stock_location_id: stock_location_id }
192
- }).done(function(msg) {
193
- advanceOrder();
194
- });
195
- } else {
196
- $.ajax({
197
- type: "PUT",
198
- async: false,
199
- url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments/" + target_shipment_number + "/add.json"),
200
- data: { variant_id: variant_id, quantity: quantity }
201
- }).done(function(msg) {
202
- advanceOrder();
203
- });
204
- }
205
- }
206
- }
207
-
208
- advanceOrder = function() {
209
- $.ajax({
210
- type: "PUT",
211
- async: false,
212
- url: Spree.url(Spree.routes.checkouts_api + "/" + order_number + "/advance")
213
- }).done(function() {
214
- window.location.reload();
215
- });
216
- }
217
-
218
- cancelItemSplit = function(event) {
219
- event.preventDefault();
220
- var link = $(this);
221
- var prev_row = link.closest('tr').prev();
222
- link.closest('tr').remove();
223
- prev_row.find('a.edit-item').toggle();
224
- prev_row.find('a.split-item').toggle();
225
- prev_row.find('a.delete-item').toggle();
226
- }
227
-
228
- addVariantFromStockLocation = function() {
229
- $('#stock_details').hide();
230
-
231
- var variant_id = $('input.variant_autocomplete').val();
232
- var stock_location_id = $(this).data('stock-location-id');
233
- var quantity = $("input.quantity[data-stock-location-id='" + stock_location_id + "']").val();
234
-
235
- var shipment = _.find(shipments, function(shipment){
236
- return shipment.stock_location_id == stock_location_id && (shipment.state == 'ready' || shipment.state == 'pending');
237
- });
238
-
239
- if(shipment==undefined){
240
- $.ajax({
241
- type: "POST",
242
- url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments.json"),
243
- data: { variant_id: variant_id, quantity: quantity, stock_location_id: stock_location_id }
244
- }).done(function( msg ) {
245
- advanceOrder();
246
- }).error(function( msg ) {
247
- console.log(msg);
248
- });
249
- }else{
250
- //add to existing shipment
251
- adjustItems(shipment.number, variant_id, quantity);
252
- }
253
- return 1
254
- }
255
-
256
12
  formatVariantResult = function(variant) {
257
13
  if (variant["images"][0] != undefined && variant["images"][0].urls != undefined) {
258
14
  variant.image = variant.images[0].urls.mini
@@ -0,0 +1,10 @@
1
+ jQuery ->
2
+ $('.track_inventory_checkbox').on 'click', ->
3
+ $(@).siblings('.variant_track_inventory').val($(@).is(':checked'))
4
+ $(@).parent('form').submit()
5
+ $('.toggle_variant_track_inventory').on 'submit', ->
6
+ $.ajax
7
+ type: @method
8
+ url: @action
9
+ data: $(@).serialize()
10
+ false
@@ -37,6 +37,10 @@ module Spree
37
37
  @order = Order.find_by_number!(params[:order_id], :include => :adjustments)
38
38
  end
39
39
 
40
+ def model_class
41
+ Spree::Order
42
+ end
43
+
40
44
  end
41
45
  end
42
46
  end
@@ -10,7 +10,7 @@ module Spree
10
10
  def index
11
11
  params[:q] ||= {}
12
12
  params[:q][:completed_at_not_null] ||= '1' if Spree::Config[:show_only_complete_orders_by_default]
13
- @show_only_completed = params[:q][:completed_at_not_null].present?
13
+ @show_only_completed = params[:q][:completed_at_not_null] == '1'
14
14
  params[:q][:s] ||= @show_only_completed ? 'completed_at desc' : 'created_at desc'
15
15
 
16
16
  # As date params are deleted if @show_only_completed, store
@@ -35,7 +35,7 @@ module Spree
35
35
  end
36
36
 
37
37
  @search = Order.accessible_by(current_ability, :index).ransack(params[:q])
38
- @orders = @search.result.includes([:user, :shipments, :payments]).
38
+ @orders = @search.result(distinct: true).includes([:user, :shipments, :payments]).
39
39
  page(params[:page]).
40
40
  per(params[:per_page] || Spree::Config[:orders_per_page])
41
41
 
@@ -118,9 +118,8 @@ module Spree
118
118
  end
119
119
 
120
120
  private
121
-
122
121
  def load_order
123
- @order = Order.find_by_number!(params[:id], :include => :adjustments) if params[:id]
122
+ @order = Order.includes(:adjustments).find_by_number!(params[:id])
124
123
  authorize! action, @order
125
124
  end
126
125
 
@@ -107,6 +107,10 @@ module Spree
107
107
  def load_payment
108
108
  @payment = Payment.find(params[:id])
109
109
  end
110
+
111
+ def model_class
112
+ Spree::Payment
113
+ end
110
114
  end
111
115
  end
112
116
  end
@@ -3,12 +3,26 @@ module Spree
3
3
  class ReportsController < Spree::Admin::BaseController
4
4
  respond_to :html
5
5
 
6
- AVAILABLE_REPORTS = {
7
- :sales_total => { :name => Spree.t(:sales_total), :description => Spree.t(:sales_total_description) }
8
- }
6
+ class << self
7
+ def available_reports
8
+ @@available_reports
9
+ end
10
+
11
+ def add_available_report!(report_key, report_description_key = nil)
12
+ if report_description_key.nil?
13
+ report_description_key = "#{report_key}_description"
14
+ end
15
+ @@available_reports[report_key] = {name: Spree.t(report_key), description: Spree.t(report_description_key)}
16
+ end
17
+ end
18
+
19
+ def initialize
20
+ super
21
+ ReportsController.add_available_report!(:sales_total)
22
+ end
9
23
 
10
24
  def index
11
- @reports = AVAILABLE_REPORTS
25
+ @reports = ReportsController.available_reports
12
26
  end
13
27
 
14
28
  def sales_total
@@ -50,6 +64,8 @@ module Spree
50
64
  Spree::Admin::ReportsController
51
65
  end
52
66
 
67
+ @@available_reports = {}
68
+
53
69
  end
54
70
  end
55
71
  end
@@ -6,20 +6,23 @@ class Spree::Admin::ResourceController < Spree::Admin::BaseController
6
6
  rescue_from ActiveRecord::RecordNotFound, :with => :resource_not_found
7
7
 
8
8
  respond_to :html
9
- respond_to :js, :except => [:show, :index]
10
9
 
11
10
  def new
12
11
  invoke_callbacks(:new_action, :before)
13
12
  respond_with(@object) do |format|
14
13
  format.html { render :layout => !request.xhr? }
15
- format.js { render :layout => false }
14
+ if request.xhr?
15
+ format.js { render :layout => false }
16
+ end
16
17
  end
17
18
  end
18
19
 
19
20
  def edit
20
21
  respond_with(@object) do |format|
21
22
  format.html { render :layout => !request.xhr? }
22
- format.js { render :layout => false }
23
+ if request.xhr?
24
+ format.js { render :layout => false }
25
+ end
23
26
  end
24
27
  end
25
28
 
@@ -0,0 +1,15 @@
1
+ module Spree
2
+ module Admin
3
+ class VariantsIncludingMasterController < VariantsController
4
+
5
+ def model_class
6
+ Spree::Variant
7
+ end
8
+
9
+ def object_name
10
+ "variant"
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -71,7 +71,7 @@ module Spree
71
71
  when :integer
72
72
  text_field_tag(name, value, preference_field_options(options))
73
73
  when :boolean
74
- hidden_field_tag(name, 0) +
74
+ hidden_field_tag(name, 0, id: "#{name}_hidden") +
75
75
  check_box_tag(name, 1, value, preference_field_options(options))
76
76
  when :string
77
77
  text_field_tag(name, value, preference_field_options(options))
@@ -29,7 +29,9 @@ module Spree
29
29
  link = link_to(titleized_label, destination_url)
30
30
  end
31
31
 
32
- selected = if options[:match_path]
32
+ selected = if options[:match_path].is_a? Regexp
33
+ request.fullpath =~ options[:match_path]
34
+ elsif options[:match_path]
33
35
  request.fullpath.starts_with?("#{admin_path}#{options[:match_path]}")
34
36
  else
35
37
  args.include?(controller.controller_name.to_sym)
@@ -69,8 +71,9 @@ module Spree
69
71
  end
70
72
 
71
73
  def link_to_edit(resource, options={})
74
+ url = options[:url] || edit_object_url(resource)
72
75
  options[:data] = {:action => 'edit'}
73
- link_to_with_icon('icon-edit', Spree.t(:edit), edit_object_url(resource), options)
76
+ link_to_with_icon('icon-edit', Spree.t(:edit), url, options)
74
77
  end
75
78
 
76
79
  def link_to_edit_url(url, options={})
@@ -3,7 +3,11 @@ module Spree
3
3
  module StockMovementsHelper
4
4
  def pretty_originator(stock_movement)
5
5
  if stock_movement.originator.respond_to?(:number)
6
- stock_movement.originator.number
6
+ if stock_movement.originator.respond_to?(:order)
7
+ link_to stock_movement.originator.number, [:edit, :admin, stock_movement.originator.order]
8
+ else
9
+ stock_movement.originator.number
10
+ end
7
11
  else
8
12
  ""
9
13
  end
@@ -64,11 +64,11 @@
64
64
  </div>
65
65
  <div class="field">
66
66
  <%= label_tag :smtp_username, Spree.t(:smtp_username) %><br />
67
- <%= text_field_tag :smtp_username, Spree::Config[:smtp_username], :class => 'fullwidth' %>
67
+ <%= text_field_tag :smtp_username, Spree::Config[:smtp_username], :class => 'fullwidth', :autocomplete => 'off' %>
68
68
  </div>
69
69
  <div class="field">
70
70
  <%= label_tag :preferred_smtp_password, Spree.t(:smtp_password) %><br />
71
- <%= password_field_tag :smtp_password, Spree::Config[:smtp_password], :class => 'fullwidth' %>
71
+ <%= password_field_tag :smtp_password, Spree::Config[:smtp_password], :class => 'fullwidth', :autocomplete => 'off' %>
72
72
  </div>
73
73
  </fieldset>
74
74
  </div>
@@ -3,7 +3,11 @@
3
3
  <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @line_item } %>
4
4
  <% end %>
5
5
 
6
- <%= render :partial => "spree/admin/orders/shipment", :collection => @order.shipments, :locals => { :order => order } %>
6
+ <% if Spree::Order.checkout_step_names.include?(:delivery) %>
7
+ <%= render :partial => "spree/admin/orders/shipment", :collection => @order.shipments, :locals => { :order => order } %>
8
+ <% else %>
9
+ <%= render :partial => "spree/admin/orders/line_items", :locals => { :order => order } %>
10
+ <% end %>
7
11
  <% if order.adjustments.eligible.exists? %>
8
12
  <fieldset class="no-border-bottom">
9
13
  <legend><%= Spree.t('adjustments') %></legend>
@@ -0,0 +1,46 @@
1
+ <% if order.line_items.exists? %>
2
+ <table class="line-items index" data-hook="line-items">
3
+ <colgroup>
4
+ <col style="width: 10%;" />
5
+ <col style="width: 20%;" />
6
+ <col style="width: 20%;" />
7
+ <col style="width: 15%;" />
8
+ </colgroup>
9
+
10
+ <thead>
11
+ <th colspan="2"><%= Spree.t(:name) %></th>
12
+ <th><%= Spree.t(:price) %></th>
13
+ <th><%= Spree.t(:quantity) %></th>
14
+ <th><%= Spree.t(:total_price) %></th>
15
+ <th class="orders-actions actions" data-hook="admin_order_form_line_items_header_actions">&nbsp;</th>
16
+ </thead>
17
+
18
+ <tbody>
19
+ <% order.line_items.each do |item| %>
20
+
21
+ <tr class="line-item" id="line-item-<%= item.id %>">
22
+ <td class="line-item-image"><%= mini_image(item.variant) %></td>
23
+ <td class="line-item-name">
24
+ <%= item.variant.product.name %><br><%= "(" + variant_options(item.variant) + ")" unless item.variant.option_values.empty? %>
25
+ </td>
26
+ <td class="line-item-price align-center"><%= item.single_money.to_html %></td>
27
+ <td class="line-item-qty-show align-center">
28
+ <%= item.quantity %>
29
+ </td>
30
+ <td class="line-item-qty-edit hidden">
31
+ <%= number_field_tag :quantity, item.quantity, :min => 0, :class => "line_item_quantity", :size => 5 %>
32
+ </td>
33
+ <td class="line-item-total align-center"><%= line_item_shipment_price(item, item.quantity) %></td>
34
+ <td class="cart-line-item-delete actions" data-hook="cart_line_item_delete">
35
+ <% if can? :update, item %>
36
+ <%= link_to '', '#', :class => 'save-line-item icon_link icon-ok no-text with-tip', :data => { 'line-item-id' => item.id, :action => 'save'}, :title => Spree.t('actions.save'), :style => 'display: none' %>
37
+ <%= link_to '', '#', :class => 'cancel-line-item icon_link icon-cancel no-text with-tip', :data => {:action => 'cancel'}, :title => Spree.t('actions.cancel'), :style => 'display: none' %>
38
+ <%= link_to '', '#', :class => 'edit-line-item icon_link icon-edit no-text with-tip', :data => {:action => 'edit'}, :title => Spree.t('edit') %>
39
+ <%= link_to '', '#', :class => 'delete-line-item icon-trash no-text with-tip', :data => { 'line-item-id' => item.id, :action => 'remove'}, :title => Spree.t('delete') %>
40
+ <% end %>
41
+ </td>
42
+ </tr>
43
+ <% end %>
44
+ </tbody>
45
+ </table>
46
+ <% end %>
@@ -68,7 +68,7 @@
68
68
 
69
69
  <tr class="show-method total">
70
70
  <td colspan="4">
71
- <% if shipment.adjustment.present? %>
71
+ <% if shipment.adjustment.present? && shipment.shipping_method.present? %>
72
72
  <strong><%= shipment.adjustment.label %>: <%= shipment.shipping_method.name %></strong>
73
73
  <% else %>
74
74
  <%= Spree.t(:cannot_set_shipping_method_without_address) %>
@@ -101,6 +101,14 @@
101
101
  </td>
102
102
  </tr>
103
103
 
104
+ <% if @order.special_instructions.present? %>
105
+ <tr class='special_instructions'>
106
+ <td colspan="5">
107
+ <strong><%= Spree.t(:special_instructions) %>:&nbsp;</strong><%= @order.special_instructions %>
108
+ </td>
109
+ </tr>
110
+ <% end %>
111
+
104
112
  <tr class="show-tracking total">
105
113
  <td colspan="5">
106
114
  <% if shipment.tracking.present? %>
@@ -117,4 +125,4 @@
117
125
  </tr>
118
126
  </tbody>
119
127
  </table>
120
- </div>
128
+ </div>
@@ -10,7 +10,7 @@
10
10
  <li><%= button_link_to Spree.t(:back_to_orders_list), admin_orders_path, :icon => 'icon-arrow-left' %></li>
11
11
  <% end %>
12
12
 
13
- <% if @order.cart? %>
13
+ <% if @order.cart? || (@order.checkout_steps.include?("address") && @order.address?) %>
14
14
  <div id="select-customer" data-hook>
15
15
  <fieldset class="no-border-bottom">
16
16
  <legend align="center"><%= Spree.t(:customer_search) %></legend>
@@ -60,7 +60,7 @@
60
60
  <div class="omega four columns">
61
61
  <div class="field checkbox">
62
62
  <label>
63
- <%= f.check_box :completed_at_not_null, {:checked => @show_only_completed}, '1', '' %>
63
+ <%= f.check_box :completed_at_not_null, {:checked => @show_only_completed}, '1', '0' %>
64
64
  <%= Spree.t(:show_only_complete_orders) %>
65
65
  </label>
66
66
  </div>
@@ -87,7 +87,9 @@
87
87
  <col style="width: 10%;">
88
88
  <col style="width: 10%;">
89
89
  <col style="width: 12%;">
90
- <col style="width: 12%;">
90
+ <% if Spree::Order.checkout_step_names.include?(:delivery) %>
91
+ <col style="width: 12%;">
92
+ <% end %>
91
93
  <col style="width: 25%;">
92
94
  <col style="width: 10%;">
93
95
  <col style="width: 8%;">
@@ -102,7 +104,9 @@
102
104
  <th><%= sort_link @search, :number, I18n.t(:number, :scope => 'activerecord.attributes.spree/order') %></th>
103
105
  <th><%= sort_link @search, :state, I18n.t(:state, :scope => 'activerecord.attributes.spree/order') %></th>
104
106
  <th><%= sort_link @search, :payment_state, I18n.t(:payment_state, :scope => 'activerecord.attributes.spree/order') %></th>
105
- <th><%= sort_link @search, :shipment_state, I18n.t(:shipment_state, :scope => 'activerecord.attributes.spree/order') %></th>
107
+ <% if Spree::Order.checkout_step_names.include?(:delivery) %>
108
+ <th><%= sort_link @search, :shipment_state, I18n.t(:shipment_state, :scope => 'activerecord.attributes.spree/order') %></th>
109
+ <% end %>
106
110
  <th><%= sort_link @search, :email, I18n.t(:email, :scope => 'activerecord.attributes.spree/order') %></th>
107
111
  <th><%= sort_link @search, :total, I18n.t(:total, :scope => 'activerecord.attributes.spree/order') %></th>
108
112
  <th data-hook="admin_orders_index_header_actions" class="actions"></th>
@@ -115,7 +119,9 @@
115
119
  <td class="align-center"><%= link_to order.number, edit_admin_order_path(order) %></td>
116
120
  <td class="align-center"><span class="state <%= order.state.downcase %>"><%= Spree.t("order_state.#{order.state.downcase}") %></span></td>
117
121
  <td class="align-center"><span class="state <%= order.payment_state %>"><%= link_to Spree.t("payment_states.#{order.payment_state}"), admin_order_payments_path(order) if order.payment_state %></span></td>
118
- <td class="align-center"><span class="state <%= order.shipment_state %>"><%= Spree.t("shipment_states.#{order.shipment_state}") if order.shipment_state %></span></td>
122
+ <% if Spree::Order.checkout_step_names.include?(:delivery) %>
123
+ <td class="align-center"><span class="state <%= order.shipment_state %>"><%= Spree.t("shipment_states.#{order.shipment_state}") if order.shipment_state %></span></td>
124
+ <% end %>
119
125
  <td><%= mail_to order.email %></td>
120
126
  <td class="align-center"><%= order.display_total.to_html %></td>
121
127
  <td class='actions align-center' data-hook="admin_orders_index_row_actions">
@@ -1,5 +1,3 @@
1
- <% # Usage of old-style form helpers in this file is INTENTIONAL
2
- # For reasons, see commit 3e981c7. %>
3
1
  <div data-hook="admin_payment_method_form_fields">
4
2
 
5
3
  <div data-hook="payment_method">
@@ -101,7 +101,6 @@
101
101
  <% end %>
102
102
  </div>
103
103
 
104
- <!-- <h2><%= Spree.t(:metadata) %></h2> -->
105
104
  <div data-hook="admin_product_form_meta" class="alpha omega twelve columns">
106
105
  <%= f.field_container :meta_keywords do %>
107
106
  <%= f.label :meta_keywords, Spree.t(:meta_keywords) %>
@@ -33,6 +33,15 @@
33
33
  <% if variant.images.present? %>
34
34
  <%= image_tag variant.images.first.attachment.url(:mini) %>
35
35
  <% end %>
36
+ <br/>
37
+ <%= form_tag admin_product_variants_including_master_path(@product, variant, format: :js), method: :put, class: 'toggle_variant_track_inventory' do %>
38
+ <%= check_box_tag 'track_inventory', 1, variant.track_inventory?,
39
+ class: 'track_inventory_checkbox' %>
40
+ <%= Spree.t(:track_inventory) %>
41
+ <%= hidden_field_tag 'variant[track_inventory]', variant.track_inventory?,
42
+ class: 'variant_track_inventory',
43
+ id: "variant_track_inventory_#{variant.id}" %>
44
+ <% end %>
36
45
  </td>
37
46
  <td colspan="4" class="stock_location_info">
38
47
  <table>
@@ -1,16 +1,7 @@
1
- notice_div = $('.flash.notice');
2
- <% notice = flash.discard(:notice)
3
- if notice %>
4
- if (notice_div.length > 0) {
5
- notice_div.html("<%= notice %>");
6
- notice_div.show();
7
- } else {
8
- if ($("#content .toolbar").length > 0) {
9
- $("#content .toolbar").before('<div class="flash notice"><%= notice %></div>');
10
- } else {
11
- $("#content h1").before('<div class="flash notice"><%= notice %></div>');
12
- }
13
- } <%
14
- end %>
1
+ <% success = flash.discard(:success)
2
+ if success %>
3
+ console.log(show_flash)
4
+ show_flash('success', "<%= success %>")
5
+ <% end %>
15
6
 
16
7
  <%= render :partial => '/spree/admin/shared/update_order_state' if @order %>
@@ -1,5 +1,5 @@
1
1
  <% content_for :page_title do %>
2
- <%= Spree.t(:order) %> #<%= @order.number %>
2
+ <%= link_to "#{Spree.t(:order)} ##{@order.number}", edit_admin_order_path(@order) %>
3
3
  <% end %>
4
4
 
5
5
  <% content_for :sidebar_title do %>
@@ -52,17 +52,17 @@
52
52
  <%= link_to_with_icon 'icon-user', Spree.t(:customer_details), admin_order_customer_url(@order) %>
53
53
  </li>
54
54
  <% end %>
55
- <% if can? :index, @order.adjustments %>
55
+ <% if can? :index, Spree::Adjustment %>
56
56
  <li<%== ' class="active"' if current == 'Adjustments' %>>
57
57
  <%= link_to_with_icon 'icon-cogs', Spree.t(:adjustments), admin_order_adjustments_url(@order) %>
58
58
  </li>
59
59
  <% end %>
60
- <% if can? :index, @order.payments && @payment_required %>
60
+ <% if can? :index, Spree::Payment && @payment_required %>
61
61
  <li<%== ' class="active"' if current == 'Payments' %>>
62
62
  <%= link_to_with_icon 'icon-credit-card', Spree.t(:payments), admin_order_payments_url(@order) %>
63
63
  </li>
64
64
  <% end %>
65
- <% if can? :index, @order.return_authorizations %>
65
+ <% if can? :index, Spree::ReturnAuthorization %>
66
66
  <% if @order.completed? %>
67
67
  <li<%== ' class="active"' if current == 'Return Authorizations' %>>
68
68
  <%= link_to_with_icon 'icon-share-alt', Spree.t(:return_authorizations), admin_order_return_authorizations_url(@order) %>
@@ -0,0 +1 @@
1
+ <%= @object.as_json %>
data/config/routes.rb CHANGED
@@ -42,6 +42,7 @@ Spree::Core::Engine.routes.draw do
42
42
  post :update_positions
43
43
  end
44
44
  end
45
+ resources :variants_including_master, :only => [:update]
45
46
  end
46
47
 
47
48
  get '/variants/search', :to => "variants#search", :as => :search_variants
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_backend
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.7
4
+ version: 2.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-19 00:00:00.000000000 Z
11
+ date: 2014-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree_core
@@ -16,82 +16,82 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.7
19
+ version: 2.0.8
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 2.0.7
26
+ version: 2.0.8
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: spree_api
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 2.0.7
33
+ version: 2.0.8
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 2.0.7
40
+ version: 2.0.8
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: jquery-rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 3.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 3.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: jquery-ui-rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 4.0.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 4.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: select2-rails
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 3.4.7
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 3.4.7
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: email_spec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: 1.2.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.2.1
97
97
  description: Required dependency for Spree
@@ -100,11 +100,11 @@ executables: []
100
100
  extensions: []
101
101
  extra_rdoc_files: []
102
102
  files:
103
+ - app/assets/fonts/FontAwesome.otf
103
104
  - app/assets/fonts/fontawesome-webfont.eot
104
105
  - app/assets/fonts/fontawesome-webfont.svg
105
106
  - app/assets/fonts/fontawesome-webfont.ttf
106
107
  - app/assets/fonts/fontawesome-webfont.woff
107
- - app/assets/fonts/FontAwesome.otf
108
108
  - app/assets/images/admin/payment_banner.png
109
109
  - app/assets/images/admin/progress.gif
110
110
  - app/assets/images/credit_cards/credit_card.gif
@@ -116,6 +116,7 @@ files:
116
116
  - app/assets/javascripts/admin/image_settings.js.erb
117
117
  - app/assets/javascripts/admin/images/index.js.coffee
118
118
  - app/assets/javascripts/admin/images/new.js.coffee
119
+ - app/assets/javascripts/admin/line_items.js.coffee
119
120
  - app/assets/javascripts/admin/nested-attribute.js
120
121
  - app/assets/javascripts/admin/option_type_autocomplete.js.erb
121
122
  - app/assets/javascripts/admin/orders/edit.js
@@ -138,6 +139,7 @@ files:
138
139
  - app/assets/javascripts/admin/underscore-min.js
139
140
  - app/assets/javascripts/admin/user_picker.js
140
141
  - app/assets/javascripts/admin/variant_autocomplete.js.erb
142
+ - app/assets/javascripts/admin/variant_management.js.coffee
141
143
  - app/assets/javascripts/admin/zone.js.coffee
142
144
  - app/assets/javascripts/store/backend.js
143
145
  - app/assets/stylesheets/admin/components/_actions.scss
@@ -220,6 +222,7 @@ files:
220
222
  - app/controllers/spree/admin/taxons_controller.rb
221
223
  - app/controllers/spree/admin/trackers_controller.rb
222
224
  - app/controllers/spree/admin/variants_controller.rb
225
+ - app/controllers/spree/admin/variants_including_master_controller.rb
223
226
  - app/controllers/spree/admin/zones_controller.rb
224
227
  - app/helpers/spree/admin/base_helper.rb
225
228
  - app/helpers/spree/admin/general_settings_helper.rb
@@ -263,6 +266,7 @@ files:
263
266
  - app/views/spree/admin/orders/_add_product.html.erb
264
267
  - app/views/spree/admin/orders/_form.html.erb
265
268
  - app/views/spree/admin/orders/_line_item.html.erb
269
+ - app/views/spree/admin/orders/_line_items.html.erb
266
270
  - app/views/spree/admin/orders/_shipment.html.erb
267
271
  - app/views/spree/admin/orders/_shipment_manifest.html.erb
268
272
  - app/views/spree/admin/orders/customer_details/_form.html.erb
@@ -417,6 +421,7 @@ files:
417
421
  - app/views/spree/admin/variants/index.html.erb
418
422
  - app/views/spree/admin/variants/new.html.erb
419
423
  - app/views/spree/admin/variants/new.js.erb
424
+ - app/views/spree/admin/variants/update.js.erb
420
425
  - app/views/spree/admin/zones/_country_members.html.erb
421
426
  - app/views/spree/admin/zones/_form.html.erb
422
427
  - app/views/spree/admin/zones/_state_members.html.erb
@@ -427,9 +432,9 @@ files:
427
432
  - app/views/spree/test_mailer/test_email.text.erb
428
433
  - config/initializers/form_builder.rb
429
434
  - config/routes.rb
435
+ - lib/spree/backend.rb
430
436
  - lib/spree/backend/action_callbacks.rb
431
437
  - lib/spree/backend/engine.rb
432
- - lib/spree/backend.rb
433
438
  - lib/spree_backend.rb
434
439
  - vendor/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png
435
440
  - vendor/assets/images/jquery-ui/ui-bg_flat_0_eeeeee_40x100.png
@@ -481,18 +486,18 @@ require_paths:
481
486
  - lib
482
487
  required_ruby_version: !ruby/object:Gem::Requirement
483
488
  requirements:
484
- - - '>='
489
+ - - ">="
485
490
  - !ruby/object:Gem::Version
486
491
  version: 1.9.3
487
492
  required_rubygems_version: !ruby/object:Gem::Requirement
488
493
  requirements:
489
- - - '>='
494
+ - - ">="
490
495
  - !ruby/object:Gem::Version
491
496
  version: '0'
492
497
  requirements:
493
498
  - none
494
499
  rubyforge_project: spree_backend
495
- rubygems_version: 2.1.0
500
+ rubygems_version: 2.2.0
496
501
  signing_key:
497
502
  specification_version: 4
498
503
  summary: backend e-commerce functionality for the Spree project.