diff --git a/src/main/java/org/jrimum/bopepo/BancosSuportados.java b/src/main/java/org/jrimum/bopepo/BancosSuportados.java
index 5a402973..5083bd96 100644
--- a/src/main/java/org/jrimum/bopepo/BancosSuportados.java
+++ b/src/main/java/org/jrimum/bopepo/BancosSuportados.java
@@ -370,6 +370,15 @@ public enum BancosSuportados{
*/
BANCO_VOTORANTIM("655", "59588111004443", "BANCO VOTORANTIM S.A.", "BANCO VOTORANTIM S.A."),
+ /**
+ * Tipo enumerado que representa o BANCO FIBRA S.A., código de
+ * compensação 224 site.
+ *
+ * @since 0.2
+ */
+ BANCO_FIBRA("224", "58616418000108", "BANCO FIBRA S.A.", "BANCO FIBRA S.A."),
+
/**
* Tipo enumerado que representa o Banco Sofisa, código de
* compensação 637 (titulo.getContaBancaria().getAgencia().getCodigo(), AGENCIA_LENGTH, Fillers.ZERO_LEFT));
+ this.add(new FixedField(titulo.getContaBancaria().getCarteira().getCodigo(), CARTEIRA_LENGTH, Fillers.ZERO_LEFT));
+ this.add(new FixedField(titulo.getParametrosBancarios().getValor(ParametroBancoFibra.OPERACAO), OPERACAO_LENGTH, Fillers.ZERO_LEFT));
+ this.add(new FixedField(titulo.getNossoNumero() + titulo.getDigitoDoNossoNumero(), NOSSO_NUMERO_COM_DV_LENGTH, Fillers.ZERO_LEFT));
+ }
+}
diff --git a/src/main/java/org/jrimum/bopepo/parametro/ParametroBancoFibra.java b/src/main/java/org/jrimum/bopepo/parametro/ParametroBancoFibra.java
new file mode 100644
index 00000000..1b7e9306
--- /dev/null
+++ b/src/main/java/org/jrimum/bopepo/parametro/ParametroBancoFibra.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2014 JRimum Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ * Created at: 21/01/2014 - 13:57:10
+ *
+ * ================================================================================
+ *
+ * Direitos autorais 2014 JRimum Project
+ *
+ * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
+ * usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
+ * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
+ * haja exigência legal ou acordo por escrito, a distribuição de software sob esta
+ * LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
+ * expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
+ * e limitações sob esta LICENÇA.
+ *
+ * Criado em: 21/01/2014 - 13:57:10
+ *
+ */
+package org.jrimum.bopepo.parametro;
+import org.jrimum.domkee.financeiro.banco.ParametroBancario;
+
+public enum ParametroBancoFibra implements ParametroBancario {
+ OPERACAO;
+}
\ No newline at end of file
diff --git a/src/main/resources/img/224.png b/src/main/resources/img/224.png
new file mode 100644
index 00000000..e3f64b05
Binary files /dev/null and b/src/main/resources/img/224.png differ
diff --git a/src/test/java/org/jrimum/bopepo/TestBancosSuportados.java b/src/test/java/org/jrimum/bopepo/TestBancosSuportados.java
index 1303ff36..5c1a1712 100644
--- a/src/test/java/org/jrimum/bopepo/TestBancosSuportados.java
+++ b/src/test/java/org/jrimum/bopepo/TestBancosSuportados.java
@@ -82,6 +82,7 @@ public void deve_ter_o_codigos_bacen_igual_o_da_especificacao_febraban() {
assertEquals(BancosSuportados.BANCO_B2S.create().getCodigoDeCompensacaoBACEN().getCodigoFormatado(), "218");
assertEquals(BancosSuportados.MONEYPLUS.create().getCodigoDeCompensacaoBACEN().getCodigoFormatado(),"274");
assertEquals(BancosSuportados.BANCO_VOTORANTIM.create().getCodigoDeCompensacaoBACEN().getCodigoFormatado(),"655");
+ assertEquals(BancosSuportados.BANCO_FIBRA.create().getCodigoDeCompensacaoBACEN().getCodigoFormatado(),"224");
assertEquals(BancosSuportados.BANCO_SOFISA.create().getCodigoDeCompensacaoBACEN().getCodigoFormatado(),"637");
}
diff --git a/src/test/java/org/jrimum/bopepo/campolivre/TestCLBancoFibra.java b/src/test/java/org/jrimum/bopepo/campolivre/TestCLBancoFibra.java
new file mode 100644
index 00000000..109ab40b
--- /dev/null
+++ b/src/test/java/org/jrimum/bopepo/campolivre/TestCLBancoFibra.java
@@ -0,0 +1,52 @@
+package org.jrimum.bopepo.campolivre;
+
+import org.jrimum.bopepo.BancosSuportados;
+import org.jrimum.domkee.financeiro.banco.ParametrosBancariosMap;
+import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
+import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
+import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
+import org.junit.Before;
+import org.junit.Test;
+
+
+public class TestCLBancoFibra extends AbstractCampoLivreBaseTest {
+
+ @Before
+ public void setUp(){
+
+ titulo.getContaBancaria().setBanco(BancosSuportados.BANCO_FIBRA.create());
+ titulo.getContaBancaria().setAgencia(new Agencia(1234, "1"));
+ titulo.getContaBancaria().setNumeroDaConta(new NumeroDaConta(6789));
+ titulo.getContaBancaria().setCarteira(new Carteira(500));
+ titulo.setNossoNumero("123456789");
+ titulo.setDigitoDoNossoNumero("1");
+ titulo.setParametrosBancarios(new ParametrosBancariosMap(org.jrimum.bopepo.parametro.ParametroBancoFibra.OPERACAO, 1234567));
+
+ createCampoLivreToTest();
+
+ setCampoLivreEsperadoComoString("1234567890500123456789100");
+ }
+
+
+ @Test(expected = CampoLivreException.class)
+ public void seNaoPermiteNossoNumeroNulo() {
+ testeSeNaoPermiteNossoNumeroNulo();
+ }
+
+ @Test(expected = CampoLivreException.class)
+ public void seNaoPermiteNossoNumeroComBrancos() {
+ testeSeNaoPermiteNossoNumeroComBrancos(CLBancoFibra.NOSSO_NUMERO_COM_DV_LENGTH);
+ }
+
+ @Test(expected = CampoLivreException.class)
+ public void seNaoPermiteNossoNumeroComEspacos() {
+
+ testeSeNaoPermiteNossoNumeroComEspacos(CLBancoFibra.NOSSO_NUMERO_COM_DV_LENGTH);
+ }
+
+ @Test(expected = CampoLivreException.class)
+ public void seNaoPermiteNossoNumeroComTamanhoDiferenteDe10() {
+ testeSeNaoPermiteNossoNumeroComTamanhoDiferenteDoEspecificado(CLBancoFibra.NOSSO_NUMERO_COM_DV_LENGTH - 1);
+ }
+
+}