class CzechPostB2bClient::RequestBuilders::GetParcelsPrintingBuilder
Attributes
options[R]
parcel_codes[R]
Public Class Methods
allowed_printing_template_classes()
click to toggle source
# File lib/czech_post_b2b_client/request_builders/get_parcels_printing_builder.rb, line 14 def self.allowed_printing_template_classes @allowed_printing_template_classes ||= CzechPostB2bClient::PrintingTemplates.all_classes end
new(parcel_codes:, options:, request_id: 1)
click to toggle source
# File lib/czech_post_b2b_client/request_builders/get_parcels_printing_builder.rb, line 8 def initialize(parcel_codes:, options:, request_id: 1) @parcel_codes = parcel_codes @options = options @request_id = request_id end
Private Instance Methods
do_printing_data()
click to toggle source
# File lib/czech_post_b2b_client/request_builders/get_parcels_printing_builder.rb, line 58 def do_printing_data new_element('ns2:doPrintingData').tap do |printing_data| parcel_codes.each do |parcel_code| add_element_to(printing_data, 'ns2:parcelCode', value: parcel_code.to_s) end end end
do_printing_header()
click to toggle source
# File lib/czech_post_b2b_client/request_builders/get_parcels_printing_builder.rb, line 47 def do_printing_header # rubocop:disable Metrics/AbcSize new_element('ns2:doPrintingHeader').tap do |printing_header| add_element_to(printing_header, 'ns2:customerID', value: options[:customer_id]) # Technologicke cislo podavatele add_element_to(printing_header, 'ns2:contractNumber', value: options[:contract_number]) # Nepovine: ID CCK slozky podavatele add_element_to(printing_header, 'ns2:idForm', value: options[:template_id]) # Nepovine, default 20: ID formulare add_element_to(printing_header, 'ns2:shiftHorizontal', value: options[:margin_in_mm][:left]) # Hodnota posunu doprava v mm add_element_to(printing_header, 'ns2:shiftVertical', value: options[:margin_in_mm][:top]) # Hodnota posunu dolu v mm add_element_to(printing_header, 'ns2:position', value: options[:position_order]) # Nepovinna: Hodnota pozice end end
get_parcels_printing()
click to toggle source
# File lib/czech_post_b2b_client/request_builders/get_parcels_printing_builder.rb, line 40 def get_parcels_printing # rubocop:disable Naming/AccessorMethodName new_element('ns2:getParcelsPrinting').tap do |get_parcels_printing| add_element_to(get_parcels_printing, do_printing_header) add_element_to(get_parcels_printing, do_printing_data) end end
service_data_struct()
click to toggle source
# File lib/czech_post_b2b_client/request_builders/get_parcels_printing_builder.rb, line 34 def service_data_struct new_element('serviceData').tap do |srv_data| add_element_to(srv_data, get_parcels_printing) end end
validate_data()
click to toggle source
# File lib/czech_post_b2b_client/request_builders/get_parcels_printing_builder.rb, line 20 def validate_data if parcel_codes.empty? errors.add(:parcel_codes, 'Minimum of 1 parcel code is required!') fail! end if parcel_codes.size > 500 errors.add(:parcel_codes, 'Maximum of 500 parcel codes are allowed!') fail! end validate_template_ids end
validate_template_ids()
click to toggle source
# File lib/czech_post_b2b_client/request_builders/get_parcels_printing_builder.rb, line 66 def validate_template_ids # TODO: there can be up to 20 `idForm` nodes, but I do not know how it works yet template_id = options[:template_id] return if template_id.to_s == '' allowed_ids = self.class.allowed_printing_template_classes.collect(&:id) return if allowed_ids.include?(template_id) errors.add(:template_id, "Value '#{template_id}' is not allowed!") fail! end