kinabo 0.1.0 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 270adf1f209a76b7bc474e7b06b8267b02e08c36
4
- data.tar.gz: 46e379f2082fd83d20bfb33e2de411846650da4e
3
+ metadata.gz: ff3fdceddfc8ec976d52be2281dd132e77c2ade0
4
+ data.tar.gz: 05e68d628c28cba67f8bfc3bc24cf091385b39e7
5
5
  SHA512:
6
- metadata.gz: 76adb5193161a12ca484c2e40938ed3dbc63ee302eab210a893f9514808bdc5d9b9f8c9cac5551909bd70a4923f05c0986ae9ee47cb24d02728076f20a4b6605
7
- data.tar.gz: 3047c53418995a06004116051f5be04a3a1276d1ff5103b5ba4dcc11c445c01c56e28989366dd632801b0b4d8ddcc69711e81c71c6d9694c28ca8eabbda7490b
6
+ metadata.gz: 3da858382b078ac39ad30e8269662597f9fe304852d5a795e2436a49785716b6ccb178c7332fccf570ac0e9548d5187ca71f1dcfc631c5faad6f9f15c16e6321
7
+ data.tar.gz: fffb9f458e41ee7c3b0c2a4ebffa0aa6aa314203137be1882e44883763c3f40ac795a342ddd380717610e2e29fa2c421696983f7cf85bbd20a33c005caf7b5ae
data/config/kinabo.yml CHANGED
@@ -2,7 +2,7 @@ test:
2
2
  bradesco:
3
3
  carteira: 09
4
4
  nome_empresa: FIDC TESTE
5
- numero_empresa: 4359923
5
+ convenio: 4359923
6
6
  conta_corrente: 0147792-2
7
7
  agencia: 00289
8
8
 
@@ -10,6 +10,6 @@ development:
10
10
  bradesco:
11
11
  carteira: 09
12
12
  nome_empresa: FIDC TESTE
13
- numero_empresa: 4359923
13
+ convenio: 4359923
14
14
  conta_corrente: 0147792-2
15
15
  agencia: 00289
@@ -4,7 +4,7 @@ module Kinabo
4
4
  class Header < Hashie::Dash
5
5
  include Kinabo::Utils
6
6
 
7
- property :codigo_empresa, required: true, default: Kinabo.config.bradesco&.dig(:numero_empresa)
7
+ property :codigo_empresa, required: true, default: Kinabo.config.bradesco&.dig(:convenio)
8
8
  property :nome_empresa, required: true, default: Kinabo.config.bradesco&.dig(:nome_empresa)
9
9
  property :data_gravacao, required: true
10
10
  property :sequencial, required: true
@@ -1,6 +1,8 @@
1
1
  module Kinabo
2
2
  module Bradesco
3
3
  class Retorno
4
+ include Kinabo::Utils
5
+
4
6
  def initialize(path)
5
7
  @path = path
6
8
  end
@@ -13,20 +15,20 @@ module Kinabo
13
15
  header_line = lines.first
14
16
 
15
17
  {
16
- id_registro: pos(header_line, '1-1'),
17
- id_arquivo_retorno: pos(header_line, '2-2'),
18
- literal_retorno: pos(header_line, '3-9'),
19
- codigo_servico: pos(header_line, '10-11'),
20
- literal_servico: pos(header_line, '12-26'),
21
- codigo_empresa: pos(header_line, '27-46'),
22
- nome_empresa: pos(header_line, '47-76'),
23
- numero_bradesco_c3: pos(header_line, '77-79'),
24
- nome_banco: pos(header_line, '80-94'),
25
- data_gravacao_arquivo: pos(header_line, '95-100'),
26
- densidade_gravacao: pos(header_line, '101-108'),
27
- numero_aviso_bancario: pos(header_line, '109-113'),
28
- data_credito: pos(header_line, '380-385'),
29
- numero_sequencial: pos(header_line, '395-400')
18
+ id_registro: parse_number(pos(header_line, '1-1')),
19
+ id_arquivo_retorno: parse_number(pos(header_line, '2-2')),
20
+ literal_retorno: parse_string(pos(header_line, '3-9')),
21
+ codigo_servico: parse_number(pos(header_line, '10-11')),
22
+ literal_servico: parse_string(pos(header_line, '12-26')),
23
+ codigo_empresa: parse_number(pos(header_line, '27-46')),
24
+ nome_empresa: parse_string(pos(header_line, '47-76')),
25
+ numero_bradesco_c3: parse_number(pos(header_line, '77-79')),
26
+ nome_banco: parse_string(pos(header_line, '80-94')),
27
+ data_gravacao_arquivo: parse_date(pos(header_line, '95-100')),
28
+ densidade_gravacao: parse_number(pos(header_line, '101-108')),
29
+ numero_aviso_bancario: parse_number(pos(header_line, '109-113')),
30
+ data_credito: parse_date(pos(header_line, '380-385')),
31
+ numero_sequencial: parse_number(pos(header_line, '395-400'))
30
32
  }
31
33
  end
32
34
 
@@ -49,39 +51,39 @@ module Kinabo
49
51
 
50
52
  entries_lines.map do |entry_line|
51
53
  {
52
- id_registro: pos(entry_line, '1-1'),
53
- tipo_empresa: pos(entry_line, '2-3'),
54
- numero_empresa: pos(entry_line, '4-17'),
55
- id_empresa: pos(entry_line, '21-37'),
56
- numero_controle: pos(entry_line, '38-62'),
57
- id_titulo: pos(entry_line, '71-82'),
54
+ id_registro: parse_number(pos(entry_line, '1-1')),
55
+ tipo_empresa: parse_number(pos(entry_line, '2-3')),
56
+ numero_empresa: parse_number(pos(entry_line, '4-17')),
57
+ id_empresa: parse_number(pos(entry_line, '21-37')),
58
+ numero_controle: parse_number(pos(entry_line, '38-62')),
59
+ nosso_numero: pos(entry_line, '71-82'),
58
60
  indicador_rateio: pos(entry_line, '105-105'),
59
- carteira: pos(entry_line, '108-108'),
60
- id_ocorrencia: pos(entry_line, '109-110'),
61
- data_ocorrencia: pos(entry_line, '111-116'),
62
- numero_documento: pos(entry_line, '117-126'),
63
- data_vencimento: pos(entry_line, '147-152'),
64
- valor: pos(entry_line, '153-165'),
65
- banco_cobrador: pos(entry_line, '166-168'),
66
- agencia_cobradora: pos(entry_line, '169-173'),
67
- especie_titulo: pos(entry_line, '174-175'),
68
- despesas_cobranca: pos(entry_line, '176-188'),
69
- outras_despesas: pos(entry_line, '189-201'),
70
- juros_operacao: pos(entry_line, '202-214'),
71
- iof: pos(entry_line, '215-227'),
72
- abatimento: pos(entry_line, '228-240'),
73
- desconto: pos(entry_line, '241-253'),
74
- valor_pago: pos(entry_line, '254-266'),
75
- juros_mora: pos(entry_line, '267-279'),
76
- outros_creditos: pos(entry_line, '280-292'),
77
- motivo_ocorrencia: pos(entry_line, '295-295'),
78
- data_credito: pos(entry_line, '296-301'),
79
- origem_pagamento: pos(entry_line, '302-304'),
80
- cheque_bradesco: pos(entry_line, '315-318'),
81
- motivo_rejeicao: pos(entry_line, '319-328'),
82
- numero_cartorio: pos(entry_line, '369-370'),
83
- numero_protocolo: pos(entry_line, '371-380'),
84
- numero_sequencial: pos(entry_line, '395-400')
61
+ carteira: parse_number(pos(entry_line, '108-108')),
62
+ id_ocorrencia: parse_number(pos(entry_line, '109-110')),
63
+ data_ocorrencia: parse_date(pos(entry_line, '111-116')),
64
+ numero_documento: parse_string(pos(entry_line, '117-126')),
65
+ data_vencimento: parse_date(pos(entry_line, '147-152')),
66
+ valor: parse_decimal(pos(entry_line, '153-165')),
67
+ banco_cobrador: parse_number(pos(entry_line, '166-168')),
68
+ agencia_cobradora: parse_number(pos(entry_line, '169-173')),
69
+ especie_titulo: parse_string(pos(entry_line, '174-175')),
70
+ despesas_cobranca: parse_decimal(pos(entry_line, '176-188')),
71
+ outras_despesas: parse_decimal(pos(entry_line, '189-201')),
72
+ juros_operacao: parse_decimal(pos(entry_line, '202-214')),
73
+ iof: parse_decimal(pos(entry_line, '215-227')),
74
+ abatimento: parse_decimal(pos(entry_line, '228-240')),
75
+ desconto: parse_decimal(pos(entry_line, '241-253')),
76
+ valor_pago: parse_decimal(pos(entry_line, '254-266')),
77
+ juros_mora: parse_decimal(pos(entry_line, '267-279')),
78
+ outros_creditos: parse_decimal(pos(entry_line, '280-292')),
79
+ motivo_ocorrencia: parse_string(pos(entry_line, '295-295')),
80
+ data_credito: parse_date(pos(entry_line, '296-301')),
81
+ origem_pagamento: parse_number(pos(entry_line, '302-304')),
82
+ cheque_bradesco: parse_number(pos(entry_line, '315-318')),
83
+ motivo_rejeicao: parse_string(pos(entry_line, '319-328')),
84
+ numero_cartorio: parse_number(pos(entry_line, '369-370')),
85
+ numero_protocolo: parse_string(pos(entry_line, '371-380')),
86
+ numero_sequencial: parse_number(pos(entry_line, '395-400'))
85
87
  }
86
88
  end
87
89
  end
data/lib/kinabo/utils.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'date'
2
+
1
3
  module Kinabo
2
4
  module Utils
3
5
  def justify_string(string, length)
@@ -12,6 +14,24 @@ module Kinabo
12
14
  ("%.#{decimal_places}f" % (value || 0)).gsub(/[.,]/, '').rjust(length, '0')
13
15
  end
14
16
 
17
+ def parse_decimal(string)
18
+ string.to_f / 100.0
19
+ end
20
+
21
+ def parse_date(string)
22
+ return nil if string.to_i.zero?
23
+
24
+ DateTime.strptime(string, "%d%m%y")
25
+ end
26
+
27
+ def parse_string(string)
28
+ string.strip
29
+ end
30
+
31
+ def parse_number(string)
32
+ string.to_i
33
+ end
34
+
15
35
  def fill_sequencial(lines)
16
36
  lines.map.with_index(1) { |line, index| line + justify_number(index, 6) }.join("\r\n") + "\r\n"
17
37
  end
@@ -1,3 +1,3 @@
1
1
  module Kinabo
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/kinabo.rb CHANGED
@@ -8,7 +8,12 @@ module Kinabo
8
8
  end
9
9
  end
10
10
 
11
- require 'hashie'
11
+ # work around logger spam from hashie
12
+ # https://github.com/intridea/hashie/issues/394
13
+ require "hashie"
14
+ require "hashie/logger"
15
+ Hashie.logger = Logger.new(nil)
16
+
12
17
  require "kinabo/version"
13
18
  require 'kinabo/utils'
14
19
  require 'kinabo/configuration'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kinabo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noverde Team
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-02-16 00:00:00.000000000 Z
12
+ date: 2017-03-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hashie