Class: Caboose::OrderPackagesController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- Caboose::OrderPackagesController
- Defined in:
- app/controllers/caboose/order_packages_controller.rb
Instance Method Summary collapse
-
#admin_add ⇒ Object
POST /admin/orders/:order_id/packages.
-
#admin_delete ⇒ Object
DELETE /admin/orders/:order_id/packages/:id.
-
#admin_google_feed ⇒ Object
GET /admin/orders/google-feed.
-
#admin_json ⇒ Object
GET /admin/orders/:order_id/packages/json.
-
#admin_line_item_status_options ⇒ Object
GET /admin/orders/line-item-status-options.
-
#admin_mail_test_gmail ⇒ Object
GET /admin/orders/test-gmail.
-
#admin_mail_test_info ⇒ Object
GET /admin/orders/test-info.
-
#admin_status_options ⇒ Object
GET /admin/orders/status-options.
-
#admin_update ⇒ Object
PUT /admin/orders/:order_id/packages/:id.
-
#admin_update_line_item ⇒ Object
PUT /admin/orders/:order_id/line-items/:id.
-
#capture_funds ⇒ Object
GET /admin/orders/:id/capture.
Methods inherited from ApplicationController
#admin_bulk_add, #admin_bulk_delete, #admin_bulk_update, #admin_edit, #admin_index, #admin_json_single, #before_action, #before_before_action, #hashify_query_string, #init_cart, #logged_in?, #logged_in_user, #login_user, #logout_user, #parse_url_params, #reject_param, #user_is_allowed, #user_is_allowed_to, #validate_cookie, #validate_token, #var, #verify_logged_in
Instance Method Details
#admin_add ⇒ Object
POST /admin/orders/:order_id/packages
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 14 def admin_add return if !user_is_allowed('orders', 'add') resp = StdClass.new if params[:shipping_package_id].strip.length == 0 then resp.error = "Please select a shipping package." elsif params[:shipping_method_id].strip.length == 0 then resp.error = "Please select a shipping method." else op = OrderPackage.new( :order_id => params[:order_id], :shipping_package_id => params[:shipping_package_id], :shipping_method_id => params[:shipping_method_id], :status => OrderPackage::STATUS_PENDING ) op.save resp.new_id = op.id resp.redirect = "/admin/orders/#{params[:order_id]}/packages/#{op.id}" end render :json => resp end |
#admin_delete ⇒ Object
DELETE /admin/orders/:order_id/packages/:id
105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 105 def admin_delete return if !user_is_allowed('orders', 'delete') resp = StdClass.new op = OrderPackage.find(params[:id]) if op.line_items.nil? || op.line_items.count == 0 op.destroy resp.redirect = "/admin/orders/#{params[:order_id]}" else resp.error = "Only empty packages can be deleted." end render :json => resp end |
#admin_google_feed ⇒ Object
GET /admin/orders/google-feed
267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 267 def admin_google_feed d2 = DateTime.now d1 = DateTime.now if Caboose::Setting.exists?(:name => 'google_feed_date_last_submitted') d1 = Caboose::Setting.where(:name => 'google_feed_date_last_submitted').first.value d1 = DateTime.parse(d1) elsif Order.exists?("status = 'shipped' and date_authorized is not null") d1 = Order.where("status = ? and date_authorized is not null", 'shipped').reorder("date_authorized DESC").limit(1).pluck('date_authorized') d1 = DateTime.parse(d1) end # Google Feed Docs # https://support.google.com/trustedstoresmerchant/answer/3272612?hl=en&ref_topic=3272286?hl=en tsv = ["merchant order id\ttracking number\tcarrier code\tother carrier name\tship date"] if Order.exists?("status = 'shipped' and date_authorized > '#{d1.strftime("%F %T")}'") Order.where("status = ? and date_authorized > ?", 'shipped', d1).reorder(:id).all.each do |order| tracking_numbers = order.line_items.collect{ |li| li.tracking_number }.compact.uniq tn = tracking_numbers && tracking_numbers.count >= 1 ? tracking_numbers[0] : "" tsv << "#{order.id}\t#{tn}\tUPS\t\t#{order.date_shipped.strftime("%F")}" end end # Save when we made the last call setting = if Caboose::Setting.exists?(:name => 'google_feed_date_last_submitted') Caboose::Setting.where(:name => 'google_feed_date_last_submitted').first else Caboose::Setting.new(:name => 'google_feed_date_last_submitted') end setting.value = d2.strftime("%F %T") setting.save # Print out the lines render :text => tsv.join("\n") end |
#admin_json ⇒ Object
GET /admin/orders/:order_id/packages/json
5 6 7 8 9 10 11 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 5 def admin_json return if !user_is_allowed('orders', 'view') order = Order.find(params[:order_id]) render :json => order.order_packages.as_json( :include => { :shipping_package => { :include => :shipping_methods} } ) end |
#admin_line_item_status_options ⇒ Object
GET /admin/orders/line-item-status-options
119 120 121 122 123 124 125 126 127 128 129 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 119 def arr = ['pending', 'ready to ship', 'shipped', 'backordered', 'canceled'] = [] arr.each do |status| << { :value => status, :text => status } end render :json => end |
#admin_mail_test_gmail ⇒ Object
GET /admin/orders/test-gmail
261 262 263 264 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 261 def admin_mail_test_gmail TestMailer.test_gmail.deliver render :text => "Sent email to [email protected] on #{DateTime.now.strftime("%F %T")}" end |
#admin_mail_test_info ⇒ Object
GET /admin/orders/test-info
255 256 257 258 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 255 def admin_mail_test_info TestMailer.test_info.deliver render :text => "Sent email to [email protected] on #{DateTime.now.strftime("%F %T")}" end |
#admin_status_options ⇒ Object
GET /admin/orders/status-options
241 242 243 244 245 246 247 248 249 250 251 252 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 241 def return if !user_is_allowed('categories', 'view') statuses = ['cart', 'pending', 'ready to ship', 'shipped', 'canceled'] = [] statuses.each do |s| << { 'text' => s, 'value' => s } end render :json => end |
#admin_update ⇒ Object
PUT /admin/orders/:order_id/packages/:id
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 39 def admin_update return if !user_is_allowed('orders', 'edit') resp = Caboose::StdClass.new op = OrderPackage.find(params[:id]) save = true params.each do |name,value| case name when 'order_id' then op.order_id = value when 'shipping_method_id' then op.shipping_method_id = value when 'shipping_package_id' then op.shipping_package_id = value when 'status' then op.status = value when 'tracking_number' then op.tracking_number = value when 'total' then op.total = value when 'package_method' then arr = value.split('_') op.shipping_package_id = arr[0] op.shipping_method_id = arr[1] end end op.order.calculate_total resp.success = save && op.save render :json => resp end |
#admin_update_line_item ⇒ Object
PUT /admin/orders/:order_id/line-items/:id
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 66 def admin_update_line_item return if !user_is_allowed('orders', 'edit') resp = Caboose::StdClass.new({'attributes' => {}}) li = LineItem.find(params[:id]) save = true send_status_email = false params.each do |name,value| case name when 'quantity' li.quantity = value li.save # Recalculate everything r = ShippingCalculator.rate(li.order, li.order.shipping_method_code) li.order.shipping = r['negotiated_rate'] / 100 li.order.handling = (r['negotiated_rate'] / 100) * 0.05 li.order.tax = TaxCalculator.tax(li.order) li.order.calculate_total li.order.save when 'tracking_number' li.tracking_number = value send_status_email = true when 'status' li.status = value resp.attributes['status'] = {'text' => value} send_status_email = true end end if send_status_email OrdersMailer.configure_for_site(@site.id).customer_status_updated(li.order).deliver end resp.success = save && li.save render :json => resp end |
#capture_funds ⇒ Object
GET /admin/orders/:id/capture
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 132 def capture_funds return if !user_is_allowed('orders', 'edit') response = Caboose::StdClass.new({ 'refresh' => nil, 'error' => nil, 'success' => nil }) order = Order.find(params[:id]) if order.financial_status == 'captured' resp.error = "Funds for this order have already been captured." elsif order.total > order.auth_amount resp.error = "The order total exceeds the authorized amount." else if PaymentProcessor.capture(order) order.update_attribute(:financial_status, 'captured') response.success = 'Captured funds successfully' else response.error = 'Error capturing funds' end #if (order.discounts.any? && order.total < order.discounts.first.amount_current) || PaymentProcessor.capture(order) # order.financial_status = 'captured' # order.save # # if order.discounts.any? # order.update_attribute(:amount_discounted, order.discounts.first.amount_current) # order.update_gift_cards # end # # response.success = "Captured funds successfully" #else # response.error = "Error capturing funds." #end end render :json => response end |