abank 0.2.7 → 0.2.9
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 +4 -4
- data/.rubocop.yml +7 -22
- data/Gemfile.lock +11 -11
- data/lib/abank.rb +7 -6
- data/lib/abank/big.rb +19 -20
- data/lib/abank/contrato.rb +11 -11
- data/lib/abank/folha.rb +8 -8
- data/lib/abank/rendas.rb +4 -4
- data/lib/abank/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 36171477026334dbce5da50183c84e693047db8fb387c1306308f254590793fc
|
|
4
|
+
data.tar.gz: da568eeb037c6deb414981abed805596ae1034f94eee103948bfdec5da958734
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a9fbda092cf84a6ee8a2552fbd0ff363d482fd599a243d263d03374978e6ab819cfcd270dc3d0c67456c4b54ddcc126d161e45180888a38922d1a4d468dbfe35
|
|
7
|
+
data.tar.gz: 69365abb9979d7ca48369451c8496708cee0d15a3f4a0ef73521daa608c0c9c94a67ce2e5a00c4f2656c40ed4b1386d3224ea26b2094a6879bb87f03b6a14b1f
|
data/.rubocop.yml
CHANGED
|
@@ -1,30 +1,15 @@
|
|
|
1
1
|
AllCops:
|
|
2
|
-
TargetRubyVersion: 2.
|
|
2
|
+
TargetRubyVersion: 2.7
|
|
3
3
|
EnabledByDefault: true
|
|
4
4
|
|
|
5
5
|
Style/Copyright:
|
|
6
|
-
|
|
6
|
+
Enabled: false
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Style/MethodCallWithArgsParentheses:
|
|
12
|
-
Enabled: false
|
|
8
|
+
Lint/ConstantResolution:
|
|
9
|
+
Enabled: false
|
|
13
10
|
|
|
14
11
|
Style/ConstantVisibility:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Layout/MultilineMethodArgumentLineBreaks:
|
|
18
|
-
Enabled: false
|
|
19
|
-
|
|
20
|
-
Layout/MultilineHashKeyLineBreaks:
|
|
21
|
-
Enabled: false
|
|
22
|
-
|
|
23
|
-
Layout/FirstMethodParameterLineBreak:
|
|
24
|
-
Enabled: false
|
|
25
|
-
|
|
26
|
-
Layout/FirstHashElementLineBreak:
|
|
27
|
-
Enabled: false
|
|
12
|
+
Enabled: false
|
|
28
13
|
|
|
29
|
-
Style/
|
|
30
|
-
|
|
14
|
+
Style/EmptyElse:
|
|
15
|
+
EnforcedStyle: nil
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
abank (0.2.
|
|
4
|
+
abank (0.2.9)
|
|
5
5
|
google-cloud-bigquery
|
|
6
6
|
roo
|
|
7
7
|
thor
|
|
@@ -12,12 +12,12 @@ GEM
|
|
|
12
12
|
specs:
|
|
13
13
|
addressable (2.7.0)
|
|
14
14
|
public_suffix (>= 2.0.2, < 5.0)
|
|
15
|
-
concurrent-ruby (1.1.
|
|
16
|
-
declarative (0.0.
|
|
15
|
+
concurrent-ruby (1.1.7)
|
|
16
|
+
declarative (0.0.20)
|
|
17
17
|
declarative-option (0.1.0)
|
|
18
18
|
faraday (1.0.1)
|
|
19
19
|
multipart-post (>= 1.2, < 3)
|
|
20
|
-
google-api-client (0.
|
|
20
|
+
google-api-client (0.43.0)
|
|
21
21
|
addressable (~> 2.5, >= 2.5.1)
|
|
22
22
|
googleauth (~> 0.9)
|
|
23
23
|
httpclient (>= 2.8.1, < 3.0)
|
|
@@ -25,7 +25,7 @@ GEM
|
|
|
25
25
|
representable (~> 3.0)
|
|
26
26
|
retriable (>= 2.0, < 4.0)
|
|
27
27
|
signet (~> 0.12)
|
|
28
|
-
google-cloud-bigquery (1.21.
|
|
28
|
+
google-cloud-bigquery (1.21.2)
|
|
29
29
|
concurrent-ruby (~> 1.0)
|
|
30
30
|
google-api-client (~> 0.33)
|
|
31
31
|
google-cloud-core (~> 1.2)
|
|
@@ -34,10 +34,10 @@ GEM
|
|
|
34
34
|
google-cloud-core (1.5.0)
|
|
35
35
|
google-cloud-env (~> 1.0)
|
|
36
36
|
google-cloud-errors (~> 1.0)
|
|
37
|
-
google-cloud-env (1.3.
|
|
37
|
+
google-cloud-env (1.3.3)
|
|
38
38
|
faraday (>= 0.17.3, < 2.0)
|
|
39
39
|
google-cloud-errors (1.0.1)
|
|
40
|
-
googleauth (0.
|
|
40
|
+
googleauth (0.13.1)
|
|
41
41
|
faraday (>= 0.17.3, < 2.0)
|
|
42
42
|
jwt (>= 1.4, < 3.0)
|
|
43
43
|
memoist (~> 0.16)
|
|
@@ -45,15 +45,15 @@ GEM
|
|
|
45
45
|
os (>= 0.9, < 2.0)
|
|
46
46
|
signet (~> 0.14)
|
|
47
47
|
httpclient (2.8.3)
|
|
48
|
-
jwt (2.2.
|
|
48
|
+
jwt (2.2.2)
|
|
49
49
|
memoist (0.16.2)
|
|
50
50
|
mini_mime (1.0.2)
|
|
51
51
|
mini_portile2 (2.4.0)
|
|
52
|
-
multi_json (1.
|
|
52
|
+
multi_json (1.15.0)
|
|
53
53
|
multipart-post (2.1.1)
|
|
54
|
-
nokogiri (1.10.
|
|
54
|
+
nokogiri (1.10.10)
|
|
55
55
|
mini_portile2 (~> 2.4.0)
|
|
56
|
-
os (1.1.
|
|
56
|
+
os (1.1.1)
|
|
57
57
|
public_suffix (4.0.5)
|
|
58
58
|
rake (12.3.3)
|
|
59
59
|
representable (3.0.4)
|
data/lib/abank.rb
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
8
|
-
require
|
|
3
|
+
require('thor')
|
|
4
|
+
require('abank/big')
|
|
5
|
+
require('abank/contrato')
|
|
6
|
+
require('abank/rendas')
|
|
7
|
+
require('abank/folha')
|
|
8
|
+
require('abank/version')
|
|
9
9
|
|
|
10
10
|
# @author Hernani Rodrigues Vaz
|
|
11
11
|
module Abank
|
|
12
12
|
DR = "/home/#{`whoami`.chomp}/Downloads"
|
|
13
|
+
BD = 'hernanilr.ab'
|
|
13
14
|
|
|
14
15
|
class Error < StandardError; end
|
|
15
16
|
|
data/lib/abank/big.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require('google/cloud/bigquery')
|
|
4
4
|
|
|
5
5
|
module Abank
|
|
6
6
|
# @see Big
|
|
@@ -42,16 +42,13 @@ module Abank
|
|
|
42
42
|
@mvvls = ''
|
|
43
43
|
@mvkys = opc.fetch(:k, '')
|
|
44
44
|
@ctide = opc.fetch(:c, '')
|
|
45
|
-
# p ['B', opcao]
|
|
46
45
|
opcao
|
|
47
46
|
end
|
|
48
47
|
|
|
49
48
|
# (see CLI#tag)
|
|
50
49
|
def mv_classifica
|
|
51
|
-
dml(
|
|
52
|
-
|
|
53
|
-
"where #{ky_mv}=tt.ky")
|
|
54
|
-
puts 'MOVIMENTOS CLASSIFICADOS ' + bqnrs.to_s
|
|
50
|
+
dml("update #{BD}.mv set mv.ct=tt.nct from (select * from #{BD}.cl) as tt where #{ky_mv}=tt.ky")
|
|
51
|
+
puts("MOVIMENTOS CLASSIFICADOS #{bqnrs}")
|
|
55
52
|
end
|
|
56
53
|
|
|
57
54
|
# apaga movimentos & suas rendas associadas no bigquery
|
|
@@ -61,7 +58,7 @@ module Abank
|
|
|
61
58
|
vars_mv_work
|
|
62
59
|
if mvkys.size.positive?
|
|
63
60
|
# obtem lista contratos arrendamento associados aos movimentos a apagar
|
|
64
|
-
@ctlct =
|
|
61
|
+
@ctlct = sql("select ct from #{BD}.mv where #{ky_mv} in(#{mvkys}) and substr(ct,1,1)='r' group by 1")
|
|
65
62
|
|
|
66
63
|
# apaga rendas associadas e depois movimentos
|
|
67
64
|
@opcao[:t] = true
|
|
@@ -69,6 +66,7 @@ module Abank
|
|
|
69
66
|
|
|
70
67
|
# para obrigar re_work a trabalhar com lista contratos (ctlct)
|
|
71
68
|
@bqnrs = 0
|
|
69
|
+
else
|
|
72
70
|
end
|
|
73
71
|
self
|
|
74
72
|
end
|
|
@@ -78,9 +76,10 @@ module Abank
|
|
|
78
76
|
# @return [Big] acesso a base dados abank no bigquery
|
|
79
77
|
def mv_insert
|
|
80
78
|
if mvvls.size.positive?
|
|
81
|
-
dml(
|
|
82
|
-
puts
|
|
79
|
+
dml("insert #{BD}.mv VALUES#{mvvls}")
|
|
80
|
+
puts("MOVIMENTOS INSERIDOS #{bqnrs}")
|
|
83
81
|
mv_classifica if bqnrs.positive?
|
|
82
|
+
else
|
|
84
83
|
end
|
|
85
84
|
self
|
|
86
85
|
end
|
|
@@ -95,8 +94,8 @@ module Abank
|
|
|
95
94
|
|
|
96
95
|
# apaga movimentos no bigquery
|
|
97
96
|
def mv_delete_dml
|
|
98
|
-
dml("delete from
|
|
99
|
-
puts
|
|
97
|
+
dml("delete from #{BD}.mv where #{ky_mv} in(#{mvkys})")
|
|
98
|
+
puts("MOVIMENTOS APAGADOS #{bqnrs}")
|
|
100
99
|
end
|
|
101
100
|
|
|
102
101
|
# @return [String] expressao sql da chave de movimentos
|
|
@@ -106,13 +105,13 @@ module Abank
|
|
|
106
105
|
|
|
107
106
|
# cria job bigquery & verifica execucao
|
|
108
107
|
#
|
|
109
|
-
# @param [String]
|
|
108
|
+
# @param [String] cmd comando a executar
|
|
110
109
|
# @return [Boolean] job ok?
|
|
111
|
-
def job?(
|
|
112
|
-
# p
|
|
113
|
-
@bqjob = bqapi.query_job(
|
|
110
|
+
def job?(cmd)
|
|
111
|
+
# p cmd
|
|
112
|
+
@bqjob = bqapi.query_job(cmd)
|
|
114
113
|
@bqjob.wait_until_done!
|
|
115
|
-
puts
|
|
114
|
+
puts(@bqjob.error['message']) if @bqjob.failed?
|
|
116
115
|
@bqjob.failed?
|
|
117
116
|
end
|
|
118
117
|
|
|
@@ -121,16 +120,16 @@ module Abank
|
|
|
121
120
|
# @param (see job?)
|
|
122
121
|
# @param [Array] erro quando da erro no bigquery
|
|
123
122
|
# @return [Google::Cloud::Bigquery::Data] resultado do sql
|
|
124
|
-
def
|
|
125
|
-
@bqres = job?(
|
|
123
|
+
def sql(cmd, erro = [])
|
|
124
|
+
@bqres = job?(cmd) ? erro : bqjob.data
|
|
126
125
|
end
|
|
127
126
|
|
|
128
127
|
# executa Data Manipulation Language (DML) no bigquery
|
|
129
128
|
#
|
|
130
129
|
# @param (see job?)
|
|
131
130
|
# @return [Integer] numero rows afetadas pelo dml
|
|
132
|
-
def dml(
|
|
133
|
-
@bqnrs = job?(
|
|
131
|
+
def dml(cmd)
|
|
132
|
+
@bqnrs = job?(cmd) ? 0 : bqjob.num_dml_affected_rows
|
|
134
133
|
end
|
|
135
134
|
end
|
|
136
135
|
end
|
data/lib/abank/contrato.rb
CHANGED
|
@@ -20,10 +20,10 @@ module Abank
|
|
|
20
20
|
def ct_cria
|
|
21
21
|
if existe_contrato?
|
|
22
22
|
@bqnrs = 1
|
|
23
|
-
puts
|
|
23
|
+
puts('CONTRATO JA EXISTE')
|
|
24
24
|
else
|
|
25
|
-
dml(
|
|
26
|
-
puts
|
|
25
|
+
dml("insert into #{BD}.re #{sql_contrato_mv}")
|
|
26
|
+
puts("CONTRATO #{ctide} " + (bqnrs.zero? ? 'NAO EXISTE' : 'INSERIDO'))
|
|
27
27
|
end
|
|
28
28
|
return unless existem_rendas?
|
|
29
29
|
|
|
@@ -52,8 +52,8 @@ module Abank
|
|
|
52
52
|
|
|
53
53
|
# apaga rendas da lista de contratos arrendamento
|
|
54
54
|
def lc_apaga
|
|
55
|
-
dml("delete from
|
|
56
|
-
puts
|
|
55
|
+
dml("delete from #{BD}.re where ct in(#{str_lc})#{opcao[:t] ? '' : ' and cnt>0'}")
|
|
56
|
+
puts("RENDAS #{str_lc('')} APAGADAS " + bqnrs.to_s)
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
# @return [String] texto formatado que representa lista de contratos arrendamento
|
|
@@ -68,8 +68,8 @@ module Abank
|
|
|
68
68
|
@ctlcm = []
|
|
69
69
|
ctlct.each do |c|
|
|
70
70
|
@ctide = c[:ct]
|
|
71
|
-
|
|
72
|
-
@ctlcm << bqres[0].merge({ mv:
|
|
71
|
+
sql(sql_last_re)
|
|
72
|
+
@ctlcm << bqres[0].merge({ mv: sql(sql_novo_mv(bqres[0][:dl])) })
|
|
73
73
|
end
|
|
74
74
|
self
|
|
75
75
|
end
|
|
@@ -82,25 +82,25 @@ module Abank
|
|
|
82
82
|
|
|
83
83
|
# @return [Boolean] contrato arrendamento ja existe sim/nao?
|
|
84
84
|
def existe_contrato?
|
|
85
|
-
|
|
85
|
+
sql("select ct from #{BD}.re where ct='#{ctide}' and cnt=0").count.positive?
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
# @return [String] sql para obter ultima renda do contrato arrendamento
|
|
89
89
|
def sql_last_re
|
|
90
90
|
'select ct,DATE_SUB(DATE_SUB(dl,INTERVAL dias DAY),INTERVAL IF(cnt=0,0,cnt-1) MONTH) as dc,ano,cnt,dl ' \
|
|
91
|
-
"from
|
|
91
|
+
"from #{BD}.re where ct='#{ctide}' order by ano desc,cnt desc limit 1"
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
# @return [String] sql para obter movimentos novos (depois da ultima renda do contrato arrendamento)
|
|
95
95
|
def sql_novo_mv(mdl)
|
|
96
|
-
"select dl,vl from
|
|
96
|
+
"select dl,vl from #{BD}.mv where ct='#{ctide}' and dl>='#{(mdl + 1).strftime(DF)}' order by dl,dv"
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
# @return [String] sql para obter dados do inicio contrato arrendamento
|
|
100
100
|
def sql_contrato_mv
|
|
101
101
|
if opcao[:d].size.zero?
|
|
102
102
|
'select ct,EXTRACT(YEAR FROM DATE_TRUNC(dl,MONTH)) as ano,0 as cnt,DATE_TRUNC(dl,MONTH) as dl,0 dias ' \
|
|
103
|
-
"from
|
|
103
|
+
"from #{BD}.mv where ct='#{ctide}' order by dl limit 1"
|
|
104
104
|
else
|
|
105
105
|
"select '#{ctide}' as ct,EXTRACT(YEAR FROM DATE '#{opcao[:d]}') as ano" \
|
|
106
106
|
",0 as cnt,DATE '#{opcao[:d]}' as dl,0 dias"
|
data/lib/abank/folha.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require('roo')
|
|
4
4
|
|
|
5
5
|
module Abank
|
|
6
6
|
# acesso a folha calculo & base dados abank no bigquery
|
|
@@ -42,7 +42,7 @@ module Abank
|
|
|
42
42
|
n = 0
|
|
43
43
|
folha.sheet(0).parse(header_search: ['Data Lanc.', 'Data Valor', 'Descrição', 'Valor']) do |r|
|
|
44
44
|
n += 1
|
|
45
|
-
puts n == 1 ? "\n
|
|
45
|
+
puts n == 1 ? "\n#{folha.info}" : processa_linha(r)
|
|
46
46
|
end
|
|
47
47
|
return unless opcao[:i]
|
|
48
48
|
|
|
@@ -60,7 +60,7 @@ module Abank
|
|
|
60
60
|
# array.count = 0 ==> pode carregar esta linha
|
|
61
61
|
# array.count = 1 ==> mais testes necessarios
|
|
62
62
|
# array.count > 1 ==> nao pode carregar esta linha
|
|
63
|
-
|
|
63
|
+
sql(sql_existe_mv, [{}, {}])
|
|
64
64
|
if linha_naoexiste? then linha_base + values_mv
|
|
65
65
|
elsif linha_existe? then linha_existe
|
|
66
66
|
elsif linha_simila? then linha_similar
|
|
@@ -85,18 +85,18 @@ module Abank
|
|
|
85
85
|
# @return [String] texto linha existente formatada para display
|
|
86
86
|
def linha_existe
|
|
87
87
|
add_kys if opcao[:e]
|
|
88
|
-
linha_base
|
|
88
|
+
"#{linha_base} EXIS #{format('%<v1>20d', v1: bqres.first[:ky])}"
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
# @return [String] texto linha similar formatada para display
|
|
92
92
|
def linha_similar
|
|
93
93
|
add_kys if opcao[:s]
|
|
94
|
-
linha_base
|
|
94
|
+
"#{linha_base} SIMI #{format('%<v1>-20.20s', v1: bqres.first[:ds].strip)}"
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
# @return [String] texto linha existencia multipla formatada para display
|
|
98
98
|
def linha_multiplas
|
|
99
|
-
linha_base
|
|
99
|
+
"#{linha_base} MULT(#{bqres.count})"
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
# obtem chaves movimento (keysin.mv) para apagar
|
|
@@ -121,7 +121,7 @@ module Abank
|
|
|
121
121
|
|
|
122
122
|
# @return [String] sql para movimentos no bigquery
|
|
123
123
|
def sql_existe_mv
|
|
124
|
-
"select *,#{ky_mv} as ky from
|
|
124
|
+
"select *,#{ky_mv} as ky from #{BD}.mv " \
|
|
125
125
|
"where nc=#{conta} and dl='#{rowfc[0].strftime(DF)}' and vl=#{rowfc[3]}"
|
|
126
126
|
end
|
|
127
127
|
|
|
@@ -145,7 +145,7 @@ module Abank
|
|
|
145
145
|
|
|
146
146
|
# @return [String] classificacao do movimento (null --> classificacao automatica)
|
|
147
147
|
def ctc
|
|
148
|
-
opcao[:g].size.zero? ? 'null' :
|
|
148
|
+
opcao[:g].size.zero? ? 'null' : "'#{opcao[:g]}'"
|
|
149
149
|
end
|
|
150
150
|
|
|
151
151
|
# @return [String] tipo movimento c[redito] ou d[ebito]
|
data/lib/abank/rendas.rb
CHANGED
|
@@ -27,7 +27,7 @@ module Abank
|
|
|
27
27
|
# (see CLI#recriare)
|
|
28
28
|
def re_atualiza
|
|
29
29
|
# obtem contratos ativos
|
|
30
|
-
@ctlct =
|
|
30
|
+
@ctlct = sql("SELECT ct from #{BD}.re group by 1")
|
|
31
31
|
|
|
32
32
|
# [re]cria rendas [novas|todas]
|
|
33
33
|
lr_apaga.cm_cria.vr_cria.re_insert
|
|
@@ -49,10 +49,10 @@ module Abank
|
|
|
49
49
|
# insere rendas no bigquery
|
|
50
50
|
def re_insert
|
|
51
51
|
if revls.size.zero?
|
|
52
|
-
puts
|
|
52
|
+
puts('NAO EXISTEM RENDAS NOVAS')
|
|
53
53
|
else
|
|
54
|
-
dml(
|
|
55
|
-
puts
|
|
54
|
+
dml("insert #{BD}.re VALUES#{revls}")
|
|
55
|
+
puts("RENDAS #{str_lc('')} CRIADAS " + bqnrs.to_s)
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
58
|
|
data/lib/abank/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: abank
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hernâni Rodrigues Vaz
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-08-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -143,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
143
143
|
- !ruby/object:Gem::Version
|
|
144
144
|
version: '0'
|
|
145
145
|
requirements: []
|
|
146
|
-
rubygems_version: 3.
|
|
146
|
+
rubygems_version: 3.1.2
|
|
147
147
|
signing_key:
|
|
148
148
|
specification_version: 4
|
|
149
149
|
summary: Arquiva movimentos conta-corrente, conta-cartao do activobank no bigquery.
|