package aplicacao.command.reports;
import static aplicacao.helper.LayoutHelper.getActiveShell;
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.ParametroRelatorioServicoAnaliticoClienteDialog;
import aplicacao.command.ReportCommand;
import aplicacao.helper.FileHelper;
import aplicacao.helper.ReportHelper;
import aplicacao.helper.UsuarioHelper;
import banco.modelo.Configuracao;
import banco.modelo.ItemServico;
import banco.modelo.ServicoPrestado;
import banco.modelo.report.ServicoOrcamentoAnaliticoCliente;
public class ShowServicoPrestadoAnaliticoClienteCommand extends ReportCommand{
private boolean openConfirmation;
private ServicoPrestado servico;
private ParametroRelatorioServicoAnaliticoClienteDialog prsacd;
public ShowServicoPrestadoAnaliticoClienteCommand(boolean openConfirmation, ServicoPrestado servico) {
this.openConfirmation = openConfirmation;
this.servico = servico;
}
public ShowServicoPrestadoAnaliticoClienteCommand() {
this.openConfirmation = true;
servico = null;
}
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
prsacd = new ParametroRelatorioServicoAnaliticoClienteDialog(getActiveShell());
if(openConfirmation)
if(prsacd.open() != IDialogConstants.OK_ID)
return null;
servico = openConfirmation ? prsacd.getServico() : servico;
if (servico == null || servico.getListaServicos().isEmpty()) {
openWarning("N�o h� informa��es para mostrar no relat�rio.");
return null;
}
List<ServicoOrcamentoAnaliticoCliente> listaLinha = gerarLinhaRelatorio(servico);
JasperPrint jPrint = getReport(ReportHelper.SERVICO_ANALITICO_CLIENTE, listaLinha);
if (!jPrint.getPages().isEmpty())
getView().setReport(jPrint, "Relat�rio de servi�os (Analitico)");
else
openError("N�o h� informa��es suficientes para gerar o relat�rio.");
return null;
}
public List<ServicoOrcamentoAnaliticoCliente> gerarLinhaRelatorio(ServicoPrestado servicoPrestado){
List<ServicoOrcamentoAnaliticoCliente> listaLinha = new ArrayList<ServicoOrcamentoAnaliticoCliente>();
for(ItemServico servico : servicoPrestado.getListaServicos()){
//servico
ServicoOrcamentoAnaliticoCliente linhaServico = new ServicoOrcamentoAnaliticoCliente();
linhaServico.setDescricao(servico.getDescricao());
linhaServico.setValorTotal(servico.getTotal());
linhaServico.setDataAbertura(servico.getServicoPrestado().getDataAbertura());
linhaServico.setDataFechamento(servico.getServicoPrestado().getDataFechamento());
linhaServico.setServicoExecutado(!servicoPrestado.isEmExecucao());
linhaServico.setVeiculo(servicoPrestado.getVeiculo());
linhaServico.setIss(servicoPrestado.getIss());
listaLinha.add(linhaServico);
if(servico.getServicoPrestado().getOrcamento() != null)
linhaServico.setNumeroOrcamento(servico.getServicoPrestado().getOrcamento().getNumero());
//produtos do servico
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(servicoPrestado.getDataAbertura());
linhaProduto.setDataFechamento(servicoPrestado.getDataFechamento());
linhaProduto.setServicoExecutado(!servicoPrestado.isEmExecucao());
linhaProduto.setVeiculo(servicoPrestado.getVeiculo());
linhaProduto.setIss(servicoPrestado.getIss());
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;
}
}