• DoctypeDeclaration{http://etl.sf.net/etl/doctype/0.2.1}:
    • systemId: "./plans.g.etl"
  • Plan{http://etl.sf.net/2008/samples/plans}:
    • name: Regular
    • contents:
      • Value{http://etl.sf.net/2008/samples/plans}:
        • name: BASE_RATE
        • type: Quantity
        • value:
          • Past{http://etl.sf.net/2008/samples/plans}:
            • value:
              • Divide{http://etl.sf.net/2008/samples/plans/formula}:
                • left:
                  • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                    • left:
                      • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                        • value: 10.0
                    • right:
                      • Unit{http://etl.sf.net/2008/samples/plans/accounting}:
                        • name: USD
                • right:
                  • Unit{http://etl.sf.net/2008/samples/plans/accounting}:
                    • name: KwH
          • After{http://etl.sf.net/2008/samples/plans}:
            • date:
              • Date{http://etl.sf.net/2008/samples/plans}:
                • year: 1999
                • month: 12
                • day: 01
            • value:
              • Divide{http://etl.sf.net/2008/samples/plans/formula}:
                • left:
                  • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                    • left:
                      • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                        • value: 12.0
                    • right:
                      • Unit{http://etl.sf.net/2008/samples/plans/accounting}:
                        • name: USD
                • right:
                  • Unit{http://etl.sf.net/2008/samples/plans/accounting}:
                    • name: KwH
      • Event{http://etl.sf.net/2008/samples/plans}:
        • name: USAGE
        • value:
          • After{http://etl.sf.net/2008/samples/plans}:
            • date:
              • Date{http://etl.sf.net/2008/samples/plans}:
                • year: 1999
                • month: 10
                • day: 01
            • value:
              • Account{http://etl.sf.net/2008/samples/plans/accounting}:
                • name: base_usage
                • value:
                  • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                    • left:
                      • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                        • value: BASE_RATE
                    • right:
                      • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                        • value: usage
      • Event{http://etl.sf.net/2008/samples/plans}:
        • name: SERVICE_CALL
        • value:
          • After{http://etl.sf.net/2008/samples/plans}:
            • date:
              • Date{http://etl.sf.net/2008/samples/plans}:
                • year: 1999
                • month: 10
                • day: 01
            • value:
              • Account{http://etl.sf.net/2008/samples/plans/accounting}:
                • name: service
                • value:
                  • Plus{http://etl.sf.net/2008/samples/plans/formula}:
                    • left:
                      • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                        • left:
                          • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: fee
                        • right:
                          • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: 0.5
                    • right:
                      • Money{http://etl.sf.net/2008/samples/plans/accounting}:
                        • value:
                          • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: 10.0
          • After{http://etl.sf.net/2008/samples/plans}:
            • date:
              • Date{http://etl.sf.net/2008/samples/plans}:
                • year: 1999
                • month: 12
                • day: 01
            • value:
              • Account{http://etl.sf.net/2008/samples/plans/accounting}:
                • name: service
                • value:
                  • Plus{http://etl.sf.net/2008/samples/plans/formula}:
                    • left:
                      • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                        • left:
                          • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: fee
                        • right:
                          • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: 0.5
                    • right:
                      • Money{http://etl.sf.net/2008/samples/plans/accounting}:
                        • value:
                          • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: 15.0
      • Event{http://etl.sf.net/2008/samples/plans}:
        • name: TAX
        • value:
          • After{http://etl.sf.net/2008/samples/plans}:
            • date:
              • Date{http://etl.sf.net/2008/samples/plans}:
                • year: 1999
                • month: 10
                • day: 01
            • value:
              • Account{http://etl.sf.net/2008/samples/plans/accounting}:
                • name: tax
                • value:
                  • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                    • left:
                      • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                        • value: fee
                    • right:
                      • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                        • value: 0.055
  • Plan{http://etl.sf.net/2008/samples/plans}:
    • name: LowPay
    • contents:
      • Value{http://etl.sf.net/2008/samples/plans}:
        • name: BASE_RATE
        • type: Quantity
        • value:
          • Past{http://etl.sf.net/2008/samples/plans}:
            • value:
              • Divide{http://etl.sf.net/2008/samples/plans/formula}:
                • left:
                  • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                    • left:
                      • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                        • value: 10.0
                    • right:
                      • Unit{http://etl.sf.net/2008/samples/plans/accounting}:
                        • name: USD
                • right:
                  • Unit{http://etl.sf.net/2008/samples/plans/accounting}:
                    • name: KwH
      • Value{http://etl.sf.net/2008/samples/plans}:
        • name: REDUCED_RATE
        • type: Quantity
        • value:
          • Past{http://etl.sf.net/2008/samples/plans}:
            • value:
              • Divide{http://etl.sf.net/2008/samples/plans/formula}:
                • left:
                  • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                    • left:
                      • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                        • value: 5.0
                    • right:
                      • Unit{http://etl.sf.net/2008/samples/plans/accounting}:
                        • name: USD
                • right:
                  • Unit{http://etl.sf.net/2008/samples/plans/accounting}:
                    • name: KwH
      • Value{http://etl.sf.net/2008/samples/plans}:
        • name: CAP
        • type: Quantity
        • value:
          • Past{http://etl.sf.net/2008/samples/plans}:
            • value:
              • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                • left:
                  • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                    • value: 50.0
                • right:
                  • Unit{http://etl.sf.net/2008/samples/plans/accounting}:
                    • name: KwH
          • After{http://etl.sf.net/2008/samples/plans}:
            • date:
              • Date{http://etl.sf.net/2008/samples/plans}:
                • year: 1999
                • month: 10
                • day: 01
            • value:
              • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                • left:
                  • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                    • value: 60.0
                • right:
                  • Unit{http://etl.sf.net/2008/samples/plans/accounting}:
                    • name: KwH
      • Event{http://etl.sf.net/2008/samples/plans}:
        • name: USAGE
        • value:
          • After{http://etl.sf.net/2008/samples/plans}:
            • date:
              • Date{http://etl.sf.net/2008/samples/plans}:
                • year: 1999
                • month: 10
                • day: 01
            • value:
              • Account{http://etl.sf.net/2008/samples/plans/accounting}:
                • name: base_usage
                • value:
                  • If{http://etl.sf.net/2008/samples/plans/formula}:
                    • condition:
                      • Greater{http://etl.sf.net/2008/samples/plans/formula}:
                        • left:
                          • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: usage
                        • right:
                          • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: CAP
                    • thenPart:
                      • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                        • left:
                          • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: BASE_RATE
                        • right:
                          • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: usage
                    • elsePart:
                      • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                        • left:
                          • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: REDUCED_RATE
                        • right:
                          • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: usage
      • Event{http://etl.sf.net/2008/samples/plans}:
        • name: SERVICE_CALL
        • value:
          • After{http://etl.sf.net/2008/samples/plans}:
            • date:
              • Date{http://etl.sf.net/2008/samples/plans}:
                • year: 1999
                • month: 10
                • day: 01
            • value:
              • Account{http://etl.sf.net/2008/samples/plans/accounting}:
                • name: service
                • value:
                  • Money{http://etl.sf.net/2008/samples/plans/accounting}:
                    • value:
                      • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                        • value: 10.0
          • After{http://etl.sf.net/2008/samples/plans}:
            • date:
              • Date{http://etl.sf.net/2008/samples/plans}:
                • year: 1999
                • month: 12
                • day: 01
            • value:
              • Account{http://etl.sf.net/2008/samples/plans/accounting}:
                • name: service
                • value:
                  • Plus{http://etl.sf.net/2008/samples/plans/formula}:
                    • left:
                      • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                        • left:
                          • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: fee
                        • right:
                          • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: 0.5
                    • right:
                      • Money{http://etl.sf.net/2008/samples/plans/accounting}:
                        • value:
                          • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                            • value: 15.0
      • Event{http://etl.sf.net/2008/samples/plans}:
        • name: TAX
        • value:
          • After{http://etl.sf.net/2008/samples/plans}:
            • date:
              • Date{http://etl.sf.net/2008/samples/plans}:
                • year: 1999
                • month: 10
                • day: 01
            • value:
              • Account{http://etl.sf.net/2008/samples/plans/accounting}:
                • name: tax
                • value:
                  • Multiply{http://etl.sf.net/2008/samples/plans/formula}:
                    • left:
                      • Identifier{http://etl.sf.net/2008/samples/plans/formula}:
                        • value: fee
                    • right:
                      • FloatNumber{http://etl.sf.net/2008/samples/plans/formula}:
                        • value: 0.055
     1: doctype "./plans.g.etl";
     2: // sample from http://martinfowler.com/articles/mpsAgree.html
     3: plan Regular {
     4: 	value BASE_RATE : Quantity {
     5: 		past => 10.0 * USD/KwH;
     6: 		after 1999-12-01 => 12.0 * USD/KwH;
     7: 	};
     8: 	event USAGE {
     9: 		after 1999-10-01 => account base_usage <- BASE_RATE * usage;
    10: 	};
    11: 	event SERVICE_CALL {
    12: 		after 1999-10-01 => account service <- fee * 0.5 + $ 10.0;
    13: 		after 1999-12-01 => account service <- fee * 0.5 + $ 15.0;
    14: 	};
    15: 	event TAX {
    16: 		after 1999-10-01 => account tax <- fee * 0.055;
    17: 	};
    18: };
    19: 
    20: plan LowPay {
    21: 	value BASE_RATE : Quantity {
    22: 		past => 10.0*USD/KwH;
    23: 	};
    24: 	value REDUCED_RATE : Quantity {
    25: 		past => 5.0*USD/KwH;
    26: 	};
    27: 	value CAP : Quantity {
    28: 		past => 50.0 * KwH;
    29: 		after 1999-10-01 => 60.0 * KwH;
    30: 	};
    31: 	event USAGE {
    32: 		after 1999-10-01 => account base_usage <- if usage > CAP then BASE_RATE * usage else REDUCED_RATE * usage;
    33: 	};
    34: 	event SERVICE_CALL {
    35: 		after 1999-10-01 => account service <- $ 10.0;
    36: 		after 1999-12-01 => account service <- fee * 0.5 + $ 15.0;
    37: 	};
    38: 	event TAX {
    39: 		after 1999-10-01 => account tax <- fee * 0.055;
    40: 	};
    41: };