class Eddy::Models::Interchange

Top level EDI interchange.

Attributes

control_number[RW]

A unique control number for the Interchange. @return [Integer]

store[RW]

@return [Eddy::Data::Store] Data store for the Interchange.

transaction_sets[RW]

@return [Array<Eddy::Models::TransactionSet>]

Public Class Methods

create(_transaction_sets) click to toggle source

@param _transaction_sets [Array<Eddy::Models::TransactionSet>] @return [Eddy::Models::Interchange]

# File lib/eddy/models/interchange.rb, line 23
def self.create(_transaction_sets)
  itch = Eddy::Models::Interchange.new()
  return itch
end
new(store = Eddy::Data::Store.new()) click to toggle source

@param store [Eddy::Data::Store] (Eddy::Data::Store.new) @return [void]

# File lib/eddy/models/interchange.rb, line 15
def initialize(store = Eddy::Data::Store.new())
  self.control_number = Eddy::Data.new_interchange_control_number()
  self.store = store
  self.transaction_sets = []
end

Public Instance Methods

functional_groups() click to toggle source

@return [Array<Eddy::Models::FunctionalGroup>]

# File lib/eddy/models/interchange.rb, line 41
def functional_groups()
  sorted_sets = {}
  self.transaction_sets.each do |ts|
    sorted_sets[ts.functional_group] ||= []
    sorted_sets[ts.functional_group] << ts
  end
  i = 0
  return sorted_sets.map do |_, value|
    i += 1
    Eddy::Models::FunctionalGroup.new(self.store, i, *value)
  end
end
render() { |isa, iea| ... } click to toggle source

@yieldparam [Eddy::Segments::ISA] isa @yieldparam [Eddy::Segments::IEA] iea @return [String]

# File lib/eddy/models/interchange.rb, line 31
def render()
  f_groups = self.functional_groups()
  sep = self.store.segment_separator
  isa = Eddy::Segments::ISA.new(self.store, self.control_number)
  iea = Eddy::Segments::IEA.new(self.store, self.control_number, f_groups.length)
  yield(isa, iea) if block_given?
  return ([isa, f_groups, iea].flatten.map(&:render).join(sep) + sep).rstrip()
end

Private Instance Methods

verify_transaction_set(transaction_set) click to toggle source

@raise [ArgumentError] Unless `transaction_set` is a subclass of {Eddy::Models::TransactionSet} @param transaction_set [Eddy::Models::TransactionSet] @return [void]

# File lib/eddy/models/interchange.rb, line 59
def verify_transaction_set(transaction_set)
  raise ArgumentError unless transaction_set < Eddy::Models::TransactionSet
  raise ArgumentError unless transaction_set <= Eddy::Models::TransactionSet
  raise ArgumentError unless transaction_set.ancestors.include?(Eddy::Models::TransactionSet)
  raise ArgumentError unless transaction_set.superclass == Eddy::Models::TransactionSet
  return nil
end