cnab240 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +2 -2
  3. data/cnab240.gemspec +10 -12
  4. data/lib/cnab240.rb +108 -91
  5. data/lib/cnab240/arquivo/arquivo.rb +6 -9
  6. data/lib/cnab240/arquivo/builder.rb +111 -90
  7. data/lib/cnab240/arquivo/estrutura.rb +161 -99
  8. data/lib/cnab240/arquivo/v40/header.rb +27 -29
  9. data/lib/cnab240/arquivo/v40/trailer.rb +8 -10
  10. data/lib/cnab240/arquivo/v60/header.rb +38 -0
  11. data/lib/cnab240/arquivo/v60/trailer.rb +17 -0
  12. data/lib/cnab240/arquivo/v80/header.rb +23 -26
  13. data/lib/cnab240/arquivo/v80/trailer.rb +8 -9
  14. data/lib/cnab240/arquivo/v81/header.rb +37 -0
  15. data/lib/cnab240/arquivo/v81/trailer.rb +17 -0
  16. data/lib/cnab240/arquivo/v83/header.rb +25 -26
  17. data/lib/cnab240/arquivo/v83/trailer.rb +9 -9
  18. data/lib/cnab240/arquivo/v86/header.rb +25 -26
  19. data/lib/cnab240/arquivo/v86/trailer.rb +9 -10
  20. data/lib/cnab240/arquivo/v87/header.rb +25 -26
  21. data/lib/cnab240/arquivo/v87/trailer.rb +9 -10
  22. data/lib/cnab240/ext/attribute_accessors.rb +4 -4
  23. data/lib/cnab240/ext/bindata.rb +4 -4
  24. data/lib/cnab240/ext/default_mixin.rb +2 -4
  25. data/lib/cnab240/ext/filler.rb +1 -3
  26. data/lib/cnab240/ext/lstring.rb +9 -10
  27. data/lib/cnab240/ext/segmento_mixin.rb +1 -3
  28. data/lib/cnab240/helper/boleto_bancoob.rb +60 -0
  29. data/lib/cnab240/helper/helper.rb +1 -1
  30. data/lib/cnab240/helper/pagamento_bb.rb +7 -9
  31. data/lib/cnab240/helper/pagamento_bradesco.rb +6 -8
  32. data/lib/cnab240/helper/pagamento_itau.rb +6 -8
  33. data/lib/cnab240/helper/transferencia_citibank.rb +56 -0
  34. data/lib/cnab240/helper/{pagamento_sicoob.rb → transferencia_sicoob.rb} +8 -15
  35. data/lib/cnab240/{arquivo/lote.rb → lote.rb} +29 -14
  36. data/lib/cnab240/lote/v40/boletos/header.rb +46 -0
  37. data/lib/cnab240/lote/v40/boletos/trailer.rb +29 -0
  38. data/lib/cnab240/pagamentos/v40/header.rb +30 -32
  39. data/lib/cnab240/pagamentos/v40/trailer.rb +10 -11
  40. data/lib/cnab240/pagamentos/v60/header.rb +43 -0
  41. data/lib/cnab240/pagamentos/v60/trailer.rb +17 -0
  42. data/lib/cnab240/pagamentos/v80/header.rb +35 -37
  43. data/lib/cnab240/pagamentos/v80/trailer.rb +10 -11
  44. data/lib/cnab240/pagamentos/v83/header.rb +33 -35
  45. data/lib/cnab240/pagamentos/v83/trailer.rb +11 -12
  46. data/lib/cnab240/pagamentos/v86/header.rb +34 -36
  47. data/lib/cnab240/pagamentos/v86/titulos/header.rb +28 -30
  48. data/lib/cnab240/pagamentos/v86/titulos/trailer.rb +11 -12
  49. data/lib/cnab240/pagamentos/v86/trailer.rb +11 -12
  50. data/lib/cnab240/pagamentos/v86/tributos/header.rb +35 -37
  51. data/lib/cnab240/pagamentos/v86/tributos/trailer.rb +9 -10
  52. data/lib/cnab240/pagamentos/v87/header.rb +34 -36
  53. data/lib/cnab240/pagamentos/v87/titulos/header.rb +28 -30
  54. data/lib/cnab240/pagamentos/v87/titulos/trailer.rb +11 -12
  55. data/lib/cnab240/pagamentos/v87/trailer.rb +11 -12
  56. data/lib/cnab240/pagamentos/v87/tributos/header.rb +35 -37
  57. data/lib/cnab240/pagamentos/v87/tributos/trailer.rb +9 -10
  58. data/lib/cnab240/segmentos/v40/segmento_a.rb +40 -41
  59. data/lib/cnab240/segmentos/v60/segmento_a.rb +43 -0
  60. data/lib/cnab240/segmentos/v60/segmento_b.rb +38 -0
  61. data/lib/cnab240/segmentos/v60/segmento_j.rb +32 -0
  62. data/lib/cnab240/segmentos/v80/agencia_itau.rb +8 -9
  63. data/lib/cnab240/segmentos/v80/agencia_outros.rb +6 -7
  64. data/lib/cnab240/segmentos/v80/segmento_a.rb +30 -32
  65. data/lib/cnab240/segmentos/v81/segmento_p.rb +79 -0
  66. data/lib/cnab240/segmentos/v81/segmento_q.rb +36 -0
  67. data/lib/cnab240/segmentos/v81/segmento_r.rb +49 -0
  68. data/lib/cnab240/segmentos/v81/segmento_s.rb +37 -0
  69. data/lib/cnab240/segmentos/v83/segmento_a.rb +35 -36
  70. data/lib/cnab240/segmentos/v83/segmento_b.rb +33 -34
  71. data/lib/cnab240/segmentos/v83/segmento_j.rb +22 -23
  72. data/lib/cnab240/segmentos/v83/segmento_z.rb +10 -11
  73. data/lib/cnab240/segmentos/v86/segmento_a.rb +37 -38
  74. data/lib/cnab240/segmentos/v86/segmento_b.rb +33 -34
  75. data/lib/cnab240/segmentos/v86/segmento_c.rb +19 -20
  76. data/lib/cnab240/segmentos/v86/segmento_j.rb +22 -23
  77. data/lib/cnab240/segmentos/v86/segmento_j52.rb +19 -20
  78. data/lib/cnab240/segmentos/v86/segmento_n.rb +17 -18
  79. data/lib/cnab240/segmentos/v86/segmento_n1.rb +10 -11
  80. data/lib/cnab240/segmentos/v86/segmento_n2.rb +12 -13
  81. data/lib/cnab240/segmentos/v86/segmento_n3.rb +12 -13
  82. data/lib/cnab240/segmentos/v86/segmento_n4.rb +14 -15
  83. data/lib/cnab240/segmentos/v86/segmento_n5.rb +12 -13
  84. data/lib/cnab240/segmentos/v86/segmento_n6.rb +12 -13
  85. data/lib/cnab240/segmentos/v86/segmento_n7.rb +13 -14
  86. data/lib/cnab240/segmentos/v86/segmento_n8.rb +12 -14
  87. data/lib/cnab240/segmentos/v86/segmento_o.rb +17 -18
  88. data/lib/cnab240/segmentos/v86/segmento_w.rb +12 -13
  89. data/lib/cnab240/segmentos/v86/segmento_w1.rb +9 -10
  90. data/lib/cnab240/segmentos/v86/segmento_z.rb +10 -11
  91. data/lib/cnab240/segmentos/v87/segmento_a.rb +37 -38
  92. data/lib/cnab240/segmentos/v87/segmento_b.rb +33 -34
  93. data/lib/cnab240/segmentos/v87/segmento_c.rb +19 -20
  94. data/lib/cnab240/segmentos/v87/segmento_j.rb +22 -23
  95. data/lib/cnab240/segmentos/v87/segmento_j52.rb +19 -20
  96. data/lib/cnab240/segmentos/v87/segmento_n.rb +17 -18
  97. data/lib/cnab240/segmentos/v87/segmento_n1.rb +10 -11
  98. data/lib/cnab240/segmentos/v87/segmento_n2.rb +12 -13
  99. data/lib/cnab240/segmentos/v87/segmento_n3.rb +12 -13
  100. data/lib/cnab240/segmentos/v87/segmento_n4.rb +14 -15
  101. data/lib/cnab240/segmentos/v87/segmento_n5.rb +12 -13
  102. data/lib/cnab240/segmentos/v87/segmento_n6.rb +12 -13
  103. data/lib/cnab240/segmentos/v87/segmento_n7.rb +13 -14
  104. data/lib/cnab240/segmentos/v87/segmento_n8.rb +12 -14
  105. data/lib/cnab240/segmentos/v87/segmento_o.rb +17 -18
  106. data/lib/cnab240/segmentos/v87/segmento_w.rb +12 -13
  107. data/lib/cnab240/segmentos/v87/segmento_w1.rb +9 -10
  108. data/lib/cnab240/segmentos/v87/segmento_z.rb +10 -11
  109. data/lib/cnab240/version.rb +1 -1
  110. metadata +30 -40
@@ -1,15 +1,14 @@
1
1
  module Cnab240::V80
2
2
  class AgenciaItau < BinData::Record
3
-
4
3
  include Cnab240::DefaultMixin
5
4
  include Cnab240::SegmentoMixin
6
5
 
7
- lstring :zeros_1, :length => 1, :pad_byte => '0'
8
- lstring :favorecido_agencia, :length => 4, :pad_byte => '0'
9
- string :brancos_1, :length => 1, :pad_byte => ' '
10
- lstring :zeros_2, :length => 6, :pad_byte => '0'
11
- lstring :favorecido_conta, :length => 6, :pad_byte => '0'
12
- string :brancos_2, :length => 1, :pad_byte => ' '
13
- lstring :favorecido_agencia_conta_dv, :length => 1, :pad_byte => '0'
6
+ lstring :zeros_1, length: 1, pad_byte: '0'
7
+ lstring :favorecido_agencia, length: 4, pad_byte: '0'
8
+ string :brancos_1, length: 1, pad_byte: ' '
9
+ lstring :zeros_2, length: 6, pad_byte: '0'
10
+ lstring :favorecido_conta, length: 6, pad_byte: '0'
11
+ string :brancos_2, length: 1, pad_byte: ' '
12
+ lstring :favorecido_agencia_conta_dv, length: 1, pad_byte: '0'
14
13
  end
15
- end
14
+ end
@@ -1,13 +1,12 @@
1
1
  module Cnab240::V80
2
2
  class AgenciaOutros < BinData::Record
3
-
4
3
  include Cnab240::DefaultMixin
5
4
  include Cnab240::SegmentoMixin
6
5
 
7
- lstring :favorecido_agencia, :length => 5, :pad_byte => '0'
8
- string :brancos_1, :length => 1, :pad_byte => ' '
9
- lstring :favorecido_conta, :length => 12, :pad_byte => '0'
10
- string :agencia_conta_complemento, :length => 1, :pad_byte => ' '
11
- lstring :favorecido_agencia_conta_dv, :length => 1, :pad_byte => '0'
6
+ lstring :favorecido_agencia, length: 5, pad_byte: '0'
7
+ string :brancos_1, length: 1, pad_byte: ' '
8
+ lstring :favorecido_conta, length: 12, pad_byte: '0'
9
+ string :agencia_conta_complemento, length: 1, pad_byte: ' '
10
+ lstring :favorecido_agencia_conta_dv, length: 1, pad_byte: '0'
12
11
  end
13
- end
12
+ end
@@ -1,50 +1,49 @@
1
1
  module Cnab240::V80
2
2
  class SegmentoA < BinData::Record
3
-
4
3
  include Cnab240::DefaultMixin
5
4
  include Cnab240::SegmentoMixin
6
5
 
7
- lstring :controle_banco, :length => 3, :pad_byte => '0'
8
- lstring :controle_lote, :length => 4, :pad_byte => '0'
9
- string :controle_registro, :length => 1, :initial_value => '3', :pad_byte => '0'
6
+ lstring :controle_banco, length: 3, pad_byte: '0'
7
+ lstring :controle_lote, length: 4, pad_byte: '0'
8
+ string :controle_registro, length: 1, initial_value: '3', pad_byte: '0'
10
9
 
11
- lstring :servico_numero_registro, :length => 5, :pad_byte => '0'
12
- string :servico_codigo_segmento, :length => 1, :initial_value => 'A', :pad_byte => ' '
13
- lstring :servico_tipo_movimento, :length => 3, :pad_byte => '0'
14
- lstring :zeros_1, :length => 3, :pad_byte => '0'
10
+ lstring :servico_numero_registro, length: 5, pad_byte: '0'
11
+ string :servico_codigo_segmento, length: 1, initial_value: 'A', pad_byte: ' '
12
+ lstring :servico_tipo_movimento, length: 3, pad_byte: '0'
13
+ lstring :zeros_1, length: 3, pad_byte: '0'
15
14
 
16
- lstring :favorecido_banco, :length => 3, :pad_byte => '0'
15
+ lstring :favorecido_banco, length: 3, pad_byte: '0'
17
16
 
18
- choice :favorecido_agencia_conta, :selection => :get_favorecido_agencia_conta do
19
- string 0, :length => 20, :pad_byte => ' '
17
+ choice :favorecido_agencia_conta, selection: :get_favorecido_agencia_conta do
18
+ string 0, length: 20, pad_byte: ' '
20
19
  agencia_itau 1
21
20
  agencia_outros 2
22
21
  end
23
22
 
24
- string :favorecido_nome, :length => 30, :pad_byte => ' '
25
- string :credito_seu_numero, :length => 20, :pad_byte => ' '
26
- lstring :credito_data_pagamento, :length => 8, :pad_byte => '0'
23
+ string :favorecido_nome, length: 30, pad_byte: ' '
24
+ string :credito_seu_numero, length: 20, pad_byte: ' '
25
+ lstring :credito_data_pagamento, length: 8, pad_byte: '0'
27
26
 
28
- string :credito_moeda_tipo, :length => 3, :pad_byte => ' '
27
+ string :credito_moeda_tipo, length: 3, pad_byte: ' '
29
28
 
30
- lstring :zeros_2, :length => 15, :pad_byte => '0'
31
- lstring :credito_valor_pagamento, :length => 15, :pad_byte => '0'
32
- string :credito_nosso_numero, :length => 15, :pad_byte => ' '
33
- string :brancos_1, :length => 5, :pad_byte => ' '
29
+ lstring :zeros_2, length: 15, pad_byte: '0'
30
+ lstring :credito_valor_pagamento, length: 15, pad_byte: '0'
31
+ string :credito_nosso_numero, length: 15, pad_byte: ' '
32
+ string :brancos_1, length: 5, pad_byte: ' '
34
33
 
35
- lstring :credito_data_real, :length => 8, :pad_byte => '0'
36
- lstring :credito_valor_real, :length => 15, :pad_byte => '0'
34
+ lstring :credito_data_real, length: 8, pad_byte: '0'
35
+ lstring :credito_valor_real, length: 15, pad_byte: '0'
37
36
 
38
- string :finalidade_detalhe, :length => 18, :pad_byte => ' '
39
- string :brancos_2, :length => 2, :pad_byte => ' '
37
+ string :finalidade_detalhe, length: 18, pad_byte: ' '
38
+ string :brancos_2, length: 2, pad_byte: ' '
40
39
 
41
- lstring :numero_documento, :length => 6, :pad_byte => '0'
42
- string :numero_inscricao, :length => 14, :pad_byte => ' '
43
- string :codigo_finalidade_complementar, :length => 2, :pad_byte => ' '
44
- string :finalidade_ted, :length => 5, :pad_byte => ' '
45
- string :brancos_3, :length => 5, :pad_byte => ' '
46
- lstring :aviso, :length => 1, :pad_byte => ' '
47
- string :ocorrencias, :length => 10, :pad_byte => ' '
40
+ lstring :numero_documento, length: 6, pad_byte: '0'
41
+ string :numero_inscricao, length: 14, pad_byte: ' '
42
+ string :codigo_finalidade_complementar, length: 2, pad_byte: ' '
43
+ string :finalidade_ted, length: 5, pad_byte: ' '
44
+ string :brancos_3, length: 5, pad_byte: ' '
45
+ lstring :aviso, length: 1, pad_byte: ' '
46
+ string :ocorrencias, length: 10, pad_byte: ' '
48
47
 
49
48
  def get_favorecido_agencia_conta
50
49
  case favorecido_banco
@@ -56,6 +55,5 @@ module Cnab240::V80
56
55
  return 2
57
56
  end
58
57
  end
59
-
60
58
  end
61
- end
59
+ end
@@ -0,0 +1,79 @@
1
+ module Cnab240
2
+ module V81
3
+ class SegmentoP < BinData::Record
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ lstring :controle_banco, length: 3, pad_byte: '0'
8
+ lstring :controle_lote, length: 4, pad_byte: '0'
9
+ string :controle_registro, length: 1, initial_value: '3', pad_byte: '0'
10
+
11
+ lstring :servico_numero_registro, length: 5, pad_byte: '0'
12
+ string :servico_codigo_segmento, length: 1, initial_value: 'P', pad_byte: ' '
13
+ lstring :servico_tipo_movimento, length: 1, pad_byte: ' '
14
+ lstring :servico_codigo_movimento, length: 2, pad_byte: '0'
15
+
16
+ lstring :beneficiario_agencia_codigo, length: 5, pad_byte: '0'
17
+ string :beneficiario_agencia_dv, length: 1, pad_byte: ' '
18
+ lstring :beneficiario_conta_numero, length: 12, pad_byte: '0'
19
+ string :beneficiario_conta_dv, length: 1, pad_byte: ' '
20
+ string :beneficiario_agencia_conta_dv, length: 1, pad_byte: ' '
21
+
22
+ # Nosso Número:
23
+ # - Se emissão a cargo do Sicoob: Brancos
24
+ # lstring :nosso_numero, length: 20, pad_byte: ' '
25
+
26
+ # - Se emissão a cargo do Cedente:
27
+ # NumTitulo - 10 posições (1 a 10)
28
+ # Parcela - 02 posições (11 a 12) - "01" se parcela única
29
+ # Modalidade - 02 posições (13 a 14) - vide planilha "Capa" deste arquivo
30
+ # Tipo Formulário - 01 posição (15 a 15):
31
+ # "1" -auto-copiativo
32
+ # "3" -auto-envelopável
33
+ # "4" -A4 sem envelopamento
34
+ # "6" -A4 sem envelopamento 3 vias
35
+ # Em branco - 05 posições (16 a 20)
36
+ lstring :nosso_numero, length: 10, pad_byte: '0'
37
+ lstring :parcela, length: 2, pad_byte: '0'
38
+ lstring :modalidade, length: 2, pad_byte: '0'
39
+ lstring :tipo_formulario, length: 1, pad_byte: '0'
40
+ lstring :brancos, length: 5, pad_byte: ' '
41
+
42
+ lstring :codigo_carteira, length: 1, pad_byte: '0'
43
+ lstring :forma_cadastro, length: 1, initial_value: '0', pad_byte: '0'
44
+ string :tipo_documento, length: 1, pad_byte: ' '
45
+ string :emissao_boleto, length: 1, initial_value: '2', pad_byte: '0' #'1'= Sicoob Emite, '2' = Cedente Emite
46
+ string :distribuicao_boleto, length: 1, initial_value: '2', pad_byte: '0' #'1' = Sicoob Distribui, '2' = Cedente Distribui
47
+ string :numero_documento, length: 15, pad_byte: ' '
48
+ lstring :data_vencimento, length: 8, pad_byte: '0'
49
+ lstring :valor, length: 15, pad_byte: '0'
50
+ lstring :agencia_cobradora, length: 5, pad_byte: '0'
51
+ string :agencia_cobradora_dv, length: 1, pad_byte: ' '
52
+ lstring :especie_titulo, length: 2, pad_byte: '0'
53
+ string :aceite, length: 1, initial_value: 'N' #'A' = Aceite, 'N' = Não Aceite
54
+ lstring :data_emissao, length: 8, pad_byte: '0'
55
+
56
+ lstring :juros_mora, length: 1, pad_byte: '0' #'1'= Valor por Dia, '2' = Taxa Mensal, '3' = Isento
57
+ lstring :data_juros_mora, length: 8, pad_byte: '0'
58
+ lstring :valor_juros_mora, length: 15, pad_byte: '0'
59
+
60
+ lstring :codigo_desconto_1, length: 1, pad_byte: '0' #'1'= Valor Fixo Até a Data Informada, '2'= Percentual Até a Data Informada
61
+ lstring :data_desconto_1, length: 8, pad_byte: '0'
62
+ lstring :valor_desconto_1, length: 15, pad_byte: '0'
63
+
64
+ lstring :valor_iof, length: 15, pad_byte: '0'
65
+ lstring :valor_abatimento, length: 15, pad_byte: '0'
66
+
67
+ lstring :identificacao_beneficiario, length: 25, pad_byte: ' '
68
+
69
+ lstring :codigo_protesto, length: 1, initial_value: '1', pad_byte: '0'
70
+ lstring :dias_protesto, length: 2, pad_byte: '0'
71
+ lstring :codigo_baixa, length: 1, initial_value: '0', pad_byte: '0'
72
+ lstring :dias_baixa, length: 3, pad_byte: ' '
73
+
74
+ lstring :moeda, length: 2, initial_value: '09', pad_byte: '0' #'02' = Dólar, '09' = Real
75
+ lstring :contrato_operacao_credito, length: 10, pad_byte: '0'
76
+ string :cnab_g004_1, length: 1, pad_byte: ' '
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,36 @@
1
+ module Cnab240
2
+ module V81
3
+ class SegmentoQ < BinData::Record
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ lstring :controle_banco, length: 3, pad_byte: '0'
8
+ lstring :controle_lote, length: 4, pad_byte: '0'
9
+ string :controle_registro, length: 1, initial_value: '3', pad_byte: '0'
10
+
11
+ lstring :servico_numero_registro, length: 5, pad_byte: '0'
12
+ string :servico_codigo_segmento, length: 1, initial_value: 'Q', pad_byte: ' '
13
+ lstring :servico_tipo_movimento, length: 1, pad_byte: ' '
14
+ lstring :servico_codigo_movimento, length: 2, pad_byte: '0'
15
+
16
+ lstring :pagador_inscricao_tipo, length: 1, pad_byte: '0' #'1'= CPF, '2'= CGC/CNPJ
17
+ lstring :pagador_inscricao_numero, length: 15, pad_byte: '0'
18
+ string :pagador_nome, length: 40, pad_byte: ' '
19
+ string :pagador_endereco_logradouro, length: 40, pad_byte: ' '
20
+ string :pagador_endereco_bairro, length: 15, pad_byte: ' '
21
+ lstring :pagador_endereco_cep, length: 5, pad_byte: '0'
22
+ string :pagador_endereco_cep_complemento, length: 3, pad_byte: '0'
23
+ string :pagador_endereco_cidade, length: 15, pad_byte: ' '
24
+ string :pagador_endereco_estado, length: 2, pad_byte: ' '
25
+
26
+ lstring :avalista_inscricao_tipo, length: 1, pad_byte: '0' #'1'= CPF, '2'= CGC/CNPJ
27
+ lstring :avalista_inscricao_numero, length: 15, pad_byte: '0'
28
+ string :avalista_nome, length: 40, pad_byte: ' '
29
+
30
+ string :banco_correspondente, length: 3, pad_byte: '0'
31
+ string :banco_correspondente_nosso_numero, length: 20, pad_byte: ' '
32
+
33
+ string :cnab_g004_1, length: 8, pad_byte: ' '
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,49 @@
1
+ module Cnab240
2
+ module V81
3
+ class SegmentoR < BinData::Record
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ lstring :controle_banco, length: 3, pad_byte: '0'
8
+ lstring :controle_lote, length: 4, pad_byte: '0'
9
+ string :controle_registro, length: 1, initial_value: '3', pad_byte: '0'
10
+
11
+ lstring :servico_numero_registro, length: 5, pad_byte: '0'
12
+ string :servico_codigo_segmento, length: 1, initial_value: 'R', pad_byte: ' '
13
+ lstring :servico_tipo_movimento, length: 1, pad_byte: ' '
14
+ lstring :servico_codigo_movimento, length: 2, pad_byte: '0'
15
+
16
+ lstring :codigo_desconto_2, length: 1, pad_byte: '0' #'1'= Valor Fixo Até a Data Informada, '2'= Percentual Até a Data Informada
17
+ lstring :data_desconto_2, length: 8, pad_byte: '0'
18
+ lstring :valor_desconto_2, length: 15, pad_byte: '0'
19
+ lstring :codigo_desconto_3, length: 1, pad_byte: '0' #'1'= Valor Fixo Até a Data Informada, '2'= Percentual Até a Data Informada
20
+ lstring :data_desconto_3, length: 8, pad_byte: '0'
21
+ lstring :valor_desconto_3, length: 15, pad_byte: '0'
22
+ lstring :codigo_multa, length: 1, pad_byte: '0' #'1'= Valor Fixo, '2'= Percentual
23
+ lstring :data_multa, length: 8, pad_byte: '0'
24
+ lstring :valor_multa, length: 15, pad_byte: '0'
25
+ string :informacao_pagador, length: 10, pad_byte: ' '
26
+
27
+ # Mensagem 3 e 4: Texto de observações destinado ao envio de mensagens livres,
28
+ # a serem impressas no campo de instruções da ficha de compensação do bloqueto.
29
+ # As Mensagens 3 e 4 prevalecem sobre as mensagens 1 e 2.
30
+ string :informacao_3, length: 40, pad_byte: ' '
31
+ string :informacao_4, length: 40, pad_byte: ' '
32
+
33
+ string :cnab_g004_1, length: 20, pad_byte: ' '
34
+ lstring :codigo_ocorrencia_pagador, length: 8, pad_byte: '0'
35
+
36
+ lstring :banco_codigo_debito, length: 3, pad_byte: '0'
37
+
38
+ lstring :agencia_codigo_debito, length: 5, pad_byte: '0'
39
+ string :agencia_dv_debito, length: 1, pad_byte: ' '
40
+ lstring :conta_numero_debito, length: 12, pad_byte: '0'
41
+ string :conta_dv_debito, length: 1, pad_byte: ' '
42
+ string :agencia_conta_dv_debito, length: 1, pad_byte: ' '
43
+
44
+ string :aviso_debito_automatico, length: 1, pad_byte: '0'
45
+
46
+ string :cnab_g004_2, length: 9, pad_byte: ' '
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,37 @@
1
+ module Cnab240
2
+ module V81
3
+ class SegmentoS < BinData::Record
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ lstring :controle_banco, length: 3, pad_byte: '0'
8
+ lstring :controle_lote, length: 4, pad_byte: '0'
9
+ string :controle_registro, length: 1, initial_value: '3', pad_byte: '0'
10
+
11
+ lstring :servico_numero_registro, length: 5, pad_byte: '0'
12
+ string :servico_codigo_segmento, length: 1, initial_value: 'S', pad_byte: ' '
13
+ lstring :servico_tipo_movimento, length: 1, pad_byte: ' '
14
+ lstring :servico_codigo_movimento, length: 2, pad_byte: '0'
15
+
16
+ # '1' = Frente do Bloqueto, '2' = Verso do Bloqueto, '3' = Corpo de Instruções da Ficha de Compensação do Boleto
17
+ lstring :tipo_impressao, length: 1, pad_byte: '0'
18
+
19
+ # Tipo 1 ou 2
20
+ # lstring :numero_linha, length: 2, pad_byte: '0'
21
+ # string :mensagem, length: 40, pad_byte: ' '
22
+ # lstring :tipo_caracter, length: 2, pad_byte: '0'
23
+ # string :cnab_g004_1, length: 78, pad_byte: ' '
24
+
25
+ # Tipo 3
26
+ # Texto de observações destinado ao envio de mensagens livres,
27
+ # a serem impressas no campo de instruções da ficha de compensação do bloqueto.
28
+ # As mensagens 5 à 9 prevalecem sobre as anteriores
29
+ string :informacao_5, length: 40, pad_byte: ' '
30
+ string :informacao_6, length: 40, pad_byte: ' '
31
+ string :informacao_7, length: 40, pad_byte: ' '
32
+ string :informacao_8, length: 40, pad_byte: ' '
33
+ string :informacao_9, length: 40, pad_byte: ' '
34
+ string :cnab_g004_1, length: 22, pad_byte: ' '
35
+ end
36
+ end
37
+ end
@@ -1,42 +1,41 @@
1
1
  module Cnab240::V83
2
2
  class SegmentoA < BinData::Record
3
-
4
3
  include Cnab240::DefaultMixin
5
4
  include Cnab240::SegmentoMixin
6
5
 
7
- lstring :controle_banco, :length => 3, :pad_byte => '0'
8
- lstring :controle_lote, :length => 4, :pad_byte => '0'
9
- string :controle_registro, :length => 1, :initial_value => '3', :pad_byte => '0'
10
-
11
- lstring :servico_numero_registro, :length => 5, :pad_byte => '0'
12
- string :servico_codigo_segmento, :length => 1, :initial_value => 'A', :pad_byte => ' '
13
- lstring :servico_tipo_movimento, :length => 1, :pad_byte => '0'
14
- lstring :servico_codigo_movimento, :length => 2, :pad_byte => '0'
15
-
16
- lstring :favorecido_camara, :length => 3, :pad_byte => '0'
17
- lstring :favorecido_banco, :length => 3, :pad_byte => '0'
18
- lstring :favorecido_agencia_codigo, :length => 5, :pad_byte => '0'
19
- string :favorecido_agencia_dv, :length => 1, :pad_byte => ' '
20
- lstring :favorecido_conta_numero, :length => 12, :pad_byte => '0'
21
- string :favorecido_conta_dv, :length => 1, :pad_byte => ' '
22
- string :favorecido_agencia_conta_dv, :length => 1, :pad_byte => ' '
23
- string :favorecido_nome, :length => 30, :pad_byte => ' '
24
-
25
- string :credito_seu_numero, :length => 20, :pad_byte => ' '
26
- lstring :credito_data_pagamento, :length => 8, :pad_byte => '0'
27
- string :credito_moeda_tipo, :length => 3, :pad_byte => ' '
28
- lstring :credito_moeda_quantidade, :length => 15, :pad_byte => '0'
29
- lstring :credito_valor_pagamento, :length => 15, :pad_byte => '0'
30
- string :credito_nosso_numero, :length => 20, :pad_byte => ' '
31
- lstring :credito_data_real, :length => 8, :pad_byte => '0'
32
- lstring :credito_valor_real, :length => 15, :pad_byte => '0'
33
-
34
- string :informacao_2, :length => 40, :pad_byte => ' '
35
-
36
- string :codigo_finalidade_doc, :length => 2, :pad_byte => ' '
37
-
38
- string :cnab_g004_1, :length => 10, :pad_byte => ' '
39
- lstring :aviso, :length => 1, :pad_byte => ' '
40
- string :ocorrencias, :length => 10, :pad_byte => ' '
6
+ lstring :controle_banco, length: 3, pad_byte: '0'
7
+ lstring :controle_lote, length: 4, pad_byte: '0'
8
+ string :controle_registro, length: 1, initial_value: '3', pad_byte: '0'
9
+
10
+ lstring :servico_numero_registro, length: 5, pad_byte: '0'
11
+ string :servico_codigo_segmento, length: 1, initial_value: 'A', pad_byte: ' '
12
+ lstring :servico_tipo_movimento, length: 1, pad_byte: '0'
13
+ lstring :servico_codigo_movimento, length: 2, pad_byte: '0'
14
+
15
+ lstring :favorecido_camara, length: 3, pad_byte: '0'
16
+ lstring :favorecido_banco, length: 3, pad_byte: '0'
17
+ lstring :favorecido_agencia_codigo, length: 5, pad_byte: '0'
18
+ string :favorecido_agencia_dv, length: 1, pad_byte: ' '
19
+ lstring :favorecido_conta_numero, length: 12, pad_byte: '0'
20
+ string :favorecido_conta_dv, length: 1, pad_byte: ' '
21
+ string :favorecido_agencia_conta_dv, length: 1, pad_byte: ' '
22
+ string :favorecido_nome, length: 30, pad_byte: ' '
23
+
24
+ string :credito_seu_numero, length: 20, pad_byte: ' '
25
+ lstring :credito_data_pagamento, length: 8, pad_byte: '0'
26
+ string :credito_moeda_tipo, length: 3, pad_byte: ' '
27
+ lstring :credito_moeda_quantidade, length: 15, pad_byte: '0'
28
+ lstring :credito_valor_pagamento, length: 15, pad_byte: '0'
29
+ string :credito_nosso_numero, length: 20, pad_byte: ' '
30
+ lstring :credito_data_real, length: 8, pad_byte: '0'
31
+ lstring :credito_valor_real, length: 15, pad_byte: '0'
32
+
33
+ string :informacao_2, length: 40, pad_byte: ' '
34
+
35
+ string :codigo_finalidade_doc, length: 2, pad_byte: ' '
36
+
37
+ string :cnab_g004_1, length: 10, pad_byte: ' '
38
+ lstring :aviso, length: 1, pad_byte: ' '
39
+ string :ocorrencias, length: 10, pad_byte: ' '
41
40
  end
42
- end
41
+ end
@@ -1,40 +1,39 @@
1
1
  module Cnab240::V83
2
2
  class SegmentoB < BinData::Record
3
-
4
3
  include Cnab240::DefaultMixin
5
4
  include Cnab240::SegmentoMixin
6
5
 
7
- lstring :controle_banco, :length => 3, :pad_byte => '0'
8
- lstring :controle_lote, :length => 4, :pad_byte => '0'
9
- lstring :controle_registro, :length => 1, :initial_value => '3', :pad_byte => '0'
10
-
11
- lstring :servico_numero_registro, :length => 5, :pad_byte => '0'
12
- string :servico_codigo_segmento, :length => 1, :initial_value => 'B', :pad_byte => ' '
13
-
14
- string :cnab240_g004_1, :length => 3, :pad_byte => ' '
15
-
16
- lstring :favorecido_inscricao_tipo, :length => 1, :pad_byte => '0'
17
- lstring :favorecido_inscricao_numero, :length => 14, :pad_byte => '0'
18
- string :favorecido_endereco_logradouro, :length => 30, :pad_byte => ' '
19
- lstring :favorecido_endereco_numero, :length => 5, :pad_byte => '0'
20
- string :favorecido_endereco_complemento, :length => 15, :pad_byte => ' '
21
- string :favorecido_endereco_bairro, :length => 15, :pad_byte => ' '
22
- string :favorecido_endereco_cidade, :length => 20, :pad_byte => ' '
23
- lstring :favorecido_endereco_cep, :length => 8, :pad_byte => '0'
24
- string :favorecido_endereco_estado, :length => 2, :pad_byte => ' '
25
-
26
- lstring :pagamento_data_vencimento, :length => 8, :pad_byte => '0'
27
- lstring :pagamento_valor_documento, :length => 15, :pad_byte => '0'
28
- lstring :pagamento_valor_abatimento, :length => 15, :pad_byte => '0'
29
- lstring :pagamento_valor_desconto, :length => 15, :pad_byte => '0'
30
- lstring :pagamento_valor_mora, :length => 15, :pad_byte => '0'
31
- lstring :pagamento_valor_multa, :length => 15, :pad_byte => '0'
32
-
33
- string :time_of_ted_remittence, :length => 4, :pad_byte => '0'
34
- string :filler, :length => 11, :pad_byte => ' '
35
- string :historic_code, :length => 4, :pad_byte => '0'
36
-
37
- lstring :aviso, :length => 1, :pad_byte => '0'
38
- lstring :accurence_of_return, :length => 10, :pad_byte => ' '
6
+ lstring :controle_banco, length: 3, pad_byte: '0'
7
+ lstring :controle_lote, length: 4, pad_byte: '0'
8
+ lstring :controle_registro, length: 1, initial_value: '3', pad_byte: '0'
9
+
10
+ lstring :servico_numero_registro, length: 5, pad_byte: '0'
11
+ string :servico_codigo_segmento, length: 1, initial_value: 'B', pad_byte: ' '
12
+
13
+ string :cnab240_g004_1, length: 3, pad_byte: ' '
14
+
15
+ lstring :favorecido_inscricao_tipo, length: 1, pad_byte: '0'
16
+ lstring :favorecido_inscricao_numero, length: 14, pad_byte: '0'
17
+ string :favorecido_endereco_logradouro, length: 30, pad_byte: ' '
18
+ lstring :favorecido_endereco_numero, length: 5, pad_byte: '0'
19
+ string :favorecido_endereco_complemento, length: 15, pad_byte: ' '
20
+ string :favorecido_endereco_bairro, length: 15, pad_byte: ' '
21
+ string :favorecido_endereco_cidade, length: 20, pad_byte: ' '
22
+ lstring :favorecido_endereco_cep, length: 8, pad_byte: '0'
23
+ string :favorecido_endereco_estado, length: 2, pad_byte: ' '
24
+
25
+ lstring :pagamento_data_vencimento, length: 8, pad_byte: '0'
26
+ lstring :pagamento_valor_documento, length: 15, pad_byte: '0'
27
+ lstring :pagamento_valor_abatimento, length: 15, pad_byte: '0'
28
+ lstring :pagamento_valor_desconto, length: 15, pad_byte: '0'
29
+ lstring :pagamento_valor_mora, length: 15, pad_byte: '0'
30
+ lstring :pagamento_valor_multa, length: 15, pad_byte: '0'
31
+
32
+ string :time_of_ted_remittence, length: 4, pad_byte: '0'
33
+ string :filler, length: 11, pad_byte: ' '
34
+ string :historic_code, length: 4, pad_byte: '0'
35
+
36
+ lstring :aviso, length: 1, pad_byte: '0'
37
+ lstring :accurence_of_return, length: 10, pad_byte: ' '
39
38
  end
40
- end
39
+ end