# 給与管理システム (Payroll Management System)

会計システムに統合された給与管理モジュールです。

## 機能概要

### 1. 従業員管理

- 従業員の基本情報管理
- 扶養家族情報の登録・管理
- 銀行口座情報の管理

### 2. 給与設定

- 従業員ごとの給与基本設定
- 基本給、時給、各種手当の設定
- 設定履歴の管理

### 3. 月次給与計算

- 勤怠情報の入力
- 給与の自動計算
  - 基本給
  - 残業手当（時給 × 1.25）
  - 休日手当（時給 × 1.35）
  - 社会保険料（健康保険、厚生年金、雇用保険）
  - 所得税（扶養人数を考慮）
  - 住民税
- 給与明細の表示
- 給与の承認機能

### 4. 税率・保険料管理

- 社会保険料率の管理
  - 健康保険
  - 厚生年金
  - 雇用保険
  - 労災保険
- 所得税率表の管理
- CSV インポート機能

## セットアップ

### 1. データベーススキーマの適用

```bash
# PostgreSQLに接続
psql -U your_user -d your_database

# スキーマを適用
\i backend/sql/payroll_schema.sql
```

### 2. サーバーの起動

```bash
cd backend
uvicorn app.main:app --reload
```

### 3. フロントエンドへのアクセス

ブラウザで以下の URL にアクセス:

- メインメニュー: http://localhost:8000/static/payroll.html
- 従業員管理: http://localhost:8000/static/payroll-employees.html
- 給与設定: http://localhost:8000/static/payroll-salary-settings.html
- 月次給与計算: http://localhost:8000/static/payroll-calculation.html
- 税率・保険料設定: http://localhost:8000/static/payroll-settings.html

## API エンドポイント

### 従業員管理

- `POST /payroll/employees/` - 従業員の作成
- `GET /payroll/employees/` - 従業員一覧の取得
- `GET /payroll/employees/{employee_id}` - 従業員詳細の取得
- `PUT /payroll/employees/{employee_id}` - 従業員情報の更新
- `DELETE /payroll/employees/{employee_id}` - 従業員の削除

### 扶養家族管理

- `POST /payroll/employees/{employee_id}/dependents` - 扶養家族の追加
- `GET /payroll/employees/{employee_id}/dependents` - 扶養家族一覧の取得
- `PUT /payroll/dependents/{dependent_id}` - 扶養家族情報の更新
- `DELETE /payroll/dependents/{dependent_id}` - 扶養家族の削除

### 給与設定

- `POST /payroll/settings/salary` - 給与設定の作成
- `GET /payroll/settings/salary/{employee_id}` - 給与設定履歴の取得
- `GET /payroll/settings/salary/{employee_id}/current` - 現在の給与設定の取得
- `PUT /payroll/settings/salary/{setting_id}` - 給与設定の更新

### 保険料率管理

- `POST /payroll/settings/insurance-rates` - 保険料率の作成
- `GET /payroll/settings/insurance-rates` - 保険料率一覧の取得
- `GET /payroll/settings/insurance-rates/{rate_type}` - 特定保険料率の取得
- `PUT /payroll/settings/insurance-rates/{rate_id}` - 保険料率の更新

### 所得税率表管理

- `POST /payroll/settings/income-tax` - 所得税率表の作成
- `POST /payroll/settings/income-tax/import` - CSV インポート
- `GET /payroll/settings/income-tax` - 所得税率表の取得
- `GET /payroll/settings/income-tax/calculate` - 所得税の計算

### 月次給与計算

- `POST /payroll/calculation/calculate` - 給与の計算
- `GET /payroll/calculation/` - 給与計算一覧の取得
- `GET /payroll/calculation/{payroll_id}` - 給与明細の取得
- `PUT /payroll/calculation/{payroll_id}` - 給与データの更新
- `POST /payroll/calculation/{payroll_id}/recalculate` - 給与の再計算
- `POST /payroll/calculation/{payroll_id}/approve` - 給与の承認
- `DELETE /payroll/calculation/{payroll_id}` - 給与データの削除

## 使い方

### 初回セットアップフロー

1. **保険料率の確認**

   - 税率・保険料設定画面で、初期登録された保険料率を確認
   - 必要に応じて更新

2. **所得税率表のインポート**

   - CSV ファイルを準備（フォーマット: 月収 From,月収 To,扶養人数,税額）
   - 税率・保険料設定画面で CSV インポート

3. **従業員の登録**

   - 従業員管理画面で従業員を登録
   - 必要に応じて扶養家族情報を追加

4. **給与設定**
   - 給与設定画面で各従業員の給与設定を登録
   - 基本給、手当などを設定

### 月次給与計算フロー

1. **勤怠情報の入力**

   - 月次給与計算画面で「新規計算」をクリック
   - 従業員を選択
   - 出勤日数、勤務時間、残業時間などを入力

2. **給与の計算**

   - 「計算実行」ボタンをクリック
   - システムが自動的に給与を計算

3. **給与明細の確認**

   - 計算結果を確認
   - 必要に応じて「再計算」

4. **承認**
   - 内容を確認後、「承認」ボタンをクリック
   - 承認後は変更不可

## データベーススキーマ

### 主要テーブル

1. **employees** - 従業員マスタ
2. **dependents** - 扶養家族情報
3. **salary_settings** - 給与基本設定
4. **insurance_rates** - 社会保険料率マスタ
5. **income_tax_table** - 所得税率表
6. **monthly_payroll** - 月次給与計算ヘッダー
7. **payroll_details** - 給与明細項目詳細

## 計算ロジック

### 基本給の計算

- 月給制: 設定された基本給から欠勤日数を控除
- 時給制: 時給 × 勤務時間

### 残業手当

- 時給 × 残業時間 × 1.25

### 休日手当

- 時給 × 休日出勤時間 × 1.35

### 社会保険料

- 健康保険: 総支給額 × 従業員負担率
- 厚生年金: 総支給額 × 従業員負担率
- 雇用保険: 総支給額 × 従業員負担率

### 所得税

1. 課税対象額 = 総支給額 - 通勤手当（非課税限度額まで） - 社会保険料
2. 扶養家族数を取得
3. 所得税率表から該当する税額を取得

### 差引支給額

- 総支給額 - 総控除額

## 注意事項

- 所得税率表は国税庁の「給与所得の源泉徴収税額表」に基づいて作成してください
- 社会保険料率は年度ごとに変更される可能性があるため、定期的な更新が必要です
- 承認済みの給与は変更・削除できません
- 扶養家族の情報は所得税計算に影響するため、正確に入力してください

## 今後の拡張機能

- 賞与計算機能
- 年末調整機能
- 給与明細の PDF 出力
- 銀行振込データの出力
- 給与台帳の出力
- 源泉徴収票の作成
