Banco do brasil

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/GeneradorBoletosCNAB/trunk@81763 d1611594-4594-4d17-8e1d-87c2c4800839
master
rafael.henrique 2018-05-10 23:30:28 +00:00
parent 224ed6afed
commit 4ce7421fc4
2 changed files with 343 additions and 0 deletions

View File

@ -0,0 +1,66 @@
package com.rjconsultores.ventaboletos.utils;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FormataUtil {
public static String formatarValorPorTamanho(String value, int tamanho) {
value = value == null ? "" : value;
if(value.length() > tamanho){
value = value.substring(0, tamanho);
}
return value;
}
public static String formatarValorPorTamanhoZeroEsquerda(String value, int tamanho) {
value = value == null ? "" : value;
if(value.length() > tamanho){
value = value.substring(0, tamanho);
}
while(value.length() < tamanho){
value = "0" + value;
}
return value;
}
public static String formatarValorPorTamanhoZeroDireita(String value, int tamanho) {
value = value == null ? "" : value;
if(value.length() > tamanho){
value = value.substring(0, tamanho);
}
while(value.length() < tamanho){
value = value + "0";
}
return value;
}
public static Date formataData(Date data) {
if(data == null){
data = new Date();
}
return data;
}
public static String formataDataToString(Date data, String defaultValue) {
if(data == null){
return defaultValue;
}
return new SimpleDateFormat("ddMMyyyy").format(data);
}
}

View File

@ -0,0 +1,277 @@
package com.rjconsultores.ventaboletos.utils;
import java.math.BigInteger;
import java.util.Date;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateUtils;
import com.rjconsultores.ventaboletos.enuns.BancoLayout;
public class NossoNumeroUtils {
/**
* Devolve o nosso numero do Bradesco com o DV calculado (Tamanho 12)...
* @param numCarteira
* @param nossoNumero
* @return
*/
public static String calcularNossonumeroBradesco(Integer numCarteira, BigInteger nossoNumero){
return StringUtils.right("00000000000" + nossoNumero, 11) + dacBradesco(numCarteira, nossoNumero);
}
/**
* Devolve o nosso numero do Itau com o DV calculado (Tamanho 9)...
* @param codAgencia
* @param numConta
* @param numCarteira
* @param nossoNumero
* @return
*/
public static String calcularNossoNumeroItau(Integer codAgencia, Integer numConta, Integer numCarteira, BigInteger nossoNumero){
return StringUtils.right("00000000" + nossoNumero, 8) + dacItau(codAgencia, numConta, numCarteira, nossoNumero);
}
/**
* Devolve o nosso numero do BB com o DV calculado (Tamanho 20)...
* @param convenioBanco
* @param numCarteira
* @param nossoNumero
* @return
*/
public static String calcularNossoNumeroBancoBrasil(Integer convenioBanco, Integer numCarteira, BigInteger nossoNumero){
int controllConvenioNossoNumero = 0;
int controllNossoNumero = 0;
boolean dvControll = Boolean.TRUE;
if(convenioBanco < 10000){
controllConvenioNossoNumero = 4;
controllNossoNumero = 7;
}else if(convenioBanco < 1000000){
controllConvenioNossoNumero = 6;
controllNossoNumero = 5;
}else{
controllConvenioNossoNumero = 7;
controllNossoNumero = 10;
dvControll = Boolean.FALSE;
}
String nC = StringUtils.right("0000000" + convenioBanco, controllConvenioNossoNumero);
String nN = StringUtils.right("0000000000" + nossoNumero, controllNossoNumero);
String base = nC + nN;
return dvControll ? StringUtils.left(base + dacBB(base, numCarteira), 20) : base;
}
/**
* Calcula do DV para o Bradesco
* @param numCarteira
* @param nossoNumero
* @return
*/
public static String dacBradesco(Integer numCarteira, BigInteger nossoNumero){
int multiplicadores[] = {2,7,6,5,4,3,2,7,6,5,4,3,2};
int multiplicandos[] = new int[13];
String carteira = StringUtils.right("00" + numCarteira, 2);
String nNumero = StringUtils.right("00000000000" + nossoNumero, 11);
String base = carteira + nNumero;
for (int i = 0; i < multiplicandos.length; i++) {
String d = base.charAt(i) + "";
multiplicandos[i] = Integer.valueOf(d) * multiplicadores[i];
}
int dac = 0;
for(Integer v : multiplicandos){
dac += v;
}
dac = 11 - (dac % 11);
return (dac == 10) ? "P" : dac + "";
}
/**
* Calcula do DV para o Itau
* @param codAgencia
* @param numConta
* @param numCarteira
* @param nossoNumero
* @return
*/
public static String dacItau(Integer codAgencia, Integer numConta, Integer numCarteira, BigInteger nossoNumero){
int multiplicadores[] = {1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2};
int multiplicandos[] = new int[20];
String agencia = StringUtils.right("0000" + codAgencia, 4);
String conta = StringUtils.right("00000" + numConta, 5);
String carteira = StringUtils.right("000" + numCarteira, 3);
String nNumero = StringUtils.right("00000000" + nossoNumero, 8);
String base = agencia + conta + carteira + nNumero;
for (int i = 0; i < multiplicandos.length; i++) {
String d = base.charAt(i) + "";
multiplicandos[i] = Integer.valueOf(d) * multiplicadores[i];
}
int dac = 0;
for(Integer v : multiplicandos){
if(v < 10){
dac += v;
}else{
dac += 1 + (v - 10);
}
}
dac = 10 - (dac % 10);
return dac + "";
}
/**
* Calcula do DV para o Banco do Brasil
* @param nossoNumero
* @param numCarteira
* @return
*/
public static String dacBB(String nossoNumero, Integer numCarteira){
int multiplicador = 9;
int soma = 0;
for (int i = nossoNumero.length() - 1; i >= 0 ; i--) {
int current = Integer.parseInt(nossoNumero.charAt(i) + "");
current = current * multiplicador;
soma = soma + current;
multiplicador--;
if(multiplicador == 2){
multiplicador = 9;
}
}
int mod = soma % 11;
if(mod == 10){
return "X";
}
return mod + "";
}
/**
* Calcula do DV para o Itau (Numero Documento)
* @param codAgencia
* @param numConta
* @param numCarteira
* @param nossoNumero
* @return
*/
public static String dvDocumentoItau(Integer numeroDoc){
int multiplicadores[] = {1,2,1,2,1,2,1,2,1,2};
int multiplicandos[] = new int[10];
String doc = StringUtils.right("0000000000" + numeroDoc, 10);
String base = doc;
for (int i = 0; i < multiplicandos.length; i++) {
String d = base.charAt(i) + "";
multiplicandos[i] = Integer.valueOf(d) * multiplicadores[i];
}
int dac = 0;
for(Integer v : multiplicandos){
if(v < 10){
dac += v;
}else{
dac += 1 + (v - 10);
}
}
dac = 10 - (dac % 10);
return dac + "";
}
public static boolean validaNossoNumero(String nossoNumero, BancoLayout bancoLayout){
if(BancoLayout.BRADESCO_400_Envio.equals(bancoLayout) && nossoNumero.length() == 12 ){
return Boolean.TRUE;
}
if(BancoLayout.ITAU_400_Envio.equals(bancoLayout) && nossoNumero.length() == 9 ){
return Boolean.TRUE;
}
if(BancoLayout.BB_240_Envio.equals(bancoLayout)){
return Boolean.TRUE;
}
return Boolean.FALSE;
}
public static void main(String[] args) {
//System.out.println(calcularNossonumeroBradesco(19, new BigInteger("00166509652")));
//System.out.println(calcularNossonumeroBradesco(19, new BigInteger("00000000001")));
//System.out.println(calcularNossoNumeroItau(57, 72192, 109, new BigInteger("987123451")));
//System.out.println(dvDocumentoItau(1108954));
// System.out.println(calcularNossoNumeroBancoBrasil(3088490, 17, new BigInteger("100000")));
// System.out.println(calcularNossoNumeroBancoBrasil(3088490, 17, new BigInteger("100001")));
// System.out.println(calcularNossoNumeroBancoBrasil(3088490, 17, new BigInteger("100002")));
// System.out.println(calcularNossoNumeroBancoBrasil(3088490, 17, new BigInteger("100003")));
// System.out.println(calcularNossoNumeroBancoBrasil(3088490, 17, new BigInteger("100004")));
// System.out.println(calcularNossoNumeroBancoBrasil(3088490, 17, new BigInteger("100005")));
System.out.println(calcularNossoNumeroBancoBrasil(490, 17, new BigInteger("100006")));
System.out.println(calcularNossoNumeroBancoBrasil(88490, 17, new BigInteger("100007")));
System.out.println(calcularNossoNumeroBancoBrasil(3088490, 17, new BigInteger("100005")));
Date ini = new Date(97, 9, 7);
Date end = new Date();
System.out.println(((end.getTime() - ini.getTime()) / DateUtils.MILLIS_IN_DAY));
}
}