Module: NetSuite::Support::Records

Includes:
Namespaces::PlatformCore, Attributes
Included in:
Records::Account, Records::Address, Records::AssemblyItem, Records::BillAddress, Records::BillingSchedule, Records::BillingScheduleMilestone, Records::BillingScheduleRecurrence, Records::Bin, Records::BinNumber, Records::CashRefund, Records::CashRefundItem, Records::CashSale, Records::CashSaleItem, Records::Classification, Records::Contact, Records::ContactAccessRoles, Records::ContactRole, Records::CreditMemo, Records::CreditMemoApply, Records::CreditMemoItem, Records::Currency, Records::CurrencyRate, Records::CustomField, Records::CustomList, Records::CustomListCustomValue, Records::CustomRecord, Records::CustomRecordRef, Records::Customer, Records::CustomerAddressbook, Records::CustomerCategory, Records::CustomerCurrency, Records::CustomerDeposit, Records::CustomerPartner, Records::CustomerPayment, Records::CustomerPaymentApply, Records::CustomerRefund, Records::CustomerRefundApply, Records::CustomerRefundDeposit, Records::Deposit, Records::DepositCashBack, Records::DepositOther, Records::DepositPayment, Records::DescriptionItem, Records::DiscountItem, Records::Duration, Records::Employee, Records::File, Records::Folder, Records::GiftCertRedemption, Records::GiftCertificate, Records::GiftCertificateItem, Records::InventoryAssignment, Records::InventoryAssignmentList, Records::InventoryDetail, Records::InventoryItem, Records::InventoryTransfer, Records::InventoryTransferInventory, Records::InventoryTransferInventoryList, Records::Invoice, Records::InvoiceItem, Records::ItemFulfillment, Records::ItemFulfillmentItem, Records::ItemFulfillmentPackage, Records::ItemGroup, Records::ItemMember, Records::ItemReceipt, Records::ItemReceiptItem, Records::ItemVendor, Records::Job, Records::JobStatus, Records::JournalEntry, Records::JournalEntryLine, Records::KitItem, Records::Location, Records::MemberList, Records::NonInventoryPurchaseItem, Records::NonInventoryResaleItem, Records::NonInventorySaleItem, Records::Note, Records::NoteType, Records::Opportunity, Records::OpportunityItem, Records::OtherChargeSaleItem, Records::Partner, Records::PaymentItem, Records::PaymentMethod, Records::PayrollItem, Records::PhoneCall, Records::PromotionCode, Records::PurchaseOrder, Records::PurchaseOrderItem, Records::RecordRef, Records::RecordRefList, Records::ReturnAuthorization, Records::RevRecSchedule, Records::RevRecTemplate, Records::Roles, Records::SalesOrder, Records::SalesOrderItem, Records::SalesTaxItem, Records::SerializedInventoryItem, Records::ServiceResaleItem, Records::ServiceSaleItem, Records::ShipAddress, Records::SiteCategory, Records::Subsidiary, Records::SubtotalItem, Records::SupportCase, Records::Task, Records::TaxGroup, Records::Term, Records::TimeBill, Records::TransactionShipGroup, Records::TransferOrder, Records::TransferOrderItem, Records::UnitsType, Records::UnitsTypeUom, Records::Vendor, Records::VendorBill, Records::VendorBillExpense, Records::VendorBillItem, Records::VendorCategory, Records::VendorCredit, Records::VendorCreditApply, Records::VendorCreditExpense, Records::VendorCreditItem, Records::VendorPayment, Records::VendorPaymentApply, Records::WorkOrder, Records::WorkOrderItem
Defined in:
lib/netsuite/support/records.rb

Instance Method Summary collapse

Methods included from Namespaces::PlatformCore

#record_namespace

Methods included from Attributes

#attributes, #attributes=, #initialize_from_attributes_hash

Instance Method Details

#record_typeObject



51
52
53
# File 'lib/netsuite/support/records.rb', line 51

def record_type
  "#{record_namespace}:#{self.class.to_s.split('::').last}"
end

#refresh(credentials = {}) ⇒ Object



55
56
57
58
59
60
61
62
63
# File 'lib/netsuite/support/records.rb', line 55

def refresh(credentials = {})
  fresh_record = self.class.get(self.internal_id, credentials)

  self.attributes = fresh_record.send(:attributes)
  self.external_id = fresh_record.external_id
  self.errors = nil

  self
end

#to_attributes!(hash, kname, v) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/netsuite/support/records.rb', line 25

def to_attributes!(hash, kname, v)
  if v.respond_to?(:internal_id) && v.internal_id
    hash[:attributes!] ||= {}
    hash[:attributes!][kname] ||= {}
    hash[:attributes!][kname]['internalId'] = v.internal_id
  end

  if v.respond_to?(:external_id) && v.external_id
    hash[:attributes!] ||= {}
    hash[:attributes!][kname] ||= {}
    hash[:attributes!][kname]['externalId'] = v.external_id
  end

  if v.kind_of?(NetSuite::Records::RecordRef) && v.type
    hash[:attributes!] ||= {}
    hash[:attributes!][kname] ||= {}
    hash[:attributes!][kname]['type'] = v.type.lower_camelcase
  end

  if v.kind_of?(NetSuite::Records::CustomRecordRef) && v.type_id
    hash[:attributes!] ||= {}
    hash[:attributes!][kname] ||= {}
    hash[:attributes!][kname]['typeId'] = v.type_id.lower_camelcase
  end
end

#to_recordObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/netsuite/support/records.rb', line 7

def to_record
  attributes.reject { |k,v| self.class.read_only_fields.include?(k) }.inject({}) do |hash, (k,v)|
    kname = "#{record_namespace}:"
    kname += k == :klass ? 'class' : k.to_s.lower_camelcase

    to_attributes!(hash, kname, v)

    if Array === v
      v = v.map { |i| i.respond_to?(:to_record) ? i.to_record : i }
    elsif v.respond_to?(:to_record)
      v = v.to_record
    end

    hash[kname] = v
    hash
  end
end