/*******************************************************************************
* Copyright (c) 2007-2009, G. Weirich and Elexis
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* G. Weirich - initial implementation
*
*******************************************************************************/
package ch.elexis.core.ui.dialogs;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.DateTime;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import ch.elexis.core.data.activator.CoreHub;
import ch.elexis.core.ui.util.DayDateCombo;
import ch.elexis.core.ui.util.MoneyInput;
import ch.elexis.core.ui.util.SWTHelper;
import ch.elexis.data.Fall;
import ch.rgw.tools.Money;
import ch.rgw.tools.TimeTool;
public class KonsZumVerrechnenWizardDialog extends TitleAreaDialog {
private static final String CONFIG = "dialogs/konszumverrechnen/"; //$NON-NLS-1$
private static final String ALLMARKED =
Messages.KonsZumVerrechnenWizardDialog_selectCasesToCharge; //$NON-NLS-1$
private static final String TAGEN_BZW_DEM = Messages.KonsZumVerrechnenWizardDialog_daysOrDate; //$NON-NLS-1$
private static final String RECHNUNGEN_ERSTELLEN =
Messages.KonsZumVerrechnenWizardDialog_createBills; //$NON-NLS-1$
private static final String BEHANDLUNGEN_ZUM_VERRECHNEN_AUTOMATISCH_AUSWAEHLEN =
Messages.KonsZumVerrechnenWizardDialog_createProposal; //$NON-NLS-1$
private static final String RECHNUNGS_AUTOMATIK =
Messages.KonsZumVerrechnenWizardDialog_billingAUtomation; //$NON-NLS-1$
private static final String TREATMENT_TRIMESTER =
Messages.KonsZumVerrechnenWizardDialog_choseAllQuartal; //$NON-NLS-1$
private static final String TREATMENT_AMOUNTHIGHER =
Messages.KonsZumVerrechnenWizardDialog_chooseFromAmount; //$NON-NLS-1$
private static final String TREATMENTENDBEFORE =
Messages.KonsZumVerrechnenWizardDialog_choseEndeDate; //$NON-NLS-1$
private final static String TREATMENTBEGINBEFORE =
Messages.KonsZumVerrechnenWizardDialog_chooseBeginningDate; //$NON-NLS-1$
private final static String TREATMENT_TIMESPAN =
Messages.KonsZumVerrechnenWizardDialog_timespan;
private final static String TREATMENT_TIMESPAN_TILL =
Messages.KonsZumVerrechnenWizardDialog_timespanTill;
private final static String TREATMENT_ACCOUNTING_SYS =
Messages.KonsZumVerrechnenWizardDialog_chooseAccountingSystem;
private static final String SKIPSELECTION = Messages.KonsZumVerrechnenWizardDialog_skipProposal; //$NON-NLS-1$
private static final String CFG_SKIP = CONFIG + "skipselection"; //$NON-NLS-1$
Button cbMarked, cbBefore, cbAmount, cbTime, cbQuartal, cbSkip, cbTimespan, cbAccountingSys;
// DatePickerCombo dp1, dp2;
// Spinner sp1, sp2;
MoneyInput mi1;
DayDateCombo ddc1, ddc2;
ComboViewer cAccountingSys;
public String accountSys;
public TimeTool ttFirstBefore, ttLastBefore, ttFrom, ttTo;
public Money mAmount;
public boolean bQuartal, bMarked, bSkip;
private DateTime timespanFrom, timespanTo;
public KonsZumVerrechnenWizardDialog(final Shell parentShell){
super(parentShell);
}
@Override
protected Control createDialogArea(final Composite parent){
Composite ret = new Composite(parent, SWT.NONE);
ret.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
ret.setLayout(new GridLayout(4, false));
cbMarked = new Button(ret, SWT.CHECK);
cbMarked.setText(ALLMARKED);
cbMarked.setLayoutData(SWTHelper.getFillGridData(4, true, 1, false));
cbBefore = new Button(ret, SWT.CHECK);
cbBefore.setText(TREATMENTBEGINBEFORE);
ddc1 = new DayDateCombo(ret, "", TAGEN_BZW_DEM); //$NON-NLS-1$
ddc1.spinDaysBack();
cbTime = new Button(ret, SWT.CHECK);
cbTime.setText(TREATMENTENDBEFORE);
ddc2 = new DayDateCombo(ret, "", TAGEN_BZW_DEM); //$NON-NLS-1$
ddc2.spinDaysBack();
int prev = CoreHub.localCfg.get(CONFIG + "beginBefore", 30) * -1; //$NON-NLS-1$
TimeTool ttNow = new TimeTool();
ttNow.addDays(prev);
ddc1.setDays(prev);
prev = CoreHub.localCfg.get(CONFIG + "endBefore", 20) * -1; //$NON-NLS-1$
ddc2.setDays(prev);
ddc1.setLayoutData(SWTHelper.getFillGridData(3, true, 1, false));
ddc2.setLayoutData(SWTHelper.getFillGridData(3, true, 1, false));
cbAmount = new Button(ret, SWT.CHECK);
cbAmount.setText(TREATMENT_AMOUNTHIGHER);
mi1 = new MoneyInput(ret);
mi1.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 3, 1));
mi1.setLayoutData(SWTHelper.getFillGridData(3, true, 1, false));
cbQuartal = new Button(ret, SWT.CHECK);
cbQuartal.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 4, 1));
cbQuartal.setText(TREATMENT_TRIMESTER);
cbTimespan = new Button(ret, SWT.CHECK);
cbTimespan.setText(TREATMENT_TIMESPAN);
timespanFrom = new DateTime(ret, SWT.NONE);
Label lblTill = new Label(ret, SWT.NONE);
lblTill.setText(TREATMENT_TIMESPAN_TILL);
timespanTo = new DateTime(ret, SWT.NONE);
cbTimespan.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e){
timespanFrom.setEnabled(cbTimespan.getSelection());
timespanTo.setEnabled(cbTimespan.getSelection());
}
});
cbAccountingSys = new Button(ret, SWT.CHECK);
cbAccountingSys.setText(TREATMENT_ACCOUNTING_SYS);
cbAccountingSys.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e){
cAccountingSys.getCombo().setEnabled(cbAccountingSys.getSelection());
}
});
cAccountingSys = new ComboViewer(ret, SWT.NONE);
Combo combo = cAccountingSys.getCombo();
combo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1));
cAccountingSys.setContentProvider(ArrayContentProvider.getInstance());
cAccountingSys.setLabelProvider(new LabelProvider());
String[] accSystems = Fall.getAbrechnungsSysteme();
cAccountingSys.setInput(accSystems);
cAccountingSys.setSelection(new StructuredSelection(accSystems[0]));
new Label(ret, SWT.NONE);
new Label(ret, SWT.NONE);
new Label(ret, SWT.NONE);
new Label(ret, SWT.NONE);
new Label(ret, SWT.NONE);
new Label(ret, SWT.NONE);
new Label(ret, SWT.NONE);
new Label(ret, SWT.NONE);
new Label(ret, SWT.SEPARATOR | SWT.HORIZONTAL).setLayoutData(SWTHelper.getFillGridData(4,
true, 1, false));
cbSkip = new Button(ret, SWT.CHECK);
cbSkip.setText(SKIPSELECTION);
cbSkip.setSelection(CoreHub.globalCfg.get(CFG_SKIP, false));
cbBefore.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e){
ddc1.setEnabled(cbBefore.getSelection());
}
});
cbTime.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e){
ddc2.setEnabled(cbTime.getSelection());
}
});
cAccountingSys.getCombo().setEnabled(false);
timespanFrom.setEnabled(false);
timespanTo.setEnabled(false);
ddc1.setEnabled(false);
ddc2.setEnabled(false);
new Label(ret, SWT.NONE);
new Label(ret, SWT.NONE);
new Label(ret, SWT.NONE);
return ret;
}
@Override
public void create(){
super.create();
setTitle(RECHNUNGS_AUTOMATIK);
setMessage(BEHANDLUNGEN_ZUM_VERRECHNEN_AUTOMATISCH_AUSWAEHLEN);
getShell().setText(RECHNUNGEN_ERSTELLEN);
}
@Override
protected void okPressed(){
if (cbBefore.getSelection()) {
ttFirstBefore = ddc1.getDate();
}
if (cbTime.getSelection()) {
ttLastBefore = ddc2.getDate();
}
if (cbAmount.getSelection()) {
mAmount = mi1.getMoney(false);
}
if (cbTimespan.getSelection()) {
ttFrom = getDate(timespanFrom, 0, 0, 0);
ttTo = getDate(timespanTo, 23, 59, 59);
}
if (cbAccountingSys.getSelection()) {
IStructuredSelection sel = (IStructuredSelection) cAccountingSys.getSelection();
accountSys = (String) sel.getFirstElement();
}
bQuartal = cbQuartal.getSelection();
bMarked = cbMarked.getSelection();
bSkip = cbSkip.getSelection();
CoreHub.globalCfg.set(CFG_SKIP, bSkip);
super.okPressed();
}
private TimeTool getDate(DateTime selDate, int hour, int minute, int second){
Calendar cal = GregorianCalendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, selDate.getDay());
cal.set(Calendar.MONTH, selDate.getMonth());
cal.set(Calendar.YEAR, selDate.getYear());
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, second);
TimeTool date = new TimeTool(cal.getTime());
return date;
}
}