Project management related changes
This commit is contained in:
@@ -11,12 +11,16 @@ import '../domain/invoice.dart';
|
||||
import '../providers/customers_provider.dart';
|
||||
import '../domain/customer.dart';
|
||||
import '../../inventory/providers/products_provider.dart';
|
||||
import '../../projects/providers/project_mode_provider.dart';
|
||||
import '../../inventory/domain/product.dart';
|
||||
import 'add_customer_sheet.dart';
|
||||
import '../../transactions/providers/providers.dart';
|
||||
|
||||
class InvoiceBuilderScreen extends ConsumerStatefulWidget {
|
||||
const InvoiceBuilderScreen({super.key});
|
||||
final List<InvoiceItem>? initialItems;
|
||||
final int? initialCustomerId;
|
||||
|
||||
const InvoiceBuilderScreen({super.key, this.initialItems, this.initialCustomerId});
|
||||
|
||||
@override
|
||||
ConsumerState<InvoiceBuilderScreen> createState() => _InvoiceBuilderScreenState();
|
||||
@@ -27,6 +31,29 @@ class _InvoiceBuilderScreenState extends ConsumerState<InvoiceBuilderScreen> {
|
||||
Customer? _selectedCustomer;
|
||||
final List<InvoiceItem> _items = [];
|
||||
bool _isEmi = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
if (widget.initialItems != null) {
|
||||
_items.addAll(widget.initialItems!);
|
||||
}
|
||||
}
|
||||
|
||||
void _loadInitialCustomer() {
|
||||
if (widget.initialCustomerId != null && _selectedCustomer == null) {
|
||||
final customers = ref.read(customersProvider).value;
|
||||
if (customers != null) {
|
||||
final cust = customers.where((c) => c.id == widget.initialCustomerId).firstOrNull;
|
||||
if (cust != null) {
|
||||
setState(() {
|
||||
_selectedCustomer = cust;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String _emiCycle = 'MONTHLY';
|
||||
final TextEditingController _emiAmountCtrl = TextEditingController();
|
||||
final TextEditingController _invoiceNumberCtrl = TextEditingController(text: 'INV-${DateTime.now().millisecondsSinceEpoch.toString().substring(7)}');
|
||||
@@ -104,6 +131,7 @@ class _InvoiceBuilderScreenState extends ConsumerState<InvoiceBuilderScreen> {
|
||||
}
|
||||
|
||||
void _showAddItemDialog() {
|
||||
final isProjectMode = ref.read(projectModeProvider);
|
||||
Product? selectedProduct;
|
||||
final TextEditingController descCtrl = TextEditingController();
|
||||
final TextEditingController qtyCtrl = TextEditingController(text: '1');
|
||||
@@ -126,7 +154,7 @@ class _InvoiceBuilderScreenState extends ConsumerState<InvoiceBuilderScreen> {
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Consumer(
|
||||
if (!isProjectMode) Consumer(
|
||||
builder: (context, dialogRef, _) {
|
||||
final productsState = dialogRef.watch(productsProvider);
|
||||
return productsState.when(
|
||||
@@ -222,14 +250,16 @@ class _InvoiceBuilderScreenState extends ConsumerState<InvoiceBuilderScreen> {
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(child: PremiumTextField(controller: makingCtrl, labelText: 'Making Chg', keyboardType: TextInputType.number)),
|
||||
const SizedBox(width: 8),
|
||||
Expanded(child: PremiumTextField(controller: otherCtrl, labelText: 'Other Chg', keyboardType: TextInputType.number)),
|
||||
],
|
||||
),
|
||||
if (!isProjectMode) ...[
|
||||
const SizedBox(height: 12),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(child: PremiumTextField(controller: makingCtrl, labelText: 'Making Chg', keyboardType: TextInputType.number)),
|
||||
const SizedBox(width: 8),
|
||||
Expanded(child: PremiumTextField(controller: otherCtrl, labelText: 'Other Chg', keyboardType: TextInputType.number)),
|
||||
],
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -332,6 +362,7 @@ class _InvoiceBuilderScreenState extends ConsumerState<InvoiceBuilderScreen> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
_loadInitialCustomer();
|
||||
final customersState = ref.watch(customersProvider);
|
||||
final formatCurrency = NumberFormat.currency(symbol: '₹');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user