lib/quickbooks/model/vendor.rb



# == Business Rules
# * The DisplayName, GivenName, MiddleName, FamilyName, and PrintOnCheckName attributes must not contain a colon,":".
# * The DisplayName attribute must be unique across all other customers, employees, vendors, and other names.
# * The PrimaryEmailAddress attribute must contain an at sign, "@," and dot, ".".
# * Either the DisplayName attribute or at least one of Title, GivenName, MiddleName, FamilyName, Suffix, or FullyQualifiedName attributes are required during create.

module Quickbooks
  module Model
    class Vendor < BaseModel
      XML_COLLECTION_NODE = "Vendor"
      XML_NODE = "Vendor"
      REST_RESOURCE = 'vendor'
      include NameEntity::Quality
      include NameEntity::PermitAlterations

      xml_name XML_NODE
      xml_accessor :id, :from => 'Id'
      xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
      xml_accessor :meta_data, :from => 'MetaData', :as => MetaData
      xml_accessor :attachable_ref, :from => 'AttachableRef', :as => BaseReference
      xml_accessor :title, :from => 'Title'
      xml_accessor :given_name, :from => 'GivenName'
      xml_accessor :middle_name, :from => 'MiddleName'
      xml_accessor :family_name, :from => 'FamilyName'
      xml_accessor :suffix, :from => 'Suffix'
      xml_accessor :company_name, :from => 'CompanyName'
      xml_accessor :display_name, :from => 'DisplayName'
      xml_accessor :print_on_check_name, :from => 'PrintOnCheckName'
      xml_accessor :active?, :from => 'Active'
      xml_accessor :primary_phone, :from => 'PrimaryPhone', :as => TelephoneNumber
      xml_accessor :alternate_phone, :from => 'AlternatePhone', :as => TelephoneNumber
      xml_accessor :mobile_phone, :from => 'Mobile', :as => TelephoneNumber
      xml_accessor :fax_phone, :from => 'Fax', :as => TelephoneNumber
      xml_accessor :primary_email_address, :from => 'PrimaryEmailAddr', :as => EmailAddress
      xml_accessor :web_site, :from => 'WebAddr', :as => WebSiteAddress
      xml_accessor :billing_address, :from => 'BillAddr', :as => PhysicalAddress
      xml_accessor :other_contact_info, :from => 'OtherContactInfo', :as => OtherContactInfo
      xml_accessor :tax_identifier, :from => 'TaxIdentifier'
      xml_accessor :term_ref, :from => 'TermRef', :as => BaseReference
      xml_accessor :balance, :from => 'Balance', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
      xml_accessor :account_number, :from => 'AcctNum'
      xml_accessor :is_1099?, :from => 'Vendor1099'
      xml_accessor :currency_ref, :from => 'CurrencyRef', :as => BaseReference

      #== Validations
      validate :names_cannot_contain_invalid_characters
      validate :email_address_is_valid

      reference_setters

    end
  end
end