Class: Merge::Accounting::CreditNoteRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/merge_ruby_client/accounting/types/credit_note_request.rb

Overview

# The CreditNote Object

### Description
A `CreditNote` is transaction issued to a customer, indicating a reduction or
cancellation of the amount owed by the customer. It is most generally used as an
adjustment note used to rectify errors, returns, or overpayments related to a
sales transaction. A `CreditNote` can be applied to *Accounts Receivable*
Invoices to decrease the overall amount of the Invoice.
### Usage Example
Fetch from the `LIST CreditNotes` endpoint and view a company's credit notes.

Constant Summary collapse

OMIT =
Object.new

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(transaction_date: OMIT, status: OMIT, number: OMIT, contact: OMIT, company: OMIT, exchange_rate: OMIT, total_amount: OMIT, remaining_credit: OMIT, inclusive_of_tax: OMIT, line_items: OMIT, tracking_categories: OMIT, currency: OMIT, payments: OMIT, applied_payments: OMIT, accounting_period: OMIT, applied_to_lines: OMIT, integration_params: OMIT, linked_account_params: OMIT, additional_properties: nil) ⇒ Merge::Accounting::CreditNoteRequest



717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 717

def initialize(transaction_date: OMIT, status: OMIT, number: OMIT, contact: OMIT, company: OMIT,
               exchange_rate: OMIT, total_amount: OMIT, remaining_credit: OMIT, inclusive_of_tax: OMIT, line_items: OMIT, tracking_categories: OMIT, currency: OMIT, payments: OMIT, applied_payments: OMIT, accounting_period: OMIT, applied_to_lines: OMIT, integration_params: OMIT, linked_account_params: OMIT, additional_properties: nil)
  @transaction_date = transaction_date if transaction_date != OMIT
  @status = status if status != OMIT
  @number = number if number != OMIT
  @contact = contact if contact != OMIT
  @company = company if company != OMIT
  @exchange_rate = exchange_rate if exchange_rate != OMIT
  @total_amount = total_amount if total_amount != OMIT
  @remaining_credit = remaining_credit if remaining_credit != OMIT
  @inclusive_of_tax = inclusive_of_tax if inclusive_of_tax != OMIT
  @line_items = line_items if line_items != OMIT
  @tracking_categories = tracking_categories if tracking_categories != OMIT
  @currency = currency if currency != OMIT
  @payments = payments if payments != OMIT
  @applied_payments = applied_payments if applied_payments != OMIT
  @accounting_period = accounting_period if accounting_period != OMIT
  @applied_to_lines = applied_to_lines if applied_to_lines != OMIT
  @integration_params = integration_params if integration_params != OMIT
  @linked_account_params =  if  != OMIT
  @additional_properties = additional_properties
  @_field_set = {
    "transaction_date": transaction_date,
    "status": status,
    "number": number,
    "contact": contact,
    "company": company,
    "exchange_rate": exchange_rate,
    "total_amount": total_amount,
    "remaining_credit": remaining_credit,
    "inclusive_of_tax": inclusive_of_tax,
    "line_items": line_items,
    "tracking_categories": tracking_categories,
    "currency": currency,
    "payments": payments,
    "applied_payments": applied_payments,
    "accounting_period": accounting_period,
    "applied_to_lines": applied_to_lines,
    "integration_params": integration_params,
    "linked_account_params": 
  }.reject do |_k, v|
    v == OMIT
  end
end

Instance Attribute Details

#accounting_periodMerge::Accounting::CreditNoteRequestAccountingPeriod (readonly)



369
370
371
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 369

def accounting_period
  @accounting_period
end

#additional_propertiesOpenStruct (readonly)



378
379
380
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 378

def additional_properties
  @additional_properties
end

#applied_paymentsArray<Merge::Accounting::CreditNoteRequestAppliedPaymentsItem> (readonly)



367
368
369
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 367

def applied_payments
  @applied_payments
end

#applied_to_linesArray<Merge::Accounting::CreditNoteApplyLineForCreditNoteRequest> (readonly)



372
373
374
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 372

def applied_to_lines
  @applied_to_lines
end

#companyMerge::Accounting::CreditNoteRequestCompany (readonly)



41
42
43
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 41

def company
  @company
end

#contactMerge::Accounting::CreditNoteRequestContact (readonly)



39
40
41
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 39

def contact
  @contact
end

#currencyMerge::Accounting::TransactionCurrencyEnum (readonly)



362
363
364
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 362

def currency
  @currency
end

#exchange_rateString (readonly)



43
44
45
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 43

def exchange_rate
  @exchange_rate
end

#inclusive_of_taxBoolean (readonly)



50
51
52
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 50

def inclusive_of_tax
  @inclusive_of_tax
end

#integration_paramsHash{String => Object} (readonly)



374
375
376
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 374

def integration_params
  @integration_params
end

#line_itemsArray<Merge::Accounting::CreditNoteRequestLineItemsItem> (readonly)



52
53
54
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 52

def line_items
  @line_items
end

#linked_account_paramsHash{String => Object} (readonly)



376
377
378
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 376

def 
  @linked_account_params
end

#numberString (readonly)



37
38
39
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 37

def number
  @number
end

#paymentsArray<Merge::Accounting::CreditNoteRequestPaymentsItem> (readonly)



364
365
366
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 364

def payments
  @payments
end

#remaining_creditFloat (readonly)



47
48
49
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 47

def remaining_credit
  @remaining_credit
end

#statusMerge::Accounting::CreditNoteStatusEnum (readonly)



35
36
37
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 35

def status
  @status
end

#total_amountFloat (readonly)



45
46
47
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 45

def total_amount
  @total_amount
end

#tracking_categoriesArray<Merge::Accounting::CreditNoteRequestTrackingCategoriesItem> (readonly)



54
55
56
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 54

def tracking_categories
  @tracking_categories
end

#transaction_dateDateTime (readonly)



30
31
32
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 30

def transaction_date
  @transaction_date
end

Class Method Details

.from_json(json_object:) ⇒ Merge::Accounting::CreditNoteRequest

Deserialize a JSON object to an instance of CreditNoteRequest



766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 766

def self.from_json(json_object:)
  struct = JSON.parse(json_object, object_class: OpenStruct)
  parsed_json = JSON.parse(json_object)
  transaction_date = (DateTime.parse(parsed_json["transaction_date"]) unless parsed_json["transaction_date"].nil?)
  status = parsed_json["status"]
  number = parsed_json["number"]
  if parsed_json["contact"].nil?
    contact = nil
  else
    contact = parsed_json["contact"].to_json
    contact = Merge::Accounting::CreditNoteRequestContact.from_json(json_object: contact)
  end
  if parsed_json["company"].nil?
    company = nil
  else
    company = parsed_json["company"].to_json
    company = Merge::Accounting::CreditNoteRequestCompany.from_json(json_object: company)
  end
  exchange_rate = parsed_json["exchange_rate"]
  total_amount = parsed_json["total_amount"]
  remaining_credit = parsed_json["remaining_credit"]
  inclusive_of_tax = parsed_json["inclusive_of_tax"]
  line_items = parsed_json["line_items"]&.map do |item|
    item = item.to_json
    Merge::Accounting::CreditNoteRequestLineItemsItem.from_json(json_object: item)
  end
  tracking_categories = parsed_json["tracking_categories"]&.map do |item|
    item = item.to_json
    Merge::Accounting::CreditNoteRequestTrackingCategoriesItem.from_json(json_object: item)
  end
  currency = parsed_json["currency"]
  payments = parsed_json["payments"]&.map do |item|
    item = item.to_json
    Merge::Accounting::CreditNoteRequestPaymentsItem.from_json(json_object: item)
  end
  applied_payments = parsed_json["applied_payments"]&.map do |item|
    item = item.to_json
    Merge::Accounting::CreditNoteRequestAppliedPaymentsItem.from_json(json_object: item)
  end
  if parsed_json["accounting_period"].nil?
    accounting_period = nil
  else
    accounting_period = parsed_json["accounting_period"].to_json
    accounting_period = Merge::Accounting::CreditNoteRequestAccountingPeriod.from_json(json_object: accounting_period)
  end
  applied_to_lines = parsed_json["applied_to_lines"]&.map do |item|
    item = item.to_json
    Merge::Accounting::CreditNoteApplyLineForCreditNoteRequest.from_json(json_object: item)
  end
  integration_params = parsed_json["integration_params"]
   = parsed_json["linked_account_params"]
  new(
    transaction_date: transaction_date,
    status: status,
    number: number,
    contact: contact,
    company: company,
    exchange_rate: exchange_rate,
    total_amount: total_amount,
    remaining_credit: remaining_credit,
    inclusive_of_tax: inclusive_of_tax,
    line_items: line_items,
    tracking_categories: tracking_categories,
    currency: currency,
    payments: payments,
    applied_payments: applied_payments,
    accounting_period: accounting_period,
    applied_to_lines: applied_to_lines,
    integration_params: integration_params,
    linked_account_params: ,
    additional_properties: struct
  )
end

.validate_raw(obj:) ⇒ Void

Leveraged for Union-type generation, validate_raw attempts to parse the given

hash and check each fields type against the current object's property
definitions.


853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 853

def self.validate_raw(obj:)
  obj.transaction_date&.is_a?(DateTime) != false || raise("Passed value for field obj.transaction_date is not the expected type, validation failed.")
  obj.status&.is_a?(Merge::Accounting::CreditNoteStatusEnum) != false || raise("Passed value for field obj.status is not the expected type, validation failed.")
  obj.number&.is_a?(String) != false || raise("Passed value for field obj.number is not the expected type, validation failed.")
  obj.contact.nil? || Merge::Accounting::CreditNoteRequestContact.validate_raw(obj: obj.contact)
  obj.company.nil? || Merge::Accounting::CreditNoteRequestCompany.validate_raw(obj: obj.company)
  obj.exchange_rate&.is_a?(String) != false || raise("Passed value for field obj.exchange_rate is not the expected type, validation failed.")
  obj.total_amount&.is_a?(Float) != false || raise("Passed value for field obj.total_amount is not the expected type, validation failed.")
  obj.remaining_credit&.is_a?(Float) != false || raise("Passed value for field obj.remaining_credit is not the expected type, validation failed.")
  obj.inclusive_of_tax&.is_a?(Boolean) != false || raise("Passed value for field obj.inclusive_of_tax is not the expected type, validation failed.")
  obj.line_items&.is_a?(Array) != false || raise("Passed value for field obj.line_items is not the expected type, validation failed.")
  obj.tracking_categories&.is_a?(Array) != false || raise("Passed value for field obj.tracking_categories is not the expected type, validation failed.")
  obj.currency&.is_a?(Merge::Accounting::TransactionCurrencyEnum) != false || raise("Passed value for field obj.currency is not the expected type, validation failed.")
  obj.payments&.is_a?(Array) != false || raise("Passed value for field obj.payments is not the expected type, validation failed.")
  obj.applied_payments&.is_a?(Array) != false || raise("Passed value for field obj.applied_payments is not the expected type, validation failed.")
  obj.accounting_period.nil? || Merge::Accounting::CreditNoteRequestAccountingPeriod.validate_raw(obj: obj.accounting_period)
  obj.applied_to_lines&.is_a?(Array) != false || raise("Passed value for field obj.applied_to_lines is not the expected type, validation failed.")
  obj.integration_params&.is_a?(Hash) != false || raise("Passed value for field obj.integration_params is not the expected type, validation failed.")
  obj.&.is_a?(Hash) != false || raise("Passed value for field obj.linked_account_params is not the expected type, validation failed.")
end

Instance Method Details

#to_json(*_args) ⇒ String

Serialize an instance of CreditNoteRequest to a JSON object



843
844
845
# File 'lib/merge_ruby_client/accounting/types/credit_note_request.rb', line 843

def to_json(*_args)
  @_field_set&.to_json
end