brcobranca 6.9.1 → 7.0.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 +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +7 -7
- data/README.md +14 -12
- data/Rakefile +1 -0
- data/brcobranca.gemspec +1 -0
- data/lib/brcobranca/arquivos/logos/banrisul.eps +121 -0
- data/lib/brcobranca/arquivos/logos/banrisul_carne.eps +121 -0
- data/lib/brcobranca/boleto/banco_brasil.rb +8 -8
- data/lib/brcobranca/boleto/banco_nordeste.rb +1 -0
- data/lib/brcobranca/boleto/banestes.rb +10 -10
- data/lib/brcobranca/boleto/banrisul.rb +84 -0
- data/lib/brcobranca/boleto/base.rb +6 -5
- data/lib/brcobranca/boleto/bradesco.rb +2 -1
- data/lib/brcobranca/boleto/caixa.rb +6 -5
- data/lib/brcobranca/boleto/hsbc.rb +7 -6
- data/lib/brcobranca/boleto/itau.rb +1 -0
- data/lib/brcobranca/boleto/santander.rb +1 -0
- data/lib/brcobranca/boleto/sicoob.rb +12 -11
- data/lib/brcobranca/boleto/sicredi.rb +1 -0
- data/lib/brcobranca/boleto/template/base.rb +5 -4
- data/lib/brcobranca/boleto/template/rghost.rb +7 -6
- data/lib/brcobranca/boleto/template/rghost_carne.rb +9 -9
- data/lib/brcobranca/boleto/unicred.rb +1 -1
- data/lib/brcobranca/calculo.rb +14 -15
- data/lib/brcobranca/calculo_data.rb +2 -0
- data/lib/brcobranca/currency.rb +4 -3
- data/lib/brcobranca/formatacao.rb +2 -1
- data/lib/brcobranca/formatacao_string.rb +1 -0
- data/lib/brcobranca/limpeza.rb +1 -0
- data/lib/brcobranca/remessa/base.rb +2 -1
- data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +7 -6
- data/lib/brcobranca/remessa/cnab240/base.rb +16 -15
- data/lib/brcobranca/remessa/cnab240/caixa.rb +1 -0
- data/lib/brcobranca/remessa/cnab240/sicoob.rb +9 -9
- data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +2 -3
- data/lib/brcobranca/remessa/cnab400/base.rb +8 -7
- data/lib/brcobranca/remessa/cnab400/bradesco.rb +2 -1
- data/lib/brcobranca/remessa/cnab400/citibank.rb +3 -2
- data/lib/brcobranca/remessa/cnab400/itau.rb +2 -1
- data/lib/brcobranca/remessa/cnab400/santander.rb +7 -5
- data/lib/brcobranca/remessa/cnab400/sicoob.rb +6 -5
- data/lib/brcobranca/remessa/pagamento.rb +4 -4
- data/lib/brcobranca/retorno/base.rb +1 -0
- data/lib/brcobranca/retorno/cnab240/base.rb +6 -7
- data/lib/brcobranca/retorno/cnab240/caixa.rb +1 -0
- data/lib/brcobranca/retorno/cnab240/santander.rb +3 -3
- data/lib/brcobranca/retorno/cnab240/sicoob.rb +7 -6
- data/lib/brcobranca/retorno/cnab400/base.rb +5 -6
- data/lib/brcobranca/retorno/cnab400/bradesco.rb +1 -0
- data/lib/brcobranca/retorno/cnab400/itau.rb +1 -0
- data/lib/brcobranca/retorno/retorno_cbr643.rb +1 -0
- data/lib/brcobranca/retorno/retorno_cnab240.rb +3 -2
- data/lib/brcobranca/retorno/retorno_cnab400.rb +1 -0
- data/lib/brcobranca/util/empresa.rb +2 -3
- data/lib/brcobranca/version.rb +2 -1
- data/lib/brcobranca.rb +3 -1
- data/spec/brcobranca/base_spec.rb +51 -50
- data/spec/brcobranca/boleto/banco_brasil_spec.rb +46 -45
- data/spec/brcobranca/boleto/banco_nordeste_spec.rb +13 -12
- data/spec/brcobranca/boleto/banestes_spec.rb +108 -105
- data/spec/brcobranca/boleto/banrisul_spec.rb +165 -0
- data/spec/brcobranca/boleto/bradesco_spec.rb +56 -52
- data/spec/brcobranca/boleto/caixa_spec.rb +9 -7
- data/spec/brcobranca/boleto/hsbc_spec.rb +17 -15
- data/spec/brcobranca/boleto/itau_spec.rb +22 -20
- data/spec/brcobranca/boleto/santander_spec.rb +16 -14
- data/spec/brcobranca/boleto/sicoob_spec.rb +94 -94
- data/spec/brcobranca/boleto/sicredi_spec.rb +32 -28
- data/spec/brcobranca/boleto/unicred_spec.rb +16 -14
- data/spec/brcobranca/boletos_em_lote_spec.rb +4 -3
- data/spec/brcobranca/calculo_data_spec.rb +2 -1
- data/spec/brcobranca/calculo_spec.rb +97 -97
- data/spec/brcobranca/currency_spec.rb +6 -5
- data/spec/brcobranca/formatacao_spec.rb +1 -0
- data/spec/brcobranca/formatacao_string_spec.rb +1 -2
- data/spec/brcobranca/limpeza_spec.rb +1 -0
- data/spec/brcobranca/remessa/base_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab240/base_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +12 -10
- data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +13 -11
- data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +2 -1
- data/spec/brcobranca/remessa/cnab400/base_spec.rb +20 -18
- data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/itau_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/santander_spec.rb +12 -10
- data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +11 -9
- data/spec/brcobranca/remessa/pagamento_spec.rb +12 -10
- data/spec/brcobranca/retorno/cnab240/base_spec.rb +10 -9
- data/spec/brcobranca/retorno/cnab240/santander_spec.rb +23 -22
- data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +21 -20
- data/spec/brcobranca/retorno/cnab400/base_spec.rb +13 -12
- data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +3 -1
- data/spec/brcobranca/retorno/cnab400/itau_spec.rb +4 -1
- data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +1 -0
- data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +1 -0
- data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +1 -0
- data/spec/brcobranca/rghost_spec.rb +1 -0
- data/spec/brcobranca/util/empresa_spec.rb +13 -12
- data/spec/brcobranca_spec.rb +6 -5
- data/spec/spec_helper.rb +3 -3
- data/spec/support/remessa_helpers.rb +3 -1
- data/spec/support/shared_examples/busca_logotipo.rb +2 -0
- data/spec/support/shared_examples/cnab240.rb +22 -20
- data/spec/support/shared_examples/cnab400.rb +12 -12
- data/spec/support/shared_examples/formatos_validos.rb +6 -4
- metadata +7 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e64c1b8d888e877461dc9ee4e50d1b5935ae53ae
|
|
4
|
+
data.tar.gz: 66c20f5799e0bce3a611f3e6866d15c5948924be
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 91097810fce52fa27dcd38d13aa4ea17daaf86f86c5c54af36fe8ec8c4628e8e9b39000291c96e6e408134d74383c3714eca8b42f5db64cf3844c5b9d342bfaa
|
|
7
|
+
data.tar.gz: effd571492c5b72524996ac2d3afdb1b308ab7e2d46b37672fbc5cc0d25a121450199be9d02a2fadcc589459f1c11ca0f89bfe9f3aa78d8d82c5e2262c9373e0
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
brcobranca (
|
|
4
|
+
brcobranca (7.0.0)
|
|
5
5
|
activemodel (>= 3)
|
|
6
6
|
activesupport (>= 3)
|
|
7
7
|
parseline (~> 1.0.3)
|
|
@@ -24,12 +24,12 @@ GEM
|
|
|
24
24
|
simplecov
|
|
25
25
|
coderay (1.1.1)
|
|
26
26
|
concurrent-ruby (1.0.2)
|
|
27
|
-
coveralls (0.8.
|
|
27
|
+
coveralls (0.8.17)
|
|
28
28
|
json (>= 1.8, < 3)
|
|
29
29
|
simplecov (~> 0.12.0)
|
|
30
|
-
term-ansicolor (~> 1.3
|
|
30
|
+
term-ansicolor (~> 1.3)
|
|
31
31
|
thor (~> 0.19.1)
|
|
32
|
-
tins (
|
|
32
|
+
tins (~> 1.6)
|
|
33
33
|
diff-lcs (1.2.5)
|
|
34
34
|
docile (1.1.5)
|
|
35
35
|
i18n (0.7.0)
|
|
@@ -45,7 +45,7 @@ GEM
|
|
|
45
45
|
method_source (~> 0.8.1)
|
|
46
46
|
slop (~> 3.4)
|
|
47
47
|
rainbow (2.1.0)
|
|
48
|
-
rake (
|
|
48
|
+
rake (12.0.0)
|
|
49
49
|
rghost (0.9.6)
|
|
50
50
|
rghost_barcode (0.9)
|
|
51
51
|
rspec (3.5.0)
|
|
@@ -76,7 +76,7 @@ GEM
|
|
|
76
76
|
simplecov-html (~> 0.10.0)
|
|
77
77
|
simplecov-html (0.10.0)
|
|
78
78
|
slop (3.6.0)
|
|
79
|
-
term-ansicolor (1.
|
|
79
|
+
term-ansicolor (1.4.0)
|
|
80
80
|
tins (~> 1.0)
|
|
81
81
|
thor (0.19.4)
|
|
82
82
|
thread_safe (0.3.5)
|
|
@@ -84,7 +84,7 @@ GEM
|
|
|
84
84
|
tins (1.13.0)
|
|
85
85
|
tzinfo (1.2.2)
|
|
86
86
|
thread_safe (~> 0.1)
|
|
87
|
-
unicode-display_width (1.1.
|
|
87
|
+
unicode-display_width (1.1.2)
|
|
88
88
|
unidecoder (1.1.2)
|
|
89
89
|
|
|
90
90
|
PLATFORMS
|
data/README.md
CHANGED
|
@@ -21,18 +21,20 @@ Gem para emissão de bloquetos de cobrança para bancos brasileiros.
|
|
|
21
21
|
|
|
22
22
|
### Bancos Disponíveis
|
|
23
23
|
|
|
24
|
-
| Bancos
|
|
25
|
-
|
|
26
|
-
| 001 - Banco do Brasil
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
24
|
+
| Bancos | Carteiras | Documentações |
|
|
25
|
+
|------------------------|-------------------|----------------|
|
|
26
|
+
| 001 - Banco do Brasil | Todas as carteiras presentes na documentação | [pdf](http://www.bb.com.br/docs/pub/emp/empl/dwn/Doc5175Bloqueto.pdf) |
|
|
27
|
+
| 004 - Banco do Nordeste| Todas as carteiras presentes na documentação - [Marcelo J. Both](https://github.com/marceloboth)| |
|
|
28
|
+
| 021 - Banestes | Todas as carteiras presentes na documentação | |
|
|
29
|
+
| 033 - Santander | Todas as carteiras presentes na documentação - [Ronaldo Araujo](https://github.com/ronaldoaraujo) | [pdf](http://177.69.143.161:81/Treinamento/SisMoura/Documentação%20Boleto%20Remessa/Documentacao_SANTANDER/Layout%20de%20Cobrança%20-%20Código%20de%20Barras%20Santander%20Setembro%202012%20v%202%203.pdf) |
|
|
30
|
+
| 041 - Banrisul | Todas as carteiras presentes na documentação | |
|
|
31
|
+
| 104 - Caixa | Todas as carteiras presentes na documentação - [Túlio Ornelas](https://github.com/tulios) | [pdf](http://downloads.caixa.gov.br/_arquivos/cobranca_caixa_sigcb/manuais/CODIGO_BARRAS_SIGCB.PDF) |
|
|
32
|
+
| 237 - Bradesco | Todas as carteiras presentes na documentação | [pdf](http://www.bradesco.com.br/portal/PDF/pessoajuridica/solucoes-integradas/outros/layout-de-arquivo/cobranca/4008-524-0121-08-layout-cobranca-versao-portugues.pdf) |
|
|
33
|
+
| 341 - Itaú | Todas as carteiras presentes na documentação | [CNAB240](http://download.itau.com.br/bankline/cobranca_cnab240.pdf), [CNAB400](http://download.itau.com.br/bankline/layout_cobranca_400bytes_cnab_itau_mensagem.pdf) |
|
|
34
|
+
| 399 - HSBC | CNR, CSB - [Rafael DL](https://github.com/rafaeldl) | |
|
|
35
|
+
| 748 - Sicredi | C (03) | |
|
|
36
|
+
| 756 - Sicoob | Todas as carteiras presentes na documentação | |
|
|
37
|
+
| 756 - Unicred | 03 - [Marcelo J. Both](https://github.com/marceloboth) | |
|
|
36
38
|
|
|
37
39
|
### Retornos Disponíveis
|
|
38
40
|
|
data/Rakefile
CHANGED
data/brcobranca.gemspec
CHANGED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
%!PS-Adobe-3.0 EPSF-3.0
|
|
2
|
+
%%Pages: 1
|
|
3
|
+
%%BoundingBox: 0 0 148 35
|
|
4
|
+
%%DocumentData: Clean7Bit
|
|
5
|
+
%%LanguageLevel: 2
|
|
6
|
+
%%EndComments
|
|
7
|
+
%%Page: 1 1
|
|
8
|
+
save 9 dict begin
|
|
9
|
+
{/T currentfile/ASCII85Decode filter def/DeviceRGB setcolorspace
|
|
10
|
+
/F T<</BitsPerComponent 8/Columns 148/Colors 3/Predictor 10>>/LZWDecode filter def
|
|
11
|
+
<</ImageType 1/Width 148/Height 35/BitsPerComponent
|
|
12
|
+
8/ImageMatrix[1 0 0 -1 0 35]/Decode
|
|
13
|
+
[0 1 0 1 0 1]/DataSource F>> image
|
|
14
|
+
F closefile T closefile}
|
|
15
|
+
%%BeginData:;
|
|
16
|
+
exec
|
|
17
|
+
J,isG0E`.##D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O?u31)'kMB-^757;Rp>H>nrLFk#4:9enm
|
|
18
|
+
@9:1P"UeFn;TTMT<"fDHBj'`q4r<4ZX!SO*=mW\fPA(6)@MeDT7'eIi*oK%FI3)\mD4:UEXXoQq%1\
|
|
19
|
+
S77.!#I-@Se2%47P#*#mEuYH^d0RCRf/[Qrdih,f*l1G$X0mpZ$=o]49E9/[aY[SQu")WHG1JPJ<2&
|
|
20
|
+
;?693`^eD-_23IsB>#(AfOn'%5^M[%4Zg%Da0FgG.?uRVJ<Q*K0%d/aqbjY[amhQaY8-0)"!C:+d0L
|
|
21
|
+
-N`#6M^A//SI#rpjGPT"MD3iq$MhE?m9;O=T2JqVkX##;,4<&4Z^#.=rZCe9qQ&BH0!iX7?\N,:Y/A
|
|
22
|
+
Z33G6(aKlPL]@GUW+Z=.SnHCM!1a4rN";SS)WKh.-Af*NM#k_9!!qLj!.5m04<0!(knkHBL7lU'+p@
|
|
23
|
+
t.KGoL%csdQ;5TgEP+7CHH\1unBjEmK98KM0&V)cd0J0Js0Dj4bYP2_$Gbbg+WTE#JcJ-#-P)?QQlQ
|
|
24
|
+
id=RlZ!N1Y_"S$T?KPm$A!n-NX(H\l09,e^_tpVc\n7S#6CJgmUmU#0Mluu!:V=aYlGc>O/l3*Os:"
|
|
25
|
+
$J3F+--ebd.3_kqd=eAF9e:!t/=jVL5B$'%"P:"A`/VF7?dNAUABGi[%C)^PqRtj:5>ob)MJdER=Oa
|
|
26
|
+
M9iJuR$9"lU-jB!KK.h^AI0ao$K-MCigQ7qb$_NA/F%Q59ThH)u=X-XliX3[\sP!.sL?$j7/3$/A8`
|
|
27
|
+
!+_N#Wm$nhF<:bPhcCdT_@CZ0+9D.V2h1lD!J8+;$jfLu8/;7._$ClT'IO_S#FP]Cc6:>4NQAI,0iQ
|
|
28
|
+
/B7jpHq.,nC`re3L+^#k:/lp)6dJA^;k#o4gYfEOAaHP1q$.O\$p!$sYB!",T[fI2K)h8YO-Wsg8PO
|
|
29
|
+
5cNp#Wn:Prknd@iQQQ\7R>B$!?`ne!1]sdp(IYgBb4;a_Z5o;"Q8JqAn]<2l2Uur+=o%!i42`e*:j0
|
|
30
|
+
/-A)>,8e!7R/pEj1Q\Y[=UL4bVYD.T.*^KtmR/CY?T\p^h*0JC@E%%A-+p3]l1$iq6Vm^3t7>WpC_#
|
|
31
|
+
OR>W#Gf2GT)7P6G]10#Xgt8Oaq(t7gYidRJLlma+#9@<ddt[\Z6+5!B.6ab4#7WMe56>?]e_>DHqcO
|
|
32
|
+
p\"SbJ.;S[,YEglNYOk,h.Rr7)M0(Q!Z6R;+_@b2PnNXlgq2?jWNlFc_@6F"lOkS!<3:m?Fp.jG"s1
|
|
33
|
+
[XHOi@U5"D7ILBHaf%mW*<a/AtZ"6</akD0*PJOUlE\>_lipcaJl##HQR`"kUi%"TgJ#CpK40lS\ji
|
|
34
|
+
b832,OGBJ7^e,r0jHjhV?0)?8K))i>$VE>29*NB\d1[sN\SC"78fm$UJ+C8i(WTn0STs%XG6k4L&aO
|
|
35
|
+
aeleQ*!Ko3'njtUHPTt8mO)bAY3ls<#8@u$J&`e]b2XZC:)"J^Ma8cXBP`n?\pFceCJq,-9!!^O;"C
|
|
36
|
+
U"'Pn40$LthKbOH#'Wfo,q3)^GIB,o`G4I/Uig%06j%oLHna0o'`=*eVCW&!?WNa5aH*?p4`47t2eI
|
|
37
|
+
Ja"=-J:A(AlokfFL,VKlmJpW/C64P@*M^PqNq)Eoa5Y5B!-AX#+:nP_@P!/\G^^/hmQSf<I#<G+2h6
|
|
38
|
+
De!Jebp+(I-CN_uZ37o9F3c>XPM"rofS"V)VJL3SdTQ>2S);BT_6&WXuC3$2u5*b42J!0@`m5g%1O!
|
|
39
|
+
,)Z>,JOQ4@A+c"U2\4!,X7=f#67;p,t0!@4pTSIRF9AP!!!l@%ZOF3/4rd)\*"$TC6Ea*#gj0Ung=W
|
|
40
|
+
6<Zg7"JrUTrn:8:W!$cT+O'os?JA>:nTWkJr-:'>^%(/gO]Rq[XGY#UekETMdB-m6OGeaU<*cXR[J=
|
|
41
|
+
odG5f9RNY$>n8Z&1A.!508FN)0tmbWAdWhGPIi!s_)3#"(p[#&$sC*ci"q7u6g[+Zr#J6,#I:i#PCa
|
|
42
|
+
+Dq]5NZs'',QkhY8.'?s+[uau5H'E?<T!on6+@X@JV5%qB-f9foZ7)#J9-b/:`i-I/cggeW/Ui/4pK
|
|
43
|
+
r*$$AWsM/e+qKo"b3i%+j2OEq540FP(:\/#>.EXT[)[f?LmG`QjG+TanX"5m^=9R2d_a0>7P!o.Go@
|
|
44
|
+
;IkmT\LU(!q)m25b!9(-Nuap49WGp'>`l\!\5[O$ZV%^!iV>$JD^rg_8Nr>5R/$tp`tD5(]rV0BE1A
|
|
45
|
+
p?4A$u-Usag"99uj=g2uP^dt10i?SYYUsg9=V.GNofR;-K7_+EO$NR?OfA#O8.`L>q(#n_(!ann.7a
|
|
46
|
+
UI[J4'M?aaVT%!X0$a?lPpR#WtVuqE'39UnRS17@dmK@OCSRN?Q.BJ;=TNVjm_sZ.qK1fXVqG-R42h
|
|
47
|
+
+p!H!mR0FDI1*k8&D8PV/VTR,%H5S^"k_?:U?M[g[32#*!Zbf:#S$kH&d,J-jAr!/<Xo-I0aB\g&Rc
|
|
48
|
+
ds!RNP_%^YdIN*LCa!V#&ElAuh"5]MSl7P_ru_B!#T&HK$iQIu(Y.&*eO%`)1)"i012iAf-a#Yr`:8
|
|
49
|
+
GO/sW:LR!F>67Xj:jrMDH`ah%KVq.c&)W*ZdiV$P^qp=,=S7G7;dC.`5hp^S9kH;(bS6rX)oJs"bM7
|
|
50
|
+
s!pnS>E22n2UsL`=`dmJ!@>$:m;3EWKYVlXjfRh'FE]8c`j>RP7I=Ts5'0't.;?MEIJFEn-#C-(d8i
|
|
51
|
+
DKeY-:8D/<TuW=CR;q=?":I,68nmBFdE*+T\eT$=LXVf!2A;LJV:i_`/,-:`MBV\>g%sr'ZMfr\J3^
|
|
52
|
+
oTDIik_P@]5"E]4*(+S#LEKn)6O5SX\n&(5lI&5=#Ytuk&-*5MMk(+s\c;_P"74AC36.-X$D><DLg\
|
|
53
|
+
@8JKPg3WW_rU/>M,.J;"Pe=:ta%-8to;+s*NC&HP-2#f(Zi)'cY=%RJ,F5c=tm5aV`b@E^l%5a*#De
|
|
54
|
+
3J^&.l>E$%S*/l"9:,'a$:1P!9*9ENNO0""R7#E"<G>,*p,ko9]cMo7KHqn)F<9s6%0a1dL(MFZpt)
|
|
55
|
+
r?nq`?"s.4X!COp9i@l/1gaXnK)$-ZWAiqKEXAC;<!!Qa4O>JM>`rj:).q)Hp@A`01c3?OY!Wg5KTs
|
|
56
|
+
2m/=9F'b$:%ht@?MT2j;C7j*eVZYTlq3eP3G4o+2pLFBdNf[)utV1GRs'?TFBl?Z:[s&$_bZ@Wd]Y6
|
|
57
|
+
O<Xsq5CfO5TH7"ic5C'O.3aWVJT`)C[KE0>"@+:6lJ<ARgirk0*hb%n5[8m@8cXAW*MB2E!SR[;j;W
|
|
58
|
+
oL]nIR_!!E]rGTL7'"(2rLi&1V7VNN/R3eA?.+B/J?^ijGOI,YJRV/UiQKE*,#,[n\Qi%b@D_>qY46
|
|
59
|
+
>8&ii04HH;A[/[!5O6t!HJ[#WWYSg#[gWL?m#I-%KM(P<hXmY6+dR+14/!`"^j.f@>5TWg_jM"*/'=
|
|
60
|
+
TM:Q>cE^p00!90lD!-\^"$k*,N"TU^fTsbqlfF,MB(r<kq":e<01'%Dr)?J+kTUHrf(nUl20`ueFiU
|
|
61
|
+
/+jg)o5W!?_RgUO3S[NWYq^"J@G+5Qi,om*\_IOA8V2aNu?2E\ATu*oZT(JX!c3:]W:Y+2QU\5hH>b
|
|
62
|
+
1_8Ne#N-YtJ`\#ine<6V)8Ip-KSB](9R_sRSRMM'W^Irkm-O#;2c?=1#4Rh\fIu6Ypk.o6JPZV;*X`
|
|
63
|
+
!j*T1PVJXRV\rY$H8*[">\_:BAWdf9@^$K.!H5e%+c@N`IT"lLR6J\3%t-l[a2bQ%hgn_>U%(aN_5!
|
|
64
|
+
$L8;J^P:kZ2ip(!63SaO%KBQX;m1"];".)Kk+3j('&k;d(rHpU"U4>/f+N%%DY4@^t&cbSB:qsc/JX
|
|
65
|
+
-+CYI^VA(/I"J@eNXXG>aQjVc/"lZg.J_UdP:`Fod"6;KD+:&n%]H'kp+n.So+k@^nq?(+L!22jm!/
|
|
66
|
+
Lb#/coJjA=shO@%&+/`XuXJ!FSI6O>IdtclSnC1bok&_A>8lk3G8477!"H5_K@.1n'LW,)F5\TunEE
|
|
67
|
+
7*]@U?(`&&C.t;]2?H7S%Nr+`KcitnOuh$iXMm^RVBhBshC-10"lLX5M/j>^c6'hed(pRjL-,J:8-o
|
|
68
|
+
9@)j2BH!(8\3<f1m3!$L>.!$i2.aG,9N`F&b+J,gUdg'"[X(ZELY5tDk:edZ#5"%)^YNm/9fZ>JP'$
|
|
69
|
+
D9um%-3t2a<'Q<)\`o!+dO.(?3!Ge!2)F\^a9a=3ZK8C"/2(lTX4sg"J$a2"b8i?,]Y!Ce<OP#+$o9
|
|
70
|
+
fO"_Y`&t\GN+KG)YA2XDqKY+4`WhKt)9(X-CIM/=e#.)5LCc[D#?C;p/4-_"UKK^FXmN9Qc<)kJ!^a
|
|
71
|
+
M60jr>Q8'qkU41^!pCmjg6&5b]AP;LSWhJct!S)<"U9!#c"@*!2ca!9"J)J]8\ghA2d*#s_Sq?oS3q
|
|
72
|
+
+9B7jE$RLqW6QTo3u"km1ChckkbfW?#S2H7!b#1FU!uR4#l```U>QM#KQ73g(]Y^7)WCAq@A4dGFoo
|
|
73
|
+
MT_k9?G+^bQU)@?LY*T00`TFMqF!qcT&MBG7_+P7O)k0$'M#%0Im`1Vc?4<[-_BI#bN!2rYC*9i%h?
|
|
74
|
+
(q0+9mdBn,T))l!3t/X5]-Vh9H2p"#p<[Z+<tD4-?`")o-'VC_/^D:]G7-C*T>)RhuQhfb_*b>![%a
|
|
75
|
+
L.qg!MA3E]2,fYoG.ZBdPC9+'?!3-VqUC.dQ"<k^Z>saDL5QV*S5^j!'P#SZ]<Hp'(\o;':$QsC*iP
|
|
76
|
+
N.APTA[D!FSY)+;,A3O<$VR(1D"Z&/GTQ49<6@"[FUG5_K:d.T>F1g`h9R!^n3r,)Tc7"$dh=J8bNY
|
|
77
|
+
3,f1c*=1.U7`Jt=0FGXV*hg>K8eGfgPQd^,%R=%q+i%ak/34sRR2&2H,,2!Nj;7&[<hn*f'/Ek7`[K
|
|
78
|
+
/hMKO*BO;%e*!"2&"5f*'nj2gQ'UIjFk*H4i@Vdp^^`#R^0&)gt(5hm17+rA)@*/E$5iX-c^6Bpc\K
|
|
79
|
+
YfF6JgMSk5_EOS_mRLh+qC!VrW@[!![2.di0Y*AbQU;P*J*c#/5Q?9[K[jZ!['+q@:1#4i!uG3)Lt9
|
|
80
|
+
d_."<mS?]rkCVj3`8P1,`V?P6R*hge!J^POR$lt*i*F[58=F?$XdJsr@'d85Ll"Xl4r^3=_%)?TY^]
|
|
81
|
+
5@j`W4uK*5Db!6-G/EarP_I"aFu'6'<1<@Mj[+K_PA&_C.OFdhIRK"bI-b5V@D&4M.a[>s[d)64=g,
|
|
82
|
+
bT247%\[\TTr];#?K3NJ.3aoeJ@5U>A.QJ!(;TbOJTMHRJ.4b["!R+tCGCeM;h/=(>gR43K$="H#Q\
|
|
83
|
+
>u$\3UD+Y3r9+q4NS"[d5HlSKV='E`6c"[H+8@IbMulRdunW<2-5:Ltu2nh#l$M$MF5;RVO_d-/<K!
|
|
84
|
+
!.B`i"uR8=M(AN*m'R0V(rKfQlsc*(dX6&$!J7FH3">eJ5mR=+j@!dg]l\'"Lq\hi[SW9VS,;*C$Ac
|
|
85
|
+
#DEF69*$=GsX?f#c@A?C;rtQXh)CU=DE;gS;n-D9Y"3X"S@E]a#j:]:@*$>dof#0;R3Kn+N]YH+oep
|
|
86
|
+
7ND]H!Wt'ObktTd1I@ar^_)"/$n>_/^HFg`-@;*C*^0J2ggI\h7_/!(!D\Z:5q"aGC!1j[dH7_4Va@
|
|
87
|
+
g&N$u*LP8NiZAkIA/hn1$@s<;TG:qpe,Wka*O@:S;'Z/carH!-'0tCYW3?BS6ONpd)hH-?_'U(.0E`
|
|
88
|
+
L<*?)GmES:EN7Q]Sc*'s95!9!*,63FY_KVS5lP+QQYNE(`$<h];d@IP.#YT,q-'S2qX!"9n.&N`=;V
|
|
89
|
+
;Nn-+n&g4J/]Ze!!">GP-,c*ndWBl"F;!@loNX0W$'gL6Uk-T"EZDO(Sc,k7>'A:@<`ZN31L$YW5')
|
|
90
|
+
OJ5??`mL0)>5G/5bQ!FP;YWFQ*jT#8^q=@o9Nmkof<'fK'i>NCrKG%^2*'cC`^^Wk<4=)K"/*uN*_$
|
|
91
|
+
Ul"NDt,;+5tNqqb0%:\CNp	Y,s+HQc]])uf6%cKGcm1UCoWE4U*Y<fJQ+M7uq-4/U^"mLRg=[+A]
|
|
92
|
+
7a:!P&"tlu2BW!dX@-LbS&)$D7<f`+bQ:$>!>"Gsd;%:LmL2@,!rt0)/D;1r.QhTF*j9)VH=.WLa9_
|
|
93
|
+
im"RDrC_@*^op(kK#)PIEQJ]%U$s(bbdYg1FBi`Pi>rO7Re+Uce$!W!B/6l<`[&-8pB_!2&1U^-rm"
|
|
94
|
+
L7Bdi!L:ZQ&MQnc<p^%6AlB:98WcX1l7WhiX-[2T`79['4I7I6,Xf9^];2;(kKOAJZ9c!5Qee;*!L'
|
|
95
|
+
Y"[mLDP3g@%(4guS+[-]ng'.ON!C>.7TJmX\NB<d9*MM+-!=06EKcsh6e8A5#6#mkeFr=`C!C.PDC,
|
|
96
|
+
=Bb#&F@8+(=dP@)*">IK95@ULdq\0$4k/O\J`H/4F)3?qeY;7"un[)b!tG+oDebXp/Y5dZD<O!+H$r
|
|
97
|
+
?l7kT!A;#H^^:h1$l=Hb(4-)b<m1PPN#P(4(?(d2c!DI."9IbfA4J+$6KG8B*YdDN(#d"75dCIRqAj
|
|
98
|
+
!$(+Z`o5RrMo<7X;QkO:5,6)+SA":ROl",F0)^eR4h!!Ifb)mraMTEH9IJ<g33'X.FEi#eCQ/-A-K*
|
|
99
|
+
!,(C7TUmFe5*%`Os.+N!RM0]nua)`!26&*."X)tH5rWM*l/U(!*f`USs[@jR/dF/Z]5HEnelWo!?n6
|
|
100
|
+
Y8:i!<jqo9,'VS,(4gG/qS%#,L*l7dK+o`g""p'5\j#?ib(_doa_bs%#a1skB^`4(4":/SU"']6&!!
|
|
101
|
+
ipu1(F=s)k6OCJ50JP-r-le+2J'q=HH-$dRPVa#2h096*GmZ@%$I[J:@<1%QXX(<:4JM.j><_GJjUD
|
|
102
|
+
d(imAU*T40O_Ri\!Z^OjYg5p;($I3"d_\<]:uV0h6.tNHqA@&WLbJ0"?s!H9q2%?C#`tJsTqWJ,kQq
|
|
103
|
+
6F!hdiJ8GXFD/-4ZG(')8W5bJM$Hldf[!MD^s@LN9R[m+=#+:]1Ie7:B@Op+-/'1LJ$"p&%+a7pVY!
|
|
104
|
+
<@Wp&V(Qt!!r[Y!0M4K#RqLK7H6.j^_0WpQUVk;LCrU[+pS1"YLiCF=oa&uahRub1h@O*!.]".oC\R
|
|
105
|
+
$Dk;pI&4doLrgh&<^_cA$'N"pqa?nV!U3gI:!5O+=!.YP+#m#Zu.l=[e!<rRT+jbHJ<#l5R"[S9\\3
|
|
106
|
+
:H-!b^uf9icEV$%s3&!Z=!4^hgBL?iXjG!?hG-UCYE'gf=nX)MbX83L'0VGmo8>#@$<[U6a*^m$C)p
|
|
107
|
+
!9nmCJhOn@q<Id)5A[[J47A10>J1pX\@^@Ss/f;n2.-MllIZMr^_17[hiGjhguhiFS(4Ybn4FY'HFG
|
|
108
|
+
:&&dEqcLE]TKOQ'Q6#5N4PSOOdDH@Q7$K]N5B&;1UGK%RRJMF%kT#Q\=*XFDYbi\2a8Tik]!+2Z]!B
|
|
109
|
+
H-+JGbm3sa?TqAj'Yn?$"8Zq?CGF:nnacSE#o!"#LS),-]atfI32htJ9dPJE!cRbkL$:7-'+dH!2oC
|
|
110
|
+
f0e=h.4M%.4lH=.+XHN1=0I)c3Pa!7B@IAOcMlb'd,2a@t!s"u<9+IdORZB3K'+uj>SnG$[B,g!<]Q
|
|
111
|
+
PAL0J!N]6"!@p"p$tK#(YVdfQa!#K8K]TY=KO)!s",qPCPGtp1t]2<;MTqkNG/?!W]/C#>5FA!d5Ui
|
|
112
|
+
TtGFe^b?#p-g=/s%t_Sn&-Gk/WOd'ie#LKc+5n>'a+8b?[koBh+urDieoBGXUF4cs&qcjM+`'t2p],
|
|
113
|
+
V7a(aU\*j]eeSUhnS%LReqBGWb*20-fU/;J6/HQ7f4i-e=M4d6D-TR6#/,:;s+G+H[!lT>/dciUS.+
|
|
114
|
+
TO+sXX>:AGF\tAiWA4\ei"4q+N6Q.WtiOuRa+Ju\MHl/1/To5H,bK1-aL_&]''MS"//(YjQ/743]4H
|
|
115
|
+
(h5`F=V^Ip&GF_C\[/cbmRbYLMll+#%qJ5<M]:u3ep9*^t\dYcOBR?WB]4VYOkI]>-gpNm+qNc0'UA
|
|
116
|
+
OkiN,1QKH!KbVp2;I#Er<\kE;YHE[B=luW0ZqPo]DM1)ojtTCco;R[dgu]4Yc-4G5Km6rJ+n9G($9(
|
|
117
|
+
gNNP9F5(;Tf6cD!rWe)7G^_#u3?TF~>
|
|
118
|
+
%%EndData
|
|
119
|
+
end restore showpage
|
|
120
|
+
%%Trailer
|
|
121
|
+
%%EOF
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
%!PS-Adobe-3.0 EPSF-3.0
|
|
2
|
+
%%Pages: 1
|
|
3
|
+
%%BoundingBox: 0 0 148 35
|
|
4
|
+
%%DocumentData: Clean7Bit
|
|
5
|
+
%%LanguageLevel: 2
|
|
6
|
+
%%EndComments
|
|
7
|
+
%%Page: 1 1
|
|
8
|
+
save 9 dict begin
|
|
9
|
+
{/T currentfile/ASCII85Decode filter def/DeviceRGB setcolorspace
|
|
10
|
+
/F T<</BitsPerComponent 8/Columns 148/Colors 3/Predictor 10>>/LZWDecode filter def
|
|
11
|
+
<</ImageType 1/Width 148/Height 35/BitsPerComponent
|
|
12
|
+
8/ImageMatrix[1 0 0 -1 0 35]/Decode
|
|
13
|
+
[0 1 0 1 0 1]/DataSource F>> image
|
|
14
|
+
F closefile T closefile}
|
|
15
|
+
%%BeginData:;
|
|
16
|
+
exec
|
|
17
|
+
J,isG0E`.##D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O?u31)'kMB-^757;Rp>H>nrLFk#4:9enm
|
|
18
|
+
@9:1P"UeFn;TTMT<"fDHBj'`q4r<4ZX!SO*=mW\fPA(6)@MeDT7'eIi*oK%FI3)\mD4:UEXXoQq%1\
|
|
19
|
+
S77.!#I-@Se2%47P#*#mEuYH^d0RCRf/[Qrdih,f*l1G$X0mpZ$=o]49E9/[aY[SQu")WHG1JPJ<2&
|
|
20
|
+
;?693`^eD-_23IsB>#(AfOn'%5^M[%4Zg%Da0FgG.?uRVJ<Q*K0%d/aqbjY[amhQaY8-0)"!C:+d0L
|
|
21
|
+
-N`#6M^A//SI#rpjGPT"MD3iq$MhE?m9;O=T2JqVkX##;,4<&4Z^#.=rZCe9qQ&BH0!iX7?\N,:Y/A
|
|
22
|
+
Z33G6(aKlPL]@GUW+Z=.SnHCM!1a4rN";SS)WKh.-Af*NM#k_9!!qLj!.5m04<0!(knkHBL7lU'+p@
|
|
23
|
+
t.KGoL%csdQ;5TgEP+7CHH\1unBjEmK98KM0&V)cd0J0Js0Dj4bYP2_$Gbbg+WTE#JcJ-#-P)?QQlQ
|
|
24
|
+
id=RlZ!N1Y_"S$T?KPm$A!n-NX(H\l09,e^_tpVc\n7S#6CJgmUmU#0Mluu!:V=aYlGc>O/l3*Os:"
|
|
25
|
+
$J3F+--ebd.3_kqd=eAF9e:!t/=jVL5B$'%"P:"A`/VF7?dNAUABGi[%C)^PqRtj:5>ob)MJdER=Oa
|
|
26
|
+
M9iJuR$9"lU-jB!KK.h^AI0ao$K-MCigQ7qb$_NA/F%Q59ThH)u=X-XliX3[\sP!.sL?$j7/3$/A8`
|
|
27
|
+
!+_N#Wm$nhF<:bPhcCdT_@CZ0+9D.V2h1lD!J8+;$jfLu8/;7._$ClT'IO_S#FP]Cc6:>4NQAI,0iQ
|
|
28
|
+
/B7jpHq.,nC`re3L+^#k:/lp)6dJA^;k#o4gYfEOAaHP1q$.O\$p!$sYB!",T[fI2K)h8YO-Wsg8PO
|
|
29
|
+
5cNp#Wn:Prknd@iQQQ\7R>B$!?`ne!1]sdp(IYgBb4;a_Z5o;"Q8JqAn]<2l2Uur+=o%!i42`e*:j0
|
|
30
|
+
/-A)>,8e!7R/pEj1Q\Y[=UL4bVYD.T.*^KtmR/CY?T\p^h*0JC@E%%A-+p3]l1$iq6Vm^3t7>WpC_#
|
|
31
|
+
OR>W#Gf2GT)7P6G]10#Xgt8Oaq(t7gYidRJLlma+#9@<ddt[\Z6+5!B.6ab4#7WMe56>?]e_>DHqcO
|
|
32
|
+
p\"SbJ.;S[,YEglNYOk,h.Rr7)M0(Q!Z6R;+_@b2PnNXlgq2?jWNlFc_@6F"lOkS!<3:m?Fp.jG"s1
|
|
33
|
+
[XHOi@U5"D7ILBHaf%mW*<a/AtZ"6</akD0*PJOUlE\>_lipcaJl##HQR`"kUi%"TgJ#CpK40lS\ji
|
|
34
|
+
b832,OGBJ7^e,r0jHjhV?0)?8K))i>$VE>29*NB\d1[sN\SC"78fm$UJ+C8i(WTn0STs%XG6k4L&aO
|
|
35
|
+
aeleQ*!Ko3'njtUHPTt8mO)bAY3ls<#8@u$J&`e]b2XZC:)"J^Ma8cXBP`n?\pFceCJq,-9!!^O;"C
|
|
36
|
+
U"'Pn40$LthKbOH#'Wfo,q3)^GIB,o`G4I/Uig%06j%oLHna0o'`=*eVCW&!?WNa5aH*?p4`47t2eI
|
|
37
|
+
Ja"=-J:A(AlokfFL,VKlmJpW/C64P@*M^PqNq)Eoa5Y5B!-AX#+:nP_@P!/\G^^/hmQSf<I#<G+2h6
|
|
38
|
+
De!Jebp+(I-CN_uZ37o9F3c>XPM"rofS"V)VJL3SdTQ>2S);BT_6&WXuC3$2u5*b42J!0@`m5g%1O!
|
|
39
|
+
,)Z>,JOQ4@A+c"U2\4!,X7=f#67;p,t0!@4pTSIRF9AP!!!l@%ZOF3/4rd)\*"$TC6Ea*#gj0Ung=W
|
|
40
|
+
6<Zg7"JrUTrn:8:W!$cT+O'os?JA>:nTWkJr-:'>^%(/gO]Rq[XGY#UekETMdB-m6OGeaU<*cXR[J=
|
|
41
|
+
odG5f9RNY$>n8Z&1A.!508FN)0tmbWAdWhGPIi!s_)3#"(p[#&$sC*ci"q7u6g[+Zr#J6,#I:i#PCa
|
|
42
|
+
+Dq]5NZs'',QkhY8.'?s+[uau5H'E?<T!on6+@X@JV5%qB-f9foZ7)#J9-b/:`i-I/cggeW/Ui/4pK
|
|
43
|
+
r*$$AWsM/e+qKo"b3i%+j2OEq540FP(:\/#>.EXT[)[f?LmG`QjG+TanX"5m^=9R2d_a0>7P!o.Go@
|
|
44
|
+
;IkmT\LU(!q)m25b!9(-Nuap49WGp'>`l\!\5[O$ZV%^!iV>$JD^rg_8Nr>5R/$tp`tD5(]rV0BE1A
|
|
45
|
+
p?4A$u-Usag"99uj=g2uP^dt10i?SYYUsg9=V.GNofR;-K7_+EO$NR?OfA#O8.`L>q(#n_(!ann.7a
|
|
46
|
+
UI[J4'M?aaVT%!X0$a?lPpR#WtVuqE'39UnRS17@dmK@OCSRN?Q.BJ;=TNVjm_sZ.qK1fXVqG-R42h
|
|
47
|
+
+p!H!mR0FDI1*k8&D8PV/VTR,%H5S^"k_?:U?M[g[32#*!Zbf:#S$kH&d,J-jAr!/<Xo-I0aB\g&Rc
|
|
48
|
+
ds!RNP_%^YdIN*LCa!V#&ElAuh"5]MSl7P_ru_B!#T&HK$iQIu(Y.&*eO%`)1)"i012iAf-a#Yr`:8
|
|
49
|
+
GO/sW:LR!F>67Xj:jrMDH`ah%KVq.c&)W*ZdiV$P^qp=,=S7G7;dC.`5hp^S9kH;(bS6rX)oJs"bM7
|
|
50
|
+
s!pnS>E22n2UsL`=`dmJ!@>$:m;3EWKYVlXjfRh'FE]8c`j>RP7I=Ts5'0't.;?MEIJFEn-#C-(d8i
|
|
51
|
+
DKeY-:8D/<TuW=CR;q=?":I,68nmBFdE*+T\eT$=LXVf!2A;LJV:i_`/,-:`MBV\>g%sr'ZMfr\J3^
|
|
52
|
+
oTDIik_P@]5"E]4*(+S#LEKn)6O5SX\n&(5lI&5=#Ytuk&-*5MMk(+s\c;_P"74AC36.-X$D><DLg\
|
|
53
|
+
@8JKPg3WW_rU/>M,.J;"Pe=:ta%-8to;+s*NC&HP-2#f(Zi)'cY=%RJ,F5c=tm5aV`b@E^l%5a*#De
|
|
54
|
+
3J^&.l>E$%S*/l"9:,'a$:1P!9*9ENNO0""R7#E"<G>,*p,ko9]cMo7KHqn)F<9s6%0a1dL(MFZpt)
|
|
55
|
+
r?nq`?"s.4X!COp9i@l/1gaXnK)$-ZWAiqKEXAC;<!!Qa4O>JM>`rj:).q)Hp@A`01c3?OY!Wg5KTs
|
|
56
|
+
2m/=9F'b$:%ht@?MT2j;C7j*eVZYTlq3eP3G4o+2pLFBdNf[)utV1GRs'?TFBl?Z:[s&$_bZ@Wd]Y6
|
|
57
|
+
O<Xsq5CfO5TH7"ic5C'O.3aWVJT`)C[KE0>"@+:6lJ<ARgirk0*hb%n5[8m@8cXAW*MB2E!SR[;j;W
|
|
58
|
+
oL]nIR_!!E]rGTL7'"(2rLi&1V7VNN/R3eA?.+B/J?^ijGOI,YJRV/UiQKE*,#,[n\Qi%b@D_>qY46
|
|
59
|
+
>8&ii04HH;A[/[!5O6t!HJ[#WWYSg#[gWL?m#I-%KM(P<hXmY6+dR+14/!`"^j.f@>5TWg_jM"*/'=
|
|
60
|
+
TM:Q>cE^p00!90lD!-\^"$k*,N"TU^fTsbqlfF,MB(r<kq":e<01'%Dr)?J+kTUHrf(nUl20`ueFiU
|
|
61
|
+
/+jg)o5W!?_RgUO3S[NWYq^"J@G+5Qi,om*\_IOA8V2aNu?2E\ATu*oZT(JX!c3:]W:Y+2QU\5hH>b
|
|
62
|
+
1_8Ne#N-YtJ`\#ine<6V)8Ip-KSB](9R_sRSRMM'W^Irkm-O#;2c?=1#4Rh\fIu6Ypk.o6JPZV;*X`
|
|
63
|
+
!j*T1PVJXRV\rY$H8*[">\_:BAWdf9@^$K.!H5e%+c@N`IT"lLR6J\3%t-l[a2bQ%hgn_>U%(aN_5!
|
|
64
|
+
$L8;J^P:kZ2ip(!63SaO%KBQX;m1"];".)Kk+3j('&k;d(rHpU"U4>/f+N%%DY4@^t&cbSB:qsc/JX
|
|
65
|
+
-+CYI^VA(/I"J@eNXXG>aQjVc/"lZg.J_UdP:`Fod"6;KD+:&n%]H'kp+n.So+k@^nq?(+L!22jm!/
|
|
66
|
+
Lb#/coJjA=shO@%&+/`XuXJ!FSI6O>IdtclSnC1bok&_A>8lk3G8477!"H5_K@.1n'LW,)F5\TunEE
|
|
67
|
+
7*]@U?(`&&C.t;]2?H7S%Nr+`KcitnOuh$iXMm^RVBhBshC-10"lLX5M/j>^c6'hed(pRjL-,J:8-o
|
|
68
|
+
9@)j2BH!(8\3<f1m3!$L>.!$i2.aG,9N`F&b+J,gUdg'"[X(ZELY5tDk:edZ#5"%)^YNm/9fZ>JP'$
|
|
69
|
+
D9um%-3t2a<'Q<)\`o!+dO.(?3!Ge!2)F\^a9a=3ZK8C"/2(lTX4sg"J$a2"b8i?,]Y!Ce<OP#+$o9
|
|
70
|
+
fO"_Y`&t\GN+KG)YA2XDqKY+4`WhKt)9(X-CIM/=e#.)5LCc[D#?C;p/4-_"UKK^FXmN9Qc<)kJ!^a
|
|
71
|
+
M60jr>Q8'qkU41^!pCmjg6&5b]AP;LSWhJct!S)<"U9!#c"@*!2ca!9"J)J]8\ghA2d*#s_Sq?oS3q
|
|
72
|
+
+9B7jE$RLqW6QTo3u"km1ChckkbfW?#S2H7!b#1FU!uR4#l```U>QM#KQ73g(]Y^7)WCAq@A4dGFoo
|
|
73
|
+
MT_k9?G+^bQU)@?LY*T00`TFMqF!qcT&MBG7_+P7O)k0$'M#%0Im`1Vc?4<[-_BI#bN!2rYC*9i%h?
|
|
74
|
+
(q0+9mdBn,T))l!3t/X5]-Vh9H2p"#p<[Z+<tD4-?`")o-'VC_/^D:]G7-C*T>)RhuQhfb_*b>![%a
|
|
75
|
+
L.qg!MA3E]2,fYoG.ZBdPC9+'?!3-VqUC.dQ"<k^Z>saDL5QV*S5^j!'P#SZ]<Hp'(\o;':$QsC*iP
|
|
76
|
+
N.APTA[D!FSY)+;,A3O<$VR(1D"Z&/GTQ49<6@"[FUG5_K:d.T>F1g`h9R!^n3r,)Tc7"$dh=J8bNY
|
|
77
|
+
3,f1c*=1.U7`Jt=0FGXV*hg>K8eGfgPQd^,%R=%q+i%ak/34sRR2&2H,,2!Nj;7&[<hn*f'/Ek7`[K
|
|
78
|
+
/hMKO*BO;%e*!"2&"5f*'nj2gQ'UIjFk*H4i@Vdp^^`#R^0&)gt(5hm17+rA)@*/E$5iX-c^6Bpc\K
|
|
79
|
+
YfF6JgMSk5_EOS_mRLh+qC!VrW@[!![2.di0Y*AbQU;P*J*c#/5Q?9[K[jZ!['+q@:1#4i!uG3)Lt9
|
|
80
|
+
d_."<mS?]rkCVj3`8P1,`V?P6R*hge!J^POR$lt*i*F[58=F?$XdJsr@'d85Ll"Xl4r^3=_%)?TY^]
|
|
81
|
+
5@j`W4uK*5Db!6-G/EarP_I"aFu'6'<1<@Mj[+K_PA&_C.OFdhIRK"bI-b5V@D&4M.a[>s[d)64=g,
|
|
82
|
+
bT247%\[\TTr];#?K3NJ.3aoeJ@5U>A.QJ!(;TbOJTMHRJ.4b["!R+tCGCeM;h/=(>gR43K$="H#Q\
|
|
83
|
+
>u$\3UD+Y3r9+q4NS"[d5HlSKV='E`6c"[H+8@IbMulRdunW<2-5:Ltu2nh#l$M$MF5;RVO_d-/<K!
|
|
84
|
+
!.B`i"uR8=M(AN*m'R0V(rKfQlsc*(dX6&$!J7FH3">eJ5mR=+j@!dg]l\'"Lq\hi[SW9VS,;*C$Ac
|
|
85
|
+
#DEF69*$=GsX?f#c@A?C;rtQXh)CU=DE;gS;n-D9Y"3X"S@E]a#j:]:@*$>dof#0;R3Kn+N]YH+oep
|
|
86
|
+
7ND]H!Wt'ObktTd1I@ar^_)"/$n>_/^HFg`-@;*C*^0J2ggI\h7_/!(!D\Z:5q"aGC!1j[dH7_4Va@
|
|
87
|
+
g&N$u*LP8NiZAkIA/hn1$@s<;TG:qpe,Wka*O@:S;'Z/carH!-'0tCYW3?BS6ONpd)hH-?_'U(.0E`
|
|
88
|
+
L<*?)GmES:EN7Q]Sc*'s95!9!*,63FY_KVS5lP+QQYNE(`$<h];d@IP.#YT,q-'S2qX!"9n.&N`=;V
|
|
89
|
+
;Nn-+n&g4J/]Ze!!">GP-,c*ndWBl"F;!@loNX0W$'gL6Uk-T"EZDO(Sc,k7>'A:@<`ZN31L$YW5')
|
|
90
|
+
OJ5??`mL0)>5G/5bQ!FP;YWFQ*jT#8^q=@o9Nmkof<'fK'i>NCrKG%^2*'cC`^^Wk<4=)K"/*uN*_$
|
|
91
|
+
Ul"NDt,;+5tNqqb0%:\CNp	Y,s+HQc]])uf6%cKGcm1UCoWE4U*Y<fJQ+M7uq-4/U^"mLRg=[+A]
|
|
92
|
+
7a:!P&"tlu2BW!dX@-LbS&)$D7<f`+bQ:$>!>"Gsd;%:LmL2@,!rt0)/D;1r.QhTF*j9)VH=.WLa9_
|
|
93
|
+
im"RDrC_@*^op(kK#)PIEQJ]%U$s(bbdYg1FBi`Pi>rO7Re+Uce$!W!B/6l<`[&-8pB_!2&1U^-rm"
|
|
94
|
+
L7Bdi!L:ZQ&MQnc<p^%6AlB:98WcX1l7WhiX-[2T`79['4I7I6,Xf9^];2;(kKOAJZ9c!5Qee;*!L'
|
|
95
|
+
Y"[mLDP3g@%(4guS+[-]ng'.ON!C>.7TJmX\NB<d9*MM+-!=06EKcsh6e8A5#6#mkeFr=`C!C.PDC,
|
|
96
|
+
=Bb#&F@8+(=dP@)*">IK95@ULdq\0$4k/O\J`H/4F)3?qeY;7"un[)b!tG+oDebXp/Y5dZD<O!+H$r
|
|
97
|
+
?l7kT!A;#H^^:h1$l=Hb(4-)b<m1PPN#P(4(?(d2c!DI."9IbfA4J+$6KG8B*YdDN(#d"75dCIRqAj
|
|
98
|
+
!$(+Z`o5RrMo<7X;QkO:5,6)+SA":ROl",F0)^eR4h!!Ifb)mraMTEH9IJ<g33'X.FEi#eCQ/-A-K*
|
|
99
|
+
!,(C7TUmFe5*%`Os.+N!RM0]nua)`!26&*."X)tH5rWM*l/U(!*f`USs[@jR/dF/Z]5HEnelWo!?n6
|
|
100
|
+
Y8:i!<jqo9,'VS,(4gG/qS%#,L*l7dK+o`g""p'5\j#?ib(_doa_bs%#a1skB^`4(4":/SU"']6&!!
|
|
101
|
+
ipu1(F=s)k6OCJ50JP-r-le+2J'q=HH-$dRPVa#2h096*GmZ@%$I[J:@<1%QXX(<:4JM.j><_GJjUD
|
|
102
|
+
d(imAU*T40O_Ri\!Z^OjYg5p;($I3"d_\<]:uV0h6.tNHqA@&WLbJ0"?s!H9q2%?C#`tJsTqWJ,kQq
|
|
103
|
+
6F!hdiJ8GXFD/-4ZG(')8W5bJM$Hldf[!MD^s@LN9R[m+=#+:]1Ie7:B@Op+-/'1LJ$"p&%+a7pVY!
|
|
104
|
+
<@Wp&V(Qt!!r[Y!0M4K#RqLK7H6.j^_0WpQUVk;LCrU[+pS1"YLiCF=oa&uahRub1h@O*!.]".oC\R
|
|
105
|
+
$Dk;pI&4doLrgh&<^_cA$'N"pqa?nV!U3gI:!5O+=!.YP+#m#Zu.l=[e!<rRT+jbHJ<#l5R"[S9\\3
|
|
106
|
+
:H-!b^uf9icEV$%s3&!Z=!4^hgBL?iXjG!?hG-UCYE'gf=nX)MbX83L'0VGmo8>#@$<[U6a*^m$C)p
|
|
107
|
+
!9nmCJhOn@q<Id)5A[[J47A10>J1pX\@^@Ss/f;n2.-MllIZMr^_17[hiGjhguhiFS(4Ybn4FY'HFG
|
|
108
|
+
:&&dEqcLE]TKOQ'Q6#5N4PSOOdDH@Q7$K]N5B&;1UGK%RRJMF%kT#Q\=*XFDYbi\2a8Tik]!+2Z]!B
|
|
109
|
+
H-+JGbm3sa?TqAj'Yn?$"8Zq?CGF:nnacSE#o!"#LS),-]atfI32htJ9dPJE!cRbkL$:7-'+dH!2oC
|
|
110
|
+
f0e=h.4M%.4lH=.+XHN1=0I)c3Pa!7B@IAOcMlb'd,2a@t!s"u<9+IdORZB3K'+uj>SnG$[B,g!<]Q
|
|
111
|
+
PAL0J!N]6"!@p"p$tK#(YVdfQa!#K8K]TY=KO)!s",qPCPGtp1t]2<;MTqkNG/?!W]/C#>5FA!d5Ui
|
|
112
|
+
TtGFe^b?#p-g=/s%t_Sn&-Gk/WOd'ie#LKc+5n>'a+8b?[koBh+urDieoBGXUF4cs&qcjM+`'t2p],
|
|
113
|
+
V7a(aU\*j]eeSUhnS%LReqBGWb*20-fU/;J6/HQ7f4i-e=M4d6D-TR6#/,:;s+G+H[!lT>/dciUS.+
|
|
114
|
+
TO+sXX>:AGF\tAiWA4\ei"4q+N6Q.WtiOuRa+Ju\MHl/1/To5H,bK1-aL_&]''MS"//(YjQ/743]4H
|
|
115
|
+
(h5`F=V^Ip&GF_C\[/cbmRbYLMll+#%qJ5<M]:u3ep9*^t\dYcOBR?WB]4VYOkI]>-gpNm+qNc0'UA
|
|
116
|
+
OkiN,1QKH!KbVp2;I#Er<\kE;YHE[B=luW0ZqPo]DM1)ojtTCco;R[dgu]4Yc-4G5Km6rJ+n9G($9(
|
|
117
|
+
gNNP9F5(;Tf6cD!rWe)7G^_#u3?TF~>
|
|
118
|
+
%%EndData
|
|
119
|
+
end restore showpage
|
|
120
|
+
%%Trailer
|
|
121
|
+
%%EOF
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
2
3
|
module Brcobranca
|
|
3
4
|
module Boleto
|
|
4
5
|
class BancoBrasil < Base # Banco do Brasil
|
|
@@ -10,16 +11,15 @@ module Brcobranca
|
|
|
10
11
|
validates_each :numero_documento do |record, attr, value|
|
|
11
12
|
valor_tamanho = value.to_s.size
|
|
12
13
|
registro_tamanho = record.convenio.to_s.size
|
|
13
|
-
quantidade =
|
|
14
|
-
when (valor_tamanho > 9) && (registro_tamanho == 8)
|
|
14
|
+
quantidade = if (valor_tamanho > 9) && (registro_tamanho == 8)
|
|
15
15
|
'9'
|
|
16
|
-
|
|
16
|
+
elsif (valor_tamanho > 10) && (registro_tamanho == 7)
|
|
17
17
|
'10'
|
|
18
|
-
|
|
18
|
+
elsif (valor_tamanho > 7) && (registro_tamanho == 4)
|
|
19
19
|
'7'
|
|
20
|
-
|
|
20
|
+
elsif (valor_tamanho > 5) && (registro_tamanho == 6) && !record.codigo_servico
|
|
21
21
|
'5'
|
|
22
|
-
|
|
22
|
+
elsif (valor_tamanho > 17) && (registro_tamanho == 6) && record.codigo_servico
|
|
23
23
|
'17'
|
|
24
24
|
end
|
|
25
25
|
record.errors.add attr, "deve ser menor ou igual a #{quantidade} dígitos." if quantidade
|
|
@@ -102,7 +102,7 @@ module Brcobranca
|
|
|
102
102
|
when 6
|
|
103
103
|
codigo_servico ? 17 : 5
|
|
104
104
|
else
|
|
105
|
-
|
|
105
|
+
raise Brcobranca::NaoImplementado, 'Tipo de convênio não implementado.'
|
|
106
106
|
end
|
|
107
107
|
quantidade ? @numero_documento.to_s.rjust(quantidade, '0') : @numero_documento
|
|
108
108
|
end
|
|
@@ -145,7 +145,7 @@ module Brcobranca
|
|
|
145
145
|
"#{convenio}#{numero_documento}#{agencia}#{conta_corrente}#{carteira}"
|
|
146
146
|
else
|
|
147
147
|
# Nosso Número de 17 dígitos com Convenio de 6 dígitos e sem numero_documento, carteira 16 e 18
|
|
148
|
-
|
|
148
|
+
raise "Só é permitido emitir boletos com nosso número de 17 dígitos com carteiras 16 ou 18. Sua carteira atual é #{carteira}" unless %w(16 18).include?(carteira)
|
|
149
149
|
"#{convenio}#{numero_documento}21"
|
|
150
150
|
end
|
|
151
151
|
when 4 # Nosso Número de 7 dígitos com Convenio de 4 dígitos e sem numero_documento
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
2
3
|
module Brcobranca
|
|
3
4
|
module Boleto
|
|
4
5
|
class Banestes < Base # Banestes
|
|
5
|
-
|
|
6
6
|
# <b>REQUERIDO</b>: digito verificador da conta corrente
|
|
7
7
|
attr_accessor :digito_conta_corrente
|
|
8
8
|
|
|
9
|
-
validates_length_of :agencia, maximum: 4, message:
|
|
10
|
-
validates_length_of :conta_corrente, maximum: 10, message:
|
|
11
|
-
validates_length_of :numero_documento, maximum: 8, message:
|
|
9
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
|
10
|
+
validates_length_of :conta_corrente, maximum: 10, message: 'deve ser menor ou igual a 10 dígitos.'
|
|
11
|
+
validates_length_of :numero_documento, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
|
12
12
|
validates_length_of :variacao, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
|
|
13
13
|
validates_length_of :carteira, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
|
14
14
|
validates_length_of :digito_conta_corrente, is: 1, message: 'deve ser igual a 1 dígitos.'
|
|
15
15
|
|
|
16
16
|
def initialize(campos = {})
|
|
17
|
-
campos = { carteira:
|
|
17
|
+
campos = { carteira: '11', variacao: '2' }.merge!(campos)
|
|
18
18
|
super(campos)
|
|
19
19
|
end
|
|
20
20
|
|
|
@@ -22,35 +22,35 @@ module Brcobranca
|
|
|
22
22
|
#
|
|
23
23
|
# @return [String] 3 caracteres numéricos.
|
|
24
24
|
def banco
|
|
25
|
-
|
|
25
|
+
'021'
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
# Dígito verificador do banco
|
|
29
29
|
#
|
|
30
30
|
# @return [String] 1 caractere.
|
|
31
31
|
def banco_dv
|
|
32
|
-
|
|
32
|
+
'3'
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
# Agência
|
|
36
36
|
#
|
|
37
37
|
# @return [String] 4 caracteres numéricos.
|
|
38
38
|
def agencia=(valor)
|
|
39
|
-
@agencia = valor.to_s.rjust(4,
|
|
39
|
+
@agencia = valor.to_s.rjust(4, '0') if valor
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
# Conta
|
|
43
43
|
#
|
|
44
44
|
# @return [String] 7 caracteres numéricos.
|
|
45
45
|
def conta_corrente=(valor)
|
|
46
|
-
@conta_corrente = valor.to_s.rjust(10,
|
|
46
|
+
@conta_corrente = valor.to_s.rjust(10, '0') if valor
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
# Número documento
|
|
50
50
|
#
|
|
51
51
|
# @return [String] 8 caracteres numéricos.
|
|
52
52
|
def numero_documento=(valor)
|
|
53
|
-
@numero_documento = valor.to_s.rjust(8,
|
|
53
|
+
@numero_documento = valor.to_s.rjust(8, '0') if valor
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
# Nosso número para exibição no boleto.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
module Brcobranca
|
|
4
|
+
module Boleto
|
|
5
|
+
class Banrisul < Base # Banrisul
|
|
6
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
|
7
|
+
validates_length_of :conta_corrente, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
|
8
|
+
validates_length_of :numero_documento, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
|
9
|
+
validates_length_of :carteira, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
|
|
10
|
+
validates_length_of :convenio, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
|
11
|
+
|
|
12
|
+
def initialize(campos = {})
|
|
13
|
+
campos = { carteira: '2' }.merge!(campos)
|
|
14
|
+
super(campos)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Codigo do banco emissor (3 dígitos sempre)
|
|
18
|
+
#
|
|
19
|
+
# @return [String] 3 caracteres numéricos.
|
|
20
|
+
def banco
|
|
21
|
+
'041'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Dígito verificador do banco
|
|
25
|
+
#
|
|
26
|
+
# @return [String] 1 caractere.
|
|
27
|
+
def banco_dv
|
|
28
|
+
'8'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Agência
|
|
32
|
+
#
|
|
33
|
+
# @return [String] 4 caracteres numéricos.
|
|
34
|
+
def agencia=(valor)
|
|
35
|
+
@agencia = valor.to_s.rjust(4, '0') if valor
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Conta
|
|
39
|
+
#
|
|
40
|
+
# @return [String] 8 caracteres numéricos.
|
|
41
|
+
def conta_corrente=(valor)
|
|
42
|
+
@conta_corrente = valor.to_s.rjust(8, '0') if valor
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Número documento
|
|
46
|
+
#
|
|
47
|
+
# @return [String] 8 caracteres numéricos.
|
|
48
|
+
def numero_documento=(valor)
|
|
49
|
+
@numero_documento = valor.to_s.rjust(8, '0') if valor
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Número do convênio/contrato do cliente junto ao banco.
|
|
53
|
+
# @return [String] 7 caracteres numéricos.
|
|
54
|
+
def convenio=(valor)
|
|
55
|
+
@convenio = valor.to_s.rjust(7, '0') if valor
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Nosso número para exibição no boleto.
|
|
59
|
+
#
|
|
60
|
+
# @return [String] caracteres numéricos.
|
|
61
|
+
def nosso_numero_boleto
|
|
62
|
+
"#{numero_documento}-#{numero_documento.duplo_digito}"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def agencia_conta_boleto
|
|
66
|
+
"#{agencia} / #{convenio}"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Posições 20 a 20 - Produto:
|
|
70
|
+
# 1 Cobrança Normal, Fichário emitido pelo BANRISUL.
|
|
71
|
+
# 2 Cobrança Direta, Fichário emitido pelo CLIENTE.
|
|
72
|
+
# Posição 21 a 21 - Constante 1
|
|
73
|
+
# Posição 22 a 25 - Código da Agência, com quatro dígitos, sem o Número de Controle.
|
|
74
|
+
# Posição 26 a 32 - Código de Cedente do Beneficiário sem Número de Controle.
|
|
75
|
+
# Posição 33 a 40 - Nosso Número sem Número de Controle.
|
|
76
|
+
# Posição 41 a 42 - Constante 40.
|
|
77
|
+
# Posição 43 a 44 - Duplo Dígito referente às posições 20 a 42 (módulos 10 e 11).
|
|
78
|
+
def codigo_barras_segunda_parte
|
|
79
|
+
campo_livre = "#{carteira}1#{agencia}#{convenio}#{numero_documento}40"
|
|
80
|
+
campo_livre + campo_livre.duplo_digito
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
2
3
|
# @author Kivanio Barbosa
|
|
3
4
|
module Brcobranca
|
|
4
5
|
module Boleto
|
|
@@ -149,12 +150,12 @@ module Brcobranca
|
|
|
149
150
|
|
|
150
151
|
# @abstract Deverá ser sobreescrito para cada banco.
|
|
151
152
|
def nosso_numero_boleto
|
|
152
|
-
|
|
153
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
|
153
154
|
end
|
|
154
155
|
|
|
155
156
|
# @abstract Deverá ser sobreescrito para cada banco.
|
|
156
157
|
def agencia_conta_boleto
|
|
157
|
-
|
|
158
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
|
158
159
|
end
|
|
159
160
|
|
|
160
161
|
# Valor total do documento: <b>quantidate * valor</b>
|
|
@@ -189,7 +190,7 @@ module Brcobranca
|
|
|
189
190
|
# @raise [Brcobranca::BoletoInvalido] Caso as informações fornecidas não sejam suficientes ou sejam inválidas.
|
|
190
191
|
# @return [String] código de barras formado por 44 caracteres numéricos.
|
|
191
192
|
def codigo_barras
|
|
192
|
-
|
|
193
|
+
raise Brcobranca::BoletoInvalido, self unless valid?
|
|
193
194
|
codigo = codigo_barras_primeira_parte # 18 digitos
|
|
194
195
|
codigo << codigo_barras_segunda_parte # 25 digitos
|
|
195
196
|
if codigo =~ /^(\d{4})(\d{39})$/
|
|
@@ -202,7 +203,7 @@ module Brcobranca
|
|
|
202
203
|
codigo = "#{Regexp.last_match[1]}#{codigo_dv}#{Regexp.last_match[2]}"
|
|
203
204
|
codigo
|
|
204
205
|
else
|
|
205
|
-
|
|
206
|
+
raise Brcobranca::BoletoInvalido, self
|
|
206
207
|
end
|
|
207
208
|
end
|
|
208
209
|
|
|
@@ -210,7 +211,7 @@ module Brcobranca
|
|
|
210
211
|
#
|
|
211
212
|
# @abstract Deverá ser sobreescrito para cada banco.
|
|
212
213
|
def codigo_barras_segunda_parte
|
|
213
|
-
|
|
214
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
|
214
215
|
end
|
|
215
216
|
|
|
216
217
|
private
|