package aplicacao.command.reports;
import static aplicacao.helper.MessageHelper.openError;
import static aplicacao.helper.MessageHelper.openWarning;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JasperPrint;
import org.apache.commons.lang.StringUtils;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.dialogs.IDialogConstants;
import tela.dialog.ParametroRelatorioOrcamentoDialog;
import aplicacao.command.ReportCommand;
import aplicacao.helper.FileHelper;
import aplicacao.helper.LayoutHelper;
import aplicacao.helper.ReportHelper;
import aplicacao.helper.UsuarioHelper;
import banco.modelo.Configuracao;
import banco.modelo.ItemServico;
import banco.modelo.Orcamento;
import banco.modelo.report.ServicoOrcamentoAnaliticoCliente;
public class ShowOrcamentoCommand extends ReportCommand{
private Orcamento orcamento;
private ParametroRelatorioOrcamentoDialog prod;
private boolean openDialog;
public ShowOrcamentoCommand() {
openDialog = true;
}
public ShowOrcamentoCommand(Orcamento orcamento){
this.orcamento = orcamento;
openDialog = false;
}
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
if(openDialog){
prod = new ParametroRelatorioOrcamentoDialog(LayoutHelper.getActiveShell());
if(prod.open() != IDialogConstants.OK_ID)
return null;
}
orcamento = openDialog ? prod.getOrcamento() : orcamento;
if (orcamento == null || orcamento.getListaServico().isEmpty()) {
openWarning("N�o h� informa��es para mostrar no relat�rio.");
return null;
}
List<ServicoOrcamentoAnaliticoCliente> listaLinha = gerarLinhaRelatorio(orcamento);
JasperPrint jPrint = getReport(ReportHelper.ORCAMENTO_ANALITICO_CLIENTE, listaLinha);
if (!jPrint.getPages().isEmpty())
getView().setReport(jPrint, "Relat�rio de or�amento");
else
openError("N�o h� informa��es suficientes para gerar o relat�rio.");
return null;
}
private List<ServicoOrcamentoAnaliticoCliente> gerarLinhaRelatorio(Orcamento orcamento){
List<ServicoOrcamentoAnaliticoCliente> listaLinha = new ArrayList<ServicoOrcamentoAnaliticoCliente>();
for(ItemServico servico : orcamento.getListaServico()){
//orcamento
ServicoOrcamentoAnaliticoCliente linhaServico = new ServicoOrcamentoAnaliticoCliente();
linhaServico.setDescricao(servico.getDescricao());
linhaServico.setValorTotal(servico.getTotal());
linhaServico.setDataAbertura(orcamento.getDtLancamento());
linhaServico.setVeiculo(orcamento.getVeiculo());
listaLinha.add(linhaServico);
linhaServico.setNumeroOrcamento(orcamento.getNumero());
//produtos do orcamento
for(ItemServico produto : servico.getListaItem()){
if(!produto.isFornecedorVisivel())
linhaServico.setValorTotal(linhaServico.getValorTotal().add(produto.getTotal()));
else{
ServicoOrcamentoAnaliticoCliente linhaProduto = new ServicoOrcamentoAnaliticoCliente();
linhaProduto.setDescricao(produto.getDescricao());
linhaProduto.setValorTotal(produto.getTotal());
linhaProduto.setDataAbertura(orcamento.getDtLancamento());
linhaProduto.setVeiculo(orcamento.getVeiculo());
linhaProduto.setNumeroOrcamento(linhaServico.getNumeroOrcamento());
listaLinha.add(linhaProduto);
}
}
}
return listaLinha;
}
@Override
public Map<String, Object> getParametros() {
Map<String, Object> param = new HashMap<String, Object>();
String caminho = null;
Configuracao configuracao = UsuarioHelper.getConfiguracaoPadrao();
if(configuracao != null && configuracao.getLogoEmpresa() != null && !configuracao.getLogoEmpresa().isEmpty()){
File file = new File(StringUtils.removeStart(FileHelper.logoPath(), "/"));
if(file.exists())
caminho = file.getPath();
}
param.put("CAMINHO_IMAGEM", caminho);
return param;
}
}