fix recurrent spendings
This commit is contained in:
@@ -12,13 +12,16 @@ import '../providers/tx_meta_provider.dart';
|
||||
import '../utils/helpers.dart';
|
||||
import '../utils/look_ahead.dart';
|
||||
|
||||
Future<void> showCreateRecurringTemplateSheet(BuildContext context) {
|
||||
Future<void> showCreateRecurringTemplateSheet(
|
||||
BuildContext context, {
|
||||
BankTransaction? initialTx,
|
||||
}) {
|
||||
return showModalBottomSheet<void>(
|
||||
context: context,
|
||||
isScrollControlled: true,
|
||||
useSafeArea: true,
|
||||
showDragHandle: true,
|
||||
builder: (context) => const _RecurringTemplateSheet(),
|
||||
builder: (context) => _RecurringTemplateSheet(initialTx: initialTx),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -36,9 +39,10 @@ Future<void> showEditRecurringTemplateSheet(
|
||||
}
|
||||
|
||||
class _RecurringTemplateSheet extends StatefulWidget {
|
||||
const _RecurringTemplateSheet({this.existing});
|
||||
const _RecurringTemplateSheet({this.existing, this.initialTx});
|
||||
|
||||
final RecurringTemplate? existing;
|
||||
final BankTransaction? initialTx;
|
||||
|
||||
@override
|
||||
State<_RecurringTemplateSheet> createState() =>
|
||||
@@ -71,15 +75,28 @@ class _RecurringTemplateSheetState extends State<_RecurringTemplateSheet> {
|
||||
_labelId = existing?.labelId;
|
||||
_currency = existing?.currency ?? 'EUR';
|
||||
|
||||
if (existing?.sourceTxId != null) {
|
||||
BankTransaction? seed = widget.initialTx;
|
||||
if (seed == null && existing?.sourceTxId != null) {
|
||||
final txs = context.read<BankController>().transactions;
|
||||
for (final tx in txs) {
|
||||
if (tx.id == existing!.sourceTxId) {
|
||||
_pickedTx = tx;
|
||||
seed = tx;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (seed != null) {
|
||||
_pickedTx = seed;
|
||||
_currency = seed.currency;
|
||||
_source = RecurringTemplateSource.transaction;
|
||||
if (_nameController.text.trim().isEmpty) {
|
||||
_nameController.text = seed.description;
|
||||
}
|
||||
if (existing == null) {
|
||||
_dayController.text =
|
||||
'${(DateTime.tryParse(seed.date)?.day ?? 1).clamp(1, 28)}';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -252,7 +269,9 @@ class _RecurringTemplateSheetState extends State<_RecurringTemplateSheet> {
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
children: [
|
||||
Text(
|
||||
widget.existing == null ? 'New recurring template' : 'Edit template',
|
||||
widget.existing == null
|
||||
? 'New recurring spending'
|
||||
: 'Edit recurring spending',
|
||||
style: theme.textTheme.titleLarge,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
|
||||
Reference in New Issue
Block a user