ИНвентаризация
parent
d01366fced
commit
94db86ee66
|
|
@ -32,7 +32,7 @@ if (keystorePropertiesFile.exists()) {
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 31
|
compileSdkVersion 33
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main.java.srcDirs += 'src/main/kotlin'
|
main.java.srcDirs += 'src/main/kotlin'
|
||||||
|
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
import 'package:json_annotation/json_annotation.dart';
|
|
||||||
import 'dart:convert';
|
|
||||||
|
|
||||||
part 'dict_response_entity.g.dart';
|
|
||||||
|
|
||||||
@JsonSerializable()
|
|
||||||
class DictResponseEntity {
|
|
||||||
factory DictResponseEntity.fromJson(Map<String, dynamic> json) =>
|
|
||||||
_$DictResponseEntityFromJson(json);
|
|
||||||
|
|
||||||
DictResponseEntity();
|
|
||||||
|
|
||||||
late DictResponseHeaders headers;
|
|
||||||
late DictResponseOriginal original;
|
|
||||||
String? exception;
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() => _$DictResponseEntityToJson(this);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return jsonEncode(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonSerializable()
|
|
||||||
class DictResponseHeaders {
|
|
||||||
DictResponseHeaders();
|
|
||||||
|
|
||||||
factory DictResponseHeaders.fromJson(Map<String, dynamic> json) =>
|
|
||||||
_$DictResponseHeadersFromJson(json);
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() => _$DictResponseHeadersToJson(this);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return jsonEncode(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonSerializable()
|
|
||||||
class DictResponseOriginal {
|
|
||||||
factory DictResponseOriginal.fromJson(Map<String, dynamic> json) =>
|
|
||||||
_$DictResponseOriginalFromJson(json);
|
|
||||||
|
|
||||||
DictResponseOriginal();
|
|
||||||
|
|
||||||
int? overall;
|
|
||||||
int? page;
|
|
||||||
int? perpage;
|
|
||||||
List<dynamic>? data;
|
|
||||||
Map<String, List<String>>? errors;
|
|
||||||
String? message;
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() => _$DictResponseOriginalToJson(this);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return jsonEncode(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
part 'inventarization_response.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable(explicitToJson: true)
|
||||||
|
class InventarizationResponse {
|
||||||
|
InventarizationResponse(
|
||||||
|
{required this.id,
|
||||||
|
required this.appCompanyId,
|
||||||
|
required this.inventoryDate,
|
||||||
|
required this.docNumber,
|
||||||
|
required this.molUserId,
|
||||||
|
required this.refInvoiceStatus,
|
||||||
|
required this.createdAt,
|
||||||
|
required this.updatedAt,
|
||||||
|
this.deletedAt,
|
||||||
|
this.act});
|
||||||
|
|
||||||
|
int id;
|
||||||
|
|
||||||
|
@JsonKey(name: 'app_company_id')
|
||||||
|
int appCompanyId;
|
||||||
|
@JsonKey(name: 'inventory_date')
|
||||||
|
DateTime inventoryDate;
|
||||||
|
@JsonKey(name: 'doc_number')
|
||||||
|
int docNumber;
|
||||||
|
@JsonKey(name: 'mol_user_id')
|
||||||
|
int molUserId;
|
||||||
|
@JsonKey(name: 'act')
|
||||||
|
int? act;
|
||||||
|
@JsonKey(name: 'ref_invoice_status')
|
||||||
|
int refInvoiceStatus;
|
||||||
|
@JsonKey(name: 'created_at')
|
||||||
|
DateTime createdAt;
|
||||||
|
@JsonKey(name: 'updated_at')
|
||||||
|
DateTime updatedAt;
|
||||||
|
@JsonKey(name: 'deleted_at')
|
||||||
|
DateTime? deletedAt;
|
||||||
|
|
||||||
|
factory InventarizationResponse.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$InventarizationResponseFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$InventarizationResponseToJson(this);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'inventarization_response.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
InventarizationResponse _$InventarizationResponseFromJson(
|
||||||
|
Map<String, dynamic> json) =>
|
||||||
|
InventarizationResponse(
|
||||||
|
id: json['id'] as int,
|
||||||
|
appCompanyId: json['app_company_id'] as int,
|
||||||
|
inventoryDate: DateTime.parse(json['inventory_date'] as String),
|
||||||
|
docNumber: json['doc_number'] as int,
|
||||||
|
molUserId: json['mol_user_id'] as int,
|
||||||
|
refInvoiceStatus: json['ref_invoice_status'] as int,
|
||||||
|
createdAt: DateTime.parse(json['created_at'] as String),
|
||||||
|
updatedAt: DateTime.parse(json['updated_at'] as String),
|
||||||
|
deletedAt: json['deleted_at'] == null
|
||||||
|
? null
|
||||||
|
: DateTime.parse(json['deleted_at'] as String),
|
||||||
|
act: json['act'] as int?,
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$InventarizationResponseToJson(
|
||||||
|
InventarizationResponse instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'id': instance.id,
|
||||||
|
'app_company_id': instance.appCompanyId,
|
||||||
|
'inventory_date': instance.inventoryDate.toIso8601String(),
|
||||||
|
'doc_number': instance.docNumber,
|
||||||
|
'mol_user_id': instance.molUserId,
|
||||||
|
'act': instance.act,
|
||||||
|
'ref_invoice_status': instance.refInvoiceStatus,
|
||||||
|
'created_at': instance.createdAt.toIso8601String(),
|
||||||
|
'updated_at': instance.updatedAt.toIso8601String(),
|
||||||
|
'deleted_at': instance.deletedAt?.toIso8601String(),
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
part 'response_entity.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class ResponseEntity {
|
||||||
|
factory ResponseEntity.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$ResponseEntityFromJson(json);
|
||||||
|
|
||||||
|
ResponseEntity();
|
||||||
|
|
||||||
|
late ResponseHeaders headers;
|
||||||
|
late ResponseOriginal original;
|
||||||
|
String? exception;
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$ResponseEntityToJson(this);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return jsonEncode(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class ResponseHeaders {
|
||||||
|
ResponseHeaders();
|
||||||
|
|
||||||
|
factory ResponseHeaders.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$ResponseHeadersFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$ResponseHeadersToJson(this);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return jsonEncode(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class ResponseOriginal {
|
||||||
|
factory ResponseOriginal.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$ResponseOriginalFromJson(json);
|
||||||
|
|
||||||
|
ResponseOriginal();
|
||||||
|
|
||||||
|
int? overall;
|
||||||
|
int? page;
|
||||||
|
int? perpage;
|
||||||
|
List<dynamic>? data;
|
||||||
|
Map<String, List<String>>? errors;
|
||||||
|
String? message;
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$ResponseOriginalToJson(this);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return jsonEncode(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,36 +1,34 @@
|
||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
part of 'dict_response_entity.dart';
|
part of 'response_entity.dart';
|
||||||
|
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
// JsonSerializableGenerator
|
// JsonSerializableGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
DictResponseEntity _$DictResponseEntityFromJson(Map<String, dynamic> json) =>
|
ResponseEntity _$ResponseEntityFromJson(Map<String, dynamic> json) =>
|
||||||
DictResponseEntity()
|
ResponseEntity()
|
||||||
..headers =
|
..headers =
|
||||||
DictResponseHeaders.fromJson(json['headers'] as Map<String, dynamic>)
|
ResponseHeaders.fromJson(json['headers'] as Map<String, dynamic>)
|
||||||
..original = DictResponseOriginal.fromJson(
|
..original =
|
||||||
json['original'] as Map<String, dynamic>)
|
ResponseOriginal.fromJson(json['original'] as Map<String, dynamic>)
|
||||||
..exception = json['exception'] as String?;
|
..exception = json['exception'] as String?;
|
||||||
|
|
||||||
Map<String, dynamic> _$DictResponseEntityToJson(DictResponseEntity instance) =>
|
Map<String, dynamic> _$ResponseEntityToJson(ResponseEntity instance) =>
|
||||||
<String, dynamic>{
|
<String, dynamic>{
|
||||||
'headers': instance.headers,
|
'headers': instance.headers,
|
||||||
'original': instance.original,
|
'original': instance.original,
|
||||||
'exception': instance.exception,
|
'exception': instance.exception,
|
||||||
};
|
};
|
||||||
|
|
||||||
DictResponseHeaders _$DictResponseHeadersFromJson(Map<String, dynamic> json) =>
|
ResponseHeaders _$ResponseHeadersFromJson(Map<String, dynamic> json) =>
|
||||||
DictResponseHeaders();
|
ResponseHeaders();
|
||||||
|
|
||||||
Map<String, dynamic> _$DictResponseHeadersToJson(
|
Map<String, dynamic> _$ResponseHeadersToJson(ResponseHeaders instance) =>
|
||||||
DictResponseHeaders instance) =>
|
|
||||||
<String, dynamic>{};
|
<String, dynamic>{};
|
||||||
|
|
||||||
DictResponseOriginal _$DictResponseOriginalFromJson(
|
ResponseOriginal _$ResponseOriginalFromJson(Map<String, dynamic> json) =>
|
||||||
Map<String, dynamic> json) =>
|
ResponseOriginal()
|
||||||
DictResponseOriginal()
|
|
||||||
..overall = json['overall'] as int?
|
..overall = json['overall'] as int?
|
||||||
..page = json['page'] as int?
|
..page = json['page'] as int?
|
||||||
..perpage = json['perpage'] as int?
|
..perpage = json['perpage'] as int?
|
||||||
|
|
@ -41,8 +39,7 @@ DictResponseOriginal _$DictResponseOriginalFromJson(
|
||||||
)
|
)
|
||||||
..message = json['message'] as String?;
|
..message = json['message'] as String?;
|
||||||
|
|
||||||
Map<String, dynamic> _$DictResponseOriginalToJson(
|
Map<String, dynamic> _$ResponseOriginalToJson(ResponseOriginal instance) =>
|
||||||
DictResponseOriginal instance) =>
|
|
||||||
<String, dynamic>{
|
<String, dynamic>{
|
||||||
'overall': instance.overall,
|
'overall': instance.overall,
|
||||||
'page': instance.page,
|
'page': instance.page,
|
||||||
|
|
@ -4,7 +4,7 @@ import 'dart:io';
|
||||||
import 'package:satu/core/base/base_service.dart';
|
import 'package:satu/core/base/base_service.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:satu/core/models/auth/auth_response.dart';
|
import 'package:satu/core/models/auth/auth_response.dart';
|
||||||
import 'package:satu/core/models/dictionary/response/dict_response_entity.dart';
|
import 'package:satu/core/models/response/response_entity.dart';
|
||||||
import 'package:satu/core/models/flow/analytics/analytics_bean.dart';
|
import 'package:satu/core/models/flow/analytics/analytics_bean.dart';
|
||||||
import 'package:satu/core/models/flow/sell_request.dart';
|
import 'package:satu/core/models/flow/sell_request.dart';
|
||||||
import 'package:satu/core/models/flow/sell_response.dart';
|
import 'package:satu/core/models/flow/sell_response.dart';
|
||||||
|
|
@ -44,15 +44,16 @@ class ApiService extends BaseService {
|
||||||
headers.addAll(header);
|
headers.addAll(header);
|
||||||
}
|
}
|
||||||
final String url = '$endpoint$point';
|
final String url = '$endpoint$point';
|
||||||
|
|
||||||
|
final response = await http.post(Uri.https(host, url),
|
||||||
|
body: jsonEncode(requestBody), headers: headers);
|
||||||
if (requestBody != null) {
|
if (requestBody != null) {
|
||||||
// log.i(host);
|
// log.i(host);
|
||||||
// log.i(url);
|
// log.i(url);
|
||||||
// log.i(headers);
|
// log.i(headers);
|
||||||
log.i(jsonEncode(requestBody));
|
log.i(jsonEncode(requestBody));
|
||||||
|
log.i(jsonEncode(response.body));
|
||||||
}
|
}
|
||||||
final response = await http.post(Uri.https(host, url),
|
|
||||||
body: jsonEncode(requestBody), headers: headers);
|
|
||||||
|
|
||||||
return response.body;
|
return response.body;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -124,9 +125,9 @@ class ApiService extends BaseService {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<DictResponseEntity> dictionaries(String target,
|
Future<ResponseEntity> postRequest(String target,
|
||||||
{Map<String, dynamic>? requestBody}) async {
|
{Map<String, dynamic>? requestBody}) async {
|
||||||
DictResponseEntity result;
|
ResponseEntity result;
|
||||||
try {
|
try {
|
||||||
final Map<String, String> headers = <String, String>{
|
final Map<String, String> headers = <String, String>{
|
||||||
HttpHeaders.authorizationHeader: 'Bearer $token'
|
HttpHeaders.authorizationHeader: 'Bearer $token'
|
||||||
|
|
@ -134,27 +135,27 @@ class ApiService extends BaseService {
|
||||||
|
|
||||||
final String response =
|
final String response =
|
||||||
await _post(target, header: headers, requestBody: requestBody);
|
await _post(target, header: headers, requestBody: requestBody);
|
||||||
result = DictResponseEntity.fromJson(json.decode(response));
|
result = ResponseEntity.fromJson(json.decode(response));
|
||||||
} catch (e, stack) {
|
} catch (e, stack) {
|
||||||
log.e('dictionaries', e, stack);
|
log.e('postRequest', e, stack);
|
||||||
result = DictResponseEntity()..exception = e.toString();
|
result = ResponseEntity()..exception = e.toString();
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<DictResponseEntity> dictionarySave(
|
Future<ResponseEntity> dictionarySave(
|
||||||
String target, Map<String, dynamic>? body) async {
|
String target, Map<String, dynamic>? body) async {
|
||||||
DictResponseEntity response;
|
ResponseEntity response;
|
||||||
try {
|
try {
|
||||||
final Map<String, String> headers = <String, String>{
|
final Map<String, String> headers = <String, String>{
|
||||||
HttpHeaders.authorizationHeader: 'Bearer $token'
|
HttpHeaders.authorizationHeader: 'Bearer $token'
|
||||||
};
|
};
|
||||||
final String responseBody =
|
final String responseBody =
|
||||||
await _post(target, header: headers, requestBody: body);
|
await _post(target, header: headers, requestBody: body);
|
||||||
response = DictResponseEntity.fromJson(json.decode(responseBody));
|
response = ResponseEntity.fromJson(json.decode(responseBody));
|
||||||
} catch (e, stack) {
|
} catch (e, stack) {
|
||||||
log.e('dictionarySave', e, stack);
|
log.e('dictionarySave', e, stack);
|
||||||
response = DictResponseEntity()..exception = e.toString();
|
response = ResponseEntity()..exception = e.toString();
|
||||||
}
|
}
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import 'package:satu/core/entity/goods_entity.dart';
|
||||||
import 'package:satu/core/models/dictionary/category/category_response.dart';
|
import 'package:satu/core/models/dictionary/category/category_response.dart';
|
||||||
import 'package:satu/core/models/dictionary/contragent/contragent_response_entity.dart';
|
import 'package:satu/core/models/dictionary/contragent/contragent_response_entity.dart';
|
||||||
import 'package:satu/core/models/dictionary/good/good_response_entity.dart';
|
import 'package:satu/core/models/dictionary/good/good_response_entity.dart';
|
||||||
import 'package:satu/core/models/dictionary/response/dict_response_entity.dart';
|
import 'package:satu/core/models/response/response_entity.dart';
|
||||||
import 'package:satu/core/redux/store.dart';
|
import 'package:satu/core/redux/store.dart';
|
||||||
import 'package:satu/core/utils/locator.dart';
|
import 'package:satu/core/utils/locator.dart';
|
||||||
|
|
||||||
|
|
@ -132,8 +132,8 @@ class DictionaryService extends BaseService {
|
||||||
'filter': [filter]
|
'filter': [filter]
|
||||||
};
|
};
|
||||||
|
|
||||||
DictResponseEntity categories = await _api
|
ResponseEntity categories = await _api
|
||||||
.dictionaries('/goods_categories_get', requestBody: requestBody);
|
.postRequest('/goods_categories_get', requestBody: requestBody);
|
||||||
if (categories.original.data != null &&
|
if (categories.original.data != null &&
|
||||||
categories.original.data!.isNotEmpty) {
|
categories.original.data!.isNotEmpty) {
|
||||||
for (final dynamic map in categories.original.data!) {
|
for (final dynamic map in categories.original.data!) {
|
||||||
|
|
@ -148,7 +148,7 @@ class DictionaryService extends BaseService {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<String?> saveCategory(CategoryResponse category) async {
|
Future<String?> saveCategory(CategoryResponse category) async {
|
||||||
DictResponseEntity? status;
|
ResponseEntity? status;
|
||||||
log.i(category.toJson());
|
log.i(category.toJson());
|
||||||
if (category.id != null) {
|
if (category.id != null) {
|
||||||
status = await _api.dictionarySave(
|
status = await _api.dictionarySave(
|
||||||
|
|
@ -163,7 +163,7 @@ class DictionaryService extends BaseService {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<String?> deleteCategory(CategoryResponse category) async {
|
Future<String?> deleteCategory(CategoryResponse category) async {
|
||||||
DictResponseEntity status = await _api.dictionarySave(
|
ResponseEntity status = await _api.dictionarySave(
|
||||||
'/goods_categories_delete', category.toJson());
|
'/goods_categories_delete', category.toJson());
|
||||||
String? message = getErrorMsg(status);
|
String? message = getErrorMsg(status);
|
||||||
return message;
|
return message;
|
||||||
|
|
@ -179,8 +179,8 @@ class DictionaryService extends BaseService {
|
||||||
'filter': [filter]
|
'filter': [filter]
|
||||||
};
|
};
|
||||||
|
|
||||||
DictResponseEntity categories =
|
ResponseEntity categories =
|
||||||
await _api.dictionaries('/goods_goods_get', requestBody: requestBody);
|
await _api.postRequest('/goods_goods_get', requestBody: requestBody);
|
||||||
if (categories.original.data != null &&
|
if (categories.original.data != null &&
|
||||||
categories.original.data!.isNotEmpty) {
|
categories.original.data!.isNotEmpty) {
|
||||||
for (final dynamic map in categories.original.data!) {
|
for (final dynamic map in categories.original.data!) {
|
||||||
|
|
@ -195,7 +195,7 @@ class DictionaryService extends BaseService {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<String?> saveGood(GoodResponseEntity good) async {
|
Future<String?> saveGood(GoodResponseEntity good) async {
|
||||||
DictResponseEntity? status;
|
ResponseEntity? status;
|
||||||
if (good.id != null) {
|
if (good.id != null) {
|
||||||
status = await _api.dictionarySave('/goods_goods_edit', good.toJson());
|
status = await _api.dictionarySave('/goods_goods_edit', good.toJson());
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -207,7 +207,7 @@ class DictionaryService extends BaseService {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<String?> deleteGood(GoodResponseEntity good) async {
|
Future<String?> deleteGood(GoodResponseEntity good) async {
|
||||||
DictResponseEntity status =
|
ResponseEntity status =
|
||||||
await _api.dictionarySave('/goods_goods_delete', good.toJson());
|
await _api.dictionarySave('/goods_goods_delete', good.toJson());
|
||||||
String? message = getErrorMsg(status);
|
String? message = getErrorMsg(status);
|
||||||
return message;
|
return message;
|
||||||
|
|
@ -224,8 +224,8 @@ class DictionaryService extends BaseService {
|
||||||
{'col': 'name', 'action': 'like', 'val': query ?? ''}
|
{'col': 'name', 'action': 'like', 'val': query ?? ''}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
final DictResponseEntity contragents = await _api
|
final ResponseEntity contragents = await _api
|
||||||
.dictionaries('/general_contragents_get', requestBody: requestBody);
|
.postRequest('/general_contragents_get', requestBody: requestBody);
|
||||||
if (contragents.original.data != null) {
|
if (contragents.original.data != null) {
|
||||||
if (contragents.original.data!.isNotEmpty) {
|
if (contragents.original.data!.isNotEmpty) {
|
||||||
for (dynamic map in contragents.original.data!) {
|
for (dynamic map in contragents.original.data!) {
|
||||||
|
|
@ -240,7 +240,7 @@ class DictionaryService extends BaseService {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<String?> saveContragent(ContragentResponseEntity contragent) async {
|
Future<String?> saveContragent(ContragentResponseEntity contragent) async {
|
||||||
DictResponseEntity? status;
|
ResponseEntity? status;
|
||||||
if (contragent.id != null) {
|
if (contragent.id != null) {
|
||||||
status = await _api.dictionarySave(
|
status = await _api.dictionarySave(
|
||||||
'/general_contragents_edit', contragent.toJson());
|
'/general_contragents_edit', contragent.toJson());
|
||||||
|
|
@ -254,13 +254,13 @@ class DictionaryService extends BaseService {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<String?> deleteContragent(ContragentResponseEntity contragent) async {
|
Future<String?> deleteContragent(ContragentResponseEntity contragent) async {
|
||||||
DictResponseEntity status = await _api.dictionarySave(
|
ResponseEntity status = await _api.dictionarySave(
|
||||||
'/general_contragents_delete', contragent.toJson());
|
'/general_contragents_delete', contragent.toJson());
|
||||||
String? message = getErrorMsg(status);
|
String? message = getErrorMsg(status);
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
String? getErrorMsg(DictResponseEntity status) {
|
String? getErrorMsg(ResponseEntity status) {
|
||||||
String? message;
|
String? message;
|
||||||
|
|
||||||
if (status.exception != null) {
|
if (status.exception != null) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
import 'package:satu/core/base/base_service.dart';
|
||||||
|
import 'package:satu/core/models/inventarization/inventarization_response.dart';
|
||||||
|
import 'package:satu/core/utils/locator.dart';
|
||||||
|
|
||||||
|
import '../models/response/response_entity.dart';
|
||||||
|
import 'api_service.dart';
|
||||||
|
|
||||||
|
class InventarizationService extends BaseService {
|
||||||
|
final ApiService _api = locator<ApiService>();
|
||||||
|
|
||||||
|
Future<List<InventarizationResponse>> getList(
|
||||||
|
{required int page, required int perpage, dynamic filter}) async {
|
||||||
|
List<InventarizationResponse> list = [];
|
||||||
|
try {
|
||||||
|
final Map<String, dynamic> requestBody = <String, dynamic>{
|
||||||
|
'page': page,
|
||||||
|
'perpage': perpage
|
||||||
|
};
|
||||||
|
|
||||||
|
ResponseEntity categories = await _api
|
||||||
|
.postRequest('/goods_inventory_get', requestBody: requestBody);
|
||||||
|
if (categories.original.data != null &&
|
||||||
|
categories.original.data!.isNotEmpty) {
|
||||||
|
for (final dynamic map in categories.original.data!) {
|
||||||
|
final InventarizationResponse item = InventarizationResponse.fromJson(map);
|
||||||
|
list.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e, stack) {
|
||||||
|
log.e('getList', e, stack);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,7 @@ import 'package:satu/core/services/data_service.dart';
|
||||||
import 'package:satu/core/services/db_service.dart';
|
import 'package:satu/core/services/db_service.dart';
|
||||||
import 'package:satu/core/services/dialog_service.dart';
|
import 'package:satu/core/services/dialog_service.dart';
|
||||||
import 'package:satu/core/services/dictionary_service.dart';
|
import 'package:satu/core/services/dictionary_service.dart';
|
||||||
|
import 'package:satu/core/services/inventarization_service.dart';
|
||||||
import 'package:satu/core/services/navigator_service.dart';
|
import 'package:satu/core/services/navigator_service.dart';
|
||||||
|
|
||||||
import 'logger.dart';
|
import 'logger.dart';
|
||||||
|
|
@ -26,13 +27,14 @@ class LocatorInjector {
|
||||||
_log.d('Initializing DbService Service');
|
_log.d('Initializing DbService Service');
|
||||||
locator.registerLazySingleton<DbService>(() => DbService.instance);
|
locator.registerLazySingleton<DbService>(() => DbService.instance);
|
||||||
|
|
||||||
|
|
||||||
// depencies
|
// depencies
|
||||||
|
|
||||||
|
|
||||||
_log.d('Initializing DataService Service');
|
_log.d('Initializing DataService Service');
|
||||||
locator.registerLazySingleton<DataService>(() => DataService());
|
locator.registerLazySingleton<DataService>(() => DataService());
|
||||||
_log.d('Initializing DictionaryService Service');
|
_log.d('Initializing DictionaryService Service');
|
||||||
locator.registerLazySingleton<DictionaryService>(() => DictionaryService());
|
locator.registerLazySingleton<DictionaryService>(() => DictionaryService());
|
||||||
|
_log.d('Initializing InventarizationService Service');
|
||||||
|
locator.registerLazySingleton<InventarizationService>(
|
||||||
|
() => InventarizationService());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -7,6 +7,7 @@ const Color dangerColor = Color.fromRGBO(243, 98, 88, 1);
|
||||||
const Color successColor = Color.fromRGBO(39, 174, 96, 1);
|
const Color successColor = Color.fromRGBO(39, 174, 96, 1);
|
||||||
const Color whiteColor = Color.fromRGBO(255, 255, 255, 1);
|
const Color whiteColor = Color.fromRGBO(255, 255, 255, 1);
|
||||||
const Color blackColor = Color.fromRGBO(35, 35, 35, 1);
|
const Color blackColor = Color.fromRGBO(35, 35, 35, 1);
|
||||||
|
const Color blueColor = Color.fromRGBO(17, 103, 217, 1);
|
||||||
|
|
||||||
const Color shadowColor = Color.fromRGBO(72, 72, 72, 0.25);
|
const Color shadowColor = Color.fromRGBO(72, 72, 72, 0.25);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,10 @@ EdgeInsets largeFieldPadding =
|
||||||
const TextStyle dropDownTradeTypeTextStyle =
|
const TextStyle dropDownTradeTypeTextStyle =
|
||||||
TextStyle(color: Colors.black54, fontWeight: FontWeight.bold, fontSize: 24);
|
TextStyle(color: Colors.black54, fontWeight: FontWeight.bold, fontSize: 24);
|
||||||
|
|
||||||
|
|
||||||
|
const TextStyle textGray11Style =
|
||||||
|
TextStyle(color: placeholderColor, fontWeight: FontWeight.w400, fontSize: 11);
|
||||||
|
|
||||||
// Box Shadow
|
// Box Shadow
|
||||||
BoxShadow buttonShadowBox =
|
BoxShadow buttonShadowBox =
|
||||||
const BoxShadow(blurRadius: 10, color: shadowColor, offset: Offset(0, 4));
|
const BoxShadow(blurRadius: 10, color: shadowColor, offset: Offset(0, 4));
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,123 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
|
||||||
|
import 'package:satu/core/models/inventarization/inventarization_response.dart';
|
||||||
|
import 'package:satu/core/services/inventarization_service.dart';
|
||||||
|
import 'package:satu/core/utils/locator.dart';
|
||||||
|
import 'package:satu/shared/app_colors.dart';
|
||||||
|
import 'package:satu/shared/shared_styles.dart';
|
||||||
|
import 'package:satu/shared/ui_helpers.dart';
|
||||||
|
import 'package:satu/views/inventarization/widget/inventarization_list_tile.dart';
|
||||||
|
|
||||||
|
import '../../../widgets/bar/products_app_bar.dart';
|
||||||
|
|
||||||
|
class InventarizationView extends StatefulWidget {
|
||||||
|
const InventarizationView({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<InventarizationView> createState() => _InventarizationViewState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _InventarizationViewState extends State<InventarizationView> {
|
||||||
|
|
||||||
|
final InventarizationService _service = locator<InventarizationService>();
|
||||||
|
|
||||||
|
static const _pageSize = 20;
|
||||||
|
|
||||||
|
final PagingController<int, InventarizationResponse> _pagingController =
|
||||||
|
PagingController(firstPageKey: 1);
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
_pagingController.addPageRequestListener((pageKey) {
|
||||||
|
_fetchData(pageKey, _pageSize);
|
||||||
|
});
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
appBar: const ProductsAppBar(
|
||||||
|
title: 'Инвентаризация',
|
||||||
|
drawerShow: true,
|
||||||
|
),
|
||||||
|
body: Column(
|
||||||
|
children: [
|
||||||
|
verticalSpaceSmall,
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only( left: 15.0),
|
||||||
|
child: SizedBox(
|
||||||
|
width: double.infinity,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
flex: 2,
|
||||||
|
child: Text(
|
||||||
|
'Номер документа',
|
||||||
|
style: textGray11Style,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 2,
|
||||||
|
child: Text(
|
||||||
|
'Дата создания',
|
||||||
|
style: textGray11Style,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: Text(
|
||||||
|
'Акты',
|
||||||
|
style: textGray11Style,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
verticalSpaceSmall,
|
||||||
|
Expanded(
|
||||||
|
child: PagedListView<int, InventarizationResponse>.separated(
|
||||||
|
physics: const BouncingScrollPhysics(),
|
||||||
|
separatorBuilder: (BuildContext context, int index) {
|
||||||
|
return const Divider(
|
||||||
|
height: 1.0,
|
||||||
|
color: disableColor,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
pagingController: _pagingController,
|
||||||
|
builderDelegate: PagedChildBuilderDelegate<InventarizationResponse>(
|
||||||
|
itemBuilder: (BuildContext context, InventarizationResponse item,
|
||||||
|
int index) {
|
||||||
|
return InventarizationListTile(
|
||||||
|
key: Key('category_${item.id}'),
|
||||||
|
// onPress: () async {
|
||||||
|
// final dynamic result = await _navigatorService
|
||||||
|
// .push(categoryEditRoute, arguments: item);
|
||||||
|
// if (result != null && true == (result as bool)) {
|
||||||
|
// _pagingController.refresh();
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
item: item,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _fetchData(int pageKey, int perPage) async {
|
||||||
|
final List<InventarizationResponse> newItems = await _service
|
||||||
|
.getList(page: pageKey, perpage: perPage);
|
||||||
|
final isLastPage = newItems.length < _pageSize;
|
||||||
|
if (isLastPage) {
|
||||||
|
_pagingController.appendLastPage(newItems);
|
||||||
|
} else {
|
||||||
|
final nextPageKey = pageKey + 1;
|
||||||
|
_pagingController.appendPage(newItems, nextPageKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,94 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
import 'package:satu/core/models/inventarization/inventarization_response.dart';
|
||||||
|
import 'package:satu/shared/app_colors.dart';
|
||||||
|
|
||||||
|
class InventarizationListTile extends StatefulWidget {
|
||||||
|
const InventarizationListTile({required this.item, Key? key})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
|
final InventarizationResponse item;
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<InventarizationListTile> createState() =>
|
||||||
|
_InventarizationListTileState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _InventarizationListTileState extends State<InventarizationListTile> {
|
||||||
|
final DateFormat formatterDay = DateFormat('dd.MM.yyyy');
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
decoration: BoxDecoration(color: whiteColor),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
flex: 2,
|
||||||
|
child: InventarizationCellTile(
|
||||||
|
value: widget.item.docNumber.toString()),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 2,
|
||||||
|
child: InventarizationCellTile(
|
||||||
|
value: formatterDay.format(widget.item.createdAt),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: InventarizationCellButton(
|
||||||
|
value: formatterDay.format(widget.item.createdAt),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class InventarizationCellTile extends StatelessWidget {
|
||||||
|
const InventarizationCellTile({
|
||||||
|
required this.value,
|
||||||
|
Key? key,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
final String value;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
padding: EdgeInsets.all(15.0),
|
||||||
|
child: Text(
|
||||||
|
value,
|
||||||
|
style: TextStyle(fontSize: 12),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class InventarizationCellButton extends StatelessWidget {
|
||||||
|
const InventarizationCellButton({
|
||||||
|
required this.value,
|
||||||
|
Key? key,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
final String value;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.only( right: 15.0),
|
||||||
|
child: OutlinedButton(
|
||||||
|
onPressed: () {},
|
||||||
|
child: Text(
|
||||||
|
'Акт',
|
||||||
|
style: TextStyle(fontSize: 12, color: whiteColor),
|
||||||
|
),
|
||||||
|
style: OutlinedButton.styleFrom(
|
||||||
|
backgroundColor: blueColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,7 @@ import 'package:satu/core/utils/locator.dart';
|
||||||
import 'package:satu/views/analytics/analytics_view.dart';
|
import 'package:satu/views/analytics/analytics_view.dart';
|
||||||
import 'package:satu/views/dictionaries/category/category_view.dart';
|
import 'package:satu/views/dictionaries/category/category_view.dart';
|
||||||
import 'package:satu/views/dictionaries/goods/goods_view.dart';
|
import 'package:satu/views/dictionaries/goods/goods_view.dart';
|
||||||
|
import 'package:satu/views/inventarization/view/inventarization_view.dart';
|
||||||
import 'package:satu/views/settings/setting_view.dart';
|
import 'package:satu/views/settings/setting_view.dart';
|
||||||
import 'package:satu/views/work/work_view.dart';
|
import 'package:satu/views/work/work_view.dart';
|
||||||
import 'package:satu/widgets/drawer/app_drawer.dart';
|
import 'package:satu/widgets/drawer/app_drawer.dart';
|
||||||
|
|
@ -28,6 +29,7 @@ class _MainViewState extends State<MainView> {
|
||||||
final _goodDictView = GoodsDictionaryView();
|
final _goodDictView = GoodsDictionaryView();
|
||||||
final _contragentDictView = ContragentsDictionaryView();
|
final _contragentDictView = ContragentsDictionaryView();
|
||||||
final _analyticsView = const AnalyticsView();
|
final _analyticsView = const AnalyticsView();
|
||||||
|
final _inventarizationView = InventarizationView();
|
||||||
|
|
||||||
Widget _body(Type viewClass) {
|
Widget _body(Type viewClass) {
|
||||||
if(viewClass == WorkView) {
|
if(viewClass == WorkView) {
|
||||||
|
|
@ -39,6 +41,9 @@ class _MainViewState extends State<MainView> {
|
||||||
if(viewClass == CategoryDictionaryView) {
|
if(viewClass == CategoryDictionaryView) {
|
||||||
return _categoryDictView;
|
return _categoryDictView;
|
||||||
}
|
}
|
||||||
|
if(viewClass == InventarizationView) {
|
||||||
|
return _inventarizationView;
|
||||||
|
}
|
||||||
if(viewClass == GoodsDictionaryView) {
|
if(viewClass == GoodsDictionaryView) {
|
||||||
return _goodDictView;
|
return _goodDictView;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@ import 'package:satu/views/dictionaries/goods/goods_view.dart';
|
||||||
import 'package:satu/views/settings/setting_view.dart';
|
import 'package:satu/views/settings/setting_view.dart';
|
||||||
import 'package:satu/views/work/work_view.dart';
|
import 'package:satu/views/work/work_view.dart';
|
||||||
|
|
||||||
|
import '../../views/inventarization/view/inventarization_view.dart';
|
||||||
|
|
||||||
class AppDrawer extends StatelessWidget {
|
class AppDrawer extends StatelessWidget {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|
@ -55,7 +57,10 @@ class AppDrawer extends StatelessWidget {
|
||||||
_createDrawerItem(
|
_createDrawerItem(
|
||||||
svgFile: 'inventarization',
|
svgFile: 'inventarization',
|
||||||
text: 'Инвентаризация',
|
text: 'Инвентаризация',
|
||||||
disable: true,
|
onTap: () {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
Redux.store!.dispatch(navigateDrawer(InventarizationView));
|
||||||
|
},
|
||||||
),
|
),
|
||||||
_createDrawerSectionTitle(text: 'СПРАВОЧНИКИ'),
|
_createDrawerSectionTitle(text: 'СПРАВОЧНИКИ'),
|
||||||
_createDrawerItem(
|
_createDrawerItem(
|
||||||
|
|
|
||||||
109
pubspec.lock
109
pubspec.lock
|
|
@ -7,35 +7,35 @@ packages:
|
||||||
name: _fe_analyzer_shared
|
name: _fe_analyzer_shared
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "40.0.0"
|
version: "47.0.0"
|
||||||
ai_barcode:
|
ai_barcode:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: ai_barcode
|
name: ai_barcode
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.2.0"
|
version: "3.2.4"
|
||||||
ai_barcode_platform_interface:
|
ai_barcode_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: ai_barcode_platform_interface
|
name: ai_barcode_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.0"
|
version: "3.0.1"
|
||||||
ai_barcode_web:
|
ai_barcode_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: ai_barcode_web
|
name: ai_barcode_web
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.0"
|
version: "3.0.1"
|
||||||
analyzer:
|
analyzer:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: analyzer
|
name: analyzer
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.0"
|
version: "4.7.0"
|
||||||
archive:
|
archive:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -56,7 +56,7 @@ packages:
|
||||||
name: async
|
name: async
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.8.2"
|
version: "2.9.0"
|
||||||
auto_size_text:
|
auto_size_text:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
@ -84,7 +84,7 @@ packages:
|
||||||
name: build_config
|
name: build_config
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.1.1"
|
||||||
build_daemon:
|
build_daemon:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -105,7 +105,7 @@ packages:
|
||||||
name: build_runner
|
name: build_runner
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.11"
|
version: "2.3.2"
|
||||||
build_runner_core:
|
build_runner_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -133,7 +133,7 @@ packages:
|
||||||
name: characters
|
name: characters
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.1"
|
||||||
charcode:
|
charcode:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -161,14 +161,14 @@ packages:
|
||||||
name: clock
|
name: clock
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.1"
|
||||||
code_builder:
|
code_builder:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: code_builder
|
name: code_builder
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.0"
|
version: "4.3.0"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -231,7 +231,7 @@ packages:
|
||||||
name: equatable
|
name: equatable
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.3"
|
version: "2.0.5"
|
||||||
esc_pos_bluetooth:
|
esc_pos_bluetooth:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
@ -252,7 +252,7 @@ packages:
|
||||||
name: fake_async
|
name: fake_async
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.1"
|
||||||
ffi:
|
ffi:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -306,14 +306,14 @@ packages:
|
||||||
name: flutter_screenutil
|
name: flutter_screenutil
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.5.3+2"
|
version: "5.6.0"
|
||||||
flutter_svg:
|
flutter_svg:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_svg
|
name: flutter_svg
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.23.0+1"
|
version: "1.1.6"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
|
@ -330,7 +330,7 @@ packages:
|
||||||
name: frontend_server_client
|
name: frontend_server_client
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.3"
|
version: "3.1.0"
|
||||||
gbk_codec:
|
gbk_codec:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -386,7 +386,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_multi_server:
|
http_multi_server:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -407,7 +407,7 @@ packages:
|
||||||
name: image
|
name: image
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.3"
|
version: "3.2.2"
|
||||||
implicitly_animated_reorderable_list:
|
implicitly_animated_reorderable_list:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
@ -449,14 +449,14 @@ packages:
|
||||||
name: json_annotation
|
name: json_annotation
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.5.0"
|
version: "4.7.0"
|
||||||
json_serializable:
|
json_serializable:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: json_serializable
|
name: json_serializable
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.2.0"
|
version: "6.5.4"
|
||||||
lints:
|
lints:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -491,28 +491,28 @@ 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.3.0"
|
version: "2.4.0"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.11"
|
version: "0.12.12"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
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.4"
|
version: "0.1.5"
|
||||||
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"
|
||||||
material_floating_search_bar:
|
material_floating_search_bar:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
@ -526,7 +526,7 @@ packages:
|
||||||
name: meta
|
name: meta
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.7.0"
|
version: "1.8.0"
|
||||||
mime:
|
mime:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -554,21 +554,21 @@ packages:
|
||||||
name: path
|
name: path
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.1"
|
version: "1.8.2"
|
||||||
path_drawing:
|
path_drawing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_drawing
|
name: path_drawing
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.1+1"
|
version: "1.0.1"
|
||||||
path_parsing:
|
path_parsing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_parsing
|
name: path_parsing
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.1"
|
version: "1.0.1"
|
||||||
path_provider:
|
path_provider:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
@ -624,21 +624,42 @@ packages:
|
||||||
name: permission_handler
|
name: permission_handler
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.3.0"
|
version: "10.2.0"
|
||||||
|
permission_handler_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: permission_handler_android
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "10.2.0"
|
||||||
|
permission_handler_apple:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: permission_handler_apple
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "9.0.7"
|
||||||
permission_handler_platform_interface:
|
permission_handler_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: permission_handler_platform_interface
|
name: permission_handler_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.7.0"
|
version: "3.9.0"
|
||||||
|
permission_handler_windows:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: permission_handler_windows
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "0.1.2"
|
||||||
petitparser:
|
petitparser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: petitparser
|
name: petitparser
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.4.0"
|
version: "5.1.0"
|
||||||
platform:
|
platform:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -673,7 +694,7 @@ packages:
|
||||||
name: provider
|
name: provider
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.0.3"
|
version: "6.0.4"
|
||||||
pub_semver:
|
pub_semver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -736,7 +757,7 @@ packages:
|
||||||
name: responsive_builder
|
name: responsive_builder
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.2"
|
version: "0.4.3"
|
||||||
rxdart:
|
rxdart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -846,21 +867,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.2"
|
version: "1.9.0"
|
||||||
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+1"
|
version: "2.2.0+3"
|
||||||
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.1+1"
|
version: "2.4.0+2"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -888,7 +909,7 @@ packages:
|
||||||
name: string_scanner
|
name: string_scanner
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.1"
|
||||||
synchronized:
|
synchronized:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -902,14 +923,14 @@ packages:
|
||||||
name: term_glyph
|
name: term_glyph
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.1"
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.9"
|
version: "0.4.12"
|
||||||
timing:
|
timing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -944,7 +965,7 @@ packages:
|
||||||
name: url_launcher
|
name: url_launcher
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.3"
|
version: "6.1.6"
|
||||||
url_launcher_android:
|
url_launcher_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -979,7 +1000,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.1"
|
||||||
url_launcher_web:
|
url_launcher_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -1042,7 +1063,7 @@ packages:
|
||||||
name: xml
|
name: xml
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.3.1"
|
version: "6.1.0"
|
||||||
yaml:
|
yaml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -1051,5 +1072,5 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.1"
|
version: "3.1.1"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.17.3 <3.0.0"
|
dart: ">=2.18.2 <3.0.0"
|
||||||
flutter: ">=2.10.0"
|
flutter: ">=3.3.0"
|
||||||
|
|
|
||||||
32
pubspec.yaml
32
pubspec.yaml
|
|
@ -19,7 +19,7 @@ version: 1.0.0+1
|
||||||
|
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.17.3 <3.0.0"
|
sdk: ">=2.18.2 <3.0.0"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
|
|
@ -30,30 +30,30 @@ dependencies:
|
||||||
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.3
|
||||||
provider: ^6.0.3
|
provider: ^6.0.4
|
||||||
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.5
|
||||||
http: ^0.13.4
|
http: ^0.13.5
|
||||||
sqflite: ^2.0.2+1
|
sqflite: ^2.2.0+3
|
||||||
path_provider: ^2.0.11
|
path_provider: ^2.0.11
|
||||||
material_design_icons_flutter: ^5.0.6295
|
material_design_icons_flutter: ^5.0.6996
|
||||||
intl: ^0.17.0
|
intl: ^0.17.0
|
||||||
device_info: ^2.0.3
|
device_info: ^2.0.3
|
||||||
auto_size_text: ^3.0.0
|
auto_size_text: ^3.0.0
|
||||||
url_launcher: ^6.1.3
|
url_launcher: ^6.1.6
|
||||||
qr_flutter: ^4.0.0
|
qr_flutter: ^4.0.0
|
||||||
mask_text_input_formatter: ^2.3.0
|
mask_text_input_formatter: ^2.4.0
|
||||||
flutter_screenutil: ^5.5.3+2
|
flutter_screenutil: ^5.6.0
|
||||||
shared_preferences: ^2.0.15
|
shared_preferences: ^2.0.15
|
||||||
material_floating_search_bar: ^0.3.7
|
material_floating_search_bar: ^0.3.7
|
||||||
implicitly_animated_reorderable_list: ^0.4.2
|
implicitly_animated_reorderable_list: ^0.4.2
|
||||||
uuid: ^3.0.6
|
uuid: ^3.0.6
|
||||||
charset_converter: ^2.1.0
|
charset_converter: ^2.1.0
|
||||||
ai_barcode: ^3.2.0
|
ai_barcode: ^3.2.4
|
||||||
permission_handler: ^8.3.0
|
permission_handler: ^10.2.0
|
||||||
flutter_svg: ^0.23.0+1
|
flutter_svg: ^1.1.6
|
||||||
grouped_list: ^5.1.2
|
grouped_list: ^5.1.2
|
||||||
infinite_scroll_pagination: ^3.2.0
|
infinite_scroll_pagination: ^3.2.0
|
||||||
flutter_bluetooth_basic: ^0.1.7
|
flutter_bluetooth_basic: ^0.1.7
|
||||||
|
|
@ -61,17 +61,17 @@ dependencies:
|
||||||
esc_pos_utils: ^1.1.0
|
esc_pos_utils: ^1.1.0
|
||||||
esc_pos_bluetooth: ^0.4.1
|
esc_pos_bluetooth: ^0.4.1
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
build_runner: ^2.1.5
|
build_runner: ^2.3.2
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
json_serializable: ^6.0.1
|
json_serializable: ^6.5.4
|
||||||
|
|
||||||
# The "flutter_lints" package below contains a set of recommended lints to
|
# The "flutter_lints" package below contains a set of recommended lints to
|
||||||
# encourage good coding practices. The lint set provided by the package is
|
# encourage good coding practices. The lint set provided by the package is
|
||||||
# activated in the `analysis_options.yaml` file located at the root of your
|
# activated in the `analysis_options.yaml` file located at the root of your
|
||||||
# package. See that file for information about deactivating specific lint
|
# package. See that file for information about deactivating specific lint
|
||||||
# rules and activating additional ones.
|
# rules and activating additional ones.
|
||||||
flutter_lints: ^2.0.0
|
flutter_lints: ^2.0.1
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
# For information on the generic Dart part of this file, see the
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue