Sha256: d432757cf9ddc59172b70b0d3b8039c2595b666d67e75ec5af83cf99029c5bf2

Contents?: true

Size: 1.7 KB

Versions: 8

Compression:

Stored size: 1.7 KB

Contents

# https://system.netsuite.com/help/helpcenter/en_US/Output/Help/SuiteCloudCustomizationScriptingWebServices/SuiteTalkWebServices/getAll.html
module NetSuite
  module Actions
    class GetAll
      include Support::Requests

      def initialize(klass)
        @klass   = klass
      end

      private

      def request(credentials={})
        NetSuite::Configuration.connection(
          { element_form_default: :unqualified }, credentials
        ).call(:get_all, message: request_body)
      end

      # <soap:Body>
      #   <platformMsgs:getAll>
      #     <record>
      #       <recordType>salesTaxItem</recordType>
      #     </record>
      #   </platformMsgs:getAll>
      # </soap:Body>
      def request_body
        type = @klass.to_s.split('::').last.sub(/[A-Z]/) { |m| m[0].downcase }

        {
          record: [
            record_type: type
          ]
        }
      end

      def success?
        @success ||= response_hash[:status][:@is_success] == 'true'
      end

      def response_body
        @response_body ||= array_wrap(response_hash[:record_list][:record])
      end

      def response_hash
        @response_hash ||= @response.body[:get_all_response][:get_all_result]
      end

      module Support

        def self.included(base)
          base.extend(ClassMethods)
        end

        module ClassMethods
          def get_all(credentials = {})
            response = NetSuite::Actions::GetAll.call([self], credentials)
            if response.success?
              response.body.map { |attr| new(attr) }
            else
              raise RecordNotFound, "#{self} with OPTIONS=#{options.inspect} could not be found"
            end
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
netsuite-0.7.3 lib/netsuite/actions/get_all.rb
netsuite-0.7.2 lib/netsuite/actions/get_all.rb
netsuite-0.7.1 lib/netsuite/actions/get_all.rb
netsuite-0.7.0 lib/netsuite/actions/get_all.rb
netsuite-0.6.9 lib/netsuite/actions/get_all.rb
netsuite-0.6.8 lib/netsuite/actions/get_all.rb
netsuite-0.6.7 lib/netsuite/actions/get_all.rb
netsuite-0.6.6 lib/netsuite/actions/get_all.rb