Sha256: 7358e7f6a32d7582e1c06540cb9204718009e764a69c3e99e5d6ca0a4e21bc60

Contents?: true

Size: 1021 Bytes

Versions: 1

Compression:

Stored size: 1021 Bytes

Contents

# frozen_string_literal: true

require_relative 'models/invoice_data'
require_relative 'services/invoice_xml_builder'
require_relative 'services/invoice_service'
require_relative 'services/response_handler'

module Cetustek
  class CreateInvoice
    def initialize(invoice_data)
      @invoice_data = invoice_data
    end

    def execute
      xml = Services::InvoiceXmlBuilder.new(@invoice_data).build
      response = Services::InvoiceService.new(xml, @invoice_data.order_id).create
      result = Services::ResponseHandler.new(response, @invoice_data, xml).process
      
      if defined?(Rails) && result[:number] && result[:random_number]
        update_invoice_info(result)
      end
      
      result
    end

    private

    def update_invoice_info(result)
      return unless @invoice_data.respond_to?(:invoice_info)
      
      @invoice_data.invoice_info.update(
        number: result[:number],
        random_number: result[:random_number],
        created_at: Time.zone.today
      )
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cetustek-0.2.0 lib/cetustek/create_invoice.rb