aman-satu-flutter/lib/core/services/buy_service.dart

156 lines
4.9 KiB
Dart

import 'package:intl/intl.dart';
import 'package:satu/core/base/base_service.dart';
import 'package:satu/core/models/but_item/buy_item_response.dart';
import 'package:satu/core/models/dictionary/contragent/contragent_response_entity.dart';
import 'package:satu/core/services/api_service.dart';
import 'package:satu/core/utils/locator.dart';
import '../models/buy_invoice/buy_invoice_response.dart';
import '../models/response/response_entity.dart';
class BuyService extends BaseService {
final ApiService _api = locator<ApiService>();
Future<List<BuyInvoiceResponse>> getList(
{required int page, required int perpage, dynamic filter}) async {
List<BuyInvoiceResponse> list = [];
try {
final Map<String, dynamic> requestBody = <String, dynamic>{
'page': page,
'perpage': perpage,
'order' : {
'col': 'doc_number',
'desc': true
}
};
ResponseEntity categories = await _api.postRequest('/general_purchases_get',
requestBody: requestBody);
if (categories.original.data != null &&
categories.original.data!.isNotEmpty) {
for (final dynamic map in categories.original.data!) {
final BuyInvoiceResponse item =
BuyInvoiceResponse.fromJson(map);
list.add(item);
}
}
} catch (e, stack) {
log.e('getList', e, stack);
}
return list;
}
Future<List<BuyItemResponse>> getItemList(int id,
{required int page, required int perpage, dynamic filter}) async {
List<BuyItemResponse> list = [];
try {
final Map<String, dynamic> requestBody = <String, dynamic>{
'page': page,
'perpage': perpage,
'id': id
};
ResponseEntity categories = await _api.postRequest('/general_purchases_get_items',
requestBody: requestBody);
if (categories.original.items != null &&
categories.original.items!.isNotEmpty) {
for (final dynamic map in categories.original.items!) {
final BuyItemResponse item =
BuyItemResponse.fromJson(map);
list.add(item);
}
}
} catch (e, stack) {
log.e('getList', e, stack);
}
return list;
}
Future<bool> editItem({required int invoiceId, required int id, required double price, required double count}) async {
bool result = false;
try {
final Map<String, dynamic> requestBody = <String, dynamic>{
'eacc_buy_invoice_item_id': id,
'id': invoiceId,
'price': price,
'cnt': count
};
ResponseEntity response = await _api.postRequest('/general_purchases_edit_item',
requestBody: requestBody);
result = response.original.status == 'success';
} catch (e, stack) {
log.e('getList', e, stack);
}
return result;
}
Future<bool> deleteItem(int id) async {
bool result = false;
try {
final Map<String, dynamic> requestBody = <String, dynamic>{
'id': id,
};
ResponseEntity response = await _api.postRequest('/general_purchases_delete_item',
requestBody: requestBody);
result = response.original.status == 'success';
log.i(response.toJson());
} catch (e, stack) {
log.e('getList', e, stack);
}
return result;
}
Future<bool> addItem(int invoiceId, int goodId) async {
bool result = false;
try {
final Map<String, dynamic> requestBody = <String, dynamic>{
'eacc_good_id': goodId,
'id': invoiceId,
};
ResponseEntity response = await _api.postRequest('/general_purchases_add_item',
requestBody: requestBody);
result = response.original.status == 'success';
log.i(response.toJson());
} catch (e, stack) {
log.e('getList', e, stack);
}
return result;
}
Future<bool> confirmInvoice(int invoiceId) async {
bool result = false;
try {
final Map<String, dynamic> requestBody = <String, dynamic>{
'id': invoiceId,
};
ResponseEntity response = await _api.postRequest('/general_purchases_confirm',
requestBody: requestBody);
result = response.original.status == 'success';
log.i(response.toJson());
} catch (e, stack) {
log.e('getList', e, stack);
}
return result;
}
Future<bool> createBuy(ContragentResponseEntity contragent, DateTime date) async {
bool result = false;
try {
DateFormat formatter = DateFormat('yyyy-MM-dd');
final Map<String, dynamic> requestBody = <String, dynamic>{
'eacc_contragent_id': contragent.id,
'invoice_date': formatter.format(date),
};
log.i('requestBody', requestBody);
ResponseEntity response = await _api.postRequest('/general_purchases_add',
requestBody: requestBody);
log.i('response', response.toJson());
result = response.original.status == 'success';
} catch (e, stack) {
log.e('getList', e, stack);
}
return result;
}
}