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