Commit 4807bee4 authored by Sai Srinivas's avatar Sai Srinivas
Browse files

19-06-2025 By Sai Srinivas

Order Module Edit and minor test cases.
parent d006edb4
class EditPaymentDetailsAdjustedOrdersViewResponse {
List<PaidList>? paidList;
List<EditOrderList>? editOrderList;
String? error;
String? message;
EditPaymentDetailsAdjustedOrdersViewResponse(
{this.paidList, this.editOrderList, this.error, this.message});
EditPaymentDetailsAdjustedOrdersViewResponse.fromJson(
Map<String, dynamic> json) {
if (json['paid_list'] != null) {
paidList = <PaidList>[];
json['paid_list'].forEach((v) {
paidList!.add(new PaidList.fromJson(v));
});
}
if (json['order_list'] != null) {
editOrderList = <EditOrderList>[];
json['order_list'].forEach((v) {
editOrderList!.add(new EditOrderList.fromJson(v));
});
}
error = json['error'];
message = json['message'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.paidList != null) {
data['paid_list'] = this.paidList!.map((v) => v.toJson()).toList();
}
if (this.editOrderList != null) {
data['order_list'] = this.editOrderList!.map((v) => v.toJson()).toList();
}
data['error'] = this.error;
data['message'] = this.message;
return data;
}
}
class PaidList {
String? accId;
String? orderId;
String? orderPaymentId;
String? orderNumber;
String? orderAmount;
String? paidAmount;
String? balanceAmount;
String? adjustedAmount;
PaidList(
{this.accId,
this.orderId,
this.orderPaymentId,
this.orderNumber,
this.orderAmount,
this.paidAmount,
this.balanceAmount,
this.adjustedAmount});
PaidList.fromJson(Map<String, dynamic> json) {
accId = json['acc_id'];
orderId = json['order_id'];
orderPaymentId = json['order_payment_id'];
orderNumber = json['order_number'];
orderAmount = json['order_amount'];
paidAmount = json['paid_amount'];
balanceAmount = json['balance_amount'];
adjustedAmount = json['adjusted_amount'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['acc_id'] = this.accId;
data['order_id'] = this.orderId;
data['order_payment_id'] = this.orderPaymentId;
data['order_number'] = this.orderNumber;
data['order_amount'] = this.orderAmount;
data['paid_amount'] = this.paidAmount;
data['balance_amount'] = this.balanceAmount;
data['adjusted_amount'] = this.adjustedAmount;
return data;
}
}
class EditOrderList {
String? orderId;
String? orderNumber;
String? totalAmount;
String? balanceAmount;
String? createdDatetime;
EditOrderList(
{this.orderId,
this.orderNumber,
this.totalAmount,
this.balanceAmount,
this.createdDatetime});
EditOrderList.fromJson(Map<String, dynamic> json) {
orderId = json['order_id'];
orderNumber = json['order_number'];
totalAmount = json['total_amount'];
balanceAmount = json['balance_amount'];
createdDatetime = json['created_datetime'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['order_id'] = this.orderId;
data['order_number'] = this.orderNumber;
data['total_amount'] = this.totalAmount;
data['balance_amount'] = this.balanceAmount;
data['created_datetime'] = this.createdDatetime;
return data;
}
}
...@@ -22,588 +22,605 @@ import '../../Models/ordersModels/addOrderTpcAgentListResponse.dart'; ...@@ -22,588 +22,605 @@ import '../../Models/ordersModels/addOrderTpcAgentListResponse.dart';
import '../../services/api_calling.dart'; import '../../services/api_calling.dart';
import '../HomeScreenNotifier.dart'; import '../HomeScreenNotifier.dart';
class Addorderprovider extends ChangeNotifier { class Addorderprovider extends ChangeNotifier {TextEditingController dropDownSearchController = TextEditingController();
TextEditingController dropDownSearchController = TextEditingController(); TextEditingController dropDownTpcSearchController = TextEditingController();
TextEditingController dropDownTpcSearchController = TextEditingController();
TextEditingController billingNameController = TextEditingController();
TextEditingController billingNameController = TextEditingController(); TextEditingController billingAddressController = TextEditingController();
TextEditingController billingAddressController = TextEditingController(); TextEditingController billingPincodeController = TextEditingController();
TextEditingController billingPincodeController = TextEditingController(); TextEditingController dispatchAddressController = TextEditingController();
TextEditingController dispatchAddressController = TextEditingController(); TextEditingController dispatchPincodeController = TextEditingController();
TextEditingController dispatchPincodeController = TextEditingController(); TextEditingController gstController = TextEditingController();
TextEditingController gstController = TextEditingController(); TextEditingController orderReceivedDateController = TextEditingController();
TextEditingController orderReceivedDateController = TextEditingController(); TextEditingController tpcAmountController = TextEditingController();
TextEditingController tpcAmountController = TextEditingController();
List<TextEditingController> ProductControllers = [];
List<AccountList> _accountList = []; List<TextEditingController> PriceControllers = [];
List<Employees> _employees = []; List<TextEditingController> QuantityControllers = [];
List<States> _billingStates = []; List<TextEditingController> CGSTControllers = [];
List<States> _dispatchStates = []; List<TextEditingController> SGSTControllers = [];
List<SaleProducts> _saleProducts = []; List<TextEditingController> IGSTControllers = [];
List<TextEditingController> TotalPriceControllers = [];
List<Districts> _billingDistricts = []; List<TextEditingController> TaxableValueControllers = [];
List<Districts> _dispatchDistricts = [];
List<SubLocations> _billingSubLocations = []; TextEditingController basicAmountReadOnlyController = TextEditingController();
List<SubLocations> _dispatchSubLocations = []; TextEditingController cgstReadOnlyController = TextEditingController();
TextEditingController sgstReadOnlyController = TextEditingController();
List<String> _unloadingScope = []; TextEditingController igstReadOnlyController = TextEditingController();
List<String> _freightScope = []; TextEditingController totalReadOnlyAmountController = TextEditingController();
List<String> _erectionScope = []; TextEditingController noteController = TextEditingController();
List<String> _tpcApplicable = []; List<AccountList> _accountList = [];
List<TpcList> _tpcAgent = []; List<Employees> _employees = [];
List<States> _billingStates = [];
AccountDetails _accountDetails = AccountDetails(); List<States> _dispatchStates = [];
List<SaleProducts> _saleProducts = [];
String selectAccountError = "";
String billingNameError = ""; List<Districts> _billingDistricts = [];
String billingAddressError = ""; List<Districts> _dispatchDistricts = [];
String billingPincodeError = ""; List<SubLocations> _billingSubLocations = [];
String dispatchAddressError = ""; List<SubLocations> _dispatchSubLocations = [];
String dispatchPincodeError = "";
String tpcAmountError = ""; List<String> _unloadingScope = [];
String gstError = ""; List<String> _freightScope = [];
List<String> _erectionScope = [];
AccountList? _selectedAccountList; List<String> _tpcApplicable = [];
String? _selectedAccountID; List<TpcList> _tpcAgent = [];
String? _selectedAccountName;
AccountDetails _accountDetails = AccountDetails();
Employees? _selectedEmployees;
String? _selectedEmployeeID; String selectAccountError = "";
String? _selectedEmployeeName; String billingNameError = "";
String billingAddressError = "";
States? _selectedBillingStates; String billingPincodeError = "";
String? _selectedBillingStateID; String dispatchAddressError = "";
String? _selectedBillingStateName; String dispatchPincodeError = "";
String tpcAmountError = "";
Districts? _selectedBillingDistricts; String gstError = "";
String? _selectedBillingDistrictID;
String? _selectedBillingDistrictValue; AccountList? _selectedAccountList;
String? _selectedAccountID;
SubLocations? _selectedBillingSubLocations; String? _selectedAccountName;
String? _selectedBillingSubLocID;
String? _selectedBillingSubLocValue; Employees? _selectedEmployees;
String? _selectedEmployeeID;
States? _selectedDispatchStates; String? _selectedEmployeeName;
String? _selectedDispatchStateID;
String? _selectedDispatchStateName; States? _selectedBillingStates;
String? _selectedBillingStateID;
Districts? _selectedDispatchDistricts; String? _selectedBillingStateName;
String? _selectedDispatchDistrictID;
String? _selectedDispatchDistrictValue; Districts? _selectedBillingDistricts;
String? _selectedBillingDistrictID;
SubLocations? _selectedDispatchSubLocations; String? _selectedBillingDistrictValue;
String? _selectedDispatchSubLocID;
String? _selectedDispatchSubLocValue; SubLocations? _selectedBillingSubLocations;
String? _selectedBillingSubLocID;
SaleProducts? _selectedSaleProducts; String? _selectedBillingSubLocValue;
List<String?> _selectedSaleProductID = []; States? _selectedDispatchStates;
String? _selectedSaleProductName; String? _selectedDispatchStateID;
String? _selectedDispatchStateName;
String? _selectedUnloadingScope;
String? _selectedFreightScope; Districts? _selectedDispatchDistricts;
String? _selectedErectionScope; String? _selectedDispatchDistrictID;
String? _selectedTpcStatus; String? _selectedDispatchDistrictValue;
TpcList? _selectedTpcAgent;
String? _selectedTpcAgentID; SubLocations? _selectedDispatchSubLocations;
String? _selectedTpcAgentValue; String? _selectedDispatchSubLocID;
String? _selectedDispatchSubLocValue;
List<TextEditingController> ProductControllers = [];
List<TextEditingController> PriceControllers = []; SaleProducts? _selectedSaleProducts;
List<TextEditingController> QuantityControllers = [];
List<TextEditingController> CGSTControllers = []; List<String?> _selectedSaleProductID = [];
List<TextEditingController> SGSTControllers = []; String? _selectedSaleProductName;
List<TextEditingController> IGSTControllers = [];
List<TextEditingController> TotalPriceControllers = []; String? _selectedUnloadingScope;
List<TextEditingController> TaxableValueControllers = []; String? _selectedFreightScope;
TextEditingController noteController = TextEditingController(); String? _selectedErectionScope;
String? _selectedTpcStatus;
LatLng startLocation = const LatLng(17.439112226708446, 78.43292499146135); TpcList? _selectedTpcAgent;
LatLng? currentLocationLatLng; String? _selectedTpcAgentID;
String latlongs = ""; String? _selectedTpcAgentValue;
Set<Marker> markers = {};
Location.LocationData? currentLocation;
bool isLocationEnabled = false;
bool hasLocationPermission = false;
LatLng startLocation = const LatLng(17.439112226708446, 78.43292499146135);
String? FileError; LatLng? currentLocationLatLng;
String? dateError; String latlongs = "";
bool _isLoading = false; Set<Marker> markers = {};
int _imagePicked = 0; Location.LocationData? currentLocation;
File? _image; bool isLocationEnabled = false;
File? _imageName; bool hasLocationPermission = false;
final ImagePicker _picker = ImagePicker();
DateTime? _date; String? FileError;
String? _formattedDate; String? dateError;
Timer? _debounce; bool _isLoading = false;
List<Map<String, String>> _selectedOrders = []; int _imagePicked = 0;
File? _image;
List<Map<String, String>> get selectedOrders => _selectedOrders; File? _imageName;
final ImagePicker _picker = ImagePicker();
bool _submitClicked = false; DateTime? _date;
String? _formattedDate;
bool get submitClicked => _submitClicked; Timer? _debounce;
List<Map<String, String>> _selectedOrders = [];
set submitClicked(bool value){
_submitClicked = value; List<Map<String, String>> get selectedOrders => _selectedOrders;
notifyListeners();
} bool _submitClicked = false;
bool get submitClicked => _submitClicked;
set submitClicked(bool value){
_submitClicked = value;
notifyListeners();
}
set selectedOrders(value) { set selectedOrders(value) {
_selectedOrders = selectedOrders; _selectedOrders = selectedOrders;
notifyListeners(); notifyListeners();
} }
bool get isLoading => _isLoading; bool get isLoading => _isLoading;
String? get formattedDate => _formattedDate; String? get formattedDate => _formattedDate;
DateTime? get dateNow => _date; DateTime? get dateNow => _date;
File? get imagePath => _imageName; File? get imagePath => _imageName;
File? get imageFilePath => _image; File? get imageFilePath => _image;
int get imagePicked => _imagePicked; int get imagePicked => _imagePicked;
List<AccountList> get accountList => _accountList; List<AccountList> get accountList => _accountList;
List<Employees> get employees => _employees; List<Employees> get employees => _employees;
List<SaleProducts> get saleProducts => _saleProducts; List<SaleProducts> get saleProducts => _saleProducts;
List<String> get unloadingScope => _unloadingScope; List<String> get unloadingScope => _unloadingScope;
List<String> get freightScope => _freightScope; List<String> get freightScope => _freightScope;
List<String> get erectionScope => _erectionScope; List<String> get erectionScope => _erectionScope;
List<String> get tpcApplicable => _tpcApplicable; List<String> get tpcApplicable => _tpcApplicable;
List<TpcList> get tpcAgent => _tpcAgent; List<TpcList> get tpcAgent => _tpcAgent;
AccountList? get selectedAccountList => _selectedAccountList; AccountList? get selectedAccountList => _selectedAccountList;
String? get selectedAccountID => _selectedAccountID; String? get selectedAccountID => _selectedAccountID;
String? get selectedAccountName => _selectedAccountName; String? get selectedAccountName => _selectedAccountName;
Employees? get selectedEmployees => _selectedEmployees; Employees? get selectedEmployees => _selectedEmployees;
String? get selectedEmployeeID => _selectedEmployeeID; String? get selectedEmployeeID => _selectedEmployeeID;
String? get selectedEmployeeName => _selectedEmployeeName; String? get selectedEmployeeName => _selectedEmployeeName;
List<States> get billingStates => _billingStates; List<States> get billingStates => _billingStates;
States? get selecetdBillingStates => _selectedBillingStates; States? get selecetdBillingStates => _selectedBillingStates;
String? get selectedBillingStateID => _selectedBillingStateID; String? get selectedBillingStateID => _selectedBillingStateID;
String? get selectedBillingStateName => _selectedBillingStateName; String? get selectedBillingStateName => _selectedBillingStateName;
List<Districts> get billingDistricts => _billingDistricts; List<Districts> get billingDistricts => _billingDistricts;
List<SubLocations> get billingSubLocations => _billingSubLocations; List<SubLocations> get billingSubLocations => _billingSubLocations;
Districts? get selectedBillingDistricts => _selectedBillingDistricts; Districts? get selectedBillingDistricts => _selectedBillingDistricts;
String? get selectedBillingDistrictId => _selectedBillingDistrictID; String? get selectedBillingDistrictId => _selectedBillingDistrictID;
String? get selectedBillingDistrictValue => _selectedBillingDistrictValue; String? get selectedBillingDistrictValue => _selectedBillingDistrictValue;
SubLocations? get selectedBillingSubLocations => _selectedBillingSubLocations; SubLocations? get selectedBillingSubLocations => _selectedBillingSubLocations;
String? get selectedBillingSubLocID => _selectedBillingSubLocID; String? get selectedBillingSubLocID => _selectedBillingSubLocID;
String? get selectedBillingSubLocValue => _selectedBillingSubLocValue; String? get selectedBillingSubLocValue => _selectedBillingSubLocValue;
List<States> get dispatchStates => _dispatchStates; List<States> get dispatchStates => _dispatchStates;
States? get selecetdDispatchStates => _selectedDispatchStates; States? get selecetdDispatchStates => _selectedDispatchStates;
String? get selectedDispatchStateID => _selectedDispatchStateID; String? get selectedDispatchStateID => _selectedDispatchStateID;
String? get selectedDispatchStateName => _selectedDispatchStateName; String? get selectedDispatchStateName => _selectedDispatchStateName;
List<Districts> get dispatchDistricts => _dispatchDistricts; List<Districts> get dispatchDistricts => _dispatchDistricts;
List<SubLocations> get dispatchSubLocations => _dispatchSubLocations; List<SubLocations> get dispatchSubLocations => _dispatchSubLocations;
Districts? get selectedDispatchDistricts => _selectedDispatchDistricts; Districts? get selectedDispatchDistricts => _selectedDispatchDistricts;
String? get selectedDispatchDistrictId => _selectedDispatchDistrictID; String? get selectedDispatchDistrictId => _selectedDispatchDistrictID;
String? get selectedDispatchDistrictValue => _selectedDispatchDistrictValue; String? get selectedDispatchDistrictValue => _selectedDispatchDistrictValue;
SubLocations? get selectedDispatchSubLocations => SubLocations? get selectedDispatchSubLocations =>
_selectedDispatchSubLocations; _selectedDispatchSubLocations;
String? get selectedDispatchSubLocID => _selectedDispatchSubLocID; String? get selectedDispatchSubLocID => _selectedDispatchSubLocID;
String? get selectedDispatchSubLocValue => _selectedDispatchSubLocValue; String? get selectedDispatchSubLocValue => _selectedDispatchSubLocValue;
SaleProducts? get selectedSaleProducts => _selectedSaleProducts; SaleProducts? get selectedSaleProducts => _selectedSaleProducts;
List<String?> get selectedSaleProductID => _selectedSaleProductID; List<String?> get selectedSaleProductID => _selectedSaleProductID;
String? get selectedSaleProductName => _selectedSaleProductName; String? get selectedSaleProductName => _selectedSaleProductName;
String? get selectedUnloadingScope => _selectedUnloadingScope; String? get selectedUnloadingScope => _selectedUnloadingScope;
String? get selectedFreightScope => _selectedFreightScope; String? get selectedFreightScope => _selectedFreightScope;
String? get selectedErectionScope => _selectedErectionScope; String? get selectedErectionScope => _selectedErectionScope;
String? get selectedTpcStatus => _selectedTpcStatus; String? get selectedTpcStatus => _selectedTpcStatus;
TpcList? get selectedTpcAgent => _selectedTpcAgent; TpcList? get selectedTpcAgent => _selectedTpcAgent;
String? get selectedTpcAgentID => _selectedTpcAgentID; String? get selectedTpcAgentID => _selectedTpcAgentID;
String? get selectedTpcAgentValue => _selectedTpcAgentValue; String? get selectedTpcAgentValue => _selectedTpcAgentValue;
AccountDetails get accountDetails => _accountDetails; AccountDetails get accountDetails => _accountDetails;
set accountList(List<AccountList> value) { set accountList(List<AccountList> value) {
_accountList = value; _accountList = value;
notifyListeners(); notifyListeners();
} }
set selectedAccountList(AccountList? value) { set selectedAccountList(AccountList? value) {
_selectedAccountList = value; _selectedAccountList = value;
_selectedAccountID = value!.id; _selectedAccountID = value!.id;
_selectedAccountName = value!.text!; _selectedAccountName = value!.text!;
notifyListeners(); notifyListeners();
} }
set selectedAccountID(String? value) { set selectedAccountID(String? value) {
_selectedAccountID = value; _selectedAccountID = value;
notifyListeners(); notifyListeners();
} }
set selectedAccountName(String? value) { set selectedAccountName(String? value) {
_selectedAccountName = value; _selectedAccountName = value;
notifyListeners(); notifyListeners();
} }
set selectedEmployees(Employees? value) { set selectedEmployees(Employees? value) {
_selectedEmployees = value; _selectedEmployees = value;
_selectedEmployeeID = value!.id; _selectedEmployeeID = value!.id;
_selectedEmployeeName = value!.name!; _selectedEmployeeName = value!.name!;
notifyListeners(); notifyListeners();
} }
set selectedEmployeeID(String? value) { set selectedEmployeeID(String? value) {
_selectedEmployeeID = value; _selectedEmployeeID = value;
notifyListeners(); notifyListeners();
} }
set selectedEmployeeName(String? value) { set selectedEmployeeName(String? value) {
_selectedEmployeeName = value; _selectedEmployeeName = value;
notifyListeners(); notifyListeners();
} }
set selecetdBillingStates(States? value) { set selecetdBillingStates(States? value) {
_selectedBillingStates = value; _selectedBillingStates = value;
_selectedBillingStateID = value!.id; _selectedBillingStateID = value!.id;
_selectedBillingStateName = value!.name!; _selectedBillingStateName = value!.name!;
notifyListeners(); notifyListeners();
} }
set selectedBillingStateID(String? value) { set selectedBillingStateID(String? value) {
_selectedBillingStateID = value; _selectedBillingStateID = value;
notifyListeners(); notifyListeners();
} }
set selectedBillingStateName(String? value) { set selectedBillingStateName(String? value) {
_selectedBillingStateName = value; _selectedBillingStateName = value;
notifyListeners(); notifyListeners();
} }
set selectedBillingDistricts(Districts? value) { set selectedBillingDistricts(Districts? value) {
_selectedBillingDistricts = value; _selectedBillingDistricts = value;
_selectedBillingDistrictID = value!.id; _selectedBillingDistrictID = value!.id;
_selectedBillingDistrictValue = value!.district; _selectedBillingDistrictValue = value!.district;
// districtError = null; // districtError = null;
notifyListeners(); notifyListeners();
} }
set selectedBillingSubLocations(SubLocations? value) { set selectedBillingSubLocations(SubLocations? value) {
_selectedBillingSubLocations = value; _selectedBillingSubLocations = value;
_selectedBillingSubLocID = value!.id; _selectedBillingSubLocID = value!.id;
_selectedBillingSubLocValue = value!.subLocality!; _selectedBillingSubLocValue = value!.subLocality!;
// localityError = null; // localityError = null;
notifyListeners(); notifyListeners();
} }
set selectedBillingDistrictId(value) { set selectedBillingDistrictId(value) {
_selectedBillingDistrictID = value; _selectedBillingDistrictID = value;
notifyListeners(); notifyListeners();
} }
set selectedBillingDistrictValue(value) { set selectedBillingDistrictValue(value) {
_selectedBillingDistrictValue = value; _selectedBillingDistrictValue = value;
notifyListeners(); notifyListeners();
} }
set selectedBillingSubLocID(value) { set selectedBillingSubLocID(value) {
_selectedBillingSubLocID = value; _selectedBillingSubLocID = value;
notifyListeners(); notifyListeners();
} }
set selectedBillingSubLocValue(value) { set selectedBillingSubLocValue(value) {
_selectedBillingSubLocValue = value; _selectedBillingSubLocValue = value;
notifyListeners(); notifyListeners();
} }
set selecetdDispatchStates(States? value) { set selecetdDispatchStates(States? value) {
_selectedDispatchStates = value; _selectedDispatchStates = value;
_selectedDispatchStateID = value!.id; _selectedDispatchStateID = value!.id;
_selectedDispatchStateName = value!.name!; _selectedDispatchStateName = value!.name!;
notifyListeners(); notifyListeners();
} }
set selectedDispatchStateID(String? value) { set selectedDispatchStateID(String? value) {
_selectedDispatchStateID = value; _selectedDispatchStateID = value;
notifyListeners(); notifyListeners();
} }
set selectedDispatchStateName(String? value) { set selectedDispatchStateName(String? value) {
_selectedDispatchStateName = value; _selectedDispatchStateName = value;
notifyListeners(); notifyListeners();
} }
set selectedDispatchDistricts(Districts? value) { set selectedDispatchDistricts(Districts? value) {
_selectedDispatchDistricts = value; _selectedDispatchDistricts = value;
_selectedDispatchDistrictID = value!.id; _selectedDispatchDistrictID = value!.id;
_selectedDispatchDistrictValue = value!.district; _selectedDispatchDistrictValue = value!.district;
// districtError = null; // districtError = null;
notifyListeners(); notifyListeners();
} }
set selectedDispatchSubLocations(SubLocations? value) { set selectedDispatchSubLocations(SubLocations? value) {
_selectedDispatchSubLocations = value; _selectedDispatchSubLocations = value;
_selectedDispatchSubLocID = value!.id; _selectedDispatchSubLocID = value!.id;
_selectedDispatchSubLocValue = value!.subLocality!; _selectedDispatchSubLocValue = value!.subLocality!;
// localityError = null; // localityError = null;
notifyListeners(); notifyListeners();
} }
set selectedDispatchDistrictId(value) { set selectedDispatchDistrictId(value) {
_selectedDispatchDistrictID = value; _selectedDispatchDistrictID = value;
notifyListeners(); notifyListeners();
} }
set selectedDispatchDistrictValue(value) { set selectedDispatchDistrictValue(value) {
_selectedDispatchDistrictValue = value; _selectedDispatchDistrictValue = value;
notifyListeners(); notifyListeners();
} }
set selectedDispatchSubLocID(value) { set selectedDispatchSubLocID(value) {
_selectedDispatchSubLocID = value; _selectedDispatchSubLocID = value;
notifyListeners(); notifyListeners();
} }
set selectedDispatchSubLocValue(value) { set selectedDispatchSubLocValue(value) {
_selectedDispatchSubLocValue = value; _selectedDispatchSubLocValue = value;
notifyListeners(); notifyListeners();
} }
set selectedSaleProducts(SaleProducts? value) { set selectedSaleProducts(SaleProducts? value) {
_selectedSaleProducts = value; _selectedSaleProducts = value;
// _selectedSaleProductID = value!.id!; // _selectedSaleProductID = value!.id!;
// _selectedSaleProductName = value!.prodName; // _selectedSaleProductName = value!.prodName;
notifyListeners(); notifyListeners();
} }
set selectedSaleProductID(List<String?> value) { set selectedSaleProductID(List<String?> value) {
_selectedSaleProductID = value; _selectedSaleProductID = value;
notifyListeners(); notifyListeners();
} }
set selectedSaleProductName(String? value) { set selectedSaleProductName(String? value) {
_selectedSaleProductName = value; _selectedSaleProductName = value;
notifyListeners(); notifyListeners();
} }
set selectedUnloadingScope(String? value) { set selectedUnloadingScope(String? value) {
_selectedUnloadingScope = value; _selectedUnloadingScope = value;
notifyListeners(); notifyListeners();
} }
set selectedFreightScope(String? value) { set selectedFreightScope(String? value) {
_selectedFreightScope = value; _selectedFreightScope = value;
notifyListeners(); notifyListeners();
} }
set selectedErectionScope(String? value) { set selectedErectionScope(String? value) {
_selectedErectionScope = value; _selectedErectionScope = value;
notifyListeners(); notifyListeners();
} }
set selectedTpcStatus(String? value) { set selectedTpcStatus(String? value) {
_selectedTpcStatus = value; _selectedTpcStatus = value;
notifyListeners(); notifyListeners();
} }
set selectedTpcAgent(TpcList? value) { set selectedTpcAgent(TpcList? value) {
_selectedTpcAgent = value; _selectedTpcAgent = value;
_selectedTpcAgentID = value!.id; _selectedTpcAgentID = value!.id;
_selectedTpcAgentValue = value!.text; _selectedTpcAgentValue = value!.text;
notifyListeners(); notifyListeners();
} }
set selectedTpcAgentID(String? value) { set selectedTpcAgentID(String? value) {
_selectedTpcAgentID = value; _selectedTpcAgentID = value;
notifyListeners(); notifyListeners();
} }
set selectedTpcAgentValue(String? value) { set selectedTpcAgentValue(String? value) {
_selectedTpcAgentValue = value; _selectedTpcAgentValue = value;
notifyListeners(); notifyListeners();
} }
set accountDetails(AccountDetails value) { set accountDetails(AccountDetails value) {
_accountDetails = value; _accountDetails = value;
notifyListeners(); notifyListeners();
} }
set imagePath(File? value) { set imagePath(File? value) {
_imageName = value; _imageName = value;
notifyListeners(); notifyListeners();
} }
set imageFilePath(File? value) { set imageFilePath(File? value) {
_image = value; _image = value;
notifyListeners(); notifyListeners();
} }
set imagePicked(value) { set imagePicked(value) {
_imagePicked = value; _imagePicked = value;
notifyListeners(); notifyListeners();
} }
set formattedDate(String? value) { set formattedDate(String? value) {
_formattedDate = value; _formattedDate = value;
orderReceivedDateController.text = _formattedDate!; orderReceivedDateController.text = _formattedDate!;
dateError = null; dateError = null;
notifyListeners(); notifyListeners();
} }
void setDate(DateTime newDate) { void setDate(DateTime newDate) {
_date = newDate; _date = newDate;
_formattedDate = DateFormat('yyyy-MM-dd').format(newDate); _formattedDate = DateFormat('yyyy-MM-dd').format(newDate);
orderReceivedDateController.text = _formattedDate!; orderReceivedDateController.text = _formattedDate!;
dateError = null; dateError = null;
notifyListeners(); notifyListeners();
} }
double get basicAmount { dynamic get basicAmount {
double total = 0; double total = 0;
for (var controller in TaxableValueControllers) { for (var controller in TaxableValueControllers) {
total += double.tryParse(controller.text) ?? 0.0; total += double.tryParse(controller.text)?.round() ?? 0.0;
}
return total;
} }
basicAmountReadOnlyController.text = total.toStringAsFixed(2);
return total;
}
double get cgstAmount { dynamic get cgstAmount {
double total = 0; double total = 0;
for (int i = 0; i < ProductControllers.length; i++) { for (int i = 0; i < ProductControllers.length; i++) {
final taxableValue = final taxableValue =
double.tryParse(TaxableValueControllers[i].text) ?? 0.0; double.tryParse(TaxableValueControllers[i].text) ?? 0.0;
final cgst = double.tryParse(CGSTControllers[i].text) ?? 0.0; final cgst = double.tryParse(CGSTControllers[i].text) ?? 0.0;
total += (taxableValue * cgst) / 100; total += (taxableValue * cgst) / 100;
}
return total;
} }
cgstReadOnlyController.text = total.toStringAsFixed(2);
return total;
}
double get sgstAmount { dynamic get sgstAmount {
double total = 0; double total = 0;
for (int i = 0; i < ProductControllers.length; i++) { for (int i = 0; i < ProductControllers.length; i++) {
final taxableValue = final taxableValue =
double.tryParse(TaxableValueControllers[i].text) ?? 0.0; double.tryParse(TaxableValueControllers[i].text) ?? 0.0;
final sgst = double.tryParse(SGSTControllers[i].text) ?? 0.0; final sgst = double.tryParse(SGSTControllers[i].text) ?? 0.0;
total += (taxableValue * sgst) / 100; total += (taxableValue * sgst).round() / 100;
}
return total;
} }
sgstReadOnlyController.text = total.toStringAsFixed(2);
return total;
}
double get igstAmount { dynamic get igstAmount {
double total = 0; double total = 0;
for (int i = 0; i < ProductControllers.length; i++) { for (int i = 0; i < ProductControllers.length; i++) {
final taxableValue = final taxableValue =
double.tryParse(TaxableValueControllers[i].text) ?? 0.0; double.tryParse(TaxableValueControllers[i].text) ?? 0.0;
final igst = double.tryParse(IGSTControllers[i].text) ?? 0.0; final igst = double.tryParse(IGSTControllers[i].text) ?? 0.0;
total += (taxableValue * igst) / 100; total += (taxableValue * igst).round() / 100;
}
return total;
} }
igstReadOnlyController.text = total.toStringAsFixed(2);
return total;
}
double get totalAmount => basicAmount + cgstAmount + sgstAmount + igstAmount; dynamic get totalAmount {
double total = basicAmount + cgstAmount + sgstAmount + igstAmount;
totalReadOnlyAmountController.text = total.round().toStringAsFixed(2);
return total! ;
}
void addNewRow() { void addNewRow() {
ProductControllers.add(TextEditingController()); ProductControllers.add(TextEditingController());
PriceControllers.add(TextEditingController()); PriceControllers.add(TextEditingController());
QuantityControllers.add(TextEditingController(text: '1')); QuantityControllers.add(TextEditingController(text: '1'));
CGSTControllers.add(TextEditingController(text: '9')); CGSTControllers.add(TextEditingController(text: '9'));
SGSTControllers.add(TextEditingController(text: '9')); SGSTControllers.add(TextEditingController(text: '9'));
IGSTControllers.add(TextEditingController(text: '0')); IGSTControllers.add(TextEditingController(text: '0'));
TaxableValueControllers.add(TextEditingController()); TaxableValueControllers.add(TextEditingController());
selectedSaleProductID.add(null);
notifyListeners();
}
selectedSaleProductID.add(null); void removeRow(int index) {
if (index >= 0 && index < ProductControllers.length) {
ProductControllers[index].dispose();
PriceControllers[index].dispose();
QuantityControllers[index].dispose();
CGSTControllers[index].dispose();
SGSTControllers[index].dispose();
IGSTControllers[index].dispose();
TaxableValueControllers[index].dispose();
ProductControllers.removeAt(index);
PriceControllers.removeAt(index);
QuantityControllers.removeAt(index);
CGSTControllers.removeAt(index);
SGSTControllers.removeAt(index);
IGSTControllers.removeAt(index);
TaxableValueControllers.removeAt(index);
selectedSaleProductID.removeAt(index);
notifyListeners(); notifyListeners();
} }
}
void removeRow(int index) { void updateSelectedProduct(int index, SaleProducts? product) {
if (index >= 0 && index < ProductControllers.length) { if (index >= 0 && index < _saleProducts.length) {
ProductControllers[index].dispose(); _selectedSaleProducts = product;
PriceControllers[index].dispose(); _selectedSaleProductID[index] = product!.id;
QuantityControllers[index].dispose(); PriceControllers[index].text = product!.price!;
CGSTControllers[index].dispose(); updateRowCalculations(index);
SGSTControllers[index].dispose(); notifyListeners();
IGSTControllers[index].dispose();
TaxableValueControllers[index].dispose();
ProductControllers.removeAt(index);
PriceControllers.removeAt(index);
QuantityControllers.removeAt(index);
CGSTControllers.removeAt(index);
SGSTControllers.removeAt(index);
IGSTControllers.removeAt(index);
TaxableValueControllers.removeAt(index);
selectedSaleProductID.removeAt(index);
notifyListeners();
}
} }
}
void updateSelectedProduct(int index, SaleProducts? product) { void updateRowCalculations(int index) {
if (index >= 0 && index < _saleProducts.length) { if (index >= 0 && index < PriceControllers.length) {
_selectedSaleProductID[index] = product!.id; final inclusivePrice =
PriceControllers[index].text = product!.price!; double.tryParse(PriceControllers[index].text) ?? 0.0;
updateRowCalculations(index); final quantity = double.tryParse(QuantityControllers[index].text) ?? 1.0;
notifyListeners(); final cgst = double.tryParse(CGSTControllers[index].text) ?? 0.0;
} final sgst = double.tryParse(SGSTControllers[index].text) ?? 0.0;
final igst = double.tryParse(IGSTControllers[index].text) ?? 0.0;
final totalTaxRate = (cgst + sgst + igst) / 100;
// Calculate taxable value per unit
final taxableValuePerUnit = inclusivePrice / (1 + totalTaxRate);
// Total taxable value = taxable value per unit * quantity
final totalTaxableValue = taxableValuePerUnit * quantity;
TaxableValueControllers[index].text = totalTaxableValue.toStringAsFixed(
0,
);
notifyListeners();
} }
}
void updateRowCalculations(int index) {
if (index >= 0 && index < PriceControllers.length) {
final inclusivePrice =
double.tryParse(PriceControllers[index].text) ?? 0.0;
final quantity = double.tryParse(QuantityControllers[index].text) ?? 1.0;
final cgst = double.tryParse(CGSTControllers[index].text) ?? 0.0;
final sgst = double.tryParse(SGSTControllers[index].text) ?? 0.0;
final igst = double.tryParse(IGSTControllers[index].text) ?? 0.0;
final totalTaxRate = (cgst + sgst + igst) / 100;
// Calculate taxable value per unit
final taxableValuePerUnit = inclusivePrice / (1 + totalTaxRate);
// Total taxable value = taxable value per unit * quantity
final totalTaxableValue = taxableValuePerUnit * quantity;
TaxableValueControllers[index].text = totalTaxableValue.toStringAsFixed(
0,
);
notifyListeners();
}
}
Map<String, dynamic> getFormData() { Map<String, dynamic> getFormData() {
final List<Map<String, dynamic>> orders = []; final List<Map<String, dynamic>> orders = [];
...@@ -1320,6 +1337,11 @@ class Addorderprovider extends ChangeNotifier { ...@@ -1320,6 +1337,11 @@ class Addorderprovider extends ChangeNotifier {
TotalPriceControllers.clear(); TotalPriceControllers.clear();
TaxableValueControllers.forEach((action) => action.dispose()); TaxableValueControllers.forEach((action) => action.dispose());
TaxableValueControllers.clear(); TaxableValueControllers.clear();
basicAmountReadOnlyController.clear();
cgstReadOnlyController.clear();
sgstReadOnlyController.clear();
igstReadOnlyController.clear();
totalReadOnlyAmountController.clear();
_image = null; _image = null;
_imageName = null; _imageName = null;
......
...@@ -345,6 +345,7 @@ class Addpaymentprovider extends ChangeNotifier{ ...@@ -345,6 +345,7 @@ class Addpaymentprovider extends ChangeNotifier{
Future<void> ordersAddPaymentSelectOrderAPIFunction(context,accountID) async { Future<void> ordersAddPaymentSelectOrderAPIFunction(context,accountID) async {
try{ try{
print("ACID:${accountID}");
final provider = Provider.of<HomescreenNotifier>(context,listen: false); final provider = Provider.of<HomescreenNotifier>(context,listen: false);
final data = await ApiCalling.AddOrderPaymentSelectOrderAPI(provider.empId, provider.session, accountID); final data = await ApiCalling.AddOrderPaymentSelectOrderAPI(provider.empId, provider.session, accountID);
if(data!=null){ if(data!=null){
......
...@@ -4,177 +4,334 @@ import 'package:generp/Utils/commonServices.dart'; ...@@ -4,177 +4,334 @@ import 'package:generp/Utils/commonServices.dart';
import 'package:generp/services/api_calling.dart'; import 'package:generp/services/api_calling.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../Models/ordersModels/AddOrderPaymentSelectOrderResponse.dart'; import '../../Models/ordersModels/EditPaymentDetailsAdjustedOrdersViewResponse.dart';
import 'addPaymentProvider.dart'; import 'addPaymentProvider.dart';
class Editpaymentprovider extends ChangeNotifier{ class Editpaymentprovider extends ChangeNotifier {
bool _submitLoading = false; bool _submitLoading = false;
List<PaidList> _paidList = [];
List<EditOrderList> _editOrderList = [];
PaidList? _selectedPaidList;
EditOrderList? _selectedOrderList;
List<TextEditingController> editOrderAmountControllers = [];
List<TextEditingController> editOrderAmountControllers2 = [];
List<String?> _selectedPaidOrderIDs = [];
List<String?> _selectedOrderIDs = [];
List<Map<String, String>> _insertAmounts = [];
List<Map<String, String>> _updateAmounts = [];
List<PaidList> get paidList => _paidList;
List<EditOrderList> get editOrderList => _editOrderList;
PaidList? get selectedPaidList => _selectedPaidList;
EditOrderList? get selectedOrderList => _selectedOrderList;
List<String?> get selectedPaidOrderIDs => _selectedPaidOrderIDs;
List<String?> get selectedOrderIDs => _selectedOrderIDs;
bool get submitLoading => _submitLoading; bool get submitLoading => _submitLoading;
set submitLoading(bool value){ set selectedPaidOrderIDs(List<String?> value) {
_selectedPaidOrderIDs = value;
notifyListeners();
}
set selectedOrderIDs(List<String?> value) {
_selectedOrderIDs = value;
notifyListeners();
}
set selectedPaidList(PaidList? value) {
_selectedPaidList = value;
notifyListeners();
}
set selectedOrderList(EditOrderList? value) {
_selectedOrderList = value;
notifyListeners();
}
set submitLoading(bool value) {
_submitLoading = value; _submitLoading = value;
notifyListeners(); notifyListeners();
} }
List<OrderList> _orderList = [];
List<Map<String, String>> _selectedOrders = [];
OrderList? _selectedOrderLists;
List<String?> _selectedOrderIds = [];
List<TextEditingController> orderAmountControllers = [];
TextEditingController orderAdjustedAmountController = TextEditingController();
List<Map<String, String>?> _rowMetadata = []; void updateSelectedPaidOrderId(int index, PaidList? value) {
List<OrderList> get orderList => _orderList; _selectedPaidList = value!;
OrderList? get selectedOrderLists => _selectedOrderLists;
set selectedOrderLists(OrderList? value){ _selectedPaidOrderIDs[index] = value!.orderId;
_selectedOrderLists = value; print(_selectedPaidOrderIDs[index]);
notifyListeners(); notifyListeners();
} }
Future<void> ordersAddPaymentSelectOrderAPIFunction(context, accountID) async {
try { void updateSelectedOrderId(int index, EditOrderList? value) {
final provider = Provider.of<HomescreenNotifier>(context, listen: false); _selectedOrderList = value!;
final data = await ApiCalling.AddOrderPaymentSelectOrderAPI( print(index);
provider.empId, provider.session, accountID); print(value);
if (data != null) { print(value!.orderId);
if (data.error == "0") { if (index > 0) {
_orderList = data.orderList!; _selectedOrderIDs[index] = value!.orderId;
notifyListeners(); print(_selectedOrderIDs[index]);
} else { } else {
print("API Error: ${data.error}"); _selectedOrderIDs[0] = value!.orderId;
} print(_selectedOrderIDs[0]);
} else {
print("API returned null data");
}
} catch (e, s) {
print("Error: $e, Stack: $s");
} }
notifyListeners();
} }
void addNewRow() { void editAddNewRow() {
final controller = TextEditingController(); editOrderAmountControllers.add(TextEditingController());
controller.addListener(_updateAdjustedAmount); _selectedPaidOrderIDs.add(null);
orderAmountControllers.add(controller);
_selectedOrderIds.add(null);
_rowMetadata.add(null); // New row, no metadata
notifyListeners(); notifyListeners();
} }
void addRowWithMetadata(Map<String, String> metadata) { void editAddNewRow2() {
final controller = TextEditingController(); editOrderAmountControllers2.add(TextEditingController());
controller.addListener(_updateAdjustedAmount); _selectedOrderIDs.add(null);
orderAmountControllers.add(controller);
_selectedOrderIds.add(null);
_rowMetadata.add(metadata); // Store metadata for existing order
notifyListeners(); notifyListeners();
} }
void removeRow(int index) { void editRemoveRow(int index) {
orderAmountControllers[index].removeListener(_updateAdjustedAmount); editOrderAmountControllers[index].dispose();
orderAmountControllers[index].dispose(); editOrderAmountControllers.removeAt(index);
orderAmountControllers.removeAt(index); _selectedPaidOrderIDs.removeAt(index);
_selectedOrderIds.removeAt(index);
_rowMetadata.removeAt(index);
_updateAdjustedAmount();
notifyListeners(); notifyListeners();
} }
void _updateAdjustedAmount() { void editRemoveRow2(int index) {
int tempAdjustAmount = 0; editOrderAmountControllers2[index].dispose();
for (int i = 0; i < orderAmountControllers.length; i++) { editOrderAmountControllers2.removeAt(index);
final text = orderAmountControllers[i].text; _selectedOrderIDs.removeAt(index);
if (_selectedOrderIds[i] != null && text.isNotEmpty) {
tempAdjustAmount += int.tryParse(text) ?? 0;
}
}
orderAdjustedAmountController.text = tempAdjustAmount.toString();
notifyListeners(); notifyListeners();
} }
// List<Map<String, String>> getFormData() {
// _insertAmounts = [];
// Map<String, String> latestEntries = {};
// for (int i = 0; i < _selectedOrderIDs.length; i++) {
// final rowData = {
// "selected_order_id": _selectedOrderIDs.toString(),
// "insert_amount": editOrderAmountControllers2[i].text.toString(),
//
//
// };
// _updateAmounts.add(rowData);
// }
//
// _insertAmounts = latestEntries.entries
// .map((entry) =>
// {
// "selected_order_id": entry.key,
// "insert_amount": entry.value,
// })
// .toList();
//
// print("Form Data: $_insertAmounts");
// notifyListeners();
// return _insertAmounts;
// }
List<Map<String, String>> getFormData() { List<Map<String, String>> getFormData() {
_selectedOrders = []; _insertAmounts = [];
int tempAdjustAmount = 0; Map<String, String> latestEntries = {};
for (int i = 0; i < editOrderAmountControllers2.length; i++) {
for (int i = 0; i < orderAmountControllers.length; i++) { if (_selectedOrderIDs[i] != null &&
if (_selectedOrderIds[i] != null && orderAmountControllers[i].text.isNotEmpty) { editOrderAmountControllers2[i].text.isNotEmpty) {
final amount = orderAmountControllers[i].text; latestEntries[_selectedOrderIDs[i]!] =
tempAdjustAmount += int.parse(double.parse(amount).round().toString()); editOrderAmountControllers2[i].text;
if (_rowMetadata[i] != null) {
// Existing order from widget.values
_selectedOrders.add({
"order_id": _rowMetadata[i]!["order_id"]!,
"order_payment_id": _rowMetadata[i]!["order_payment_id"]!,
"selected_order_id": _selectedOrderIds[i]!,
"updateable_payment_amount": amount,
});
} else {
// New row added by user
_selectedOrders.add({
"selected_order_id": _selectedOrderIds[i]!,
"insert_amount": amount,
});
}
} }
} }
print("Form Data: $_selectedOrders"); _insertAmounts =
orderAdjustedAmountController.text = tempAdjustAmount.toString(); latestEntries.entries
print("Total Adjusted Amount: $tempAdjustAmount"); .map(
(entry) => {
"selected_order_id": entry.key,
"insert_amount": entry.value,
},
)
.toList();
print("Form Data: $_insertAmounts");
notifyListeners(); notifyListeners();
return _selectedOrders; return _insertAmounts;
} }
Future<void> editPaymentDetailsAPIFunction(context,payment_id, description, payment_type, ref_no, payment_date, amount) async {
try{ // List<Map<String, String>> getFormData() {
// _insertAmounts = [];
// for (int i = 0; i < _selectedOrderIDs.length; i++) {
// if (_selectedOrderIDs[i] != null && editOrderAmountControllers2[i].text.isNotEmpty) {
// final rowData = {
// "selected_order_id": _selectedOrderIDs[i]!,
// "insert_amount": editOrderAmountControllers2[i].text,
// };
// _insertAmounts.add(rowData);
// }
// }
// print("Form Data: $_insertAmounts");
// notifyListeners();
// return _insertAmounts;
// }
List<Map<String, String>> getFormDataUpdate() {
_updateAmounts = [];
for (int i = 0; i < _paidList.length; i++) {
final rowData = {
"order_id": _paidList[i]!.orderId.toString(),
"order_payment_id": _paidList[i]!.orderPaymentId.toString(),
"selected_order_id": _paidList[i]!.orderId.toString(),
"updateable_payment_amount": _paidList[i]!.adjustedAmount.toString(),
};
_updateAmounts.add(rowData);
}
print("Form Data: $_updateAmounts");
notifyListeners();
return _updateAmounts;
}
Future<void> editPaymentDetailsAPIFunction(
context,
payment_id,
description,
payment_type,
ref_no,
payment_date,
amount,
) async {
try {
_submitLoading = true; _submitLoading = true;
notifyListeners(); notifyListeners();
final provider = Provider.of<HomescreenNotifier>(context,listen: false); final provider = Provider.of<HomescreenNotifier>(context, listen: false);
final addOrderProvider = Provider.of<Addpaymentprovider>(context,listen: false); final addOrderProvider = Provider.of<Addpaymentprovider>(
final data = await ApiCalling.ordersEditPaymentDetailsAPI(provider.empId, provider.session, payment_id, description, payment_type, ref_no, payment_date, amount); context,
if(data!=null){ listen: false,
if(data.error=="0"){ );
final data = await ApiCalling.ordersEditPaymentDetailsAPI(
provider.empId,
provider.session,
payment_id,
description,
payment_type,
ref_no,
payment_date,
amount,
);
if (data != null) {
if (data.error == "0") {
_submitLoading = false; _submitLoading = false;
addOrderProvider.resetForm(); addOrderProvider.resetForm();
Navigator.pop(context); Navigator.pop(context,true);
toast(context, data.message); toast(context, data.message);
notifyListeners(); notifyListeners();
}else if(data.error=="1"){ } else if (data.error == "1") {
_submitLoading = false; _submitLoading = false;
notifyListeners(); notifyListeners();
} }
}else{ } else {
_submitLoading = false; _submitLoading = false;
notifyListeners(); notifyListeners();
} }
}catch(e,s){ } catch (e, s) {
_submitLoading = false; _submitLoading = false;
notifyListeners(); notifyListeners();
} }
} }
void updateSelectedOrderId(int index, OrderList? value) { Future<void> editPaymentDetailsAdjustedOrdersViewAPIFunction(
if (value != null) { context,
_selectedOrderLists = value; payment_id,
_selectedOrderIds[index] = value.orderId; ) async {
print("Selected Order ID at index $index: ${_selectedOrderIds[index]}"); try {
print("payment_id: ${payment_id}");
final provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data =
await ApiCalling.ordersEditPaymentDetailsAdjustedOrdersViewAPI(
provider.empId,
provider.session,
payment_id,
);
if (data != null) {
if (data.error == "0") {
_editOrderList = data.editOrderList!;
_paidList = data.paidList!;
getFormDataUpdate();
notifyListeners();
} else if (data.error == "1") {}
} else {}
} catch (e, s) {}
}
Future<void> editPaymentDetailsAdjustedOrdersUpdateAPIFunction(
context,
payment_id,
update_amounts,
insert_amounts,
) async {
try {
_submitLoading = true;
notifyListeners();
final provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data =
await ApiCalling.ordersEditPaymentDetailsAdjustedOrdersUpdateAPI(
provider.empId,
provider.session,
payment_id,
update_amounts,
insert_amounts,
);
if (data != null) {
if (data.error == "0") {
_submitLoading = false;
resetForm();
Navigator.pop(context,true);
toast(context, data.message);
notifyListeners();
} else if (data.error == "1") {
_submitLoading = false;
notifyListeners();
}
} else {
_submitLoading = false;
notifyListeners();
}
} catch (e, s) {
_submitLoading = false;
notifyListeners(); notifyListeners();
} }
} }
void resetForm() { void checkDropdownselected() {
for (var controller in orderAmountControllers) { if (_selectedOrderList != null &&
controller.removeListener(_updateAdjustedAmount); !_editOrderList.contains(_selectedOrderList)) {
controller.dispose(); selectedOrderList = null;
_selectedOrderIDs.clear();
}
if (_selectedPaidList != null && !_paidList.contains(_selectedPaidList)) {
_selectedPaidList = null;
_selectedPaidOrderIDs.clear();
} }
orderAmountControllers.clear();
_selectedOrderIds.clear();
_rowMetadata.clear();
_selectedOrders.clear();
orderAdjustedAmountController.clear();
submitLoading = false;
notifyListeners();
} }
void resetForm() {
_submitLoading =false;
checkDropdownselected();
_selectedPaidList = null;
_selectedOrderList = null;
_selectedOrderIDs.clear();
_selectedPaidOrderIDs.clear();
editOrderAmountControllers.forEach((controller) => controller.dispose());
editOrderAmountControllers2.forEach((controller) => controller.dispose());
editOrderAmountControllers.clear();
editOrderAmountControllers2.clear();
}
} }
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'GlobalConstants.dart'; import 'GlobalConstants.dart';
import 'app_colors.dart'; import 'app_colors.dart';
...@@ -101,6 +102,119 @@ Widget Emptywidget(BuildContext context){ ...@@ -101,6 +102,119 @@ Widget Emptywidget(BuildContext context){
); );
} }
Widget TextWidget(context, text) {
return Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(text),
);
}
Widget errorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(
context,
controller,
hintText,
Function(String)? onChanged,
inputtype,
readonly,
inputFormatters,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
readOnly: readonly,
keyboardType: inputtype,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
inputFormatters:
inputFormatters != null
? [FilteringTextInputFormatter.digitsOnly]
: [],
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
Widget textControllerReadonlyWidget(
context,
controller,
hintText,
Function(String)? onChanged,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: Color(0xFFE9E9E9),
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
readOnly: true,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
style: TextStyle(color: Color(0xFF818181), fontSize: 14),
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
class MyNavigatorObserver extends NavigatorObserver { class MyNavigatorObserver extends NavigatorObserver {
@override @override
void didPush(Route route, Route? previousRoute) { void didPush(Route route, Route? previousRoute) {
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/commonProvider/accountsListProvider.dart'; import 'package:generp/Notifiers/commonProvider/accountsListProvider.dart';
import 'package:generp/Utils/app_colors.dart'; import 'package:generp/Utils/app_colors.dart';
...@@ -287,10 +288,10 @@ class _AccountslistState extends State<Accountslist> { ...@@ -287,10 +288,10 @@ class _AccountslistState extends State<Accountslist> {
), ),
textControllerWidget(context, provider.companyNameController, "Company Name", (p0) { textControllerWidget(context, provider.companyNameController, "Company Name", (p0) {
},), },TextInputType.text,false,null),
textControllerWidget(context, provider.mobileNumberController, "Mobile Number", (p0) { textControllerWidget(context, provider.mobileNumberController, "Mobile Number", (p0) {
},), },TextInputType.number,false,FilteringTextInputFormatter.digitsOnly),
InkResponse( InkResponse(
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);
...@@ -330,50 +331,7 @@ class _AccountslistState extends State<Accountslist> { ...@@ -330,50 +331,7 @@ class _AccountslistState extends State<Accountslist> {
); );
} }
Widget textControllerWidget(
context,
controller,
hintText,
Function(String)? onChanged,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
Future<bool> _onBackPressed(BuildContext context) async { Future<bool> _onBackPressed(BuildContext context) async {
Provider.of<Accountslistprovider>(context, listen: false).pageNum = 1; Provider.of<Accountslistprovider>(context, listen: false).pageNum = 1;
Navigator.pop(context, true); Navigator.pop(context, true);
......
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/commonProvider/accountsListProvider.dart'; import 'package:generp/Notifiers/commonProvider/accountsListProvider.dart';
import 'package:generp/Utils/app_colors.dart'; import 'package:generp/Utils/app_colors.dart';
...@@ -141,7 +142,7 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -141,7 +142,7 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
], ],
), ),
), ),
ErrorWidget(context,provider.accountError), errorWidget(context,provider.accountError),
textControllerWidget( textControllerWidget(
context, context,
provider.nameController, provider.nameController,
...@@ -153,8 +154,8 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -153,8 +154,8 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
"name", "name",
provider.nameController.text, provider.nameController.text,
); );
}, },TextInputType.text,false,null
),ErrorWidget(context,provider.nameError), ),errorWidget(context,provider.nameError),
textControllerWidget( textControllerWidget(
context, context,
provider.mobileController, provider.mobileController,
...@@ -166,9 +167,9 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -166,9 +167,9 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
"mob1", "mob1",
provider.mobileController.text, provider.mobileController.text,
); );
}, },TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context,provider.mobileError), errorWidget(context,provider.mobileError),
Text("State"), Text("State"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
child: Row( child: Row(
...@@ -258,7 +259,7 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -258,7 +259,7 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
], ],
), ),
), ),
ErrorWidget(context,provider.stateError), errorWidget(context,provider.stateError),
Text("District"), Text("District"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
child: Row( child: Row(
...@@ -349,7 +350,7 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -349,7 +350,7 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
], ],
), ),
), ),
ErrorWidget(context,provider.districtError), errorWidget(context,provider.districtError),
Text("Sub Locality"), Text("Sub Locality"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
child: Row( child: Row(
...@@ -436,14 +437,14 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -436,14 +437,14 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
], ],
), ),
), ),
ErrorWidget(context,provider.localityError), errorWidget(context,provider.localityError),
textControllerWidget( textControllerWidget(
context, context,
provider.addressController, provider.addressController,
"Enter Address", "Enter Address",
provider.updateAddress, provider.updateAddress,TextInputType.text,false,null
), ),
ErrorWidget(context,provider.addressError), errorWidget(context,provider.addressError),
], ],
), ),
), ),
...@@ -486,44 +487,44 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -486,44 +487,44 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
context, context,
provider.bankNameController, provider.bankNameController,
"Bank Name", "Bank Name",
provider.updateBankName, provider.updateBankName,TextInputType.text,false,null
), ),
ErrorWidget(context,provider.banknameError), errorWidget(context,provider.banknameError),
textControllerWidget( textControllerWidget(
context, context,
provider.branchNameController, provider.branchNameController,
"Bank Branch", "Bank Branch",
provider.updateBankBranch, provider.updateBankBranch,TextInputType.text,false,null
), ),
ErrorWidget(context,provider.bankBranchError), errorWidget(context,provider.bankBranchError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankIfscCotroller, provider.bankIfscCotroller,
"Bank IFSC", "Bank IFSC",
provider.updateIFSC, provider.updateIFSC,TextInputType.text,false,null
), ),
ErrorWidget(context,provider.bankIFSCError), errorWidget(context,provider.bankIFSCError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankHolderNameController, provider.bankHolderNameController,
"Bank Holder Name", "Bank Holder Name",
provider.updateHolder, provider.updateHolder,TextInputType.text,false,null
), ),
ErrorWidget(context,provider.bankHolderNameError), errorWidget(context,provider.bankHolderNameError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankAcNumberController, provider.bankAcNumberController,
"Bank Account Number", "Bank Account Number",
provider.updateNumber, provider.updateNumber,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context,provider.bankAcNumberError), errorWidget(context,provider.bankAcNumberError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankUpiController, provider.bankUpiController,
"Bank UPI ID", "Bank UPI ID",
provider.updateUPI, provider.updateUPI,TextInputType.text,false,null
), ),
ErrorWidget(context,provider.upiError), errorWidget(context,provider.upiError),
], ],
), ),
), ),
...@@ -546,16 +547,16 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -546,16 +547,16 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
context, context,
provider.contactPersonController, provider.contactPersonController,
"Contact Person Name", "Contact Person Name",
provider.updateContactPerson, provider.updateContactPerson,TextInputType.text,false,null
), ),
ErrorWidget(context,provider.contactPersonError), errorWidget(context,provider.contactPersonError),
textControllerWidget( textControllerWidget(
context, context,
provider.contectPersonDesignationController, provider.contectPersonDesignationController,
"Contact Person Designation", "Contact Person Designation",
provider.updateDesignation, provider.updateDesignation,TextInputType.text,false,null
), ),
ErrorWidget(context,provider.desigantionError), errorWidget(context,provider.desigantionError),
textControllerWidget( textControllerWidget(
context, context,
provider.contectPersonAltMobController, provider.contectPersonAltMobController,
...@@ -563,23 +564,23 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -563,23 +564,23 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
(p0) { (p0) {
provider.updateAltMobile(p0); provider.updateAltMobile(p0);
provider.checkInputsAPI(context, "mob2", provider.contectPersonAltMobController.text); provider.checkInputsAPI(context, "mob2", provider.contectPersonAltMobController.text);
}, },TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context,provider.altMobError), errorWidget(context,provider.altMobError),
textControllerWidget( textControllerWidget(
context, context,
provider.contectPersonTeleController, provider.contectPersonTeleController,
"Telephone Number", "Telephone Number",
provider.updateTeleMobile, provider.updateTeleMobile,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context,provider.teleError), errorWidget(context,provider.teleError),
textControllerWidget( textControllerWidget(
context, context,
provider.contectPersonMailController, provider.contectPersonMailController,
"Customer Mail ID", "Customer Mail ID",
provider.updateMail, provider.updateMail,TextInputType.text,false,null
), ),
ErrorWidget(context,provider.mailError), errorWidget(context,provider.mailError),
], ],
), ),
) )
...@@ -623,54 +624,5 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -623,54 +624,5 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
}, },
); );
} }
Widget ErrorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(
context,
controller,
hintText,
Function(String)? onChanged,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
} }
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/screens/notifierExports.dart'; import 'package:generp/screens/notifierExports.dart';
import 'package:generp/Utils/app_colors.dart'; import 'package:generp/Utils/app_colors.dart';
...@@ -426,13 +427,13 @@ class _PaymentrequestionlistdetailsState ...@@ -426,13 +427,13 @@ class _PaymentrequestionlistdetailsState
context, context,
approvedAmount, approvedAmount,
"Enter Approved Amount", "Enter Approved Amount",
(p0) {}, (p0) {},TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
textControllerWidget( textControllerWidget(
context, context,
remarks, remarks,
"Enter Remarks", "Enter Remarks",
(p0) {}, (p0) {},TextInputType.text,false,null
), ),
TextWidget(context, "Proposed Payment Account"), TextWidget(context, "Proposed Payment Account"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
...@@ -628,7 +629,7 @@ class _PaymentrequestionlistdetailsState ...@@ -628,7 +629,7 @@ class _PaymentrequestionlistdetailsState
context, context,
remarks, remarks,
"Enter Remarks", "Enter Remarks",
(p0) {}, (p0) {},TextInputType.text,false,null
), ),
InkWell( InkWell(
onTap: () { onTap: () {
...@@ -824,14 +825,14 @@ class _PaymentrequestionlistdetailsState ...@@ -824,14 +825,14 @@ class _PaymentrequestionlistdetailsState
context, context,
paymentReferenceNumber, paymentReferenceNumber,
"Enter Payment Reference Number", "Enter Payment Reference Number",
(p0) {}, (p0) {},TextInputType.text,false,null
), ),
textControllerWidget( textControllerWidget(
context, context,
remarks, remarks,
"Enter Remarks", "Enter Remarks",
(p0) {}, (p0) {},TextInputType.text,false,null
), ),
InkResponse( InkResponse(
...@@ -1087,115 +1088,7 @@ class _PaymentrequestionlistdetailsState ...@@ -1087,115 +1088,7 @@ class _PaymentrequestionlistdetailsState
); );
} }
Widget TextWidget(context, text) {
return Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(text),
);
}
Widget ErrorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(
context,
controller,
hintText,
Function(String)? onChanged,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height:
hintText == "Enter Description" || hintText == "Enter Remarks"
? 150
: 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines:
hintText == "Enter Description" || hintText == "Enter Remarks"
? 60
: 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
Widget textControllerReadonlyWidget(
context,
controller,
hintText,
Function(String)? onChanged,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: Color(0xFFE9E9E9),
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
readOnly: true,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
style: TextStyle(color: Color(0xFF818181), fontSize: 14),
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
} }
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Models/financeModels/addReceiptPaymentResponse.dart'; import 'package:generp/Models/financeModels/addReceiptPaymentResponse.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
...@@ -147,7 +148,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> { ...@@ -147,7 +148,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
], ],
), ),
), ),
ErrorWidget(context, provider.selectAccountError), errorWidget(context, provider.selectAccountError),
TextWidget(context, "Payment Account"), TextWidget(context, "Payment Account"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
child: Row( child: Row(
...@@ -242,15 +243,15 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> { ...@@ -242,15 +243,15 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
], ],
), ),
), ),
ErrorWidget(context, provider.selectPaymentAccountError), errorWidget(context, provider.selectPaymentAccountError),
textControllerWidget( textControllerWidget(
context, context,
provider.amountController, provider.amountController,
"Enter Amount", "Enter Amount",
provider.updateAmount, provider.updateAmount,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context, provider.amountError), errorWidget(context, provider.amountError),
///payment date toBE ///payment date toBE
TextWidget(context, "Receipt Date"), TextWidget(context, "Receipt Date"),
GestureDetector( GestureDetector(
...@@ -300,7 +301,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> { ...@@ -300,7 +301,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
], ],
), ),
), ),
ErrorWidget(context, provider.dateError), errorWidget(context, provider.dateError),
TextWidget(context, "Select Payment Mode"), TextWidget(context, "Select Payment Mode"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
...@@ -392,7 +393,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> { ...@@ -392,7 +393,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
], ],
), ),
), ),
ErrorWidget(context, provider.paymentModeError), errorWidget(context, provider.paymentModeError),
if ([ if ([
"Cheque", "Cheque",
"RTGS", "RTGS",
...@@ -404,61 +405,61 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> { ...@@ -404,61 +405,61 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
context, context,
provider.bankNameController, provider.bankNameController,
"Enter Bank Name", "Enter Bank Name",
provider.updateBankName, provider.updateBankName,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.bankNameError), errorWidget(context, provider.bankNameError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankBranchController, provider.bankBranchController,
"Enter Bank Branch", "Enter Bank Branch",
provider.updateBankBranch, provider.updateBankBranch,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.bankBranchError), errorWidget(context, provider.bankBranchError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankAccNumberController, provider.bankAccNumberController,
"Enter Account Number", "Enter Account Number",
provider.updateNumber, provider.updateNumber,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context, provider.bankNumberError), errorWidget(context, provider.bankNumberError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankIfscController, provider.bankIfscController,
"Enter Bank IFSC", "Enter Bank IFSC",
provider.updateIFSC, provider.updateIFSC,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.bankIFSCError), errorWidget(context, provider.bankIFSCError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankAcHolderController, provider.bankAcHolderController,
"Enter Bank Account Holder Name", "Enter Bank Account Holder Name",
provider.updateHolder, provider.updateHolder,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.bankHolderError), errorWidget(context, provider.bankHolderError),
] else if (provider.paymentModeValue == "UPI") ... ] else if (provider.paymentModeValue == "UPI") ...
[ [
textControllerWidget( textControllerWidget(
context, context,
provider.amountController, provider.amountController,
"Enter UPI ID", "Enter UPI ID",
provider.updateUPI, provider.updateUPI,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.UPIError), errorWidget(context, provider.UPIError),
], ],
textControllerWidget( textControllerWidget(
context, context,
provider.paymentReferenceController, provider.paymentReferenceController,
"Enter Payment Reference Number", "Enter Payment Reference Number",
provider.updatereference, provider.updatereference,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.paymentreferenceError), errorWidget(context, provider.paymentreferenceError),
textControllerWidget( textControllerWidget(
context, context,
provider.descController, provider.descController,
"Enter Description", "Enter Description",
provider.updateDescription, provider.updateDescription,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.descriptionError), errorWidget(context, provider.descriptionError),
InkResponse( InkResponse(
onTap: () { onTap: () {
_showAttachmentSheet(context); _showAttachmentSheet(context);
...@@ -602,64 +603,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> { ...@@ -602,64 +603,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
), ),
); );
} }
Widget TextWidget(context, text) {
return Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(text),
);
}
Widget ErrorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(
context,
controller,
hintText,
Function(String)? onChanged,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
Future<void> _showAttachmentSheet(BuildContext context) { Future<void> _showAttachmentSheet(BuildContext context) {
return showModalBottomSheet( return showModalBottomSheet(
......
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/financeProvider/RequestionListProvider.dart'; import 'package:generp/Notifiers/financeProvider/RequestionListProvider.dart';
import 'package:generp/Utils/app_colors.dart'; import 'package:generp/Utils/app_colors.dart';
...@@ -155,7 +156,7 @@ class _DirectpaymentrequesitionlistState ...@@ -155,7 +156,7 @@ class _DirectpaymentrequesitionlistState
], ],
), ),
), ),
ErrorWidget(context, provider.selectDirectAccountError), errorWidget(context, provider.selectDirectAccountError),
TextWidget(context, "Payment Account"), TextWidget(context, "Payment Account"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
child: Row( child: Row(
...@@ -254,7 +255,7 @@ class _DirectpaymentrequesitionlistState ...@@ -254,7 +255,7 @@ class _DirectpaymentrequesitionlistState
], ],
), ),
), ),
ErrorWidget( errorWidget(
context, context,
provider.selectDirectPaymentAccountError, provider.selectDirectPaymentAccountError,
), ),
...@@ -262,9 +263,9 @@ class _DirectpaymentrequesitionlistState ...@@ -262,9 +263,9 @@ class _DirectpaymentrequesitionlistState
context, context,
provider.amountController, provider.amountController,
"Enter Amount", "Enter Amount",
provider.updateAmount, provider.updateAmount,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context, provider.amountError), errorWidget(context, provider.amountError),
///payment date toBE ///payment date toBE
TextWidget(context, "Enter Date"), TextWidget(context, "Enter Date"),
...@@ -316,7 +317,7 @@ class _DirectpaymentrequesitionlistState ...@@ -316,7 +317,7 @@ class _DirectpaymentrequesitionlistState
], ],
), ),
), ),
ErrorWidget(context, provider.dateError), errorWidget(context, provider.dateError),
TextWidget(context, "Select Payment Mode"), TextWidget(context, "Select Payment Mode"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
child: Row( child: Row(
...@@ -411,7 +412,7 @@ class _DirectpaymentrequesitionlistState ...@@ -411,7 +412,7 @@ class _DirectpaymentrequesitionlistState
], ],
), ),
), ),
ErrorWidget(context, provider.selectDirectPaymentError), errorWidget(context, provider.selectDirectPaymentError),
if ([ if ([
"Cheque", "Cheque",
"RTGS", "RTGS",
...@@ -422,60 +423,60 @@ class _DirectpaymentrequesitionlistState ...@@ -422,60 +423,60 @@ class _DirectpaymentrequesitionlistState
context, context,
provider.bankNameController, provider.bankNameController,
"Enter Bank Name", "Enter Bank Name",
provider.updateBankName, provider.updateBankName,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.bankNameError), errorWidget(context, provider.bankNameError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankBranchController, provider.bankBranchController,
"Enter Bank Branch", "Enter Bank Branch",
provider.updateBankBranch, provider.updateBankBranch,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.bankBranchError), errorWidget(context, provider.bankBranchError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankAccNumberController, provider.bankAccNumberController,
"Enter Account Number", "Enter Account Number",
provider.updateNumber, provider.updateNumber,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context, provider.bankNumberError), errorWidget(context, provider.bankNumberError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankIfscController, provider.bankIfscController,
"Enter Bank IFSC", "Enter Bank IFSC",
provider.updateIFSC, provider.updateIFSC,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.bankIFSCError), errorWidget(context, provider.bankIFSCError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankAcHolderController, provider.bankAcHolderController,
"Enter Bank Account Holder Name", "Enter Bank Account Holder Name",
provider.updateHolder, provider.updateHolder,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.bankHolderError), errorWidget(context, provider.bankHolderError),
] else if (provider.directPaymentModesValues == "UPI") ...[ ] else if (provider.directPaymentModesValues == "UPI") ...[
textControllerWidget( textControllerWidget(
context, context,
provider.amountController, provider.amountController,
"Enter UPI ID", "Enter UPI ID",
provider.updateUPI, provider.updateUPI,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.UPIError), errorWidget(context, provider.UPIError),
], ],
textControllerWidget( textControllerWidget(
context, context,
provider.paymentReferenceController, provider.paymentReferenceController,
"Enter Payment Reference Number", "Enter Payment Reference Number",
provider.updateReference, provider.updateReference,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.paymentreferenceerror), errorWidget(context, provider.paymentreferenceerror),
textControllerWidget( textControllerWidget(
context, context,
provider.descController, provider.descController,
"Enter Description", "Enter Description",
provider.updateDescription, provider.updateDescription,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.descriptionError), errorWidget(context, provider.descriptionError),
InkResponse( InkResponse(
onTap: () { onTap: () {
_showAttachmentSheet(context); _showAttachmentSheet(context);
...@@ -626,64 +627,7 @@ class _DirectpaymentrequesitionlistState ...@@ -626,64 +627,7 @@ class _DirectpaymentrequesitionlistState
); );
} }
Widget TextWidget(context, text) {
return Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(text),
);
}
Widget ErrorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(
context,
controller,
hintText,
Function(String)? onChanged,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
Future<void> _showAttachmentSheet(BuildContext context) { Future<void> _showAttachmentSheet(BuildContext context) {
return showModalBottomSheet( return showModalBottomSheet(
......
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/financeProvider/RequestionListProvider.dart'; import 'package:generp/Notifiers/financeProvider/RequestionListProvider.dart';
import 'package:generp/Utils/app_colors.dart'; import 'package:generp/Utils/app_colors.dart';
...@@ -155,7 +156,7 @@ class _SubmitpaymentrequestionlistsbymodeState ...@@ -155,7 +156,7 @@ class _SubmitpaymentrequestionlistsbymodeState
], ],
), ),
), ),
ErrorWidget(context, provider.selectAccountError), errorWidget(context, provider.selectAccountError),
if (["self", "admin"].contains(widget.mode)) ...[ if (["self", "admin"].contains(widget.mode)) ...[
TextWidget(context, "Select Requisition Type"), TextWidget(context, "Select Requisition Type"),
...@@ -244,26 +245,26 @@ class _SubmitpaymentrequestionlistsbymodeState ...@@ -244,26 +245,26 @@ class _SubmitpaymentrequestionlistsbymodeState
context, context,
provider.reqPurposeController, provider.reqPurposeController,
"Enter Request Purpose", "Enter Request Purpose",
provider.updateReqPupose, provider.updateReqPupose,TextInputType.text,false,null
), ),
], ],
ErrorWidget(context, provider.reqPurposeError), errorWidget(context, provider.reqPurposeError),
textControllerWidget( textControllerWidget(
context, context,
provider.descController, provider.descController,
"Enter Description", "Enter Description",
provider.updateDescription, provider.updateDescription,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.descriptionError), errorWidget(context, provider.descriptionError),
textControllerWidget( textControllerWidget(
context, context,
provider.amountController, provider.amountController,
"Enter Amount", "Enter Amount",
provider.updateAmount, provider.updateAmount,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context, provider.amountError), errorWidget(context, provider.amountError),
TextWidget(context, "Select Payment Mode"), TextWidget(context, "Select Payment Mode"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
...@@ -352,7 +353,7 @@ class _SubmitpaymentrequestionlistsbymodeState ...@@ -352,7 +353,7 @@ class _SubmitpaymentrequestionlistsbymodeState
], ],
), ),
), ),
ErrorWidget(context, provider.selectPaymentError), errorWidget(context, provider.selectPaymentError),
InkResponse( InkResponse(
onTap: () { onTap: () {
...@@ -403,7 +404,7 @@ class _SubmitpaymentrequestionlistsbymodeState ...@@ -403,7 +404,7 @@ class _SubmitpaymentrequestionlistsbymodeState
), ),
) )
], ],
ErrorWidget(context, provider.FileError), errorWidget(context, provider.FileError),
if ([ if ([
"Cheque", "Cheque",
...@@ -415,49 +416,49 @@ class _SubmitpaymentrequestionlistsbymodeState ...@@ -415,49 +416,49 @@ class _SubmitpaymentrequestionlistsbymodeState
context, context,
provider.bankNameController, provider.bankNameController,
"Enter Bank Name", "Enter Bank Name",
provider.updateBankName, provider.updateBankName,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.bankNameError), errorWidget(context, provider.bankNameError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankBranchController, provider.bankBranchController,
"Enter Bank Branch", "Enter Bank Branch",
provider.updateBankBranch, provider.updateBankBranch,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.bankBranchError), errorWidget(context, provider.bankBranchError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankAccNumberController, provider.bankAccNumberController,
"Enter Account Number", "Enter Account Number",
provider.updateNumber, provider.updateNumber,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context, provider.bankNumberError), errorWidget(context, provider.bankNumberError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankIfscController, provider.bankIfscController,
"Enter Bank IFSC", "Enter Bank IFSC",
provider.updateIFSC, provider.updateIFSC,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.bankIFSCError), errorWidget(context, provider.bankIFSCError),
textControllerWidget( textControllerWidget(
context, context,
provider.bankAcHolderController, provider.bankAcHolderController,
"Enter Bank Account Holder Name", "Enter Bank Account Holder Name",
provider.updateHolder, provider.updateHolder,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.bankHolderError), errorWidget(context, provider.bankHolderError),
] else if (provider.paymentModeValue == "UPI") ...[ ] else if (provider.paymentModeValue == "UPI") ...[
textControllerWidget( textControllerWidget(
context, context,
provider.amountController, provider.amountController,
"Enter UPI ID", "Enter UPI ID",
provider.updateUPI, provider.updateUPI,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.UPIError), errorWidget(context, provider.UPIError),
], ],
], ],
), ),
...@@ -502,64 +503,6 @@ class _SubmitpaymentrequestionlistsbymodeState ...@@ -502,64 +503,6 @@ class _SubmitpaymentrequestionlistsbymodeState
); );
} }
Widget TextWidget(context, text) {
return Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(text),
);
}
Widget ErrorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(
context,
controller,
hintText,
Function(String)? onChanged,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
Future<void> _showAttachmentSheet(BuildContext context) { Future<void> _showAttachmentSheet(BuildContext context) {
return showModalBottomSheet( return showModalBottomSheet(
......
...@@ -558,7 +558,7 @@ class _GeneratorPartDetailsScreenState ...@@ -558,7 +558,7 @@ class _GeneratorPartDetailsScreenState
), ),
child: TextField( child: TextField(
controller: quantitycontroller, controller: quantitycontroller,
keyboardType: TextInputType.text, keyboardType: TextInputType.numberWithOptions(decimal: true,signed: true),
focusNode: quantityFocusNode, focusNode: quantityFocusNode,
style: TextStyle(fontSize: 14), style: TextStyle(fontSize: 14),
......
...@@ -180,7 +180,7 @@ class _InventoryScreenState extends State<InventoryScreen> { ...@@ -180,7 +180,7 @@ class _InventoryScreenState extends State<InventoryScreen> {
), ),
child: TextField( child: TextField(
controller: partIDcontroller, controller: partIDcontroller,
keyboardType: TextInputType.emailAddress, keyboardType: TextInputType.text,
focusNode: partIDfocusNode, focusNode: partIDfocusNode,
textCapitalization: TextCapitalization.characters, textCapitalization: TextCapitalization.characters,
......
...@@ -58,7 +58,12 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -58,7 +58,12 @@ class _AddorderScreenState extends State<AddorderScreen> {
child: Scaffold( child: Scaffold(
resizeToAvoidBottomInset: true, resizeToAvoidBottomInset: true,
backgroundColor: AppColors.white, backgroundColor: AppColors.white,
appBar: appbar2(context, "${widget.pageTitleName}",provider.resetForm,SizedBox(width: 0,)), appBar: appbar2(
context,
"${widget.pageTitleName}",
provider.resetForm,
SizedBox(width: 0),
),
body: Container( body: Container(
padding: EdgeInsets.symmetric(horizontal: 10), padding: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration( decoration: BoxDecoration(
...@@ -84,15 +89,18 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -84,15 +89,18 @@ class _AddorderScreenState extends State<AddorderScreen> {
}, },
controller: provider.dropDownSearchController, controller: provider.dropDownSearchController,
onChanged: (value) async { onChanged: (value) async {
Future.delayed(Duration(milliseconds: 100), () async { Future.delayed(
await provider Duration(milliseconds: 100),
.ordersAddOrderSelectAccountAPIFunction( () async {
context, await provider
widget.mode, .ordersAddOrderSelectAccountAPIFunction(
provider.selectedAccountID, context,
value, widget.mode,
); provider.selectedAccountID,
}); value,
);
},
);
}, },
decoration: InputDecoration( decoration: InputDecoration(
enabledBorder: InputBorder.none, enabledBorder: InputBorder.none,
...@@ -165,7 +173,11 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -165,7 +173,11 @@ class _AddorderScreenState extends State<AddorderScreen> {
); );
provider.dropDownSearchController.text = provider.dropDownSearchController.text =
provider.accountList[index].text!; provider.accountList[index].text!;
provider.ordersAddOrderAccountDetailsAPIFunction(context, provider.selectedAccountID); provider
.ordersAddOrderAccountDetailsAPIFunction(
context,
provider.selectedAccountID,
);
} }
// provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID); // provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID);
provider.accountList = []; provider.accountList = [];
...@@ -186,8 +198,7 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -186,8 +198,7 @@ class _AddorderScreenState extends State<AddorderScreen> {
), ),
), ),
], ],
ErrorWidget(context, provider.selectAccountError), errorWidget(context, provider.selectAccountError),
if (widget.mode == "admin") ...[ if (widget.mode == "admin") ...[
TextWidget(context, "Sales Person"), TextWidget(context, "Sales Person"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
...@@ -320,15 +331,18 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -320,15 +331,18 @@ class _AddorderScreenState extends State<AddorderScreen> {
], ],
), ),
), ),
ErrorWidget(context, provider.dateError), errorWidget(context, provider.dateError),
textControllerWidget( textControllerWidget(
context, context,
provider.billingNameController, provider.billingNameController,
"Billing Name", "Billing Name",
provider.onChangedBillingName, provider.onChangedBillingName,
TextInputType.text,
false,
null,
), ),
ErrorWidget(context, provider.billingNameError), errorWidget(context, provider.billingNameError),
TextWidget(context, "Billing State"), TextWidget(context, "Billing State"),
//dd //dd
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
...@@ -363,7 +377,7 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -363,7 +377,7 @@ class _AddorderScreenState extends State<AddorderScreen> {
provider.selectedBillingStateID = value!.id!; provider.selectedBillingStateID = value!.id!;
provider.selectedBillingStateName = provider.selectedBillingStateName =
value!.name!; value!.name!;
if(provider.billingDistricts.isNotEmpty){ if (provider.billingDistricts.isNotEmpty) {
provider.billingDistricts.clear(); provider.billingDistricts.clear();
provider.selectedBillingDistricts = null; provider.selectedBillingDistricts = null;
provider.selectedBillingDistrictId = null; provider.selectedBillingDistrictId = null;
...@@ -456,7 +470,7 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -456,7 +470,7 @@ class _AddorderScreenState extends State<AddorderScreen> {
value!.id!; value!.id!;
provider.selectedBillingDistrictValue = provider.selectedBillingDistrictValue =
value!.district!; value!.district!;
if(provider.billingSubLocations.isNotEmpty){ if (provider.billingSubLocations.isNotEmpty) {
provider.billingSubLocations.clear(); provider.billingSubLocations.clear();
provider.selectedBillingSubLocations = null; provider.selectedBillingSubLocations = null;
provider.selectedBillingSubLocID = null; provider.selectedBillingSubLocID = null;
...@@ -599,16 +613,22 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -599,16 +613,22 @@ class _AddorderScreenState extends State<AddorderScreen> {
provider.billingAddressController, provider.billingAddressController,
"Billing Address", "Billing Address",
provider.onChangedBillingAddress, provider.onChangedBillingAddress,
TextInputType.text,
false,
null,
), ),
ErrorWidget(context, provider.billingAddressError), errorWidget(context, provider.billingAddressError),
textControllerWidget( textControllerWidget(
context, context,
provider.billingPincodeController, provider.billingPincodeController,
"Billing Pin code", "Billing Pin code",
provider.onChangedBillingPincode, provider.onChangedBillingPincode,
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
), ),
ErrorWidget(context, provider.billingPincodeError), errorWidget(context, provider.billingPincodeError),
TextWidget(context, "Dispatch State"), TextWidget(context, "Dispatch State"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
...@@ -643,8 +663,8 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -643,8 +663,8 @@ class _AddorderScreenState extends State<AddorderScreen> {
provider.selectedDispatchStateID = value!.id!; provider.selectedDispatchStateID = value!.id!;
provider.selectedDispatchStateName = provider.selectedDispatchStateName =
value!.name!; value!.name!;
if(provider.dispatchDistricts.isNotEmpty){ if (provider.dispatchDistricts.isNotEmpty) {
provider.dispatchDistricts.clear(); provider.dispatchDistricts.clear();
provider.selectedDispatchDistricts = null; provider.selectedDispatchDistricts = null;
provider.selectedDispatchDistrictId = null; provider.selectedDispatchDistrictId = null;
provider.selectedDispatchDistrictValue = ""; provider.selectedDispatchDistrictValue = "";
...@@ -736,9 +756,12 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -736,9 +756,12 @@ class _AddorderScreenState extends State<AddorderScreen> {
value!.id!; value!.id!;
provider.selectedDispatchDistrictValue = provider.selectedDispatchDistrictValue =
value!.district!; value!.district!;
if(provider.dispatchSubLocations.isNotEmpty){ if (provider
.dispatchSubLocations
.isNotEmpty) {
provider.dispatchSubLocations.clear(); provider.dispatchSubLocations.clear();
provider.selectedDispatchSubLocations = null; provider.selectedDispatchSubLocations =
null;
provider.selectedDispatchSubLocID = null; provider.selectedDispatchSubLocID = null;
provider.selectedDispatchSubLocValue = ""; provider.selectedDispatchSubLocValue = "";
} }
...@@ -880,24 +903,33 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -880,24 +903,33 @@ class _AddorderScreenState extends State<AddorderScreen> {
provider.dispatchAddressController, provider.dispatchAddressController,
"Dispatch Address", "Dispatch Address",
provider.onChangedDispatchAddress, provider.onChangedDispatchAddress,
TextInputType.text,
false,
null,
), ),
ErrorWidget(context, provider.dispatchAddressError), errorWidget(context, provider.dispatchAddressError),
textControllerWidget( textControllerWidget(
context, context,
provider.dispatchPincodeController, provider.dispatchPincodeController,
"Dispatch Pin code", "Dispatch Pin code",
provider.onChangedDispatchPincode, provider.onChangedDispatchPincode,
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
), ),
ErrorWidget(context, provider.dispatchPincodeError), errorWidget(context, provider.dispatchPincodeError),
textControllerWidget( textControllerWidget(
context, context,
provider.gstController, provider.gstController,
"GST Number", "GST Number",
provider.onChangedGst, provider.onChangedGst,
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
), ),
ErrorWidget(context, provider.gstError), errorWidget(context, provider.gstError),
InkResponse( InkResponse(
onTap: () { onTap: () {
...@@ -1218,7 +1250,6 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -1218,7 +1250,6 @@ class _AddorderScreenState extends State<AddorderScreen> {
onChanged: (String? value) { onChanged: (String? value) {
if (provider.tpcApplicable.isNotEmpty) { if (provider.tpcApplicable.isNotEmpty) {
provider.selectedTpcStatus = value; provider.selectedTpcStatus = value;
} }
}, },
buttonStyleData: ButtonStyleData( buttonStyleData: ButtonStyleData(
...@@ -1268,10 +1299,10 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -1268,10 +1299,10 @@ class _AddorderScreenState extends State<AddorderScreen> {
), ),
), ),
if(provider.selectedTpcStatus=="Yes")...[ if (provider.selectedTpcStatus == "Yes") ...[
TextWidget(context, "TPC Agent"), TextWidget(context, "TPC Agent"),
//dd
//dd
Container( Container(
alignment: Alignment.center, alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
...@@ -1286,14 +1317,16 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -1286,14 +1317,16 @@ class _AddorderScreenState extends State<AddorderScreen> {
}, },
controller: provider.dropDownTpcSearchController, controller: provider.dropDownTpcSearchController,
onChanged: (value) async { onChanged: (value) async {
Future.delayed(Duration(milliseconds: 100), () async { Future.delayed(
await provider Duration(milliseconds: 100),
.ordersAddOrderTPCAgentFunction( () async {
context, await provider.ordersAddOrderTPCAgentFunction(
widget.mode, context,
value, widget.mode,
); value,
}); );
},
);
}, },
decoration: InputDecoration( decoration: InputDecoration(
enabledBorder: InputBorder.none, enabledBorder: InputBorder.none,
...@@ -1316,7 +1349,9 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -1316,7 +1349,9 @@ class _AddorderScreenState extends State<AddorderScreen> {
if (focusNodetpc.hasFocus) { if (focusNodetpc.hasFocus) {
focusNodetpc.unfocus(); focusNodetpc.unfocus();
} else { } else {
FocusScope.of(context).requestFocus(focusNodetpc); FocusScope.of(
context,
).requestFocus(focusNodetpc);
} }
}, },
child: SvgPicture.asset( child: SvgPicture.asset(
...@@ -1350,23 +1385,22 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -1350,23 +1385,22 @@ class _AddorderScreenState extends State<AddorderScreen> {
onTap: () async { onTap: () async {
if (provider.tpcAgent.isNotEmpty) { if (provider.tpcAgent.isNotEmpty) {
provider.selectedTpcAgent = provider.selectedTpcAgent =
provider.tpcAgent[index]; provider.tpcAgent[index];
print( print(
"Selected Complaint Type: ${provider.tpcAgent[index].text}, ID: ${provider.tpcAgent[index].id}", "Selected Complaint Type: ${provider.tpcAgent[index].text}, ID: ${provider.tpcAgent[index].id}",
); );
provider.selectedTpcAgentID = provider.selectedTpcAgentID =
provider.tpcAgent[index].id!; provider.tpcAgent[index].id!;
provider.selectedTpcAgentValue = provider.selectedTpcAgentValue =
provider.tpcAgent[index].text!; provider.tpcAgent[index].text!;
print( print(
"hfjkshfg" + "hfjkshfg" +
provider.selectedTpcAgentID provider.selectedTpcAgentID
.toString(), .toString(),
); );
provider.dropDownSearchController.text = provider.dropDownSearchController.text =
provider.accountList[index].text!; provider.accountList[index].text!;
} }
// provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID); // provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID);
// provider.tpcAgent = []; // provider.tpcAgent = [];
...@@ -1388,21 +1422,20 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -1388,21 +1422,20 @@ class _AddorderScreenState extends State<AddorderScreen> {
), ),
], ],
textControllerWidget( textControllerWidget(
context, context,
provider.tpcAmountController, provider.tpcAmountController,
"TPC Amount", "TPC Amount",
provider.onChangeTpcAmount, provider.onChangeTpcAmount,
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
), ),
ErrorWidget(context, provider.tpcAmountError), errorWidget(context, provider.tpcAmountError),
], ],
///Addorderbutton ///Addorderbutton
OrderForm(),
OrderForm()
//dd //dd
], ],
), ),
...@@ -1411,18 +1444,33 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -1411,18 +1444,33 @@ class _AddorderScreenState extends State<AddorderScreen> {
floatingActionButtonLocation: floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat, FloatingActionButtonLocation.centerFloat,
bottomNavigationBar: InkResponse( bottomNavigationBar: InkResponse(
onTap:provider.submitClicked?null: () { onTap:
provider.submitClicked = true; provider.submitClicked
var order_prod_data = provider.getFormData(); ? null
print(order_prod_data); : () {
provider.getCurrentLocation(); provider.submitClicked = true;
provider.ordersAddOrderAPISubmitFunction(context,widget.mode,provider.selectedEmployeeID,provider.selectedAccountID,provider.selectedDispatchDistrictId, var order_prod_data = provider.getFormData();
provider.selectedDispatchSubLocID,provider.selectedUnloadingScope, print(order_prod_data);
provider.selectedFreightScope,provider.selectedErectionScope,provider.selectedTpcStatus, provider.getCurrentLocation();
provider.selectedTpcStatus, provider.ordersAddOrderAPISubmitFunction(
provider.selectedBillingStateID,provider.selectedBillingDistrictId,provider.selectedBillingSubLocID, context,
provider.selectedTpcAgentID,order_prod_data); widget.mode,
}, provider.selectedEmployeeID,
provider.selectedAccountID,
provider.selectedDispatchDistrictId,
provider.selectedDispatchSubLocID,
provider.selectedUnloadingScope,
provider.selectedFreightScope,
provider.selectedErectionScope,
provider.selectedTpcStatus,
provider.selectedTpcStatus,
provider.selectedBillingStateID,
provider.selectedBillingDistrictId,
provider.selectedBillingSubLocID,
provider.selectedTpcAgentID,
order_prod_data,
);
},
child: Container( child: Container(
height: 45, height: 45,
alignment: Alignment.center, alignment: Alignment.center,
...@@ -1432,17 +1480,21 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -1432,17 +1480,21 @@ class _AddorderScreenState extends State<AddorderScreen> {
color: AppColors.app_blue, color: AppColors.app_blue,
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
), ),
child: provider.submitClicked?CircularProgressIndicator.adaptive( child:
valueColor: AlwaysStoppedAnimation<Color>( provider.submitClicked
AppColors.app_blue), ? CircularProgressIndicator.adaptive(
):Text( valueColor: AlwaysStoppedAnimation<Color>(
"Submit", AppColors.app_blue,
style: TextStyle( ),
fontSize: 15, )
fontFamily: "JakartaMedium", : Text(
color: Colors.white, "Submit",
), style: TextStyle(
), fontSize: 15,
fontFamily: "JakartaMedium",
color: Colors.white,
),
),
), ),
), ),
), ),
...@@ -1455,65 +1507,6 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -1455,65 +1507,6 @@ class _AddorderScreenState extends State<AddorderScreen> {
); );
} }
Widget TextWidget(context, text) {
return Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(text),
);
}
Widget ErrorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(
context,
controller,
hintText,
Function(String)? onChanged,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
Future<void> _showAttachmentSheet(BuildContext context) { Future<void> _showAttachmentSheet(BuildContext context) {
return showModalBottomSheet( return showModalBottomSheet(
useSafeArea: true, useSafeArea: true,
...@@ -1596,6 +1589,7 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -1596,6 +1589,7 @@ class _AddorderScreenState extends State<AddorderScreen> {
); );
} }
} }
class OrderForm extends StatelessWidget { class OrderForm extends StatelessWidget {
const OrderForm({super.key}); const OrderForm({super.key});
...@@ -1603,7 +1597,7 @@ class OrderForm extends StatelessWidget { ...@@ -1603,7 +1597,7 @@ class OrderForm extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final provider = Provider.of<Addorderprovider>(context); final provider = Provider.of<Addorderprovider>(context);
return Container( return Container(
padding: const EdgeInsets.symmetric(horizontal: 10), padding: const EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
...@@ -1624,10 +1618,7 @@ class OrderForm extends StatelessWidget { ...@@ -1624,10 +1618,7 @@ class OrderForm extends StatelessWidget {
decoration: BoxDecoration( decoration: BoxDecoration(
color: const Color(0xFFE6F6FF), color: const Color(0xFFE6F6FF),
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
border: Border.all( border: Border.all(color: Colors.blue, width: 0.5),
color: Colors.blue,
width: 0.5,
),
), ),
child: const Center( child: const Center(
child: Text( child: Text(
...@@ -1648,12 +1639,9 @@ class OrderForm extends StatelessWidget { ...@@ -1648,12 +1639,9 @@ class OrderForm extends StatelessWidget {
itemCount: provider.ProductControllers.length, itemCount: provider.ProductControllers.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
return Container( return Container(
width: MediaQuery.of(context).size.width * 0.9, width: MediaQuery.of(context).size.width,
margin: const EdgeInsets.symmetric(
horizontal: 8.0, padding: const EdgeInsets.all(5.0),
vertical: 8.0,
),
padding: const EdgeInsets.all(8.0),
decoration: BoxDecoration( decoration: BoxDecoration(
color: const Color(0xFFF5F5F5), color: const Color(0xFFF5F5F5),
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
...@@ -1669,267 +1657,315 @@ class OrderForm extends StatelessWidget { ...@@ -1669,267 +1657,315 @@ class OrderForm extends StatelessWidget {
), ),
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
// Product Dropdown Container(
Row( padding: const EdgeInsets.all(3.0),
children: [ decoration: BoxDecoration(
Expanded( color: Colors.white,
child: DropdownButtonHideUnderline( borderRadius: BorderRadius.circular(12),
child: DropdownButton2< ),
SaleProducts child: Column(
>( crossAxisAlignment: CrossAxisAlignment.start,
isExpanded: true, children: [
hint: Text( // Product Dropdown
'Select Product', Row(
style: TextStyle( children: [
fontSize: 14, Expanded(
), child: DropdownButtonHideUnderline(
overflow: child: DropdownButton2<SaleProducts>(
TextOverflow.ellipsis, isExpanded: true,
), hint: Text(
items: 'Select Product',
provider.saleProducts style: TextStyle(fontSize: 14),
.map( overflow: TextOverflow.ellipsis,
(
ord,
) => DropdownMenuItem<
SaleProducts
>(
value: ord,
child: Text(
"${ord.prodName}" ??
'',
style:
const TextStyle(
fontSize:
14,
), ),
overflow: items:
TextOverflow provider.saleProducts
.ellipsis, .map(
), (ord) => DropdownMenuItem<
), SaleProducts
) >(
.toList(), value: ord,
value: child: Text(
provider "${ord.prodName}" ?? '',
.selectedSaleProducts, style: const TextStyle(
onChanged: ( fontSize: 14,
SaleProducts? value, ),
) { overflow:
if (value != null) { TextOverflow.ellipsis,
if (provider ),
.saleProducts ),
.isNotEmpty) { )
provider.selectedSaleProducts = .toList(),
value; value: provider.saleProducts.firstWhere(
(product) => product.id == provider.selectedSaleProductID[index],
),
onChanged: (SaleProducts? value) {
if (value != null) {
if (provider
.saleProducts
.isNotEmpty) {
provider.selectedSaleProducts =
value;
provider.updateSelectedProduct( provider.updateSelectedProduct(
index, index,
provider provider.selectedSaleProducts,
.selectedSaleProducts, );
); // provider.selectedOrderIds = value!.orderId!;
// provider.selectedOrderIds = value!.orderId!; // provider.selectedOrderNumbers = value!.orderNumber!;
// provider.selectedOrderNumbers = value!.orderNumber!; }
} }
} },
}, buttonStyleData: ButtonStyleData(
buttonStyleData: ButtonStyleData( height: 50,
height: 50, width: 160,
width: 160, padding: const EdgeInsets.only(
padding: left: 14,
const EdgeInsets.only( right: 14,
left: 14, ),
right: 14, decoration: BoxDecoration(
), borderRadius: BorderRadius.circular(
decoration: BoxDecoration( 14,
borderRadius: ),
BorderRadius.circular( color: AppColors.text_field_color,
14, ),
),
iconStyleData: IconStyleData(
icon: SvgPicture.asset(
"assets/svg/arrow_dropdown.svg",
height: 25,
width: 20,
),
iconSize: 12,
iconEnabledColor: Color(0xFF2D2D2D),
iconDisabledColor: Colors.grey,
),
dropdownStyleData: DropdownStyleData(
maxHeight: 200,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(
14,
),
color: AppColors.text_field_color,
),
scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(15),
thickness:
MaterialStateProperty.all<
double
>(6),
thumbVisibility:
MaterialStateProperty.all<bool>(
true,
),
),
),
menuItemStyleData:
const MenuItemStyleData(
height: 40,
padding: EdgeInsets.only(
left: 14,
right: 14,
),
),
), ),
color:
AppColors
.text_field_color,
), ),
), ),
iconStyleData: IconStyleData( ],
icon: SvgPicture.asset( ),
"assets/svg/arrow_dropdown.svg",
height: 25, const SizedBox(height: 8.0),
width: 20, Row(
children: [
// Price TextField (Read-only)
Expanded(
child: textControllerWidget(
context,
provider.PriceControllers[index],
"Price",
(p0) {},
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
), ),
iconSize: 12, ),
iconEnabledColor: Color( const SizedBox(width: 8.0),
0xFF2D2D2D, // Quantity TextField
// Expanded(
// child: TextField(
// controller:
// provider.QuantityControllers[index],
// decoration: const InputDecoration(
// labelText: 'Quantity',
// border: OutlineInputBorder(),
// isDense: true,
// ),
// keyboardType: TextInputType.number,
// inputFormatters: [
// FilteringTextInputFormatter.digitsOnly
// ],
// onChanged: (value) {
//
// },
// ),
// ),
Expanded(
child: textControllerWidget(
context,
provider.QuantityControllers[index],
"Quantity",
(p0) {
provider.updateRowCalculations(index);
},
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
), ),
iconDisabledColor:
Colors.grey,
), ),
dropdownStyleData: DropdownStyleData( ],
maxHeight: 200, ),
decoration: BoxDecoration( const SizedBox(height: 8.0),
borderRadius: Row(
BorderRadius.circular( children: [
14, // CGST TextField
), // Expanded(
color: // child: TextField(
AppColors // controller: provider.CGSTControllers[index],
.text_field_color, // decoration: const InputDecoration(
// labelText: 'CGST %',
// border: OutlineInputBorder(),
// isDense: true,
// ),
// keyboardType: TextInputType.number,
// inputFormatters: [
// FilteringTextInputFormatter.digitsOnly
// ],
// onChanged: (value) {
// provider.updateRowCalculations(index);
// },
// ),
// ),
Expanded(
child: textControllerWidget(
context,
provider.CGSTControllers[index],
"CGST %",
(p0) {
provider.updateRowCalculations(index);
},
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
), ),
scrollbarTheme: ScrollbarThemeData( ),
radius: const SizedBox(width: 8.0),
const Radius.circular( // SGST TextField
15, // Expanded(
), // child: TextField(
thickness: // controller: provider.SGSTControllers[index],
MaterialStateProperty.all< // decoration: const InputDecoration(
double // labelText: 'SGST %',
>(6), // border: OutlineInputBorder(),
thumbVisibility: // isDense: true,
MaterialStateProperty.all< // ),
bool // keyboardType: TextInputType.number,
>(true), // inputFormatters: [
// FilteringTextInputFormatter.digitsOnly
// ],
// onChanged: (value) {
// provider.updateRowCalculations(index);
// },
// ),
// ),
Expanded(
child: textControllerWidget(
context,
provider.SGSTControllers[index],
"SGST %",
(p0) {
provider.updateRowCalculations(index);
},
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
), ),
), ),
menuItemStyleData: const SizedBox(width: 8.0),
const MenuItemStyleData( // IGST TextField
height: 40, // Expanded(
padding: // child: TextField(
EdgeInsets.only( // controller: provider.IGSTControllers[index],
left: 14, // decoration: const InputDecoration(
right: 14, // labelText: 'IGST %',
// border: OutlineInputBorder(),
// isDense: true,
// ),
// keyboardType: TextInputType.number,
// inputFormatters: [
// FilteringTextInputFormatter.digitsOnly
// ],
// onChanged: (value) {
// provider.updateRowCalculations(index);
// },
// ),
// ),
Expanded(
child: textControllerWidget(
context,
provider.IGSTControllers[index],
"IGST %",
(p0) {
provider.updateRowCalculations(index);
},
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
), ),
), ),
),
),
),
],
),
const SizedBox(height: 8.0),
Row(
children: [
// Price TextField (Read-only)
Expanded(
child: TextField(
controller: provider.PriceControllers[index],
decoration: const InputDecoration(
labelText: 'Price',
border: OutlineInputBorder(),
isDense: true,
),
keyboardType: TextInputType.number,
readOnly: true,
),
),
const SizedBox(width: 8.0),
// Quantity TextField
Expanded(
child: TextField(
controller:
provider.QuantityControllers[index],
decoration: const InputDecoration(
labelText: 'Quantity',
border: OutlineInputBorder(),
isDense: true,
),
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.digitsOnly
], ],
onChanged: (value) {
provider.updateRowCalculations(index);
},
), ),
), const SizedBox(height: 8.0),
], Row(
), children: [
const SizedBox(height: 8.0), // Total Price TextField (Read-only)
Row( // Expanded(
children: [ // child: TextField(
// CGST TextField // controller:
Expanded( // provider.TaxableValueControllers[index],
child: TextField( // decoration: const InputDecoration(
controller: provider.CGSTControllers[index], // labelText: 'Total Price',
decoration: const InputDecoration( // border: OutlineInputBorder(),
labelText: 'CGST %', // isDense: true,
border: OutlineInputBorder(), // ),
isDense: true, // keyboardType: TextInputType.number,
), // readOnly: true,
keyboardType: TextInputType.number, // ),
inputFormatters: [ // ),
FilteringTextInputFormatter.digitsOnly Expanded(
], child: textControllerWidget(
onChanged: (value) { context,
provider.updateRowCalculations(index); provider.TaxableValueControllers[index],
}, "Total Price",
), (p0) {
), provider.updateRowCalculations(index);
const SizedBox(width: 8.0), },
// SGST TextField TextInputType.number,
Expanded( true,
child: TextField( null,
controller: provider.SGSTControllers[index], ),
decoration: const InputDecoration( ),
labelText: 'SGST %', // const SizedBox(width: 8.0),
border: OutlineInputBorder(), // // Remove Row Button
isDense: true, // IconButton(
), // icon: const Icon(Icons.delete, color: Colors.red),
keyboardType: TextInputType.number, // onPressed: () {
inputFormatters: [ // provider.removeRow(index);
FilteringTextInputFormatter.digitsOnly // },
], // ),
onChanged: (value) {
provider.updateRowCalculations(index);
},
),
),
const SizedBox(width: 8.0),
// IGST TextField
Expanded(
child: TextField(
controller: provider.IGSTControllers[index],
decoration: const InputDecoration(
labelText: 'IGST %',
border: OutlineInputBorder(),
isDense: true,
),
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.digitsOnly
], ],
onChanged: (value) {
provider.updateRowCalculations(index);
},
),
),
],
),
const SizedBox(height: 8.0),
Row(
children: [
// Total Price TextField (Read-only)
Expanded(
child: TextField(
controller:
provider.TaxableValueControllers[index],
decoration: const InputDecoration(
labelText: 'Total Price',
border: OutlineInputBorder(),
isDense: true,
),
keyboardType: TextInputType.number,
readOnly: true,
), ),
), ],
const SizedBox(width: 8.0), ),
// Remove Row Button
IconButton(
icon: const Icon(Icons.delete, color: Colors.red),
onPressed: () {
provider.removeRow(index);
},
),
],
), ),
], ],
), ),
...@@ -1938,53 +1974,136 @@ class OrderForm extends StatelessWidget { ...@@ -1938,53 +1974,136 @@ class OrderForm extends StatelessWidget {
), ),
], ],
const SizedBox(height: 20), const SizedBox(height: 20),
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
),
child: Column(
children: [
textControllerWidget(
context,
provider.basicAmountReadOnlyController,
"Basic Amount",
(p0) {},
TextInputType.text,
true,
FilteringTextInputFormatter.digitsOnly,
),
textControllerWidget(
context,
provider.cgstReadOnlyController,
"CGST Amount",
(p0) {},
TextInputType.text,
true,
FilteringTextInputFormatter.digitsOnly,
),
textControllerWidget(
context,
provider.sgstReadOnlyController,
"SGST Amount",
(p0) {},
TextInputType.text,
true,
FilteringTextInputFormatter.digitsOnly,
),
textControllerWidget(
context,
provider.igstReadOnlyController,
"IGST Amount",
(p0) {},
TextInputType.text,
true,
FilteringTextInputFormatter.digitsOnly,
),
textControllerWidget(
context,
provider.totalReadOnlyAmountController,
"Total Amount",
(p0) {},
TextInputType.text,
true,
FilteringTextInputFormatter.digitsOnly,
),
textControllerWidget(
context,
provider.noteController,
"Note",
(p0) {},
TextInputType.text,
true,
FilteringTextInputFormatter.digitsOnly,
),
],
),
),
// Summary Table // Summary Table
Table( Visibility(
border: TableBorder.all(color: Colors.grey, width: 1), visible: false,
columnWidths: const { child: Table(
0: FlexColumnWidth(2), border: TableBorder.all(color: Colors.grey, width: 1),
1: FlexColumnWidth(1), columnWidths: const {
}, 0: FlexColumnWidth(2),
children: [ 1: FlexColumnWidth(1),
_buildTableRow('Basic Amount', provider.basicAmount.toStringAsFixed(2)), },
_buildTableRow('CGST Amount', provider.cgstAmount.toStringAsFixed(2)), children: [
_buildTableRow('SGST Amount', provider.sgstAmount.toStringAsFixed(2)), _buildTableRow(
_buildTableRow('IGST Amount', provider.igstAmount.toStringAsFixed(2)), 'Basic Amount',
_buildTableRow('Total Amount', provider.totalAmount.toStringAsFixed(2)), provider.basicAmount.toStringAsFixed(2),
TableRow( ),
children: [ _buildTableRow(
const Padding( 'CGST Amount',
padding: EdgeInsets.all(8.0), provider.cgstAmount.toStringAsFixed(2),
child: Text( ),
'Note', _buildTableRow(
style: TextStyle(fontWeight: FontWeight.bold), 'SGST Amount',
provider.sgstAmount.toStringAsFixed(2),
),
_buildTableRow(
'IGST Amount',
provider.igstAmount.toStringAsFixed(2),
),
_buildTableRow(
'Total Amount',
provider.totalAmount.toStringAsFixed(2),
),
TableRow(
children: [
const Padding(
padding: EdgeInsets.all(8.0),
child: Text(
'Note',
style: TextStyle(fontWeight: FontWeight.bold),
),
), ),
), Padding(
Padding( padding: const EdgeInsets.all(8.0),
padding: const EdgeInsets.all(8.0), child: TextField(
child: TextField( controller: provider.noteController,
controller: provider.noteController, decoration: const InputDecoration(
decoration: const InputDecoration( border: InputBorder.none,
border: InputBorder.none, hintText: 'Enter note',
hintText: 'Enter note', ),
maxLines: null,
), ),
maxLines: null,
), ),
), ],
], ),
), ],
], ),
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
// Submit Button
// Submit Button
], ],
), ),
), ),
); );
} }
TableRow _buildTableRow(String label, String value) { TableRow _buildTableRow(String label, value) {
return TableRow( return TableRow(
children: [ children: [
Padding( Padding(
...@@ -1994,11 +2113,10 @@ class OrderForm extends StatelessWidget { ...@@ -1994,11 +2113,10 @@ class OrderForm extends StatelessWidget {
style: const TextStyle(fontWeight: FontWeight.bold), style: const TextStyle(fontWeight: FontWeight.bold),
), ),
), ),
Padding( Padding(padding: const EdgeInsets.all(8.0), child: Text(value.toString())),
padding: const EdgeInsets.all(8.0),
child: Text(value),
),
], ],
); );
} }
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ import 'dart:async'; ...@@ -2,6 +2,7 @@ import 'dart:async';
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
...@@ -482,15 +483,16 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -482,15 +483,16 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
ErrorWidget(context, provider.selectAccountError), errorWidget(context, provider.selectAccountError),
textControllerWidget( textControllerWidget(
context, context,
provider.amountController, provider.amountController,
"Amount", "Amount",
provider.onChangeAmount, provider.onChangeAmount,
TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context, provider.amountError), errorWidget(context, provider.amountError),
///Addorderbutton ///Addorderbutton
if(provider.selectedAccountID!.isNotEmpty)...[ if(provider.selectedAccountID!.isNotEmpty)...[
InkResponse( InkResponse(
...@@ -573,7 +575,10 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -573,7 +575,10 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
), ),
) )
.toList(), .toList(),
value: provider.selectedOrderLists, // value: provider.selectedOrderLists,
value: provider.orderList.firstWhere(
(product) => product.orderId == provider.selectedOrderIds[index],
),
onChanged: (OrderList? value) { onChanged: (OrderList? value) {
if (value != null) { if (value != null) {
if (provider.orderList.isNotEmpty) { if (provider.orderList.isNotEmpty) {
...@@ -643,7 +648,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -643,7 +648,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
flex: 2, flex: 2,
child: textControllerWidget(context, provider.orderAmountControllers[index], "Enter Order Amount", (p0) { child: textControllerWidget(context, provider.orderAmountControllers[index], "Enter Order Amount", (p0) {
},), },TextInputType.number,false,FilteringTextInputFormatter.digitsOnly),
), ),
// SizedBox(width: 10), // SizedBox(width: 10),
// //
...@@ -669,8 +674,9 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -669,8 +674,9 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
provider.orderAdjustedAmountController, provider.orderAdjustedAmountController,
"Order Adjusted Amount", "Order Adjusted Amount",
provider.onChangeorderAdjustedAmount, provider.onChangeorderAdjustedAmount,
TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context, provider.orderAdjustedAmountError), errorWidget(context, provider.orderAdjustedAmountError),
TextWidget(context, "Description"), TextWidget(context, "Description"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
child: Row( child: Row(
...@@ -756,7 +762,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -756,7 +762,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
], ],
), ),
), ),
ErrorWidget(context, provider.descriptionError), errorWidget(context, provider.descriptionError),
TextWidget(context, "Payment Received Date"), TextWidget(context, "Payment Received Date"),
...@@ -807,7 +813,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -807,7 +813,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
], ],
), ),
), ),
ErrorWidget(context, provider.dateError), errorWidget(context, provider.dateError),
TextWidget(context, "Select Payment Mode"), TextWidget(context, "Select Payment Mode"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
...@@ -894,16 +900,16 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -894,16 +900,16 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
], ],
), ),
), ),
ErrorWidget(context, provider.paymentModeError), errorWidget(context, provider.paymentModeError),
textControllerWidget( textControllerWidget(
context, context,
provider.paymentRefController, provider.paymentRefController,
"Payment Reference No. / Cheque No. / UTR No. tf", "Payment Reference No. / Cheque No. / UTR No. tf",
provider.onChangepaymentRef, provider.onChangepaymentRef,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.paymentRefError), errorWidget(context, provider.paymentRefError),
InkResponse( InkResponse(
...@@ -995,64 +1001,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -995,64 +1001,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
}, },
); );
} }
Widget TextWidget(context, text) {
return Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(text),
);
}
Widget ErrorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(
context,
controller,
hintText,
Function(String)? onChanged,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
Future<void> _showAttachmentSheet(BuildContext context) { Future<void> _showAttachmentSheet(BuildContext context) {
return showModalBottomSheet( return showModalBottomSheet(
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
...@@ -55,14 +56,14 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -55,14 +56,14 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
children: [ children: [
textControllerWidget(context,provider.tpcNameController,"Enter Name",provider.onChangetpcName), textControllerWidget(context,provider.tpcNameController,"Enter Name",provider.onChangetpcName,TextInputType.text,false,null),
if(provider.tpcNameError!=null)...[ if(provider.tpcNameError!=null)...[
ErrorWidget(context, provider.tpcNameError) errorWidget(context, provider.tpcNameError)
], ],
textControllerWidget(context,provider.tpcMobileNumberController,"Enter Mobile Number",provider.onChangetpcMobileNumber), textControllerWidget(context,provider.tpcMobileNumberController,"Enter Mobile Number",provider.onChangetpcMobileNumber,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly),
if(provider.tpcMobileNumberError!=null)...[ if(provider.tpcMobileNumberError!=null)...[
ErrorWidget(context, provider.tpcMobileNumberError) errorWidget(context, provider.tpcMobileNumberError)
], ],
InkResponse( InkResponse(
...@@ -115,30 +116,30 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -115,30 +116,30 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
) )
], ],
textControllerWidget(context,provider.tpcBankNameController,"Enter Bank Name",provider.onChangetpcBankName), textControllerWidget(context,provider.tpcBankNameController,"Enter Bank Name",provider.onChangetpcBankName,TextInputType.text,false,null),
if(provider.tpcBankNameError!=null)...[ if(provider.tpcBankNameError!=null)...[
ErrorWidget(context, provider.tpcBankNameError) errorWidget(context, provider.tpcBankNameError)
], ],
textControllerWidget(context,provider.tpcBankBeneficiaryNameController,"Enter Bank Beneficiary Name",provider.onChangetpcBankBeneficiaryName), textControllerWidget(context,provider.tpcBankBeneficiaryNameController,"Enter Bank Beneficiary Name",provider.onChangetpcBankBeneficiaryName,TextInputType.text,false,null),
if(provider.tpcBankBeneficiaryNameError!=null)...[ if(provider.tpcBankBeneficiaryNameError!=null)...[
ErrorWidget(context, provider.tpcBankBeneficiaryNameError) errorWidget(context, provider.tpcBankBeneficiaryNameError)
], ],
textControllerWidget(context,provider.tpcBankAccountNumberController,"Enter Bank Account Number",provider.onChangetpcBankAccountNumber), textControllerWidget(context,provider.tpcBankAccountNumberController,"Enter Bank Account Number",provider.onChangetpcBankAccountNumber,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly),
if(provider.tpcBankAccountNumberError!=null)...[ if(provider.tpcBankAccountNumberError!=null)...[
ErrorWidget(context, provider.tpcBankAccountNumberError) errorWidget(context, provider.tpcBankAccountNumberError)
], ],
textControllerWidget(context,provider.tpcBankIFSCController,"Enter Bank IFSC",provider.onChangetpcBankIFSC), textControllerWidget(context,provider.tpcBankIFSCController,"Enter Bank IFSC",provider.onChangetpcBankIFSC,TextInputType.text,false,null),
if(provider.tpcBankIFSCError!=null)...[ if(provider.tpcBankIFSCError!=null)...[
ErrorWidget(context, provider.tpcBankIFSCError) errorWidget(context, provider.tpcBankIFSCError)
], ],
textControllerWidget(context,provider.tpcNoteController,"Enter Description",provider.onChangetpcNote), textControllerWidget(context,provider.tpcNoteController,"Enter Description",provider.onChangetpcNote,TextInputType.text,false,null),
if(provider.tpcNoteError!=null)...[ if(provider.tpcNoteError!=null)...[
ErrorWidget(context, provider.tpcNoteError) errorWidget(context, provider.tpcNoteError)
], ],
InkWell( InkWell(
onTap: () { onTap: () {
...@@ -188,62 +189,7 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -188,62 +189,7 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
); );
} }
Widget TextWidget(context, text) {
return Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(text),
);
}
Widget ErrorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(context,
controller,
hintText,
Function(String)? onChanged,) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
Future<void> _showAttachmentSheet(BuildContext context) { Future<void> _showAttachmentSheet(BuildContext context) {
return showModalBottomSheet( return showModalBottomSheet(
......
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Models/ordersModels/EditPaymentDetailsAdjustedOrdersViewResponse.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../Models/ordersModels/AddOrderPaymentSelectOrderResponse.dart'; import '../../Models/ordersModels/AddOrderPaymentSelectOrderResponse.dart';
...@@ -13,136 +15,55 @@ class Editadjustedorderlist extends StatefulWidget { ...@@ -13,136 +15,55 @@ class Editadjustedorderlist extends StatefulWidget {
final mode; final mode;
final pageTitleName; final pageTitleName;
final values; final values;
const Editadjustedorderlist({super.key, this.mode, this.pageTitleName, this.values});
const Editadjustedorderlist({
super.key,
this.mode,
this.pageTitleName,
this.values,
});
@override @override
State<Editadjustedorderlist> createState() => _EditadjustedorderlistState(); State<Editadjustedorderlist> createState() => _EditadjustedorderlistState();
} }
class _EditadjustedorderlistState extends State<Editadjustedorderlist> { class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
// @override
// void initState() {
// // TODO: implement initState
// super.initState();
// WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
// var provider = Provider.of<Addpaymentprovider>(
// context,
// listen: false,
// );
// provider.checkDropdownselected();
// provider.ordersAddPaymentSelectOrderAPIFunction(context,widget.values["account_id"]);
// print(widget.values);
// if(widget.values!.isNotEmpty){
// var a = widget.values['orders'];
// for(int i=0;i<a.length;i++){
// provider.addNewRow();
// provider.orderAmountControllers[i].text = a[i]['amount'];
// final order = provider.orderList.firstWhere(
// (item) => item.orderNumber == a[i]['order_number']);
// print(provider.orderList[i].orderNumber);
// print(a[i]['order_number']);
// // provider.selectedOrderIds = order;
// provider.updateSelectedOrderId(i, order);
//
// }
//
// }
//
//
// });
// }
//
@override @override
void initState() { void initState() {
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async { WidgetsBinding.instance.addPostFrameCallback((_) async {
final provider = Provider.of<Editpaymentprovider>(context, listen: false); final editProvider = Provider.of<Editpaymentprovider>(
context,
listen: false,
);
editProvider.checkDropdownselected();
// Fetch order list via API await editProvider.editPaymentDetailsAdjustedOrdersViewAPIFunction(
await provider.ordersAddPaymentSelectOrderAPIFunction(
context, context,
widget.values["account_id"], widget.values["payment_id"],
); );
// Populate rows from widget.values['orders']
if (widget.values != null && widget.values['orders'] != null) { if (widget.values != null && widget.values['orders'] != null) {
final ordersFromWidget = widget.values['orders']; final ordersFromWidget = widget.values['orders'];
for (int i = 0; i < ordersFromWidget.length; i++) { for (int i = 0; i < ordersFromWidget.length; i++) {
final widgetOrderNumber = ordersFromWidget[i]['order_number']; final widgetOrderNumber = ordersFromWidget[i]['order_number'];
final widgetAmount = ordersFromWidget[i]['amount']; final widgetAmount = ordersFromWidget[i]['amount'];
final orderId = ordersFromWidget[i]['order_id']; final matchedOrder = editProvider.paidList.firstWhere(
final orderPaymentId = ordersFromWidget[i]['order_payment_id']; (order) => order.orderNumber == widgetOrderNumber,
// Create metadata for this row
final metadata = {
"order_id": orderId.toString(),
"order_payment_id": orderPaymentId.toString(),
};
// Use addRowWithMetadata to add row with metadata
provider.addRowWithMetadata(metadata);
// Find matching order in the fetched list
final matchedOrder = provider.orderList.firstWhere(
(order) => order.orderNumber == widgetOrderNumber,
orElse: () { orElse: () {
print("⚠️ Order not found for: $widgetOrderNumber"); return editProvider.paidList[0];
return provider.orderList[0]; // Fallback to first order
}, },
); );
// Populate controller and selected order editProvider.editAddNewRow(); // Adds controller + dropdown slot
provider.orderAmountControllers[i].text = widgetAmount; editProvider.editOrderAmountControllers[i].text = widgetAmount;
provider.updateSelectedOrderId(i, matchedOrder); editProvider.updateSelectedPaidOrderId(i, matchedOrder);
print("✅ Matched order: ${matchedOrder.orderNumber}");
} }
} }
}); });
} }
// @override
// void initState() {
// super.initState();
//
// WidgetsBinding.instance.addPostFrameCallback((_) async {
// final provider = Provider.of<Editpaymentprovider>(context, listen: false);
//
// // 1. Wait for the order list to be fetched via API
// await provider.ordersAddPaymentSelectOrderAPIFunction(
// context,
// widget.values["account_id"],
// );
//
// // 2. Now match orders and populate rows
// if (widget.values != null && widget.values['orders'] != null) {
// final ordersFromWidget = widget.values['orders'];
//
// for (int i = 0; i < ordersFromWidget.length; i++) {
// final widgetOrderNumber = ordersFromWidget[i]['order_number'];
// final widgetAmount = ordersFromWidget[i]['amount'];
//
// // 3. Try to find matching order in the fetched list
// final matchedOrder = provider.orderList.firstWhere(
// (order) => order.orderNumber == widgetOrderNumber,
// orElse: () {
// print("⚠️ Order not found for: $widgetOrderNumber");
// return provider.orderList[0]; // fallback if necessary
// },
// );
//
// provider.addNewRow(); // Adds controller + dropdown slot
// provider.orderAmountControllers[i].text = widgetAmount;
// provider.updateSelectedOrderId(i, matchedOrder);
//
// print("✅ Matched order: ${matchedOrder.orderNumber}");
// }
// }
// });
//
// }
@override @override
void dispose() { void dispose() {
...@@ -156,14 +77,18 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -156,14 +77,18 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer2<Addpaymentprovider,Editpaymentprovider>( return Consumer<Editpaymentprovider>(
builder: (context, provider,editProvider, child) { builder: (context, editProvider, child) {
return WillPopScope( return WillPopScope(
child: Scaffold( child: Scaffold(
resizeToAvoidBottomInset: true, resizeToAvoidBottomInset: true,
backgroundColor: AppColors.scaffold_bg_color, backgroundColor: AppColors.scaffold_bg_color,
appBar: appbar2(context, "${widget.pageTitleName}",provider.resetForm,SizedBox(width: 0,)), appBar: appbar2(
context,
"${widget.pageTitleName}",
editProvider.resetForm,
SizedBox(width: 0),
),
body: Container( body: Container(
padding: EdgeInsets.symmetric(horizontal: 10), padding: EdgeInsets.symmetric(horizontal: 10),
// decoration: BoxDecoration( // decoration: BoxDecoration(
...@@ -174,11 +99,11 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -174,11 +99,11 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
if(widget.values!.isNotEmpty)...[ if (editProvider.editOrderList!.isNotEmpty) ...[
InkResponse( InkResponse(
onTap: () { onTap: () {
// if (provider.selectedOrderIds.length < provider.orderList.length) { // if (provider.selectedOrderIds.length < provider.orderList.length) {
editProvider.addNewRow(); editProvider.editAddNewRow2();
// } else { // } else {
// ScaffoldMessenger.of(context).showSnackBar( // ScaffoldMessenger.of(context).showSnackBar(
// SnackBar( // SnackBar(
...@@ -210,114 +135,194 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -210,114 +135,194 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
), ),
), ),
), ),
if(editProvider.orderAmountControllers.length>0)...[ if (editProvider.paidList.length > 0) ...[
Row( Row(
children: [ children: [
Expanded( Expanded(
child: ListView.builder( child: ListView.builder(
itemCount: editProvider.orderAmountControllers.length, itemCount: editProvider.paidList.length,
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
shrinkWrap: true, shrinkWrap: true,
itemBuilder: (context, index) { itemBuilder: (context, index) {
return Container( return Container(
padding: EdgeInsets.symmetric(horizontal: 10), padding: EdgeInsets.symmetric(
decoration: BoxDecoration( horizontal: 10,
color: Colors.white, ),
borderRadius: BorderRadius.circular(20), margin: EdgeInsets.symmetric(vertical: 10),
), decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column( child: Column(
children: [ children: [
Row( Row(
children: [ children: [
Expanded( Expanded(
flex:3, flex: 3,
child: SizedBox( child: SizedBox(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment:
CrossAxisAlignment.start,
children: [ children: [
TextWidget(context, "Order"), TextWidget(
context,
"Order",
),
Row( Row(
children: [ children: [
Expanded( Expanded(
child: DropdownButtonHideUnderline( child: DropdownButtonHideUnderline(
child: DropdownButton2<OrderList>( child: DropdownButton2<
PaidList
>(
isExpanded: true, isExpanded: true,
hint: Text( hint: Text(
'Select Account Type', 'Select Account Type',
style: TextStyle(fontSize: 14), style:
overflow: TextOverflow.ellipsis, TextStyle(
fontSize:
14,
),
overflow:
TextOverflow
.ellipsis,
), ),
items: items:
editProvider.orderList editProvider
.map( .paidList
(ord) => .map(
DropdownMenuItem<OrderList>( (
value: ord, ord,
child: Text( ) => DropdownMenuItem<
"(Order Number: ${ord.orderNumber}) + (Order Amount: ${ord.totalAmount}) + (Balance Amount: ${ord.balanceAmount}) + (Date Time: ${ord.createdDatetime})" ?? '', PaidList
style: const TextStyle( >(
fontSize: 14, value:
ord,
child: Text(
"(Order Number: ${ord.orderNumber}) + (Order Amount: ${ord.orderAmount}) + (Balance Amount: ${ord.balanceAmount})" ??
'',
style: const TextStyle(
fontSize:
14,
),
overflow:
TextOverflow.ellipsis,
),
), ),
overflow: TextOverflow.ellipsis, )
), .toList(),
), // value:
) // editProvider
.toList(), // .selectedPaidList,
value: editProvider.selectedOrderLists, value: editProvider.paidList.firstWhere(
onChanged: (OrderList? value) { (product) => product.orderId == editProvider.selectedPaidOrderIDs[index],
if (value != null) { ),
if (editProvider.orderList.isNotEmpty) { // value:editProvider.paidList.firstWhere(
editProvider.selectedOrderLists = value; // (
// ord,
// ) =>
// ord.orderId ==
// editProvider.selectedPaidOrderIDs[index],
// orElse:
// () =>
// editProvider.paidList[0],
// ),
onChanged: (
PaidList? value,
) {
if (value !=
null) {
if (editProvider
.paidList
.isNotEmpty) {
editProvider
.selectedPaidList =
value;
print( print(
"Selected Complaint Type: ${value.orderId}, ID: ${value.orderNumber}", "Selected Complaint Type: ${value.orderId}, ID: ${value.orderNumber}",
); );
editProvider.updateSelectedOrderId(index,editProvider.selectedOrderLists); editProvider.updateSelectedPaidOrderId(
index,
editProvider
.selectedPaidList,
);
// provider.selectedOrderIds = value!.orderId!; // provider.selectedOrderIds = value!.orderId!;
// provider.selectedOrderNumbers = value!.orderNumber!; // provider.selectedOrderNumbers = value!.orderNumber!;
// print( // print(
// "hfjkshfg" + // "hfjkshfg" +
// editProvider.selectedOrderIds.toString(), // provider.selectedOrderIds.toString(),
// );
} }
} }
}, },
buttonStyleData: ButtonStyleData( buttonStyleData: ButtonStyleData(
height: 50, height: 50,
width: 160, width: 160,
padding: const EdgeInsets.only( padding:
left: 14, const EdgeInsets.only(
right: 14, left: 14,
), right: 14,
),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14), borderRadius:
color: AppColors.text_field_color, BorderRadius.circular(
14,
),
color:
AppColors
.text_field_color,
), ),
), ),
iconStyleData: IconStyleData( iconStyleData: IconStyleData(
icon: SvgPicture.asset("assets/svg/arrow_dropdown.svg",height: 25,width: 20,), icon: SvgPicture.asset(
"assets/svg/arrow_dropdown.svg",
height: 25,
width: 20,
),
iconSize: 12, iconSize: 12,
iconEnabledColor: Color(0xFF2D2D2D), iconEnabledColor:
iconDisabledColor: Colors.grey, Color(
0xFF2D2D2D,
),
iconDisabledColor:
Colors.grey,
), ),
dropdownStyleData: DropdownStyleData( dropdownStyleData: DropdownStyleData(
maxHeight: 200, maxHeight: 200,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14), borderRadius:
color: AppColors.text_field_color, BorderRadius.circular(
14,
),
color:
AppColors
.text_field_color,
), ),
scrollbarTheme: ScrollbarThemeData( scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(15), radius:
thickness: MaterialStateProperty.all<double>( const Radius.circular(
6, 15,
), ),
thickness:
MaterialStateProperty.all<
double
>(6),
thumbVisibility: thumbVisibility:
MaterialStateProperty.all<bool>(true), MaterialStateProperty.all<
bool
>(true),
), ),
), ),
menuItemStyleData: const MenuItemStyleData( menuItemStyleData:
height: 40, const MenuItemStyleData(
padding: EdgeInsets.only(left: 14, right: 14), height: 40,
), padding:
EdgeInsets.only(
left:
14,
right:
14,
),
),
), ),
), ),
), ),
...@@ -335,9 +340,13 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -335,9 +340,13 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
children: [ children: [
Expanded( Expanded(
flex: 2, flex: 2,
child: textControllerWidget(context, editProvider.orderAmountControllers[index], "Enter Order Amount", (p0) { child: textControllerWidget(
context,
},), editProvider
.editOrderAmountControllers[index],
"Enter Order Amount",
(p0) {},TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
),
), ),
], ],
), ),
...@@ -358,34 +367,277 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -358,34 +367,277 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
), ),
], ],
), ),
],
if (editProvider.editOrderList.length > 0) ...[
if (editProvider.editOrderAmountControllers2.length > 0)
Row(
children: [
Expanded(
child: ListView.builder(
itemCount: editProvider.editOrderList.length,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (context, j) {
return Container(
padding: EdgeInsets.symmetric(
horizontal: 10,
),
margin: EdgeInsets.symmetric(
vertical: 10,
),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column(
children: [
Row(
children: [
Expanded(
flex: 3,
child: SizedBox(
child: Column(
crossAxisAlignment:
CrossAxisAlignment
.start,
children: [
TextWidget(
context,
"Order",
),
Row(
children: [
Expanded(
child: DropdownButtonHideUnderline(
child: DropdownButton2<
EditOrderList
>(
isExpanded:
true,
hint: Text(
'Select Account Type',
style:
TextStyle(
fontSize:
14,
),
overflow:
TextOverflow
.ellipsis,
),
items:
editProvider
.editOrderList
.map(
(
ord,
) => DropdownMenuItem<
EditOrderList
>(
value:
ord,
child: Text(
"(Order Number: ${ord.orderNumber}) + (Order Amount: ${ord.totalAmount}) + (Balance Amount: ${ord.balanceAmount})" ??
'',
style: const TextStyle(
fontSize:
14,
),
overflow:
TextOverflow.ellipsis,
),
),
)
.toList(),
value:
editProvider.selectedOrderIDs[j] !=
null &&
editProvider.editOrderList.isNotEmpty
? editProvider.editOrderList.firstWhere(
(
ord,
) =>
ord.orderId ==
editProvider.selectedOrderIDs[j],
orElse:
() =>
editProvider.editOrderList[0],
)
: null,
onChanged: (
EditOrderList?
value,
) {
if (value !=
null) {
if (editProvider
.editOrderList
.isNotEmpty) {
editProvider
.selectedOrderList =
value;
print(
"Selected Complaint Type: ${value.orderId}, ID: ${value.orderNumber}",
);
editProvider.updateSelectedOrderId(
j,
editProvider
.selectedOrderList,
);
// provider.selectedOrderIds = value!.orderId!;
// provider.selectedOrderNumbers = value!.orderNumber!;
// print(
// "hfjkshfg" +
// provider.selectedOrderIds.toString(),
}
}
},
buttonStyleData: ButtonStyleData(
height: 50,
width: 160,
padding:
const EdgeInsets.only(
left:
14,
right:
14,
),
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(
14,
),
color:
AppColors
.text_field_color,
),
),
iconStyleData: IconStyleData(
icon: SvgPicture.asset(
"assets/svg/arrow_dropdown.svg",
height: 25,
width: 20,
),
iconSize: 12,
iconEnabledColor:
Color(
0xFF2D2D2D,
),
iconDisabledColor:
Colors
.grey,
),
dropdownStyleData: DropdownStyleData(
maxHeight:
200,
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(
14,
),
color:
AppColors
.text_field_color,
),
scrollbarTheme: ScrollbarThemeData(
radius:
const Radius.circular(
15,
),
thickness:
MaterialStateProperty.all<
double
>(6),
thumbVisibility:
MaterialStateProperty.all<
bool
>(true),
),
),
menuItemStyleData:
const MenuItemStyleData(
height:
40,
padding: EdgeInsets.only(
left:
14,
right:
14,
),
),
),
),
),
],
),
],
),
),
),
],
),
SizedBox(width: 10),
Row(
children: [
Expanded(
flex: 2,
child: textControllerWidget(
context,
editProvider
.editOrderAmountControllers2[j],
"Enter Order Amount",
(p0) {},TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
),
),
],
),
SizedBox(height: 10),
// SizedBox(width: 10),
//
// IconButton(
// icon: Icon(Icons.delete),
// onPressed: provider.orderAmountControllers.length > 1
// ? () => provider.removeRow(index)
// : null, // Prevent removing the last row
// ),
],
),
);
},
),
),
],
),
], ],
], ],
] ],
), ),
), ),
), ),
floatingActionButtonLocation: floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat, FloatingActionButtonLocation.centerFloat,
bottomNavigationBar: InkResponse( bottomNavigationBar: InkResponse(
onTap: editProvider.submitLoading?null:() { onTap: editProvider.submitLoading?null:() {
// editProvider.submitLoading = true; editProvider.submitLoading = true;
final data = editProvider.getFormData(); final updatedData = editProvider.getFormDataUpdate();
print(data); print(updatedData);
final insertedData = editProvider.getFormData();
print(insertedData);
editProvider.editPaymentDetailsAdjustedOrdersUpdateAPIFunction(context, widget.values["payment_id"], updatedData, insertedData);
}, },
child: Container( child: Container(
height: 45, height: 45,
alignment: Alignment.center, alignment: Alignment.center,
margin: EdgeInsets.symmetric(horizontal: 10,vertical: 15), margin: EdgeInsets.symmetric(horizontal: 10, vertical: 15),
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5), padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColors.app_blue, color: AppColors.app_blue,
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
), ),
child:editProvider.submitLoading?CircularProgressIndicator.adaptive( child:editProvider.submitLoading?CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation<Color>( valueColor: AlwaysStoppedAnimation(AppColors.app_blue),
AppColors.white ): Text(
)):Text(
"Submit", "Submit",
style: TextStyle( style: TextStyle(
fontSize: 15, fontSize: 15,
...@@ -397,70 +649,13 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -397,70 +649,13 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
), ),
), ),
onWillPop: () async { onWillPop: () async {
provider.resetForm(); editProvider.resetForm();
return _onBackPressed(context); return _onBackPressed(context);
}, },
); );
}, },
); );
} }
Widget TextWidget(context, text) {
return Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(text),
);
}
Widget ErrorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(
context,
controller,
hintText,
Function(String)? onChanged,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
} }
...@@ -2,6 +2,7 @@ import 'dart:async'; ...@@ -2,6 +2,7 @@ import 'dart:async';
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
...@@ -178,14 +179,15 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { ...@@ -178,14 +179,15 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
], ],
), ),
), ),
ErrorWidget(context, provider.descriptionError), errorWidget(context, provider.descriptionError),
textControllerWidget( textControllerWidget(
context, context,
provider.amountController, provider.amountController,
"Amount", "Amount",
provider.onChangeAmount, provider.onChangeAmount,
TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
), ),
ErrorWidget(context, provider.amountError), errorWidget(context, provider.amountError),
TextWidget(context, "Select Payment Mode"), TextWidget(context, "Select Payment Mode"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
...@@ -272,16 +274,16 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { ...@@ -272,16 +274,16 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
], ],
), ),
), ),
ErrorWidget(context, provider.paymentModeError), errorWidget(context, provider.paymentModeError),
textControllerWidget( textControllerWidget(
context, context,
provider.paymentRefController, provider.paymentRefController,
"Payment Reference No. / Cheque No. / UTR No. tf", "Payment Reference No. / Cheque No. / UTR No. tf",
provider.onChangepaymentRef, provider.onChangepaymentRef,TextInputType.text,false,null
), ),
ErrorWidget(context, provider.paymentRefError), errorWidget(context, provider.paymentRefError),
TextWidget(context, "Payment Received Date"), TextWidget(context, "Payment Received Date"),
GestureDetector( GestureDetector(
onTap: () { onTap: () {
...@@ -330,7 +332,7 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { ...@@ -330,7 +332,7 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
], ],
), ),
), ),
ErrorWidget(context, provider.dateError), errorWidget(context, provider.dateError),
...@@ -382,63 +384,6 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { ...@@ -382,63 +384,6 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
}, },
); );
} }
Widget TextWidget(context, text) {
return Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(text),
);
}
Widget ErrorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(
context,
controller,
hintText,
Function(String)? onChanged,
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
} }
...@@ -443,64 +443,6 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> { ...@@ -443,64 +443,6 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
); );
} }
Widget TextWidget(context, text) {
return Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(text),
);
}
Widget ErrorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(context,
controller,
hintText,
Function(String)? onChanged,) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
Future<void> _showLevelApprovalRejectionSheet(BuildContext context, type) { Future<void> _showLevelApprovalRejectionSheet(BuildContext context, type) {
return showModalBottomSheet( return showModalBottomSheet(
useSafeArea: true, useSafeArea: true,
......
...@@ -14,7 +14,13 @@ class Paymentdetailsbymode extends StatefulWidget { ...@@ -14,7 +14,13 @@ class Paymentdetailsbymode extends StatefulWidget {
final pageTitleName; final pageTitleName;
final paymentId; final paymentId;
final mode; final mode;
const Paymentdetailsbymode({super.key,required this.pageTitleName,required this.paymentId,required this.mode});
const Paymentdetailsbymode({
super.key,
required this.pageTitleName,
required this.paymentId,
required this.mode,
});
@override @override
State<Paymentdetailsbymode> createState() => _PaymentdetailsbymodeState(); State<Paymentdetailsbymode> createState() => _PaymentdetailsbymodeState();
...@@ -26,16 +32,15 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -26,16 +32,15 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Paymentsprovider>( var provider = Provider.of<Paymentsprovider>(context, listen: false);
provider.paymentsDetailsByModeAPIFunction(
context, context,
listen: false, widget.paymentId,
widget.mode,
); );
provider.paymentsDetailsByModeAPIFunction(
context, widget.paymentId, widget.mode);
}); });
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Paymentsprovider>( return Consumer<Paymentsprovider>(
...@@ -45,16 +50,22 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -45,16 +50,22 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
return WillPopScope( return WillPopScope(
child: Scaffold( child: Scaffold(
resizeToAvoidBottomInset: true, resizeToAvoidBottomInset: true,
appBar: appbar2(context, widget.pageTitleName, provider.resetAll, appBar: appbar2(
paymentDetails.status=="Registered"?InkResponse( context,
onTap: () { widget.pageTitleName,
_showOptionsSheet( provider.resetAll,
context paymentDetails.status == "Registered"
); ? InkResponse(
}, onTap: () {
child: SvgPicture.asset("assets/svg/ic_more.svg", height: 30,), _showOptionsSheet(context);
): },
SizedBox(width: 0,),), child: SvgPicture.asset(
"assets/svg/ic_more.svg",
height: 30,
),
)
: SizedBox(width: 0),
),
backgroundColor: AppColors.scaffold_bg_color, backgroundColor: AppColors.scaffold_bg_color,
body: Container( body: Container(
child: SingleChildScrollView( child: SingleChildScrollView(
...@@ -65,8 +76,14 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -65,8 +76,14 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
), ),
margin: EdgeInsets.symmetric(vertical: 10, horizontal: 10), margin: EdgeInsets.symmetric(
padding: EdgeInsets.symmetric(vertical: 10, horizontal: 10), vertical: 10,
horizontal: 10,
),
padding: EdgeInsets.symmetric(
vertical: 10,
horizontal: 10,
),
child: Column( child: Column(
children: [ children: [
Row( Row(
...@@ -81,7 +98,9 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -81,7 +98,9 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
color: Color(0xFFFFF3CE), color: Color(0xFFFFF3CE),
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
child: SvgPicture.asset("assets/svg/fin_ic.svg"), child: SvgPicture.asset(
"assets/svg/fin_ic.svg",
),
), ),
), ),
SizedBox(width: 10), SizedBox(width: 10),
...@@ -89,7 +108,8 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -89,7 +108,8 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
flex: 4, flex: 4,
child: SizedBox( child: SizedBox(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment:
CrossAxisAlignment.start,
children: [ children: [
Text( Text(
paymentDetails.accountName ?? "-", paymentDetails.accountName ?? "-",
...@@ -163,14 +183,13 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -163,14 +183,13 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: builder:
(context) => (context) => Fileviewer(
Fileviewer(
fileName: fileName:
paymentDetails paymentDetails
.attachmentViewFileName!, .attachmentViewFileName!,
fileUrl: fileUrl:
paymentDetails paymentDetails
.attachmentDirFilePath!, .attachmentDirFilePath!,
), ),
), ),
); );
...@@ -183,17 +202,20 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -183,17 +202,20 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
color: color:
provider.Headings[j] == "Attachment" provider.Headings[j] ==
? AppColors.app_blue "Attachment"
: Color(0xFF818181), ? AppColors.app_blue
: Color(0xFF818181),
decoration: decoration:
provider.Headings[j] == "Attachment" provider.Headings[j] ==
? TextDecoration.underline "Attachment"
: TextDecoration.none, ? TextDecoration.underline
: TextDecoration.none,
decorationColor: decorationColor:
provider.Headings[j] == "Attachment" provider.Headings[j] ==
? AppColors.app_blue "Attachment"
: AppColors.white, ? AppColors.app_blue
: AppColors.white,
), ),
), ),
), ),
...@@ -207,235 +229,249 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -207,235 +229,249 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
), ),
Container( Container(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
padding: EdgeInsets.symmetric(vertical: 5,horizontal: 10), padding: EdgeInsets.symmetric(
child: Text("Adjusted Order List", vertical: 5,
horizontal: 10,
),
child: Text(
"Adjusted Order List",
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
color: AppColors.grey_thick color: AppColors.grey_thick,
),)), ),
),
),
ListView.builder( ListView.builder(
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
shrinkWrap: true, shrinkWrap: true,
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
itemCount: adjustList.length, itemCount: adjustList.length,
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), padding: EdgeInsets.symmetric(
horizontal: 10,
itemBuilder: (context, index) { vertical: 10,
return Container( ),
margin: EdgeInsets.symmetric(vertical: 5),
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: List.generate(7, (j) {
final textheads = [
"Order Number",
"Order Amount",
"Paid Amount",
"Balance Amount",
"Adjusted Amount",
"DateTime",
"Actions",
];
final textSubheads = [
"${adjustList[index].orderNumber}",
"${adjustList[index].totalAmount}",
"${adjustList[index].paidAmount}",
"${adjustList[index].balanceAmount}",
"${adjustList[index].adjustedAmount}",
"${adjustList[index].datetime}",
"View",
];
return Container(
padding: EdgeInsets.symmetric(
vertical: 6,
horizontal: 0,
),
child: Row(
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded( itemBuilder: (context, index) {
child: Text(textheads[j].toString(), return Container(
maxLines: 2, margin: EdgeInsets.symmetric(vertical: 5),
overflow: TextOverflow.ellipsis,), padding: EdgeInsets.symmetric(
horizontal: 15,
vertical: 10,
),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: List.generate(7, (j) {
final textheads = [
"Order Number",
"Order Amount",
"Paid Amount",
"Balance Amount",
"Adjusted Amount",
"DateTime",
"Actions",
];
final textSubheads = [
"${adjustList[index].orderNumber}",
"${adjustList[index].totalAmount}",
"${adjustList[index].paidAmount}",
"${adjustList[index].balanceAmount}",
"${adjustList[index].adjustedAmount}",
"${adjustList[index].datetime}",
"View",
];
return Container(
padding: EdgeInsets.symmetric(
vertical: 6,
horizontal: 0,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
child: Text(
textheads[j].toString(),
maxLines: 2,
overflow: TextOverflow.ellipsis,
), ),
Expanded( ),
child: InkResponse( Expanded(
onTap: () { child: InkResponse(
if (textheads[j] == "Actions") { onTap: () {
Navigator.push( if (textheads[j] == "Actions") {
context, Navigator.push(
MaterialPageRoute(
builder:
(context) =>
Ordersdetailsbymodes(
pageTitleName: "CRM Order Details",
mode: widget.mode,
orderId: adjustList[index].id,
),
),
);
}
},
child: SizedBox(
// height:45,
width:
MediaQuery.of(
context, context,
).size.width * MaterialPageRoute(
0.75, builder:
child: Text( (
textSubheads[j], context,
maxLines: 2, ) => Ordersdetailsbymodes(
overflow: pageTitleName:
TextOverflow.ellipsis, "CRM Order Details",
style: TextStyle( mode: widget.mode,
color:textheads[j] == "Actions"? AppColors.app_blue: orderId:
Color(0xFF818181), adjustList[index].id,
decoration: ),
textheads[j] == "Actions"
? TextDecoration.underline
: TextDecoration.none,
decorationColor:
textheads[j] == "Actions"
? AppColors.app_blue
: AppColors.white,
), ),
);
}
},
child: SizedBox(
// height:45,
width:
MediaQuery.of(
context,
).size.width *
0.75,
child: Text(
textSubheads[j],
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color:
textheads[j] == "Actions"
? AppColors.app_blue
: Color(0xFF818181),
decoration:
textheads[j] == "Actions"
? TextDecoration.underline
: TextDecoration.none,
decorationColor:
textheads[j] == "Actions"
? AppColors.app_blue
: AppColors.white,
), ),
), ),
), ),
), ),
),
], ],
), ),
); );
}), }),
), ),
); );
} },
), ),
], ],
), ),
), ),
), ),
bottomNavigationBar: bottomNavigationBar:
widget.mode == "self" ? Container(height: 0,) : widget.mode == "self"
Container( ? Container(height: 0)
margin: EdgeInsets.symmetric(horizontal: 10), : Container(
alignment: Alignment.bottomCenter, margin: EdgeInsets.symmetric(horizontal: 10),
height: 60, alignment: Alignment.bottomCenter,
child: Container( height: 60,
margin: EdgeInsets.only(bottom: 10), child: Container(
alignment: Alignment.center, margin: EdgeInsets.only(bottom: 10),
height: 45, alignment: Alignment.center,
child: Row( height: 45,
mainAxisAlignment: MainAxisAlignment.center, child: Row(
children: [ mainAxisAlignment: MainAxisAlignment.center,
children: [
if(!["self","admin"].contains(widget.mode))...[ if (!["self", "admin"].contains(widget.mode)) ...[
Expanded( Expanded(
child: InkResponse( child: InkResponse(
onTap: () { onTap: () {
_showLevelApprovalRejectionSheet(context, "Reject"); _showLevelApprovalRejectionSheet(
}, context,
child: Container( "Reject",
decoration: BoxDecoration( );
borderRadius: BorderRadius.circular(8), },
color: Color(0xFFFFEFEF), child: Container(
border: Border.all( decoration: BoxDecoration(
color: Color(0xFFED3424), borderRadius: BorderRadius.circular(8),
width: 0.5, color: Color(0xFFFFEFEF),
), border: Border.all(
), color: Color(0xFFED3424),
child: Center( width: 0.5,
child: Text( ),
"Reject", ),
style: TextStyle( child: Center(
color: Color(0xFFED3424), child: Text(
"Reject",
style: TextStyle(
color: Color(0xFFED3424),
),
),
),
),
), ),
), ),
),
),
),
),
SizedBox(width: 10), SizedBox(width: 10),
Expanded( Expanded(
child: InkResponse( child: InkResponse(
onTap: () { onTap: () {
// provider // provider
// .approveRejectPaymentRequestAPIFunction( // .approveRejectPaymentRequestAPIFunction(
// context, // context,
// provider.requestsDetails.id, // provider.requestsDetails.id,
// ); // );
_showLevelApprovalRejectionSheet( _showLevelApprovalRejectionSheet(
context, "Approve"); context,
}, "Approve",
child: Container( );
decoration: BoxDecoration( },
borderRadius: BorderRadius.circular(8), child: Container(
color: Color(0xFFE7FFE5), decoration: BoxDecoration(
border: Border.all( borderRadius: BorderRadius.circular(8),
color: Color(0xFF0D9C00), color: Color(0xFFE7FFE5),
width: 0.5, border: Border.all(
), color: Color(0xFF0D9C00),
), width: 0.5,
child: Center( ),
child: Text( ),
"Approve", child: Center(
style: TextStyle( child: Text(
color: Color(0xFF0D9C00), "Approve",
style: TextStyle(
color: Color(0xFF0D9C00),
),
),
),
),
), ),
), ),
), ] else if (widget.mode == "admin") ...[
), Expanded(
), child: InkResponse(
), onTap: () {
]else if(widget.mode=="admin")...[ _showLevelDeletionSheet(context);
Expanded( },
child: InkResponse( child: Container(
onTap: () { decoration: BoxDecoration(
_showLevelDeletionSheet(context); borderRadius: BorderRadius.circular(8),
}, color: Color(0xFFFFEFEF),
child: Container( border: Border.all(
decoration: BoxDecoration( color: Color(0xFFED3424),
borderRadius: BorderRadius.circular(8), width: 0.5,
color: Color(0xFFFFEFEF), ),
border: Border.all( ),
color: Color(0xFFED3424), child: Center(
width: 0.5, child: Text(
), "Delete",
), style: TextStyle(
child: Center( color: Color(0xFFED3424),
child: Text( ),
"Delete", ),
style: TextStyle( ),
color: Color(0xFFED3424), ),
), ),
), ),
), ],
), ],
), ),
), ),
] ),
],
),
),
),
), ),
onWillPop: () { onWillPop: () {
...@@ -448,64 +484,6 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -448,64 +484,6 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
Widget TextWidget(context, text) {
return Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(text),
);
}
Widget ErrorWidget(context, text) {
if (text != null)
return Text(text!, style: TextStyle(color: Colors.red, fontSize: 12));
else
return SizedBox(height: 10);
}
Widget textControllerWidget(context,
controller,
hintText,
Function(String)? onChanged,) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
child: TextFormField(
controller: controller,
keyboardType: TextInputType.text,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
),
),
],
);
}
Future<void> _showOptionsSheet(BuildContext context) { Future<void> _showOptionsSheet(BuildContext context) {
return showModalBottomSheet( return showModalBottomSheet(
useSafeArea: true, useSafeArea: true,
...@@ -520,7 +498,6 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -520,7 +498,6 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
builder: (context, setState) { builder: (context, setState) {
return SafeArea( return SafeArea(
child: Consumer<Paymentsprovider>( child: Consumer<Paymentsprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
return Container( return Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(
...@@ -537,41 +514,101 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -537,41 +514,101 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
SizedBox(height: 15), SizedBox(height: 15),
...List.generate(2, (index) { ...List.generate(2, (index) {
final assetnames = [ final assetnames = ["ic_edit", "ic_edit"];
"ic_edit",
"ic_edit",
];
final Headingnames = [ final Headingnames = [
"Edit Payment Details", "Edit Payment Details",
"Edit Adjusted Order", "Edit Adjusted Order",
]; ];
return ListTile( return ListTile(
onTap: () { onTap: () async{
var res;
switch (index) { switch (index) {
case 0: case 0:
Navigator.push(context, MaterialPageRoute(builder: (context) => Editpaymentdetailsbymode(pageTitleName: "Edit Payment (${widget.mode})",mode: widget.mode, res = await Navigator.push(
values:{ context,
"payment_id":provider.paymentDetails.paymentId, MaterialPageRoute(
"description":provider.paymentDetails!.description, builder:
"amount":provider.paymentDetails!.amount, (
"payment_mode":provider.paymentDetails!.paymentType, context,
"pay_ref":provider.paymentDetails!.refNo, ) => Editpaymentdetailsbymode(
"pay_received_date":provider.paymentDetails!.paymentDate, pageTitleName:
}), "Edit Payment (${widget.mode})",
)); mode: widget.mode,
values: {
"payment_id":
provider
.paymentDetails
.paymentId,
"description":
provider
.paymentDetails!
.description,
"amount":
provider
.paymentDetails!
.amount,
"payment_mode":
provider
.paymentDetails!
.paymentType,
"pay_ref":
provider
.paymentDetails!
.refNo,
"pay_received_date":
provider
.paymentDetails!
.paymentDate,
},
),
),
);
break; break;
case 1: case 1:
Navigator.push(context, MaterialPageRoute(builder: (context) => Editadjustedorderlist(mode: widget.mode,pageTitleName: "Edit Adjusted Order List (${widget.mode})", res = await Navigator.push(
context,
values: { MaterialPageRoute(
"account_id":provider.paymentDetails.accId, builder:
"orders": provider.paidLists.map((order) => { (context) => Editadjustedorderlist(
"order_number": order.orderNumber, mode: widget.mode,
"amount": order.adjustedAmount, pageTitleName:
}).toList(), "Edit Adjusted Order List (${widget.mode})",
},),));
values: {
"account_id":
provider
.paymentDetails
.accId,
"payment_id":
provider
.paymentDetails
.paymentId,
"orders":
provider.paidLists
.map(
(order) => {
"order_number":
order
.orderNumber,
"amount":
order
.adjustedAmount,
},
)
.toList(),
},
),
),
);
break; break;
} }
if(res==true){
provider.paymentsDetailsByModeAPIFunction(
context,
widget.paymentId,
widget.mode,
);
}
}, },
leading: SvgPicture.asset( leading: SvgPicture.asset(
"assets/svg/${assetnames[index]}.svg", "assets/svg/${assetnames[index]}.svg",
...@@ -612,7 +649,6 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -612,7 +649,6 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
builder: (context, setState) { builder: (context, setState) {
return SafeArea( return SafeArea(
child: Consumer<Paymentsprovider>( child: Consumer<Paymentsprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
final details = provider.paymentDetails; final details = provider.paymentDetails;
return Container( return Container(
...@@ -631,7 +667,9 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -631,7 +667,9 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
Align( Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: Text( child: Text(
type == "Approve" ? "${"Payment Approval"}" : "${"Payment Reject"}", type == "Approve"
? "${"Payment Approval"}"
: "${"Payment Reject"}",
style: TextStyle( style: TextStyle(
color: AppColors.app_blue, color: AppColors.app_blue,
fontSize: 16, fontSize: 16,
...@@ -640,7 +678,9 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -640,7 +678,9 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
), ),
Padding( Padding(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
bottom: 5.0, top: 8.0), bottom: 5.0,
top: 8.0,
),
child: Text("Remarks"), child: Text("Remarks"),
), ),
Container( Container(
...@@ -652,16 +692,22 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -652,16 +692,22 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
), ),
child: Padding( child: Padding(
padding: const EdgeInsets.fromLTRB( padding: const EdgeInsets.fromLTRB(
10.0, 0.0, 10, 0), 10.0,
0.0,
10,
0,
),
child: TextFormField( child: TextFormField(
controller: provider controller:
.approvalRejectionController, provider.approvalRejectionController,
readOnly: true, readOnly: true,
keyboardType: TextInputType.text, keyboardType: TextInputType.text,
maxLines: 60, maxLines: 60,
onChanged: provider.onChangeApprovalRejection, onChanged: provider.onChangeApprovalRejection,
style: TextStyle( style: TextStyle(
color: Color(0xFF818181), fontSize: 14), color: Color(0xFF818181),
fontSize: 14,
),
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Write Remarks", hintText: "Write Remarks",
hintStyle: TextStyle( hintStyle: TextStyle(
...@@ -676,20 +722,26 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -676,20 +722,26 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
), ),
), ),
), ),
if(provider.approvalRejectionError!=null)...[ if (provider.approvalRejectionError != null) ...[
Container( Container(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
margin: EdgeInsets.only(top: 2.5, left: 25), margin: EdgeInsets.only(top: 2.5, left: 25),
child: Text( child: Text(
"${provider.approvalRejectionError}", "${provider.approvalRejectionError}",
style: TextStyle(color: Colors.red, fontSize: 10), style: TextStyle(
color: Colors.red,
fontSize: 10,
),
), ),
), ),
], ],
InkWell( InkWell(
onTap: () { onTap: () {
provider.paymentApprovalRejectionAPIFunction(
provider.paymentApprovalRejectionAPIFunction(context, provider.paymentDetails.paymentId, type); context,
provider.paymentDetails.paymentId,
type,
);
}, },
child: Container( child: Container(
...@@ -766,8 +818,6 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -766,8 +818,6 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
), ),
), ),
InkWell( InkWell(
onTap: () { onTap: () {
_confirmDeletionSheet(context); _confirmDeletionSheet(context);
...@@ -806,6 +856,7 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -806,6 +856,7 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
}, },
); );
} }
Future<void> _confirmDeletionSheet(BuildContext context) { Future<void> _confirmDeletionSheet(BuildContext context) {
return showModalBottomSheet( return showModalBottomSheet(
useSafeArea: true, useSafeArea: true,
...@@ -827,9 +878,7 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -827,9 +878,7 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
top: 30, top: 30,
), ),
child: Consumer< child: Consumer<Paymentsprovider>(
Paymentsprovider
>(
builder: (context, provider, child) { builder: (context, provider, child) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Column(
...@@ -859,7 +908,10 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> { ...@@ -859,7 +908,10 @@ class _PaymentdetailsbymodeState extends State<Paymentdetailsbymode> {
if (!f.hasPrimaryFocus) { if (!f.hasPrimaryFocus) {
f.unfocus(); f.unfocus();
} }
provider.paymentDeletionAPIFunction(context, provider.paymentDetails.paymentId); provider.paymentDeletionAPIFunction(
context,
provider.paymentDetails.paymentId,
);
// Navigator.push(context,MaterialPageRoute(builder: (context)=>Profile())); // Navigator.push(context,MaterialPageRoute(builder: (context)=>Profile()));
}, },
child: Container( child: Container(
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment