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, #under_construction_or_forwarding_domain?, #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
110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 110 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
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 302 303 304 305 306 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 272 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
124 125 126 127 128 129 130 131 132 133 134 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 124 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
266 267 268 269 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 266 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
260 261 262 263 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 260 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
246 247 248 249 250 251 252 253 254 255 256 257 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 246 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 64 65 66 67 68 |
# 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.save op.order.shipping = op.order.calculate_shipping op.order.total = op.order.calculate_total op.order.save resp.success = true render :json => resp end |
#admin_update_line_item ⇒ Object
PUT /admin/orders/:order_id/line-items/:id
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 103 104 105 106 107 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 71 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
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 172 173 174 175 176 |
# File 'app/controllers/caboose/order_packages_controller.rb', line 137 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 |