Utility Invoices Report

Introduction

This script represents a custom Utility Invoices Report implemented as a Script Report in the Property Management Solution module of ERPNext. It is designed to track utility charges by generating a detailed report of utility invoices issued to customers over a given period.

1. Purpose of the Report

The report is used to provide a list of utility charges for different properties or leases. It pulls data from the Sales Invoice doctype, focusing specifically on invoices containing an item code "Utility Charges." The report aggregates utility charges by month and displays them in a tabular format.

2. Key Functions and Structure

Here’s a breakdown of the key elements of the report:

1. Columns Definition

The getresidentialcolumns() function generates the structure of the columns for the report. This includes details like apartment number, client, advance payments, invoice details, and monthly amounts for each invoice:

  • This function also appends columns for each month of the selected year.

2. Utility Sales Invoice Retrieval

The function getutilitysales_invoice() retrieves relevant sales invoices that match the item code Utility Charges:

This function generates a list of invoices that match the item code "Utility Charges."

It calls setmonthlyamount() to calculate the charges for each month.

3. Monthly Amount Calculation

The setmonthlyamount() function calculates the monthly distribution of charges over the duration of the lease.

It uses the rate of utility charges per invoice and calculates how the total amount is spread over the months.

4. Checking Date Range for Monthly Distribution

The check_dates() function breaks down the utility charges across the months:

It ensures that the correct number of days are calculated for each month, taking leap years and February's shorter days into account.

5. Execution of the Report

The report uses the execute() function to compile the report based on the provided filters:

The report generates columns dynamically based on the selected year and fetches the relevant invoice data.

Discard
Save