expense-report-generator

安装量: 56
排名: #13240

安装

npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill expense-report-generator

Expense Report Generator

Create professional expense reports from receipt data with automatic categorization and totals.

Features Multiple Input Formats: CSV, JSON, or manual entry Auto-Categorization: Classify expenses by type Receipt Tracking: Link receipts to expenses Approval Workflow: Status tracking and approver info Policy Compliance: Flag out-of-policy expenses PDF Export: Professional formatted reports Reimbursement Calculation: Track paid/unpaid amounts Quick Start from expense_report import ExpenseReportGenerator

report = ExpenseReportGenerator()

Set report info

report.set_employee("John Doe", "EMP001", "Engineering") report.set_period("2024-01-01", "2024-01-31")

Add expenses

report.add_expense( date="2024-01-15", description="Client dinner", category="Meals", amount=125.50, receipt="receipt_001.jpg" )

report.add_expense( date="2024-01-18", description="Uber to airport", category="Transportation", amount=45.00 )

Generate report

report.generate_pdf("expense_report.pdf")

CLI Usage

From CSV

python expense_report.py --input expenses.csv --employee "John Doe" --output report.pdf

With date range

python expense_report.py --input data.csv --start 2024-01-01 --end 2024-01-31 -o report.pdf

Set department and approver

python expense_report.py --input data.csv --employee "Jane Smith" --dept Sales \ --approver "Bob Manager" -o report.pdf

With policy limits

python expense_report.py --input data.csv --policy policy.json -o report.pdf

Input Format CSV Format date,description,category,amount,receipt,notes 2024-01-15,Client dinner at Restaurant,Meals,125.50,receipt_001.jpg,Met with ABC Corp 2024-01-16,Uber to client site,Transportation,32.00,, 2024-01-17,Office supplies,Supplies,45.99,receipt_002.jpg, 2024-01-18,Flight to NYC,Travel,450.00,flight_confirm.pdf,Project kickoff

JSON Format { "employee": "John Doe", "employee_id": "EMP001", "department": "Engineering", "period": {"start": "2024-01-01", "end": "2024-01-31"}, "expenses": [ { "date": "2024-01-15", "description": "Client dinner", "category": "Meals", "amount": 125.50, "receipt": "receipt_001.jpg" } ] }

Policy Configuration { "limits": { "Meals": 75, "Transportation": 100, "Lodging": 250, "Supplies": 200 }, "requires_receipt": 25, "requires_approval": 500, "prohibited": ["Alcohol", "Personal items"] }

API Reference ExpenseReportGenerator Class class ExpenseReportGenerator: def init(self)

# Report Setup
def set_employee(self, name: str, employee_id: str = None,
                department: str = None) -> 'ExpenseReportGenerator'
def set_period(self, start: str, end: str) -> 'ExpenseReportGenerator'
def set_approver(self, name: str, title: str = None) -> 'ExpenseReportGenerator'
def set_project(self, project_name: str, project_code: str = None) -> 'ExpenseReportGenerator'

# Adding Expenses
def add_expense(self, date: str, description: str, category: str,
               amount: float, receipt: str = None, notes: str = None,
               reimbursable: bool = True) -> 'ExpenseReportGenerator'
def load_csv(self, filepath: str) -> 'ExpenseReportGenerator'
def load_json(self, filepath: str) -> 'ExpenseReportGenerator'

# Policy
def set_policy(self, policy: Dict) -> 'ExpenseReportGenerator'
def check_compliance(self) -> List[Dict]

# Analysis
def get_summary(self) -> Dict
def by_category(self) -> Dict[str, float]
def by_date(self) -> Dict[str, float]
def get_total(self) -> float

# Export
def generate_pdf(self, output: str) -> str
def generate_html(self, output: str) -> str
def to_csv(self, output: str) -> str
def to_json(self, output: str) -> str

Expense Categories

Standard categories:

Meals: Business meals and entertainment Transportation: Taxi, rideshare, rental car, parking Travel: Flights, trains, hotels Lodging: Hotel, accommodation Supplies: Office supplies, equipment Communication: Phone, internet Professional: Conferences, training, memberships Other: Miscellaneous expenses Report Summary summary = report.get_summary()

Returns:

{

"employee": "John Doe",

"period": {"start": "2024-01-01", "end": "2024-01-31"},

"total_expenses": 1250.50,

"expense_count": 15,

"categories": {

"Meals": 325.00,

"Transportation": 180.50,

"Travel": 650.00,

"Supplies": 95.00

},

"reimbursable": 1150.50,

"non_reimbursable": 100.00,

"receipts_attached": 12,

"receipts_missing": 3

}

Policy Compliance

Set spending limits

report.set_policy({ "limits": { "Meals": 75, # Per transaction limit "Daily_meals": 100 # Daily limit }, "requires_receipt": 25, # Receipts required above this "requires_approval": 500 # Manager approval above this })

Check compliance

violations = report.check_compliance()

Returns:

[

{"expense_id": 3, "type": "over_limit", "category": "Meals",

"amount": 125.50, "limit": 75},

{"expense_id": 7, "type": "missing_receipt", "amount": 45.00}

]

Generated Report Contents

The PDF report includes:

Header

Company logo (optional) Report title and date range Employee information

Summary Section

Total amount Category breakdown Reimbursement status

Expense Details Table

Date, description, category Amount, receipt status Notes

Category Charts

Pie chart of spending by category Daily spending bar chart

Compliance Notes

Policy violations (if any) Missing receipts

Approval Section

Employee signature line Approver signature line Date fields Example Workflows Monthly Employee Report report = ExpenseReportGenerator() report.set_employee("Sarah Johnson", "EMP042", "Marketing") report.set_period("2024-02-01", "2024-02-29") report.set_approver("Mike Director", "VP Marketing")

Load from tracking spreadsheet

report.load_csv("february_expenses.csv")

Check policy

violations = report.check_compliance() if violations: print(f"Warning: {len(violations)} policy violations")

Generate report

report.generate_pdf("sarah_feb_expenses.pdf") print(f"Total: ${report.get_total():,.2f}")

Project Expense Tracking report = ExpenseReportGenerator() report.set_employee("Project Team") report.set_project("Website Redesign", "PRJ-2024-001") report.set_period("2024-01-01", "2024-03-31")

Add project expenses

report.add_expense("2024-01-15", "Design software license", "Software", 299.00) report.add_expense("2024-02-01", "User testing incentives", "Research", 500.00) report.add_expense("2024-02-20", "Stock photos", "Creative", 150.00)

summary = report.by_category() print("Project Expenses by Category:") for cat, amount in summary.items(): print(f" {cat}: ${amount:,.2f}")

Dependencies pandas>=2.0.0 reportlab>=4.0.0 matplotlib>=3.7.0

返回排行榜