// Version: 1.5 - 請求画面(簡易実装) import 'package:flutter/material.dart'; import '../models/customer.dart'; import '../models/product.dart'; import '../services/database_helper.dart'; /// 請求書作成・管理画面(簡易実装) class InvoiceScreen extends StatefulWidget { const InvoiceScreen({super.key}); @override State createState() => _InvoiceScreenState(); } class _InvoiceScreenState extends State { final _db = DatabaseHelper.instance; // UI ステート Customer? _selectedCustomer; List _customers = []; String _invoiceNumber = ''; @override void initState() { super.initState(); _loadCustomers(); _generateInvoiceNumber(); } /// 得意先一覧をロード Future _loadCustomers() async { final customers = await DatabaseHelper.instance.getCustomers(); setState(() => _customers = customers); } /// 請求書番号を自動生成(YMM-0001 形式) void _generateInvoiceNumber() { final now = DateTime.now(); final yearMonth = '${now.year}${now.month.toString().padLeft(2, '0')}'; final nextNumber = '0001'; setState(() => _invoiceNumber = '$yearMonth-$nextNumber'); } /// 請求書保存処理(簡易) Future _saveInvoice(Map invoiceData) async { if (mounted) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('請求書保存しました')), ); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('請求書')), body: _selectedCustomer == null ? const Center(child: Text('得意先を選択してください')) : SingleChildScrollView( child: Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ // 請求書番号表示 ListTile( contentPadding: EdgeInsets.zero, title: const Text('請求書番号'), subtitle: Text(_invoiceNumber), ), const Divider(), // 合計金額表示 Card( child: ListTile( contentPadding: EdgeInsets.zero, title: const Text('請求書合計'), subtitle: const Text('¥0.00'), trailing: IconButton(icon: const Icon(Icons.edit), onPressed: () {}), ), ), const SizedBox(height: 16), // PDF 帳票出力ボタン(簡易) TextButton.icon( onPressed: () { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('PDF 帳票生成中...')), ); }, icon: const Icon(Icons.download), label: const Text('PDF をダウンロード'), ), ], ), ), ), ); } }