From 8ab1e99ac20f0a52307440320d4dbfc0d684b598 Mon Sep 17 00:00:00 2001
From: Alessandro Bruno Lima
Date: Tue, 7 Nov 2023 09:56:00 -0300
Subject: [PATCH] =?UTF-8?q?Tratamento=20para=20c=C3=B3digo=20do=20cedente?=
=?UTF-8?q?=20com=207=20posi=C3=A7=C3=B5es?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../CLCaixaEconomicaFederalSIGCB.java | 62 +++++++++++--------
1 file changed, 35 insertions(+), 27 deletions(-)
diff --git a/src/main/java/org/jrimum/bopepo/campolivre/CLCaixaEconomicaFederalSIGCB.java b/src/main/java/org/jrimum/bopepo/campolivre/CLCaixaEconomicaFederalSIGCB.java
index 5d6f7fd5..51754492 100644
--- a/src/main/java/org/jrimum/bopepo/campolivre/CLCaixaEconomicaFederalSIGCB.java
+++ b/src/main/java/org/jrimum/bopepo/campolivre/CLCaixaEconomicaFederalSIGCB.java
@@ -28,8 +28,10 @@
*/
package org.jrimum.bopepo.campolivre;
+
import static org.jrimum.vallia.Modulo.MOD11;
+import org.apache.commons.lang3.StringUtils;
import org.jrimum.domkee.banco.ContaBancaria;
import org.jrimum.domkee.banco.Titulo;
import org.jrimum.texgit.Fillers;
@@ -42,7 +44,8 @@
* O campo livre para o modelo SIGCB segue esta forma:
*
*
- *
+ *
*
*
* Posição |
@@ -117,14 +120,14 @@ class CLCaixaEconomicaFederalSIGCB extends AbstractCLCaixaEconomicaFederal {
* Modalidade de cobrança.
*/
private static final int COBRANCA_REGISTRADA = 1;
-
+
/**
* Modalidade de cobrança.
*/
private static final int COBRANCA_NAO_REGISTRADA = 2;
-
+
/**
- * Constante que indica emissão de boleto pelo cedente.
+ * Constante que indica emissão de boleto pelo cedente.
*/
private static final int EMISSAO_CEDENTE = 4;
@@ -135,27 +138,31 @@ class CLCaixaEconomicaFederalSIGCB extends AbstractCLCaixaEconomicaFederal {
*
*
* @param titulo
- * - Título com as informações para geração do campo livre.
+ * - Título com as informações para geração do campo livre.
*/
CLCaixaEconomicaFederalSIGCB(Titulo titulo) {
-
+
super(FIELDS_LENGTH);
ContaBancaria conta = titulo.getContaBancaria();
String nossoNumero = titulo.getNossoNumero();
- Integer dVCodigoDoCedente = calculeDigitoVerificador(conta.getNumeroDaConta().getCodigoDaConta().toString());
+ Integer dVCodigoDoCedente = null;
+ if (StringUtils.isNotBlank(conta.getNumeroDaConta().getDigitoDaConta()))
+ dVCodigoDoCedente = Integer.valueOf(conta.getNumeroDaConta().getDigitoDaConta().toString());
+ else
+ dVCodigoDoCedente = calculeDigitoVerificador(conta.getNumeroDaConta().getCodigoDaConta().toString());
this.add(new FixedField(conta.getNumeroDaConta().getCodigoDaConta(), 6, Fillers.ZERO_LEFT));
this.add(new FixedField(dVCodigoDoCedente, 1));
this.add(new FixedField(nossoNumero.substring(0, 3), 3));
-
- if(conta.getCarteira().isComRegistro()){
-
+
+ if (conta.getCarteira().isComRegistro()) {
+
this.add(new FixedField(COBRANCA_REGISTRADA, 1));
-
- }else{
-
+
+ } else {
+
this.add(new FixedField(COBRANCA_NAO_REGISTRADA, 1));
}
@@ -167,8 +174,9 @@ class CLCaixaEconomicaFederalSIGCB extends AbstractCLCaixaEconomicaFederal {
}
/**
- * Gera o número que serve para calcular o digito verificador do campoLivre, que é todo o campo livre menos o dígito verificador.
-
+ * Gera o número que serve para calcular o digito verificador do campoLivre, que
+ * é todo o campo livre menos o dígito verificador.
+ *
*
* Os campos utilizados são:
*
@@ -200,34 +208,34 @@ private String gereCampoLivre() {
* @since 0.2
*/
private int calculeDigitoVerificador(String numeroParaCalculo) {
-
+
int soma = Modulo.calculeSomaSequencialMod11(numeroParaCalculo.toString(), 2, 9);
int dvCampoLivre;
-
+
if (soma < MOD11) {
-
+
dvCampoLivre = MOD11 - soma;
-
+
} else {
-
+
int restoDiv11 = soma % MOD11;
-
+
int subResto = MOD11 - restoDiv11;
-
+
if (subResto > 9) {
-
+
dvCampoLivre = 0;
-
+
} else {
-
+
dvCampoLivre = subResto;
}
}
-
+
return dvCampoLivre;
}
-
+
@Override
protected void addFields(Titulo titulo) {
// TODO IMPLEMENTAR