Sha256: 0599f5ee091a147f209d863aecb7fd79cdbca4943e895a6025486fc1bc58e820

Contents?: true

Size: 1.13 KB

Versions: 2

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true

require_relative '../operation'

module LedgerSync
  module Adaptors
    module QuickBooksOnline
      module Operation
        class FullUpdate
          include QuickBooksOnline::Operation::Mixin

          private

          def find_resource
            adaptor.find(
              resource: quickbooks_online_resource_type,
              id: resource.ledger_id
            )
          end

          def operate
            update_resource(find_resource)
          end

          def update_resource(find_result_hash)
            merged_resource = ledger_serializer.deserialize(hash: find_result_hash, merge_for_full_update: true)
            merged_serializer = ledger_serializer.class.new(resource: merged_resource)

            response = adaptor.post(
              resource: quickbooks_online_resource_type,
              payload: merged_serializer.to_ledger_hash(deep_merge_unmapped_values: find_result_hash)
            )

            success(
              resource: ledger_serializer.deserialize(hash: response),
              response: response
            )
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ledger_sync-1.1.3 lib/ledger_sync/adaptors/quickbooks_online/operation/full_update.rb
ledger_sync-1.1.2 lib/ledger_sync/adaptors/quickbooks_online/operation/full_update.rb