diff --git a/lib/core/models/forte/forte_close_day_dao.dart b/lib/core/models/forte/forte_close_day_dao.dart index dff6f8a..2728373 100644 --- a/lib/core/models/forte/forte_close_day_dao.dart +++ b/lib/core/models/forte/forte_close_day_dao.dart @@ -33,9 +33,9 @@ class CloseDayResultsBean { static CloseDayResultsBean? fromMap(Map? map) { if (map == null) return null; CloseDayResultsBean closeDayResultsBean = CloseDayResultsBean(); - closeDayResultsBean.reconciliationResult = List.empty()..addAll( - (map['reconciliationResult'] as List).map((o) => ReconciliationResultBean.fromMap(o)) - ); + closeDayResultsBean.reconciliationResult = (map['reconciliationResult'] as List) + .map((o) => ReconciliationResultBean.fromMap(o)) + .toList(); return closeDayResultsBean; } @@ -76,9 +76,9 @@ class TransactionsBean { static TransactionsBean? fromMap(Map? map) { if (map == null) return null; TransactionsBean transactionsBean = TransactionsBean(); - transactionsBean.transaction = List.empty()..addAll( - (map['transaction'] as List).map((o) => TransactionBean.fromMap(o)) - ); + transactionsBean.transaction = (map['transaction'] as List) + .map((o) => TransactionBean.fromMap(o)) + .toList(); return transactionsBean; } diff --git a/lib/core/models/forte/forte_response_dao.dart b/lib/core/models/forte/forte_response_dao.dart index dd1301f..7435545 100644 --- a/lib/core/models/forte/forte_response_dao.dart +++ b/lib/core/models/forte/forte_response_dao.dart @@ -117,7 +117,7 @@ class ResultBean { /// description : "Successfully completed" class HostResponseBean { - String? code; + int? code; String? description; static HostResponseBean? fromMap(Map? map) { diff --git a/lib/core/router.dart b/lib/core/router.dart index 3e2143b..2cc836c 100644 --- a/lib/core/router.dart +++ b/lib/core/router.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:aman_kassa_flutter/core/models/halyk/close_day_data.dart'; -import 'package:aman_kassa_flutter/core/models/forte/close_day_data.dart'; +import 'package:aman_kassa_flutter/core/models/halyk/close_day_data.dart' as halyk; +import 'package:aman_kassa_flutter/core/models/forte/close_day_data.dart' as forte; import 'package:aman_kassa_flutter/views/bank_setting/bank_setting_view.dart'; import 'package:aman_kassa_flutter/views/bank_view/bank_view.dart'; import 'package:aman_kassa_flutter/views/check/image_show_container.dart'; @@ -17,6 +17,8 @@ import 'package:aman_kassa_flutter/views/settings/printer/views/PrinterEncoding. import 'package:aman_kassa_flutter/views/settings/printer/views/PrinterPaperSize.dart'; import 'package:aman_kassa_flutter/views/settings/setting_printer_view.dart'; import 'package:aman_kassa_flutter/views/login/login_view.dart'; +import '../redux/state/bank_state.dart'; +import '../redux/store.dart'; import './route_names.dart'; import 'package:aman_kassa_flutter/views/bank_setting/forte_setting_view.dart'; @@ -109,12 +111,33 @@ Route generateRoute(RouteSettings settings) { routeName: settings.name!, viewToShow: PrinterPaperView(), ); - // case CloseDayShowRoute: - // CloseDayData data = settings.arguments as CloseDayData; - // return _getPageRoute( - // routeName: settings.name!, - // viewToShow: CloseDayShowContainer(data), - // ); + case CloseDayShowRoute: + var data = settings.arguments; + + if (data is halyk.CloseDayData) { + return _getPageRoute( + routeName: settings.name!, + viewToShow: CloseDayShowContainer(data), + ); + } else if (data is forte.CloseDayData) { + return _getPageRoute( + routeName: settings.name!, + viewToShow: CloseDayShowContainer(data), + ); + } else { + return _getPageRoute( + routeName: settings.name!, + viewToShow: Scaffold( + appBar: AppBar( + title: Text('Информация недоступна'), + ), + body: Center( + child: Text('Данные не могут быть отображены. Пожалуйста, попробуйте позже.'), + ), + ), + ); + } + default: return MaterialPageRoute( builder: (_) => Scaffold( diff --git a/lib/core/services/ApiService.dart b/lib/core/services/ApiService.dart index b1d2017..fed483b 100644 --- a/lib/core/services/ApiService.dart +++ b/lib/core/services/ApiService.dart @@ -86,7 +86,8 @@ class ApiService extends BaseService { print(hash); Map requestBody = {'login': login, 'hash': hash}; - String pointUrl = test ? '/fortepos/test/gettoken' : '/fortepos/prod/gettoken'; + // String pointUrl = '/fortepos/test/gettoken'; + String pointUrl = '/fortepos/prod/gettoken'; var response = await requestFormData(pointUrl, requestBody, bodyEntry: true, posEndPoint: true, statusCheck: false); print(response); return FortePosSession.fromJson(jsonDecode(response)); diff --git a/lib/views/check/image_show_container.dart b/lib/views/check/image_show_container.dart index 6a039be..dae344d 100644 --- a/lib/views/check/image_show_container.dart +++ b/lib/views/check/image_show_container.dart @@ -35,6 +35,8 @@ import 'package:vocsy_esys_flutter_share/vocsy_esys_flutter_share.dart'; import 'package:url_launcher/url_launcher.dart'; import '../../core/models/aman_dao.dart'; +import '../../redux/state/bank_state.dart'; +import '../payment/forte_pos_service.dart'; class ImageShowContainer extends StatefulWidget { final ImageShowModel showModel; @@ -233,7 +235,13 @@ class _MyFloatingActionButtonState extends State { } try { await Redux.store!.dispatch(changePinSkipFromSetting(true)); - AmanDao response = await reversalHalykPos(widget.data.cardData!, widget.data.voucher!.total!); + // Определяем метод отмены в зависимости от типа сессии + final BankState? state = Redux.store?.state.bankState; + final isForteSessionActive = state?.sessionType == 'Forte'; + + final AmanDao response = isForteSessionActive + ? await reversalFortePos(widget.data.cardData!, widget.data.voucher!.total!) + : await reversalHalykPos(widget.data.cardData!, widget.data.voucher!.total!); if (response.success == true) { pressRefund(); } else { @@ -274,7 +282,12 @@ class _MyFloatingActionButtonState extends State { try { await Redux.store!.dispatch(changePinSkipFromSetting(true)); - AmanDao response = await refundHalykPos(widget.data.cardData!, widget.data.voucher!.total!); + final BankState? state = Redux.store?.state.bankState; + final isForteSessionActive = state?.sessionType == 'Forte'; + + final AmanDao response = isForteSessionActive + ? await refundFortePos(widget.data.cardData!, widget.data.voucher!.total!) + : await refundHalykPos(widget.data.cardData!, widget.data.voucher!.total!); if (response.success == true) { pressRefund(); } else { diff --git a/lib/views/close_day_view/close_day_show_container.dart b/lib/views/close_day_view/close_day_show_container.dart index d11db3c..39484d2 100644 --- a/lib/views/close_day_view/close_day_show_container.dart +++ b/lib/views/close_day_view/close_day_show_container.dart @@ -1,13 +1,18 @@ -import 'package:aman_kassa_flutter/core/models/halyk/close_day_data.dart'; -import 'package:aman_kassa_flutter/core/models/halyk/halyk_close_day_dao.dart'; +import 'package:aman_kassa_flutter/core/models/halyk/close_day_data.dart' as halyk; +import 'package:aman_kassa_flutter/core/models/halyk/halyk_close_day_dao.dart' as halykDao; +import 'package:aman_kassa_flutter/core/models/forte/close_day_data.dart' as forte; +import 'package:aman_kassa_flutter/core/models/forte/forte_close_day_dao.dart' as forteDao; import 'package:aman_kassa_flutter/core/models/transaction_item.dart'; import 'package:aman_kassa_flutter/shared/shared_styles.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; +import '../../redux/state/bank_state.dart'; +import '../../redux/store.dart'; + class CloseDayShowContainer extends StatelessWidget { - final CloseDayData data; + final dynamic data; DateFormat dateFormat = DateFormat("dd.MM.yyyy HH:mm:ss"); CloseDayShowContainer(this.data); @override @@ -60,7 +65,15 @@ class CloseDayShowContainer extends StatelessWidget { return Divider(); }, itemBuilder: (BuildContext context, int index) { - TransactionBean item = data.items!.elementAt(index); + final BankState? state = Redux.store?.state.bankState; + final isForteSessionActive = state?.sessionType == 'Forte'; + + var item; + if (isForteSessionActive == true) { + item = data.items!.elementAt(index) as forteDao.TransactionBean; + } else { + item = data.items!.elementAt(index) as halykDao.TransactionBean; + } return ListTile( title: Text(item.instrumentSpecificData?.maskedPan ?? ''), subtitle: Column(