spree_backend 2.0.13 → 2.1.0
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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/admin/admin.js.erb +27 -23
- data/app/assets/javascripts/admin/checkouts/edit.js +12 -0
- data/app/assets/javascripts/admin/image_settings.js.erb +2 -1
- data/app/assets/javascripts/admin/option_type_autocomplete.js.erb +1 -4
- data/app/assets/javascripts/admin/product_picker.js +1 -2
- data/app/assets/javascripts/admin/progress.coffee +4 -4
- data/app/assets/javascripts/admin/shipments.js.erb +0 -243
- data/app/assets/javascripts/admin/spree_backend.js +3 -1
- data/app/assets/javascripts/admin/stock_transfer.js.coffee +8 -4
- data/app/assets/javascripts/admin/taxonomy.js.coffee +2 -2
- data/app/assets/javascripts/admin/variant_autocomplete.js.erb +243 -0
- data/app/assets/stylesheets/admin/components/_navigation.scss +2 -8
- data/app/assets/stylesheets/admin/hacks/_ie.scss +2 -1
- data/app/assets/stylesheets/admin/hacks/_mozilla.scss +1 -2
- data/app/assets/stylesheets/admin/plugins/_select2.scss +8 -11
- data/app/assets/stylesheets/admin/sections/_tax_zones.scss +15 -0
- data/app/assets/stylesheets/admin/shared/_forms.scss +0 -1
- data/app/assets/stylesheets/admin/shared/_icons.scss +1 -0
- data/app/assets/stylesheets/admin/shared/_layout.scss +0 -1
- data/app/assets/stylesheets/admin/shared/_tables.scss +1 -1
- data/app/assets/stylesheets/admin/spree_admin.scss +1 -0
- data/app/assets/stylesheets/admin/spree_backend.css +1 -0
- data/app/controllers/spree/admin/base_controller.rb +1 -1
- data/app/controllers/spree/admin/orders/customer_details_controller.rb +10 -6
- data/app/controllers/spree/admin/orders_controller.rb +5 -4
- data/app/controllers/spree/admin/overview_controller.rb +0 -2
- data/app/controllers/spree/admin/payment_methods_controller.rb +7 -3
- data/app/controllers/spree/admin/payments_controller.rb +5 -13
- data/app/controllers/spree/admin/products_controller.rb +8 -0
- data/app/controllers/spree/admin/reports_controller.rb +16 -26
- data/app/controllers/spree/admin/resource_controller.rb +12 -8
- data/app/controllers/spree/admin/stock_items_controller.rb +5 -1
- data/app/controllers/spree/admin/stock_movements_controller.rb +5 -1
- data/app/controllers/spree/admin/stock_transfers_controller.rb +1 -1
- data/app/controllers/spree/admin/taxons_controller.rb +42 -16
- data/app/helpers/spree/admin/base_helper.rb +2 -2
- data/app/helpers/spree/admin/navigation_helper.rb +3 -6
- data/app/helpers/spree/admin/stock_movements_helper.rb +1 -12
- data/app/views/spree/admin/mail_methods/_form.html.erb +2 -2
- data/app/views/spree/admin/orders/_add_product.html.erb +0 -1
- data/app/views/spree/admin/orders/_form.html.erb +1 -5
- data/app/views/spree/admin/orders/_shipment.html.erb +2 -10
- data/app/views/spree/admin/orders/_shipment_manifest.html.erb +1 -1
- data/app/views/spree/admin/orders/customer_details/_form.html.erb +2 -2
- data/app/views/spree/admin/orders/customer_details/edit.html.erb +1 -1
- data/app/views/spree/admin/orders/index.html.erb +4 -10
- data/app/views/spree/admin/payment_methods/_form.html.erb +2 -0
- data/app/views/spree/admin/payments/_form.html.erb +2 -2
- data/app/views/spree/admin/payments/_list.html.erb +2 -2
- data/app/views/spree/admin/payments/show.html.erb +2 -2
- data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +2 -3
- data/app/views/spree/admin/payments/source_views/_gateway.html.erb +15 -5
- data/app/views/spree/admin/products/_form.html.erb +59 -82
- data/app/views/spree/admin/products/index.html.erb +1 -1
- data/app/views/spree/admin/products/new.html.erb +6 -6
- data/app/views/spree/admin/products/stock.html.erb +4 -12
- data/app/views/spree/admin/promotion_rules/create.js.erb +0 -1
- data/app/views/spree/admin/promotions/_form.html.erb +5 -3
- data/app/views/spree/admin/prototypes/_form.html.erb +2 -2
- data/app/views/spree/admin/prototypes/show.html.erb +1 -1
- data/app/views/spree/admin/reports/sales_total.html.erb +1 -1
- data/app/views/spree/admin/return_authorizations/_form.html.erb +2 -2
- data/app/views/spree/admin/shared/_content_header.html.erb +23 -0
- data/app/views/spree/admin/shared/_destroy.js.erb +14 -5
- data/app/views/spree/admin/shared/_header.html.erb +9 -0
- data/app/views/spree/admin/shared/_menu.html.erb +9 -0
- data/app/views/spree/admin/shared/_order_tabs.html.erb +5 -5
- data/app/views/spree/admin/shared/_report_criteria.html.erb +2 -2
- data/app/views/spree/admin/shared/_routes.html.erb +1 -2
- data/app/views/spree/admin/shared/_sidebar.html.erb +10 -0
- data/app/views/spree/admin/shared/_sub_menu.html.erb +9 -0
- data/app/views/spree/admin/shared/_table_filter.html.erb +8 -0
- data/app/views/spree/admin/shared/_translations.html.erb +3 -6
- data/app/views/spree/admin/shipping_methods/_form.html.erb +5 -6
- data/app/views/spree/admin/shipping_methods/index.html.erb +1 -1
- data/app/views/spree/admin/stock_movements/_form.html.erb +4 -5
- data/app/views/spree/admin/stock_movements/index.html.erb +2 -4
- data/app/views/spree/admin/stock_transfers/show.html.erb +1 -1
- data/app/views/spree/admin/taxons/edit.html.erb +1 -1
- data/app/views/spree/admin/variants/_autocomplete.js.erb +51 -6
- data/app/views/spree/layouts/admin.html.erb +11 -81
- data/config/routes.rb +2 -4
- data/lib/spree/backend/engine.rb +0 -1
- data/vendor/assets/javascripts/css_browser_selector_dev.js +114 -141
- metadata +42 -31
- data/app/assets/javascripts/admin/line_items.js.coffee +0 -61
- data/app/assets/javascripts/admin/payments/edit.js.coffee +0 -148
- data/app/assets/javascripts/admin/stock_movement.js.coffee +0 -17
- data/app/assets/javascripts/admin/variant_management.js.coffee +0 -10
- data/app/assets/javascripts/spree/backend/select_payments.js.coffee +0 -7
- data/app/controllers/spree/admin/variants_including_master_controller.rb +0 -15
- data/app/views/spree/admin/orders/_line_items.html.erb +0 -46
- data/app/views/spree/admin/variants/_autocomplete_stock.js.erb +0 -41
- data/app/views/spree/admin/variants/update.js.erb +0 -1
- data/vendor/assets/stylesheets/AdminLTE.css +0 -3535
|
@@ -6,9 +6,252 @@ $(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
|
+
var del = $(this);
|
|
58
|
+
var shipment_number = del.data('shipment-number');
|
|
59
|
+
var variant_id = del.data('variant-id');
|
|
60
|
+
|
|
61
|
+
toggleItemEdit();
|
|
62
|
+
|
|
63
|
+
adjustItems(shipment_number, variant_id, 0);
|
|
64
|
+
|
|
65
|
+
});
|
|
9
66
|
}
|
|
10
67
|
});
|
|
11
68
|
|
|
69
|
+
adjustItems = function(shipment_number, variant_id, quantity){
|
|
70
|
+
var shipment = _.findWhere(shipments, {number: shipment_number + ''});
|
|
71
|
+
var inventory_units = _.where(shipment.inventory_units, {variant_id: variant_id});
|
|
72
|
+
|
|
73
|
+
var url = Spree.routes.orders_api + "/" + order_number + "/shipments/" + shipment_number;
|
|
74
|
+
|
|
75
|
+
var new_quantity = 0;
|
|
76
|
+
if(inventory_units.length<quantity){
|
|
77
|
+
url += "/add"
|
|
78
|
+
new_quantity = (quantity - inventory_units.length);
|
|
79
|
+
}else if(inventory_units.length>quantity){
|
|
80
|
+
url += "/remove"
|
|
81
|
+
new_quantity = (inventory_units.length - quantity);
|
|
82
|
+
}
|
|
83
|
+
url += '.json';
|
|
84
|
+
|
|
85
|
+
if(new_quantity!=0){
|
|
86
|
+
$.ajax({
|
|
87
|
+
type: "PUT",
|
|
88
|
+
url: Spree.url(url),
|
|
89
|
+
data: { variant_id: variant_id, quantity: new_quantity }
|
|
90
|
+
}).done(function( msg ) {
|
|
91
|
+
advanceOrder();
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
toggleTrackingEdit = function(){
|
|
97
|
+
var link = $(this);
|
|
98
|
+
link.parents('tbody').find('tr.edit-tracking').toggle();
|
|
99
|
+
link.parents('tbody').find('tr.show-tracking').toggle();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
toggleMethodEdit = function(){
|
|
103
|
+
var link = $(this);
|
|
104
|
+
link.parents('tbody').find('tr.edit-method').toggle();
|
|
105
|
+
link.parents('tbody').find('tr.show-method').toggle();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
toggleItemEdit = function(){
|
|
109
|
+
var link = $(this);
|
|
110
|
+
link.parent().find('a.edit-item').toggle();
|
|
111
|
+
link.parent().find('a.cancel-item').toggle();
|
|
112
|
+
link.parent().find('a.split-item').toggle();
|
|
113
|
+
link.parent().find('a.save-item').toggle();
|
|
114
|
+
link.parent().find('a.delete-item').toggle();
|
|
115
|
+
link.parents('tr').find('td.item-qty-show').toggle();
|
|
116
|
+
link.parents('tr').find('td.item-qty-edit').toggle();
|
|
117
|
+
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
startItemSplit = function(event){
|
|
122
|
+
event.preventDefault();
|
|
123
|
+
var link = $(this);
|
|
124
|
+
link.parent().find('a.edit-item').toggle();
|
|
125
|
+
link.parent().find('a.split-item').toggle();
|
|
126
|
+
link.parent().find('a.delete-item').toggle();
|
|
127
|
+
var variant_id = link.data('variant-id');
|
|
128
|
+
|
|
129
|
+
var variant = {};
|
|
130
|
+
$.ajax({
|
|
131
|
+
type: "GET",
|
|
132
|
+
async: false,
|
|
133
|
+
url: Spree.url(Spree.routes.variants_api),
|
|
134
|
+
data: {
|
|
135
|
+
q: {
|
|
136
|
+
"id_eq": variant_id
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}).success(function( data ) {
|
|
140
|
+
variant = data['variants'][0];
|
|
141
|
+
}).error(function( msg ) {
|
|
142
|
+
console.log(msg);
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
var max_quantity = link.closest('tr').data('item-quantity');
|
|
146
|
+
var split_item_template = Handlebars.compile($('#variant_split_template').text());
|
|
147
|
+
link.closest('tr').after(split_item_template({ variant: variant, shipments: shipments, max_quantity: max_quantity }));
|
|
148
|
+
$('a.cancel-split').click(cancelItemSplit);
|
|
149
|
+
$('a.save-split').click(completeItemSplit);
|
|
150
|
+
|
|
151
|
+
// Add some tips
|
|
152
|
+
$('.with-tip').powerTip({
|
|
153
|
+
smartPlacement: true,
|
|
154
|
+
fadeInTime: 50,
|
|
155
|
+
fadeOutTime: 50,
|
|
156
|
+
intentPollInterval: 300
|
|
157
|
+
});
|
|
158
|
+
$('#item_stock_location').select2({ width: 'resolve', placeholder: 'Choose Location' });
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
completeItemSplit = function(event) {
|
|
162
|
+
event.preventDefault();
|
|
163
|
+
var link = $(this);
|
|
164
|
+
var order_number = link.closest('tbody').data('order-number');
|
|
165
|
+
var stock_item_row = link.closest('tr');
|
|
166
|
+
var variant_id = stock_item_row.data('variant-id');
|
|
167
|
+
var quantity = stock_item_row.find('#item_quantity').val();
|
|
168
|
+
|
|
169
|
+
var stock_location_id = stock_item_row.find('#item_stock_location').val();
|
|
170
|
+
var original_shipment_number = link.closest('tbody').data('shipment-number');
|
|
171
|
+
|
|
172
|
+
var selected_shipment = stock_item_row.find($('#item_stock_location').select2('data').element);
|
|
173
|
+
var target_shipment_number = selected_shipment.data('shipment-number');
|
|
174
|
+
var new_shipment = selected_shipment.data('new-shipment');
|
|
175
|
+
|
|
176
|
+
if (stock_location_id != 'new_shipment') {
|
|
177
|
+
// first remove item(s) from original shipment
|
|
178
|
+
$.ajax({
|
|
179
|
+
type: "PUT",
|
|
180
|
+
async: false,
|
|
181
|
+
url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments/" + original_shipment_number + "/remove.json"),
|
|
182
|
+
data: { variant_id: variant_id, quantity: quantity }
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
if (new_shipment != undefined) {
|
|
186
|
+
$.ajax({
|
|
187
|
+
type: "POST",
|
|
188
|
+
async: false,
|
|
189
|
+
url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments.json"),
|
|
190
|
+
data: { variant_id: variant_id, quantity: quantity, stock_location_id: stock_location_id }
|
|
191
|
+
}).done(function(msg) {
|
|
192
|
+
advanceOrder();
|
|
193
|
+
});
|
|
194
|
+
} else {
|
|
195
|
+
$.ajax({
|
|
196
|
+
type: "PUT",
|
|
197
|
+
async: false,
|
|
198
|
+
url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments/" + target_shipment_number + "/add.json"),
|
|
199
|
+
data: { variant_id: variant_id, quantity: quantity }
|
|
200
|
+
}).done(function(msg) {
|
|
201
|
+
advanceOrder();
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
advanceOrder = function() {
|
|
208
|
+
$.ajax({
|
|
209
|
+
type: "PUT",
|
|
210
|
+
async: false,
|
|
211
|
+
url: Spree.url(Spree.routes.checkouts_api + "/" + order_number + "/advance")
|
|
212
|
+
}).done(function() {
|
|
213
|
+
window.location.reload();
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
cancelItemSplit = function(event) {
|
|
218
|
+
event.preventDefault();
|
|
219
|
+
var link = $(this);
|
|
220
|
+
var prev_row = link.closest('tr').prev();
|
|
221
|
+
link.closest('tr').remove();
|
|
222
|
+
prev_row.find('a.edit-item').toggle();
|
|
223
|
+
prev_row.find('a.split-item').toggle();
|
|
224
|
+
prev_row.find('a.delete-item').toggle();
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
addVariantFromStockLocation = function() {
|
|
228
|
+
$('#stock_details').hide();
|
|
229
|
+
|
|
230
|
+
var variant_id = $('input.variant_autocomplete').val();
|
|
231
|
+
var stock_location_id = $(this).data('stock-location-id');
|
|
232
|
+
var quantity = $("input.quantity[data-stock-location-id='" + stock_location_id + "']").val();
|
|
233
|
+
|
|
234
|
+
var shipment = _.find(shipments, function(shipment){
|
|
235
|
+
return shipment.stock_location_id == stock_location_id && (shipment.state == 'ready' || shipment.state == 'pending');
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
if(shipment==undefined){
|
|
239
|
+
$.ajax({
|
|
240
|
+
type: "POST",
|
|
241
|
+
url: Spree.url(Spree.routes.orders_api + "/" + order_number + "/shipments.json"),
|
|
242
|
+
data: { variant_id: variant_id, quantity: quantity, stock_location_id: stock_location_id }
|
|
243
|
+
}).done(function( msg ) {
|
|
244
|
+
advanceOrder();
|
|
245
|
+
}).error(function( msg ) {
|
|
246
|
+
console.log(msg);
|
|
247
|
+
});
|
|
248
|
+
}else{
|
|
249
|
+
//add to existing shipment
|
|
250
|
+
adjustItems(shipment.number, variant_id, quantity);
|
|
251
|
+
}
|
|
252
|
+
return 1
|
|
253
|
+
}
|
|
254
|
+
|
|
12
255
|
formatVariantResult = function(variant) {
|
|
13
256
|
if (variant["images"][0] != undefined && variant["images"][0].urls != undefined) {
|
|
14
257
|
variant.image = variant.images[0].urls.mini
|
|
@@ -63,18 +63,12 @@ nav.menu {
|
|
|
63
63
|
#admin-menu {
|
|
64
64
|
background-color: $color-3;
|
|
65
65
|
|
|
66
|
-
ul{
|
|
67
|
-
display: table;
|
|
68
|
-
table-layout: fixed;
|
|
69
|
-
width: 100%;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
66
|
li {
|
|
73
|
-
|
|
67
|
+
min-width: 90px;
|
|
74
68
|
|
|
75
69
|
a {
|
|
76
70
|
display: block;
|
|
77
|
-
padding: 25px
|
|
71
|
+
padding: 25px 20px;
|
|
78
72
|
color: $color-1 !important;
|
|
79
73
|
text-transform: uppercase;
|
|
80
74
|
position: relative;
|
|
@@ -22,7 +22,6 @@ html.firefox {
|
|
|
22
22
|
|
|
23
23
|
// Fix select2 search input left padding to not overlap search icon
|
|
24
24
|
.select2-search input.select2-input {
|
|
25
|
-
padding-bottom: 12px !important;
|
|
26
25
|
padding-left: 25px !important;
|
|
27
26
|
}
|
|
28
27
|
|
|
@@ -30,4 +29,4 @@ html.firefox {
|
|
|
30
29
|
input#image_attachment {
|
|
31
30
|
width: 80%;
|
|
32
31
|
}
|
|
33
|
-
}
|
|
32
|
+
}
|
|
@@ -63,15 +63,17 @@
|
|
|
63
63
|
@extend [class^="icon-"]:before;
|
|
64
64
|
|
|
65
65
|
position: absolute;
|
|
66
|
-
top:
|
|
66
|
+
top: 13px;
|
|
67
67
|
left: 13px;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
input {
|
|
71
71
|
@extend input[type="text"];
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
margin-top: 5px;
|
|
73
|
+
margin-left: -6px;
|
|
74
|
+
padding-left: 25px;
|
|
75
|
+
padding-top: 6px;
|
|
76
|
+
padding-bottom: 6px;
|
|
75
77
|
font-family: $base-font-family;
|
|
76
78
|
font-size: 90%;
|
|
77
79
|
box-shadow: none;
|
|
@@ -99,17 +101,12 @@
|
|
|
99
101
|
}
|
|
100
102
|
}
|
|
101
103
|
|
|
102
|
-
.select2-results {
|
|
104
|
+
.select2-results {
|
|
103
105
|
padding-left: 0 !important;
|
|
104
106
|
|
|
105
107
|
li {
|
|
106
108
|
font-size: 85% !important;
|
|
107
109
|
|
|
108
|
-
|
|
109
|
-
&:nth-child(odd) {
|
|
110
|
-
background: #efefef;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
110
|
&.select2-highlighted {
|
|
114
111
|
.select2-result-label {
|
|
115
112
|
&, h6 {
|
|
@@ -136,7 +133,7 @@
|
|
|
136
133
|
}
|
|
137
134
|
|
|
138
135
|
.select2-highlighted {
|
|
139
|
-
background-color: $color-sel-bg
|
|
136
|
+
background-color: $color-sel-bg;
|
|
140
137
|
}
|
|
141
138
|
}
|
|
142
139
|
|
|
@@ -84,7 +84,7 @@ table {
|
|
|
84
84
|
background-color: $color-notice;
|
|
85
85
|
color: $color-1;
|
|
86
86
|
}
|
|
87
|
-
.icon-edit:hover, .icon-capture:hover, .icon-ok:hover, .icon-plus:hover
|
|
87
|
+
.icon-edit:hover, .icon-capture:hover, .icon-ok:hover, .icon-plus:hover {
|
|
88
88
|
background-color: $color-success;
|
|
89
89
|
color: $color-1;
|
|
90
90
|
}
|
|
@@ -16,7 +16,7 @@ module Spree
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def update
|
|
19
|
-
if @order.update_attributes(
|
|
19
|
+
if @order.update_attributes(order_params)
|
|
20
20
|
if params[:guest_checkout] == "false"
|
|
21
21
|
@order.associate_user!(Spree.user_class.find_by_email(@order.email))
|
|
22
22
|
end
|
|
@@ -32,13 +32,17 @@ module Spree
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
private
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
def order_params
|
|
36
|
+
params.require(:order).permit(
|
|
37
|
+
:email,
|
|
38
|
+
:use_billing,
|
|
39
|
+
:bill_address_attributes => permitted_address_attributes,
|
|
40
|
+
:ship_address_attributes => permitted_address_attributes
|
|
41
|
+
)
|
|
38
42
|
end
|
|
39
43
|
|
|
40
|
-
def
|
|
41
|
-
|
|
44
|
+
def load_order
|
|
45
|
+
@order = Order.includes(:adjustments).find_by_number!(params[:order_id])
|
|
42
46
|
end
|
|
43
47
|
|
|
44
48
|
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]
|
|
13
|
+
@show_only_completed = params[:q][:completed_at_not_null].present?
|
|
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
|
|
38
|
+
@orders = @search.result.includes([:user, :shipments, :payments]).
|
|
39
39
|
page(params[:page]).
|
|
40
40
|
per(params[:per_page] || Spree::Config[:orders_per_page])
|
|
41
41
|
|
|
@@ -83,7 +83,7 @@ module Spree
|
|
|
83
83
|
# TODO - possible security check here but right now any admin can before any transition (and the state machine
|
|
84
84
|
# itself will make sure transitions are not applied in the wrong state)
|
|
85
85
|
event = params[:e]
|
|
86
|
-
if @order.
|
|
86
|
+
if @order.send("#{event}")
|
|
87
87
|
flash[:success] = Spree.t(:order_updated)
|
|
88
88
|
else
|
|
89
89
|
flash[:error] = Spree.t(:cannot_perform_operation)
|
|
@@ -118,8 +118,9 @@ module Spree
|
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
private
|
|
121
|
+
|
|
121
122
|
def load_order
|
|
122
|
-
@order = Order.includes(:adjustments).find_by_number!(params[:id])
|
|
123
|
+
@order = Order.includes(:adjustments).find_by_number!(params[:id]) if params[:id]
|
|
123
124
|
authorize! action, @order
|
|
124
125
|
end
|
|
125
126
|
|
|
@@ -8,7 +8,7 @@ module Spree
|
|
|
8
8
|
respond_to :html
|
|
9
9
|
|
|
10
10
|
def create
|
|
11
|
-
@payment_method = params[:payment_method].delete(:type).constantize.new(
|
|
11
|
+
@payment_method = params[:payment_method].delete(:type).constantize.new(payment_method_params)
|
|
12
12
|
@object = @payment_method
|
|
13
13
|
invoke_callbacks(:create, :before)
|
|
14
14
|
if @payment_method.save
|
|
@@ -29,8 +29,8 @@ module Spree
|
|
|
29
29
|
@payment_method = PaymentMethod.find(params[:id])
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
attributes =
|
|
32
|
+
update_params = params[ActiveModel::Naming.param_key(@payment_method)] || {}
|
|
33
|
+
attributes = payment_method_params.merge(update_params)
|
|
34
34
|
attributes.each do |k,v|
|
|
35
35
|
if k.include?("password") && attributes[k].blank?
|
|
36
36
|
attributes.delete(k)
|
|
@@ -60,6 +60,10 @@ module Spree
|
|
|
60
60
|
redirect_to new_admin_payment_method_path
|
|
61
61
|
end
|
|
62
62
|
end
|
|
63
|
+
|
|
64
|
+
def payment_method_params
|
|
65
|
+
params.require(:payment_method).permit!
|
|
66
|
+
end
|
|
63
67
|
end
|
|
64
68
|
end
|
|
65
69
|
end
|
|
@@ -32,15 +32,17 @@ module Spree
|
|
|
32
32
|
if @order.completed?
|
|
33
33
|
@payment.process!
|
|
34
34
|
flash[:success] = flash_message_for(@payment, :successfully_created)
|
|
35
|
+
|
|
36
|
+
redirect_to admin_order_payments_path(@order)
|
|
35
37
|
else
|
|
36
38
|
#This is the first payment (admin created order)
|
|
37
39
|
until @order.completed?
|
|
38
40
|
@order.next!
|
|
39
41
|
end
|
|
40
42
|
flash[:success] = Spree.t(:new_order_completed)
|
|
43
|
+
redirect_to edit_admin_order_url(@order)
|
|
41
44
|
end
|
|
42
45
|
|
|
43
|
-
redirect_to admin_order_payments_path(@order)
|
|
44
46
|
rescue Spree::Core::GatewayError => e
|
|
45
47
|
flash[:error] = "#{e.message}"
|
|
46
48
|
redirect_to new_admin_order_payment_path(@order)
|
|
@@ -69,7 +71,7 @@ module Spree
|
|
|
69
71
|
if params[:payment] and params[:payment_source] and source_params = params.delete(:payment_source)[params[:payment][:payment_method_id]]
|
|
70
72
|
params[:payment][:source_attributes] = source_params
|
|
71
73
|
end
|
|
72
|
-
params
|
|
74
|
+
params.require(:payment).permit(:amount, :payment_method_id, :source_attributes)
|
|
73
75
|
end
|
|
74
76
|
|
|
75
77
|
def load_data
|
|
@@ -83,14 +85,8 @@ module Spree
|
|
|
83
85
|
@previous_cards = @order.credit_cards.with_payment_profile
|
|
84
86
|
end
|
|
85
87
|
|
|
86
|
-
# At this point admin should have passed through Customer Details step
|
|
87
|
-
# where order.next is called which leaves the order in payment step
|
|
88
|
-
#
|
|
89
|
-
# Orders in complete step also allows to access this controller
|
|
90
|
-
#
|
|
91
|
-
# Otherwise redirect user to that step
|
|
92
88
|
def can_transition_to_payment
|
|
93
|
-
unless @order.billing_address.present?
|
|
89
|
+
unless @order.billing_address.present?
|
|
94
90
|
flash[:notice] = Spree.t(:fill_in_customer_info)
|
|
95
91
|
redirect_to edit_admin_order_customer_url(@order)
|
|
96
92
|
end
|
|
@@ -105,10 +101,6 @@ module Spree
|
|
|
105
101
|
def load_payment
|
|
106
102
|
@payment = Payment.find(params[:id])
|
|
107
103
|
end
|
|
108
|
-
|
|
109
|
-
def model_class
|
|
110
|
-
Spree::Payment
|
|
111
|
-
end
|
|
112
104
|
end
|
|
113
105
|
end
|
|
114
106
|
end
|
|
@@ -6,6 +6,7 @@ module Spree
|
|
|
6
6
|
before_filter :load_data, :except => :index
|
|
7
7
|
create.before :create_before
|
|
8
8
|
update.before :update_before
|
|
9
|
+
helper_method :clone_object_url
|
|
9
10
|
|
|
10
11
|
def show
|
|
11
12
|
session[:return_to] ||= request.referer
|
|
@@ -116,6 +117,13 @@ module Spree
|
|
|
116
117
|
[{:variants => [:images, {:option_values => :option_type}]}, {:master => [:images, :default_price]}]
|
|
117
118
|
end
|
|
118
119
|
|
|
120
|
+
def clone_object_url resource
|
|
121
|
+
clone_admin_product_url resource
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def permit_attributes
|
|
125
|
+
params.require(:product).permit!
|
|
126
|
+
end
|
|
119
127
|
end
|
|
120
128
|
end
|
|
121
129
|
end
|