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(); Future> getList( {required int page, required int perpage, dynamic filter}) async { List list = []; try { final Map requestBody = { '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> getItemList(int id, {required int page, required int perpage, dynamic filter}) async { List list = []; try { final Map requestBody = { '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 editItem({required int invoiceId, required int id, required double price, required double count}) async { bool result = false; try { final Map requestBody = { '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 deleteItem(int id) async { bool result = false; try { final Map requestBody = { '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 addItem(int invoiceId, int goodId) async { bool result = false; try { final Map requestBody = { '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 confirmInvoice(int invoiceId) async { bool result = false; try { final Map requestBody = { '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 createBuy(ContragentResponseEntity contragent, DateTime date) async { bool result = false; try { DateFormat formatter = DateFormat('yyyy-MM-dd'); final Map requestBody = { '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; } }