kinabo 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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