class Deliveries::Couriers::CorreosExpress::Pickups::Create::FormatParams
Attributes
parcels[RW]
pickup_date[RW]
receiver[RW]
reference_code[RW]
remarks[RW]
sender[RW]
time_interval[RW]
Public Class Methods
new(sender:, receiver:, parcels:, reference_code:, pickup_date:, remarks:, time_interval: nil)
click to toggle source
# File lib/deliveries/couriers/correos_express/pickups/create/format_params.rb, line 10 def initialize(sender:, receiver:, parcels:, reference_code:, pickup_date:, remarks:, time_interval: nil) self.sender = sender self.receiver = receiver self.parcels = parcels self.reference_code = reference_code self.pickup_date = pickup_date self.remarks = remarks self.time_interval = time_interval end
Public Instance Methods
execute()
click to toggle source
# File lib/deliveries/couriers/correos_express/pickups/create/format_params.rb, line 21 def execute postcode = format_postcode(sender.postcode, sender.country) params = { solicitante: CorreosExpress.config(:client_code), refRecogida: reference_code, fechaRecogida: pickup_date&.strftime('%d%m%Y') || '', clienteRecogida: receiver.address_id || CorreosExpress.config(:pickup_receiver_code), codRemit: sender.address_id || '', nomRemit: sender.name, nifRemit: '', dirRecog: sender.street, poblRecog: sender.city, cpRecog: postcode, contRecog: sender.name, tlfnoRecog: sender.phone, emailRecog: sender.email, codDest: receiver.address_id || CorreosExpress.config(:pickup_receiver_code), nomDest: receiver.name, dirDest: receiver.street, pobDest: receiver.city, cpDest: receiver.postcode, paisDest: receiver.country, contactoDest: receiver.name, tlfnoDest: receiver.phone, emailDest: receiver.email, bultos: parcels.to_s } unless CorreosExpress.test? custom_product = CorreosExpress.config("countries.#{sender.country.to_s.downcase}.product") params[:producto] = custom_product if custom_product end defaults = Defaults::PARAMS defaults = defaults.merge(params) if time_interval defaults[:horaDesde1] = format '%02d:00', time_interval.first defaults[:horaHasta1] = format '%02d:00', time_interval.last else # Try to set cutoff time for the sender postal code. begin cutoff_time = CutoffTime.new(country: sender.country, postcode: postcode).execute # Set only when cuttoff time is less than 19:00 (the default cutoff time in correos express) if cutoff_time.to_i < 19 defaults[:horaHasta1] = cutoff_time # Update start hour if the period if smaller than 2 hours min_start_hour = cutoff_time.to_i - 2 defaults[:horaDesde1] = format('%02d:00', min_start_hour) if defaults[:horaDesde1].to_i > min_start_hour end rescue Deliveries::Error => e Deliveries.logger&.error "Cannot obtain cutoff time: #{e.message}" end end defaults.to_json end
Private Instance Methods
format_postcode(postcode, country)
click to toggle source
# File lib/deliveries/couriers/correos_express/pickups/create/format_params.rb, line 83 def format_postcode(postcode, country) if country.to_sym.downcase == :pt postcode&.split('-')&.first else postcode end end