Commit 381932be authored by Sai Srinivas's avatar Sai Srinivas
Browse files

27-06-2025 By Sai Srinivas

Add Order Module Test cases.
parent 722d6c9c
......@@ -24,6 +24,12 @@ import '../HomeScreenNotifier.dart';
class Addorderprovider extends ChangeNotifier {TextEditingController dropDownSearchController = TextEditingController();
TextEditingController dropDownTpcSearchController = TextEditingController();
TextEditingController billingStateSearchController = TextEditingController();
TextEditingController billingDistrictSearchController = TextEditingController();
TextEditingController billingSubLocSearchController = TextEditingController();
TextEditingController dispatchStateSearchController = TextEditingController();
TextEditingController dispatchDistrictSearchController = TextEditingController();
TextEditingController dispatchSubLocSearchController = TextEditingController();
TextEditingController billingNameController = TextEditingController();
TextEditingController billingAddressController = TextEditingController();
......@@ -802,13 +808,13 @@ void updateRowCalculations(int index) {
if (data != null) {
if (data.error == "0") {
_tpcApplicable = ["Yes","No"];
_erectionScope = data.erectionScope!;
_unloadingScope = data.unloadingScope!;
_freightScope = data.freightScope!;
_employees = data.employees!;
_billingStates = data.states!;
_dispatchStates = data.states!;
_saleProducts = data.saleProducts!;
_erectionScope = data.erectionScope??[];
_unloadingScope = data.unloadingScope??[];
_freightScope = data.freightScope??[];
_employees = data.employees??[];
_billingStates = data.states??[];
_dispatchStates = data.states??[];
_saleProducts = data.saleProducts??[];
checkDropdownselected();
......@@ -1314,6 +1320,14 @@ void updateRowCalculations(int index) {
billingPincodeController.clear();
dispatchAddressController.clear();
dispatchPincodeController.clear();
billingStateSearchController.clear();
billingDistrictSearchController.clear();
billingSubLocSearchController.clear();
dispatchStateSearchController.clear();
dispatchDistrictSearchController.clear();
dispatchSubLocSearchController.clear();
gstController.clear();
orderReceivedDateController.clear();
tpcAmountController.clear();
......
......@@ -153,13 +153,17 @@ textInputAction,
onChanged: onChanged,
focusNode: focusNode,
onTapUpOutside: (event) {
if(focusNode!=null){
if(focusNode.hasFocus){
focusNode.unfocus();
}
}
},
textInputAction: textInputAction,
onEditingComplete: () {
if(focusNode!=null){
focusNode.unfocus();
}
if(focusNode2!=null){
focusNode2.requestFocus();
}
......
......@@ -38,6 +38,7 @@ class _AddcommonpaymentState extends State<Addcommonpayment>{
@override
void dispose() {
focusNodes.map((e) => e.dispose(),);
super.dispose();
}
......
......@@ -25,6 +25,7 @@ class AddorderScreen extends StatefulWidget {
class _AddorderScreenState extends State<AddorderScreen> {
FocusNode focusNode = FocusNode();
FocusNode focusNodetpc = FocusNode();
List<FocusNode> focusNodes = List.generate(10, (index) => FocusNode());
Dropdowntheme ddtheme = Dropdowntheme();
@override
void initState() {
......@@ -43,6 +44,9 @@ Dropdowntheme ddtheme = Dropdowntheme();
@override
void dispose() {
focusNodes.map((e)=>e.dispose());
focusNode.dispose();
focusNodetpc.dispose();
super.dispose();
}
......@@ -76,13 +80,28 @@ Dropdowntheme ddtheme = Dropdowntheme();
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget(context, "Account"),
Container(
InkResponse(
onTap: () {
if (focusNode.hasFocus) {
focusNode.unfocus();
} else {
FocusScope.of(context).requestFocus(focusNode);
}
},
child: Container(
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: ListTile(
onTap: (){
if (focusNode.hasFocus) {
focusNode.unfocus();
} else {
FocusScope.of(context).requestFocus(focusNode);
}
},
title: TextFormField(
focusNode: focusNode,
onTapUpOutside: (event) {
......@@ -108,11 +127,12 @@ Dropdowntheme ddtheme = Dropdowntheme();
focusedBorder: InputBorder.none,
isDense: true,
contentPadding: const EdgeInsets.symmetric(
horizontal: 10,
horizontal: 0,
vertical: 8,
),
hintText: 'Select Account Type',
hintStyle: const TextStyle(fontSize: 12),
hintStyle: const TextStyle(fontSize: 14),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
),
......@@ -135,13 +155,14 @@ Dropdowntheme ddtheme = Dropdowntheme();
),
),
),
),
if (provider.accountList.isNotEmpty &&
focusNode.hasFocus) ...[
Card(
margin: EdgeInsets.symmetric(horizontal: 0),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10),
height: 150,
height: widget.mode=="self"?50:150,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
),
......@@ -306,6 +327,9 @@ Dropdowntheme ddtheme = Dropdowntheme();
TextInputType.text,
false,
null,
focusNodes[0],
null,
TextInputAction.done
),
errorWidget(context, provider.billingNameError),
TextWidget(context, "Billing State"),
......@@ -355,6 +379,44 @@ Dropdowntheme ddtheme = Dropdowntheme();
);
}
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.billingStateSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.billingStateSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search Sate...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.billingStateSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
......@@ -410,6 +472,44 @@ Dropdowntheme ddtheme = Dropdowntheme();
);
}
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.billingDistrictSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.billingDistrictSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search District...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.district
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.billingDistrictSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
......@@ -453,6 +553,44 @@ Dropdowntheme ddtheme = Dropdowntheme();
value!.subLocality!;
}
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.billingSubLocSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.billingSubLocSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search Sub Location...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.subLocality
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.billingSubLocSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
......@@ -470,6 +608,9 @@ Dropdowntheme ddtheme = Dropdowntheme();
TextInputType.text,
false,
null,
focusNodes[1],
focusNodes[2],
TextInputAction.next
),
errorWidget(context, provider.billingAddressError),
......@@ -481,6 +622,10 @@ Dropdowntheme ddtheme = Dropdowntheme();
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[2],
null,
TextInputAction.done,
6
),
errorWidget(context, provider.billingPincodeError),
......@@ -529,6 +674,44 @@ Dropdowntheme ddtheme = Dropdowntheme();
);
}
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.dispatchStateSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.dispatchStateSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search Sate...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.dispatchStateSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
......@@ -588,6 +771,44 @@ Dropdowntheme ddtheme = Dropdowntheme();
);
}
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.dispatchDistrictSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.dispatchDistrictSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search District...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.district
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.dispatchDistrictSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
......@@ -631,6 +852,44 @@ Dropdowntheme ddtheme = Dropdowntheme();
value!.subLocality!;
}
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.dispatchSubLocSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.dispatchSubLocSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search Sub Location...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.subLocality
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.dispatchSubLocSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
......@@ -649,6 +908,9 @@ Dropdowntheme ddtheme = Dropdowntheme();
TextInputType.text,
false,
null,
focusNodes[3],
focusNodes[4],
TextInputAction.next
),
errorWidget(context, provider.dispatchAddressError),
......@@ -660,6 +922,10 @@ Dropdowntheme ddtheme = Dropdowntheme();
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[4],
focusNodes[5],
TextInputAction.next,
6
),
errorWidget(context, provider.dispatchPincodeError),
......@@ -668,9 +934,12 @@ Dropdowntheme ddtheme = Dropdowntheme();
provider.gstController,
"GST Number",
provider.onChangedGst,
TextInputType.number,
TextInputType.text,
false,
FilteringTextInputFormatter.digitsOnly,
null,
focusNodes[5],
null,
TextInputAction.done
),
errorWidget(context, provider.gstError),
......@@ -965,11 +1234,11 @@ Dropdowntheme ddtheme = Dropdowntheme();
focusedBorder: InputBorder.none,
isDense: true,
contentPadding: const EdgeInsets.symmetric(
horizontal: 10,
horizontal: 0,
vertical: 8,
),
hintText: 'Select TPC Agent',
hintStyle: const TextStyle(fontSize: 12),
hintStyle: const TextStyle(fontSize: 14),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
),
......@@ -1062,6 +1331,9 @@ Dropdowntheme ddtheme = Dropdowntheme();
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[6],
focusNodes[7],
TextInputAction.next
),
errorWidget(context, provider.tpcAmountError),
],
......@@ -1223,8 +1495,9 @@ Dropdowntheme ddtheme = Dropdowntheme();
}
class OrderForm extends StatelessWidget {
const OrderForm({super.key});
OrderForm({super.key});
FocusNode focusNode = FocusNode();
@override
Widget build(BuildContext context) {
......@@ -1329,9 +1602,11 @@ class OrderForm extends StatelessWidget {
),
)
.toList(),
value: provider.saleProducts.firstWhere(
value:
provider.saleProducts.contains(provider.selectedSaleProducts)?
provider.saleProducts.firstWhere(
(product) => product.id == provider.selectedSaleProductID[index],
),
):null,
onChanged: (SaleProducts? value) {
if (value != null) {
if (provider
......@@ -1372,6 +1647,10 @@ class OrderForm extends StatelessWidget {
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
),
),
const SizedBox(width: 8.0),
......@@ -1405,6 +1684,9 @@ class OrderForm extends StatelessWidget {
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
),
),
],
......@@ -1441,6 +1723,9 @@ class OrderForm extends StatelessWidget {
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
),
),
const SizedBox(width: 8.0),
......@@ -1473,6 +1758,9 @@ class OrderForm extends StatelessWidget {
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
),
),
const SizedBox(width: 8.0),
......@@ -1505,6 +1793,9 @@ class OrderForm extends StatelessWidget {
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
),
),
],
......@@ -1537,6 +1828,9 @@ class OrderForm extends StatelessWidget {
TextInputType.number,
true,
null,
null,
null,
TextInputAction.next
),
),
// const SizedBox(width: 8.0),
......@@ -1575,6 +1869,9 @@ class OrderForm extends StatelessWidget {
TextInputType.text,
true,
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
),
textControllerWidget(
context,
......@@ -1584,6 +1881,9 @@ class OrderForm extends StatelessWidget {
TextInputType.text,
true,
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
),
textControllerWidget(
context,
......@@ -1593,6 +1893,9 @@ class OrderForm extends StatelessWidget {
TextInputType.text,
true,
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
),
textControllerWidget(
context,
......@@ -1602,6 +1905,9 @@ class OrderForm extends StatelessWidget {
TextInputType.text,
true,
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
),
textControllerWidget(
context,
......@@ -1611,6 +1917,9 @@ class OrderForm extends StatelessWidget {
TextInputType.text,
true,
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
),
textControllerWidget(
context,
......@@ -1618,8 +1927,11 @@ class OrderForm extends StatelessWidget {
"Note",
(p0) {},
TextInputType.text,
true,
FilteringTextInputFormatter.digitsOnly,
false,
null,
focusNode,
null,
TextInputAction.done
),
],
),
......
......@@ -17,6 +17,7 @@ import '../../Utils/dropdownTheme.dart';
class AddpaymentScreen extends StatefulWidget {
final pageTitleName;
final mode;
const AddpaymentScreen({super.key, this.pageTitleName, this.mode});
@override
......@@ -26,21 +27,18 @@ class AddpaymentScreen extends StatefulWidget {
class _AddpaymentScreenState extends State<AddpaymentScreen> {
Timer? _debounce;
FocusNode focusNode = FocusNode();
List<FocusNode> focusNodes = List.generate(5, (index) => FocusNode());
Dropdowntheme ddtheme = Dropdowntheme();
String? selectedValue;
final TextEditingController textEditingController = TextEditingController();
@override
void initState() {
// TODO: implement initState
super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Addpaymentprovider>(
context,
listen: false,
);
var provider = Provider.of<Addpaymentprovider>(context, listen: false);
if (provider.dateNow == null) {
provider.setDate(DateTime.now());
}
......@@ -56,6 +54,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
@override
void dispose() {
focusNodes.map((e)=>e.dispose());
super.dispose();
}
......@@ -68,12 +67,16 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
Widget build(BuildContext context) {
return Consumer<Addpaymentprovider>(
builder: (context, provider, child) {
return WillPopScope(
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 +87,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget(context, "Account"),
Container(
alignment: Alignment.center,
......@@ -100,17 +102,18 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
},
controller: provider.dropDownSearchController,
onChanged: (value) async {
Future.delayed(Duration(milliseconds: 100),() async {
await provider.ordersAddPaymentSelectAccountAPIFunction(
Future.delayed(
Duration(milliseconds: 100),
() async {
await provider
.ordersAddPaymentSelectAccountAPIFunction(
context,
widget.mode,
provider.selectedAccountID,
value,
);
},);
},
);
},
decoration: InputDecoration(
enabledBorder: InputBorder.none,
......@@ -145,7 +148,8 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
),
),
if(provider.accountList.isNotEmpty && focusNode.hasFocus)...[
if (provider.accountList.isNotEmpty &&
focusNode.hasFocus) ...[
Card(
margin: EdgeInsets.symmetric(horizontal: 0),
child: Container(
......@@ -153,7 +157,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
height: 150,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
),
child: Scrollbar(
thickness: 2.5,
......@@ -165,31 +168,50 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
physics: AlwaysScrollableScrollPhysics(),
itemBuilder: (context, index) {
return InkResponse(
onTap: () async{
onTap: () async {
if (provider.accountList.isNotEmpty) {
provider.selectedAccountList = provider.accountList[index];
provider.selectedAccountList =
provider.accountList[index];
print("Selected Complaint Type: ${provider.accountList[index].text}, ID: ${provider.accountList[index].id}");
provider.selectedAccountID = provider.accountList[index].id!;
provider.selectedAccountName = provider.accountList[index].text!;
print("hfjkshfg" + provider.selectedAccountID.toString());
provider.dropDownSearchController.text = provider.accountList[index].text!;
print(
"Selected Complaint Type: ${provider.accountList[index].text}, ID: ${provider.accountList[index].id}",
);
provider.selectedAccountID =
provider.accountList[index].id!;
provider.selectedAccountName =
provider.accountList[index].text!;
print(
"hfjkshfg" +
provider.selectedAccountID
.toString(),
);
provider.dropDownSearchController.text =
provider.accountList[index].text!;
}
provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID);
provider
.ordersAddPaymentSelectOrderAPIFunction(
context,
provider.selectedAccountID,
);
provider.accountList = [];
},
child: SizedBox(
height: 45,
child: Align(
alignment: Alignment.centerLeft,
child: Text(provider.accountList[index].text!))));
},),
child: Text(
provider.accountList[index].text!,
),
),
),
);
},
),
),
),
),
)
],
// DropdownButtonHideUnderline(
// child: Row(
// children: [
......@@ -481,9 +503,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
// ],
// ),
// ),
errorWidget(context, provider.selectAccountError),
textControllerWidget(
......@@ -491,11 +510,17 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
provider.amountController,
"Amount",
provider.onChangeAmount,
TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[0],
null,
TextInputAction.next
),
errorWidget(context, provider.amountError),
///Addorderbutton
if(provider.selectedAccountID!.isNotEmpty)...[
if (provider.selectedAccountID!.isNotEmpty) ...[
InkResponse(
onTap: () {
// if (provider.selectedOrderIds.length < provider.orderList.length) {
......@@ -531,76 +556,116 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
),
),
),
if(provider.orderAmountControllers.length>0)...[
if (provider.orderAmountControllers.length > 0) ...[
Row(
children: [
Expanded(
child: ListView.builder(
itemCount: provider.orderAmountControllers.length,
itemCount:
provider.orderAmountControllers.length,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (context, index) {
return Row(
children: [
Expanded(
flex:3,
flex: 3,
child: SizedBox(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
TextWidget(context, "Order"),
Row(
children: [
Expanded(
child: DropdownButtonHideUnderline(
child: DropdownButton2<OrderList>(
child: DropdownButton2<
OrderList
>(
isExpanded: true,
hint: Text(
'Select Account Type',
style: TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 14,
),
overflow:
TextOverflow
.ellipsis,
),
items:
provider.orderList
.map(
(ord) =>
DropdownMenuItem<OrderList>(
(
ord,
) => DropdownMenuItem<
OrderList
>(
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.totalAmount}) + (Balance Amount: ${ord.balanceAmount}) + (Date Time: ${ord.createdDatetime})" ??
'',
style: const TextStyle(
fontSize: 14,
fontSize:
14,
),
overflow: TextOverflow.ellipsis,
overflow:
TextOverflow
.ellipsis,
),
),
)
.toList(),
// value: provider.selectedOrderLists,
value: provider.orderList.firstWhere(
(product) => product.orderId == provider.selectedOrderIds[index],
),
onChanged: (OrderList? value) {
value: provider
.orderList
.firstWhere(
(product) =>
product
.orderId ==
provider
.selectedOrderIds[index],
),
onChanged: (
OrderList? value,
) {
if (value != null) {
if (provider.orderList.isNotEmpty) {
provider.selectedOrderLists = value;
if (provider
.orderList
.isNotEmpty) {
provider.selectedOrderLists =
value;
print(
"Selected Complaint Type: ${value.orderId}, ID: ${value.orderNumber}",
);
provider.updateSelectedOrderId(index,provider.selectedOrderLists);
provider.updateSelectedOrderId(
index,
provider
.selectedOrderLists,
);
// provider.selectedOrderIds = value!.orderId!;
// provider.selectedOrderNumbers = value!.orderNumber!;
print(
"hfjkshfg" +
provider.selectedOrderIds.toString(),
provider
.selectedOrderIds
.toString(),
);
}
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
buttonStyleData:
ddtheme
.buttonStyleData,
iconStyleData:
ddtheme
.iconStyleData,
menuItemStyleData:
ddtheme
.menuItemStyleData,
dropdownStyleData:
ddtheme
.dropdownStyleData,
),
),
),
......@@ -614,9 +679,18 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
SizedBox(width: 10),
Expanded(
flex: 2,
child: textControllerWidget(context, provider.orderAmountControllers[index], "Enter Order Amount", (p0) {
},TextInputType.number,false,FilteringTextInputFormatter.digitsOnly),
child: textControllerWidget(
context,
provider
.orderAmountControllers[index],
"Enter Order Amount",
(p0) {},
TextInputType.number,
false,
FilteringTextInputFormatter
.digitsOnly,
null,null,TextInputAction.next
),
),
// SizedBox(width: 10),
//
......@@ -633,7 +707,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
),
],
),
],
],
......@@ -642,7 +715,12 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
provider.orderAdjustedAmountController,
"Order Adjusted Amount",
provider.onChangeorderAdjustedAmount,
TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[1],
null,
TextInputAction.done
),
errorWidget(context, provider.orderAdjustedAmountError),
TextWidget(context, "Description"),
......@@ -698,19 +776,16 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
),
errorWidget(context, provider.descriptionError),
TextWidget(context, "Payment Received Date"),
GestureDetector(
onTap: () {
provider.showDatePickerDialog(context);
},
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Container(
height: 50,
alignment: Alignment.center,
decoration: BoxDecoration(
......@@ -718,16 +793,20 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
padding: const EdgeInsets.fromLTRB(
10.0,
0.0,
10,
0,
),
child: TextFormField(
controller: provider.paymentReceivedDateController,
controller:
provider.paymentReceivedDateController,
keyboardType: TextInputType.text,
enabled: false,
maxLines: 1,
readOnly: true,
onChanged: (value) {
},
onChanged: (value) {},
decoration: InputDecoration(
hintText: "Enter Date",
hintStyle: TextStyle(
......@@ -802,16 +881,20 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
),
errorWidget(context, provider.paymentModeError),
textControllerWidget(
context,
provider.paymentRefController,
"Payment Reference No. / Cheque No. / UTR No. tf",
provider.onChangepaymentRef,TextInputType.text,false,null
provider.onChangepaymentRef,
TextInputType.text,
false,
null,
focusNodes[2],
null,
TextInputAction.done
),
errorWidget(context, provider.paymentRefError),
InkResponse(
onTap: () {
_showAttachmentSheet(context);
......@@ -839,27 +922,36 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
),
),
),
if(provider.imagePicked==1 && provider.imagePath!=null)...[
if (provider.imagePicked == 1 &&
provider.imagePath != null) ...[
Padding(
padding: const EdgeInsets.symmetric(vertical: 4.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text("${provider.imagePath}",style: TextStyle(
Text(
"${provider.imagePath}",
style: TextStyle(
color: AppColors.semi_black,
fontSize: 11,
fontWeight: FontWeight.w600
),),
fontWeight: FontWeight.w600,
),
),
InkResponse(
onTap: () {
provider.imagePicked = 0;
provider.imagePath = null;
provider.imageFilePath = null;
},
child: SvgPicture.asset("assets/svg/ic_close.svg",width: 15,height: 15,))
child: SvgPicture.asset(
"assets/svg/ic_close.svg",
width: 15,
height: 15,
),
),
],
),
)
),
],
],
),
......@@ -871,12 +963,18 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
onTap: () {
provider.selectedOrders = provider.getFormData();
print(provider.selectedOrders);
provider.ordersAddPaymentAPISubmitFunction(context, provider.selectedAccountID, provider.selectedDescription, provider.selectedOrders, provider.selectedPaymentMode);
provider.ordersAddPaymentAPISubmitFunction(
context,
provider.selectedAccountID,
provider.selectedDescription,
provider.selectedOrders,
provider.selectedPaymentMode,
);
},
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,
......@@ -902,7 +1000,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
);
}
Future<void> _showAttachmentSheet(BuildContext context) {
return showModalBottomSheet(
useSafeArea: true,
......@@ -985,7 +1082,3 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
);
}
}
......@@ -17,20 +17,17 @@ class AddtpcagentScreen extends StatefulWidget {
class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
Dropdowntheme ddtheme = Dropdowntheme();
List<FocusNode> focusNodes = List.generate(10, (index) => FocusNode());
@override
void initState() {
// TODO: implement initState
super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Tpcagentsprovider>(
context,
listen: false,
);
var provider = Provider.of<Tpcagentsprovider>(context, listen: false);
});
}
@override
Widget build(BuildContext context) {
return Consumer<Tpcagentsprovider>(
......@@ -38,8 +35,12 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
return WillPopScope(
child: Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar2(context, "Add TPC Agent", provider.resetAll,
SizedBox(width: 0,),),
appBar: appbar2(
context,
"Add TPC Agent",
provider.resetAll,
SizedBox(width: 0),
),
backgroundColor: AppColors.scaffold_bg_color,
body: Container(
child: SingleChildScrollView(
......@@ -50,22 +51,47 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
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(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
textControllerWidget(context,provider.tpcNameController,"Enter Name",provider.onChangetpcName,TextInputType.text,false,null),
if(provider.tpcNameError!=null)...[
errorWidget(context, provider.tpcNameError)
textControllerWidget(
context,
provider.tpcNameController,
"Enter Name",
provider.onChangetpcName,
TextInputType.text,
false,
null,
focusNodes[0],
focusNodes[1],
TextInputAction.next
),
if (provider.tpcNameError != null) ...[
errorWidget(context, provider.tpcNameError),
],
textControllerWidget(context,provider.tpcMobileNumberController,"Enter Mobile Number",provider.onChangetpcMobileNumber,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly),
if(provider.tpcMobileNumberError!=null)...[
errorWidget(context, provider.tpcMobileNumberError)
textControllerWidget(
context,
provider.tpcMobileNumberController,
"Enter Mobile Number",
provider.onChangetpcMobileNumber,
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[1],
focusNodes[2],TextInputAction.next,10
),
if (provider.tpcMobileNumberError != null) ...[
errorWidget(context, provider.tpcMobileNumberError),
],
InkResponse(
......@@ -95,53 +121,115 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
),
),
),
if(provider.imagePicked==1 && provider.imagePath!=null)...[
if (provider.imagePicked == 1 &&
provider.imagePath != null) ...[
Padding(
padding: const EdgeInsets.symmetric(vertical: 4.0),
padding: const EdgeInsets.symmetric(
vertical: 4.0,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text("${provider.imagePath}",style: TextStyle(
Text(
"${provider.imagePath}",
style: TextStyle(
color: AppColors.semi_black,
fontSize: 11,
fontWeight: FontWeight.w600
),),
fontWeight: FontWeight.w600,
),
),
InkResponse(
onTap: () {
provider.imagePicked = 0;
provider.imagePath = null;
provider.imageFilePath = null;
},
child: SvgPicture.asset("assets/svg/ic_close.svg",width: 15,height: 15,))
child: SvgPicture.asset(
"assets/svg/ic_close.svg",
width: 15,
height: 15,
),
),
],
),
)
),
],
textControllerWidget(context,provider.tpcBankNameController,"Enter Bank Name",provider.onChangetpcBankName,TextInputType.text,false,null),
if(provider.tpcBankNameError!=null)...[
errorWidget(context, provider.tpcBankNameError)
textControllerWidget(
context,
provider.tpcBankNameController,
"Enter Bank Name",
provider.onChangetpcBankName,
TextInputType.text,
false,
null,
focusNodes[2],focusNodes[3],TextInputAction.next
),
if (provider.tpcBankNameError != null) ...[
errorWidget(context, provider.tpcBankNameError),
],
textControllerWidget(context,provider.tpcBankBeneficiaryNameController,"Enter Bank Beneficiary Name",provider.onChangetpcBankBeneficiaryName,TextInputType.text,false,null),
if(provider.tpcBankBeneficiaryNameError!=null)...[
errorWidget(context, provider.tpcBankBeneficiaryNameError)
textControllerWidget(
context,
provider.tpcBankBeneficiaryNameController,
"Enter Bank Beneficiary Name",
provider.onChangetpcBankBeneficiaryName,
TextInputType.text,
false,
null,
focusNodes[3],focusNodes[4],TextInputAction.next
),
if (provider.tpcBankBeneficiaryNameError != null) ...[
errorWidget(
context,
provider.tpcBankBeneficiaryNameError,
),
],
textControllerWidget(context,provider.tpcBankAccountNumberController,"Enter Bank Account Number",provider.onChangetpcBankAccountNumber,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly),
if(provider.tpcBankAccountNumberError!=null)...[
errorWidget(context, provider.tpcBankAccountNumberError)
textControllerWidget(
context,
provider.tpcBankAccountNumberController,
"Enter Bank Account Number",
provider.onChangetpcBankAccountNumber,
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[4],focusNodes[5],TextInputAction.next
),
if (provider.tpcBankAccountNumberError != null) ...[
errorWidget(
context,
provider.tpcBankAccountNumberError,
),
],
textControllerWidget(context,provider.tpcBankIFSCController,"Enter Bank IFSC",provider.onChangetpcBankIFSC,TextInputType.text,false,null),
if(provider.tpcBankIFSCError!=null)...[
errorWidget(context, provider.tpcBankIFSCError)
textControllerWidget(
context,
provider.tpcBankIFSCController,
"Enter Bank IFSC",
provider.onChangetpcBankIFSC,
TextInputType.text,
false,
null,
focusNodes[5],focusNodes[6],TextInputAction.next
),
if (provider.tpcBankIFSCError != null) ...[
errorWidget(context, provider.tpcBankIFSCError),
],
textControllerWidget(context,provider.tpcNoteController,"Enter Description",provider.onChangetpcNote,TextInputType.text,false,null),
if(provider.tpcNoteError!=null)...[
errorWidget(context, provider.tpcNoteError)
textControllerWidget(
context,
provider.tpcNoteController,
"Enter Description",
provider.onChangetpcNote,
TextInputType.text,
false,
null,
focusNodes[6],focusNodes[7],TextInputAction.next
),
if (provider.tpcNoteError != null) ...[
errorWidget(context, provider.tpcNoteError),
],
InkWell(
onTap: () {
......@@ -173,17 +261,13 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
],
),
),
],
),
),
),
),
onWillPop: () {
return onBackPressed(context);
},
);
......@@ -191,8 +275,6 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
);
}
Future<void> _showAttachmentSheet(BuildContext context) {
return showModalBottomSheet(
useSafeArea: true,
......@@ -207,18 +289,13 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
builder: (context, setState) {
return SafeArea(
child: Consumer<Tpcagentsprovider>(
builder: (context,tcpProvider, child) {
builder: (context, tcpProvider, child) {
return Padding(
padding: EdgeInsets.only(
bottom:
MediaQuery
.of(
MediaQuery.of(
context,
)
.viewInsets
.bottom, // This handles keyboard
).viewInsets.bottom, // This handles keyboard
),
child: Container(
margin: EdgeInsets.only(
......@@ -239,11 +316,11 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
"Select Source",
style: TextStyle(
color: AppColors.app_blue,
fontSize: 16
fontSize: 16,
),
),
),
SizedBox(height: 15,),
SizedBox(height: 15),
InkWell(
onTap: () {
Navigator.of(context).pop(false);
......@@ -258,8 +335,7 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
InkWell(
onTap: () {
Navigator.of(context).pop(false);
tcpProvider.imgFromCamera(
context);
tcpProvider.imgFromCamera(context);
},
child: Container(
height: 35,
......
......@@ -30,6 +30,8 @@ class Editadjustedorderlist extends StatefulWidget {
class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
Dropdowntheme ddtheme = Dropdowntheme();
List<FocusNode> focusNodes = List.generate(3, (index) => FocusNode());
@override
void initState() {
super.initState();
......@@ -69,6 +71,7 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
@override
void dispose() {
focusNodes.map((e)=>e.dispose());
super.dispose();
}
......@@ -216,8 +219,14 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
// value:
// editProvider
// .selectedPaidList,
value: editProvider.paidList.firstWhere(
(product) => product.orderId == editProvider.selectedPaidOrderIDs[index],
value: editProvider
.paidList
.firstWhere(
(product) =>
product
.orderId ==
editProvider
.selectedPaidOrderIDs[index],
),
// value:editProvider.paidList.firstWhere(
// (
......@@ -256,10 +265,18 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
}
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
buttonStyleData:
ddtheme
.buttonStyleData,
iconStyleData:
ddtheme
.iconStyleData,
menuItemStyleData:
ddtheme
.menuItemStyleData,
dropdownStyleData:
ddtheme
.dropdownStyleData,
),
),
),
......@@ -282,7 +299,14 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
editProvider
.editOrderAmountControllers[index],
"Enter Order Amount",
(p0) {},TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
(p0) {},
TextInputType.number,
false,
FilteringTextInputFormatter
.digitsOnly,
focusNodes[0],
focusNodes[1],
TextInputAction.next
),
),
],
......@@ -429,10 +453,18 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
}
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
buttonStyleData:
ddtheme
.buttonStyleData,
iconStyleData:
ddtheme
.iconStyleData,
menuItemStyleData:
ddtheme
.menuItemStyleData,
dropdownStyleData:
ddtheme
.dropdownStyleData,
),
),
),
......@@ -455,7 +487,14 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
editProvider
.editOrderAmountControllers2[j],
"Enter Order Amount",
(p0) {},TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
(p0) {},
TextInputType.number,
false,
FilteringTextInputFormatter
.digitsOnly,
null,
null,
TextInputAction.done
),
),
],
......@@ -486,13 +525,22 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
bottomNavigationBar: InkResponse(
onTap: editProvider.submitLoading?null:() {
onTap:
editProvider.submitLoading
? null
: () {
editProvider.submitLoading = true;
final updatedData = editProvider.getFormDataUpdate();
print(updatedData);
final insertedData = editProvider.getFormData();
print(insertedData);
editProvider.editPaymentDetailsAdjustedOrdersUpdateAPIFunction(context, widget.values["payment_id"], updatedData, insertedData);
editProvider
.editPaymentDetailsAdjustedOrdersUpdateAPIFunction(
context,
widget.values["payment_id"],
updatedData,
insertedData,
);
},
child: Container(
height: 45,
......@@ -503,9 +551,14 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
color: AppColors.app_blue,
borderRadius: BorderRadius.circular(15),
),
child:editProvider.submitLoading?CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(AppColors.app_blue),
): Text(
child:
editProvider.submitLoading
? CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(
AppColors.app_blue,
),
)
: Text(
"Submit",
style: TextStyle(
fontSize: 15,
......@@ -524,6 +577,4 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
},
);
}
}
......@@ -26,6 +26,7 @@ class Editorderaccountdetails extends StatefulWidget {
class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
FocusNode focusNode = FocusNode();
FocusNode focusNodetpc = FocusNode();
List<FocusNode> focusNodes = List.generate(5, (index) => FocusNode(),);
Dropdowntheme ddtheme = Dropdowntheme();
@override
void initState() {
......@@ -39,6 +40,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
@override
void dispose() {
focusNodes.map((e)=>e.dispose());
super.dispose();
}
......@@ -237,6 +239,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
TextInputType.text,
false,
null,
focusNodes[0],focusNodes[1],TextInputAction.next
),
errorWidget(context, provider.dispatchAddressError),
......@@ -248,6 +251,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[1],focusNodes[2],TextInputAction.next
),
errorWidget(context, provider.dispatchPincodeError),
textControllerWidget(
......@@ -258,6 +262,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
TextInputType.text,
false,
null,
focusNodes[2],focusNodes[3],TextInputAction.done
),
errorWidget(context, provider.noteError),
......
......@@ -17,30 +17,34 @@ class Editpaymentdetailsbymode extends StatefulWidget {
final mode;
final pageTitleName;
final values;
const Editpaymentdetailsbymode({super.key, this.mode, this.pageTitleName, this.values});
const Editpaymentdetailsbymode({
super.key,
this.mode,
this.pageTitleName,
this.values,
});
@override
State<Editpaymentdetailsbymode> createState() => _EditpaymentdetailsbymodeState();
State<Editpaymentdetailsbymode> createState() =>
_EditpaymentdetailsbymodeState();
}
class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
Timer? _debounce;
FocusNode focusNode = FocusNode();
String? selectedValue;
final TextEditingController textEditingController = TextEditingController();
List<FocusNode> focusNodes = List.generate(5, (index) => FocusNode());
Dropdowntheme ddtheme = Dropdowntheme();
@override
void initState() {
// TODO: implement initState
super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Addpaymentprovider>(
context,
listen: false,
);
var provider = Provider.of<Addpaymentprovider>(context, listen: false);
if (provider.dateNow == null) {
provider.setDate(DateTime.now());
}
......@@ -60,13 +64,14 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
provider.amountController.text = widget.values['amount'];
provider.selectedPaymentMode = widget.values['payment_mode'];
provider.paymentRefController.text = widget.values['pay_ref'];
provider.paymentReceivedDateController.text = widget.values['pay_received_date'];
provider.paymentReceivedDateController.text =
widget.values['pay_received_date'];
});
}
@override
void dispose() {
focusNodes.map((e) => e.dispose());
super.dispose();
}
......@@ -77,14 +82,18 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
@override
Widget build(BuildContext context) {
return Consumer2<Addpaymentprovider,Editpaymentprovider>(
builder: (context, provider,editProvider, child) {
return Consumer2<Addpaymentprovider, Editpaymentprovider>(
builder: (context, provider, editProvider, child) {
return WillPopScope(
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(
......@@ -152,7 +161,12 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
provider.amountController,
"Amount",
provider.onChangeAmount,
TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[0],
null,
TextInputAction.done
),
errorWidget(context, provider.amountError),
......@@ -209,26 +223,29 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
),
errorWidget(context, provider.paymentModeError),
textControllerWidget(
context,
provider.paymentRefController,
"Payment Reference No. / Cheque No. / UTR No. tf",
provider.onChangepaymentRef,TextInputType.text,false,null
provider.onChangepaymentRef,
TextInputType.text,
false,
null,
focusNodes[1],
null,
TextInputAction.done
),
errorWidget(context, provider.paymentRefError),
TextWidget(context, "Payment Received Date"),
GestureDetector(
onTap: () {
provider.showDatePickerDialog(context);
},
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Container(
height: 50,
alignment: Alignment.center,
decoration: BoxDecoration(
......@@ -236,16 +253,20 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
borderRadius: BorderRadius.circular(14),
),
child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0),
padding: const EdgeInsets.fromLTRB(
10.0,
0.0,
10,
0,
),
child: TextFormField(
controller: provider.paymentReceivedDateController,
controller:
provider.paymentReceivedDateController,
keyboardType: TextInputType.text,
enabled: false,
maxLines: 1,
readOnly: true,
onChanged: (value) {
},
onChanged: (value) {},
decoration: InputDecoration(
hintText: "Enter Date",
hintStyle: TextStyle(
......@@ -266,9 +287,6 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
),
),
errorWidget(context, provider.dateError),
],
),
),
......@@ -276,29 +294,38 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
bottomNavigationBar: InkResponse(
onTap: editProvider.submitLoading?null:() {
onTap:
editProvider.submitLoading
? null
: () {
editProvider.submitLoading = true;
editProvider.editPaymentDetailsAPIFunction(context, widget.values["payment_id"],
editProvider.editPaymentDetailsAPIFunction(
context,
widget.values["payment_id"],
provider.selectedDescription,
provider.selectedPaymentMode,
provider.paymentRefController.text,
provider.paymentReceivedDateController.text,
provider.amountController.text
provider.amountController.text,
);
},
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(
child:
editProvider.submitLoading
? CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation<Color>(
AppColors.white
)):Text(
AppColors.white,
),
)
: Text(
"Submit",
style: TextStyle(
fontSize: 15,
......@@ -317,6 +344,4 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
},
);
}
}
......@@ -2272,7 +2272,7 @@ class ApiCalling {
'tpc_agent_id': tpc_agent_id.toString(),
};
var res;
print(data);
print("add order:${data}");
if (po != null) {
res = await postImageNew(data, {}, ordersAddOrderSubmitUrl, po, "po");
res = jsonDecode(res);
......
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