The new interface

invoice total 01

LF‑ET ge­ne­rates an interface with the following adjustments from the deci­sion ta­bles:

  • The interface now is stateless and generic, i.e. the type is an additional parameter in all methods

  • Method names for enums are more descriptive

    • no longer isEnum or doEnum

    • but e.g. isPurchaseOrderValue

  • The names of enum values are derived from symbols

    • no longer $001, $002, $003, …​

    • but e.g. $LESS2000, $20007500, …​

  • An additional Trace code that is called AFTER each rule execution

// *** WARNING: DO NOT MODIFY *** This is a generated Java source code! 
// 
// Generated by LF-ET 2.4.1 (260219a), https://www.lohrfink.de/lfet
// From decision table
//  "/src/main/resources/lfet/demo/InvoiceTotal.lfet"
// 24.02.2026 15:42
// 

// Prolog Standard ---->
// profile LFET.Java.Prolog.Standard.Interface.ini not found
// used LF-ET 2.4.1 (260219a) build in default

package lfet.demo;

import javax.annotation.processing.Generated;

@Generated("LF-ET")
interface InvoiceTotal_iFace<T>
{

    // Prolog Standard <----
    
    /** 
     * <b>C01: Purchase order value</b><br>
     * <br>
     * The enum generation has been triggered in project.ini by:<br>
     * - <b>ide.java.interface.enum.1</b>: symbol=Interval; include.tags.title=purchase order; exclude.tags.title=discount<br>
     * - <b>ide.Java.Interface.Enum.default.Values</b>: method.name=enum.name; enum.value.name=symbol, uppercase, prefix$
     */
    boolean isPurchaseOrderValue(InvoiceTotal_iFace.PurchaseOrderValue arg0, T model);
    
    /** 
     * <b>C02: Discount</b><br>
     * <br>
     * <b>C02/01: &gt;0 - discount given</b>
     */
    boolean isDiscount_Greater0(T model);
    
    /** 
     * <b>C03: Discount type</b><br>
     * <br>
     * <b>C03/01: % - percentage discount on the purchase order value</b>
     */
    boolean isDiscountType_PercentageDiscountOnThePurchaseOrderValue(T model);
    
    /** 
     * <b>C04: Discount &lt; Purchase order value</b><br>
     * <br>
     * <b>C04/01: Y - Yes</b>
     */
    boolean isDiscountLessPurchaseOrderValue(T model);
    
    /** 
     * <b>A01: Apply discount</b>
     */
    void doApplyDiscount(T model);
    
    /** 
     * <b>A02: Calculate shipping costs</b>
     */
    void doCalculateShippingCosts(T model);
    
    /** 
     * <b>A03: Invoice total</b><br>
     * <br>
     * <b>A03/01: upd - Invoice total must be updated</b>
     */
    void doInvoiceTotal_Upd(T model);
    
    /** 
     * <b>A03: Invoice total</b><br>
     * <br>
     * <b>A03/02: pov - Purchase order value can be taken over as invoice total</b>
     */
    void doInvoiceTotal_Pov(T model);
    
    void doTrace(java.lang.String dtName, java.lang.String version, int rules, int rule, T model);
    
    void doTraceAfterRule(java.lang.String dtName, java.lang.String version, int rules, int rule, T model);
    
    /** 
     * <b>C01: Purchase order value</b><br>
     * <br>
     * The enum generation has been triggered in project.ini by:<br>
     * - <b>ide.java.interface.enum.1</b>: symbol=Interval; include.tags.title=purchase order; exclude.tags.title=discount<br>
     * - <b>ide.Java.Interface.Enum.default.Values</b>: method.name=enum.name; enum.value.name=symbol, uppercase, prefix$
     */
    enum PurchaseOrderValue
    {
        /** 
         * <b>C01: Purchase order value</b><br>
         * <br>
         * <b>C01/01: &lt; 20.00 - low</b>
         */
        $LESS2000("< 20.00", Double.NEGATIVE_INFINITY, 19.99),
        
        /** 
         * <b>C01: Purchase order value</b><br>
         * <br>
         * <b>C01/02: 20.00 - 75.00 - normal</b>
         */
        $20007500("20.00 - 75.00", 20.0, 75.0);
        
        private final String symbol;
        private final double symbolMin;
        private final double symbolMax;
        
        PurchaseOrderValue(String symbol, double symbolMin, double symbolMax)
        {
            this.symbol = symbol;
            this.symbolMin = symbolMin;
            this.symbolMax = symbolMax;
        }
        
        public String getSymbol()
        {
            return symbol;
        }
        
        public double getSymbolMin()
        {
            return symbolMin;
        }
        
        public double getSymbolMax()
        {
            return symbolMax;
        }
        
        public boolean isInSymbolInterval(double d)
        {
            return d >= symbolMin && d <= symbolMax;
        }
        
        public boolean isInSymbolInterval(int i)
        {
            return i >= symbolMin && i <= symbolMax;
        }
    }

    // Epilog Standard ---->
    // profile LFET.Java.Epilog.Standard.Interface.ini not found
    // used LF-ET 2.4.1 (260219a) build in default

}

// Epilog Standard <----

// End of generated Java source code
// Generated by LF-ET 2.4.1 (260219a), https://www.lohrfink.de/lfet