|
|
@@ -294,7 +294,7 @@ class _ExpenseCreatePageState extends ConsumerState<ExpenseCreatePage> {
|
|
|
title: l10n.get('restore'),
|
|
|
titleColor: colors.primary,
|
|
|
action: () async {
|
|
|
- Navigator.pop(ctx);
|
|
|
+ final navigator = Navigator.of(ctx);
|
|
|
final draft = await ExpenseCreateController.loadDraft();
|
|
|
if (draft != null && mounted) {
|
|
|
final api = ref.read(expenseApiProvider);
|
|
|
@@ -307,6 +307,7 @@ class _ExpenseCreatePageState extends ConsumerState<ExpenseCreatePage> {
|
|
|
await _attachmentController.restoreFromPaths(draft.attachments);
|
|
|
}
|
|
|
}
|
|
|
+ navigator.pop();
|
|
|
},
|
|
|
),
|
|
|
),
|
|
|
@@ -319,8 +320,9 @@ class _ExpenseCreatePageState extends ConsumerState<ExpenseCreatePage> {
|
|
|
}
|
|
|
|
|
|
List<Map<String, dynamic>> _convertAcctTree(dynamic tree) {
|
|
|
- if (tree is! List) return [];
|
|
|
- return (tree as List).map<Map<String, dynamic>>((item) {
|
|
|
+ final list = tree is List ? tree : <dynamic>[];
|
|
|
+ if (list.isEmpty) return [];
|
|
|
+ return list.map<Map<String, dynamic>>((item) {
|
|
|
final map = Map<String, dynamic>.from(item is Map ? item : {});
|
|
|
if (map.containsKey('children') && map['children'] != null) {
|
|
|
map['children'] = _convertAcctTree(map['children']);
|
|
|
@@ -347,6 +349,9 @@ class _ExpenseCreatePageState extends ConsumerState<ExpenseCreatePage> {
|
|
|
final match = _employees.where((e) => e.salNo == usr);
|
|
|
if (match.isNotEmpty) {
|
|
|
setState(() => _selEmployee = match.first);
|
|
|
+ ref
|
|
|
+ .read(expenseCreateProvider(widget.editId).notifier)
|
|
|
+ .updateEmployee(match.first.salNo, match.first.name);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -365,6 +370,9 @@ class _ExpenseCreatePageState extends ConsumerState<ExpenseCreatePage> {
|
|
|
);
|
|
|
if (result != null && mounted) {
|
|
|
setState(() => _selEmployee = result);
|
|
|
+ ref
|
|
|
+ .read(expenseCreateProvider(widget.editId).notifier)
|
|
|
+ .updateEmployee(_selEmployee!.salNo, _selEmployee!.name);
|
|
|
}
|
|
|
}
|
|
|
|