quickbooks 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +9 -5
- data/Rakefile +2 -2
- data/doc/classes/Array.html +244 -0
- data/doc/classes/Array.src/M000001.html +18 -0
- data/doc/classes/Array.src/M000002.html +19 -0
- data/doc/classes/Array.src/M000003.html +18 -0
- data/doc/classes/Array.src/M000004.html +23 -0
- data/doc/classes/Array.src/M000005.html +18 -0
- data/doc/classes/Array.src/M000006.html +21 -0
- data/doc/classes/Array.src/M000007.html +18 -0
- data/doc/classes/Array.src/M000008.html +18 -0
- data/doc/classes/Class.html +5 -5
- data/doc/classes/Class.src/{M000003.html → M000027.html} +1 -1
- data/doc/classes/Hash.html +264 -14
- data/doc/classes/Hash.src/M000009.html +18 -0
- data/doc/classes/Hash.src/M000010.html +21 -0
- data/doc/classes/Hash.src/M000011.html +18 -0
- data/doc/classes/Hash.src/M000012.html +21 -0
- data/doc/classes/Hash.src/M000013.html +18 -0
- data/doc/classes/Hash.src/{M000001.html → M000014.html} +6 -5
- data/doc/classes/Hash.src/{M000002.html → M000015.html} +6 -2
- data/doc/classes/Hash.src/M000016.html +20 -0
- data/doc/classes/Hash.src/M000017.html +18 -0
- data/doc/classes/Hash.src/M000018.html +20 -0
- data/doc/classes/Hash.src/M000019.html +38 -0
- data/doc/classes/{Quickbooks/Qbxml/Error.src/M000031.html → Hash.src/M000020.html} +5 -5
- data/doc/classes/Hash.src/M000021.html +18 -0
- data/doc/classes/Hash.src/M000022.html +20 -0
- data/doc/classes/Hash.src/M000023.html +18 -0
- data/doc/classes/Hash.src/M000024.html +18 -0
- data/doc/classes/Hash.src/M000025.html +18 -0
- data/doc/classes/Hash.src/M000026.html +22 -0
- data/doc/classes/Object.html +56 -22
- data/doc/classes/Object.src/{M000004.html → M000028.html} +0 -0
- data/doc/classes/Object.src/{M000005.html → M000029.html} +0 -0
- data/doc/classes/Object.src/{M000006.html → M000030.html} +1 -1
- data/doc/classes/Object.src/{M000007.html → M000031.html} +0 -0
- data/doc/classes/Object.src/M000032.html +18 -0
- data/doc/classes/Object.src/M000033.html +18 -0
- data/doc/classes/QBHelpers/Ole.html +17 -17
- data/doc/classes/QBHelpers/Ole.src/{M000066.html → M000108.html} +0 -0
- data/doc/classes/QBHelpers/Ole.src/{M000067.html → M000109.html} +0 -0
- data/doc/classes/QBHelpers/Ole.src/{M000068.html → M000110.html} +0 -0
- data/doc/classes/Quickbooks.html +44 -4
- data/doc/classes/Quickbooks/{Qbxml/Error.html → Address.html} +14 -43
- data/doc/classes/Quickbooks/Address.src/M000107.html +19 -0
- data/doc/classes/Quickbooks/Base.html +118 -243
- data/doc/classes/Quickbooks/Base.src/{M000034.html → M000080.html} +1 -1
- data/doc/classes/Quickbooks/Base.src/{M000035.html → M000081.html} +1 -1
- data/doc/classes/Quickbooks/Base.src/{M000036.html → M000082.html} +1 -1
- data/doc/classes/Quickbooks/Base.src/{M000037.html → M000083.html} +1 -1
- data/doc/classes/Quickbooks/Base.src/M000084.html +23 -0
- data/doc/classes/Quickbooks/Base.src/{M000041.html → M000085.html} +1 -1
- data/doc/classes/Quickbooks/Base.src/{M000042.html → M000086.html} +2 -2
- data/doc/classes/Quickbooks/Base.src/{M000043.html → M000087.html} +3 -2
- data/doc/classes/Quickbooks/Base.src/M000088.html +19 -0
- data/doc/classes/Quickbooks/Base.src/{M000045.html → M000089.html} +1 -1
- data/doc/classes/Quickbooks/Base.src/M000090.html +19 -0
- data/doc/classes/Quickbooks/Base.src/{M000052.html → M000091.html} +1 -1
- data/doc/classes/Quickbooks/Base.src/M000092.html +45 -0
- data/doc/classes/Quickbooks/Base.src/{M000054.html → M000093.html} +2 -2
- data/doc/classes/Quickbooks/Base.src/M000094.html +18 -0
- data/doc/classes/Quickbooks/Base.src/M000095.html +20 -0
- data/doc/classes/Quickbooks/BillAddress.html +113 -0
- data/doc/classes/Quickbooks/Connection.html +68 -68
- data/doc/classes/Quickbooks/Connection.src/{M000056.html → M000097.html} +0 -0
- data/doc/classes/Quickbooks/Connection.src/{M000057.html → M000098.html} +0 -0
- data/doc/classes/Quickbooks/Connection.src/{M000058.html → M000099.html} +0 -1
- data/doc/classes/Quickbooks/Connection.src/{M000059.html → M000100.html} +1 -1
- data/doc/classes/Quickbooks/Connection.src/{M000060.html → M000101.html} +1 -1
- data/doc/classes/Quickbooks/Connection.src/{M000061.html → M000102.html} +2 -2
- data/doc/classes/Quickbooks/Connection.src/{M000062.html → M000103.html} +1 -1
- data/doc/classes/Quickbooks/Connection.src/{M000063.html → M000104.html} +1 -1
- data/doc/classes/Quickbooks/Connection.src/{M000064.html → M000105.html} +1 -1
- data/doc/classes/Quickbooks/Connection.src/{M000065.html → M000106.html} +2 -2
- data/doc/classes/Quickbooks/CreditCardInfo.html +113 -0
- data/doc/classes/Quickbooks/CustomerTypeRef.html +113 -0
- data/doc/classes/Quickbooks/ItemSalesTaxRef.html +113 -0
- data/doc/classes/Quickbooks/JobTypeRef.html +113 -0
- data/doc/classes/Quickbooks/ListItem.html +21 -44
- data/doc/classes/Quickbooks/ListItem.src/M000078.html +19 -0
- data/doc/classes/Quickbooks/ListItem.src/M000079.html +18 -0
- data/doc/classes/Quickbooks/Model.html +469 -0
- data/doc/classes/Quickbooks/Model.src/M000059.html +24 -0
- data/doc/classes/Quickbooks/Model.src/M000060.html +18 -0
- data/doc/classes/Quickbooks/Model.src/M000061.html +18 -0
- data/doc/classes/Quickbooks/Model.src/M000062.html +18 -0
- data/doc/classes/Quickbooks/Model.src/M000063.html +18 -0
- data/doc/classes/Quickbooks/Model.src/M000064.html +18 -0
- data/doc/classes/Quickbooks/Model.src/M000065.html +32 -0
- data/doc/classes/Quickbooks/Model.src/M000066.html +32 -0
- data/doc/classes/Quickbooks/Model.src/M000067.html +18 -0
- data/doc/classes/Quickbooks/{Base.src/M000046.html → Model.src/M000068.html} +2 -3
- data/doc/classes/Quickbooks/{Base.src/M000047.html → Model.src/M000069.html} +4 -4
- data/doc/classes/Quickbooks/{Base.src/M000048.html → Model.src/M000070.html} +2 -2
- data/doc/classes/Quickbooks/{Base.src/M000049.html → Model.src/M000071.html} +2 -2
- data/doc/classes/Quickbooks/{Base.src/M000050.html → Model.src/M000072.html} +3 -3
- data/doc/classes/Quickbooks/{Base.src/M000051.html → Model.src/M000073.html} +6 -5
- data/doc/classes/Quickbooks/Model.src/M000074.html +28 -0
- data/doc/classes/Quickbooks/Model.src/M000075.html +28 -0
- data/doc/classes/Quickbooks/Model.src/M000076.html +21 -0
- data/doc/classes/Quickbooks/Model.src/M000077.html +23 -0
- data/doc/classes/Quickbooks/ParentRef.html +113 -0
- data/doc/classes/Quickbooks/PreferredPaymentMethodRef.html +113 -0
- data/doc/classes/Quickbooks/PriceLevelRef.html +113 -0
- data/doc/classes/Quickbooks/Qbxml.html +0 -5
- data/doc/classes/Quickbooks/Qbxml/Request.html +55 -23
- data/doc/classes/Quickbooks/Qbxml/Request.src/M000050.html +34 -0
- data/doc/classes/Quickbooks/Qbxml/Request.src/{M000025.html → M000051.html} +2 -2
- data/doc/classes/Quickbooks/Qbxml/Request.src/M000052.html +81 -0
- data/doc/classes/Quickbooks/Qbxml/RequestSet.html +20 -20
- data/doc/classes/Quickbooks/Qbxml/RequestSet.src/{M000027.html → M000053.html} +0 -0
- data/doc/classes/Quickbooks/Qbxml/RequestSet.src/{M000028.html → M000054.html} +0 -0
- data/doc/classes/Quickbooks/Qbxml/RequestSet.src/{M000029.html → M000055.html} +0 -0
- data/doc/classes/Quickbooks/Qbxml/RequestSet.src/{M000030.html → M000056.html} +0 -0
- data/doc/classes/Quickbooks/Qbxml/Response.html +46 -46
- data/doc/classes/Quickbooks/Qbxml/Response.src/{M000015.html → M000041.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/Response.src/{M000016.html → M000042.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/Response.src/{M000017.html → M000043.html} +1 -2
- data/doc/classes/Quickbooks/Qbxml/Response.src/{M000018.html → M000044.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/Response.src/{M000019.html → M000045.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/Response.src/{M000020.html → M000046.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/Response.src/{M000021.html → M000047.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/Response.src/{M000022.html → M000048.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/Response.src/{M000023.html → M000049.html} +22 -11
- data/doc/classes/Quickbooks/Qbxml/ResponseSet.html +35 -35
- data/doc/classes/Quickbooks/Qbxml/ResponseSet.src/{M000008.html → M000034.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/ResponseSet.src/{M000009.html → M000035.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/ResponseSet.src/{M000010.html → M000036.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/ResponseSet.src/{M000011.html → M000037.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/ResponseSet.src/{M000012.html → M000038.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/ResponseSet.src/{M000013.html → M000039.html} +1 -1
- data/doc/classes/Quickbooks/Qbxml/ResponseSet.src/{M000014.html → M000040.html} +1 -1
- data/doc/classes/Quickbooks/Ref.html +139 -0
- data/doc/classes/Quickbooks/Ref.src/M000096.html +18 -0
- data/doc/classes/Quickbooks/SalesRepRef.html +113 -0
- data/doc/classes/Quickbooks/SalesTaxCodeRef.html +113 -0
- data/doc/classes/Quickbooks/ShipAddress.html +113 -0
- data/doc/classes/Quickbooks/TermsRef.html +113 -0
- data/doc/classes/Quickbooks/Transaction.html +21 -62
- data/doc/classes/Quickbooks/Transaction.src/M000057.html +19 -0
- data/doc/classes/Quickbooks/Transaction.src/M000058.html +18 -0
- data/doc/created.rid +1 -1
- data/doc/files/README.html +15 -4
- data/doc/files/lib/quickbooks/base_rb.html +15 -8
- data/doc/files/lib/quickbooks/connection_rb.html +1 -1
- data/doc/files/lib/quickbooks/model_rb.html +108 -0
- data/doc/files/lib/quickbooks/{qbxml/error_rb.html → models/common/address_rb.html} +5 -5
- data/doc/files/lib/quickbooks/models/common/all_refs_rb.html +101 -0
- data/doc/files/lib/quickbooks/models/customer/credit_card_info_rb.html +101 -0
- data/doc/files/lib/quickbooks/models/customer_rb.html +10 -1
- data/doc/files/lib/quickbooks/models/list_item_rb.html +1 -1
- data/doc/files/lib/quickbooks/models/transaction_rb.html +1 -1
- data/doc/files/lib/quickbooks/ole_helper_rb.html +1 -1
- data/doc/files/lib/quickbooks/qbxml/request_rb.html +1 -1
- data/doc/files/lib/quickbooks/qbxml/response_rb.html +1 -2
- data/doc/files/lib/quickbooks/qbxml_rb.html +109 -0
- data/doc/files/lib/quickbooks/ruby_magic_rb.html +1 -1
- data/doc/fr_class_index.html +16 -1
- data/doc/fr_file_index.html +5 -1
- data/doc/fr_method_index.html +110 -68
- data/lib/quickbooks/base.rb +54 -95
- data/lib/quickbooks/connection.rb +2 -3
- data/lib/quickbooks/model.rb +176 -0
- data/lib/quickbooks/models/common/address.rb +14 -0
- data/lib/quickbooks/models/common/all_refs.rb +36 -0
- data/lib/quickbooks/models/customer.rb +30 -31
- data/lib/quickbooks/models/customer/credit_card_info.rb +5 -0
- data/lib/quickbooks/models/list_item.rb +27 -16
- data/lib/quickbooks/models/transaction.rb +21 -12
- data/lib/quickbooks/qbxml.rb +2 -0
- data/lib/quickbooks/qbxml/request.rb +80 -31
- data/lib/quickbooks/qbxml/response.rb +21 -12
- data/lib/quickbooks/ruby_magic.rb +130 -4
- metadata +146 -74
- data/doc/classes/Quickbooks/Base.src/M000038.html +0 -19
- data/doc/classes/Quickbooks/Base.src/M000039.html +0 -25
- data/doc/classes/Quickbooks/Base.src/M000040.html +0 -27
- data/doc/classes/Quickbooks/Base.src/M000044.html +0 -19
- data/doc/classes/Quickbooks/Base.src/M000053.html +0 -36
- data/doc/classes/Quickbooks/Base.src/M000055.html +0 -18
- data/doc/classes/Quickbooks/ListItem.src/M000033.html +0 -31
- data/doc/classes/Quickbooks/Qbxml/Request.src/M000024.html +0 -23
- data/doc/classes/Quickbooks/Qbxml/Request.src/M000026.html +0 -57
- data/doc/classes/Quickbooks/Transaction.src/M000032.html +0 -26
- data/lib/quickbooks/qbxml/error.rb +0 -20
data/doc/fr_class_index.html
CHANGED
|
@@ -20,24 +20,39 @@
|
|
|
20
20
|
<div id="index">
|
|
21
21
|
<h1 class="section-bar">Classes</h1>
|
|
22
22
|
<div id="index-entries">
|
|
23
|
+
<a href="classes/Array.html">Array</a><br />
|
|
23
24
|
<a href="classes/Class.html">Class</a><br />
|
|
24
25
|
<a href="classes/Hash.html">Hash</a><br />
|
|
25
26
|
<a href="classes/Object.html">Object</a><br />
|
|
26
27
|
<a href="classes/QBHelpers.html">QBHelpers</a><br />
|
|
27
28
|
<a href="classes/QBHelpers/Ole.html">QBHelpers::Ole</a><br />
|
|
28
29
|
<a href="classes/Quickbooks.html">Quickbooks</a><br />
|
|
30
|
+
<a href="classes/Quickbooks/Address.html">Quickbooks::Address</a><br />
|
|
29
31
|
<a href="classes/Quickbooks/Base.html">Quickbooks::Base</a><br />
|
|
32
|
+
<a href="classes/Quickbooks/BillAddress.html">Quickbooks::BillAddress</a><br />
|
|
30
33
|
<a href="classes/Quickbooks/Connection.html">Quickbooks::Connection</a><br />
|
|
34
|
+
<a href="classes/Quickbooks/CreditCardInfo.html">Quickbooks::CreditCardInfo</a><br />
|
|
31
35
|
<a href="classes/Quickbooks/Customer.html">Quickbooks::Customer</a><br />
|
|
36
|
+
<a href="classes/Quickbooks/CustomerTypeRef.html">Quickbooks::CustomerTypeRef</a><br />
|
|
37
|
+
<a href="classes/Quickbooks/ItemSalesTaxRef.html">Quickbooks::ItemSalesTaxRef</a><br />
|
|
38
|
+
<a href="classes/Quickbooks/JobTypeRef.html">Quickbooks::JobTypeRef</a><br />
|
|
32
39
|
<a href="classes/Quickbooks/ListItem.html">Quickbooks::ListItem</a><br />
|
|
40
|
+
<a href="classes/Quickbooks/Model.html">Quickbooks::Model</a><br />
|
|
41
|
+
<a href="classes/Quickbooks/ParentRef.html">Quickbooks::ParentRef</a><br />
|
|
42
|
+
<a href="classes/Quickbooks/PreferredPaymentMethodRef.html">Quickbooks::PreferredPaymentMethodRef</a><br />
|
|
43
|
+
<a href="classes/Quickbooks/PriceLevelRef.html">Quickbooks::PriceLevelRef</a><br />
|
|
33
44
|
<a href="classes/Quickbooks/Qbxml.html">Quickbooks::Qbxml</a><br />
|
|
34
|
-
<a href="classes/Quickbooks/Qbxml/Error.html">Quickbooks::Qbxml::Error</a><br />
|
|
35
45
|
<a href="classes/Quickbooks/Qbxml/Request.html">Quickbooks::Qbxml::Request</a><br />
|
|
36
46
|
<a href="classes/Quickbooks/Qbxml/RequestSet.html">Quickbooks::Qbxml::RequestSet</a><br />
|
|
37
47
|
<a href="classes/Quickbooks/Qbxml/RequestSetArrayExt.html">Quickbooks::Qbxml::RequestSetArrayExt</a><br />
|
|
38
48
|
<a href="classes/Quickbooks/Qbxml/Response.html">Quickbooks::Qbxml::Response</a><br />
|
|
39
49
|
<a href="classes/Quickbooks/Qbxml/ResponseSet.html">Quickbooks::Qbxml::ResponseSet</a><br />
|
|
40
50
|
<a href="classes/Quickbooks/Qbxml/ResponseSetArrayExt.html">Quickbooks::Qbxml::ResponseSetArrayExt</a><br />
|
|
51
|
+
<a href="classes/Quickbooks/Ref.html">Quickbooks::Ref</a><br />
|
|
52
|
+
<a href="classes/Quickbooks/SalesRepRef.html">Quickbooks::SalesRepRef</a><br />
|
|
53
|
+
<a href="classes/Quickbooks/SalesTaxCodeRef.html">Quickbooks::SalesTaxCodeRef</a><br />
|
|
54
|
+
<a href="classes/Quickbooks/ShipAddress.html">Quickbooks::ShipAddress</a><br />
|
|
55
|
+
<a href="classes/Quickbooks/TermsRef.html">Quickbooks::TermsRef</a><br />
|
|
41
56
|
<a href="classes/Quickbooks/Transaction.html">Quickbooks::Transaction</a><br />
|
|
42
57
|
</div>
|
|
43
58
|
</div>
|
data/doc/fr_file_index.html
CHANGED
|
@@ -25,11 +25,15 @@
|
|
|
25
25
|
<a href="files/lib/quickbooks_rb.html">lib/quickbooks.rb</a><br />
|
|
26
26
|
<a href="files/lib/quickbooks/base_rb.html">lib/quickbooks/base.rb</a><br />
|
|
27
27
|
<a href="files/lib/quickbooks/connection_rb.html">lib/quickbooks/connection.rb</a><br />
|
|
28
|
+
<a href="files/lib/quickbooks/model_rb.html">lib/quickbooks/model.rb</a><br />
|
|
29
|
+
<a href="files/lib/quickbooks/models/common/address_rb.html">lib/quickbooks/models/common/address.rb</a><br />
|
|
30
|
+
<a href="files/lib/quickbooks/models/common/all_refs_rb.html">lib/quickbooks/models/common/all_refs.rb</a><br />
|
|
28
31
|
<a href="files/lib/quickbooks/models/customer_rb.html">lib/quickbooks/models/customer.rb</a><br />
|
|
32
|
+
<a href="files/lib/quickbooks/models/customer/credit_card_info_rb.html">lib/quickbooks/models/customer/credit_card_info.rb</a><br />
|
|
29
33
|
<a href="files/lib/quickbooks/models/list_item_rb.html">lib/quickbooks/models/list_item.rb</a><br />
|
|
30
34
|
<a href="files/lib/quickbooks/models/transaction_rb.html">lib/quickbooks/models/transaction.rb</a><br />
|
|
31
35
|
<a href="files/lib/quickbooks/ole_helper_rb.html">lib/quickbooks/ole_helper.rb</a><br />
|
|
32
|
-
<a href="files/lib/quickbooks/
|
|
36
|
+
<a href="files/lib/quickbooks/qbxml_rb.html">lib/quickbooks/qbxml.rb</a><br />
|
|
33
37
|
<a href="files/lib/quickbooks/qbxml/request_rb.html">lib/quickbooks/qbxml/request.rb</a><br />
|
|
34
38
|
<a href="files/lib/quickbooks/qbxml/response_rb.html">lib/quickbooks/qbxml/response.rb</a><br />
|
|
35
39
|
<a href="files/lib/quickbooks/ruby_magic_rb.html">lib/quickbooks/ruby_magic.rb</a><br />
|
data/doc/fr_method_index.html
CHANGED
|
@@ -20,74 +20,116 @@
|
|
|
20
20
|
<div id="index">
|
|
21
21
|
<h1 class="section-bar">Methods</h1>
|
|
22
22
|
<div id="index-entries">
|
|
23
|
-
<a href="classes/
|
|
24
|
-
<a href="classes/Quickbooks/Qbxml/RequestSet.html#
|
|
25
|
-
<a href="classes/Quickbooks/
|
|
26
|
-
<a href="classes/Quickbooks/
|
|
27
|
-
<a href="classes/Quickbooks/
|
|
28
|
-
<a href="classes/Quickbooks/
|
|
29
|
-
<a href="classes/Quickbooks/
|
|
30
|
-
<a href="classes/
|
|
31
|
-
<a href="classes/Quickbooks/
|
|
32
|
-
<a href="classes/Quickbooks/
|
|
33
|
-
<a href="classes/
|
|
34
|
-
<a href="classes/Quickbooks/
|
|
35
|
-
<a href="classes/Quickbooks/
|
|
36
|
-
<a href="classes/
|
|
37
|
-
<a href="classes/
|
|
38
|
-
<a href="classes/
|
|
39
|
-
<a href="classes/
|
|
40
|
-
<a href="classes/Quickbooks/
|
|
41
|
-
<a href="classes/
|
|
42
|
-
<a href="classes/
|
|
43
|
-
<a href="classes/Quickbooks/
|
|
44
|
-
<a href="classes/
|
|
45
|
-
<a href="classes/Quickbooks/Base.html#
|
|
46
|
-
<a href="classes/Quickbooks/Base.html#
|
|
47
|
-
<a href="classes/Quickbooks/Connection.html#
|
|
48
|
-
<a href="classes/Quickbooks/
|
|
49
|
-
<a href="classes/Quickbooks/Base.html#
|
|
50
|
-
<a href="classes/
|
|
51
|
-
<a href="classes/Quickbooks/
|
|
52
|
-
<a href="classes/
|
|
53
|
-
<a href="classes/Quickbooks/
|
|
54
|
-
<a href="classes/Quickbooks/
|
|
55
|
-
<a href="classes/
|
|
56
|
-
<a href="classes/
|
|
57
|
-
<a href="classes/
|
|
58
|
-
<a href="classes/Quickbooks/
|
|
59
|
-
<a href="classes/
|
|
60
|
-
<a href="classes/Quickbooks/
|
|
61
|
-
<a href="classes/Object.html#
|
|
62
|
-
<a href="classes/
|
|
63
|
-
<a href="classes/
|
|
64
|
-
<a href="classes/Quickbooks/
|
|
65
|
-
<a href="classes/
|
|
66
|
-
<a href="classes/Quickbooks/Qbxml/
|
|
67
|
-
<a href="classes/Quickbooks/Qbxml/
|
|
68
|
-
<a href="classes/Quickbooks/
|
|
69
|
-
<a href="classes/Quickbooks/
|
|
70
|
-
<a href="classes/
|
|
71
|
-
<a href="classes/Quickbooks/
|
|
72
|
-
<a href="classes/Quickbooks/Qbxml/
|
|
73
|
-
<a href="classes/Quickbooks/
|
|
74
|
-
<a href="classes/Quickbooks/
|
|
75
|
-
<a href="classes/Quickbooks/
|
|
76
|
-
<a href="classes/Quickbooks/
|
|
77
|
-
<a href="classes/Quickbooks/
|
|
78
|
-
<a href="classes/Quickbooks/
|
|
79
|
-
<a href="classes/Quickbooks/Base.html#
|
|
80
|
-
<a href="classes/Quickbooks/
|
|
81
|
-
<a href="classes/
|
|
82
|
-
<a href="classes/
|
|
83
|
-
<a href="classes/
|
|
84
|
-
<a href="classes/
|
|
85
|
-
<a href="classes/Quickbooks/Qbxml/
|
|
86
|
-
<a href="classes/Quickbooks/
|
|
87
|
-
<a href="classes/Quickbooks/
|
|
88
|
-
<a href="classes/
|
|
89
|
-
<a href="classes/
|
|
90
|
-
<a href="classes/Quickbooks/
|
|
23
|
+
<a href="classes/Hash.html#M000016">- (Hash)</a><br />
|
|
24
|
+
<a href="classes/Quickbooks/Qbxml/RequestSet.html#M000054"><< (Quickbooks::Qbxml::RequestSet)</a><br />
|
|
25
|
+
<a href="classes/Quickbooks/Qbxml/ResponseSet.html#M000035"><< (Quickbooks::Qbxml::ResponseSet)</a><br />
|
|
26
|
+
<a href="classes/Quickbooks/Model.html#M000076">== (Quickbooks::Model)</a><br />
|
|
27
|
+
<a href="classes/Quickbooks/Base.html#M000095">== (Quickbooks::Base)</a><br />
|
|
28
|
+
<a href="classes/Quickbooks/Model.html#M000077">=== (Quickbooks::Model)</a><br />
|
|
29
|
+
<a href="classes/Quickbooks/Transaction.html#M000058">ListOrTxn (Quickbooks::Transaction)</a><br />
|
|
30
|
+
<a href="classes/Quickbooks/ListItem.html#M000079">ListOrTxn (Quickbooks::ListItem)</a><br />
|
|
31
|
+
<a href="classes/Quickbooks/Base.html#M000087">all (Quickbooks::Base)</a><br />
|
|
32
|
+
<a href="classes/Quickbooks/Qbxml/ResponseSet.html#M000038">append_from_hash (Quickbooks::Qbxml::ResponseSet)</a><br />
|
|
33
|
+
<a href="classes/Quickbooks/Qbxml/ResponseSet.html#M000037">append_from_xml (Quickbooks::Qbxml::ResponseSet)</a><br />
|
|
34
|
+
<a href="classes/Quickbooks/Model.html#M000069">attributes (Quickbooks::Model)</a><br />
|
|
35
|
+
<a href="classes/Quickbooks/Model.html#M000070">attributes= (Quickbooks::Model)</a><br />
|
|
36
|
+
<a href="classes/Hash.html#M000009">camelize_keys (Hash)</a><br />
|
|
37
|
+
<a href="classes/Hash.html#M000010">camelize_keys! (Hash)</a><br />
|
|
38
|
+
<a href="classes/Array.html#M000005">camelize_values (Array)</a><br />
|
|
39
|
+
<a href="classes/Array.html#M000006">camelize_values! (Array)</a><br />
|
|
40
|
+
<a href="classes/Quickbooks/Model.html#M000064">camelized_valid_filters (Quickbooks::Model)</a><br />
|
|
41
|
+
<a href="classes/Class.html#M000027">class_leaf_name (Class)</a><br />
|
|
42
|
+
<a href="classes/Quickbooks/Connection.html#M000106">close (Quickbooks::Connection)</a><br />
|
|
43
|
+
<a href="classes/Quickbooks/Connection.html#M000100">connected? (Quickbooks::Connection)</a><br />
|
|
44
|
+
<a href="classes/Quickbooks/Connection.html#M000103">connection (Quickbooks::Connection)</a><br />
|
|
45
|
+
<a href="classes/Quickbooks/Base.html#M000082">connection (Quickbooks::Base)</a><br />
|
|
46
|
+
<a href="classes/Quickbooks/Base.html#M000083">connection= (Quickbooks::Base)</a><br />
|
|
47
|
+
<a href="classes/Quickbooks/Connection.html#M000097">connections (Quickbooks::Connection)</a><br />
|
|
48
|
+
<a href="classes/Quickbooks/Connection.html#M000098">connections= (Quickbooks::Connection)</a><br />
|
|
49
|
+
<a href="classes/Quickbooks/Base.html#M000089">create (Quickbooks::Base)</a><br />
|
|
50
|
+
<a href="classes/Object.html#M000028">delegate_methods (Object)</a><br />
|
|
51
|
+
<a href="classes/Quickbooks/Base.html#M000094">destroy (Quickbooks::Base)</a><br />
|
|
52
|
+
<a href="classes/Hash.html#M000015">diff (Hash)</a><br />
|
|
53
|
+
<a href="classes/Quickbooks/Model.html#M000072">dirty? (Quickbooks::Model)</a><br />
|
|
54
|
+
<a href="classes/Quickbooks/Model.html#M000073">dirty_attributes (Quickbooks::Model)</a><br />
|
|
55
|
+
<a href="classes/Hash.html#M000022">each (Hash)</a><br />
|
|
56
|
+
<a href="classes/Hash.html#M000023">each_key (Hash)</a><br />
|
|
57
|
+
<a href="classes/Hash.html#M000024">each_value (Hash)</a><br />
|
|
58
|
+
<a href="classes/Quickbooks/Connection.html#M000105">end_session (Quickbooks::Connection)</a><br />
|
|
59
|
+
<a href="classes/Object.html#M000033">error? (Object)</a><br />
|
|
60
|
+
<a href="classes/Quickbooks/Qbxml/Response.html#M000048">error? (Quickbooks::Qbxml::Response)</a><br />
|
|
61
|
+
<a href="classes/Object.html#M000032">errors (Object)</a><br />
|
|
62
|
+
<a href="classes/Quickbooks/Base.html#M000081">establish_connection (Quickbooks::Base)</a><br />
|
|
63
|
+
<a href="classes/Quickbooks/Model.html#M000063">filter_aliases (Quickbooks::Model)</a><br />
|
|
64
|
+
<a href="classes/Quickbooks/Model.html#M000062">filter_aliases= (Quickbooks::Model)</a><br />
|
|
65
|
+
<a href="classes/Quickbooks/Base.html#M000088">first (Quickbooks::Base)</a><br />
|
|
66
|
+
<a href="classes/Quickbooks/Qbxml/ResponseSet.html#M000040">from_hash (Quickbooks::Qbxml::ResponseSet)</a><br />
|
|
67
|
+
<a href="classes/Quickbooks/Qbxml/Response.html#M000045">from_hash (Quickbooks::Qbxml::Response)</a><br />
|
|
68
|
+
<a href="classes/Quickbooks/Qbxml/ResponseSet.html#M000039">from_xml (Quickbooks::Qbxml::ResponseSet)</a><br />
|
|
69
|
+
<a href="classes/Quickbooks/Qbxml/Response.html#M000044">from_xml (Quickbooks::Qbxml::Response)</a><br />
|
|
70
|
+
<a href="classes/QBHelpers/Ole.html#M000109">get_variable (QBHelpers::Ole)</a><br />
|
|
71
|
+
<a href="classes/Quickbooks/Qbxml/Response.html#M000043">import_from_hash (Quickbooks::Qbxml::Response)</a><br />
|
|
72
|
+
<a href="classes/Quickbooks/Qbxml/Response.html#M000042">import_from_xml (Quickbooks::Qbxml::Response)</a><br />
|
|
73
|
+
<a href="classes/Quickbooks/Ref.html#M000096">inherited (Quickbooks::Ref)</a><br />
|
|
74
|
+
<a href="classes/Quickbooks/ListItem.html#M000078">inherited (Quickbooks::ListItem)</a><br />
|
|
75
|
+
<a href="classes/Quickbooks/Model.html#M000059">inherited (Quickbooks::Model)</a><br />
|
|
76
|
+
<a href="classes/Quickbooks/Address.html#M000107">inherited (Quickbooks::Address)</a><br />
|
|
77
|
+
<a href="classes/Quickbooks/Transaction.html#M000057">inherited (Quickbooks::Transaction)</a><br />
|
|
78
|
+
<a href="classes/Quickbooks/Qbxml/Response.html#M000046">instantiatable? (Quickbooks::Qbxml::Response)</a><br />
|
|
79
|
+
<a href="classes/Quickbooks/Base.html#M000086">instantiate (Quickbooks::Base)</a><br />
|
|
80
|
+
<a href="classes/Quickbooks/Qbxml/Response.html#M000049">instantiate (Quickbooks::Qbxml::Response)</a><br />
|
|
81
|
+
<a href="classes/Object.html#M000031">is_not_one_of? (Object)</a><br />
|
|
82
|
+
<a href="classes/Object.html#M000030">is_one_of? (Object)</a><br />
|
|
83
|
+
<a href="classes/Hash.html#M000020">keys (Hash)</a><br />
|
|
84
|
+
<a href="classes/QBHelpers/Ole.html#M000110">method_missing (QBHelpers::Ole)</a><br />
|
|
85
|
+
<a href="classes/Quickbooks/Qbxml/RequestSet.html#M000055">new (Quickbooks::Qbxml::RequestSet)</a><br />
|
|
86
|
+
<a href="classes/Quickbooks/Qbxml/Response.html#M000041">new (Quickbooks::Qbxml::Response)</a><br />
|
|
87
|
+
<a href="classes/Quickbooks/Connection.html#M000099">new (Quickbooks::Connection)</a><br />
|
|
88
|
+
<a href="classes/Quickbooks/Qbxml/ResponseSet.html#M000036">new (Quickbooks::Qbxml::ResponseSet)</a><br />
|
|
89
|
+
<a href="classes/QBHelpers/Ole.html#M000108">new (QBHelpers::Ole)</a><br />
|
|
90
|
+
<a href="classes/Quickbooks/Model.html#M000068">new (Quickbooks::Model)</a><br />
|
|
91
|
+
<a href="classes/Quickbooks/Base.html#M000090">new (Quickbooks::Base)</a><br />
|
|
92
|
+
<a href="classes/Quickbooks/Qbxml/Request.html#M000050">new (Quickbooks::Qbxml::Request)</a><br />
|
|
93
|
+
<a href="classes/Quickbooks/Base.html#M000091">new_record? (Quickbooks::Base)</a><br />
|
|
94
|
+
<a href="classes/Quickbooks/Qbxml/Request.html#M000051">next_request_id (Quickbooks::Qbxml::Request)</a><br />
|
|
95
|
+
<a href="classes/Hash.html#M000017">only (Hash)</a><br />
|
|
96
|
+
<a href="classes/Array.html#M000003">only (Array)</a><br />
|
|
97
|
+
<a href="classes/Array.html#M000004">only! (Array)</a><br />
|
|
98
|
+
<a href="classes/Hash.html#M000018">only! (Hash)</a><br />
|
|
99
|
+
<a href="classes/Array.html#M000007">order (Array)</a><br />
|
|
100
|
+
<a href="classes/Hash.html#M000019">order! (Hash)</a><br />
|
|
101
|
+
<a href="classes/Array.html#M000008">order! (Array)</a><br />
|
|
102
|
+
<a href="classes/Quickbooks/Model.html#M000071">original_values (Quickbooks::Model)</a><br />
|
|
103
|
+
<a href="classes/Quickbooks/Model.html#M000067">properties (Quickbooks::Model)</a><br />
|
|
104
|
+
<a href="classes/Quickbooks/Model.html#M000066">read_only (Quickbooks::Model)</a><br />
|
|
105
|
+
<a href="classes/Quickbooks/Model.html#M000065">read_write (Quickbooks::Model)</a><br />
|
|
106
|
+
<a href="classes/Quickbooks/Base.html#M000093">reload (Quickbooks::Base)</a><br />
|
|
107
|
+
<a href="classes/Quickbooks/Base.html#M000085">request (Quickbooks::Base)</a><br />
|
|
108
|
+
<a href="classes/Quickbooks/Base.html#M000084">request_and_instantiate (Quickbooks::Base)</a><br />
|
|
109
|
+
<a href="classes/Quickbooks/Base.html#M000092">save (Quickbooks::Base)</a><br />
|
|
110
|
+
<a href="classes/Quickbooks/Connection.html#M000102">send_xml (Quickbooks::Connection)</a><br />
|
|
111
|
+
<a href="classes/Quickbooks/Connection.html#M000104">session (Quickbooks::Connection)</a><br />
|
|
112
|
+
<a href="classes/Quickbooks/Connection.html#M000101">session? (Quickbooks::Connection)</a><br />
|
|
113
|
+
<a href="classes/Quickbooks/Qbxml/ResponseSet.html#M000034">set (Quickbooks::Qbxml::ResponseSet)</a><br />
|
|
114
|
+
<a href="classes/Quickbooks/Qbxml/RequestSet.html#M000053">set (Quickbooks::Qbxml::RequestSet)</a><br />
|
|
115
|
+
<a href="classes/Hash.html#M000013">stringify_values (Hash)</a><br />
|
|
116
|
+
<a href="classes/Array.html#M000001">stringify_values (Array)</a><br />
|
|
117
|
+
<a href="classes/Array.html#M000002">stringify_values! (Array)</a><br />
|
|
118
|
+
<a href="classes/Hash.html#M000014">stringify_values! (Hash)</a><br />
|
|
119
|
+
<a href="classes/Quickbooks/Qbxml/Response.html#M000047">success? (Quickbooks::Qbxml::Response)</a><br />
|
|
120
|
+
<a href="classes/Quickbooks/Base.html#M000080">success? (Quickbooks::Base)</a><br />
|
|
121
|
+
<a href="classes/Object.html#M000029">to_a (Object)</a><br />
|
|
122
|
+
<a href="classes/Quickbooks/Model.html#M000074">to_dirty_hash (Quickbooks::Model)</a><br />
|
|
123
|
+
<a href="classes/Quickbooks/Model.html#M000075">to_hash (Quickbooks::Model)</a><br />
|
|
124
|
+
<a href="classes/Quickbooks/Qbxml/RequestSet.html#M000056">to_xml (Quickbooks::Qbxml::RequestSet)</a><br />
|
|
125
|
+
<a href="classes/Quickbooks/Qbxml/Request.html#M000052">to_xml (Quickbooks::Qbxml::Request)</a><br />
|
|
126
|
+
<a href="classes/Hash.html#M000025">transform_keys (Hash)</a><br />
|
|
127
|
+
<a href="classes/Hash.html#M000026">transform_keys! (Hash)</a><br />
|
|
128
|
+
<a href="classes/Hash.html#M000011">underscore_keys (Hash)</a><br />
|
|
129
|
+
<a href="classes/Hash.html#M000012">underscore_keys! (Hash)</a><br />
|
|
130
|
+
<a href="classes/Quickbooks/Model.html#M000061">valid_filters (Quickbooks::Model)</a><br />
|
|
131
|
+
<a href="classes/Quickbooks/Model.html#M000060">valid_filters= (Quickbooks::Model)</a><br />
|
|
132
|
+
<a href="classes/Hash.html#M000021">values (Hash)</a><br />
|
|
91
133
|
</div>
|
|
92
134
|
</div>
|
|
93
135
|
</body>
|
data/lib/quickbooks/base.rb
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
# Contains Quickbooks::Base
|
|
2
|
-
#
|
|
1
|
+
# Contains Quickbooks::Base, which inherits from Quickbooks::Model. Simple objects like BillAddress and CreditCardInfo also
|
|
2
|
+
# inherit from Quickbooks::Model, but any whole-entity objects are below Quickbooks::Base in the inheritance tree. Two models
|
|
3
|
+
# inherit directly from Quickbooks::Base: ListItem and Transaction. All other whole-entity models inherit from either of these.
|
|
3
4
|
#
|
|
4
|
-
#
|
|
5
|
+
# Inherits from ListItem:
|
|
5
6
|
# - Account
|
|
6
7
|
# - Account List
|
|
7
8
|
# - BillingRate
|
|
@@ -40,7 +41,7 @@
|
|
|
40
41
|
# - Vehicle
|
|
41
42
|
# - Vendor
|
|
42
43
|
# - VendorType
|
|
43
|
-
#
|
|
44
|
+
# Inherits from Transaction:
|
|
44
45
|
# - Bill
|
|
45
46
|
# - BillPaymentCheck
|
|
46
47
|
# - BillPaymentCreditCard
|
|
@@ -68,11 +69,15 @@
|
|
|
68
69
|
|
|
69
70
|
require 'activesupport'
|
|
70
71
|
require 'quickbooks/connection'
|
|
71
|
-
require 'quickbooks/
|
|
72
|
-
require 'quickbooks/qbxml
|
|
72
|
+
require 'quickbooks/model'
|
|
73
|
+
require 'quickbooks/qbxml'
|
|
73
74
|
|
|
74
75
|
module Quickbooks
|
|
75
|
-
|
|
76
|
+
# Base is just base for ListItem and Transaction. It inherits from Model, just as Ref does.
|
|
77
|
+
class Base < Model
|
|
78
|
+
|
|
79
|
+
self.filter_aliases = {:limit => :max_returned}
|
|
80
|
+
|
|
76
81
|
# Stores a log of Quickbooks::Qbxml::Response objects that were a result of methods performed on this object.
|
|
77
82
|
attr_accessor :response_log
|
|
78
83
|
def response_log #:nodoc:
|
|
@@ -88,6 +93,10 @@ module Quickbooks
|
|
|
88
93
|
end
|
|
89
94
|
class << self
|
|
90
95
|
|
|
96
|
+
# def inherited(klass)
|
|
97
|
+
# super
|
|
98
|
+
# end
|
|
99
|
+
|
|
91
100
|
# Establishes a connection to the Quickbooks RDS Server for all Model Classes
|
|
92
101
|
def establish_connection(application_name='RubyApplication', file='', user='', password='', connection_type='localQBD', connection_mode='DoNotCare')
|
|
93
102
|
@@connection = Connection.new(application_name, file, user, password, connection_type, connection_mode)
|
|
@@ -108,40 +117,17 @@ module Quickbooks
|
|
|
108
117
|
@connection = conn
|
|
109
118
|
end
|
|
110
119
|
|
|
111
|
-
# Register a property in the current class. For example in the Customer class:
|
|
112
|
-
# property :first_name
|
|
113
|
-
def property(*args)
|
|
114
|
-
raise ArgumentError, "must include a property name" unless args.length > 0
|
|
115
|
-
properties(*args)
|
|
116
|
-
end
|
|
117
|
-
# Register multiple properties at once. For example:
|
|
118
|
-
# properties :first_name, :last_name, :phone, :alt_phone
|
|
119
|
-
def properties(*args)
|
|
120
|
-
if args.blank?
|
|
121
|
-
@properties || (@properties = [])
|
|
122
|
-
else
|
|
123
|
-
args.each do |property|
|
|
124
|
-
properties << property
|
|
125
|
-
attr_accessor property
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
|
|
130
120
|
# Generates a request by sending *args to Quickbooks::Qbxml::Request.new, sends the request over the current connection,
|
|
131
121
|
# and interprets the response using Quickbooks::Qbxml::ResponseSet.
|
|
132
122
|
# The response is then instantiated into an object or an array of objects.
|
|
133
123
|
#
|
|
134
124
|
# This method is used mostly internally, but it is the yoke of this library - use it to perform custom requests.
|
|
135
125
|
def request_and_instantiate(obj_or_args,*args)
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
else
|
|
139
|
-
reinstantiate = nil
|
|
140
|
-
args.unshift(obj_or_args)
|
|
141
|
-
end
|
|
142
|
-
|
|
126
|
+
# If an object is sent, we need to reinstantiate the response into that object
|
|
127
|
+
reinstantiate = obj_or_args.is_a?(Quickbooks::Base) ? obj_or_args : nil
|
|
143
128
|
objects = [] # This will hold and return the instantiated objects from the quickbooks response
|
|
144
|
-
|
|
129
|
+
# The following is subject to bugginess, IF the response contains more than one object: it will instantiate only the last one.
|
|
130
|
+
self.request(obj_or_args, *args).each { |response| objects << response.instantiate(reinstantiate) } # Does not instantiate if it's an error, but simply records response into response_log
|
|
145
131
|
objects.length == 1 ? objects[0] : objects
|
|
146
132
|
end
|
|
147
133
|
|
|
@@ -165,7 +151,7 @@ module Quickbooks
|
|
|
165
151
|
attrs.each do |key,value|
|
|
166
152
|
if obj.respond_to?(key.to_s.underscore+'=')
|
|
167
153
|
obj.send(key.to_s.underscore+'=', value)
|
|
168
|
-
obj.original_values[key.to_s.underscore] =
|
|
154
|
+
obj.original_values[key.to_s.underscore] = obj.instance_variable_get('@' + key.to_s.underscore).dup
|
|
169
155
|
end
|
|
170
156
|
end if attrs
|
|
171
157
|
obj # Will be either a nice object, or a Quickbooks::Qbxml::Error object.
|
|
@@ -173,13 +159,14 @@ module Quickbooks
|
|
|
173
159
|
|
|
174
160
|
# Queries Quickbooks for all of the objects of the current class's type. For example, Quickbooks::Customer.all will return an array of Quickbooks::Customer objects representing all customers.
|
|
175
161
|
def all(filters={})
|
|
176
|
-
|
|
162
|
+
filters.reverse_merge!(:active_status => 'All')
|
|
163
|
+
[request_and_instantiate(self, :query, filters)].flatten
|
|
177
164
|
end
|
|
178
165
|
|
|
179
166
|
# Queries Quickbooks for the first object of the current class's type. For example, Quickbooks::Customer.first will return a Quickbooks::Customer object representing the first customer.
|
|
180
167
|
def first(filters={})
|
|
181
|
-
filters.merge!(:
|
|
182
|
-
request_and_instantiate(self
|
|
168
|
+
(filters.merge!(:max_returned => 1) unless filters.keys.include?(:list_id) || filters.keys.include?(:txn_id) || filters.keys.include?(:full_name)) if filters.is_a?(Hash)
|
|
169
|
+
request_and_instantiate(self, :query, filters)
|
|
183
170
|
end
|
|
184
171
|
|
|
185
172
|
# Creates a new object of the current class's type. For example, Quickbooks::Customer.create(:name => 'Tommy') will create a customer object with a Name of Tommy.
|
|
@@ -188,55 +175,11 @@ module Quickbooks
|
|
|
188
175
|
end
|
|
189
176
|
end
|
|
190
177
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
self.attributes = args
|
|
178
|
+
def initialize(*args)
|
|
179
|
+
super # from Quickbooks::Model - sets the *args into attributes
|
|
194
180
|
@new_record = true
|
|
195
181
|
end
|
|
196
182
|
|
|
197
|
-
# Returns a hash that represents all this object's attributes.
|
|
198
|
-
def attributes
|
|
199
|
-
attrs = {}
|
|
200
|
-
self.class.properties.each do |column|
|
|
201
|
-
attrs[column.to_s] = instance_variable_get('@' + column.to_s)
|
|
202
|
-
end
|
|
203
|
-
attrs
|
|
204
|
-
end
|
|
205
|
-
# Updates all attributes included in _attrs_ to the values given. The object will now be dirty?.
|
|
206
|
-
def attributes=(attrs)
|
|
207
|
-
raise ArgumentError, "attributes can only be set to a hash of attributes" unless attrs.is_a?(Hash)
|
|
208
|
-
attrs.each do |key,value|
|
|
209
|
-
if self.respond_to?(key.to_s.underscore+'=')
|
|
210
|
-
self.send(key.to_s.underscore+'=', value)
|
|
211
|
-
end
|
|
212
|
-
end
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
# Keeps track of the original values the object had when it was instantiated from a quickbooks response. dirty? and dirty_attributes compare the current values with these ones.
|
|
216
|
-
def original_values
|
|
217
|
-
@original_values || (@original_values = {})
|
|
218
|
-
end
|
|
219
|
-
|
|
220
|
-
# Returns true if any attributes have changed since the object was last loaded or updated from Quickbooks.
|
|
221
|
-
def dirty?
|
|
222
|
-
# Concept: For each column that the current model includes, has the value been changed?
|
|
223
|
-
self.class.properties.any? do |column|
|
|
224
|
-
self.instance_variable_get('@' + column.to_s) != original_values[column.to_s]
|
|
225
|
-
end
|
|
226
|
-
end
|
|
227
|
-
|
|
228
|
-
# Returns a hash of the attributes and their (new) values that have been changed since the object was last loaded or updated from Quickbooks.
|
|
229
|
-
def dirty_attributes
|
|
230
|
-
pairs = {}
|
|
231
|
-
self.class.properties.each do |column|
|
|
232
|
-
value = instance_variable_get('@' + column.to_s)
|
|
233
|
-
if value != original_values[column.to_s]
|
|
234
|
-
pairs[column.to_s] = value
|
|
235
|
-
end
|
|
236
|
-
end
|
|
237
|
-
pairs
|
|
238
|
-
end
|
|
239
|
-
|
|
240
183
|
# Returns true if the object is a new object (that doesn't represent an existing object in Quickbooks).
|
|
241
184
|
def new_record?
|
|
242
185
|
@new_record
|
|
@@ -249,34 +192,50 @@ module Quickbooks
|
|
|
249
192
|
# This way you can deal with the differences (conflicts), if you so desire, and simply call save again to commit your changes.
|
|
250
193
|
def save
|
|
251
194
|
return false unless dirty?
|
|
195
|
+
self.errors.clear # Clear out any errors: start with a clean slate!
|
|
252
196
|
if new_record?
|
|
253
|
-
self.class.request_and_instantiate(self,
|
|
254
|
-
|
|
197
|
+
self.class.request_and_instantiate(self, :add)
|
|
198
|
+
ret = !dirty?
|
|
199
|
+
@new_record = false if ret
|
|
255
200
|
else
|
|
256
201
|
# Smart system that respects EditSequences and other people's changes.
|
|
257
202
|
# 1) Try to save
|
|
258
203
|
# 2) When we get a status of 3200, that means our EditSequence is not up to date
|
|
259
204
|
# 3) Replace self's original_attributes with those just retrieved, and update the automatic attributes, like EditSequence and TimeModified
|
|
260
205
|
# 4) Return false, return the object dirty but ready to save
|
|
261
|
-
old_originals = original_values.dup
|
|
262
|
-
self.class.request_and_instantiate(self,
|
|
263
|
-
# If save failed because of old record, but none of the fields conflict, re-save
|
|
264
|
-
if dirty? && self.response_log.last.status == 3200
|
|
265
|
-
#
|
|
266
|
-
|
|
206
|
+
old_originals = original_values.dup # Save the old_originals so we can detect any attributes that changed since we last loaded the object
|
|
207
|
+
ret = self.class.request_and_instantiate(self, :mod).error? ? false : true # Saves if possible, if EditSequence is out of date, it will read the up-to-date object into original_values
|
|
208
|
+
# If save failed (dirty?) because of old record (status 3200), but none of the fields conflict (attributes I've modified and are still different aren't the same attributes as any of the attributes someone else updated), then re-save!
|
|
209
|
+
if dirty? && self.response_log.last.status == 3200 && (dirty_attributes.only(dirty_attributes(old_originals).keys).keys - self.class.read_only.stringify_values).length == (dirty_attributes(old_originals).keys - old_originals.diff(original_values).keys - self.class.read_only.stringify_values).length
|
|
210
|
+
# 'Revert' fields I didn't modify to equal the values of the more up-to-date record just loaded.
|
|
211
|
+
# Fields I didn't modify: dirty_attributes - dirty_attributes(old_originals).keys
|
|
212
|
+
(dirty_attributes - dirty_attributes(old_originals).keys).each_key do |at|
|
|
213
|
+
self.send(at + '=', original_values[at]) if respond_to?(at + '=')
|
|
214
|
+
end
|
|
215
|
+
ret = self.save
|
|
267
216
|
end
|
|
268
217
|
end
|
|
269
|
-
|
|
218
|
+
# ret should be a false value if self has errors. Either way, ret gets the errors too.
|
|
219
|
+
ret.errors << self.errors if self.error?
|
|
220
|
+
# Should be true or false with an error attached.
|
|
221
|
+
ret
|
|
270
222
|
end
|
|
271
223
|
|
|
272
224
|
# Reloads the record from Quickbooks, discarding any changes that have been made to it.
|
|
273
225
|
def reload
|
|
274
|
-
self.class.request_and_instantiate(self,
|
|
226
|
+
self.class.request_and_instantiate(self, :query)
|
|
275
227
|
end
|
|
276
228
|
|
|
277
229
|
# Destroys a record in Quickbooks. Note that even though Quickbooks will destroy the record, the record's ListID and DeletedTime can be accessed by doing a query for deleted objects of the appropriate type.
|
|
278
230
|
def destroy
|
|
279
|
-
self.class.request_and_instantiate(self,
|
|
231
|
+
self.class.request_and_instantiate(self, :delete).success?
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
# Usual comparison (super), but add in false if either is a new record.
|
|
235
|
+
def ==(other)
|
|
236
|
+
return false unless other.is_a?(self.class)
|
|
237
|
+
return false if self.new_record? || other.new_record?
|
|
238
|
+
super
|
|
280
239
|
end
|
|
281
240
|
end
|
|
282
241
|
end
|