quickbooks-ruby 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/lib/quickbooks-ruby.rb +10 -0
  3. data/lib/quickbooks/model/account.rb +1 -0
  4. data/lib/quickbooks/model/base_model.rb +8 -5
  5. data/lib/quickbooks/model/bill.rb +7 -1
  6. data/lib/quickbooks/model/bill_line_item.rb +13 -0
  7. data/lib/quickbooks/model/bill_payment.rb +6 -1
  8. data/lib/quickbooks/model/bill_payment_credit_card.rb +2 -2
  9. data/lib/quickbooks/model/company_info.rb +41 -0
  10. data/lib/quickbooks/model/credit_memo.rb +13 -6
  11. data/lib/quickbooks/model/customer_change.rb +12 -0
  12. data/lib/quickbooks/model/estimate.rb +12 -7
  13. data/lib/quickbooks/model/global_tax_calculation.rb +2 -2
  14. data/lib/quickbooks/model/has_line_items.rb +14 -0
  15. data/lib/quickbooks/model/invoice.rb +11 -9
  16. data/lib/quickbooks/model/invoice_change.rb +12 -0
  17. data/lib/quickbooks/model/journal_entry.rb +7 -1
  18. data/lib/quickbooks/model/journal_entry_line_detail.rb +1 -1
  19. data/lib/quickbooks/model/line.rb +29 -2
  20. data/lib/quickbooks/model/name_value.rb +8 -0
  21. data/lib/quickbooks/model/payment.rb +2 -5
  22. data/lib/quickbooks/model/payment_method.rb +11 -0
  23. data/lib/quickbooks/model/purchase.rb +11 -2
  24. data/lib/quickbooks/model/purchase_line_item.rb +24 -2
  25. data/lib/quickbooks/model/purchase_order.rb +10 -2
  26. data/lib/quickbooks/model/purchase_tax_rate_list.rb +11 -0
  27. data/lib/quickbooks/model/refund_receipt.rb +5 -6
  28. data/lib/quickbooks/model/sales_receipt.rb +15 -6
  29. data/lib/quickbooks/model/tax_code.rb +1 -0
  30. data/lib/quickbooks/model/term.rb +3 -0
  31. data/lib/quickbooks/model/time_activity.rb +26 -4
  32. data/lib/quickbooks/model/validator.rb +7 -3
  33. data/lib/quickbooks/model/vendor.rb +2 -1
  34. data/lib/quickbooks/model/vendor_change.rb +12 -0
  35. data/lib/quickbooks/model/vendor_credit.rb +9 -2
  36. data/lib/quickbooks/service/bill.rb +1 -1
  37. data/lib/quickbooks/service/bill_payment.rb +4 -0
  38. data/lib/quickbooks/service/credit_memo.rb +1 -1
  39. data/lib/quickbooks/service/customer_change.rb +23 -0
  40. data/lib/quickbooks/service/estimate.rb +1 -1
  41. data/lib/quickbooks/service/invoice.rb +1 -1
  42. data/lib/quickbooks/service/invoice_change.rb +23 -0
  43. data/lib/quickbooks/service/journal_entry.rb +1 -1
  44. data/lib/quickbooks/service/payment_method.rb +10 -0
  45. data/lib/quickbooks/service/purchase.rb +4 -0
  46. data/lib/quickbooks/service/purchase_order.rb +1 -1
  47. data/lib/quickbooks/service/refund_receipt.rb +4 -0
  48. data/lib/quickbooks/service/sales_receipt.rb +4 -0
  49. data/lib/quickbooks/service/time_activity.rb +1 -2
  50. data/lib/quickbooks/service/vendor_change.rb +23 -0
  51. data/lib/quickbooks/service/vendor_credit.rb +4 -0
  52. data/lib/quickbooks/version.rb +1 -1
  53. metadata +11 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 370814f06f30b4295a57aa192b80f1e5595f2add
4
- data.tar.gz: 979ea9f309103e35965164416c43f9fbf012c936
3
+ metadata.gz: 126cd8c2502ef5e347fc370519e4cac6a14f3d41
4
+ data.tar.gz: 6db2de33787e10842076dd81e83eb5dee722bf37
5
5
  SHA512:
6
- metadata.gz: 1e10973a8df8caf229df653080bd515d69efe0e03b94e9e348ac5bb7f31006e5a8676506dabf6c7612cdc955ab88f4e0780ab3fd754a8c1d0cd5c68dd5a3a759
7
- data.tar.gz: 28fd0719eab709d93f1d3269995d3b65d6762eabe04a004034e119582d1f454bc3453c8a30a232166a8729403b59da3f8884a1c36b0486ec69a3da98599f28a5
6
+ metadata.gz: 7f29c1ec30a4d11e695d0679ba19d67d827a3d8c08a217b54887e268956f5a31438062a26de7186285310648443f68c8890ec195becbcf0f4e46d9b24eb8820a
7
+ data.tar.gz: f7e8fbad8b49727faafc70465d25dac6ecb01d8c2861ae31f60338fef0b73b5247cee5d7f1ff2ddd5c3f1987910b9b553afd6424de21d09055c1b657780fb3f4
@@ -19,6 +19,7 @@ require 'quickbooks/model/base_model'
19
19
  require 'quickbooks/model/base_reference'
20
20
  require 'quickbooks/model/document_numbering'
21
21
  require 'quickbooks/model/global_tax_calculation'
22
+ require 'quickbooks/model/has_line_items'
22
23
  require 'quickbooks/model/access_token_response'
23
24
  require 'quickbooks/model/meta_data'
24
25
  require 'quickbooks/model/class'
@@ -49,6 +50,7 @@ require 'quickbooks/model/email_address'
49
50
  require 'quickbooks/model/web_site_address'
50
51
  require 'quickbooks/model/physical_address'
51
52
  require 'quickbooks/model/invoice_line_item'
53
+ require 'quickbooks/model/name_value'
52
54
  require 'quickbooks/model/company_info'
53
55
  require 'quickbooks/model/customer'
54
56
  require 'quickbooks/model/sales_receipt'
@@ -77,12 +79,17 @@ require 'quickbooks/model/invoice'
77
79
  require 'quickbooks/model/tax_rate'
78
80
  require 'quickbooks/model/tax_rate_detail'
79
81
  require 'quickbooks/model/sales_tax_rate_list'
82
+ require 'quickbooks/model/purchase_tax_rate_list'
80
83
  require 'quickbooks/model/tax_code'
81
84
  require 'quickbooks/model/fault'
82
85
  require 'quickbooks/model/batch_request'
83
86
  require 'quickbooks/model/batch_response'
84
87
  require 'quickbooks/model/preferences'
85
88
  require 'quickbooks/model/refund_receipt'
89
+ require 'quickbooks/model/invoice_change'
90
+ require 'quickbooks/model/customer_change'
91
+ require 'quickbooks/model/vendor_change'
92
+
86
93
 
87
94
  #== Services
88
95
  require 'quickbooks/service/service_crud'
@@ -115,6 +122,9 @@ require 'quickbooks/service/tax_code'
115
122
  require 'quickbooks/service/batch'
116
123
  require 'quickbooks/service/preferences'
117
124
  require 'quickbooks/service/refund_receipt'
125
+ require 'quickbooks/service/invoice_change'
126
+ require 'quickbooks/service/customer_change'
127
+ require 'quickbooks/service/vendor_change'
118
128
 
119
129
  module Quickbooks
120
130
  @@sandbox_mode = false
@@ -21,6 +21,7 @@ module Quickbooks
21
21
  xml_accessor :has_attachment?, :from => 'HasAttachment'
22
22
  xml_accessor :name, :from => 'Name'
23
23
  xml_accessor :description, :from => 'Description'
24
+ xml_accessor :fully_qualified_name, :from => 'FullyQualifiedName' # ReadOnly
24
25
 
25
26
  xml_accessor :sub_account?, :from => 'SubAccount'
26
27
  xml_accessor :parent_ref, :from => 'ParentRef', :as => BaseReference
@@ -42,10 +42,6 @@ module Quickbooks
42
42
  HashWithIndifferentAccess[attributes]
43
43
  end
44
44
 
45
- def ensure_line_items_initialization
46
- self.line_items ||= []
47
- end
48
-
49
45
  def inspect
50
46
  # it would be nice if we could inspect all the children,
51
47
  # but it's likely to blow the stack in some cases
@@ -78,7 +74,9 @@ module Quickbooks
78
74
  # self.discount_ref = BaseReference.new(id)
79
75
  # end
80
76
  def reference_setters(*args)
81
- args.each do |attribute|
77
+ references = args.empty? ? reference_attrs : args
78
+
79
+ references.each do |attribute|
82
80
  method_name = "#{attribute.to_s.gsub('_ref', '_id')}=".to_sym
83
81
  unless instance_methods(false).include?(method_name)
84
82
  method_definition = <<-METH
@@ -91,9 +89,14 @@ module Quickbooks
91
89
  end
92
90
  end
93
91
 
92
+ def reference_attrs
93
+ matches = roxml_attrs.select{|attr| attr.sought_type == Quickbooks::Model::BaseReference}.map{|attr| attr.accessor}
94
+ end
95
+
94
96
  def inspect
95
97
  "#{super}(#{attrs_with_types.join " "})"
96
98
  end
99
+
97
100
  def attrs_with_types
98
101
  roxml_attrs.map do |attr|
99
102
  "#{attr.accessor}:" +
@@ -2,6 +2,7 @@ module Quickbooks
2
2
  module Model
3
3
  class Bill < BaseModel
4
4
  include GlobalTaxCalculation
5
+ include HasLineItems
5
6
 
6
7
  XML_COLLECTION_NODE = "Bill"
7
8
  XML_NODE = "Bill"
@@ -21,19 +22,24 @@ module Quickbooks
21
22
  xml_accessor :vendor_ref, :from => 'VendorRef', :as => BaseReference
22
23
  xml_accessor :payer_ref, :from => 'PayerRef', :as => BaseReference
23
24
  xml_accessor :sales_term_ref, :from => 'SalesTermRef', :as => BaseReference
25
+ xml_accessor :attachable_ref, :from => 'AttachableRef', :as => BaseReference
26
+ xml_accessor :ap_account_ref, :from => 'APAccountRef', :as => BaseReference
24
27
 
25
28
  xml_accessor :due_date, :from => 'DueDate', :as => Date
26
29
  xml_accessor :remit_to_address, :from => 'RemitToAddr', :as => PhysicalAddress
27
30
  xml_accessor :ship_address, :from => 'ShipAddr', :as => PhysicalAddress
31
+ xml_accessor :exchange_rate, :from => 'ExchangeRate', :as => BigDecimal, :to_xml => to_xml_big_decimal
32
+ xml_accessor :balance, :from => 'Balance', :as => BigDecimal, :to_xml => to_xml_big_decimal
28
33
 
29
34
  # readonly
30
35
  xml_accessor :bill_email, :from => 'BillEmail', :as => EmailAddress
31
36
  xml_accessor :reply_email, :from => 'ReplyEmail', :as => EmailAddress
32
37
  xml_accessor :total, :from => 'TotalAmt', :as => BigDecimal
38
+ xml_accessor :currency_ref, :from => 'CurrencyRef', :as => BaseReference
33
39
 
34
40
  validate :line_item_size
35
41
 
36
- reference_setters :department_ref, :vendor_ref, :payer_ref, :sales_term_ref
42
+ reference_setters :department_ref, :vendor_ref, :payer_ref, :sales_term_ref, :currency_ref, :attachable_ref, :ap_account_ref
37
43
  end
38
44
  end
39
45
  end
@@ -24,6 +24,19 @@ module Quickbooks
24
24
  detail_type.to_s == ITEM_BASED_EXPENSE_LINE_DETAIL
25
25
  end
26
26
 
27
+ def account_based_expense_item!
28
+ self.detail_type = ACCOUNT_BASED_EXPENSE_LINE_DETAIL
29
+ self.account_based_expense_line_detail = AccountBasedExpenseLineDetail.new
30
+
31
+ yield self.account_based_expense_line_detail if block_given?
32
+ end
33
+
34
+ def item_based_expense_item!
35
+ self.detail_type = ITEM_BASED_EXPENSE_LINE_DETAIL
36
+ self.item_based_expense_line_detail = ItemBasedExpenseLineDetail.new
37
+
38
+ yield self.item_based_expense_line_detail if block_given?
39
+ end
27
40
  end
28
41
  end
29
42
  end
@@ -16,7 +16,12 @@ module Quickbooks
16
16
  xml_accessor :private_note, :from => 'PrivateNote'
17
17
 
18
18
  xml_accessor :vendor_ref, :from => 'VendorRef', :as => BaseReference
19
+ xml_accessor :department_ref, :from => 'DepartmentRef', :as => BaseReference
20
+ xml_accessor :currency_ref, :from => 'CurrencyRef', :as => BaseReference
21
+ xml_accessor :exchange_rate, :from => 'ExchangeRate', :as => BigDecimal, :to_xml => to_xml_big_decimal
22
+ xml_accessor :ap_account_ref, :from => 'APAccountRef', :as => BaseReference
19
23
  xml_accessor :pay_type, :from => 'PayType'
24
+ xml_accessor :process_bill_payment?, :from => 'ProcessBillPayment'
20
25
 
21
26
  ## Required if PayType is Check.
22
27
  xml_accessor :check_payment, :from => 'CheckPayment', :as => BillPaymentCheck
@@ -27,7 +32,7 @@ module Quickbooks
27
32
 
28
33
  validate :line_item_size
29
34
 
30
- reference_setters :vendor_ref
35
+ reference_setters
31
36
  end
32
37
  end
33
38
  end
@@ -4,7 +4,7 @@ module Quickbooks
4
4
  xml_accessor :cc_account_ref, :from => 'CCAccountRef', :as => BaseReference
5
5
  xml_accessor :cc_detail, :from => 'CCDetail', :as => CreditCardPayment
6
6
 
7
- reference_setters :cc_account_ref
7
+ reference_setters
8
8
  end
9
9
  end
10
- end
10
+ end
@@ -22,6 +22,47 @@ module Quickbooks
22
22
  xml_accessor :email, :from => 'Email', :as => EmailAddress
23
23
  xml_accessor :web_site, :from => 'WebAddr', :as => WebSiteAddress
24
24
  xml_accessor :supported_languages, :from => 'SupportedLanguages'
25
+ xml_accessor :name_values, :from => 'NameValue', :as => [NameValue]
26
+
27
+ def find_name_value(name)
28
+ name_values.select { |nv| nv.name == name }.first.value
29
+ end
30
+
31
+ def find_boolean_name_value(name)
32
+ find_name_value(name) == "true"
33
+ end
34
+
35
+ def industry_type
36
+ find_name_value("IndustryType")
37
+ end
38
+
39
+ def industry_code
40
+ find_name_value("IndustryCode")
41
+ end
42
+
43
+ def company_type
44
+ find_name_value("CompanyType")
45
+ end
46
+
47
+ def subscription_status
48
+ find_name_value("SubscriptionStatus")
49
+ end
50
+
51
+ def offering_sku
52
+ find_name_value("OfferingSku")
53
+ end
54
+
55
+ def neo_enabled
56
+ find_boolean_name_value("NeoEnabled")
57
+ end
58
+
59
+ def payroll_feature
60
+ find_boolean_name_value("PayrollFeature")
61
+ end
62
+
63
+ def accountant_feature
64
+ find_boolean_name_value("AccountantFeature")
65
+ end
25
66
  end
26
67
  end
27
68
  end
@@ -3,6 +3,7 @@ module Quickbooks
3
3
  class CreditMemo < BaseModel
4
4
  include DocumentNumbering
5
5
  include GlobalTaxCalculation
6
+ include HasLineItems
6
7
 
7
8
  XML_COLLECTION_NODE = "CreditMemo"
8
9
  XML_NODE = "CreditMemo"
@@ -19,6 +20,7 @@ module Quickbooks
19
20
  xml_accessor :line_items, :from => 'Line', :as => [Line]
20
21
  xml_accessor :txn_tax_detail, :from => 'TxnTaxDetail', :as => TransactionTaxDetail
21
22
  xml_accessor :private_note, :from => 'PrivateNote'
23
+ xml_accessor :custom_fields, :from => 'CustomField', :as => [CustomField]
22
24
 
23
25
  xml_accessor :customer_ref, :from => 'CustomerRef', :as => BaseReference
24
26
  xml_accessor :customer_memo, :from => 'CustomerMemo'
@@ -27,6 +29,16 @@ module Quickbooks
27
29
  xml_accessor :sales_term_ref, :from => 'SalesTermRef', :as => BaseReference
28
30
  xml_accessor :deposit_to_account_ref, :from => 'DepositToAccountRef', :as => BaseReference
29
31
  xml_accessor :payment_method_ref, :from => 'PaymentMethodRef', :as => BaseReference
32
+ xml_accessor :currency_ref, :from => 'CurrencyRef', :as => BaseReference
33
+ xml_accessor :exchange_rate, :from => 'ExchangeRate', :as => BigDecimal, :to_xml => to_xml_big_decimal
34
+ xml_accessor :shipping_address, :from => 'ShipAddr', :as => PhysicalAddress
35
+ xml_accessor :class_ref, :from => 'ClassRef', :as => BaseReference
36
+ xml_accessor :home_total, :from => 'HomeTotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
37
+ xml_accessor :apply_tax_after_discount?, :from => 'ApplyTaxAfterDiscount'
38
+ xml_accessor :print_status, :from => 'PrintStatus'
39
+ xml_accessor :email_status, :from => 'EmailStatus'
40
+ xml_accessor :balance, :from => 'Balance', :as => BigDecimal, :to_xml => to_xml_big_decimal
41
+ xml_accessor :remaining_credit, :from => 'RemainingCredit', :as => BigDecimal, :to_xml => to_xml_big_decimal
30
42
 
31
43
  # readonly
32
44
  xml_accessor :total, :from => 'TotalAmt', :as => BigDecimal
@@ -37,12 +49,7 @@ module Quickbooks
37
49
  validate :line_item_size
38
50
  validate :document_numbering
39
51
 
40
- reference_setters :department_ref, :customer_ref, :sales_term_ref, :deposit_to_account_ref, :payment_method_ref
41
-
42
- def initialize(*args)
43
- ensure_line_items_initialization
44
- super
45
- end
52
+ reference_setters
46
53
 
47
54
  def email=(email)
48
55
  self.bill_email = EmailAddress.new(email)
@@ -0,0 +1,12 @@
1
+ module Quickbooks
2
+ module Model
3
+ # Refer to: https://developer.intuit.com/docs/0100_accounting/0300_developer_guides/change_data_capture
4
+ class CustomerChange < BaseModel
5
+ XML_NODE = "Customer"
6
+
7
+ xml_accessor :id, :from => 'Id', :as => Integer
8
+ xml_accessor :status, :from => '@status'
9
+ xml_accessor :meta_data, :from => 'MetaData', :as => MetaData
10
+ end
11
+ end
12
+ end
@@ -9,6 +9,7 @@ module Quickbooks
9
9
  module Model
10
10
  class Estimate < BaseModel
11
11
  include GlobalTaxCalculation
12
+ include HasLineItems
12
13
 
13
14
  #== Constants
14
15
  REST_RESOURCE = 'estimate'
@@ -35,10 +36,15 @@ module Quickbooks
35
36
  xml_accessor :shipping_address, :from => 'ShipAddr', :as => PhysicalAddress
36
37
  xml_accessor :class_ref, :from => 'ClassRef', :as => BaseReference
37
38
  xml_accessor :sales_term_ref, :from => 'SalesTermRef', :as => BaseReference
38
- xml_accessor :total_amount, :from => 'TotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
39
+ xml_accessor :total, :from => 'TotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
39
40
  xml_accessor :ship_method_ref, :from => 'ShipMethodRef', :as => BaseReference
40
41
  xml_accessor :ship_date, :from => 'ShipDate', :as => Date
41
42
 
43
+ xml_accessor :currency_ref, :from => 'CurrencyRef', :as => BaseReference
44
+ xml_accessor :exchange_rate, :from => 'ExchangeRate', :as => BigDecimal, :to_xml => to_xml_big_decimal
45
+ xml_accessor :due_date, :from => 'DueDate', :as => Date
46
+ xml_accessor :deposit_to_account_ref, :from => 'DepositToAccountRef', :as => BaseReference
47
+
42
48
  xml_accessor :apply_tax_after_discount?, :from => 'ApplyTaxAfterDiscount'
43
49
  xml_accessor :print_status, :from => 'PrintStatus'
44
50
  xml_accessor :email_status, :from => 'EmailStatus'
@@ -47,17 +53,16 @@ module Quickbooks
47
53
  xml_accessor :accepted_by, :from => 'AcceptedBy'
48
54
  xml_accessor :accepted_date, :from => 'AcceptedDate', :as => Date
49
55
 
50
- reference_setters :department_ref, :customer_ref, :class_ref, :sales_term_ref, :ship_method_ref
56
+ reference_setters
57
+
58
+ #== This adds aliases for backwards compatability to old attributes names
59
+ alias_method :total_amount, :total
60
+ alias_method :total_amount=, :total=
51
61
 
52
62
  #== Validations
53
63
  validate :line_item_size
54
64
  validate :existence_of_customer_ref
55
65
 
56
- def initialize(*args)
57
- ensure_line_items_initialization
58
- super
59
- end
60
-
61
66
  private
62
67
 
63
68
  def existence_of_customer_ref
@@ -1,10 +1,10 @@
1
1
  module GlobalTaxCalculation
2
2
  extend ActiveSupport::Concern
3
3
 
4
- TAX_INCLUDED = "TaxIncluded"
4
+ TAX_INCLUSIVE = "TaxInclusive"
5
5
  TAX_EXCLUDED = "TaxExcluded"
6
6
  NOT_APPLICABLE = "NotApplicable"
7
- GLOBAL_TAX_CALCULATION = [TAX_INCLUDED, TAX_EXCLUDED, NOT_APPLICABLE]
7
+ GLOBAL_TAX_CALCULATION = [TAX_INCLUSIVE, TAX_EXCLUDED, NOT_APPLICABLE]
8
8
 
9
9
  included do
10
10
  xml_accessor :global_tax_calculation, :from => 'GlobalTaxCalculation'
@@ -0,0 +1,14 @@
1
+ module Quickbooks
2
+ module Model
3
+ module HasLineItems
4
+ def initialize(*args)
5
+ ensure_line_items_initialization
6
+ super
7
+ end
8
+
9
+ def ensure_line_items_initialization
10
+ self.line_items ||= []
11
+ end
12
+ end
13
+ end
14
+ end
@@ -10,6 +10,7 @@ module Quickbooks
10
10
  class Invoice < BaseModel
11
11
  include DocumentNumbering
12
12
  include GlobalTaxCalculation
13
+ include HasLineItems
13
14
 
14
15
  #== Constants
15
16
  REST_RESOURCE = 'invoice'
@@ -41,8 +42,8 @@ module Quickbooks
41
42
  xml_accessor :ship_date, :from => 'ShipDate', :as => Date
42
43
  xml_accessor :tracking_num, :from => 'TrackingNum'
43
44
  xml_accessor :ar_account_ref, :from => 'ARAccountRef', :as => BaseReference
44
- xml_accessor :total_amount, :from => 'TotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
45
- xml_accessor :home_total_amount, :from => 'HomeTotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
45
+ xml_accessor :total, :from => 'TotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
46
+ xml_accessor :home_total, :from => 'HomeTotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
46
47
  xml_accessor :apply_tax_after_discount?, :from => 'ApplyTaxAfterDiscount'
47
48
  xml_accessor :print_status, :from => 'PrintStatus'
48
49
  xml_accessor :email_status, :from => 'EmailStatus'
@@ -54,9 +55,15 @@ module Quickbooks
54
55
  xml_accessor :allow_online_payment?, :from => 'AllowOnlinePayment'
55
56
  xml_accessor :allow_online_credit_card_payment?, :from => 'AllowOnlineCreditCardPayment'
56
57
  xml_accessor :allow_online_ach_payment?, :from => 'AllowOnlineACHPayment'
58
+ xml_accessor :deposit_to_account_ref, :from => 'DepositToAccountRef', :as => BaseReference
57
59
 
58
- reference_setters :customer_ref, :class_ref, :sales_term_ref, :ship_method_ref
59
- reference_setters :ar_account_ref, :department_ref, :ar_account_ref, :currency_ref
60
+ reference_setters
61
+
62
+ #== This adds aliases for backwards compatability to old attributes names
63
+ alias_method :total_amount, :total
64
+ alias_method :total_amount=, :total=
65
+ alias_method :home_total_amount, :home_total
66
+ alias_method :home_total_amount=, :home_total=
60
67
 
61
68
  #== Validations
62
69
  validate :line_item_size
@@ -64,11 +71,6 @@ module Quickbooks
64
71
  validate :required_bill_email_if_email_delivery
65
72
  validate :document_numbering
66
73
 
67
- def initialize(*args)
68
- ensure_line_items_initialization
69
- super
70
- end
71
-
72
74
  def required_bill_email_if_email_delivery
73
75
  return unless email_status_for_delivery?
74
76
 
@@ -0,0 +1,12 @@
1
+ module Quickbooks
2
+ module Model
3
+ # Refer to: https://developer.intuit.com/docs/0100_accounting/0300_developer_guides/change_data_capture
4
+ class InvoiceChange < BaseModel
5
+ XML_NODE = "Invoice"
6
+
7
+ xml_accessor :id, :from => 'Id', :as => Integer
8
+ xml_accessor :status, :from => '@status'
9
+ xml_accessor :meta_data, :from => 'MetaData', :as => MetaData
10
+ end
11
+ end
12
+ end
@@ -1,6 +1,8 @@
1
1
  module Quickbooks
2
2
  module Model
3
3
  class JournalEntry < BaseModel
4
+ include HasLineItems
5
+
4
6
  XML_COLLECTION_NODE = "JournalEntry"
5
7
  XML_NODE = "JournalEntry"
6
8
  REST_RESOURCE = 'journalentry'
@@ -17,9 +19,13 @@ module Quickbooks
17
19
 
18
20
  # Readonly
19
21
  xml_accessor :currency_ref, :from => 'CurrencyRef', :as => BaseReference
20
- xml_accessor :total_amount, :from => 'TotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
22
+ xml_accessor :total, :from => 'TotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
21
23
  xml_accessor :home_total, :from => 'HomeTotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
22
24
 
25
+ #== This adds aliases for backwards compatability to old attributes names
26
+ alias_method :total_amount, :total
27
+ alias_method :total_amount=, :total=
28
+
23
29
  xml_accessor :adjustment?, :from => 'Adjustment'
24
30
 
25
31
  reference_setters :currency_ref
@@ -10,7 +10,7 @@ module Quickbooks
10
10
  xml_accessor :department_ref, :from => 'DepartmentRef', :as => BaseReference
11
11
 
12
12
  xml_accessor :tax_code_ref, :from => 'TaxCodeRef', :as => BaseReference
13
- xml_accessor :tax_applicable_on, :from => 'TaxApplicableOn'
13
+ xml_accessor :tax_applicable_on, :from => 'TaxApplicableOn', :as => :text
14
14
  xml_accessor :tax_amount, :from => 'TaxAmount', :as => BigDecimal, :to_xml => to_xml_big_decimal
15
15
 
16
16
  xml_accessor :billable_status, :from => 'BillableStatus'
@@ -2,7 +2,7 @@ module Quickbooks
2
2
  module Model
3
3
  class Line < BaseModel
4
4
  #== Constants
5
- SALES_LINE_ITEM_DETAIL = 'SalesItemLineDetail'
5
+ SALES_ITEM_LINE_DETAIL = 'SalesItemLineDetail'
6
6
  SUB_TOTAL_LINE_DETAIL = 'SubTotalLineDetail'
7
7
  PAYMENT_LINE_DETAIL = 'PaymentLineDetail'
8
8
  DISCOUNT_LINE_DETAIL = 'DiscountLineDetail'
@@ -38,12 +38,39 @@ module Quickbooks
38
38
  alias_method :credit_memo_ids=, :credit_memo_id=
39
39
 
40
40
  def sales_item!
41
- self.detail_type = SALES_LINE_ITEM_DETAIL
41
+ self.detail_type = SALES_ITEM_LINE_DETAIL
42
42
  self.sales_item_line_detail = SalesItemLineDetail.new
43
43
 
44
44
  yield self.sales_item_line_detail if block_given?
45
45
  end
46
46
 
47
+ def sub_total!
48
+ self.detail_type = SUB_TOTAL_LINE_DETAIL
49
+ self.sub_total_line_detail = SubTotalLineDetail.new
50
+
51
+ yield self.sub_total_line_detail if block_given?
52
+ end
53
+
54
+ def payment!
55
+ self.detail_type = PAYMENT_LINE_DETAIL
56
+ self.payment_line_detail = PaymentLineDetail.new
57
+
58
+ yield self.payment_line_detail if block_given?
59
+ end
60
+
61
+ def discount!
62
+ self.detail_type = DISCOUNT_LINE_DETAIL
63
+ self.discount_line_detail = DiscountLineDetail.new
64
+
65
+ yield self.discount_line_detail if block_given?
66
+ end
67
+
68
+ def journal_entry!
69
+ self.detail_type = JOURNAL_ENTRY_LINE_DETAIL
70
+ self.journal_entry_line_detail = JournalEntryLineDetail.new
71
+
72
+ yield self.journal_entry_line_detail if block_given?
73
+ end
47
74
 
48
75
  private
49
76
 
@@ -0,0 +1,8 @@
1
+ module Quickbooks
2
+ module Model
3
+ class NameValue < BaseModel
4
+ xml_accessor :name, :from => "Name"
5
+ xml_accessor :value, :from => "Value"
6
+ end
7
+ end
8
+ end
@@ -1,6 +1,8 @@
1
1
  module Quickbooks
2
2
  module Model
3
3
  class Payment < BaseModel
4
+ include HasLineItems
5
+
4
6
  XML_COLLECTION_NODE = "Payment"
5
7
  XML_NODE = "Payment"
6
8
  REST_RESOURCE = 'payment'
@@ -29,11 +31,6 @@ module Quickbooks
29
31
 
30
32
  validate :existence_of_customer_ref
31
33
 
32
- def initialize(*args)
33
- ensure_line_items_initialization
34
- super
35
- end
36
-
37
34
  private
38
35
 
39
36
  def existence_of_customer_ref
@@ -4,11 +4,22 @@ module Quickbooks
4
4
  REST_RESOURCE = 'paymentmethod'
5
5
  XML_COLLECTION_NODE = "PaymentMethod"
6
6
  XML_NODE = "PaymentMethod"
7
+ include NameEntity::PermitAlterations
8
+
9
+ CREDIT_CARD = "CREDIT_CARD"
10
+ NON_CREDIT_CARD = "NON_CREDIT_CARD"
11
+
12
+ PAYMENT_METHOD_TYPES = [CREDIT_CARD, NON_CREDIT_CARD]
7
13
 
8
14
  xml_accessor :id, :from => 'Id', :as => Integer
15
+ xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
16
+ xml_accessor :meta_data, :from => 'MetaData', :as => MetaData
9
17
  xml_accessor :name, :from => 'Name'
18
+ xml_accessor :type, :from => 'Type'
10
19
  xml_accessor :active?, :from => 'Active'
11
20
  xml_accessor :amount, :from => 'Amount', :as => BigDecimal, :to_xml => to_xml_big_decimal
21
+
22
+ validates_inclusion_of :type, :in => PAYMENT_METHOD_TYPES, :allow_nil => true
12
23
  end
13
24
  end
14
25
  end
@@ -33,11 +33,20 @@ module Quickbooks
33
33
  xml_accessor :payment_type, :from => 'PaymentType'
34
34
  xml_accessor :entity_ref, :from => 'EntityRef', :as => BaseReference
35
35
  xml_accessor :remit_to_address, :from => 'RemitToAddr', :as => PhysicalAddress
36
- xml_accessor :total_amount, :from => 'TotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
36
+ xml_accessor :total, :from => 'TotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
37
37
  xml_accessor :print_status, :from => 'PrintStatus'
38
38
  xml_accessor :department_ref, :from => 'DepartmentRef', :as => BaseReference
39
39
 
40
- reference_setters :account_ref, :entity_ref, :department_ref
40
+ xml_accessor :currency_ref, :from => 'CurrencyRef', :as => BaseReference
41
+ xml_accessor :exchange_rate, :from => 'ExchangeRate', :as => BigDecimal, :to_xml => to_xml_big_decimal
42
+ xml_accessor :linked_transactions, :from => 'LinkedTxn', :as => [LinkedTransaction]
43
+ xml_accessor :credit?, :from => 'Credit'
44
+
45
+ reference_setters
46
+
47
+ #== This adds aliases for backwards compatability to old attributes names
48
+ alias_method :total_amount, :total
49
+ alias_method :total_amount=, :total=
41
50
 
42
51
  end
43
52
  end
@@ -4,6 +4,7 @@ module Quickbooks
4
4
 
5
5
  #== Constants
6
6
  ITEM_BASED_EXPENSE_LINE_DETAIL = 'ItemBasedExpenseLineDetail'
7
+ ACCOUNT_BASED_EXPENSE_LINE_DETAIL = 'AccountBasedExpenseLineDetail'
7
8
  GROUP_LINE_DETAIL = 'GroupLineDetail'
8
9
 
9
10
  xml_accessor :id, :from => 'Id', :as => Integer
@@ -13,10 +14,31 @@ module Quickbooks
13
14
  xml_accessor :detail_type, :from => 'DetailType'
14
15
 
15
16
  #== Various detail types
16
- xml_accessor :account_based_expense_line_detail, :from => 'AccountBasedExpenseLineDetail', :as => AccountBasedExpenseLineDetail
17
+ xml_accessor :account_based_expense_line_detail, :from => ACCOUNT_BASED_EXPENSE_LINE_DETAIL, :as => AccountBasedExpenseLineDetail
17
18
  xml_accessor :item_based_expense_line_detail, :from => ITEM_BASED_EXPENSE_LINE_DETAIL, :as => ItemBasedExpenseLineDetail
18
19
  xml_accessor :group_line_detail, :from => GROUP_LINE_DETAIL, :as => GroupLineDetail
19
20
 
21
+ def account_based?
22
+ detail_type.to_s == ACCOUNT_BASED_EXPENSE_LINE_DETAIL
23
+ end
24
+
25
+ def item_based?
26
+ detail_type.to_s == ITEM_BASED_EXPENSE_LINE_DETAIL
27
+ end
28
+
29
+ def account_based_expense!
30
+ self.detail_type = ACCOUNT_BASED_EXPENSE_LINE_DETAIL
31
+ self.account_based_expense_line_detail = AccountBasedExpenseLineDetail.new
32
+
33
+ yield self.account_based_expense_line_detail if block_given?
34
+ end
35
+
36
+ def item_based_expense!
37
+ self.detail_type = ITEM_BASED_EXPENSE_LINE_DETAIL
38
+ self.item_based_expense_line_detail = ItemBasedExpenseLineDetail.new
39
+
40
+ yield self.item_based_expense_line_detail if block_given?
41
+ end
20
42
  end
21
43
  end
22
- end
44
+ end
@@ -25,7 +25,7 @@ module Quickbooks
25
25
  xml_accessor :class_ref, :from => 'ClassRef', :as => BaseReference
26
26
  xml_accessor :sales_term_ref, :from => 'SalesTermRef', :as => BaseReference
27
27
 
28
- xml_accessor :total_amount, :from => 'TotalAmt', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
28
+ xml_accessor :total, :from => 'TotalAmt', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
29
29
  xml_accessor :due_date, :from => 'DueDate', :as => Date
30
30
  xml_accessor :vendor_address, :from => 'VendorAddr', :as => PhysicalAddress
31
31
  xml_accessor :ship_address, :from => 'ShipAddr', :as => PhysicalAddress
@@ -33,7 +33,15 @@ module Quickbooks
33
33
  xml_accessor :po_status, :from => 'POStatus'
34
34
  xml_accessor :txn_tax_detail, :from => 'TxnTaxDetail', :as => TransactionTaxDetail
35
35
 
36
- reference_setters :attachable_ref, :vendor_ref, :ap_account_ref, :class_ref, :sales_term_ref, :ship_method_ref
36
+ xml_accessor :currency_ref, :from => 'CurrencyRef', :as => BaseReference
37
+ xml_accessor :exchange_rate, :from => 'ExchangeRate', :as => BigDecimal, :to_xml => to_xml_big_decimal
38
+ xml_accessor :tax_code_ref, :from => 'TaxCodeRef', :as => BaseReference
39
+
40
+ reference_setters
41
+
42
+ #== This adds aliases for backwards compatability to old attributes names
43
+ alias_method :total_amount, :total
44
+ alias_method :total_amount=, :total=
37
45
 
38
46
  end
39
47
  end
@@ -0,0 +1,11 @@
1
+ module Quickbooks
2
+ module Model
3
+ class PurchaseTaxRateList < BaseModel
4
+ XML_COLLECTION_NODE = "PurchaseTaxRateList"
5
+ XML_NODE = "PurchaseTaxRateList"
6
+ REST_RESOURCE = "purchasetaxratelist"
7
+
8
+ xml_accessor :tax_rate_detail, :from => "TaxRateDetail", :as => [TaxRateDetail]
9
+ end
10
+ end
11
+ end
@@ -2,6 +2,7 @@ module Quickbooks
2
2
  module Model
3
3
  class RefundReceipt < BaseModel
4
4
  include GlobalTaxCalculation
5
+ include HasLineItems
5
6
 
6
7
  XML_COLLECTION_NODE = "RefundReceipt"
7
8
  XML_NODE = "RefundReceipt"
@@ -36,6 +37,9 @@ module Quickbooks
36
37
  xml_accessor :print_status, :from => 'PrintStatus'
37
38
  xml_accessor :balance, :from => 'Balance', :as => BigDecimal, :to_xml => to_xml_big_decimal
38
39
 
40
+ xml_accessor :exchange_rate, :from => 'ExchangeRate', :as => BigDecimal, :to_xml => to_xml_big_decimal
41
+ xml_accessor :linked_transactions, :from => 'LinkedTxn', :as => [LinkedTransaction]
42
+
39
43
  # readonly
40
44
  xml_accessor :total, :from => 'TotalAmt', :as => BigDecimal
41
45
  xml_accessor :home_total, :from => 'HomeTotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
@@ -44,16 +48,11 @@ module Quickbooks
44
48
  alias_attribute :placed_on, :txn_date
45
49
 
46
50
  include DocumentNumbering
47
- reference_setters :customer_ref, :payment_method_ref, :deposit_to_account_ref, :department_ref, :currency_ref, :class_ref
51
+ reference_setters
48
52
 
49
53
  validate :line_item_size
50
54
  validate :document_numbering
51
55
 
52
- def initialize(*args)
53
- ensure_line_items_initialization
54
- super
55
- end
56
-
57
56
  def email=(email)
58
57
  self.bill_email = EmailAddress.new(email)
59
58
  end
@@ -3,6 +3,7 @@ module Quickbooks
3
3
  class SalesReceipt < BaseModel
4
4
  include DocumentNumbering
5
5
  include GlobalTaxCalculation
6
+ include HasLineItems
6
7
 
7
8
  XML_COLLECTION_NODE = "SalesReceipt"
8
9
  XML_NODE = "SalesReceipt"
@@ -16,6 +17,7 @@ module Quickbooks
16
17
  xml_accessor :txn_date, :from => 'TxnDate', :as => Time
17
18
  xml_accessor :line_items, :from => 'Line', :as => [Line]
18
19
  xml_accessor :customer_ref, :from => 'CustomerRef', :as => BaseReference
20
+ xml_accessor :department_ref, :from => 'DepartmentRef', :as => BaseReference
19
21
  xml_accessor :bill_email, :from => 'BillEmail', :as => EmailAddress
20
22
  xml_accessor :bill_address, :from => 'BillAddr', :as => PhysicalAddress
21
23
  xml_accessor :ship_address, :from => 'ShipAddr', :as => PhysicalAddress
@@ -28,23 +30,30 @@ module Quickbooks
28
30
  xml_accessor :deposit_to_account_ref, :from => 'DepositToAccountRef', :as => BaseReference
29
31
  xml_accessor :customer_memo, :from => 'CustomerMemo'
30
32
  xml_accessor :private_note, :from => 'PrivateNote'
33
+ xml_accessor :txn_tax_detail, :from => 'TxnTaxDetail', :as => TransactionTaxDetail
34
+ xml_accessor :custom_fields, :from => 'CustomField', :as => [CustomField]
35
+ xml_accessor :currency_ref, :from => 'CurrencyRef', :as => BaseReference
36
+ xml_accessor :class_ref, :from => 'ClassRef', :as => BaseReference
37
+ xml_accessor :apply_tax_after_discount?, :from => 'ApplyTaxAfterDiscount'
38
+ xml_accessor :print_status, :from => 'PrintStatus'
39
+ xml_accessor :balance, :from => 'Balance', :as => BigDecimal, :to_xml => to_xml_big_decimal
40
+
41
+ xml_accessor :linked_transactions, :from => 'LinkedTxn', :as => [LinkedTransaction]
42
+ xml_accessor :email_status, :from => 'EmailStatus'
43
+ xml_accessor :exchange_rate, :from => 'ExchangeRate', :as => BigDecimal, :to_xml => to_xml_big_decimal
31
44
 
32
45
  # readonly
33
46
  xml_accessor :total, :from => 'TotalAmt', :as => BigDecimal
47
+ xml_accessor :home_total, :from => 'HomeTotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
34
48
 
35
49
  # backward-compatible alias
36
50
  alias_attribute :placed_on, :txn_date
37
51
 
38
- reference_setters :customer_ref, :payment_method_ref, :deposit_to_account_ref
52
+ reference_setters
39
53
 
40
54
  validate :line_item_size
41
55
  validate :document_numbering
42
56
 
43
- def initialize(*args)
44
- ensure_line_items_initialization
45
- super
46
- end
47
-
48
57
  def email=(email)
49
58
  self.bill_email = EmailAddress.new(email)
50
59
  end
@@ -14,6 +14,7 @@ module Quickbooks
14
14
  xml_accessor :taxable?, :from => "Taxable"
15
15
  xml_accessor :tax_group?, :from => "TaxGroup"
16
16
  xml_accessor :sales_tax_rate_list, :from => "SalesTaxRateList", :as => SalesTaxRateList
17
+ xml_accessor :purchase_tax_rate_list, :from => "PurchaseTaxRateList", :as => PurchaseTaxRateList
17
18
 
18
19
  end
19
20
  end
@@ -17,9 +17,12 @@ module Quickbooks
17
17
  xml_accessor :day_of_month_due, :from => 'DayOfMonthDue', :as => Integer
18
18
  xml_accessor :due_next_month_days, :from => 'DueNextMonthDays', :as => Integer
19
19
  xml_accessor :discount_day_of_month, :from => 'DiscountDayOfMonth', :as => Integer
20
+ xml_accessor :attachable_ref, :from => 'AttachableRef', :as => BaseReference
20
21
 
21
22
  validates_presence_of :name
22
23
 
24
+ reference_setters :attachable_ref
25
+
23
26
  end
24
27
  end
25
28
  end
@@ -24,15 +24,37 @@ module Quickbooks
24
24
 
25
25
  xml_accessor :billable_status, :from => 'BillableStatus'
26
26
  xml_accessor :taxable, :from => 'Taxable'
27
- xml_accessor :hours, :from => 'Hours', :as => Integer
28
27
  xml_accessor :hourly_rate, :from => 'HourlyRate'
29
28
  xml_accessor :minutes, :from => 'Minutes', :as => Integer
29
+ xml_accessor :hours, :from => 'Hours', :as => Integer
30
+ xml_accessor :break_minutes, :from => 'BreakMinutes', :as => Integer
31
+ xml_accessor :break_hours, :from => 'BreakHours', :as => Integer
30
32
  xml_accessor :description, :from => 'Description'
31
33
 
32
- #== Validations
34
+ xml_accessor :attachable_ref, :from => 'AttachableRef', :as => BaseReference
35
+ xml_accessor :department_ref, :from => 'DepartmentRef', :as => BaseReference
36
+ xml_accessor :start_time, :from => 'StartTime', :as => DateTime
37
+ xml_accessor :end_time, :from => 'EndTime', :as => DateTime
38
+ xml_accessor :time_zone, :from => 'TimeZone'
39
+
40
+ reference_setters
41
+
42
+ # == Validations
33
43
  validates_inclusion_of :name_of, :in => NAMEOF_OPTIONS
34
- validates_presence_of :employee_ref, :if => Proc.new { |ta| ta.name_of == "Employee" }
35
- validates_presence_of :vendor_ref, :if => Proc.new { |ta| ta.name_of == "Vendor" }
44
+ validate :existence_of_employee_ref, :if => Proc.new { |ta| ta.name_of == "Employee" }
45
+ validate :existence_of_vendor_ref, :if => Proc.new { |ta| ta.name_of == "Vendor" }
46
+
47
+ def existence_of_employee_ref
48
+ if employee_ref.nil? || (employee_ref && employee_ref.value == 0)
49
+ errors.add(:employee_ref, "VendorRef is required and must be a non-zero value.")
50
+ end
51
+ end
52
+
53
+ def existence_of_vendor_ref
54
+ if vendor_ref.nil? || (vendor_ref && vendor_ref.value == 0)
55
+ errors.add(:vendor_ref, "VendorRef is required and must be a non-zero value.")
56
+ end
57
+ end
36
58
 
37
59
  def valid_for_update?
38
60
  if sync_token.nil?
@@ -1,6 +1,10 @@
1
- module Validator
1
+ module Quickbooks
2
+ module Model
3
+ module Validator
2
4
 
3
- def line_item_size
4
- validates_length_of :line_items, :minimum => 1, :message => 'At least 1 line item is required'
5
+ def line_item_size
6
+ validates_length_of :line_items, :minimum => 1, :message => 'At least 1 line item is required'
7
+ end
8
+ end
5
9
  end
6
10
  end
@@ -17,6 +17,7 @@ module Quickbooks
17
17
  xml_accessor :id, :from => 'Id', :as => Integer
18
18
  xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
19
19
  xml_accessor :meta_data, :from => 'MetaData', :as => MetaData
20
+ xml_accessor :attachable_ref, :from => 'AttachableRef', :as => BaseReference
20
21
  xml_accessor :title, :from => 'Title'
21
22
  xml_accessor :given_name, :from => 'GivenName'
22
23
  xml_accessor :middle_name, :from => 'MiddleName'
@@ -45,7 +46,7 @@ module Quickbooks
45
46
  validate :names_cannot_contain_invalid_characters
46
47
  validate :email_address_is_valid
47
48
 
48
- reference_setters :term_ref
49
+ reference_setters
49
50
 
50
51
  end
51
52
  end
@@ -0,0 +1,12 @@
1
+ module Quickbooks
2
+ module Model
3
+ # Refer to: https://developer.intuit.com/docs/0100_accounting/0300_developer_guides/change_data_capture
4
+ class VendorChange < BaseModel
5
+ XML_NODE = "Vendor"
6
+
7
+ xml_accessor :id, :from => 'Id', :as => Integer
8
+ xml_accessor :status, :from => '@status'
9
+ xml_accessor :meta_data, :from => 'MetaData', :as => MetaData
10
+ end
11
+ end
12
+ end
@@ -23,9 +23,16 @@ module Quickbooks
23
23
  xml_accessor :department_ref, :from => 'DepartmentRef', :as => BaseReference
24
24
  xml_accessor :ap_account_ref, :from => 'APAccountRef', :as => BaseReference
25
25
  xml_accessor :vendor_ref, :from => 'VendorRef', :as => BaseReference
26
- xml_accessor :total_amount, :from => 'TotalAmt', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
26
+ xml_accessor :total, :from => 'TotalAmt', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
27
27
 
28
- reference_setters :department_ref, :ap_account_ref, :vendor_ref
28
+ xml_accessor :currency_ref, :from => 'CurrencyRef', :as => BaseReference
29
+ xml_accessor :exchange_rate, :from => 'ExchangeRate', :as => BigDecimal, :to_xml => to_xml_big_decimal
30
+
31
+ reference_setters
32
+
33
+ #== This adds aliases for backwards compatability to old attributes names
34
+ alias_method :total_amount, :total
35
+ alias_method :total_amount=, :total=
29
36
 
30
37
  end
31
38
  end
@@ -2,7 +2,7 @@ module Quickbooks
2
2
  module Service
3
3
  class Bill < BaseService
4
4
 
5
- def delete(bill, options = {})
5
+ def delete(bill)
6
6
  delete_by_query_string(bill)
7
7
  end
8
8
 
@@ -2,6 +2,10 @@ module Quickbooks
2
2
  module Service
3
3
  class BillPayment < BaseService
4
4
 
5
+ def delete(bill_payment)
6
+ delete_by_query_string(bill_payment)
7
+ end
8
+
5
9
  private
6
10
 
7
11
  def model
@@ -2,7 +2,7 @@ module Quickbooks
2
2
  module Service
3
3
  class CreditMemo < BaseService
4
4
 
5
- def delete(credit_memo, options = {})
5
+ def delete(credit_memo)
6
6
  delete_by_query_string(credit_memo)
7
7
  end
8
8
 
@@ -0,0 +1,23 @@
1
+ module Quickbooks
2
+ module Service
3
+ class CustomerChange < BaseService
4
+
5
+ def url_for_query(query = nil, start_position = 1, max_results = 20)
6
+ q = "Customer"
7
+ q = "#{q}&#{query}" if query.present?
8
+
9
+ "#{url_for_base}/cdc?entities=#{q}"
10
+ end
11
+
12
+ def since(timestamp)
13
+ query("changedSince=#{URI.encode_www_form_component(timestamp.iso8601)}")
14
+ end
15
+
16
+ private
17
+
18
+ def model
19
+ Quickbooks::Model::CustomerChange
20
+ end
21
+ end
22
+ end
23
+ end
@@ -2,7 +2,7 @@ module Quickbooks
2
2
  module Service
3
3
  class Estimate < BaseService
4
4
 
5
- def delete(estimate, options = {})
5
+ def delete(estimate)
6
6
  delete_by_query_string(estimate)
7
7
  end
8
8
 
@@ -2,7 +2,7 @@ module Quickbooks
2
2
  module Service
3
3
  class Invoice < BaseService
4
4
 
5
- def delete(invoice, options = {})
5
+ def delete(invoice)
6
6
  delete_by_query_string(invoice)
7
7
  end
8
8
 
@@ -0,0 +1,23 @@
1
+ module Quickbooks
2
+ module Service
3
+ class InvoiceChange < BaseService
4
+
5
+ def url_for_query(query = nil, start_position = 1, max_results = 20)
6
+ q = "Invoice"
7
+ q = "#{q}&#{query}" if query.present?
8
+
9
+ "#{url_for_base}/cdc?entities=#{q}"
10
+ end
11
+
12
+ def since(timestamp)
13
+ query("changedSince=#{URI.encode_www_form_component(timestamp.iso8601)}")
14
+ end
15
+
16
+ private
17
+
18
+ def model
19
+ Quickbooks::Model::InvoiceChange
20
+ end
21
+ end
22
+ end
23
+ end
@@ -2,7 +2,7 @@ module Quickbooks
2
2
  module Service
3
3
  class JournalEntry < BaseService
4
4
 
5
- def delete(entry, options = {})
5
+ def delete(entry)
6
6
  delete_by_query_string(entry)
7
7
  end
8
8
 
@@ -10,6 +10,16 @@ module Quickbooks
10
10
  "SELECT * FROM PaymentMethod WHERE Name = '#{name}'"
11
11
  end
12
12
 
13
+ def update(entity, options = {})
14
+ raise Quickbooks::InvalidModelException.new('Payment Method sparse update is not supported by Intuit at this time') if options[:sparse] && options[:sparse] == true
15
+ super(entity, options)
16
+ end
17
+
18
+ def delete(department)
19
+ department.active = false
20
+ update(department, :sparse => false)
21
+ end
22
+
13
23
  private
14
24
 
15
25
  def model
@@ -2,6 +2,10 @@ module Quickbooks
2
2
  module Service
3
3
  class Purchase < BaseService
4
4
 
5
+ def delete(purchase)
6
+ delete_by_query_string(purchase)
7
+ end
8
+
5
9
  private
6
10
 
7
11
  def model
@@ -2,7 +2,7 @@ module Quickbooks
2
2
  module Service
3
3
  class PurchaseOrder < BaseService
4
4
 
5
- def delete(purchase_order, options = {})
5
+ def delete(purchase_order)
6
6
  delete_by_query_string(purchase_order)
7
7
  end
8
8
 
@@ -2,6 +2,10 @@ module Quickbooks
2
2
  module Service
3
3
  class RefundReceipt < BaseService
4
4
 
5
+ def delete(refund_receipt)
6
+ delete_by_query_string(refund_receipt)
7
+ end
8
+
5
9
  private
6
10
 
7
11
  def model
@@ -2,6 +2,10 @@ module Quickbooks
2
2
  module Service
3
3
  class SalesReceipt < BaseService
4
4
 
5
+ def delete(sales_receipt)
6
+ delete_by_query_string(sales_receipt)
7
+ end
8
+
5
9
  private
6
10
 
7
11
  def model
@@ -1,9 +1,8 @@
1
1
  module Quickbooks
2
2
  module Service
3
3
  class TimeActivity < BaseService
4
- include ServiceCrud
5
4
 
6
- def delete(time_activity, options = {})
5
+ def delete(time_activity)
7
6
  delete_by_query_string(time_activity)
8
7
  end
9
8
 
@@ -0,0 +1,23 @@
1
+ module Quickbooks
2
+ module Service
3
+ class VendorChange < BaseService
4
+
5
+ def url_for_query(query = nil, start_position = 1, max_results = 20)
6
+ q = "Vendor"
7
+ q = "#{q}&#{query}" if query.present?
8
+
9
+ "#{url_for_base}/cdc?entities=#{q}"
10
+ end
11
+
12
+ def since(timestamp)
13
+ query("changedSince=#{URI.encode_www_form_component(timestamp.iso8601)}")
14
+ end
15
+
16
+ private
17
+
18
+ def model
19
+ Quickbooks::Model::VendorChange
20
+ end
21
+ end
22
+ end
23
+ end
@@ -2,6 +2,10 @@ module Quickbooks
2
2
  module Service
3
3
  class VendorCredit < BaseService
4
4
 
5
+ def delete(vendor_credit)
6
+ delete_by_query_string(vendor_credit)
7
+ end
8
+
5
9
  private
6
10
 
7
11
  def model
@@ -1,5 +1,5 @@
1
1
  module Quickbooks
2
2
 
3
- VERSION = "0.1.7"
3
+ VERSION = "0.1.8"
4
4
 
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quickbooks-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Caughlan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-29 00:00:00.000000000 Z
11
+ date: 2015-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth
@@ -190,6 +190,7 @@ files:
190
190
  - lib/quickbooks/model/credit_memo.rb
191
191
  - lib/quickbooks/model/custom_field.rb
192
192
  - lib/quickbooks/model/customer.rb
193
+ - lib/quickbooks/model/customer_change.rb
193
194
  - lib/quickbooks/model/department.rb
194
195
  - lib/quickbooks/model/discount_line_detail.rb
195
196
  - lib/quickbooks/model/discount_override.rb
@@ -201,7 +202,9 @@ files:
201
202
  - lib/quickbooks/model/fault.rb
202
203
  - lib/quickbooks/model/global_tax_calculation.rb
203
204
  - lib/quickbooks/model/group_line_detail.rb
205
+ - lib/quickbooks/model/has_line_items.rb
204
206
  - lib/quickbooks/model/invoice.rb
207
+ - lib/quickbooks/model/invoice_change.rb
205
208
  - lib/quickbooks/model/invoice_line_item.rb
206
209
  - lib/quickbooks/model/item.rb
207
210
  - lib/quickbooks/model/item_based_expense_line_detail.rb
@@ -211,6 +214,7 @@ files:
211
214
  - lib/quickbooks/model/linked_transaction.rb
212
215
  - lib/quickbooks/model/markup_info.rb
213
216
  - lib/quickbooks/model/meta_data.rb
217
+ - lib/quickbooks/model/name_value.rb
214
218
  - lib/quickbooks/model/other_contact_info.rb
215
219
  - lib/quickbooks/model/payment.rb
216
220
  - lib/quickbooks/model/payment_line_detail.rb
@@ -220,6 +224,7 @@ files:
220
224
  - lib/quickbooks/model/purchase.rb
221
225
  - lib/quickbooks/model/purchase_line_item.rb
222
226
  - lib/quickbooks/model/purchase_order.rb
227
+ - lib/quickbooks/model/purchase_tax_rate_list.rb
223
228
  - lib/quickbooks/model/refund_receipt.rb
224
229
  - lib/quickbooks/model/sales_item_line_detail.rb
225
230
  - lib/quickbooks/model/sales_receipt.rb
@@ -236,6 +241,7 @@ files:
236
241
  - lib/quickbooks/model/transaction_tax_detail.rb
237
242
  - lib/quickbooks/model/validator.rb
238
243
  - lib/quickbooks/model/vendor.rb
244
+ - lib/quickbooks/model/vendor_change.rb
239
245
  - lib/quickbooks/model/vendor_credit.rb
240
246
  - lib/quickbooks/model/web_site_address.rb
241
247
  - lib/quickbooks/service/access_token.rb
@@ -248,10 +254,12 @@ files:
248
254
  - lib/quickbooks/service/company_info.rb
249
255
  - lib/quickbooks/service/credit_memo.rb
250
256
  - lib/quickbooks/service/customer.rb
257
+ - lib/quickbooks/service/customer_change.rb
251
258
  - lib/quickbooks/service/department.rb
252
259
  - lib/quickbooks/service/employee.rb
253
260
  - lib/quickbooks/service/estimate.rb
254
261
  - lib/quickbooks/service/invoice.rb
262
+ - lib/quickbooks/service/invoice_change.rb
255
263
  - lib/quickbooks/service/item.rb
256
264
  - lib/quickbooks/service/journal_entry.rb
257
265
  - lib/quickbooks/service/payment.rb
@@ -267,6 +275,7 @@ files:
267
275
  - lib/quickbooks/service/term.rb
268
276
  - lib/quickbooks/service/time_activity.rb
269
277
  - lib/quickbooks/service/vendor.rb
278
+ - lib/quickbooks/service/vendor_change.rb
270
279
  - lib/quickbooks/service/vendor_credit.rb
271
280
  - lib/quickbooks/util/collection.rb
272
281
  - lib/quickbooks/util/http_encoding_helper.rb