package br.com.mussinato.jsintegra;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import br.com.mussinato.jsintegra.registros.Tipo10;
import br.com.mussinato.jsintegra.registros.Tipo11;
import br.com.mussinato.jsintegra.registros.Tipo50;
import br.com.mussinato.jsintegra.registros.Tipo54;
import br.com.mussinato.jsintegra.registros.Tipo75;
import br.com.mussinato.jsintegra.registros.Tipo90;
public class Sintegra {
private Tipo10 tipo10;
private Tipo11 tipo11;
private List<Tipo50> tipo50 = new ArrayList<Tipo50>();
private List<Tipo75> tipo75 = new ArrayList<Tipo75>();
private List<Tipo90> tipo90 = new ArrayList<Tipo90>();
public StringBuilder gerarArquivo(){
Integer qtde10 = 0;
Integer qtde11 = 0;
Integer qtde50 = 0;
Integer qtde54 = 0;
Integer qtde75 = 0;
Integer qtde90 = 0;
StringBuilder arquivoFinal = new StringBuilder();
StringBuilder arquivo50 = new StringBuilder();
StringBuilder arquivo54 = new StringBuilder();
StringBuilder arquivo75 = new StringBuilder();
arquivoFinal.append(tipo10.getTipo() + tipo10.getCnpj() + tipo10.getInscricaoEstadual() + tipo10.getNomeContribuinte()
+ tipo10.getMunicipio() + tipo10.getUf() + tipo10.getFax() + tipo10.getDataInicial() + tipo10.getDataFinal()
+ tipo10.getConvenio() + tipo10.getNaturezaOperacoes() + tipo10.getFinalidade() + "\n");
qtde10++;
arquivoFinal.append(tipo11.getTipo() + tipo11.getLogradouro() + tipo11.getNumero() + tipo11.getComplemento() + tipo11.getBairro()
+ tipo11.getCep() + tipo11.getNomeContato() + tipo11.getTelefone() + "\n");
qtde11++;
if (tipo50 != null){
for (Tipo50 t50: tipo50){
qtde50++;
arquivo50.append(t50.getTipo() + t50.getCnpj() + t50.getInscricaoEstadual() + t50.getDataEmissao() + t50.getUf()
+ t50.getModelo() + t50.getSerie() + t50.getNumero() + t50.getCfop() + t50.getEmitente() + t50.getValorTotal()
+ t50.getValorBaseCalcIcms() + t50.getValorIcms() + t50.getValorIsenta() + t50.getValorOutras() + t50.getAliquotaIcms()
+ t50.getSituacao() + "\n");
for (Tipo54 t54: t50.getRegistrosTipo54()){
qtde54++;
arquivo54.append(t54.getTipo() + t50.getCnpj() + t50.getModelo() + t50.getSerie() + t50.getNumero() + t54.getCfop()
+ t54.getCst() + t54.getNumeroItem() + t54.getCodigoProduto() + t54.getQuantidade() + t54.getValorProduto() + t54.getValorDesconto()
+ t54.getValorBaseCalcIcms() + t54.getValorBaseCalcIcmsSubTrib() + t54.getValorIpi() + t54.getAliquotaIcms() + "\n");
}
}
}
if (tipo75 != null){
for (Tipo75 t75: tipo75){
qtde75++;
arquivo75.append(t75.getTipo() + tipo10.getDataInicial() + tipo10.getDataFinal() + t75.getCodigoProduto() + t75.getCodigoNcm()
+ t75.getDescricao() + t75.getUnidadeMedidaCom() + t75.getAliquotaIpi() + t75.getAliquotaIcms() + t75.getValorReducaoBaseCalcIcms()
+ t75.getValorBaseCalcIcmsSubTrib() + "\n");
}
}
this.tipo90 = new ArrayList<Tipo90>();
Tipo90 t90 = null;
t90 = new Tipo90();
t90.setCnpj(tipo10.getCnpj());
t90.setInscricaoEstadual(tipo10.getInscricaoEstadual());
t90.setTipoRegistro("50");
t90.setTotalRegistros(qtde50);
this.tipo90.add(t90);
qtde90++;
t90 = new Tipo90();
t90.setCnpj(tipo10.getCnpj());
t90.setInscricaoEstadual(tipo10.getInscricaoEstadual());
t90.setTipoRegistro("54");
t90.setTotalRegistros(qtde54);
this.tipo90.add(t90);
qtde90++;
t90 = new Tipo90();
t90.setCnpj(tipo10.getCnpj());
t90.setInscricaoEstadual(tipo10.getInscricaoEstadual());
t90.setTipoRegistro("75");
t90.setTotalRegistros(qtde75);
this.tipo90.add(t90);
qtde90++;
t90 = new Tipo90();
qtde90++;
t90.setCnpj(tipo10.getCnpj());
t90.setInscricaoEstadual(tipo10.getInscricaoEstadual());
t90.setTipoRegistro("99");
t90.setTotalRegistros(qtde10+qtde11+qtde50+qtde54+qtde75+qtde90);
this.tipo90.add(t90);
arquivoFinal.append(arquivo50);
arquivoFinal.append(arquivo54);
arquivoFinal.append(arquivo75);
for (Tipo90 t: tipo90){
String linha = t.getTipo() + t.getCnpj() + t.getInscricaoEstadual() + t.getTipoRegistro()
+ t.getTotalRegistros();
linha = StringUtils.rightPad(linha, 125, " ");
linha += StringUtils.leftPad(qtde90.toString(), 1, "0") + "\n";
arquivoFinal.append(linha);
}
arquivoFinal.deleteCharAt(arquivoFinal.length()-1);
return arquivoFinal;
}
/**
* @return the tipo10
*/
public Tipo10 getTipo10() {
return tipo10;
}
/**
* @param tipo10 the tipo10 to set
*/
public void setTipo10(Tipo10 tipo10) {
this.tipo10 = tipo10;
}
/**
* @return the tipo11
*/
public Tipo11 getTipo11() {
return tipo11;
}
/**
* @param tipo11 the tipo11 to set
*/
public void setTipo11(Tipo11 tipo11) {
this.tipo11 = tipo11;
}
/**
* @return the tipo50
*/
public List<Tipo50> getTipo50() {
return tipo50;
}
public void addTipo50(Tipo50 tipo50){
this.tipo50.add(tipo50);
}
/**
* @return the tipo75
*/
public List<Tipo75> getTipo75() {
return tipo75;
}
/**
* @param tipo75 the tipo75 to set
*/
public void addTipo75(Tipo75 tipo75) {
this.tipo75.add(tipo75);
}
}