mcpField
E
expense-report-generator

expense-report-generator

github.com/dkyazzentwatwaドキュメント12471 回インストール29 週間前に更新
リポジトリ

expense-report-generator について

expense-report-generatorは、CSV、JSON、または手入力のデータからPDF経費レポートを作成し、従業員やプロジェクトチームの利用を想定しています。経費分類に加えて、ポリシー確認、承認状況、精算額の追跡ができます。

主な機能

  1. 01CSV、JSON、手入力に対応
  2. 02経費の分類と合計の計算
  3. 03領収書を経費項目に関連付け
  4. 04ポリシー違反や領収書不足を表示
  5. 05承認状況と精算状況を追跡
  6. 06整形済みPDFレポートを出力

活用シーン

  1. 01従業員の月次経費レポートを作成
  2. 02設定した上限に照らして経費を確認
  3. 03プロジェクト経費と精算状況を追跡

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/expense-report-generatorを入力して読み込まれたか確認します。

同梱ファイルscripts/expense_report.pyscripts/requirements.txt

詳細

経費報告書ジェネレーター

レシートデータから、自動分類と合計計算を行い、プロフェッショナルな経費報告書を作成します。

機能

  • 複数の入力形式:CSV、JSON、または手動入力
  • 自動分類:経費を種類別に分類
  • レシート追跡:レシートを経費に関連付け
  • 承認ワークフロー:ステータスと承認者情報を追跡
  • ポリシー遵守:ポリシーに準拠しない経費を警告
  • PDF エクスポート:プロフェッショナルな形式の報告書
  • 払い戻し計算:支払い済み/未払いの金額を追跡

クイックスタート

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 の使い方

# 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

入力形式

CSV 形式
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 形式
{
  "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"
    }
  ]
}
ポリシー設定
{
  "limits": {
    "Meals": 75,
    "Transportation": 100,
    "Lodging": 250,
    "Supplies": 200
  },
  "requires_receipt": 25,
  "requires_approval": 500,
  "prohibited": ["Alcohol", "Personal items"]
}

API リファレンス

ExpenseReportGenerator クラス
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

経費カテゴリ

標準カテゴリ:

  • 食事:業務上の食事や接待
  • 交通費:タクシー、ライドシェア、レンタカー、駐車場
  • 出張費:航空券、鉄道、ホテル
  • 宿泊費:ホテル、宿泊施設
  • 備品:オフィス用品、機器
  • 通信費:電話、インターネット
  • 専門関連:会議、研修、会員費
  • その他:雑費

報告書の概要

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
# }

ポリシー遵守

# 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}
# ]

生成される報告書の内容

PDF 報告書には、次の内容が含まれます。

  1. ヘッダー

    • 会社のロゴ(任意)
    • 報告書のタイトルと期間
    • 従業員情報
  2. 概要セクション

    • 合計金額
    • カテゴリ別内訳
    • 払い戻し状況
  3. 経費明細テーブル

    • 日付、説明、カテゴリ
    • 金額、レシートの状況
    • メモ
  4. カテゴリ別グラフ

    • カテゴリ別支出の円グラフ
    • 日別支出の棒グラフ
  5. コンプライアンスに関する注記

    • ポリシー違反(ある場合)
    • レシートの不足
  6. 承認セクション

    • 従業員の署名欄
    • 承認者の署名欄
    • 日付欄

ワークフローの例

従業員の月次報告書
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}")
プロジェクト経費の追跡
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}")

依存関係

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

コメント