add mobile paymennt

add iin field
master
suvaysov 2022-08-11 17:46:32 +06:00
parent d2ff26e89c
commit 2e255fa8a2
8 changed files with 141 additions and 78 deletions

View File

@ -63,9 +63,6 @@ android {
} }
} }
buildTypes { buildTypes {
// all {
// buildConfigField ("String[]", "SUPPORTED_DEVICES", collectSupportedDevicesToArray())
// }
debug { debug {
shrinkResources false shrinkResources false
minifyEnabled false minifyEnabled false
@ -90,6 +87,11 @@ android {
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
packagingOptions {
exclude "META-INF/library_release.kotlin_module"
exclude "META-INF/com.android.tools/proguard/coroutines.pro"
}
kotlinOptions { kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString() jvmTarget = JavaVersion.VERSION_1_8.toString()
} }
@ -114,15 +116,10 @@ dependencies {
implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6' implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
implementation 'com.android.support:multidex:1.0.3' //implementation 'com.android.support:multidex:2.0.1'
//m4bank dependencies //m4bank dependencies
} }
//def collectSupportedDevicesToArray() {
// return '{' + rootProject.ext."supportedDevices${getProject().name}".collect {
// "\"${it}\""
// }.join(",") + '}'
//}

View File

@ -2,18 +2,20 @@ import 'package:aman_kassa_flutter/core/models/card_data.dart';
import 'package:aman_kassa_flutter/core/models/check_item.dart'; import 'package:aman_kassa_flutter/core/models/check_item.dart';
class CheckData { class CheckData {
final String ?type; final String? type;
num? card; num? card;
String? contragent;
final List<CheckItem>? items; final List<CheckItem>? items;
CardData? cardData; CardData? cardData;
CheckData({this.type, this.card, this.items, this.cardData}); CheckData({this.type, this.card, this.items, this.cardData, this.contragent});
static CheckData fromJson(Map<String, dynamic> json) { static CheckData fromJson(Map<String, dynamic> json) {
return CheckData( return CheckData(
type: json['type'], type: json['type'] as String?,
card: json['card'], card: json['card'] as num?,
items: (json['items'] as List).map((e) => CheckItem.fromJson(e)).toList(), items: (json['items'] as List).map((e) => CheckItem.fromJson(e)).toList(),
cardData: CardData.fromJson(json['cardData']) cardData: CardData.fromJson(json['cardData']),
contragent: json['type'] as String?,
); );
} }
Map<String, dynamic> toJson() => Map<String, dynamic> toJson() =>
@ -21,6 +23,7 @@ class CheckData {
'type': type, 'type': type,
'card': card, 'card': card,
'items': items?.map((e) => e.toJson()).toList(), 'items': items?.map((e) => e.toJson()).toList(),
'cardData': cardData?.toJson() 'cardData': cardData?.toJson(),
'contragent': contragent,
}; };
} }

View File

@ -186,6 +186,7 @@ class DataService extends BaseService {
Future<Response<dynamic>?> sellOrReturn( Future<Response<dynamic>?> sellOrReturn(
{String? paymentType, {String? paymentType,
String? tradeType, String? tradeType,
String? contragent,
required String token, required String token,
required List<ProductDao> kassaItems, required List<ProductDao> kassaItems,
required List<CalcModel> calcItems, required List<CalcModel> calcItems,
@ -198,11 +199,13 @@ class DataService extends BaseService {
CheckData checkData = _transformProductsToCheckData( CheckData checkData = _transformProductsToCheckData(
paymentType: paymentType, tradeType: tradeType, items: kassaItems); paymentType: paymentType, tradeType: tradeType, items: kassaItems);
checkData.cardData = cardData; checkData.cardData = cardData;
checkData.contragent = contragent;
data = jsonEncode(checkData.toJson()); data = jsonEncode(checkData.toJson());
} else if (mode == SettingModeCalc) { } else if (mode == SettingModeCalc) {
CheckData checkData = _transformCalcModelToCheckData( CheckData checkData = _transformCalcModelToCheckData(
paymentType: paymentType, tradeType: tradeType, items: calcItems); paymentType: paymentType, tradeType: tradeType, items: calcItems);
checkData.cardData = cardData; checkData.cardData = cardData;
checkData.contragent = contragent;
data = jsonEncode(checkData.toJson()); data = jsonEncode(checkData.toJson());
} }

View File

@ -58,7 +58,7 @@ class MainApplication extends StatelessWidget {
411.43, 411.43,
683.43, 683.43,
), ),
builder: () => MaterialApp( builder: (context, child) => MaterialApp(
theme: ThemeData( theme: ThemeData(
backgroundColor: backgroundColor, backgroundColor: backgroundColor,
primaryColor: primaryColor, primaryColor: primaryColor,

View File

@ -106,7 +106,7 @@ class _HomeViewState extends State<HomeView> with WidgetsBindingObserver {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
WidgetsBinding.instance!.addObserver(this); WidgetsBinding.instance.addObserver(this);
selectedTabIndex = 0; selectedTabIndex = 0;
pageController = new PageController(initialPage: selectedTabIndex); pageController = new PageController(initialPage: selectedTabIndex);
Redux.store!.dispatch(checkSmena); Redux.store!.dispatch(checkSmena);
@ -135,7 +135,7 @@ class _HomeViewState extends State<HomeView> with WidgetsBindingObserver {
@override @override
void dispose() { void dispose() {
WidgetsBinding.instance!.removeObserver(this); WidgetsBinding.instance.removeObserver(this);
pageController.dispose(); pageController.dispose();
super.dispose(); super.dispose();
} }

View File

@ -27,6 +27,7 @@ import 'package:aman_kassa_flutter/shared/ui_helpers.dart';
import 'package:aman_kassa_flutter/views/check/image_show_container.dart'; import 'package:aman_kassa_flutter/views/check/image_show_container.dart';
import 'package:aman_kassa_flutter/widgets/components/calculator/calculator.dart'; import 'package:aman_kassa_flutter/widgets/components/calculator/calculator.dart';
import 'package:aman_kassa_flutter/widgets/fields/busy_button.dart'; import 'package:aman_kassa_flutter/widgets/fields/busy_button.dart';
import 'package:aman_kassa_flutter/widgets/fields/input_field.dart';
import 'package:aman_kassa_flutter/widgets/loader/Dialogs.dart'; import 'package:aman_kassa_flutter/widgets/loader/Dialogs.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
@ -52,9 +53,12 @@ class _PaymentViewState extends State<PaymentView> {
final DialogService _dialogService = locator<DialogService>(); final DialogService _dialogService = locator<DialogService>();
BankService _bankService = locator<BankService>(); BankService _bankService = locator<BankService>();
final NavigatorService _navigatorService = locator<NavigatorService>(); final NavigatorService _navigatorService = locator<NavigatorService>();
final TextEditingController _iinController = new TextEditingController();
late bool isBusy; late bool isBusy;
late bool isBankApiAccess; late bool isBankApiAccess;
var height = AppBar().preferredSize.height;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -63,6 +67,12 @@ class _PaymentViewState extends State<PaymentView> {
_bankInit(); _bankInit();
} }
@override
void dispose() {
_iinController.dispose();
super.dispose();
}
_bankInit() async { _bankInit() async {
int version = await _bankService.version(); int version = await _bankService.version();
if (version >= _bankService.sdkVersion) { if (version >= _bankService.sdkVersion) {
@ -94,22 +104,27 @@ class _PaymentViewState extends State<PaymentView> {
style: TextStyle(color: Colors.black87), style: TextStyle(color: Colors.black87),
), ),
), ),
body: Container( body: SingleChildScrollView(
padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 12.0), child: SizedBox(
child: Column( height: ScreenUtil().screenHeight - ScreenUtil().statusBarHeight - height,
crossAxisAlignment: CrossAxisAlignment.start, child: Container(
children: <Widget>[ padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 12.0),
Text( child: Column(
dataText(), crossAxisAlignment: CrossAxisAlignment.start,
style: TextStyle( children: <Widget>[
fontWeight: FontWeight.bold, Text(
color: Colors.black26, dataText(),
fontSize: 15), style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.black26,
fontSize: 15),
),
buildStoreConnector(),
verticalSpaceLarge,
_buildBodyContent(),
],
), ),
buildStoreConnector(), ),
verticalSpaceLarge,
_buildBodyContent(),
],
), ),
), ),
), ),
@ -151,6 +166,13 @@ class _PaymentViewState extends State<PaymentView> {
return Expanded( return Expanded(
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
TextField(
keyboardType: TextInputType.number,
controller: _iinController,
maxLength: 12,
decoration: InputDecoration(
labelText: 'ИИН Покупателя', hintText: "Введите ИИН покупателя"),
),
Container( Container(
height: 150, height: 150,
child: Row( child: Row(
@ -165,6 +187,15 @@ class _PaymentViewState extends State<PaymentView> {
mainColor: primaryColor, mainColor: primaryColor,
)), )),
horizontalSpaceSmall, horizontalSpaceSmall,
Expanded(
child: BusyButton(
title: 'Мобильный',
onPressed: () {
pressPayment('mobile', null);
},
mainColor: redColor,
)),
horizontalSpaceSmall,
Expanded( Expanded(
child: BusyButton( child: BusyButton(
title: 'Наличными', title: 'Наличными',
@ -304,7 +335,8 @@ class _PaymentViewState extends State<PaymentView> {
tradeType: _tradeType, tradeType: _tradeType,
calcItems: calcItems, calcItems: calcItems,
mode: _mode, mode: _mode,
cardData: cardData cardData: cardData,
contragent: _iinController.text
); );
setState(() { setState(() {
isBusy = false; isBusy = false;

View File

@ -28,7 +28,7 @@ packages:
name: barcode_scan2 name: barcode_scan2
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.2.0" version: "4.2.1"
bluetooth_print: bluetooth_print:
dependency: "direct main" dependency: "direct main"
description: description:
@ -77,7 +77,7 @@ packages:
name: collection name: collection
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.15.0" version: "1.16.0"
convert: convert:
dependency: transitive dependency: transitive
description: description:
@ -105,7 +105,7 @@ packages:
name: cupertino_icons name: cupertino_icons
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.4" version: "1.0.5"
device_info: device_info:
dependency: "direct main" dependency: "direct main"
description: description:
@ -140,7 +140,7 @@ packages:
name: fake_async name: fake_async
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.0" version: "1.3.0"
ffi: ffi:
dependency: transitive dependency: transitive
description: description:
@ -194,14 +194,14 @@ packages:
name: flutter_redux name: flutter_redux
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.8.2" version: "0.10.0"
flutter_screenutil: flutter_screenutil:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_screenutil name: flutter_screenutil
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.3.1" version: "5.5.3+2"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -232,7 +232,7 @@ packages:
name: google_fonts name: google_fonts
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.3.1" version: "3.0.1"
hex: hex:
dependency: transitive dependency: transitive
description: description:
@ -253,7 +253,7 @@ packages:
name: http name: http
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.13.4" version: "0.13.5"
http_parser: http_parser:
dependency: transitive dependency: transitive
description: description:
@ -281,7 +281,7 @@ packages:
name: js name: js
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.6.3" version: "0.6.4"
json_annotation: json_annotation:
dependency: transitive dependency: transitive
description: description:
@ -295,7 +295,35 @@ packages:
name: local_auth name: local_auth
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.11" version: "2.1.2"
local_auth_android:
dependency: transitive
description:
name: local_auth_android
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.11"
local_auth_ios:
dependency: transitive
description:
name: local_auth_ios
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.9"
local_auth_platform_interface:
dependency: transitive
description:
name: local_auth_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.4"
local_auth_windows:
dependency: transitive
description:
name: local_auth_windows
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
logger: logger:
dependency: "direct main" dependency: "direct main"
description: description:
@ -309,7 +337,7 @@ packages:
name: mask_text_input_formatter name: mask_text_input_formatter
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.0" version: "2.4.0"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
@ -323,14 +351,14 @@ packages:
name: material_color_utilities name: material_color_utilities
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.3" version: "0.1.4"
material_design_icons_flutter: material_design_icons_flutter:
dependency: "direct main" dependency: "direct main"
description: description:
name: material_design_icons_flutter name: material_design_icons_flutter
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.0.6595" version: "5.0.6996"
meta: meta:
dependency: transitive dependency: transitive
description: description:
@ -351,14 +379,14 @@ packages:
name: path name: path
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.0" version: "1.8.1"
path_provider: path_provider:
dependency: "direct main" dependency: "direct main"
description: description:
name: path_provider name: path_provider
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.9" version: "2.0.11"
path_provider_android: path_provider_android:
dependency: transitive dependency: transitive
description: description:
@ -456,7 +484,7 @@ packages:
name: provider name: provider
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.0.2" version: "6.0.3"
qr: qr:
dependency: transitive dependency: transitive
description: description:
@ -519,7 +547,7 @@ packages:
name: shared_preferences name: shared_preferences
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.13" version: "2.0.15"
shared_preferences_android: shared_preferences_android:
dependency: transitive dependency: transitive
description: description:
@ -580,21 +608,21 @@ packages:
name: source_span name: source_span
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.1" version: "1.8.2"
sqflite: sqflite:
dependency: "direct main" dependency: "direct main"
description: description:
name: sqflite name: sqflite
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2" version: "2.0.3+1"
sqflite_common: sqflite_common:
dependency: transitive dependency: transitive
description: description:
name: sqflite_common name: sqflite_common
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.2.0" version: "2.2.1+1"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:
@ -636,7 +664,7 @@ packages:
name: test_api name: test_api
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.4.8" version: "0.4.9"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:
@ -650,7 +678,7 @@ packages:
name: url_launcher name: url_launcher
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.0.20" version: "6.1.5"
url_launcher_android: url_launcher_android:
dependency: transitive dependency: transitive
description: description:
@ -685,7 +713,7 @@ packages:
name: url_launcher_platform_interface name: url_launcher_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.5" version: "2.1.0"
url_launcher_web: url_launcher_web:
dependency: transitive dependency: transitive
description: description:
@ -706,14 +734,14 @@ packages:
name: vector_math name: vector_math
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.1" version: "2.1.2"
vocsy_esys_flutter_share: vocsy_esys_flutter_share:
dependency: "direct main" dependency: "direct main"
description: description:
name: vocsy_esys_flutter_share name: vocsy_esys_flutter_share
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.0" version: "1.0.1"
win32: win32:
dependency: transitive dependency: transitive
description: description:
@ -736,5 +764,5 @@ packages:
source: hosted source: hosted
version: "5.3.1" version: "5.3.1"
sdks: sdks:
dart: ">=2.15.0 <3.0.0" dart: ">=2.17.0-0 <3.0.0"
flutter: ">=2.10.0-0" flutter: ">=3.0.0"

View File

@ -1,42 +1,42 @@
name: aman_kassa_flutter name: aman_kassa_flutter
description: A new Flutter project. description: A new Flutter project.
version: 1.3.0+41 version: 1.4.0+42
environment: environment:
sdk: '>=2.15.0 <3.0.0' sdk: '>=2.15.0 <3.0.0'
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
cupertino_icons: ^1.0.4 cupertino_icons: ^1.0.5
redux: ^5.0.0 redux: ^5.0.0
flutter_redux: ^0.8.2 flutter_redux: ^0.10.0
redux_thunk: ^0.4.0 redux_thunk: ^0.4.0
redux_persist: ^0.9.0 redux_persist: ^0.9.0
redux_persist_flutter: ^0.9.0 redux_persist_flutter: ^0.9.0
responsive_builder: ^0.4.2 responsive_builder: ^0.4.2
provider: ^6.0.2 provider: ^6.0.3
logger: ^1.1.0 logger: ^1.1.0
get_it: ^7.2.0 get_it: ^7.2.0
equatable: ^2.0.3 equatable: ^2.0.3
http: ^0.13.4 http: ^0.13.5
sqflite: ^2.0.2 sqflite: ^2.0.3+1
path_provider: ^2.0.9 path_provider: ^2.0.11
google_fonts: ^2.3.1 google_fonts: ^3.0.1
material_design_icons_flutter: ^5.0.6595 material_design_icons_flutter: ^5.0.6996
intl: ^0.17.0 intl: ^0.17.0
barcode_scan2: ^4.2.0 barcode_scan2: ^4.2.1
device_info: ^2.0.3 device_info: ^2.0.3
vocsy_esys_flutter_share: ^1.0.0 vocsy_esys_flutter_share: ^1.0.1
auto_size_text: ^3.0.0 auto_size_text: ^3.0.0
url_launcher: ^6.0.20 url_launcher: ^6.1.5
qr_flutter: ^4.0.0 qr_flutter: ^4.0.0
mask_text_input_formatter: ^2.1.0 mask_text_input_formatter: ^2.4.0
flutter_screenutil: ^5.3.1 flutter_screenutil: ^5.5.3+2
shared_preferences: ^2.0.13 shared_preferences: ^2.0.15
flutter_lock_screen: ^2.0.1 flutter_lock_screen: ^2.0.1
local_auth: ^1.1.11 local_auth: ^2.1.2
#esc_pos_bluetooth: ^0.4.1 #esc_pos_bluetooth: ^0.4.1
esc_pos_utils: ^1.1.0 esc_pos_utils: ^1.1.0
charset_converter: ^2.0.0 charset_converter: ^2.1.0
permission_handler: ^8.3.0 permission_handler: ^8.3.0
bluetooth_print: bluetooth_print:
path: ../bluetooth_print path: ../bluetooth_print