Skip to main content

Sales report generation library for postal service applications

Project description

Postal Analytics Library

Sales report generation library.

postal-analytics

Sales report generation library for postal service applications with geo-location based analytics.

Features

  • Generate comprehensive sales reports from DynamoDB booking data
  • Location-based revenue analysis
  • Shipping type and parcel size analytics
  • Order status distribution
  • PDF report generation
  • Easy integration with AWS services

Installation

pip install postal-analytics

Quick Start

from postal_analytics import SalesReportGenerator, DataFetcher

# Fetch data from DynamoDB
fetcher = DataFetcher(
    region_name='us-east-1',
    table_name='PostalServiceBookings'
)
bookings = fetcher.fetch_all_bookings()

# Generate report
generator = SalesReportGenerator()
report_data = generator.generate_report_data(bookings)

# Print summary
print(generator.generate_summary())

# Generate PDF
pdf_content = generator.generate_pdf_report()

# Save PDF
with open('sales_report.pdf', 'wb') as f:
    f.write(pdf_content)

Usage Examples

Get Top Locations by Revenue

generator = SalesReportGenerator()
report_data = generator.generate_report_data(bookings)

top_locations = generator.get_top_locations(n=10)
for location, data in top_locations:
    print(f"{location}: {data['count']} orders, ${data['revenue']:.2f}")

Fetch Recent Bookings

fetcher = DataFetcher()
recent_bookings = fetcher.fetch_recent_bookings(days=30)

Generate Report for Specific Location

fetcher = DataFetcher()
location_bookings = fetcher.fetch_bookings_by_location('90001')

generator = SalesReportGenerator()
report_data = generator.generate_report_data(location_bookings)

API Reference

SalesReportGenerator

Main class for generating sales reports.

Methods:

  • generate_report_data(bookings) - Generate report data from booking list
  • get_top_locations(n=10) - Get top N locations by revenue
  • get_revenue_by_shipping_type() - Get shipping type revenue breakdown
  • get_status_distribution() - Get order status distribution
  • generate_summary() - Generate text summary of report
  • generate_pdf_report(report_data) - Generate PDF report

DataFetcher

Class for fetching data from DynamoDB.

Methods:

  • fetch_all_bookings() - Fetch all booking records
  • fetch_bookings_by_date_range(start_date, end_date) - Fetch bookings in date range
  • fetch_bookings_by_location(pincode) - Fetch bookings for specific location
  • fetch_bookings_by_status(status) - Fetch bookings with specific status
  • fetch_recent_bookings(days=30) - Fetch bookings from last N days

Report Data Structure

{
    'report_date': '2025-01-01T00:00:00',
    'report_timestamp': '2025-01-01 00:00:00 UTC',
    'total_bookings': 150,
    'total_revenue': 5000.00,
    'average_order_value': 33.33,
    'by_location': {
        '90001': {'count': 20, 'revenue': 800.00, 'bookings': [...]},
        ...
    },
    'by_status': {
        'delivered': {'count': 100, 'revenue': 3500.00},
        ...
    },
    'by_shipping_type': {
        'local': {'count': 50, 'revenue': 500.00},
        'domestic': {'count': 80, 'revenue': 3200.00},
        'international': {'count': 20, 'revenue': 1300.00}
    },
    'by_parcel_size': {
        'envelope': {'count': 60, 'revenue': 1200.00},
        ...
    }
}

Requirements

  • Python >= 3.8
  • boto3 >= 1.29.0
  • reportlab >= 4.0.0

AWS Configuration

Ensure your AWS credentials are configured:

export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_REGION=us-east-1

Or use AWS credentials file (~/.aws/credentials).

License

MIT License

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

For issues and questions, please open an issue on GitHub.

Author

Mahadeva Chandra - x24272507@student.ncirl.ie

  • Student ID: x24272507
  • Programme: MSc in Cloud Computing
  • Institution: National College of Ireland

Changelog

0.1.0 (2025-01-01)

  • Initial release
  • Basic sales report generation
  • PDF export functionality
  • DynamoDB integration

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

postal_analytics-0.1.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

postal_analytics-0.1.0-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

Details for the file postal_analytics-0.1.0.tar.gz.

File metadata

  • Download URL: postal_analytics-0.1.0.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for postal_analytics-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d43de48fa5889d90210c86155e44ffc5b03b6adb04b5fd01798982a6364bc9a1
MD5 0939d615ecf14cea5cfd3807bbfd316b
BLAKE2b-256 38a42ab76ba863e5aa636d7740900e70e9cf50afb5fbf05cfcc04702523dcb7e

See more details on using hashes here.

File details

Details for the file postal_analytics-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for postal_analytics-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 edfc693756a1984017728c42a1bfe8addd3b0ddc276e337bc13b009258bd7540
MD5 bb68c1262034d8271e98b620ea1a7d37
BLAKE2b-256 eb160236d18a16bdeb5246ae96fec028ca34e42ed3c4a766de127cc57e3b2cb4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page