diff --git a/README.md b/README.md
index 615dd76..d0078ed 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,16 @@
# satu
-
Aman Satu App
## Getting Started
-This project is a starting point for a Flutter application.
+# build_runner
+flutter pub run build_runner build --delete-conflicting-outputs
+flutter pub run build_runner watch --delete-conflicting-outputs
-A few resources to get you started if this is your first Flutter project:
-
-- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
-- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
-
-For help getting started with Flutter, view our
-[online documentation](https://flutter.dev/docs), which offers tutorials,
-samples, guidance on mobile development, and a full API reference.
+# build android apk
+flutter build --release apk --flavor production
+# build android appbundle
+flutter build --release appbundle --flavor production
## Сборка релизного пакет
flutter clean && flutter build appbundle --release
\ No newline at end of file
diff --git a/assets/images/svg/ostatki.svg b/assets/images/svg/ostatki.svg
new file mode 100644
index 0000000..ad38c10
--- /dev/null
+++ b/assets/images/svg/ostatki.svg
@@ -0,0 +1,12 @@
+
diff --git a/lib/core/base/base_service.dart b/lib/core/base/base_service.dart
index 0b4dc62..523d464 100644
--- a/lib/core/base/base_service.dart
+++ b/lib/core/base/base_service.dart
@@ -3,13 +3,13 @@ import 'package:logger/logger.dart';
import '../utils/logger.dart';
class BaseService {
- Logger log = getLogger(
- 'BaseService',
- );
BaseService({String? title}) {
this.log = getLogger(
title ?? this.runtimeType.toString(),
);
}
+ Logger log = getLogger(
+ 'BaseService',
+ );
}
\ No newline at end of file
diff --git a/lib/core/models/dialog_models.dart b/lib/core/models/dialog_models.dart
index 4e74c56..d4368fa 100644
--- a/lib/core/models/dialog_models.dart
+++ b/lib/core/models/dialog_models.dart
@@ -1,4 +1,3 @@
-import 'package:flutter/foundation.dart';
class DialogRequest {
DialogRequest(
diff --git a/lib/core/models/dictionary/category_response.dart b/lib/core/models/dictionary/category_response.dart
index b78a01f..1b16082 100644
--- a/lib/core/models/dictionary/category_response.dart
+++ b/lib/core/models/dictionary/category_response.dart
@@ -9,11 +9,10 @@ class CategoryResponse {
String name = '';
String? updatedAt;
- static CategoryResponse? fromMap(dynamic map) {
- if (map == null) return null;
+ static CategoryResponse fromMap(dynamic map) {
final CategoryResponse categoryResponseBean = CategoryResponse();
categoryResponseBean.id = map['id'] as int;
- categoryResponseBean.parentId = map['parent_id'] as int;
+ categoryResponseBean.parentId = map['parent_id'] as int?;
categoryResponseBean.name = map['name'] as String;
categoryResponseBean.updatedAt = map['updated_at'] as String;
return categoryResponseBean;
diff --git a/lib/core/models/dictionary/contragent/contragent_response_entity.dart b/lib/core/models/dictionary/contragent/contragent_response_entity.dart
new file mode 100644
index 0000000..4e54b73
--- /dev/null
+++ b/lib/core/models/dictionary/contragent/contragent_response_entity.dart
@@ -0,0 +1,29 @@
+import 'package:json_annotation/json_annotation.dart';
+import 'dart:convert';
+
+part 'contragent_response_entity.g.dart';
+
+@JsonSerializable()
+class ContragentResponseEntity {
+ factory ContragentResponseEntity.fromJson(Map json) =>
+ _$ContragentResponseEntityFromJson(json);
+
+ ContragentResponseEntity();
+
+ int? id;
+ String? biniin;
+ @JsonKey(name: 'ref_app_company_type_id')
+ late int refAppCompanyTypeId;
+ String? name;
+ String? phone;
+ String? email;
+ int? nds;
+ int? resident;
+
+ Map toJson() => _$ContragentResponseEntityToJson(this);
+
+ @override
+ String toString() {
+ return jsonEncode(this);
+ }
+}
diff --git a/lib/core/models/dictionary/contragent/contragent_response_entity.g.dart b/lib/core/models/dictionary/contragent/contragent_response_entity.g.dart
new file mode 100644
index 0000000..035d075
--- /dev/null
+++ b/lib/core/models/dictionary/contragent/contragent_response_entity.g.dart
@@ -0,0 +1,32 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'contragent_response_entity.dart';
+
+// **************************************************************************
+// JsonSerializableGenerator
+// **************************************************************************
+
+ContragentResponseEntity _$ContragentResponseEntityFromJson(
+ Map json) =>
+ ContragentResponseEntity()
+ ..id = json['id'] as int?
+ ..biniin = json['biniin'] as String?
+ ..refAppCompanyTypeId = json['ref_app_company_type_id'] as int
+ ..name = json['name'] as String?
+ ..phone = json['phone'] as String?
+ ..email = json['email'] as String?
+ ..nds = json['nds'] as int?
+ ..resident = json['resident'] as int?;
+
+Map _$ContragentResponseEntityToJson(
+ ContragentResponseEntity instance) =>
+ {
+ 'id': instance.id,
+ 'biniin': instance.biniin,
+ 'ref_app_company_type_id': instance.refAppCompanyTypeId,
+ 'name': instance.name,
+ 'phone': instance.phone,
+ 'email': instance.email,
+ 'nds': instance.nds,
+ 'resident': instance.resident,
+ };
diff --git a/lib/core/models/dictionary/good_response.dart b/lib/core/models/dictionary/good_response.dart
index c5bc1ea..9dafb67 100644
--- a/lib/core/models/dictionary/good_response.dart
+++ b/lib/core/models/dictionary/good_response.dart
@@ -22,19 +22,22 @@ class GoodResponse {
double? basePrice;
int? divisible;
String? updatedAt;
+ String? categoryName;
+
static GoodResponse fromMap(dynamic map) {
final GoodResponse goodResponseBean = GoodResponse();
goodResponseBean.id = map['id'] as int;
- goodResponseBean.categoryId = map['category_id'] as int;
+ goodResponseBean.categoryId = map['eacc_good_category_id'] as int?;
goodResponseBean.name = map['name'] as String;
- goodResponseBean.ean = map['ean'] as String;
+ goodResponseBean.ean = map['ean'] as String?;
goodResponseBean.articul = map['articul'] as int;
goodResponseBean.price = (cast(map['price']) ?? 0).toDouble() ;
goodResponseBean.optPrice = (cast(map['opt_price']) ?? 0).toDouble();
goodResponseBean.basePrice = (cast(map['base_price']) ?? 0).toDouble();
- goodResponseBean.divisible = map['divisible'] as int;
+ goodResponseBean.divisible = map['divisible'] as int?;
goodResponseBean.updatedAt = map['updated_at'] as String;
+ goodResponseBean.categoryName = map['category_name'] as String?;
return goodResponseBean;
}
diff --git a/lib/core/models/dictionary/response/dict_response_entity.dart b/lib/core/models/dictionary/response/dict_response_entity.dart
new file mode 100644
index 0000000..7e0a9e8
--- /dev/null
+++ b/lib/core/models/dictionary/response/dict_response_entity.dart
@@ -0,0 +1,62 @@
+import 'package:json_annotation/json_annotation.dart';
+import 'dart:convert';
+
+part 'dict_response_entity.g.dart';
+
+@JsonSerializable()
+class DictResponseEntity {
+
+ factory DictResponseEntity.fromJson(Map json) => _$DictResponseEntityFromJson(json);
+
+ DictResponseEntity();
+
+ late DictResponseHeaders headers;
+ late DictResponseOriginal original;
+ String? exception;
+
+ Map toJson() => _$DictResponseEntityToJson(this);
+
+ @override
+ String toString() {
+ return jsonEncode(this);
+ }
+}
+
+@JsonSerializable()
+class DictResponseHeaders {
+
+
+
+ DictResponseHeaders();
+
+ factory DictResponseHeaders.fromJson(Map json) => _$DictResponseHeadersFromJson(json);
+
+ Map toJson() => _$DictResponseHeadersToJson(this);
+
+ @override
+ String toString() {
+ return jsonEncode(this);
+ }
+}
+
+@JsonSerializable()
+class DictResponseOriginal {
+
+ factory DictResponseOriginal.fromJson(Map json) => _$DictResponseOriginalFromJson(json);
+
+ DictResponseOriginal();
+
+ int? overall;
+ int? page;
+ int? perpage;
+ List? data;
+ Map>? errors;
+ String? message;
+
+ Map toJson() => _$DictResponseOriginalToJson(this);
+
+ @override
+ String toString() {
+ return jsonEncode(this);
+ }
+}
diff --git a/lib/core/models/dictionary/response/dict_response_entity.g.dart b/lib/core/models/dictionary/response/dict_response_entity.g.dart
new file mode 100644
index 0000000..c5923d8
--- /dev/null
+++ b/lib/core/models/dictionary/response/dict_response_entity.g.dart
@@ -0,0 +1,53 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'dict_response_entity.dart';
+
+// **************************************************************************
+// JsonSerializableGenerator
+// **************************************************************************
+
+DictResponseEntity _$DictResponseEntityFromJson(Map json) =>
+ DictResponseEntity()
+ ..headers =
+ DictResponseHeaders.fromJson(json['headers'] as Map)
+ ..original = DictResponseOriginal.fromJson(
+ json['original'] as Map)
+ ..exception = json['exception'] as String?;
+
+Map _$DictResponseEntityToJson(DictResponseEntity instance) =>
+ {
+ 'headers': instance.headers,
+ 'original': instance.original,
+ 'exception': instance.exception,
+ };
+
+DictResponseHeaders _$DictResponseHeadersFromJson(Map json) =>
+ DictResponseHeaders();
+
+Map _$DictResponseHeadersToJson(
+ DictResponseHeaders instance) =>
+ {};
+
+DictResponseOriginal _$DictResponseOriginalFromJson(
+ Map json) =>
+ DictResponseOriginal()
+ ..overall = json['overall'] as int?
+ ..page = json['page'] as int?
+ ..perpage = json['perpage'] as int?
+ ..data = json['data'] as List?
+ ..errors = (json['errors'] as Map?)?.map(
+ (k, e) =>
+ MapEntry(k, (e as List).map((e) => e as String).toList()),
+ )
+ ..message = json['message'] as String?;
+
+Map _$DictResponseOriginalToJson(
+ DictResponseOriginal instance) =>
+ {
+ 'overall': instance.overall,
+ 'page': instance.page,
+ 'perpage': instance.perpage,
+ 'data': instance.data,
+ 'errors': instance.errors,
+ 'message': instance.message,
+ };
diff --git a/lib/core/models/flow/dao/transaction_dao.dart b/lib/core/models/flow/dao/transaction_dao.dart
index 8888d20..1dd815d 100644
--- a/lib/core/models/flow/dao/transaction_dao.dart
+++ b/lib/core/models/flow/dao/transaction_dao.dart
@@ -1,4 +1,3 @@
-import 'package:satu/core/utils/utils_parse.dart';
class TransactionDao {
TransactionDao();
diff --git a/lib/core/models/flow/sell_return/sell_return_request.dart b/lib/core/models/flow/sell_return/sell_return_request.dart
index c99a3e3..c12e312 100644
--- a/lib/core/models/flow/sell_return/sell_return_request.dart
+++ b/lib/core/models/flow/sell_return/sell_return_request.dart
@@ -4,13 +4,13 @@ part 'sell_return_request.g.dart';
@JsonSerializable()
class SellReturnRequest {
- int journal_id;
- String invoice_id;
+ factory SellReturnRequest.fromJson(Map json) =>
+ _$SellReturnRequestFromJson(json);
SellReturnRequest({required this.journal_id, required this.invoice_id});
- factory SellReturnRequest.fromJson(Map json) => _$SellReturnRequestFromJson(json);
+ int journal_id;
+ String invoice_id;
Map toJson() => _$SellReturnRequestToJson(this);
}
-
diff --git a/lib/core/models/flow/sell_return/sell_return_request.g.dart b/lib/core/models/flow/sell_return/sell_return_request.g.dart
index 84939ce..5aed66c 100644
--- a/lib/core/models/flow/sell_return/sell_return_request.g.dart
+++ b/lib/core/models/flow/sell_return/sell_return_request.g.dart
@@ -6,12 +6,11 @@ part of 'sell_return_request.dart';
// JsonSerializableGenerator
// **************************************************************************
-SellReturnRequest _$SellReturnRequestFromJson(Map json) {
- return SellReturnRequest(
- journal_id: json['journal_id'] as int,
- invoice_id: json['invoice_id'] as String,
- );
-}
+SellReturnRequest _$SellReturnRequestFromJson(Map json) =>
+ SellReturnRequest(
+ journal_id: json['journal_id'] as int,
+ invoice_id: json['invoice_id'] as String,
+ );
Map _$SellReturnRequestToJson(SellReturnRequest instance) =>
{
diff --git a/lib/core/models/response.dart b/lib/core/models/response.dart
deleted file mode 100644
index 1ed9660..0000000
--- a/lib/core/models/response.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-import 'package:satu/core/utils/utils_parse.dart';
-
-/// list : []
-/// message : ""
-/// operation : true
-
-class Response {
- List? list;
- String? message;
- bool? operation;
-
- Response();
-
- factory Response.fromMapList(dynamic map, Function(dynamic)? parser) {
-
- final List list = [];
- if (map['list'] != null) {
- (map['list'] as List).forEach((dynamic element) {
- if(parser == null) {
- list.add(element);
- } else {
- list.add(parser(element));
- }
- });
- }
- final Response responseBean = Response();
- responseBean.list = list;
- responseBean.message = cast(map['message']);
- responseBean.operation = map['operation'] as bool;
- return responseBean;
- }
-
-
-}
diff --git a/lib/core/models/settings/printer_setting.dart b/lib/core/models/settings/printer_setting.dart
index 1590594..32432b4 100644
--- a/lib/core/models/settings/printer_setting.dart
+++ b/lib/core/models/settings/printer_setting.dart
@@ -12,6 +12,14 @@ class PrinterConst {
class PrinterSetting {
+ factory PrinterSetting.fromMap(dynamic map) {
+ return PrinterSetting(
+ device: map['device']!=null ? PrinterDevice.fromMap(map['device']) : null,
+ encoding: cast(map['encoding']),
+ paperSize: cast(map['paperSize']),
+ );
+ }
+
PrinterSetting({
this.device,
this.encoding = PrinterConst.encodingCP866,
@@ -30,37 +38,9 @@ class PrinterSetting {
};
}
- factory PrinterSetting.fromMap(dynamic map) {
- return PrinterSetting(
- device: map['device']!=null ? PrinterDevice.fromMap(map['device']) : null,
- encoding: cast(map['encoding']),
- paperSize: cast(map['paperSize']),
- );
- }
-
}
class PrinterDevice {
- String? name;
- String? address;
- int? type = 0;
- bool? connected = false;
-
- PrinterDevice({
- this.name,
- this.address,
- this.type,
- this.connected,
- });
-
- dynamic toMap() {
- return {
- 'name': name,
- 'address': address,
- 'type': type,
- 'connected': connected,
- };
- }
factory PrinterDevice.fromMap(dynamic map) {
return PrinterDevice(
@@ -70,4 +50,24 @@ class PrinterDevice {
connected: cast(map['connected']),
);
}
+
+ PrinterDevice({
+ this.name,
+ this.address,
+ this.type,
+ this.connected,
+ });
+ String? name;
+ String? address;
+ int? type = 0;
+ bool? connected = false;
+
+ dynamic toMap() {
+ return {
+ 'name': name,
+ 'address': address,
+ 'type': type,
+ 'connected': connected,
+ };
+ }
}
\ No newline at end of file
diff --git a/lib/core/models/ui_dao/popup_item_dao.dart b/lib/core/models/ui_dao/popup_item_dao.dart
index 9b355e0..f063dd3 100644
--- a/lib/core/models/ui_dao/popup_item_dao.dart
+++ b/lib/core/models/ui_dao/popup_item_dao.dart
@@ -1,4 +1,3 @@
-import 'package:satu/core/utils/utils_parse.dart';
class PopupItemDao {
PopupItemDao({required this.code, required this.name});
diff --git a/lib/core/redux/actions/journal_actions.dart b/lib/core/redux/actions/journal_actions.dart
index ecf31a6..380829c 100644
--- a/lib/core/redux/actions/journal_actions.dart
+++ b/lib/core/redux/actions/journal_actions.dart
@@ -5,20 +5,13 @@ import 'package:logger/logger.dart';
import 'package:meta/meta.dart';
import 'package:redux/redux.dart';
import 'package:redux_thunk/redux_thunk.dart';
-import 'package:satu/core/entity/category_entity.dart';
-import 'package:satu/core/entity/goods_entity.dart';
import 'package:satu/core/entity/transaction_entity.dart';
-import 'package:satu/core/entity/transaction_rec_entity.dart';
import 'package:satu/core/models/entity_data/transaction_data.dart';
-import 'package:satu/core/models/flow/dao/product_dao.dart';
import 'package:satu/core/models/flow/dao/transaction_dao.dart';
-import 'package:satu/core/models/flow/transaction_state.dart';
import 'package:satu/core/redux/state/journal_state.dart';
-import 'package:satu/core/redux/state/sell_state.dart';
import 'package:satu/core/services/db_service.dart';
import 'package:satu/core/utils/locator.dart';
import 'package:satu/core/utils/logger.dart';
-import 'package:uuid/uuid.dart';
import '../store.dart';
@@ -44,7 +37,6 @@ Future loadJournalData(Store store) async {
try {
log.i('loadJournalData');
final int? appCompanyId = store.state.userState!.auth!.companyId;
- final int tabIndex = store.state.journalState?.tabIndex ?? 0;
final List