This commit is contained in:
parent
a8242c2a7e
commit
070464fb4d
1 changed files with 153 additions and 0 deletions
153
README.md
153
README.md
|
|
@ -0,0 +1,153 @@
|
|||
# スマートフォン用 見積納品請求領収書発行システム を制作します
|
||||
- flutterを使います
|
||||
- 今は初期段階なので請求書だけを作ります
|
||||
- 今は初期段階なのでスタンドアロンですが将来的にデータをodooとOnline時に同期する予定です
|
||||
- 今はデータをローカルのsqliteで管理します
|
||||
- 顧客データはスマートフォンの住所録から取り込むか貼り付けか手入力します
|
||||
- 商品データは手入力しsqliteで管理します
|
||||
- 値引きも商品データとしてsqliteで管理します
|
||||
|
||||
## プロジェクト計画(スマートフォン用 見積納品請求領収書発行システム)
|
||||
|
||||
---
|
||||
|
||||
### 1. 目的・概要
|
||||
- Flutterで構築するモバイルアプリ
|
||||
- 現時点では請求書(領収書)発行機能のみ
|
||||
- 将来的に Odoo とオンライン同期を実装
|
||||
- データはローカル SQLite に保存
|
||||
- 顧客情報は電話帳からインポート/手入力
|
||||
- 商品・値引き情報は手入力で SQLite に保存
|
||||
|
||||
---
|
||||
|
||||
### 2. 主要機能一覧
|
||||
| 機能 | 説明 | 優先度 |
|
||||
|------|------|--------|
|
||||
| **請求書作成** | 顧客選択 → 商品・数量入力 → 合計・税・値引き計算 → PDF/画像生成 | ★★★★★ |
|
||||
| **顧客管理** | 連絡先インポート、手入力、編集、削除 | ★★★★☆ |
|
||||
| **商品管理** | 商品名・単価・値引き設定、編集、削除 | ★★★★☆ |
|
||||
| **データ永続化** | SQLite(sqflite)で顧客・商品・請求書履歴保存 | ★★★★★ |
|
||||
| **PDF/画像出力** | `printing` / `pdf` パッケージで請求書を生成 | ★★★★☆ |
|
||||
| **将来の同期** | Odoo REST API 連携(認証・CRUD) | ★★☆☆☆ |
|
||||
| **UI/UX** | Material Design、レスポンシブ、アクセシビリティ | ★★★★★ |
|
||||
|
||||
---
|
||||
|
||||
### 3. 技術スタック
|
||||
- **フロントエンド**: Flutter 3.x, Dart
|
||||
- **データベース**: `sqflite` + `path_provider`
|
||||
- **PDF生成**: `pdf`, `printing`
|
||||
- **状態管理**: `provider`(または Riverpod)
|
||||
- **テスト**: `flutter_test`, `mockito`
|
||||
- **CI/CD**: GitHub Actions(ビルド・テスト)
|
||||
|
||||
---
|
||||
|
||||
### 4. データモデル(SQLite)
|
||||
| テーブル | カラム | 型 | 備考 |
|
||||
|----------|--------|----|------|
|
||||
| `customers` | id | INTEGER PRIMARY KEY AUTOINCREMENT | |
|
||||
| | name | TEXT | |
|
||||
| | phone | TEXT | |
|
||||
| | address | TEXT | |
|
||||
| | email | TEXT | |
|
||||
| `products` | id | INTEGER PRIMARY KEY AUTOINCREMENT | |
|
||||
| | name | TEXT | |
|
||||
| | unit_price | REAL | |
|
||||
| | discount | REAL | 0〜1 の割合 |
|
||||
| `invoices` | id | INTEGER PRIMARY KEY AUTOINCREMENT | |
|
||||
| | customer_id | INTEGER | FK |
|
||||
| | date | TEXT | ISO8601 |
|
||||
| | total | REAL | |
|
||||
| | tax | REAL | |
|
||||
| | discount_total | REAL | |
|
||||
| `invoice_items` | id | INTEGER PRIMARY KEY AUTOINCREMENT | |
|
||||
| | invoice_id | INTEGER | FK |
|
||||
| | product_id | INTEGER | FK |
|
||||
| | quantity | INTEGER | |
|
||||
| | unit_price | REAL | |
|
||||
| | discount | REAL | |
|
||||
|
||||
---
|
||||
|
||||
### 5. 画面設計(ワイヤーフレーム)
|
||||
1. **ホーム**
|
||||
- 「請求書作成」ボタン
|
||||
- 「顧客一覧」ボタン
|
||||
- 「商品一覧」ボタン
|
||||
2. **顧客一覧**
|
||||
- 検索バー
|
||||
- 顧客カード(名前・電話)
|
||||
- 追加ボタン(連絡先インポート/手入力)
|
||||
3. **商品一覧**
|
||||
- 検索バー
|
||||
- 商品カード(名前・単価・値引き)
|
||||
- 追加ボタン
|
||||
4. **請求書作成**
|
||||
- 顧客選択ドロップダウン
|
||||
- 商品追加リスト(+ボタン)
|
||||
- 数量入力フィールド
|
||||
- 合計・税・値引き表示
|
||||
- 「PDF生成」ボタン
|
||||
5. **請求書プレビュー**
|
||||
- PDF/画像表示
|
||||
- 共有/保存ボタン
|
||||
|
||||
---
|
||||
|
||||
### 6. 開発フロー
|
||||
1. **環境構築**
|
||||
- Flutter SDK 3.x インストール
|
||||
- `pubspec.yaml` に必要パッケージ追加
|
||||
2. **データベース設計**
|
||||
- `db_helper.dart` でテーブル作成・CRUD実装
|
||||
3. **モデルクラス**
|
||||
- `Customer`, `Product`, `Invoice`, `InvoiceItem` を作成
|
||||
4. **状態管理**
|
||||
- `CustomerProvider`, `ProductProvider`, `InvoiceProvider` を実装
|
||||
5. **UI実装**
|
||||
- 画面ごとに `StatelessWidget` / `StatefulWidget` を作成
|
||||
- `ListView.builder` でデータ表示
|
||||
6. **PDF生成**
|
||||
- `pdf` パッケージでレイアウト設計
|
||||
- `printing` でプレビュー・保存・共有
|
||||
7. **テスト**
|
||||
- 単体テスト(モデル・DB)
|
||||
- widget テスト(画面遷移・入力)
|
||||
8. **ビルド・デプロイ**
|
||||
- Android/iOS 向けビルド
|
||||
- GitHub Actions で自動テスト・ビルド
|
||||
|
||||
---
|
||||
|
||||
### 7. 将来の Odoo 同期設計(ロードマップ)
|
||||
- **認証**: OAuth2 / API キー
|
||||
- **エンドポイント**: `/api/invoices`, `/api/customers`, `/api/products`
|
||||
- **同期戦略**:
|
||||
- **プッシュ**: ローカルで作成した請求書を Odoo に POST
|
||||
- **プル**: Odoo から顧客・商品データを取得しローカルにマージ
|
||||
- **エラーハンドリング**: ネットワーク失敗時はローカルにキュー保存
|
||||
- **UI**: 「同期」ボタン、同期ステータス表示
|
||||
|
||||
---
|
||||
|
||||
### 8. 重要ポイント & リスク
|
||||
- **データ整合性**: SQLite の外部キー制約を有効化
|
||||
- **パフォーマンス**: 大量データ時はページング実装
|
||||
- **セキュリティ**: データ暗号化(`sqflite_sqlcipher`)検討
|
||||
- **ユーザー体験**: 入力補完、バリデーション、エラーメッセージ
|
||||
|
||||
---
|
||||
|
||||
### 9. 次のステップ
|
||||
1. `pubspec.yaml` に必要パッケージを追加
|
||||
2. `db_helper.dart` を作成しテーブルを生成
|
||||
3. モデルクラスを実装
|
||||
4. 画面構成を決め、最小限の UI を作成
|
||||
5. PDF 生成を試作し、レイアウトを確定
|
||||
|
||||
---
|
||||
|
||||
**以上が、現在の要件に基づくプロジェクト計画です。**
|
||||
次に進める際は、上記の順序でタスクを分割し、GitHub Issues で管理するとスムーズです。
|
||||
Loading…
Reference in a new issue