@Override
public String apply(Cobranca cobranca) {
String idDaEmpresa = new BradescoCarteira(cobranca).toString();
CobrancaOpcoes opcoes = cobranca.getOpcoes();
Instrucao instrucao1 = opcoes.getInstrucao1();
int instrucao1Value = instrucao1.getCodigo();
Instrucao instrucao2 = opcoes.getInstrucao2();
int instrucao2Value = instrucao2.getCodigo();
switch (instrucao1.getCodigo()) {
case 5: // protesto falimentar
case 6: // protesto
case 18: // decurso prazo
instrucao2Value = instrucao1.intValue();
break;
}
Titulo titulo = cobranca.getTitulo();
Cedente cedente = titulo.getCedente();
BradescoSacadorAvalista sacadorAvalista;
sacadorAvalista = BradescoSacadorAvalista.of(cedente.getCadastroRFB(), cedente.getNome());
Sacado sacado = titulo.getSacado();
CadastroRFB cadastroSacado = sacado.getCadastroRFB();
TipoDeIncricaoDoSacado tipoDeIncricaoDoSacado;
tipoDeIncricaoDoSacado = TipoDeIncricaoDoSacado.valueOf(cadastroSacado);
Endereco endereco = sacado.getEndereco();
return LoteRemessa.paraBanco(banco)
// cobranca
.put(loteRemessa().comando(), cobranca.getComando())
.put(loteRemessa().idDoCedenteNoBanco(), idDaEmpresa)
// opções
.put(loteRemessa().codigoDoBanco(), opcoes.isDebitoAutomatico() ? 237 : 0)
.put(loteRemessa().condicaoParaEmissaoDeCobranca(), opcoes.isCobrancaSimples() ? 2 : 1)
.put(loteRemessa().primeiraInstrucao(), instrucao1Value)
.put(loteRemessa().segundaInstrucao(), instrucao2Value)
.put(loteRemessa().valorCobradoPorAtraso(), opcoes.getMoraDia())
// titulo
.put(loteRemessa().numeroDeControleDoParticipante(), titulo.getUsoDaEmpresa())
.put(loteRemessa().especieDeTitulo(), titulo.getEspecie())
.put(loteRemessa().idDoTituloNoBanco(), titulo.getNossoNumero())