Ola amigos tenho a seguinte classe lendo do seguinte arquivo txt mais abaixo, funciona assim, eu leio tudo que tem por inicio 75 pego essas linhas e com substring armazeno numa variavel que servira para popular meus beans numa lista, só que nem todas informações estao na linha 75 algumas por exemplo estao na linha 54 se eu criar blocos ifs, os elemntos não vao para a lista, alguem tem alguma ideia de como deveria fazer isso:
abaixo segue meu cod, para vcs verem como eu estava fazendo, abraços e obrigado desde ja.
548939371400011001 0957081201090003800301 000000027000000000045580000000000000000000045580000000000000000000000001700
769320976500062101 0004161201100000000000 000000000000000000000000000000000000000000000000000000000000000000000000000
548939371400011001 0957081201090004800382 000001570000000000175840000000000000000000175840000000000000000000000001700
549320976500062101 5474161201090003800522 000000560000000000136080000000000000000000136080000000000000000000000001700
549320976500062101 5474161201090004800692 000003020000000001017740000000000000000001017740000000000000000000000001700
549320976500062101 5474161201090005801062 000000050000000000090700000000000000000000090700000000000000000000000001700
549320976500062101 5474161201090006801942 000000370000000000083250000000000000000000083250000000000000000000000001700
549320976502391501 538864591100000190901 000000010000000000005000000000000000000000005000000000000000000000000001700
549446491400015701 001099110109000104641 000002000000000000300000000000000000000000211770000000000000000000000001700
7004510915000106152188762 20090430PA08 88172123520000000333334000000003333340000000004000000000000000000000000000000001N
75200904012009043000831 EMBALAGEM PARMISSIMO 50GR KG KG 000000000000000000000000000
75200904012009043004641 ALCOOL 70% onu 1170,3 II LT 000000000000000000000000000
public static List<DetalheProduto> loadSintegra() throws FileNotFoundException {
InputStream in = new FileInputStream("res/sintegra.txt");
Scanner scan = new Scanner(in);
int index = 0;
List<DetalheProduto> produtos = new ArrayList<DetalheProduto>();
while (scan.hasNextLine()) {
final String line = scan.nextLine();
// somente linhas que começam com 75
if (line.startsWith("75")) {
index++; // incrementa o index
String dataInicial = line.substring(2, 10).trim();
String dataFinal = line.substring(10, 18).trim();
String codigo = line.substring(18, 31).trim();
String codigoNCM = line.substring(32, 40).trim();
String descricao = line.substring(40, 93).trim();
String unidadeMedida = line.substring(93, 99).trim();
String situacaoTributaria = line.substring(99, 102).trim();
String aliquotaIPI = line.substring(102, 106).trim();
String aliquotaICMS = line.substring(106, 110).trim();
String reducaoCalculoICMS = line.substring(110, 114).trim();
String baseCalculoICMS = line.substring(114, 126).trim();
// Produto
Produto produto = new Produto();
produto.setCProd(codigo);
produto.setCEAN(codigoNCM);
produto.setXProd(descricao);
produto.setCFOP(5101L);
produto.setUCom(unidadeMedida);
produto.setQCom("1000000.00");
produto.setVUnCom(1L);
produto.setVProd("1000000.00");
produto.setCEANTrib("");
produto.setUTrib("und");
produto.setQTrib("12000000.0000");
produto.setVUnTrib("1");
// Imposto
Imposto imposto = new Imposto();
// ICMS
Icms icms = new Icms();
imposto.setIcms(icms);
// ICMS00
Icms00 icms00 = new Icms00();
icms.setIcms00(icms00);
icms00.setOrig(Origem.NACIONAL.ordinal());
icms00.setCST("00");
icms00.setModBC(Modalidade.PRECO_TABELADO.ordinal());
icms00.setVBC("10000000.00");
icms00.setPICMS("18.00");
icms00.setVICMS("18.00");
// PIS
Pis pis = new Pis();
imposto.setPis(pis);
// PISAliq
PISAliq pisAliq = new PISAliq();
pis.setPisAliq(pisAliq);
pisAliq.setCST(SituacaoTributaria.OPERACAO_TRIBUTAVEL_ALI_NORMAL);
pisAliq.setVBC("10000000.00");
pisAliq.setPPIS(0.65);
pisAliq.setVPIS(65000L);
// COFINS
Cofins cofins = new Cofins();
imposto.setCofins(cofins);
//COFINSAliq
CofinsAliq cofinsAliq = new CofinsAliq();
cofins.setCofinsAliq(cofinsAliq);
cofinsAliq.setCST("01");
cofinsAliq.setVBC("10000000.00");
cofinsAliq.setPCOFINS("2.00");
cofinsAliq.setVCOFINS("200000.00");
DetalheProduto detalhe = new DetalheProduto();
detalhe.setSequencial(index);
detalhe.setProd(produto);
detalhe.setImposto(imposto);
produtos.add(detalhe);
}
}
try {
in.close();
} catch (Exception e) {
// ignore qualquer erro ao fechar streams
}
return produtos;
}