6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'app/workers/fed_ex_freight_ca_schedule_pickup_worker.rb', line 6
def perform
store = Store.find(2)
carrier = 'FedExFreight'
carrier_account_id = "fedex_freight_ca_#{SHIPPING_BASE_CONFIGURATION[:fedex_ca_account]}"
pickup_date_time = Shipment.choose_carrier_pickup_date_time(carrier, store)
if store.carrier_pickup_for_datetime(carrier_account_id, pickup_date_time).blank?
shipments = Shipment.carrier_candidates_for_pickup(carrier)
deliveries = Delivery.where(id: shipments.pluck(Arel.sql('distinct shipments.delivery_id'))).by_store_id(store.id)
if deliveries.any?
result = WyShipping.schedule_pickup(carrier, store.country.iso3.to_sym, deliveries, pickup_date_time)
logger.info "#{self.class}: deliveries: #{deliveries.map{|d| d.order.reference_number}.join(', ')}, pickup_date_time: #{pickup_date_time}"
logger.info "#{self.class}: result[:request_response]: #{result[:request_response]}"
if result[:status_code] == :ok
logger.info "#{self.class}: pickup schedule result: #{result[:status_message]}"
store.set_carrier_pickup(carrier, carrier_account_id, result[:request_response], result[:confirmation_number], result[:schedule_start_datetime], result[:scheduled_end_datetime])
else
logger.info "#{self.class}: pickup could not be scheduled: #{result[:status_message]}, sending e-mail to #{store.email}"
Mailer.schedule_pickup_failed_email(store.email, carrier, deliveries, result[:status_message]).deliver
end
end
end
end
|