class JeraPayment::Services::Iugu::Invoices::Duplicate

Public Class Methods

new(resource, attributes) click to toggle source
# File lib/jera_payment/services/iugu/invoices/duplicate.rb, line 6
def initialize(resource, attributes)
  @resource = resource
  @attributes = attributes
end

Public Instance Methods

call() click to toggle source
# File lib/jera_payment/services/iugu/invoices/duplicate.rb, line 11
def call
  begin
    ApplicationRecord.transaction do
      iugu_invoice_duplicated = JeraPayment::Api::Iugu::Invoice.duplicate(@resource.api_id, @attributes,
                                                                          @resource&.sub_account&.api_token)

      raise(StandardError, iugu_invoice_duplicated[:errors]) if iugu_invoice_duplicated[:errors].present?

      invoice_duplicated = set_new_invoice(iugu_invoice_duplicated)

      raise(StandardError, invoice_duplicated[:errors]) if invoice_duplicated[:errors].present?

      @resource = invoice_duplicated
    end
  rescue Exception => error
    add_error(error.message)
  end
  @resource
end

Private Instance Methods

set_new_invoice(iugu_invoice_duplicated) click to toggle source
# File lib/jera_payment/services/iugu/invoices/duplicate.rb, line 33
def set_new_invoice(iugu_invoice_duplicated)
  invoice_duplicated = JeraPayment::Invoice.new(@resource.attributes.except('id', 'api_id'))

  invoice_duplicated.api_id = iugu_invoice_duplicated[:id]

  invoice_duplicated.assign_attributes(iugu_invoice_duplicated.slice(:total_cents, :secure_url, :digitable_line,
                                                                     :barcode_data, :barcode, :items, :ignore_due_email,
                                                                     :ignore_canceled_email, :current_fines_option,
                                                                     :keep_early_payment_discount, :due_date))

  invoice_duplicated.duplicated = true

  invoice_duplicated.save

  invoice_duplicated
end