africompta 1.9.8

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 704d5cbfc5f07dfb28510afdc7e48fc55ee903d5
4
+ data.tar.gz: c8f6198db4e0471ab210681789b9f9313770a55c
5
+ SHA512:
6
+ metadata.gz: ba2375b01c9751d0cfa28a39f7f422b41478239c96f1594279471ba3bfba46dd6c7f013c32f487ccc43b3e74e909ca7641d8e7c30ea34829f49d6c6ef1d1f7d2
7
+ data.tar.gz: 961f644f75673085a8eda617a4a3d9d6afc410137fe9b304c52514c4f16013af20a915e6f6b19259ea9a9884eb4822fe3b7d47fabeca48f83b97721652feca35
data/.gitignore ADDED
@@ -0,0 +1,15 @@
1
+ Backups
2
+ db.*
3
+ camping-1.5.old
4
+ nohup.out
5
+ .hg
6
+ *.log
7
+ config.yaml
8
+ data
9
+ tmp/
10
+ .idea
11
+ compta.db.*
12
+ test/test.pdf
13
+ test/*db
14
+ test/data*
15
+ /*gem
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in qooxview.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,74 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ africompta (1.9.8)
5
+ qooxview
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ activemodel (3.1.1)
11
+ activesupport (= 3.1.1)
12
+ builder (~> 3.0.0)
13
+ i18n (~> 0.6)
14
+ activerecord (3.1.1)
15
+ activemodel (= 3.1.1)
16
+ activesupport (= 3.1.1)
17
+ arel (~> 2.2.1)
18
+ tzinfo (~> 0.3.29)
19
+ activesupport (3.1.1)
20
+ multi_json (~> 1.0)
21
+ arel (2.2.1)
22
+ builder (3.0.4)
23
+ chunky_png (1.3.4)
24
+ docsplit (0.7.6)
25
+ gettext (3.0.0)
26
+ locale (>= 2.0.5)
27
+ text
28
+ helper_classes (0.2.1)
29
+ i18n (0.6.0)
30
+ iconv (1.0.3)
31
+ json (1.8.2)
32
+ locale (2.0.8)
33
+ multi_json (1.0.3)
34
+ net-ldap (0.5.1)
35
+ parseconfig (0.5.2)
36
+ pdf-core (0.5.1)
37
+ prawn (2.0.1)
38
+ pdf-core (~> 0.5.1)
39
+ ttfunk (~> 1.4.0)
40
+ qooxview (2.0.0.pre.pre1)
41
+ activemodel (= 3.1.1)
42
+ activerecord (= 3.1.1)
43
+ activesupport (= 3.1.1)
44
+ arel (= 2.2.1)
45
+ chunky_png (= 1.3.4)
46
+ docsplit (= 0.7.6)
47
+ gettext (= 3.0.0)
48
+ helper_classes (= 0.2.1)
49
+ i18n (= 0.6.0)
50
+ iconv (= 1.0.3)
51
+ json (= 1.8.2)
52
+ locale (= 2.0.8)
53
+ multi_json (= 1.0.3)
54
+ net-ldap (= 0.5.1)
55
+ parseconfig (= 0.5.2)
56
+ pdf-core (= 0.5.1)
57
+ prawn (= 2.0.1)
58
+ rqrcode (= 0.4.2)
59
+ rubyzip (= 1.1.7)
60
+ serialport (= 1.3.1)
61
+ text (= 1.2.3)
62
+ ttfunk (= 1.4.0)
63
+ rqrcode (0.4.2)
64
+ rubyzip (1.1.7)
65
+ serialport (1.3.1)
66
+ text (1.2.3)
67
+ ttfunk (1.4.0)
68
+ tzinfo (0.3.44)
69
+
70
+ PLATFORMS
71
+ ruby
72
+
73
+ DEPENDENCIES
74
+ africompta!
data/TODO ADDED
@@ -0,0 +1,31 @@
1
+ - Users
2
+ - some users can add accounts
3
+ - Add remote repositories
4
+ - sync movements to a remote repository
5
+
6
+ Think
7
+ * What to do about a movement that includes an account not available to
8
+ that user?
9
+
10
+ JOLI
11
+ * Edition des comptes en cliquant dedans
12
+
13
+ Performance:
14
+ /movement/list:
15
+ Before making it better
16
+ Sorting movements: 0.06-0.08
17
+ Writing accounts: 1.05-1.2
18
+ Preparing edit: 0.50-0.65
19
+ Sorting a year: 0.29-0.37
20
+ Movements: 1.60-1.65
21
+ Total: 3.6-3.8
22
+
23
+ Kicking Markaby out of loops:
24
+ Sorting movements: 0.04-0.07
25
+ Writing accounts: 0.25-0.50
26
+ Preparing edit: 0.30-0.50
27
+ Sorting a year: 0.30-0.32
28
+ Movements: 0.25-0.35
29
+ Total: 1.15-1.50
30
+
31
+ Improvement: Down to 30%-50%
@@ -0,0 +1,128 @@
1
+ require 'test/unit'
2
+
3
+ class TC_Account < Test::Unit::TestCase
4
+ def setup
5
+ dputs(1){ 'Setting up new data'
6
+ }
7
+ Entities.delete_all_data()
8
+
9
+ dputs(2){ 'Resetting SQLite'
10
+ }
11
+ SQLite.dbs_close_all
12
+ FileUtils.cp( 'db.testGestion', 'data/compta.db')
13
+ SQLite.dbs_open_load_migrate
14
+
15
+ dputs(2){ 'And searching for some accounts'
16
+ }
17
+ @root = Accounts.match_by_name('Root')
18
+ @cash = Accounts.match_by_name('Cash')
19
+ @lending = Accounts.match_by_name('Lending')
20
+ @income = Accounts.match_by_name('Income')
21
+ @outcome = Accounts.match_by_name('Outcome')
22
+ @local = Users.match_by_name( 'local' )
23
+
24
+ @user_1 = Users.create( 'user1', '', 'pass')
25
+ @user_2 = Users.create( 'user2', '', 'pass')
26
+ end
27
+
28
+ def teardown
29
+ end
30
+
31
+ def test_path
32
+ assert_equal 'Root::Cash', @cash.path
33
+ end
34
+
35
+ def test_del_account
36
+ AccountRoot.accounts.each{|a|
37
+ dputs(1){"Found root-account #{a.inspect}"}
38
+ a.get_tree{|t|
39
+ dputs(1){
40
+ "#{t.path} - #{t.deleted.inspect}"
41
+ }
42
+ }
43
+ }
44
+ assert_equal false, @root.delete, @root.inspect
45
+ assert_equal false, @income.delete
46
+ old_index = @lending.rev_index
47
+ assert_equal true, @lending.delete
48
+ assert_operator old_index, :<, @lending.rev_index
49
+
50
+ Accounts.create_path('Root::Cash::Foo', '')
51
+ end
52
+
53
+ def test_account_root
54
+ Accounts.create_path('Root::Archive')
55
+ assert_equal nil, AccountRoot.archive
56
+
57
+ Accounts.create_path('Archive')
58
+ assert_not_equal nil, AccountRoot.archive
59
+ end
60
+
61
+ def test_clean
62
+ Accounts.create_path('Test')
63
+ Accounts.dump
64
+ count_mov, bad_mov, count_acc, bad_acc = AccountRoot.clean
65
+ assert_equal [ 4, 0, 19, 1 ],
66
+ [ count_mov, bad_mov, count_acc, bad_acc ]
67
+
68
+ Accounts.dump
69
+ count_mov, bad_mov, count_acc, bad_acc = AccountRoot.clean
70
+ assert_equal [ 4, 0, 19, 0 ],
71
+ [ count_mov, bad_mov, count_acc, bad_acc ]
72
+ end
73
+
74
+ def test_merge_two_users
75
+ @user_1.update_all
76
+ @u1 = {'user' => 'user1', 'pass' => 'pass'}
77
+ @user_2.update_all
78
+ @u2 = {'user' => 'user2', 'pass' => 'pass'}
79
+
80
+ a_id = ACaccess.post( 'account_get_id', @u1.merge( 'account' => 'Root') )
81
+ assert_equal '1', a_id
82
+
83
+ assert_equal '', ACaccess.get('accounts_get/user1,pass')
84
+ assert_equal '', ACaccess.get('accounts_get/user2,pass')
85
+ end
86
+
87
+ def test_merge_account_delete
88
+ test_merge_two_users
89
+
90
+ @lending.delete
91
+ dputs(3){@lending.inspect}
92
+ ACaccess.post( 'account_put', @u1.merge( 'account' => @lending.to_s ) )
93
+ assert_equal '', ACaccess.get('accounts_get/user1,pass')
94
+ assert_equal @lending.to_s, ACaccess.get('accounts_get/user2,pass').chomp
95
+ end
96
+
97
+ def test_merge_account_change
98
+ test_merge_two_users
99
+
100
+ @lending.name = 'Lendings'
101
+ @lending.new_index
102
+ dputs(3){@lending.inspect}
103
+ ACaccess.post( 'account_put', @u1.merge( 'account' => @lending.to_s ) )
104
+ assert_equal '', ACaccess.get('accounts_get/user1,pass')
105
+ assert_equal @lending.to_s, ACaccess.get('accounts_get/user2,pass').chomp
106
+
107
+ assert_equal 1, @lending.account_id
108
+ end
109
+
110
+ def test_print_pdf
111
+ @root.print_pdf( 'test.pdf', true )
112
+ end
113
+
114
+ def test_get_archives
115
+ (2011..2014).each{|y|
116
+ Movements.create( '', Date.new(y), 1000, @income, @cash )
117
+ }
118
+ Movements.create( '', Date.new(2013, 3, 3), 1000, @outcome, @cash )
119
+ Accounts.archive( 1, 2014 )
120
+
121
+ assert_equal %w(Archive::2011::Income Archive::2012::Income Archive::2013::Income),
122
+ Accounts.get_by_path('Root::Income').get_archives.collect{|a|
123
+ a.path }.sort
124
+ assert_equal %w(Archive::2012::Outcome Archive::2013::Outcome),
125
+ Accounts.get_by_path('Root::Outcome').get_archives.collect{|a|
126
+ a.path }.sort
127
+ end
128
+ end