Skip to main content

Components Details

Bill Generation System - Component

Overview

1. BaseBillCreationClass

Role: Acts as the central point to initiate the bill generation process. It orchestrates the flow of data through various components. 

Data Dependencies:

  • Initial Input:
    • Configuration JSON
    • Bill Run ID
    • Authentication Token
    • Schedule Start Date - Schedule End Date
    • Consumer Details 

Dependent Components:

  • UtilityDetailComponent
  • ConsumerDetailComponent
  • PlanDetailComponent
  • RateDetailComponent
  • MeterDetailComponent
  • MeterReadingComponent
  • PaymentsDetailComponent
  • OutstandingDetailComponent 

Output:

  • bill_json_data: This is the finalFinal output after aggregating and combining data from all components.


2. Component Manager (UtilityDetailComponent)

Role: Fetches utility-specific data such as name, tax information, and rate types. 

Data Dependencies:

  • Input Data:
    • Authentication tokenToken
    • Consumer ID
    • Utility ID 

Dependent Components:

  • ConsumerDetailComponent
  • PlanDetailComponent
  • RateDetailComponent
  • MeterDetailComponent
  • MeterReadingComponent
  • PaymentsDetailComponent
  • OutstandingDetailComponent 

Output:

  • calculation_specific_data: Utility-related data like the name, service type, and rate structure.
  • bill_json_data: Utility details included in the final aggregated bill.


3. ConsumerDetailComponent

Role: Fetches consumer-specific details such as consumer ID, plan ID, activation date, and meter IDs. 

Data Dependencies:

  • Input Data:
    • Consumer ID
    • Utility ID (from UtilityDetailComponent. UtilityDetailComponent)

Dependent Components:

  • PlanDetailComponent
  • MeterReadingComponent
  • OutstandingDetailComponent 

Output:

  • calculation_specific_data: Consumer details like ID, meter information, activation status, and outstanding balance.
  • bill_json_data: Consumer-specific metadata for the bill, including ID and activation details.


4. PlanDetailComponent

Role: Handles and fetches the rate plans and billing frequencies associated with the consumer. 

Data Dependencies:

  • Input Data:
    • Plan ID (from ConsumerDetailComponent. ConsumerDetailComponent)

Dependent Components:

  • RateDetailComponent
  • CalculationDetailComponent 

Output:

  • calculation_specific_data: Rate details, tax configurations, and billing frequency.
  • bill_json_data: Plan data included in the final bill.


5. RateDetailComponent

Role: Processes rate configurations specific to utilities such as fixed, variable, tiered, and time-of-use (TOU) rates. 

Data Dependencies:

  • Input Data:
    • Rate ID (from PlanDetailComponent. PlanDetailComponent)

Dependent Components:

  • ConsumptionDetailComponent
  • CalculationDetailComponent 

Output:

  • calculation_specific_data: Rate-related data for different services like electricity, water, etc.
  • bill_json_data: Rates and service charges in the final bill.


6. BillDetailComponent

Role: Processes bill configurations, calculates due dates, and fetches historical bill data. 

Data Dependencies:

  • Input Data:
    • Consumer Object
    • Utility Object
    • Plan Object
    • Authentication Token
    • Schedule Start/End Date 

Dependent Components:

  • PlanDetailComponent
  • CalculationDetailComponent
  • ConsumptionDetailComponent 

Output:

  • calculation_specific_data: Previous bill details, due dates, and outstanding amounts.
  • bill_json_data: Finalized bill details, including invoice period and payment due dates.


7. MeterDetailComponent

Role: Fetches and manages meter-related data like meter IDs, types, and device details. 

Data Dependencies:

  • Input Data:
    • Meter ID (from ConsumerDetailComponent. ConsumerDetailComponent)

Dependent Components:

  • MeterReadingComponent
  • ConsumptionDetailComponent 

Output:

  • calculation_specific_data: Meter-related data.
  • bill_json_data: Meter details included in the final bill.


8. MeterReadingComponent

Role: Fetches current and previous meter readings. 

Data Dependencies:

  • Input Data:

    • Meter IDs (from ConsumerDetailComponent.ConsumerDetailComponent)
    • Basis_type (from RateDetailComponent.RateDetailComponent)
    • Is_first_bill (from BillDetailComponent. BillDetailComponent)

    Dependent Components:

    • ConsumptionDetailComponent
  • ConsumptionDetailComponent

    Output:

    • calculation_specific_component: Meter readings.
    • bill_json_data: Meter reading details in the final bill.


    9. ConsumptionDetailComponent

    Role: Calculates total consumption based on meter readings and applicable rates. 

    Data Dependencies:

    • Input Data:
      • Meter readings (from MeterReadingComponent.MeterReadingComponent)
      • Rate configurations (from RateDetailComponent. RateDetailComponent)

    Dependent Components:

    • CalculationDetailComponent
  • CalculationDetailComponent

    Output:

    • calculation_specific_component: Total consumption.
    • bill_json_data: Consumption data in the final bill.


    10. PaymentsDetailComponent

    Role: Manages payment history and reconciles payments. 

    Data Dependencies:

    • Input Data:

      • Last bill due date (from BillDetailComponent.BillDetailComponent)
      • Consumer ID (from ConsumerDetailComponent. ConsumerDetailComponent)

      Dependent Components:

      • OutstandingDetailComponent
    • OutstandingDetailComponent

      Output:

      • calculation_specific_component: Payment history and total payment received.
      • bill_json_data: Payment details in the final bill.


      11. OutstandingDetailComponent

      Role: Calculates outstanding balances. 

      Data Dependencies:

      • Input Data:
        • Total payment received (from PaymentDetailComponent.PaymentsDetailComponent)
        • Last bill outstanding amount (from BillDetailComponent. BillDetailComponent)

      Dependent Components:

      • CalculationDetailComponent
    • CalculationDetailComponent

      Output:

      • calculation_specific_component: Outstanding balance and due date.
      • bill_json_data: Outstanding amounts in the final bill.


      12. CalculationDetailComponent

      Role: Aggregates data from all components and performs final calculations. 

      Data Dependencies:

      • Input Data:
        • Plan details
        • Rates
        • Consumption
        • Payments
        • Outstanding balances. Output:balances

      Output:

      • calculation_specific_component: Final charges, taxes, and outstanding balances.
      • bill_json_data: Comprehensive bill data ready for consumer view.