salt-parser 0.0.1

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.
Files changed (97) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +1 -0
  4. data/Gemfile +15 -0
  5. data/Gemfile.lock +88 -0
  6. data/README.rdoc +39 -0
  7. data/Rakefile +7 -0
  8. data/lib/ofx/account.rb +28 -0
  9. data/lib/ofx/accounts.rb +9 -0
  10. data/lib/ofx/balance.rb +15 -0
  11. data/lib/ofx/builder.rb +61 -0
  12. data/lib/ofx/dependencies.rb +13 -0
  13. data/lib/ofx/parser/base.rb +366 -0
  14. data/lib/ofx/parser/ofx102.rb +28 -0
  15. data/lib/ofx/parser/ofx211.rb +21 -0
  16. data/lib/ofx/sign_on.rb +18 -0
  17. data/lib/ofx/transaction.rb +28 -0
  18. data/lib/qif/account.rb +19 -0
  19. data/lib/qif/accounts.rb +54 -0
  20. data/lib/qif/builder.rb +37 -0
  21. data/lib/qif/dependencies.rb +8 -0
  22. data/lib/qif/parser.rb +68 -0
  23. data/lib/qif/transaction.rb +28 -0
  24. data/lib/salt-parser/accounts.rb +11 -0
  25. data/lib/salt-parser/base.rb +19 -0
  26. data/lib/salt-parser/builder.rb +24 -0
  27. data/lib/salt-parser/errors.rb +14 -0
  28. data/lib/salt-parser/version.rb +8 -0
  29. data/salt-parser.gemspec +24 -0
  30. data/spec/ofx/account_spec.rb +97 -0
  31. data/spec/ofx/accounts_response_spec.rb +45 -0
  32. data/spec/ofx/accounts_spec.rb +34 -0
  33. data/spec/ofx/balance_spec.rb +32 -0
  34. data/spec/ofx/builder_spec.rb +136 -0
  35. data/spec/ofx/error_request_spec.rb +37 -0
  36. data/spec/ofx/fixtures/accounts_partial.ofx +52 -0
  37. data/spec/ofx/fixtures/accounts_request.ofx +11 -0
  38. data/spec/ofx/fixtures/accounts_response.ofx +109 -0
  39. data/spec/ofx/fixtures/avatar.gif +0 -0
  40. data/spec/ofx/fixtures/bb.ofx +700 -0
  41. data/spec/ofx/fixtures/credit_card_response.ofx +52 -0
  42. data/spec/ofx/fixtures/creditcard.ofx +79 -0
  43. data/spec/ofx/fixtures/creditcard_transactions_request.ofx +11 -0
  44. data/spec/ofx/fixtures/creditcards_partial.ofx +85 -0
  45. data/spec/ofx/fixtures/date_missing.ofx +73 -0
  46. data/spec/ofx/fixtures/empty_balance.ofx +44 -0
  47. data/spec/ofx/fixtures/invalid_version.ofx +308 -0
  48. data/spec/ofx/fixtures/investment_transactions_response.ofx +108 -0
  49. data/spec/ofx/fixtures/investment_transactions_response2.ofx +200 -0
  50. data/spec/ofx/fixtures/investments_with_mkval.ofx +99 -0
  51. data/spec/ofx/fixtures/missing_headers.ofx +47 -0
  52. data/spec/ofx/fixtures/mixed_accountinfo_response.ofx +58 -0
  53. data/spec/ofx/fixtures/ms_money.ofx +52 -0
  54. data/spec/ofx/fixtures/request_error.ofx +39 -0
  55. data/spec/ofx/fixtures/request_error2.ofx +39 -0
  56. data/spec/ofx/fixtures/request_error3.ofx +36 -0
  57. data/spec/ofx/fixtures/sample_examples/sample_401K_loan.qfx +651 -0
  58. data/spec/ofx/fixtures/sample_examples/sample_banking.qbo +258 -0
  59. data/spec/ofx/fixtures/sample_examples/sample_banking.qfx +258 -0
  60. data/spec/ofx/fixtures/sample_examples/sample_banking_multiacct.qfx +284 -0
  61. data/spec/ofx/fixtures/sample_examples/sample_credit_card.qfx +257 -0
  62. data/spec/ofx/fixtures/sample_examples/sample_investment.qfx +654 -0
  63. data/spec/ofx/fixtures/transactions_empty.ofx +60 -0
  64. data/spec/ofx/fixtures/utf8.ofx +65 -0
  65. data/spec/ofx/fixtures/v102.ofx +314 -0
  66. data/spec/ofx/fixtures/v202.ofx +22 -0
  67. data/spec/ofx/fixtures/v211.ofx +85 -0
  68. data/spec/ofx/investment_accounts_spec.rb +70 -0
  69. data/spec/ofx/ofx102_spec.rb +44 -0
  70. data/spec/ofx/ofx211_spec.rb +68 -0
  71. data/spec/ofx/ofx_parser_spec.rb +100 -0
  72. data/spec/ofx/sign_on_spec.rb +49 -0
  73. data/spec/ofx/transaction_spec.rb +157 -0
  74. data/spec/qif/account_spec.rb +42 -0
  75. data/spec/qif/fixtures/3_records_ddmmyy.qif +19 -0
  76. data/spec/qif/fixtures/3_records_ddmmyyyy.qif +19 -0
  77. data/spec/qif/fixtures/3_records_dmyy.qif +19 -0
  78. data/spec/qif/fixtures/3_records_invalid_header.qif +20 -0
  79. data/spec/qif/fixtures/3_records_mdyy.qif +19 -0
  80. data/spec/qif/fixtures/3_records_mmddyy.qif +19 -0
  81. data/spec/qif/fixtures/3_records_mmddyyyy.qif +19 -0
  82. data/spec/qif/fixtures/3_records_spaced.qif +19 -0
  83. data/spec/qif/fixtures/bank_account.qif +19 -0
  84. data/spec/qif/fixtures/empty_body.qif +1 -0
  85. data/spec/qif/fixtures/empty_header.qif +18 -0
  86. data/spec/qif/fixtures/incompatible_date_formats.qif +13 -0
  87. data/spec/qif/fixtures/invalid_date_format.qif +7 -0
  88. data/spec/qif/fixtures/not_a_QIF_file.txt +3 -0
  89. data/spec/qif/fixtures/quicken_non_investement_account.qif +30 -0
  90. data/spec/qif/fixtures/unknown_account.qif +20 -0
  91. data/spec/qif/fixtures/various_date_format.qif +19 -0
  92. data/spec/qif/fixtures/with_categories_list.qif +8669 -0
  93. data/spec/qif/parser_spec.rb +156 -0
  94. data/spec/qif/transaction_spec.rb +18 -0
  95. data/spec/spec_helper.rb +37 -0
  96. data/spec/support/fixture.rb +9 -0
  97. metadata +208 -0
@@ -0,0 +1,68 @@
1
+ require "spec_helper"
2
+
3
+ describe SaltParser::Ofx::Parser::OFX211 do
4
+ let(:ofx) { SaltParser::Ofx::Builder.new("spec/ofx/fixtures/v211.ofx") }
5
+ let(:parser) { ofx.parser }
6
+
7
+ it "should have a version" do
8
+ SaltParser::Ofx::Parser::OFX211::VERSION.should == "2.1.1"
9
+ end
10
+
11
+ it "should set headers" do
12
+ parser.headers.should == ofx.headers
13
+ end
14
+
15
+ it "should set body" do
16
+ parser.body.should == ofx.body
17
+ end
18
+
19
+ it "should set accounts" do
20
+ parser.accounts.should be_a_kind_of(Array)
21
+ parser.accounts.first.should be_a_kind_of(SaltParser::Ofx::Account)
22
+ end
23
+
24
+ it "should set sign_on" do
25
+ parser.sign_on.should be_a_kind_of(SaltParser::Ofx::SignOn)
26
+ end
27
+
28
+ context "transactions" do
29
+ # Test file contains only three transactions. Let's just check
30
+ # them all.
31
+ context "first" do
32
+ let(:t) { parser.accounts.first.transactions[0] }
33
+
34
+ it "should contain the correct values" do
35
+ t.amount.should == -80
36
+ t.fit_id.should == "219378"
37
+ t.memo.should be_empty
38
+ t.posted_at.should == Time.parse("2005-08-24 08:00:00")
39
+ t.name.should == "FrogKick Scuba Gear"
40
+ end
41
+ end
42
+
43
+ context "second" do
44
+ let(:t) { parser.accounts.last.transactions[0] }
45
+
46
+ it "should contain the correct values" do
47
+ t.amount.should == -23
48
+ t.fit_id.should == "219867"
49
+ t.memo.should be_empty
50
+ t.posted_at.should == Time.parse("2005-08-11 08:00:00")
51
+ t.name.should == "Interest Charge"
52
+ end
53
+ end
54
+
55
+ context "third" do
56
+ let(:t) { parser.accounts.last.transactions[1] }
57
+
58
+ it "should contain the correct values" do
59
+ t.amount.should == 350
60
+ t.fit_id.should == "219868"
61
+ t.memo.should be_empty
62
+ t.posted_at.should == Time.parse("2005-08-11 08:00:00")
63
+ t.name.should == "Payment - Thank You"
64
+ end
65
+ end
66
+ end
67
+ end
68
+
@@ -0,0 +1,100 @@
1
+ require "spec_helper"
2
+
3
+ describe SaltParser::Ofx::Parser do
4
+ let(:ofx) { SaltParser::Ofx::Builder.new("spec/ofx/fixtures/v102.ofx") }
5
+
6
+ it "should accept file path" do
7
+ ofx = SaltParser::Ofx::Builder.new("spec/ofx/fixtures/v102.ofx")
8
+ ofx.content.should_not be_nil
9
+ end
10
+
11
+ it "should accept file handler" do
12
+ file = open("spec/ofx/fixtures/v102.ofx")
13
+ ofx = SaltParser::Ofx::Builder.new(file)
14
+ ofx.content.should_not be_nil
15
+ end
16
+
17
+ it "should accept file content" do
18
+ file = open("spec/ofx/fixtures/v102.ofx").read
19
+ ofx =SaltParser::Ofx::Builder.new(file)
20
+ ofx.content.should_not be_nil
21
+ end
22
+
23
+ it "should set content" do
24
+ ofx.content.should == open("spec/ofx/fixtures/v102.ofx").read
25
+ end
26
+
27
+ it "should work with UTF8 and Latin1 encodings" do
28
+ ofx = SaltParser::Ofx::Builder.new("spec/ofx/fixtures/utf8.ofx")
29
+ ofx.content.should == open("spec/ofx/fixtures/utf8.ofx").read
30
+ end
31
+
32
+ it "should set body" do
33
+ ofx.body.should_not be_nil
34
+ end
35
+
36
+ it "should raise exception when trying to parse an unsupported OFX version" do
37
+ expect {
38
+ SaltParser::Ofx::Builder.new("spec/ofx/fixtures/invalid_version.ofx")
39
+ }.to raise_error(SaltParser::Error::UnsupportedFileError)
40
+ end
41
+
42
+ it "should raise exception when trying to parse an invalid file" do
43
+ expect {
44
+ SaltParser::Ofx::Builder.new("spec/ofx/fixtures/avatar.gif")
45
+ }.to raise_error(SaltParser::Error::UnsupportedFileError)
46
+ end
47
+
48
+ describe "headers" do
49
+ it "should have OFXHEADER" do
50
+ ofx.headers["OFXHEADER"].should == "100"
51
+ end
52
+
53
+ it "should have DATA" do
54
+ ofx.headers["DATA"].should == "OFXSGML"
55
+ end
56
+
57
+ it "should have VERSION" do
58
+ ofx.headers["VERSION"].should == "102"
59
+ end
60
+
61
+ it "should have SECURITY" do
62
+ ofx.headers.should have_key("SECURITY")
63
+ ofx.headers["SECURITY"].should be_nil
64
+ end
65
+
66
+ it "should have ENCODING" do
67
+ ofx.headers["ENCODING"].should == "USASCII"
68
+ end
69
+
70
+ it "should have CHARSET" do
71
+ ofx.headers["CHARSET"].should == "1252"
72
+ end
73
+
74
+ it "should have COMPRESSION" do
75
+ ofx.headers.should have_key("COMPRESSION")
76
+ ofx.headers["COMPRESSION"].should be_nil
77
+ end
78
+
79
+ it "should have OLDFILEUID" do
80
+ ofx.headers.should have_key("OLDFILEUID")
81
+ ofx.headers["OLDFILEUID"].should be_nil
82
+ end
83
+
84
+ it "should have NEWFILEUID" do
85
+ ofx.headers.should have_key("NEWFILEUID")
86
+ ofx.headers["NEWFILEUID"].should be_nil
87
+ end
88
+
89
+ it "should parse headers with CR and without LF" do
90
+ ofx = SaltParser::Ofx::Builder.new(ofx_with_carriage_return)
91
+ ofx.headers.size.should be(9)
92
+ end
93
+ end
94
+
95
+ def ofx_with_carriage_return
96
+ header = %{OFXHEADER:100\rDATA:OFXSGML\rVERSION:102\rSECURITY:NONE\rENCODING:USASCII\rCHARSET:1252\rCOMPRESSION:NONE\rOLDFILEUID:NONE\rNEWFILEUID:NONE\r}
97
+ body = open("spec/ofx/fixtures/v102.ofx").read.split(/<OFX>/, 2)[1]
98
+ header + "<OFX>" + body
99
+ end
100
+ end
@@ -0,0 +1,49 @@
1
+ require "spec_helper"
2
+
3
+ describe SaltParser::Ofx::SignOn do
4
+ let(:ofx) { SaltParser::Ofx::Builder.new("spec/ofx/fixtures/creditcard.ofx") }
5
+ let(:parser) { ofx.parser }
6
+ let(:sign_on) { parser.sign_on }
7
+ let(:hash) { sign_on.to_hash }
8
+
9
+ describe "sign_on" do
10
+ it "should return language" do
11
+ sign_on.language.should == "ENG"
12
+ hash[:language].should == sign_on.language
13
+ end
14
+
15
+ it "should return Financial Institution ID" do
16
+ sign_on.fi_id.should == "24909"
17
+ hash[:fi_id].should == sign_on.fi_id
18
+ end
19
+
20
+ it "should return Financial Institution Name" do
21
+ sign_on.fi_name.should == "Citigroup"
22
+ hash[:fi_name].should == sign_on.fi_name
23
+ end
24
+
25
+ context "#to_hash" do
26
+ it "should return Hash" do
27
+ hash.should be_a_kind_of(Hash)
28
+ end
29
+ end
30
+
31
+ context "#status" do
32
+ let(:sign_on) { SaltParser::Ofx::Builder.new("spec/ofx/fixtures/request_error.ofx").parser.sign_on }
33
+ it "should return status code" do
34
+ sign_on.code.should == "2000"
35
+ hash[:code].should == sign_on.code
36
+ end
37
+
38
+ it "should return status severity" do
39
+ sign_on.severity.should == "ERROR"
40
+ hash[:severity].should == sign_on.severity
41
+ end
42
+
43
+ it "should return status message" do
44
+ sign_on.message.should == "Application which you are using is not enabled. Please call customer service."
45
+ hash[:message].should == sign_on.message
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,157 @@
1
+ require "spec_helper"
2
+
3
+ describe SaltParser::Ofx::Transaction do
4
+ let(:ofx) { SaltParser::Ofx::Builder.new("spec/ofx/fixtures/v102.ofx") }
5
+ let(:parser) { ofx.parser }
6
+ let(:account) { parser.accounts.first }
7
+
8
+ context "debit" do
9
+ let(:transaction) { account.transactions[0] }
10
+ let(:hash) { transaction.to_hash }
11
+
12
+ it "should set amount" do
13
+ transaction.amount.should == -35.34
14
+ hash[:amount].should == -35.34
15
+ end
16
+
17
+ it "should cast amount to Float" do
18
+ transaction.amount.class.should == Float
19
+ hash[:amount].class.should == Float
20
+ end
21
+
22
+ it "should set amount in pennies" do
23
+ transaction.amount_in_pennies.should == -3534
24
+ hash[:amount_in_pennies].should == -3534
25
+ end
26
+
27
+ it "should set fit id" do
28
+ transaction.fit_id.should == "200910091"
29
+ hash[:fit_id].should == "200910091"
30
+ end
31
+
32
+ it "should set memo" do
33
+ transaction.memo.should == "COMPRA VISA ELECTRON"
34
+ hash[:memo].should == "COMPRA VISA ELECTRON"
35
+ end
36
+
37
+ it "should set check number" do
38
+ transaction.check_number.should == "0001223"
39
+ hash[:check_number].should == "0001223"
40
+ end
41
+
42
+ it "should have date" do
43
+ transaction.posted_at.should == Time.parse("2009-10-09 08:00:00")
44
+ hash[:posted_at].should == Time.parse("2009-10-09 08:00:00")
45
+ end
46
+
47
+ it "should have type" do
48
+ transaction.type.should == :debit
49
+ hash[:type].should == :debit
50
+ end
51
+
52
+ it "should have sic" do
53
+ transaction.sic.should == "5072"
54
+ hash[:sic].should == "5072"
55
+ end
56
+
57
+ context "#to_hash" do
58
+ it "should return Hash" do
59
+ hash.should be_a_kind_of(Hash)
60
+ end
61
+ end
62
+ end
63
+
64
+ context "credit" do
65
+ let(:transaction) { account.transactions[1] }
66
+
67
+ it "should set amount" do
68
+ transaction.amount.should == 60.39
69
+ end
70
+
71
+ it "should set amount in pennies" do
72
+ transaction.amount_in_pennies.should == 6039
73
+ end
74
+
75
+ it "should set fit id" do
76
+ transaction.fit_id.should == "200910162"
77
+ end
78
+
79
+ it "should set memo" do
80
+ transaction.memo.should == "DEPOSITO POUP.CORRENTE"
81
+ end
82
+
83
+ it "should set check number" do
84
+ transaction.check_number.should == "0880136"
85
+ end
86
+
87
+ it "should have date" do
88
+ transaction.posted_at.should == Time.parse("2009-10-16 08:00:00")
89
+ end
90
+
91
+ it "should have type" do
92
+ transaction.type.should == :credit
93
+ end
94
+
95
+ it "should have empty sic" do
96
+ transaction.sic.should == ''
97
+ end
98
+ end
99
+
100
+ context "with more info" do
101
+ let(:transaction) { account.transactions[2] }
102
+
103
+ it "should set payee" do
104
+ transaction.payee.should == "Pagto conta telefone"
105
+ end
106
+
107
+ it "should set check number" do
108
+ transaction.check_number.should == "000000101901"
109
+ end
110
+
111
+ it "should have date" do
112
+ transaction.posted_at.should == Time.parse("2009-10-19 12:00:00")
113
+ end
114
+
115
+ it "should have type" do
116
+ transaction.type.should == :other
117
+ end
118
+
119
+ it "should have reference number" do
120
+ transaction.ref_number.should == "101.901"
121
+ end
122
+ end
123
+
124
+ context "with name" do
125
+ let(:transaction) { account.transactions[3] }
126
+
127
+ it "should set name" do
128
+ transaction.name.should == "Pagto conta telefone"
129
+ end
130
+ end
131
+
132
+ context "with other types" do
133
+ let(:ofx) { SaltParser::Ofx::Builder.new("spec/ofx/fixtures/bb.ofx") }
134
+ let(:parser) { ofx.parser }
135
+ let(:account) { parser.accounts.first }
136
+
137
+ it "should return dep" do
138
+ transaction = account.transactions[9]
139
+ transaction.type.should == :dep
140
+ end
141
+
142
+ it "should return xfer" do
143
+ transaction = account.transactions[18]
144
+ transaction.type.should == :xfer
145
+ end
146
+
147
+ it "should return cash" do
148
+ transaction = account.transactions[45]
149
+ transaction.type.should == :cash
150
+ end
151
+
152
+ it "should return check" do
153
+ transaction = account.transactions[0]
154
+ transaction.type.should == :check
155
+ end
156
+ end
157
+ end
@@ -0,0 +1,42 @@
1
+ require "spec_helper"
2
+
3
+ describe SaltParser::Qif::Account do
4
+ let(:parser) { SaltParser::Qif::Builder.new("spec/qif/fixtures/bank_account.qif", "%d/%m/%Y").parser }
5
+ let(:account) { parser.accounts.first }
6
+
7
+ it "creates an account with default data" do
8
+ account.to_hash.should == {
9
+ :name => "Bank account",
10
+ :type => "bank_account",
11
+ :transactions => [
12
+ {
13
+ :date => "2010-01-01",
14
+ :amount => "-1,010.02",
15
+ :status => nil,
16
+ :number => nil,
17
+ :payee => "Description",
18
+ :memo => "Reference",
19
+ :category => "Debit"
20
+ },
21
+ {
22
+ :date => "2010-06-01",
23
+ :amount => "-30,020.00",
24
+ :status => nil,
25
+ :number => nil,
26
+ :payee => "Description",
27
+ :memo => "Reference",
28
+ :category => "Debit"
29
+ },
30
+ {
31
+ :date => "2010-12-29",
32
+ :amount => "1234.12",
33
+ :status => nil,
34
+ :number => nil,
35
+ :payee => "Description",
36
+ :memo => "Reference",
37
+ :category => "Credit"
38
+ }
39
+ ]
40
+ }
41
+ end
42
+ end
@@ -0,0 +1,19 @@
1
+ !Type:Bank
2
+ D01/01/10
3
+ T-10.00
4
+ LDebit
5
+ PDescription
6
+ MReference
7
+ ^
8
+ D01/06/10
9
+ T-20.00
10
+ LDebit
11
+ PDescription
12
+ MReference
13
+ ^
14
+ D29/12/10
15
+ T30.00
16
+ LCredit
17
+ PDescription
18
+ MReference
19
+ ^
@@ -0,0 +1,19 @@
1
+ !Type:Bank
2
+ D01/01/2010
3
+ T-10.00
4
+ LDebit
5
+ PDescription
6
+ MReference
7
+ ^
8
+ D01/06/2010
9
+ T-20.00
10
+ LDebit
11
+ PDescription
12
+ MReference
13
+ ^
14
+ D29/12/2010
15
+ T30.00
16
+ LCredit
17
+ PDescription
18
+ MReference
19
+ ^
@@ -0,0 +1,19 @@
1
+ !Type:Bank
2
+ D1/1/10
3
+ T-10.00
4
+ LDebit
5
+ PDescription
6
+ MReference
7
+ ^
8
+ D1/6/10
9
+ T-20.00
10
+ LDebit
11
+ PDescription
12
+ MReference
13
+ ^
14
+ D29/12/10
15
+ T30.00
16
+ LCredit
17
+ PDescription
18
+ MReference
19
+ ^
@@ -0,0 +1,20 @@
1
+ !Type:Bank
2
+ ^
3
+ D01/01/10
4
+ T-10.00
5
+ LDebit
6
+ PDescription
7
+ MReference
8
+ ^
9
+ D06/01/10
10
+ T-20.00
11
+ LDebit
12
+ PDescription
13
+ MReference
14
+ ^
15
+ D29/12/10
16
+ T30.00
17
+ LCredit
18
+ PDescription
19
+ MReference
20
+ ^
@@ -0,0 +1,19 @@
1
+ !Type:Bank
2
+ D1/1/10
3
+ T-10.00
4
+ LDebit
5
+ PDescription
6
+ MReference
7
+ ^
8
+ D6/1/10
9
+ T-20.00
10
+ LDebit
11
+ PDescription
12
+ MReference
13
+ ^
14
+ D12/29/10
15
+ T30.00
16
+ LCredit
17
+ PDescription
18
+ MReference
19
+ ^
@@ -0,0 +1,19 @@
1
+ !Type:Bank
2
+ D01/01/10
3
+ T-10.00
4
+ LDebit
5
+ PDescription
6
+ MReference
7
+ ^
8
+ D06/01/10
9
+ T-20.00
10
+ LDebit
11
+ PDescription
12
+ MReference
13
+ ^
14
+ D12/29/10
15
+ T30.00
16
+ LCredit
17
+ PDescription
18
+ MReference
19
+ ^
@@ -0,0 +1,19 @@
1
+ !Type:Bank
2
+ D01/01/2010
3
+ T-10.00
4
+ LDebit
5
+ PDescription
6
+ MReference
7
+ ^
8
+ D06/01/2010
9
+ T-20.00
10
+ LDebit
11
+ PDescription
12
+ MReference
13
+ ^
14
+ D12/29/2010
15
+ T30.00
16
+ LCredit
17
+ PDescription
18
+ MReference
19
+ ^
@@ -0,0 +1,19 @@
1
+ !Type:Bank
2
+ D1/ 1/10
3
+ T-10.00
4
+ LDebit
5
+ PDescription
6
+ MReference
7
+ ^
8
+ D6/ 1/10
9
+ T-20.00
10
+ LDebit
11
+ PDescription
12
+ MReference
13
+ ^
14
+ D12/29/10
15
+ T30.00
16
+ LCredit
17
+ PDescription
18
+ MReference
19
+ ^
@@ -0,0 +1,19 @@
1
+ !Type:Bank
2
+ D01/01/2010
3
+ T-1,010.02
4
+ LDebit
5
+ PDescription
6
+ MReference
7
+ ^
8
+ D01/06/2010
9
+ T-30,020.00
10
+ LDebit
11
+ PDescription
12
+ MReference
13
+ ^
14
+ D29/12/2010
15
+ T1234.12
16
+ LCredit
17
+ PDescription
18
+ MReference
19
+ ^
@@ -0,0 +1 @@
1
+ !Type:Bank
@@ -0,0 +1,18 @@
1
+ D1/ 1/10
2
+ T-10.00
3
+ LDebit
4
+ PDescription
5
+ MReference
6
+ ^
7
+ D6/ 1/10
8
+ T-20.00
9
+ LDebit
10
+ PDescription
11
+ MReference
12
+ ^
13
+ D12/29/10
14
+ T30.00
15
+ LCredit
16
+ PDescription
17
+ MReference
18
+ ^
@@ -0,0 +1,13 @@
1
+ !Type:Bank
2
+ D13/12/2012
3
+ T-10.00
4
+ LDebit
5
+ PDescription
6
+ MReference
7
+ ^
8
+ D12/13/2012
9
+ T-20.00
10
+ LDebit
11
+ PDescription
12
+ MReference
13
+ ^
@@ -0,0 +1,7 @@
1
+ !Type:Bank
2
+ D13/13/10
3
+ T-10.00
4
+ LDebit
5
+ PDescription
6
+ MReference
7
+ ^
@@ -0,0 +1,3 @@
1
+ Tchen tenterait-il de lever la moustiquaire ? Frapperait-il au travers ? L’angoisse lui tordait l’estomac ; il connaissait sa propre fermeté, mais n’était capable en cet instant que d’y songer avec hébétude, fasciné par ce tas de mousseline blanche qui tombait du plafond sur un corps moins visible qu’une ombre, et d’où sortait seulement ce pied à demi incliné par le sommeil, vivant quand même — de la chair d’homme. La seule lumière venait du building voisin : un grand rectangle d’électricité pâle, coupé par les barreaux de la fenêtre dont l’un rayait le lit juste au-dessous du pied comme pour en accentuer le volume et la vie. Quatre ou cinq klaxons grincèrent à la fois. Découvert ? Combattre, combattre des ennemis qui se défendent, des ennemis éveillés !
2
+
3
+ Incipit de "La Condition humaine", André Malraux, 1933
@@ -0,0 +1,30 @@
1
+ !Type:Bank
2
+ D6/1/94
3
+ T-1,000.00
4
+ CX
5
+ N1005
6
+ PBank Of Mortgage
7
+ MMemo
8
+ L[linda]
9
+ S[linda]
10
+ ECash
11
+ $-253.64
12
+ SMort Int
13
+ $=746.36
14
+ ^
15
+ D6/2/94
16
+ T75.00
17
+ PDeposit
18
+ ^
19
+ D6/3/94
20
+ T-10.00
21
+ PAnthony Hopkins
22
+ MFilm
23
+ LEntertain
24
+ AP.O. Box 27027
25
+ ATucson, AZ
26
+ A85726
27
+ A
28
+ A
29
+ A
30
+ ^