Skip to main content

Components Details

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 final 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 token
    • 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. 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. 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. 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. 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.
    • Basis_type from RateDetailComponent.
    • Is_first_bill from BillDetailComponent. Dependent Components:
  • 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.
    • Rate configurations from RateDetailComponent. Dependent Components:
  • 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.
    • Consumer ID from ConsumerDetailComponent. Dependent Components:
  • 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.
    • Last bill outstanding amount from BillDetailComponent. Dependent Components:
  • 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:
  • calculation_specific_component: Final charges, taxes, and outstanding balances.
  • bill_json_data: Comprehensive bill data ready for consumer view.