Class: Abank::Folha
Overview
acesso a folha calculo & base dados abank no bigquery
Constant Summary
Constants inherited from Big
Instance Attribute Summary collapse
-
#mvvls ⇒ String
readonly
Movimentos a inserir (values.mv).
-
#rowfc ⇒ Array
readonly
Row folha calculo em processamento.
Attributes inherited from Big
#bqnrs, #bqres, #ctpos, #mvpos, #opcao
Instance Method Summary collapse
-
#add_kys ⇒ Object
obtem chaves movimento (keysin.mv) para apagar.
-
#conta ⇒ Integer
Numero conta associado a folha calculo.
-
#ctc ⇒ String
Classificacao do movimento (null –> classificacao automatica).
-
#dvc ⇒ Date
Data valor corrigida.
-
#folha ⇒ Roo::Excelx
Folha calculo a processar.
-
#initialize(opcoes = {}) ⇒ Folha
constructor
acesso a folha calculo & base dados abank no bigquery.
-
#linha_base ⇒ String
Texto base formatado para display.
-
#linha_existe ⇒ String
Texto linha existente formatada para display.
-
#linha_existe? ⇒ Boolean
Linha folha calculo existe no bigquery?.
-
#linha_multiplas ⇒ String
Texto linha existencia multipla formatada para display.
-
#linha_naoexiste? ⇒ Boolean
Linha folha calculo nao existe no bigquery?.
-
#linha_simila? ⇒ Boolean
Linha folha calculo existe parecida no bigquery?.
-
#linha_similar ⇒ String
Texto linha similar formatada para display.
-
#mv_insert ⇒ Big
insere & classifica movimentos no bigquery.
-
#ok?(linha) ⇒ Boolean
Linha com valores para processar?.
-
#processa_linha ⇒ String
Texto informativo formatado da linha processada.
-
#processa_xls ⇒ Object
carrega/mostra folha calculo.
-
#sql_existe_mv ⇒ String
Sql para movimentos no bigquery.
- #tpc ⇒ String
-
#values_mv ⇒ String
obtem movimento (values.mv) para inserir.
Methods inherited from Big
#ano, #bqapi, #cnt, #ct_apaga, #ct_cria, #ct_dados, #ct_existe?, #ct_rendas, #ctlct, #dias, #dml, #job, #ky_mv, #mv_classifica, #mv_delete, #mv_delete_dml, #mvkys, #re_apaga, #re_atual, #re_atual_mv, #re_atualiza, #re_delete_dml, #re_insert, #re_nova_renda, #re_proximos_dados, #re_rendas, #re_saldo_mv?, #sql, #sql_contrato_mv, #sql_last_re, #sql_novo_mv, #str_lc
Constructor Details
#initialize(opcoes = {}) ⇒ Folha
acesso a folha calculo & base dados abank no bigquery
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/abank/folha1.rb', line 26 def initialize(opcoes = {}) @opcao = super @opcao[:s] = opcoes.fetch(:s, false) @opcao[:e] = opcoes.fetch(:e, false) @opcao[:i] = opcoes.fetch(:i, false) @opcao[:v] = opcoes.fetch(:v, '') @opcao[:g] = opcoes.fetch(:g, '') # acumuladores necessitam init @opcao[:k] = '' @mvvls = '' end |
Instance Attribute Details
#mvvls ⇒ String (readonly)
Returns movimentos a inserir (values.mv).
15 16 17 |
# File 'lib/abank/folha1.rb', line 15 def mvvls @mvvls end |
#rowfc ⇒ Array (readonly)
Returns row folha calculo em processamento.
12 13 14 |
# File 'lib/abank/folha1.rb', line 12 def rowfc @rowfc end |
Instance Method Details
#add_kys ⇒ Object
obtem chaves movimento (keysin.mv) para apagar
44 45 46 |
# File 'lib/abank/folha2.rb', line 44 def add_kys bqres.each { |row| opcao[:k] += ",#{row[:ky]}" } end |
#conta ⇒ Integer
Returns numero conta associado a folha calculo.
59 60 61 |
# File 'lib/abank/folha1.rb', line 59 def conta opcao[:f].match?(/card/i) ? 2 : 1 end |
#ctc ⇒ String
Returns classificacao do movimento (null –> classificacao automatica).
69 70 71 72 |
# File 'lib/abank/folha2.rb', line 69 def ctc cmv = opcao[:g] cmv.empty? ? 'null' : "'#{cmv}'" end |
#dvc ⇒ Date
Returns data valor corrigida.
63 64 65 66 |
# File 'lib/abank/folha2.rb', line 63 def dvc dvl = opcao[:v] dvl.empty? ? rowfc[1] : Date.parse(dvl) end |
#folha ⇒ Roo::Excelx
Returns folha calculo a processar.
39 40 41 |
# File 'lib/abank/folha1.rb', line 39 def folha @folha ||= Roo::Spreadsheet.open(opcao[:f]) end |
#linha_base ⇒ String
Returns texto base formatado para display.
22 23 24 |
# File 'lib/abank/folha2.rb', line 22 def linha_base "#{rowfc[0].strftime(DF)} #{format('%<v3>-34.34s %<v4>8.2f', v3: rowfc[2], v4: rowfc[3])}" end |
#linha_existe ⇒ String
Returns texto linha existente formatada para display.
27 28 29 30 |
# File 'lib/abank/folha2.rb', line 27 def linha_existe add_kys if opcao[:e] "#{linha_base} EXIS #{format('%<v1>20d', v1: bqres.first[:ky])}" end |
#linha_existe? ⇒ Boolean
Returns linha folha calculo existe no bigquery?.
12 13 14 |
# File 'lib/abank/folha2.rb', line 12 def linha_existe? bqres.count == 1 && bqres.first[:ds].strip == rowfc[2] end |
#linha_multiplas ⇒ String
Returns texto linha existencia multipla formatada para display.
39 40 41 |
# File 'lib/abank/folha2.rb', line 39 def linha_multiplas "#{linha_base} MULT(#{bqres.count})" end |
#linha_naoexiste? ⇒ Boolean
Returns linha folha calculo nao existe no bigquery?.
7 8 9 |
# File 'lib/abank/folha2.rb', line 7 def linha_naoexiste? bqres.empty? end |
#linha_simila? ⇒ Boolean
Returns linha folha calculo existe parecida no bigquery?.
17 18 19 |
# File 'lib/abank/folha2.rb', line 17 def linha_simila? bqres.count == 1 && bqres.first[:ds].strip != rowfc[2] end |
#linha_similar ⇒ String
Returns texto linha similar formatada para display.
33 34 35 36 |
# File 'lib/abank/folha2.rb', line 33 def linha_similar add_kys if opcao[:s] "#{linha_base} SIMI #{format('%<v1>-20.20s', v1: bqres.first[:ds].strip)}" end |
#mv_insert ⇒ Big
insere & classifica movimentos no bigquery
92 93 94 95 96 97 98 99 100 |
# File 'lib/abank/folha1.rb', line 92 def mv_insert unless mvvls.empty? @mvvls = mvvls[1..] if mvvls[0] == ',' dml("insert #{BD}.mv VALUES#{mvvls}") puts("MOVIMENTOS INSERIDOS #{bqnrs}") mv_classifica if bqnrs.positive? end self end |
#ok?(linha) ⇒ Boolean
Returns linha com valores para processar?.
65 66 67 68 69 70 71 72 |
# File 'lib/abank/folha1.rb', line 65 def ok?(linha) @rowfc = linha.values return false if rowfc[0].is_a?(String) rowfc[2] = rowfc[2].strip rowfc[3] = -1 * rowfc[3] if conta > 1 true end |
#processa_linha ⇒ String
Returns texto informativo formatado da linha processada.
75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/abank/folha1.rb', line 75 def processa_linha # pesquisa existencia linha folha calculo no bigquery # array.count = 0 ==> pode carregar esta linha # array.count = 1 ==> mais testes necessarios # array.count > 1 ==> nao pode carregar esta linha sql(sql_existe_mv, [{}, {}]) if linha_naoexiste? then linha_base + values_mv elsif linha_existe? then linha_existe elsif linha_simila? then linha_similar else linha_multiplas end end |
#processa_xls ⇒ Object
carrega/mostra folha calculo
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/abank/folha1.rb', line 44 def processa_xls puts("\n#{folha.info}") folha.sheet(0).parse(header_search: ['Data Lanc.', 'Data Valor', 'Descrição', 'Valor']) do |row| puts(processa_linha) if ok?(row) end return unless opcao[:i] # processa movimentos & atualiza rendas mv_delete.mv_insert.ct_dados.re_insert end |
#sql_existe_mv ⇒ String
Returns sql para movimentos no bigquery.
49 50 51 |
# File 'lib/abank/folha2.rb', line 49 def sql_existe_mv "select *,#{ky_mv} as ky from #{BD}.mv where nc=#{conta} and dl='#{rowfc[0].strftime(DF)}' and vl=#{rowfc[3]}" end |
#tpc ⇒ String
75 76 77 |
# File 'lib/abank/folha2.rb', line 75 def tpc rowfc[3].positive? ? 'c' : 'd' end |