eva/3 Application BuilderProjekt WizardsÜbersicht der BeispieleKundendienstAspekte im Design 

Gesamtergebnisse berechnen

Wenn Werte in Eingabefeldern des Formulars Kundenaufträge geändert werden, muss die Aufstellung der Gesamtergebnisse neu berechnet werden.

Hierzu wird unter anderem in den STableElementen Arbeitsauftraege, Arbeitsauftragsteile und Arbeitskraefte als ValueChangedMakro und als ValuesChangedMakro der Befehl RefreshResult gesetzt.

Dieser Befehl wird durch die Klasse RefreshResult umgesetzt, welche das Interface SystemCommand implementiert:

public class RefreshResult implements SystemCommand {

...

    public Object action(Object[] args, Macro macro) {
        if (SWindowUtils.isSWindowOpened("Formulare/KundenAuftraege.form")) {
            try {
                SWindow window = SWindowUtils
                        .getSWindow("Formulare/KundenAuftraege.form");
                SFormattedField textTotalPrice = (SFormattedField) window
                        .getObject("txt_Gesamtpreis");
                SFormattedField textSalestaxPercent = (SFormattedField) window
                        .getObject("txt_UmsatzsteuerProzent");
                SFormattedField textSalestax = (SFormattedField) window
                        .getObject("txt_Umsatzsteuer");
                SFormattedField textOrderAmount = (SFormattedField) window
                        .getObject("txt_Bestellsumme");
                SFormattedField textPayments = (SFormattedField) window
                        .getObject("txt_Gezahlt");
                SFormattedField textPayableAmount = (SFormattedField) window
                        .getObject("txt_Gesamtbetrag");
                QueryDescriptor queryDescriptor = ObjectLoader
                        .getQueryDescriptor("Ergebnis");
                HSRecordSet recordSet = new HSRecordSet(queryDescriptor);
                int totalWorkHours = 0;
                int totalPieces = 0;
                double payedAmount = 0;
                if (recordSet.next()) {
                    totalWorkHours = recordSet.getObject(1) != null ? ((Number) recordSet
                            .getObject(1)).intValue()
                            : 0;
                    totalPieces = recordSet.getObject(2) != null ? ((Number) recordSet
                            .getObject(2)).intValue()
                            : 0;
                    payedAmount = recordSet.getObject(3) != null ? ((Number) recordSet
                            .getObject(3)).doubleValue()
                            : 0;
                }
                int totalValue = totalWorkHours + totalPieces;
                textTotalPrice.setControlledValue(String.valueOf(totalValue));
                int salesTaxPercent = textSalestaxPercent.getControlledValue() != null
                        && textSalestax.getText().length() > 0 ? ((Number) textSalestaxPercent
                        .getControlledValue()).intValue()
                        : 0;
                double salestax = ((float) totalValue / (float) 100)
                        * (float) salesTaxPercent;
                textSalestax.setControlledValue(String.valueOf(salestax));
                textOrderAmount.setControlledValue(String.valueOf(totalValue
                        + salestax));
                textPayments.setControlledValue(String.valueOf(payedAmount));
                textPayableAmount.setControlledValue(String.valueOf(totalValue
                        + salestax - payedAmount));
                SWindow mainForm = SWindowUtils
                        .getSWindow("Formulare/Eingabe.form");
                STableElement customerElement = (STableElement) mainForm
                        .getObject("Kundenauftraege");
                customerElement.refresh();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return null;
    }
}

Hier werden die Werte aus der SQL-Abfrage Ergebnis genommen und in die entsprechenden Textfelder eingetragen.