package tela.dialog;
import static aplicacao.helper.LayoutHelper.getActiveShell;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.wb.swt.ResourceManager;
import tela.componentes.MecasoftText;
import aplicacao.helper.FormatterHelper;
import aplicacao.service.PessoaService;
import aplicacao.service.ProdutoServicoService;
import aplicacao.service.VeiculoService;
import banco.modelo.Pessoa;
import banco.modelo.ProdutoServico;
import banco.modelo.Veiculo;
public class ParametroRelatorioServicoAnaliticoDialog extends TitleAreaDialog {
private Text txtCliente;
private Text txtVeiculo;
private Text txtProduto;
private Pessoa cliente;
private Veiculo veiculo;
private ProdutoServico produtoServico;
private Date dtInicial;
private Date dtFinal;
private BigDecimal valorInicial;
private BigDecimal valorFinal;
private Long numeroServico;
private PessoaService pessoaService = new PessoaService();
private VeiculoService veiculoService = new VeiculoService();
private ProdutoServicoService produtoServicoService = new ProdutoServicoService();
private MecasoftText txtDataInicial;
private MecasoftText txtDataFinal;
private MecasoftText txtNumeroServico;
private MecasoftText txtValorInicial;
private MecasoftText txtValorFinal;
public ParametroRelatorioServicoAnaliticoDialog(Shell parentShell) {
super(parentShell);
cliente = null;
veiculo = null;
produtoServico = null;
dtInicial = null;
dtFinal = null;
valorInicial = null;
valorFinal = null;
numeroServico = null;
}
@Override
protected Control createDialogArea(Composite parent) {
setMessage("Informe os campos para filtrar os resultados ou deixe-os vazios para trazer todos os resultados");
setTitle("Relat\u00F3rio de servi\u00E7os (Anal\u00EDtico)");
Composite area = (Composite) super.createDialogArea(parent);
Composite container = new Composite(area, SWT.NONE);
container.setLayout(new GridLayout(7, false));
container.setLayoutData(new GridData(GridData.FILL_BOTH));
Label lblPerodoDe = new Label(container, SWT.NONE);
lblPerodoDe.setText("Per\u00EDodo de");
txtDataInicial = new MecasoftText(container, SWT.NONE);
txtDataInicial.setOptions(MecasoftText.NUMEROS, 10);
txtDataInicial.addChars(FormatterHelper.MECASOFTTXTDATA, new Integer[]{2, 4}, null, null);
txtDataInicial.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
Label lblAt = new Label(container, SWT.NONE);
lblAt.setText("at\u00E9");
txtDataFinal = new MecasoftText(container, SWT.NONE);
txtDataFinal.setOptions(MecasoftText.NUMEROS, 10);
txtDataFinal.addChars(FormatterHelper.MECASOFTTXTDATA, new Integer[]{2, 4}, null, null);
txtDataFinal.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
new Label(container, SWT.NONE);
Label lblNServico = new Label(container, SWT.NONE);
lblNServico.setText("N\u00BA servi\u00E7o:");
txtNumeroServico = new MecasoftText(container, SWT.NONE);
txtNumeroServico.setOptions(MecasoftText.NUMEROS, -1);
txtNumeroServico.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 5, 1));
new Label(container, SWT.NONE);
Label lblCliente = new Label(container, SWT.NONE);
lblCliente.setText("Cliente:");
txtCliente = new Text(container, SWT.BORDER);
txtCliente.setEnabled(false);
txtCliente.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 5, 1));
Button btnSelecionarServico = new Button(container, SWT.NONE);
btnSelecionarServico.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/find16.png"));
btnSelecionarServico.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
cliente = selecionarCliente();
if(cliente != null)
txtCliente.setText(cliente.getNome());
else
txtCliente.setText("");
}
});
btnSelecionarServico.setText("Selecionar");
Label lblVeculo = new Label(container, SWT.NONE);
lblVeculo.setText("Ve\u00EDculo:");
txtVeiculo = new Text(container, SWT.BORDER);
txtVeiculo.setEnabled(false);
txtVeiculo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 5, 1));
Button btnSelecionarVeiculo = new Button(container, SWT.NONE);
btnSelecionarVeiculo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
veiculo = selecionarVeiculo();
if(veiculo != null)
txtVeiculo.setText(veiculo.getModelo());
else
txtVeiculo.setText("");
}
});
btnSelecionarVeiculo.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/find16.png"));
btnSelecionarVeiculo.setText("Selecionar");
Label lblProdutoservio = new Label(container, SWT.NONE);
lblProdutoservio.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
lblProdutoservio.setText("Produto/Servi\u00E7o:");
txtProduto = new Text(container, SWT.BORDER);
txtProduto.setEnabled(false);
txtProduto.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 5, 1));
Button btnSelecionarProduto = new Button(container, SWT.NONE);
btnSelecionarProduto.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
produtoServico = selecionarProdutoServico();
if(produtoServico != null)
txtProduto.setText(produtoServico.getDescricao());
else
txtProduto.setText("");
}
});
btnSelecionarProduto.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/find16.png"));
btnSelecionarProduto.setText("Selecionar");
Label lblValorTotalEntre = new Label(container, SWT.NONE);
lblValorTotalEntre.setText("Valor total entre");
txtValorInicial = new MecasoftText(container, SWT.NONE);
txtValorInicial.setOptions(MecasoftText.NUMEROS, -1);
txtValorInicial.addChars(FormatterHelper.MECASOFTTXTMOEDA, new Integer[]{-2}, null, null);
txtValorInicial.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
Label lblE = new Label(container, SWT.NONE);
lblE.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
lblE.setText("e");
txtValorFinal = new MecasoftText(container, SWT.NONE);
txtValorFinal.addChars(FormatterHelper.MECASOFTTXTMOEDA, new Integer[]{-2}, null, null);
txtValorFinal.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
txtValorFinal.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));
new Label(container, SWT.NONE);
return area;
}
private Pessoa selecionarCliente(){
SelecionarItemDialog sid = new SelecionarItemDialog(getActiveShell(), new LabelProvider(){
@Override
public String getText(Object element) {
return ((Pessoa)element).getNome();
}
});
sid.setElements(pessoaService.findAll().toArray());
return (Pessoa) sid.getElementoSelecionado();
}
private Veiculo selecionarVeiculo(){
SelecionarItemDialog sid = new SelecionarItemDialog(getActiveShell(), new LabelProvider(){
@Override
public String getText(Object element) {
return ((Veiculo)element).getModelo().concat(" - ");
}
});
sid.setElements(veiculoService.findAll().toArray());
return (Veiculo)sid.getElementoSelecionado();
}
private ProdutoServico selecionarProdutoServico(){
SelecionarItemDialog sid = new SelecionarItemDialog(getActiveShell(), new LabelProvider(){
@Override
public String getText(Object element) {
return ((ProdutoServico)element).getDescricao().concat(" - ").concat(((ProdutoServico)element).getTipo());
}
});
sid.setElements(produtoServicoService.findAll().toArray());
return (ProdutoServico)sid.getElementoSelecionado();
}
@Override
protected void okPressed() {
try{
if(!txtDataInicial.getText().isEmpty())
dtInicial = FormatterHelper.getDateFormatData().parse(txtDataInicial.getText());
if(!txtDataFinal.getText().isEmpty()){
dtFinal = FormatterHelper.getDateFormatData().parse(txtDataFinal.getText());
//adiciona mais um dia para que apare�am todos os servi�os do dia informado
Calendar c = Calendar.getInstance();
c.setTime(dtFinal);
c.add(Calendar.DAY_OF_MONTH, 1);
//joga a data com para o dtFinal
dtFinal = c.getTime();
}
}catch(Exception e){
setErrorMessage("Informe as datas corretamente.");
return;
}
if(!txtNumeroServico.getText().isEmpty())
numeroServico = new Long(txtNumeroServico.getText());
if(!txtValorInicial.getText().isEmpty())
valorInicial = new BigDecimal(txtValorInicial.getText().replace(",", "."));
if(!txtValorFinal.getText().isEmpty())
valorFinal = new BigDecimal(txtValorFinal.getText().replace(",", "."));
super.okPressed();
}
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
true);
createButton(parent, IDialogConstants.CANCEL_ID,
IDialogConstants.CANCEL_LABEL, false);
}
@Override
protected Point getInitialSize() {
return new Point(442, 325);
}
public Pessoa getCliente() {
return cliente;
}
public void setCliente(Pessoa cliente) {
this.cliente = cliente;
}
public Veiculo getVeiculo() {
return veiculo;
}
public void setVeiculo(Veiculo veiculo) {
this.veiculo = veiculo;
}
public ProdutoServico getProdutoServico() {
return produtoServico;
}
public void setProdutoServico(ProdutoServico produtoServico) {
this.produtoServico = produtoServico;
}
public Date getDtInicial() {
return dtInicial;
}
public void setDtInicial(Date dtInicial) {
this.dtInicial = dtInicial;
}
public Date getDtFinal() {
return dtFinal;
}
public void setDtFinal(Date dtFinal) {
this.dtFinal = dtFinal;
}
public BigDecimal getValorInicial() {
return valorInicial;
}
public void setValorInicial(BigDecimal valorInicial) {
this.valorInicial = valorInicial;
}
public BigDecimal getValorFinal() {
return valorFinal;
}
public void setValorFinal(BigDecimal valorFinal) {
this.valorFinal = valorFinal;
}
public Long getNumeroServico() {
return numeroServico;
}
public void setNumeroServico(Long numeroServico) {
this.numeroServico = numeroServico;
}
}