reckon 0.5.1 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +50 -0
  3. data/.gitignore +2 -0
  4. data/.ruby-version +1 -1
  5. data/CHANGELOG.md +74 -0
  6. data/Gemfile.lock +1 -5
  7. data/README.md +72 -16
  8. data/Rakefile +17 -1
  9. data/lib/reckon.rb +2 -5
  10. data/lib/reckon/app.rb +145 -71
  11. data/lib/reckon/cosine_similarity.rb +92 -89
  12. data/lib/reckon/csv_parser.rb +67 -122
  13. data/lib/reckon/date_column.rb +10 -0
  14. data/lib/reckon/ledger_parser.rb +11 -1
  15. data/lib/reckon/logger.rb +4 -0
  16. data/lib/reckon/money.rb +52 -51
  17. data/lib/reckon/version.rb +1 -1
  18. data/reckon.gemspec +1 -2
  19. data/spec/data_fixtures/51-sample.csv +8 -0
  20. data/spec/data_fixtures/51-tokens.yml +9 -0
  21. data/spec/data_fixtures/85-date-example.csv +2 -0
  22. data/spec/integration/another_bank_example/input.csv +9 -0
  23. data/spec/integration/another_bank_example/output.ledger +36 -0
  24. data/spec/integration/another_bank_example/test_args +1 -0
  25. data/spec/integration/austrian_example/input.csv +13 -0
  26. data/spec/integration/austrian_example/output.ledger +52 -0
  27. data/spec/integration/austrian_example/test_args +2 -0
  28. data/spec/integration/bom_utf8_file/input.csv +3 -0
  29. data/spec/integration/bom_utf8_file/output.ledger +4 -0
  30. data/spec/integration/bom_utf8_file/test_args +3 -0
  31. data/spec/integration/broker_canada_example/input.csv +12 -0
  32. data/spec/integration/broker_canada_example/output.ledger +48 -0
  33. data/spec/integration/broker_canada_example/test_args +1 -0
  34. data/spec/integration/chase/account_tokens_and_regex/output.ledger +36 -0
  35. data/spec/integration/chase/account_tokens_and_regex/test_args +2 -0
  36. data/spec/integration/chase/account_tokens_and_regex/tokens.yml +16 -0
  37. data/spec/integration/chase/default_account_names/output.ledger +36 -0
  38. data/spec/integration/chase/default_account_names/test_args +3 -0
  39. data/spec/integration/chase/input.csv +9 -0
  40. data/spec/integration/chase/learn_from_existing/learn.ledger +7 -0
  41. data/spec/integration/chase/learn_from_existing/output.ledger +36 -0
  42. data/spec/integration/chase/learn_from_existing/test_args +1 -0
  43. data/spec/integration/chase/simple/output.ledger +36 -0
  44. data/spec/integration/chase/simple/test_args +1 -0
  45. data/spec/integration/danish_kroner_nordea_example/input.csv +6 -0
  46. data/spec/integration/danish_kroner_nordea_example/output.ledger +24 -0
  47. data/spec/integration/danish_kroner_nordea_example/test_args +1 -0
  48. data/spec/integration/english_date_example/input.csv +3 -0
  49. data/spec/integration/english_date_example/output.ledger +12 -0
  50. data/spec/integration/english_date_example/test_args +1 -0
  51. data/spec/integration/extratofake/input.csv +24 -0
  52. data/spec/integration/extratofake/output.ledger +92 -0
  53. data/spec/integration/extratofake/test_args +1 -0
  54. data/spec/integration/french_example/input.csv +9 -0
  55. data/spec/integration/french_example/output.ledger +36 -0
  56. data/spec/integration/french_example/test_args +2 -0
  57. data/spec/integration/german_date_example/input.csv +3 -0
  58. data/spec/integration/german_date_example/output.ledger +12 -0
  59. data/spec/integration/german_date_example/test_args +1 -0
  60. data/spec/integration/harder_date_example/input.csv +5 -0
  61. data/spec/integration/harder_date_example/output.ledger +20 -0
  62. data/spec/integration/harder_date_example/test_args +1 -0
  63. data/spec/integration/ing/input.csv +3 -0
  64. data/spec/integration/ing/output.ledger +12 -0
  65. data/spec/integration/ing/test_args +1 -0
  66. data/spec/integration/intuit_mint_example/input.csv +7 -0
  67. data/spec/integration/intuit_mint_example/output.ledger +28 -0
  68. data/spec/integration/intuit_mint_example/test_args +1 -0
  69. data/spec/integration/invalid_header_example/input.csv +6 -0
  70. data/spec/integration/invalid_header_example/output.ledger +8 -0
  71. data/spec/integration/invalid_header_example/test_args +1 -0
  72. data/spec/integration/inversed_credit_card/input.csv +16 -0
  73. data/spec/integration/inversed_credit_card/output.ledger +64 -0
  74. data/spec/integration/inversed_credit_card/test_args +1 -0
  75. data/spec/integration/nationwide/input.csv +4 -0
  76. data/spec/integration/nationwide/output.ledger +16 -0
  77. data/spec/integration/nationwide/test_args +1 -0
  78. data/spec/integration/regression/issue_51_account_tokens/input.csv +8 -0
  79. data/spec/integration/regression/issue_51_account_tokens/output.ledger +32 -0
  80. data/spec/integration/regression/issue_51_account_tokens/test_args +4 -0
  81. data/spec/integration/regression/issue_51_account_tokens/tokens.yml +9 -0
  82. data/spec/integration/regression/issue_64_date_column/input.csv +3 -0
  83. data/spec/integration/regression/issue_64_date_column/output.ledger +8 -0
  84. data/spec/integration/regression/issue_64_date_column/test_args +1 -0
  85. data/spec/integration/regression/issue_73_account_token_matching/input.csv +2 -0
  86. data/spec/integration/regression/issue_73_account_token_matching/output.ledger +4 -0
  87. data/spec/integration/regression/issue_73_account_token_matching/test_args +6 -0
  88. data/spec/integration/regression/issue_73_account_token_matching/tokens.yml +8 -0
  89. data/spec/integration/regression/issue_85_date_example/input.csv +2 -0
  90. data/spec/integration/regression/issue_85_date_example/output.ledger +8 -0
  91. data/spec/integration/regression/issue_85_date_example/test_args +1 -0
  92. data/spec/integration/spanish_date_example/input.csv +3 -0
  93. data/spec/integration/spanish_date_example/output.ledger +12 -0
  94. data/spec/integration/spanish_date_example/test_args +1 -0
  95. data/spec/integration/suntrust/input.csv +7 -0
  96. data/spec/integration/suntrust/output.ledger +28 -0
  97. data/spec/integration/suntrust/test_args +1 -0
  98. data/spec/integration/test.sh +82 -0
  99. data/spec/integration/test_money_column/input.csv +3 -0
  100. data/spec/integration/test_money_column/output.ledger +8 -0
  101. data/spec/integration/test_money_column/test_args +1 -0
  102. data/spec/integration/two_money_columns/input.csv +5 -0
  103. data/spec/integration/two_money_columns/output.ledger +20 -0
  104. data/spec/integration/two_money_columns/test_args +1 -0
  105. data/spec/integration/yyyymmdd_date_example/input.csv +1 -0
  106. data/spec/integration/yyyymmdd_date_example/output.ledger +4 -0
  107. data/spec/integration/yyyymmdd_date_example/test_args +1 -0
  108. data/spec/reckon/app_spec.rb +18 -2
  109. data/spec/reckon/csv_parser_spec.rb +129 -129
  110. data/spec/reckon/ledger_parser_spec.rb +42 -5
  111. data/spec/reckon/money_column_spec.rb +24 -24
  112. data/spec/reckon/money_spec.rb +36 -42
  113. data/spec/spec_helper.rb +19 -0
  114. metadata +97 -22
  115. data/.travis.yml +0 -13
@@ -0,0 +1 @@
1
+ -f input.csv --unattended --account Assets:Bank:Checking
@@ -0,0 +1,5 @@
1
+ 10-Nov-9,-123.12,,,TRANSFER DEBIT INTERNET TRANSFER,INTERNET TRANSFER MORTGAGE,0.00,
2
+ 09-Nov-10,123.12,,,SALARY SALARY,NGHSKS46383BGDJKD FOO BAR,432.12,
3
+ 04-Nov-11,-1234.00,,,TRANSFER DEBIT INTERNET TRANSFER,INTERNET TRANSFER SAV TO MECU,0.00,
4
+ 04-Nov-9,1234.00,,,TRANSFER CREDIT INTERNET TRANSFER,INTERNET TRANSFER,1234.00,
5
+ 28-Oct-10,-123.12,,,TRANSFER DEBIT INTERNET TRANSFER,INTERNET TRANSFER SAV TO MORTGAGE,0.00,
@@ -0,0 +1,20 @@
1
+ 2009-11-04 TRANSFER CREDIT INTERNET TRANSFER; INTERNET TRANSFER; 1234.00
2
+ Assets:Bank:Checking $1234.00
3
+ Income:Unknown
4
+
5
+ 2009-11-10 TRANSFER DEBIT INTERNET TRANSFER; INTERNET TRANSFER MORTGAGE; 0.00
6
+ Income:Unknown
7
+ Assets:Bank:Checking -$123.12
8
+
9
+ 2010-10-28 TRANSFER DEBIT INTERNET TRANSFER; INTERNET TRANSFER SAV TO MORTGAGE; 0.00
10
+ Income:Unknown
11
+ Assets:Bank:Checking -$123.12
12
+
13
+ 2010-11-09 SALARY SALARY; NGHSKS46383BGDJKD FOO BAR; 432.12
14
+ Assets:Bank:Checking $123.12
15
+ Income:Unknown
16
+
17
+ 2011-11-04 TRANSFER DEBIT INTERNET TRANSFER; INTERNET TRANSFER SAV TO MECU; 0.00
18
+ Income:Unknown
19
+ Assets:Bank:Checking -$1234.00
20
+
@@ -0,0 +1 @@
1
+ -f input.csv --unattended --account Assets:Bank:Checking
@@ -0,0 +1,3 @@
1
+ 20121115,From1,Acc,T1,IC,Af,"136,13",Incasso,SEPA Incasso, Opm1
2
+ 20121112,Names,NL28 INGB 1200 3244 16,21817,GT,Bij,"375,00", Opm2
3
+ 20091117,Names,NL28 INGB 1200 3244 16,21817,GT,Af,"257,50", Opm3
@@ -0,0 +1,12 @@
1
+ 2009-11-17 Names; NL28 INGB 1200 3244 16; 21817; GT; Af; Opm3
2
+ Expenses:Unknown
3
+ Assets:Bank:Checking -$257.50
4
+
5
+ 2012-11-12 Names; NL28 INGB 1200 3244 16; 21817; GT; Bij; Opm2
6
+ Assets:Bank:Checking $375.00
7
+ Expenses:Unknown
8
+
9
+ 2012-11-15 From1; Acc; T1; IC; Af; Incasso; SEPA Incasso; Opm1
10
+ Expenses:Unknown
11
+ Assets:Bank:Checking -$136.13
12
+
@@ -0,0 +1 @@
1
+ -f input.csv --unattended --account Assets:Bank:Checking --comma-separates-cents
@@ -0,0 +1,7 @@
1
+ "12/10/2014","Dn Ing Inv","[DN]ING INV/PLA","0.01","credit","Investments","Chequing","",""
2
+ "2/03/2014","Ds Lms Msp Condo","[DS]LMS598 MSP/DIV","331.63","debit","Condo Fees","Chequing","",""
3
+ "2/10/2014","Ib Granville","[IB] 2601 GRANVILLE","100.00","debit","Uncategorized","Chequing","",""
4
+ "2/06/2014","So Pa","[SO]PA 0005191230116379851","140.72","debit","Mortgage & Rent","Chequing","",""
5
+ "2/03/2014","Dn Sun Life","[DN]SUN LIFE MSP/DIV","943.34","credit","Income","Chequing","",""
6
+ "1/30/2014","Transfer to CBT (Savings)","[CW] TF 0004#3409-797","500.00","debit","Transfer","Chequing","",""
7
+ "1/30/2014","Costco","[PR]COSTCO WHOLESAL","559.96","debit","Business Services","Chequing","",""
@@ -0,0 +1,28 @@
1
+ 2014-01-30 Transfer to CBT (Savings); [CW] TF 0004#3409-797; debit; Transfer; Chequing
2
+ Expenses:Unknown
3
+ Assets:Bank:Checking -$500.00
4
+
5
+ 2014-01-30 Costco; [PR]COSTCO WHOLESAL; debit; Business Services; Chequing
6
+ Expenses:Unknown
7
+ Assets:Bank:Checking -$559.96
8
+
9
+ 2014-02-03 Dn Sun Life; [DN]SUN LIFE MSP/DIV; credit; Income; Chequing
10
+ Assets:Bank:Checking $943.34
11
+ Expenses:Unknown
12
+
13
+ 2014-02-03 Ds Lms Msp Condo; [DS]LMS598 MSP/DIV; debit; Condo Fees; Chequing
14
+ Expenses:Unknown
15
+ Assets:Bank:Checking -$331.63
16
+
17
+ 2014-02-06 So Pa; [SO]PA 0005191230116379851; debit; Mortgage & Rent; Chequing
18
+ Expenses:Unknown
19
+ Assets:Bank:Checking -$140.72
20
+
21
+ 2014-02-10 Ib Granville; [IB] 2601 GRANVILLE; debit; Uncategorized; Chequing
22
+ Expenses:Unknown
23
+ Assets:Bank:Checking -$100.00
24
+
25
+ 2014-12-10 Dn Ing Inv; [DN]ING INV/PLA; credit; Investments; Chequing
26
+ Assets:Bank:Checking $0.01
27
+ Expenses:Unknown
28
+
@@ -0,0 +1 @@
1
+ -f input.csv --unattended --account Assets:Bank:Checking
@@ -0,0 +1,6 @@
1
+ -
2
+ ="0234500012345678";21/11/2015;19/02/2016;36;19/02/2016;1234,37 EUR
3
+
4
+ Date de l'opération;Libellé;Détail de l'écriture;Montant de l'opération;Devise
5
+ 19/02/2016;VIR RECU 508160;VIR RECU 1234567834S DE: Francois REF: 123457891234567894561231 PROVENANCE: DE Allemagne ;50,00;EUR
6
+ 18/02/2016;COTISATION JAZZ;COTISATION JAZZ ;-8,10;EUR
@@ -0,0 +1,8 @@
1
+ 4016-02-18
2
+ Assets:Bank:Checking $10.00
3
+ Income:Unknown
4
+
5
+ 4016-02-19
6
+ Income:Unknown
7
+ Assets:Bank:Checking $0.00
8
+
@@ -0,0 +1 @@
1
+ -f input.csv --unattended --account Assets:Bank:Checking --contains-header 4o
@@ -0,0 +1,16 @@
1
+ 2013/01/17,2013/01/16,2013011702,DEBIT,2226,"VODAFONE PREPAY VISA M AUCKLAND NZL",30.00
2
+ 2013/01/18,2013/01/17,2013011801,DEBIT,2226,"WILSON PARKING AUCKLAND NZL",4.60
3
+ 2013/01/18,2013/01/17,2013011802,DEBIT,2226,"AUCKLAND TRANSPORT HENDERSON NZL",2.00
4
+ 2013/01/19,2013/01/19,2013011901,CREDIT,2226,"INTERNET PAYMENT RECEIVED ",-500.00
5
+ 2013/01/26,2013/01/23,2013012601,DEBIT,2226,"ITUNES NZ CORK IRL",64.99
6
+ 2013/01/26,2013/01/25,2013012602,DEBIT,2226,"VODAFONE FXFLNE BBND R NEWTON NZL",90.26
7
+ 2013/01/29,2013/01/29,2013012901,CREDIT,2101,"PAYMENT RECEIVED THANK YOU ",-27.75
8
+ 2013/01/30,2013/01/29,2013013001,DEBIT,2226,"AUCKLAND TRANSPORT HENDERSON NZL",3.50
9
+ 2013/02/05,2013/02/03,2013020501,DEBIT,2226,"Z BEACH RD AUCKLAND NZL",129.89
10
+ 2013/02/05,2013/02/03,2013020502,DEBIT,2226,"TOURNAMENT KHYBER PASS AUCKLAND NZL",8.00
11
+ 2013/02/05,2013/02/04,2013020503,DEBIT,2226,"VODAFONE PREPAY VISA M AUCKLAND NZL",30.00
12
+ 2013/02/08,2013/02/07,2013020801,DEBIT,2226,"AKLD TRANSPORT PARKING AUCKLAND NZL",2.50
13
+ 2013/02/08,2013/02/07,2013020802,DEBIT,2226,"AUCKLAND TRANSPORT HENDERSON NZL",3.50
14
+ 2013/02/12,2013/02/11,2013021201,DEBIT,2226,"AKLD TRANSPORT PARKING AUCKLAND NZL",1.50
15
+ 2013/02/17,2013/02/17,2013021701,CREDIT,2226,"INTERNET PAYMENT RECEIVED ",-12.00
16
+ 2013/02/17,2013/02/17,2013021702,CREDIT,2226,"INTERNET PAYMENT RECEIVED ",-18.00
@@ -0,0 +1,64 @@
1
+ 2013-01-17 2013/01/16; 2013011702; DEBIT; 2226; VODAFONE PREPAY VISA M AUCKLAND NZL
2
+ Assets:Bank:Checking $30.00
3
+ Income:Unknown
4
+
5
+ 2013-01-18 2013/01/17; 2013011801; DEBIT; 2226; WILSON PARKING AUCKLAND NZL
6
+ Assets:Bank:Checking $4.60
7
+ Income:Unknown
8
+
9
+ 2013-01-18 2013/01/17; 2013011802; DEBIT; 2226; AUCKLAND TRANSPORT HENDERSON NZL
10
+ Assets:Bank:Checking $2.00
11
+ Income:Unknown
12
+
13
+ 2013-01-19 2013/01/19; 2013011901; CREDIT; 2226; INTERNET PAYMENT RECEIVED
14
+ Income:Unknown
15
+ Assets:Bank:Checking -$500.00
16
+
17
+ 2013-01-26 2013/01/25; 2013012602; DEBIT; 2226; VODAFONE FXFLNE BBND R NEWTON NZL
18
+ Assets:Bank:Checking $90.26
19
+ Income:Unknown
20
+
21
+ 2013-01-26 2013/01/23; 2013012601; DEBIT; 2226; ITUNES NZ CORK IRL
22
+ Assets:Bank:Checking $64.99
23
+ Income:Unknown
24
+
25
+ 2013-01-29 2013/01/29; 2013012901; CREDIT; 2101; PAYMENT RECEIVED THANK YOU
26
+ Income:Unknown
27
+ Assets:Bank:Checking -$27.75
28
+
29
+ 2013-01-30 2013/01/29; 2013013001; DEBIT; 2226; AUCKLAND TRANSPORT HENDERSON NZL
30
+ Assets:Bank:Checking $3.50
31
+ Income:Unknown
32
+
33
+ 2013-02-05 2013/02/03; 2013020501; DEBIT; 2226; Z BEACH RD AUCKLAND NZL
34
+ Assets:Bank:Checking $129.89
35
+ Income:Unknown
36
+
37
+ 2013-02-05 2013/02/04; 2013020503; DEBIT; 2226; VODAFONE PREPAY VISA M AUCKLAND NZL
38
+ Assets:Bank:Checking $30.00
39
+ Income:Unknown
40
+
41
+ 2013-02-05 2013/02/03; 2013020502; DEBIT; 2226; TOURNAMENT KHYBER PASS AUCKLAND NZL
42
+ Assets:Bank:Checking $8.00
43
+ Income:Unknown
44
+
45
+ 2013-02-08 2013/02/07; 2013020802; DEBIT; 2226; AUCKLAND TRANSPORT HENDERSON NZL
46
+ Assets:Bank:Checking $3.50
47
+ Income:Unknown
48
+
49
+ 2013-02-08 2013/02/07; 2013020801; DEBIT; 2226; AKLD TRANSPORT PARKING AUCKLAND NZL
50
+ Assets:Bank:Checking $2.50
51
+ Income:Unknown
52
+
53
+ 2013-02-12 2013/02/11; 2013021201; DEBIT; 2226; AKLD TRANSPORT PARKING AUCKLAND NZL
54
+ Assets:Bank:Checking $1.50
55
+ Income:Unknown
56
+
57
+ 2013-02-17 2013/02/17; 2013021701; CREDIT; 2226; INTERNET PAYMENT RECEIVED
58
+ Income:Unknown
59
+ Assets:Bank:Checking -$12.00
60
+
61
+ 2013-02-17 2013/02/17; 2013021702; CREDIT; 2226; INTERNET PAYMENT RECEIVED
62
+ Income:Unknown
63
+ Assets:Bank:Checking -$18.00
64
+
@@ -0,0 +1 @@
1
+ -f input.csv --unattended --account Assets:Bank:Checking
@@ -0,0 +1,4 @@
1
+ 07 Nov 2013,Bank credit,Bank credit,,£500.00,£500.00
2
+ 09 Oct 2013,ATM Withdrawal,Withdrawal,£20.00,,£480.00
3
+ 09 Dec 2013,Visa,Supermarket,£19.77,,£460.23
4
+ 10 Dec 2013,ATM Withdrawal 2,ATM Withdrawal 4,£100.00,,£360.23
@@ -0,0 +1,16 @@
1
+ 2013-10-09 ATM Withdrawal; Withdrawal; £480.00
2
+ Expenses:Unknown
3
+ Assets:Bank:Checking -20.00 POUND
4
+
5
+ 2013-11-07 Bank credit; Bank credit; £500.00
6
+ Assets:Bank:Checking 500.00 POUND
7
+ Income:Unknown
8
+
9
+ 2013-12-09 Visa; Supermarket; £460.23
10
+ Expenses:Unknown
11
+ Assets:Bank:Checking -19.77 POUND
12
+
13
+ 2013-12-10 ATM Withdrawal 2; ATM Withdrawal 4; £360.23
14
+ Expenses:Unknown
15
+ Assets:Bank:Checking -100.00 POUND
16
+
@@ -0,0 +1 @@
1
+ -f input.csv --unattended --account Assets:Bank:Checking --csv-separator , --suffixed --currency POUND
@@ -0,0 +1,8 @@
1
+ 01/09/2015,05354 SUBWAY,8.19,,1000.00
2
+ 02/18/2015,WENDY'S #6338,8.55,,1000.00
3
+ 02/25/2015,WENDY'S #6338,8.55,,1000.00
4
+ 02/25/2015,WENDY'S #6338,9.14,,1000.00
5
+ 02/27/2015,WENDY'S #6338,5.85,,1000.00
6
+ 03/09/2015,WENDY'S #6338,17.70,,1000.00
7
+ 03/16/2015,WENDY'S #6338,11.15,,1000.00
8
+ 03/23/2015,WENDY'S,10.12,,1000.00
@@ -0,0 +1,32 @@
1
+ 2015-01-09 05354 SUBWAY
2
+ Assets:Chequing $8.19
3
+ Expenses:Dining:Resturant
4
+
5
+ 2015-02-18 WENDY'S #6338
6
+ Assets:Chequing $8.55
7
+ Expenses:Dining:Resturant
8
+
9
+ 2015-02-25 WENDY'S #6338
10
+ Assets:Chequing $9.14
11
+ Expenses:Dining:Resturant
12
+
13
+ 2015-02-25 WENDY'S #6338
14
+ Assets:Chequing $8.55
15
+ Expenses:Dining:Resturant
16
+
17
+ 2015-02-27 WENDY'S #6338
18
+ Assets:Chequing $5.85
19
+ Expenses:Dining:Resturant
20
+
21
+ 2015-03-09 WENDY'S #6338
22
+ Assets:Chequing $17.70
23
+ Expenses:Dining:Resturant
24
+
25
+ 2015-03-16 WENDY'S #6338
26
+ Assets:Chequing $11.15
27
+ Expenses:Dining:Resturant
28
+
29
+ 2015-03-23 WENDY'S
30
+ Assets:Chequing $10.12
31
+ Expenses:Dining:Resturant
32
+
@@ -0,0 +1,4 @@
1
+ -f input.csv --unattended --account Assets:Chequing \
2
+ --ignore-columns 5 \
3
+ --account-tokens tokens.yml
4
+
@@ -0,0 +1,9 @@
1
+ Expenses:
2
+ Dining:
3
+ Coffee:
4
+ - 'STARBUCKS'
5
+ - 'TIM HORTON'
6
+ Resturant:
7
+ - 'WENDY''S'
8
+ - 'SUBWAY'
9
+ - 'BARAKAT'
@@ -0,0 +1,3 @@
1
+ "Date","Note","Amount"
2
+ "2012/3/22","DEPOSIT","50.00"
3
+ "2012/3/23","TRANSFER TO SAVINGS","-10.00"
@@ -0,0 +1,8 @@
1
+ 2012-03-22 DEPOSIT
2
+ Assets:Bank:Checking $50.00
3
+ Income:Unknown
4
+
5
+ 2012-03-23 TRANSFER TO SAVINGS
6
+ Expenses:Unknown
7
+ Assets:Bank:Checking -$10.00
8
+
@@ -0,0 +1 @@
1
+ -f input.csv --unattended --account Assets:Bank:Checking
@@ -0,0 +1,2 @@
1
+ Transaction Date,Description,Amount,Category
2
+ 07/06/2017,TRIPLE T CAR WASH CHAMPAIGN IL,$27.00,Automotive
@@ -0,0 +1,4 @@
1
+ 2017-07-06 TRIPLE T CAR WASH CHAMPAIGN IL
2
+ Liabilities:Credit Cards:Visa $27.00
3
+ Expenses:Automotive:Car Wash
4
+
@@ -0,0 +1,6 @@
1
+ -f input.csv --unattended --account 'Liabilities:Credit Cards:Visa' \
2
+ --contains-header 1 \
3
+ --ignore-columns 4 \
4
+ --date-format %m/%d/%Y \
5
+ --account-tokens tokens.yml
6
+
@@ -0,0 +1,8 @@
1
+ Expenses:
2
+ Automotive:
3
+ Car Wash:
4
+ - 'TRIPLE T CAR WASH CHAMPAIGN IL'
5
+ - "BIG T's CAR WASH"
6
+ Maintenance:
7
+ - 'Autozone'
8
+ - "O'Reillys auto parts"
@@ -0,0 +1,2 @@
1
+ Visa, 4514010000000000, 2020-02-20, , GOJEK SINGAPORE, 8.10 SGD @ .976500000000, -7.91, D
2
+ Visa, 4514010000000000, 2020-02-20, , GOJEK SINGAPORE, 6.00 SGD @ .976600000000, -5.86, D
@@ -0,0 +1,8 @@
1
+ 2020-02-20 Visa; 4514010000000000; GOJEK SINGAPORE; 6.00 SGD @ .976600000000; D
2
+ Expenses:Unknown
3
+ Assets:Bank:Checking -$5.86
4
+
5
+ 2020-02-20 Visa; 4514010000000000; GOJEK SINGAPORE; 8.10 SGD @ .976500000000; D
6
+ Expenses:Unknown
7
+ Assets:Bank:Checking -$7.91
8
+
@@ -0,0 +1 @@
1
+ -f input.csv --unattended --account Assets:Bank:Checking
@@ -0,0 +1,3 @@
1
+ 02/12/2009,Check - 0000000122,122,-$76.00,"","$1,750.06"
2
+ 02/12/2009,BLARG R SH 456930,"","",+$327.49,"$1,826.06"
3
+ 02/12/2009,Check - 0000000112,112,-$800.00,"","$1,498.57"
@@ -0,0 +1,12 @@
1
+ 2009-12-02 BLARG R SH 456930; $1,826.06
2
+ Assets:Bank:Checking $327.49
3
+ Income:Unknown
4
+
5
+ 2009-12-02 Check - 0000000122; 122; $1,750.06
6
+ Income:Unknown
7
+ Assets:Bank:Checking -$76.00
8
+
9
+ 2009-12-02 Check - 0000000112; 112; $1,498.57
10
+ Income:Unknown
11
+ Assets:Bank:Checking -$800.00
12
+
@@ -0,0 +1 @@
1
+ -f input.csv --unattended --account Assets:Bank:Checking --date-format '%d/%m/%Y'
@@ -0,0 +1,7 @@
1
+ 11/01/2014,0, Deposit,0,500.00,500.00
2
+ 11/02/2014,101,Check,100.00,0,400.00
3
+ 11/03/2014,102,Check,100.00,0,300.00
4
+ 11/04/2014,103,Check,100.00,0,200.00
5
+ 11/05/2014,104,Check,100.00,0,100.00
6
+ 11/06/2014,105,Check,100.00,0,0.00
7
+ 11/17/2014,0, Deposit,0,700.00,700.00
@@ -0,0 +1,28 @@
1
+ 2014-11-01 0; Deposit; 500.00
2
+ Assets:Bank:Checking $500.00
3
+ Income:Unknown
4
+
5
+ 2014-11-02 101; Check; 400.00
6
+ Expenses:Unknown
7
+ Assets:Bank:Checking -$100.00
8
+
9
+ 2014-11-03 102; Check; 300.00
10
+ Expenses:Unknown
11
+ Assets:Bank:Checking -$100.00
12
+
13
+ 2014-11-04 103; Check; 200.00
14
+ Expenses:Unknown
15
+ Assets:Bank:Checking -$100.00
16
+
17
+ 2014-11-05 104; Check; 100.00
18
+ Expenses:Unknown
19
+ Assets:Bank:Checking -$100.00
20
+
21
+ 2014-11-06 105; Check; 0.00
22
+ Expenses:Unknown
23
+ Assets:Bank:Checking -$100.00
24
+
25
+ 2014-11-17 0; Deposit; 700.00
26
+ Assets:Bank:Checking $700.00
27
+ Income:Unknown
28
+
@@ -0,0 +1 @@
1
+ -f input.csv --unattended --account Assets:Bank:Checking
@@ -0,0 +1,82 @@
1
+ #!/bin/bash
2
+
3
+ # set -x
4
+
5
+ set -Euo pipefail
6
+
7
+ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
8
+ TEST_DIFF=""
9
+ OUTPUT=""
10
+ RECKON_CMD="env RUBYLIB=$SCRIPT_DIR/../../lib:$RUBYLIB reckon -v"
11
+
12
+ main () {
13
+ trap test_fail EXIT
14
+
15
+ if [[ $# -eq 1 ]]; then
16
+ TESTS=$1/test_args
17
+ else
18
+ TESTS=$(find "$SCRIPT_DIR" -name 'test_args')
19
+ fi
20
+
21
+ echo > test.log
22
+
23
+ for t in $TESTS; do
24
+ OUTPUT_FILE=$(mktemp)
25
+ TEST_DIR=$(dirname "$t")
26
+ pushd "$TEST_DIR" >/dev/null || exit 1
27
+ echo "$TEST_DIR Running..."
28
+ TEST_CMD="$RECKON_CMD -o $OUTPUT_FILE $(cat test_args)"
29
+ TEST_LOG=$(eval "$TEST_CMD" 2>&1)
30
+ ERROR=0
31
+
32
+ compare_output "$OUTPUT_FILE"
33
+
34
+ popd >/dev/null || exit 1
35
+ # have to save output after popd
36
+ echo -e "\n\n======>$TEST_DIR" >> test.log
37
+ echo -e "TEST_CMD\n$TEST_LOG" >> test.log
38
+
39
+ if [[ $ERROR -ne 0 ]]; then
40
+ exit 1
41
+ fi
42
+ done
43
+ }
44
+
45
+ test_fail () {
46
+ STATUS=$?
47
+ if [[ $STATUS -ne 0 ]]; then
48
+ echo -e "FAILED!!!\n$TEST_DIFF\nTest output saved to $OUTPUT_FILE\n"
49
+ exit $STATUS
50
+ fi
51
+ }
52
+
53
+ compare_output_for () {
54
+ OUTPUT_FILE=$1
55
+ LEDGER=$2
56
+
57
+ TEST_DIFF=$(diff -u <($LEDGER -f output.ledger r --date-format %F 2>&1) <($LEDGER -f "$OUTPUT_FILE" r --date-format %F 2>&1) )
58
+
59
+ # ${#} is character length, test that there was no output from diff
60
+ if [ ${#TEST_DIFF} -eq 0 ]; then
61
+ return 0
62
+ else
63
+ return 1
64
+ fi
65
+ }
66
+
67
+ compare_output () {
68
+ OUTPUT_FILE=$1
69
+
70
+ for n in {ledger,hledger}; do
71
+ echo -n " - $n..."
72
+ if compare_output_for "$OUTPUT_FILE" "$n"; then
73
+ echo "SUCCESS!"
74
+ else
75
+ echo "FAILED!"
76
+ ERROR=1
77
+ return 0
78
+ fi
79
+ done
80
+ }
81
+
82
+ main "$@"