54 lines
1.8 KiB
Dart
54 lines
1.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'package:pshared/models/payment/operation.dart';
|
|
import 'package:pshared/models/payment/status.dart';
|
|
import 'package:pshared/utils/currency.dart';
|
|
|
|
import 'package:pweb/pages/report/table/badge.dart';
|
|
import 'package:pweb/utils/report/download_act.dart';
|
|
|
|
import 'package:pweb/generated/i18n/app_localizations.dart';
|
|
|
|
class OperationRow {
|
|
static DataRow build(OperationItem op, BuildContext context) {
|
|
final isUnknownDate = op.date.millisecondsSinceEpoch == 0;
|
|
final localDate = op.date.toLocal();
|
|
final loc = AppLocalizations.of(context)!;
|
|
final dateLabel = isUnknownDate
|
|
? '-'
|
|
: '${TimeOfDay.fromDateTime(localDate).format(context)}\n'
|
|
'${localDate.toIso8601String().split("T").first}';
|
|
|
|
final canDownload =
|
|
op.status == OperationStatus.success &&
|
|
(op.operationRef ?? '').trim().isNotEmpty &&
|
|
(op.gatewayService ?? '').trim().isNotEmpty;
|
|
|
|
final documentCell = canDownload
|
|
? TextButton.icon(
|
|
onPressed: () => downloadPaymentAct(
|
|
context,
|
|
gatewayService: op.gatewayService ?? '',
|
|
operationRef: op.operationRef ?? '',
|
|
),
|
|
icon: const Icon(Icons.download),
|
|
label: Text(loc.downloadAct),
|
|
)
|
|
: Text(op.fileName ?? '');
|
|
|
|
return DataRow(
|
|
cells: [
|
|
DataCell(OperationStatusBadge(status: op.status)),
|
|
DataCell(documentCell),
|
|
DataCell(Text('${amountToString(op.amount)} ${op.currency}')),
|
|
DataCell(Text('${amountToString(op.toAmount)} ${op.toCurrency}')),
|
|
DataCell(Text(op.payId)),
|
|
DataCell(Text(op.cardNumber ?? '-')),
|
|
DataCell(Text(op.name)),
|
|
DataCell(Text(dateLabel)),
|
|
DataCell(Text(op.comment)),
|
|
],
|
|
);
|
|
}
|
|
}
|