import 'receipt_group.dart'; /// Satu tugas kirim ke Firefly III: satu grup deposit atau satu tip. /// /// Kalau [group] tidak null → deposit transaksi grup. /// Kalau [group] null → transaksi tip, pakai [tipSourceAccountId]/[tipAmount]. class SubmissionTask { final String taskId; final ReceiptGroup? group; final double? tipAmount; final String? tipSourceAccountId; final String? tipSourceAccountName; final String destinationAccountId; final String destinationAccountName; final DateTime transactionDate; SubmissionTask({ required this.taskId, this.group, this.tipAmount, this.tipSourceAccountId, this.tipSourceAccountName, required this.destinationAccountId, required this.destinationAccountName, required this.transactionDate, }) : assert( (group != null) || (tipAmount != null && tipSourceAccountId != null), 'Harus punya group atau data tip'); bool get isTip => group == null; String get label => isTip ? 'Tip (${tipSourceAccountName ?? '?'})' : (group?.sourceAccountName ?? 'Grup'); double get amount => isTip ? (tipAmount ?? 0) : (group?.total ?? 0); }