Class: IngramMicro::Transmission

Inherits:
Object
  • Object
show all
Defined in:
lib/ingram_micro/transmission.rb

Constant Summary collapse

XSD =
{
  'sales-order-submission' => 'outbound/BPXML-SalesOrder.xsd',
  'shipment-status' => 'outbound/BPXML-ShipmentStatus.xsd',
  'return-authorization' => 'outbound/BPXML-ReturnAuthorization.xsd',
  'standard-response' => 'outbound/BPXML-StandardResponse.xsd',
  'load-reject' => 'inbound/BPXML-LoadReject.xsd',
  'load-success' => 'inbound/BPXML-LoadSuccess.xsd',
  'return-receipt' => 'inbound/BPXML-ReturnReceipt.xsd',
  'ship-advice' => 'inbound/BPXML-ShipAdvice.xsd'
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Transmission

Returns a new instance of Transmission.



16
17
18
# File 'lib/ingram_micro/transmission.rb', line 16

def initialize(options={})
  @errors = []
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



14
15
16
# File 'lib/ingram_micro/transmission.rb', line 14

def errors
  @errors
end

#transaction_nameObject (readonly)

Returns the value of attribute transaction_name.



14
15
16
# File 'lib/ingram_micro/transmission.rb', line 14

def transaction_name
  @transaction_name
end

Instance Method Details

#add_transaction_info(builder) ⇒ Object



41
42
43
44
45
# File 'lib/ingram_micro/transmission.rb', line 41

def add_transaction_info(builder)
  builder.send('transactionInfo') do
    builder.send('eventID')
  end
end

#order_builderObject



32
33
34
35
# File 'lib/ingram_micro/transmission.rb', line 32

def order_builder
  warn '[DEPRECATION] `order_builder` is deprecated.  Please use `xml_builder` instead.'
  xml_builder
end

#schema_valid?Boolean

Returns:

  • (Boolean)


20
21
22
23
24
25
26
27
28
29
30
# File 'lib/ingram_micro/transmission.rb', line 20

def schema_valid?
  xsd = Nokogiri::XML::Schema(File.read("#{IngramMicro::GEM_DIR}/xsd/" +
    XSD[self.class::TRANSMISSION_FILENAME]))
  valid = true
  xsd.validate(self.xml_builder.doc).each do |error|
    errors << error.message
    valid = false
  end
  errors.each { |error| puts 'XML VALIDATION ERROR: ' + error }
  valid
end

#send_requestObject



51
52
53
54
# File 'lib/ingram_micro/transmission.rb', line 51

def send_request
  client = IngramMicro::Client.new
  client.post(self.xml_builder.to_xml)
end

#submit_requestObject



47
48
49
# File 'lib/ingram_micro/transmission.rb', line 47

def submit_request
  send_request if schema_valid?
end

#xml_builderObject



37
38
39
# File 'lib/ingram_micro/transmission.rb', line 37

def xml_builder
  raise Exception('xml_builder needs to be implemented in subclass')
end