Commit 12aa06e4 authored by Sai Srinivas's avatar Sai Srinivas
Browse files

13-08-2025 By Sai Srinivas

Test Cases
parent 2a5b9635
......@@ -127,7 +127,7 @@ class OrderDetails {
String? tpcaAgentName;
OrderDetails(
{this.id,
{ this.id,
this.orderNumber,
this.orderNumberHash,
this.balanceAmount,
......
......@@ -844,10 +844,10 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier {
nameError = "Please Enter Name";
isValid = false;
}
// if(customerMailIdController.text.trim().isEmpty){
// mailIdError = "Please enter Email Id";
// isValid = false;
// }
if(customerMailIdController.text.trim().isNotEmpty && !RegExp(r'\S+@\S+\.\S+').hasMatch(customerMailIdController.text)){
mailIdError = "Please enter a proper Email ID";
isValid = false;
}
if(mobileController.text.trim().isEmpty){
mobileError = "Please enter Mobile Number";
isValid = false;
......
......@@ -566,66 +566,63 @@ String? productsEmptyError ;
notifyListeners();
}
dynamic get basicAmount {
double total = 0;
for (var controller in TaxableValueControllers) {
total += double.tryParse(controller.text)?.round() ?? 0.0;
}
basicAmountReadOnlyController.text = total.toStringAsFixed(2);
return total;
}
dynamic get cgstAmount {
double total = 0;
for (int i = 0; i < ProductControllers.length; i++) {
final taxableValue =
double.tryParse(TaxableValueControllers[i].text) ?? 0.0;
final cgst = double.tryParse(CGSTControllers[i].text) ?? 0.0;
total += (taxableValue * cgst) / 100;
}
cgstReadOnlyController.text = total.toStringAsFixed(2);
return total;
}
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).round() / 100;
}
sgstReadOnlyController.text = total.toStringAsFixed(2);
return total;
}
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).round() / 100;
}
igstReadOnlyController.text = total.toStringAsFixed(2);
return total;
}
dynamic get totalAmount {
double total = basicAmount + cgstAmount + sgstAmount + igstAmount;
totalReadOnlyAmountController.text = total.round().toStringAsFixed(2);
return total!;
}
// dynamic get basicAmount {
// double total = 0;
// total += double.tryParse(TaxableValueController.text)?.round() ?? 0.0;
// basicAmountReadOnlyController.text = total.toStringAsFixed(2);
// return total;
// }
//
// dynamic get cgstAmount {
// double total = 0;
//
// final taxableValue =
// double.tryParse(TaxableValueController.text) ?? 0.0;
// final cgst = double.tryParse(CGSTController.text) ?? 0.0;
// total += (taxableValue * cgst) / 100;
//
// cgstReadOnlyController.text = total.toStringAsFixed(2);
// return total;
// }
//
// dynamic get sgstAmount {
// double total = 0;
//
// final taxableValue =
// double.tryParse(TaxableValueController.text) ?? 0.0;
// final sgst = double.tryParse(SGSTController.text) ?? 0.0;
// total += (taxableValue * sgst).round() / 100;
//
// sgstReadOnlyController.text = total.toStringAsFixed(2);
// return total;
// }
//
// dynamic get igstAmount {
// double total = 0;
//
// final taxableValue =
// double.tryParse(TaxableValueController.text) ?? 0.0;
// final igst = double.tryParse(IGSTController.text) ?? 0.0;
// total += (taxableValue * igst).round() / 100;
//
// igstReadOnlyController.text = total.toStringAsFixed(2);
// return total;
// }
//
// dynamic get totalAmount {
// double total = basicAmount + cgstAmount + sgstAmount + igstAmount;
// totalReadOnlyAmountController.text = total.round().toStringAsFixed(2);
// return total!;
// }
void addProduct(Map<String, dynamic> product) {
productRows.add(product);
updateSummaryCalculations();
notifyListeners();
}
void updateProduct(int index, Map<String, dynamic> updatedProduct) {
productRows[index] = updatedProduct;
updateSummaryCalculations();
notifyListeners();
}
......@@ -649,6 +646,61 @@ String? productsEmptyError ;
notifyListeners();
}
void updateSummaryCalculations() {
double basicAmount = 0.0;
double cgstAmount = 0.0;
double sgstAmount = 0.0;
double igstAmount = 0.0;
for (var product in productRows) {
final price = double.tryParse(product['price']?.toString() ?? '0') ?? 0.0;
final qty = double.tryParse(product['qty']?.toString() ?? '0') ?? 0.0;
final cgst = double.tryParse(product['cgst_p']?.toString() ?? '0') ?? 0.0;
final sgst = double.tryParse(product['sgst_p']?.toString() ?? '0') ?? 0.0;
final igst = double.tryParse(product['igst_p']?.toString() ?? '0') ?? 0.0;
final taxableValue = price * qty;
basicAmount += taxableValue;
cgstAmount += (taxableValue * cgst) / 100;
sgstAmount += (taxableValue * sgst) / 100;
igstAmount += (taxableValue * igst) / 100;
}
final totalAmount = basicAmount + cgstAmount + sgstAmount + igstAmount;
basicAmountReadOnlyController.text = basicAmount.toStringAsFixed(2);
cgstReadOnlyController.text = cgstAmount.toStringAsFixed(2);
sgstReadOnlyController.text = sgstAmount.toStringAsFixed(2);
igstReadOnlyController.text = igstAmount.toStringAsFixed(2);
totalReadOnlyAmountController.text = totalAmount.toStringAsFixed(2);
notifyListeners();
}
String getJsonEncodedProducts() {
return jsonEncode(productRows);
}
dynamic get basicAmount {
return double.tryParse(basicAmountReadOnlyController.text) ?? 0.0;
}
dynamic get cgstAmount {
return double.tryParse(cgstReadOnlyController.text) ?? 0.0;
}
dynamic get sgstAmount {
return double.tryParse(sgstReadOnlyController.text) ?? 0.0;
}
dynamic get igstAmount {
return double.tryParse(igstReadOnlyController.text) ?? 0.0;
}
dynamic get totalAmount {
return double.tryParse(totalReadOnlyAmountController.text) ?? 0.0;
}
void updateSelectedSingleProduct(SaleProducts? product) {
_selectedSaleProducts = product;
_selectedSingleSaleProductID= product!.id;
......@@ -675,99 +727,99 @@ String? productsEmptyError ;
notifyListeners();
}
String getJsonEncodedProducts() {
return jsonEncode(productRows);
}
void addNewRow() {
ProductControllers.add(TextEditingController());
PriceControllers.add(TextEditingController());
QuantityControllers.add(TextEditingController(text: '1'));
CGSTControllers.add(TextEditingController(text: '9'));
SGSTControllers.add(TextEditingController(text: '9'));
IGSTControllers.add(TextEditingController(text: '0'));
TaxableValueControllers.add(TextEditingController());
TotalPriceControllers.add(TextEditingController());
selectedSaleProductID.add(null);
notifyListeners();
}
void removeRow(int index) {
if (index >= 0 && index < ProductControllers.length) {
ProductControllers[index].dispose();
PriceControllers[index].dispose();
QuantityControllers[index].dispose();
CGSTControllers[index].dispose();
SGSTControllers[index].dispose();
IGSTControllers[index].dispose();
TaxableValueControllers[index].dispose();
TotalPriceControllers[index].dispose();
ProductControllers.removeAt(index);
PriceControllers.removeAt(index);
QuantityControllers.removeAt(index);
CGSTControllers.removeAt(index);
SGSTControllers.removeAt(index);
IGSTControllers.removeAt(index);
TaxableValueControllers.removeAt(index);
TotalPriceControllers.removeAt(index);
selectedSaleProductID.removeAt(index);
notifyListeners();
}
}
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) {
if (index >= 0 && index < PriceControllers.length) {
final inclusivePrice =
double.tryParse(PriceControllers[index].text) ?? 0.0;
final quantity = double.tryParse(QuantityControllers[index].text) ?? 1.0;
final cgst = double.tryParse(CGSTControllers[index].text) ?? 0.0;
final sgst = double.tryParse(SGSTControllers[index].text) ?? 0.0;
final igst = double.tryParse(IGSTControllers[index].text) ?? 0.0;
final totalTaxRate = (cgst + sgst + igst) / 100;
// Calculate taxable value per unit
final taxableValuePerUnit = inclusivePrice / (1 + totalTaxRate);
// Total taxable value = taxable value per unit * quantity
final totalTaxableValue = taxableValuePerUnit * quantity;
TaxableValueControllers[index].text = totalTaxableValue.toStringAsFixed(
0,
);
notifyListeners();
}
}
Map<String, dynamic> getFormData() {
final List<Map<String, dynamic>> orders = [];
for (int i = 0; i < ProductControllers.length; i++) {
orders.add({
'product_id': selectedSaleProductID[i],
'qty': QuantityControllers[i].text,
'price': PriceControllers[i].text,
'cgst_p': CGSTControllers[i].text,
'sgst_p': SGSTControllers[i].text,
'igst_p': IGSTControllers[i].text,
'total_price': TaxableValueControllers[i].text,
});
}
return {
'orders': orders,
'basic_amount': basicAmount.toStringAsFixed(2),
'cgst_amount': cgstAmount.toStringAsFixed(2),
'sgst_amount': sgstAmount.toStringAsFixed(2),
'igst_amount': igstAmount.toStringAsFixed(2),
'total_amount': totalAmount.toStringAsFixed(2),
'note': noteController.text,
};
}
// void addNewRow() {
// ProductControllers.add(TextEditingController());
// PriceControllers.add(TextEditingController());
// QuantityControllers.add(TextEditingController(text: '1'));
// CGSTControllers.add(TextEditingController(text: '9'));
// SGSTControllers.add(TextEditingController(text: '9'));
// IGSTControllers.add(TextEditingController(text: '0'));
// TaxableValueControllers.add(TextEditingController());
// TotalPriceControllers.add(TextEditingController());
//
// selectedSaleProductID.add(null);
// notifyListeners();
// }
//
// void removeRow(int index) {
// if (index >= 0 && index < ProductControllers.length) {
// ProductControllers[index].dispose();
// PriceControllers[index].dispose();
// QuantityControllers[index].dispose();
// CGSTControllers[index].dispose();
// SGSTControllers[index].dispose();
// IGSTControllers[index].dispose();
// TaxableValueControllers[index].dispose();
// TotalPriceControllers[index].dispose();
// ProductControllers.removeAt(index);
// PriceControllers.removeAt(index);
// QuantityControllers.removeAt(index);
// CGSTControllers.removeAt(index);
// SGSTControllers.removeAt(index);
// IGSTControllers.removeAt(index);
// TaxableValueControllers.removeAt(index);
// TotalPriceControllers.removeAt(index);
// selectedSaleProductID.removeAt(index);
// notifyListeners();
// }
// }
//
// 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) {
// if (index >= 0 && index < PriceControllers.length) {
// final inclusivePrice =
// double.tryParse(PriceControllers[index].text) ?? 0.0;
// final quantity = double.tryParse(QuantityControllers[index].text) ?? 1.0;
// final cgst = double.tryParse(CGSTControllers[index].text) ?? 0.0;
// final sgst = double.tryParse(SGSTControllers[index].text) ?? 0.0;
// final igst = double.tryParse(IGSTControllers[index].text) ?? 0.0;
// final totalTaxRate = (cgst + sgst + igst) / 100;
// // Calculate taxable value per unit
// final taxableValuePerUnit = inclusivePrice / (1 + totalTaxRate);
// // Total taxable value = taxable value per unit * quantity
// final totalTaxableValue = taxableValuePerUnit * quantity;
// TaxableValueControllers[index].text = totalTaxableValue.toStringAsFixed(
// 0,
// );
// notifyListeners();
// }
// }
//
// Map<String, dynamic> getFormData() {
// final List<Map<String, dynamic>> orders = [];
// for (int i = 0; i < ProductControllers.length; i++) {
// orders.add({
// 'product_id': selectedSaleProductID[i],
// 'qty': QuantityControllers[i].text,
// 'price': PriceControllers[i].text,
// 'cgst_p': CGSTControllers[i].text,
// 'sgst_p': SGSTControllers[i].text,
// 'igst_p': IGSTControllers[i].text,
// 'total_price': TaxableValueControllers[i].text,
// });
// }
// return {
// 'orders': orders,
// 'basic_amount': basicAmount.toStringAsFixed(2),
// 'cgst_amount': cgstAmount.toStringAsFixed(2),
// 'sgst_amount': sgstAmount.toStringAsFixed(2),
// 'igst_amount': igstAmount.toStringAsFixed(2),
// 'total_amount': totalAmount.toStringAsFixed(2),
// 'note': noteController.text,
// };
// }
Future<void> ordersAddOrderAPIViewFunction(context, mode) async {
try {
......@@ -878,14 +930,21 @@ String? productsEmptyError ;
_accountDetails = data.accountDetails!;
data.accountDetails!.accManagerId!;
billingNameController.text = data.accountDetails!.name!;
_selectedBillingStateID = data.accountDetails!.state!;
print("data.accountDetails!.state ${data.accountDetails!.state}");
if(_selectedBillingStateID!=null){
getDistrictAPI(context,_selectedBillingStateID);
}
_selectedBillingDistrictID = data.accountDetails!.district!;
if(_selectedBillingDistrictID!=null){
getSubLocationAPI(context,_selectedBillingDistrictID);
}
_selectedBillingStates = billingStates!.firstWhere((e) => e.id == data.accountDetails!.state!);
_selectedBillingStateID = data.accountDetails!.state!;
_selectedBillingStateName = billingStates!.firstWhere((e) => e.id == data.accountDetails!.state!).name;
_selectedBillingDistrictID = data.accountDetails!.district!;
_selectedBillingSubLocID = data.accountDetails!.subLocality!;
billingPincodeController.text = data.accountDetails!.pincode!;
......@@ -918,6 +977,9 @@ String? productsEmptyError ;
if (data != null) {
if (data.error == "0") {
_billingDistricts = data.districts!;
_selectedBillingDistricts = data.districts!.firstWhere((e) => e.id == accountDetails!.district!);
_selectedBillingDistrictValue = data.districts!.firstWhere((e) => e.id == accountDetails!.district!).district;
notifyListeners();
}
......@@ -958,6 +1020,9 @@ String? productsEmptyError ;
if (data != null) {
if (data.error == "0") {
_billingSubLocations = data.subLocations!;
_selectedBillingSubLocations = data.subLocations!.firstWhere((e) => e.id == accountDetails!.subLocality!);
_selectedBillingSubLocValue = data.subLocations!.firstWhere((e) => e.id == accountDetails!.subLocality!).subLocality;
notifyListeners();
}
......@@ -1003,6 +1068,31 @@ String? productsEmptyError ;
} catch (e, s) {}
}
Future<List<TpcList>> fetchTPCAccountsfromAPI(context, mode, text) async {
try {
final provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.addOrderTPCAgentListAPI(
provider.empId,
provider.session,
mode,
text,
);
if (data != null) {
if (data.error == "0") {
_tpcAgent = data.tpcList!;
notifyListeners();
return _tpcAgent;
} else {
return [];
}
} else {
return [];
}
} catch (e, s) {
return [];
}
}
Future<void> ordersAddOrderAPISubmitFunction(
context,
mode,
......@@ -1178,7 +1268,7 @@ String? productsEmptyError ;
) async {
print(search);
try {
if (search.isEmpty) {
if (search==null) {
_accountList = [];
_isLoading = false;
notifyListeners();
......@@ -1222,6 +1312,65 @@ String? productsEmptyError ;
}
}
Future<List<AccountList>> fetchAccountsFromApi(
context,
mode,
accountId,
search,
) async {
print(search);
try {
if (search==null) {
_accountList = [];
_isLoading = false;
notifyListeners();
return _accountList;
}
_isLoading = true;
notifyListeners();
final provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.AddOrderPaymentSelectAccountAPI(
provider.empId,
provider.session,
mode,
search,
);
if (data != null) {
if (data.error == "0") {
_accountList = data.accountList!;
if (_selectedAccountList != null &&
!_accountList.contains(_selectedAccountList)) {
_selectedAccountList = null;
_selectedAccountID = null;
_selectedAccountName = null;
}
_isLoading = false;
notifyListeners();
return _accountList;
} else {
selectAccountError = data?.message ?? "Failed to load accounts";
_isLoading = false;
notifyListeners();
return [];
}
} else {
selectAccountError = "No data received from server";
_isLoading = false;
notifyListeners();
return [];
}
} catch (e, s) {
selectAccountError = "An error occurred while fetching accounts";
_isLoading = false;
notifyListeners();
return [];
}
}
imgFromCamera(context) async {
// Capture a photo
try {
......
......@@ -202,6 +202,24 @@ class Editorderprovider extends ChangeNotifier {
_erectionScope = ["Included", "Excluded"];
_unloadingScope = ["Included", "Excluded"];
_freightScope = ["Included", "Excluded"];
if(data.orderDetails!.dispatchStateId!=null){
getDispatchDistrictAPI(context,data.orderDetails!.dispatchStateId!);
}
if(data.orderDetails!.dispatchDistrictId!=null){
getDispatchSubLocationAPI(context,data.orderDetails!.dispatchDistrictId!);
}
_selectedDispatchStates = data.states!.firstWhere((e) => e.id == data.orderDetails!.dispatchStateId!);
_selectedDispatchStateID = data.orderDetails!.dispatchStateId!;
_selectedDispatchStateName = data.states!.firstWhere((e) => e.id == data.orderDetails!.dispatchStateId!).name;
_selectedDispatchDistrictID = data.orderDetails!.dispatchDistrictId!;
_selectedDispatchSubLocID = data.orderDetails!.dispatchSubLocationId!;
dispatchAddressController.text = data.orderDetails!.dispatchAddress!;
dispatchPincodeController.text = data.orderDetails!.dispatchPincode!;
noteController.text = data.orderDetails!.note!;
_selectedUnloadingScope = data.orderDetails!.unloadingScope!;
_selectedErectionScope = data.orderDetails!.erectionScope!;
_selectedFreightScope = data.orderDetails!.freightScope!;
notifyListeners();
} else {}
......@@ -222,7 +240,8 @@ class Editorderprovider extends ChangeNotifier {
if (data != null) {
if (data.error == "0") {
_dispatchDistricts = data.districts!;
_selectedDispatchDistricts = data.districts!.firstWhere((e) => e.id == orderDetails!.dispatchDistrictId!);
_selectedDispatchDistrictValue = data.districts!.firstWhere((e) => e.id == orderDetails!.dispatchDistrictId!).district;
notifyListeners();
}
}
......@@ -242,6 +261,8 @@ class Editorderprovider extends ChangeNotifier {
if (data != null) {
if (data.error == "0") {
_dispatchSubLocations = data.subLocations!;
_selectedDispatchSubLocations = data.subLocations!.firstWhere((e) => e.id == orderDetails!.dispatchSubLocationId!);
_selectedDispatchSubLocValue = data.subLocations!.firstWhere((e) => e.id == orderDetails!.dispatchSubLocationId!).subLocality;
notifyListeners();
}
......
......@@ -362,10 +362,73 @@ class Pagesdashboardprovider extends ChangeNotifier {
orderId,
);
if (data != null) {
_isLoading = true;
// _isLoading = true;
notifyListeners();
if (data.error == "0") {
_orderDetails = data.orderDetails!;
_orderDetails = data.orderDetails??OrderDetails(
id:"",
orderNumber:"",
orderNumberHash:"",
balanceAmount:"",
accId:"",
refType:"",
refId:"",
salesPersonEmpId:"",
enteredEmpId:"",
dispatchStateId:"",
dispatchDistrictId:"",
dispatchSubLocationId:"",
dispatchPincode:"",
dispatchAddress:"",
basicAmount:"",
cgstAmount:"",
sgstAmount:"",
igstAmount:"",
paidAmount:"",
totalAmount:"",
status:"",
orderReceivedDate:"",
scheduledDispatchDate:"",
otp:"",
note:"",
poViewFileName:"",
poDirFilePath:"",
unloadingScope:"",
freightScope:"",
erectionScope:"",
saleOrderNumber:"",
invoiceNumber:"",
vehicleNumber:"",
driverName:"",
driverMobileNumber:"",
tpcApplicable:"",
requestedTpcAmount:"",
level1TpcApprovedAmount:"",
level2TpcApprovedAmount:"",
tpcPaymentMode:"",
tpcPaymentReferenceNo:"",
tpcPaymentAttachmentDirFilePath:"",
tpcPaymentAttachementViewFileName:"",
tpcStatus:"",
tpcAgentId:"",
isExist:"",
createdDatetime:"",
updatedDatetime:"",
accountName:"",
gstNumber:"",
billingAddress:"",
billingDistrict:"",
billingState:"",
billingSubLocality:"",
billingPincode:"",
stateName:"",
districtName:"",
subLocationName:"",
adjustedAmount:"",
enteredEmpName:"",
salesPersonEmpName:"",
tpcaAgentName: ""
);
_productsHistory = data.products!;
_feedbackHistory = data.feedbackHistory!;
_paymentHistory = data.paymentHistory!;
......
......@@ -4,6 +4,7 @@ import 'package:camera/camera.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:generp/Models/ordersModels/TPCListResponse.dart';
import 'package:get/get.dart';
import 'package:image_picker/image_picker.dart';
import 'package:provider/provider.dart';
......@@ -303,6 +304,10 @@ class Tpcagentsprovider extends ChangeNotifier{
tpcMobileNumberError = "PLease Enter Your Mobile Number";
isValid = false;
}
if(tpcMobileNumberController.text.trim().isNotEmpty && tpcMobileNumberController.text.length<10){
tpcMobileNumberError = "Please Enter a Valid Mobile Number";
isValid = false;
}
if(_image_picked==0){
imageError = "Please select ID Proof";
......
......@@ -899,9 +899,11 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
),
],
if(provider.productsEmptyError!.trim().isNotEmpty)...[
if(provider.productRows.isEmpty)...[
if(provider.productsEmptyError!=null)...[
errorWidget(context, provider.productsEmptyError)
]
]
],
),
),
......
import 'dart:async';
import 'dart:io';
import 'package:dotted_line/dotted_line.dart';
......@@ -12,11 +13,14 @@ import 'package:generp/screens/notifierExports.dart';
import 'package:generp/screens/order/addOrderAddProduct.dart';
import 'package:provider/provider.dart';
import '../../Models/ordersModels/AddOrderPaymentSelectAccountResponse.dart';
import '../../Models/ordersModels/AddOrderViewResponse.dart';
import '../../Models/ordersModels/addOrderTpcAgentListResponse.dart';
import '../../Utils/app_colors.dart';
import '../../Utils/commonWidgets.dart';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:generp/Utils/commonServices.dart';
import 'package:dropdown_search/dropdown_search.dart';
class AddorderScreen extends StatefulWidget {
final pageTitleName;
......@@ -37,6 +41,7 @@ class _AddorderScreenState extends State<AddorderScreen> {
final _formKey = GlobalKey<FormState>();
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
final GlobalKey<DropdownButton2State<AccountList>> _dropdownKey = GlobalKey();
@override
void initState() {
......@@ -51,9 +56,16 @@ class _AddorderScreenState extends State<AddorderScreen> {
if (provider.dateNow == null) {
provider.setDate(DateTime.now());
}
provider.getLocationPermission(context);
provider.getCurrentLocation();
provider.ordersAddOrderAPIViewFunction(context, widget.mode);
provider.ordersAddOrderSelectAccountAPIFunction(
context,
widget.mode,
provider.selectedAccountID,
'',
);
});
}
......@@ -207,179 +219,366 @@ class _AddorderScreenState extends State<AddorderScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget(context, "Account"),
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) {
focusNode.unfocus();
},
DropdownSearch<AccountList>(
compareFn: (item1, item2) => true,
popupProps: PopupProps.menu(
showSearchBox: true,
searchFieldProps: TextFieldProps(
controller:
provider.dropDownSearchController,
onChanged: (value) async {
Future.delayed(
Duration(milliseconds: 100),
() async {
await provider
.ordersAddOrderSelectAccountAPIFunction(
context,
widget.mode,
provider.selectedAccountID,
value,
);
},
);
},
decoration: InputDecoration(
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 0,
horizontal: 10,
vertical: 8,
),
hintText: 'Select Account Type',
hintStyle: const TextStyle(
fontSize: 14,
),
hintText: 'Search Account...',
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(
8,
borderSide: BorderSide(
color: AppColors.semi_black,
),
borderRadius: BorderRadius.circular(8),
),
suffixIcon:
provider.isLoading
? const CircularProgressIndicator()
: null,
),
onChanged: (value) {
Timer(
const Duration(milliseconds: 500),
() {
print('Search query: $value');
// Items are fetched via the items parameter
},
);
},
),
trailing: InkResponse(
onTap: () {
if (focusNode.hasFocus) {
focusNode.unfocus();
} else {
FocusScope.of(
context,
).requestFocus(focusNode);
}
},
child: SvgPicture.asset(
"assets/svg/arrow_dropdown.svg",
height: 25,
width: 20,
fit: FlexFit.loose,
menuProps: MenuProps(
borderRadius: BorderRadius.circular(8),
elevation: 8,
),
itemBuilder:
(context, item, isDisabled, isSelected) =>
Padding(
padding: EdgeInsets.symmetric(
horizontal: 12,
vertical: 10,
),
child: SizedBox(
height: 20,
child: Text(
item.text!,
style: const TextStyle(
fontSize: 14,
),
),
),
if (provider.accountList.isNotEmpty &&
focusNode.hasFocus) ...[
Card(
margin: EdgeInsets.symmetric(horizontal: 0),
child: Container(
padding: EdgeInsets.symmetric(
horizontal: 10,
),
height:
provider.accountList.isNotEmpty
? 150
: 50,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
),
child: Scrollbar(
thickness: 2.5,
radius: Radius.circular(6),
thumbVisibility: true,
child: ListView.builder(
itemCount: provider.accountList.length,
shrinkWrap: true,
physics:
AlwaysScrollableScrollPhysics(),
itemBuilder: (context, index) {
return InkResponse(
onTap: () async {
if (provider
.accountList
.isNotEmpty) {
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(),
items: (filter, infiniteScrollProps) async {
print('Fetching items for filter: $filter');
return provider.fetchAccountsFromApi(
context,
widget.mode,
provider.selectedAccountID,
filter,
);
provider
.dropDownSearchController
.text = provider
.accountList[index]
.text!;
},
itemAsString:
(AccountList? item) => item?.text ?? '',
onChanged: (AccountList? value) {
if (value != null) {
print('Selected account: ${value.text}');
provider.selectedAccountList = (value);
provider.selectedAccountID = value!.id!;
provider.selectedAccountName = value!.text!;
provider
.ordersAddOrderAccountDetailsAPIFunction(
context,
provider
.selectedAccountID,
value.id,
);
}
// provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID);
provider.accountList = [];
provider.selectAccountError = "";
provider.notifyListeners();
},
child: SizedBox(
height: 45,
child: Align(
alignment: Alignment.centerLeft,
child: Text(
provider
.accountList[index]
.text!,
selectedItem: provider.selectedAccountList,
decoratorProps: DropDownDecoratorProps(
decoration: InputDecoration(
hintText: 'Select Account',
hintStyle: TextStyle(
fontSize: 14,
color: AppColors.grey_thick,
),
// labelText: 'Select Account',
enabledBorder: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(14),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: AppColors.cyan_blue,
),
);
},
borderRadius: BorderRadius.circular(14),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(14),
),
errorBorder: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(14),
),
border: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(8),
),
contentPadding:
ddtheme.buttonStyleData.padding,
fillColor: AppColors.text_field_color,
filled: true,
),
),
onBeforePopupOpening: (selectedItem) async {
provider.dropDownSearchController.clear();
return Future.value();
},
// onBeforePopupOpening: () {
// print('Dropdown closed, clearing search');
// provider.dropDownSearchController.clear();
// },
),
],
// DropdownSearch<AccountList>(
// filterFn: (item, filter) {
// return provider.ordersAddOrderSelectAccountAPIFunction(
// widget.mode,
// provider.selectedAccountID,
// filter,
// );
// },
// popupProps: PopupProps.menu(
// showSearchBox: true,
// searchFieldProps: TextFieldProps(
// controller: provider.dropDownSearchController,
// decoration: InputDecoration(
// isDense: true,
// contentPadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 8),
// hintText: 'Search Account...',
// border: OutlineInputBorder(
// borderRadius: BorderRadius.circular(8),
// ),
// suffixIcon: provider.isLoading ? const CircularProgressIndicator() : null,
// ),
// ),
// emptyBuilder: (context, searchEntry) => const Padding(
// padding: EdgeInsets.all(8.0),
// child: Text('No accounts found, please search'),
// ),
// ),
//
// itemAsString: (AccountList? item) => item?.text ?? '',
// onChanged: (AccountList? value) {
// if (value != null) {
// print('Selected account: ${value.text}');
// provider.selectedAccountList = value;
// provider.selectedAccountID = value!.id!;
// provider.selectedAccountName
// provider.ordersAddOrderAccountDetailsAPIFunction(
// context,
// value.id,
// );
// }
// },
// selectedItem: provider.selectedAccountList,
//
// decoratorProps: DropDownDecoratorProps(
//
// decoration: InputDecoration(
// labelText: 'Select Account',
// border: OutlineInputBorder(
// borderRadius: BorderRadius.circular(8),
// ),
// ),
// ),
//
//
// ),
// 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) {
// focusNode.unfocus();
// },
// controller:
// provider.dropDownSearchController,
// onChanged: (value) async {
// Future.delayed(
// Duration(milliseconds: 100),
// () async {
// await provider
// .ordersAddOrderSelectAccountAPIFunction(
// context,
// widget.mode,
// provider.selectedAccountID,
// value,
// );
// },
// );
// },
// decoration: InputDecoration(
// enabledBorder: InputBorder.none,
// focusedBorder: InputBorder.none,
// isDense: true,
// contentPadding:
// const EdgeInsets.symmetric(
// horizontal: 0,
// vertical: 8,
// ),
//
// hintText: 'Select Account Type',
// hintStyle: const TextStyle(
// fontSize: 14,
// ),
// border: OutlineInputBorder(
// borderRadius: BorderRadius.circular(
// 8,
// ),
// ),
// ),
// ),
//
// trailing: InkResponse(
// onTap: () {
// if (focusNode.hasFocus) {
// focusNode.unfocus();
// } else {
// FocusScope.of(
// context,
// ).requestFocus(focusNode);
// }
// },
// child: SvgPicture.asset(
// "assets/svg/arrow_dropdown.svg",
// height: 25,
// width: 20,
// ),
// ),
// ),
// ),
// ),
// if (provider.accountList.isNotEmpty &&
// focusNode.hasFocus) ...[
// Card(
// margin: EdgeInsets.symmetric(horizontal: 0),
// child: Container(
// padding: EdgeInsets.symmetric(
// horizontal: 10,
// ),
// height:
// provider.accountList.isNotEmpty
// ? 150
// : 50,
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(16),
// ),
// child: Scrollbar(
// thickness: 2.5,
// radius: Radius.circular(6),
// thumbVisibility: true,
// child: ListView.builder(
// itemCount: provider.accountList.length,
// shrinkWrap: true,
// physics:
// AlwaysScrollableScrollPhysics(),
// itemBuilder: (context, index) {
// return InkResponse(
// onTap: () async {
// if (provider
// .accountList
// .isNotEmpty) {
// 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!;
// provider
// .ordersAddOrderAccountDetailsAPIFunction(
// context,
// provider
// .selectedAccountID,
// );
// }
// // provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID);
// provider.accountList = [];
// provider.selectAccountError = "";
// provider.notifyListeners();
// },
// child: SizedBox(
// height: 45,
// child: Align(
// alignment: Alignment.centerLeft,
// child: Text(
// provider
// .accountList[index]
// .text!,
// ),
// ),
// ),
// );
// },
// ),
// ),
// ),
// ),
// ],
if (provider.selectAccountError != null) ...[
errorWidget(
context,
......@@ -686,16 +885,31 @@ class _AddorderScreenState extends State<AddorderScreen> {
provider.billingDistricts.isNotEmpty
? provider.selectedBillingDistricts !=
null
? provider.billingDistricts
.firstWhere(
? provider.billingDistricts.firstWhere(
(ord) =>
ord.id ==
provider
.selectedBillingDistrictId,
orElse:
() =>
orElse: () {
provider.selectedBillingDistricts =
provider
.billingDistricts[0],
.billingDistricts[0];
provider.selectedBillingDistrictId =
provider
.billingDistricts[0]
.id;
provider.selectedBillingDistrictValue =
provider
.billingDistricts[0]
.district;
provider.getSubLocationAPI(
context,
provider
.selectedBillingDistrictId,
);
return provider
.billingDistricts[0];
},
)
: null
: null,
......@@ -824,17 +1038,27 @@ class _AddorderScreenState extends State<AddorderScreen> {
.isNotEmpty
? provider.selectedBillingSubLocations !=
null
? provider
.billingSubLocations
.firstWhere(
? provider.billingSubLocations.firstWhere(
(ord) =>
ord.id ==
provider
.selectedBillingSubLocID,
orElse:
() =>
orElse: () {
provider.selectedBillingSubLocations =
provider
.billingSubLocations[0],
.billingSubLocations[0];
provider.selectedBillingSubLocID =
provider
.billingSubLocations[0]
.id;
provider.selectedBillingSubLocValue =
provider
.billingSubLocations[0]
.subLocality;
return provider
.billingSubLocations[0];
},
)
: null
: null,
......@@ -1013,6 +1237,7 @@ class _AddorderScreenState extends State<AddorderScreen> {
ord.id ==
provider
.selectedDispatchStateID,
orElse:
() =>
provider
......@@ -1159,10 +1384,31 @@ class _AddorderScreenState extends State<AddorderScreen> {
ord.id ==
provider
.selectedDispatchDistrictId,
orElse:
() =>
orElse: () {
provider.selectedDispatchDistricts =
provider
.dispatchDistricts[0],
.dispatchDistricts[0];
provider.selectedDispatchDistrictId =
provider
.dispatchDistricts[0]
.id;
provider.selectedDispatchDistrictValue =
provider
.dispatchDistricts[0]
.district;
provider.getDispatchSubLocationAPI(
context,
provider
.selectedBillingDistrictId,
);
return provider
.dispatchDistricts[0];
},
// orElse:
// () =>
// provider
// .dispatchDistricts[0],
)
: null
: null,
......@@ -1297,10 +1543,28 @@ class _AddorderScreenState extends State<AddorderScreen> {
ord.id ==
provider
.selectedDispatchSubLocID,
orElse:
() =>
orElse: () {
provider.selectedDispatchSubLocations =
provider
.dispatchSubLocations[0],
.dispatchSubLocations[0];
provider.selectedDispatchSubLocID =
provider
.dispatchSubLocations[0]
.id;
provider.selectedDispatchSubLocValue =
provider
.dispatchSubLocations[0]
.subLocality;
return provider
.dispatchSubLocations[0];
},
// orElse:
// () =>
// provider
// .dispatchSubLocations[0],
)
: null
: null,
......@@ -1782,149 +2046,280 @@ class _AddorderScreenState extends State<AddorderScreen> {
],
if (provider.selectedTpcStatus == "Yes") ...[
TextWidget(context, "TPC Agent"),
//dd
Container(
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
child: ListTile(
title: TextFormField(
focusNode: focusNodetpc,
onTapUpOutside: (event) {
focusNodetpc.unfocus();
},
DropdownSearch<TpcList>(
compareFn: (item1, item2) => true,
popupProps: PopupProps.menu(
showSearchBox: true,
searchFieldProps: TextFieldProps(
controller:
provider.dropDownTpcSearchController,
onChanged: (value) async {
Future.delayed(
Duration(milliseconds: 100),
() async {
await provider
.ordersAddOrderTPCAgentFunction(
context,
widget.mode,
value,
);
},
);
},
decoration: InputDecoration(
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 0,
horizontal: 10,
vertical: 8,
),
hintText: 'Select TPC Agent',
hintStyle: const TextStyle(
fontSize: 14,
),
hintText: 'Search ...',
border: OutlineInputBorder(
borderSide: BorderSide(
color: AppColors.semi_black,
),
borderRadius: BorderRadius.circular(
8,
),
),
suffixIcon:
provider.isLoading
? const CircularProgressIndicator()
: null,
),
onChanged: (value) {
Timer(
const Duration(milliseconds: 500),
() {
print('Search query: $value');
// Items are fetched via the items parameter
},
);
},
),
trailing: InkResponse(
onTap: () {
if (focusNodetpc.hasFocus) {
focusNodetpc.unfocus();
} else {
FocusScope.of(
fit: FlexFit.loose,
menuProps: MenuProps(
borderRadius: BorderRadius.circular(8),
elevation: 8,
),
itemBuilder:
(
context,
).requestFocus(focusNodetpc);
}
},
child: SvgPicture.asset(
"assets/svg/arrow_dropdown.svg",
height: 25,
width: 20,
item,
isDisabled,
isSelected,
) => Padding(
padding: EdgeInsets.symmetric(
horizontal: 12,
vertical: 10,
),
child: SizedBox(
height: 20,
child: Text(
item.text!,
style: const TextStyle(
fontSize: 14,
),
),
),
if (provider.tpcAgent.isNotEmpty &&
focusNodetpc.hasFocus) ...[
Card(
margin: EdgeInsets.symmetric(horizontal: 0),
child: Container(
padding: EdgeInsets.symmetric(
horizontal: 10,
),
height: 150,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
),
child: Scrollbar(
thickness: 2.5,
radius: Radius.circular(6),
thumbVisibility: true,
child: ListView.builder(
itemCount: provider.tpcAgent.length,
shrinkWrap: true,
physics:
AlwaysScrollableScrollPhysics(),
itemBuilder: (context, index) {
return InkResponse(
onTap: () async {
if (provider
.tpcAgent
.isNotEmpty) {
provider.selectedTpcAgent =
provider.tpcAgent[index];
print(
"Selected Complaint Type: ${provider.tpcAgent[index].text}, ID: ${provider.tpcAgent[index].id}",
items: (filter, infiniteScrollProps) async {
print('Fetching items for filter: $filter');
return provider.fetchTPCAccountsfromAPI(
context,
widget.mode,
filter,
);
provider.selectedTpcAgentID =
provider
.tpcAgent[index]
.id!;
},
itemAsString:
(TpcList? item) => item?.text ?? '',
onChanged: (TpcList? value) {
if (value != null) {
print('Selected account: ${value.text}');
provider.selectedTpcAgent = (value);
provider.selectedTpcAgentID = value!.id!;
provider.selectedTpcAgentValue =
provider
.tpcAgent[index]
.text!;
print(
"hfjkshfg" +
provider
.selectedTpcAgentID
.toString(),
);
provider
.dropDownTpcSearchController
.text = provider
.tpcAgent[index]
.text!;
value!.text!;
}
// provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID);
// provider.tpcAgent = [];
},
child: SizedBox(
height: 45,
child: Align(
alignment:
Alignment.centerLeft,
child: Text(
provider
.tpcAgent[index]
.text!,
selectedItem: provider.selectedTpcAgent,
decoratorProps: DropDownDecoratorProps(
decoration: InputDecoration(
hintText: 'Select TPC Agent',
hintStyle: TextStyle(
fontSize: 14,
color: AppColors.grey_thick,
),
// labelText: 'Select Account',
enabledBorder: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(14),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: AppColors.cyan_blue,
),
);
},
borderRadius: BorderRadius.circular(14),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(14),
),
errorBorder: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(14),
),
border: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(8),
),
],
contentPadding:
ddtheme.buttonStyleData.padding,
fillColor: AppColors.text_field_color,
filled: true,
),
),
onBeforePopupOpening: (selectedItem) async {
provider.dropDownSearchController.clear();
return Future.value();
},
// onBeforePopupOpening: () {
// print('Dropdown closed, clearing search');
// provider.dropDownSearchController.clear();
// },
),
//dd
// Container(
// alignment: Alignment.center,
// decoration: BoxDecoration(
// color: AppColors.text_field_color,
// borderRadius: BorderRadius.circular(14),
// ),
// child: ListTile(
// title: TextFormField(
// focusNode: focusNodetpc,
// onTapUpOutside: (event) {
// focusNodetpc.unfocus();
// },
// controller:
// provider.dropDownTpcSearchController,
// onChanged: (value) async {
// Future.delayed(
// Duration(milliseconds: 100),
// () async {
// await provider
// .ordersAddOrderTPCAgentFunction(
// context,
// widget.mode,
// value,
// );
// },
// );
// },
// decoration: InputDecoration(
// enabledBorder: InputBorder.none,
// focusedBorder: InputBorder.none,
// isDense: true,
// contentPadding:
// const EdgeInsets.symmetric(
// horizontal: 0,
// vertical: 8,
// ),
// hintText: 'Select TPC Agent',
// hintStyle: const TextStyle(
// fontSize: 14,
// ),
// border: OutlineInputBorder(
// borderRadius: BorderRadius.circular(
// 8,
// ),
// ),
// ),
// ),
//
// trailing: InkResponse(
// onTap: () {
// if (focusNodetpc.hasFocus) {
// focusNodetpc.unfocus();
// } else {
// FocusScope.of(
// context,
// ).requestFocus(focusNodetpc);
// }
// },
// child: SvgPicture.asset(
// "assets/svg/arrow_dropdown.svg",
// height: 25,
// width: 20,
// ),
// ),
// ),
// ),
// if (provider.tpcAgent.isNotEmpty &&
// focusNodetpc.hasFocus) ...[
// Card(
// margin: EdgeInsets.symmetric(horizontal: 0),
// child: Container(
// padding: EdgeInsets.symmetric(
// horizontal: 10,
// ),
// height: 150,
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(16),
// ),
// child: Scrollbar(
// thickness: 2.5,
// radius: Radius.circular(6),
// thumbVisibility: true,
// child: ListView.builder(
// itemCount: provider.tpcAgent.length,
// shrinkWrap: true,
// physics:
// AlwaysScrollableScrollPhysics(),
// itemBuilder: (context, index) {
// return InkResponse(
// onTap: () async {
// if (provider
// .tpcAgent
// .isNotEmpty) {
// provider.selectedTpcAgent =
// provider.tpcAgent[index];
//
// print(
// "Selected Complaint Type: ${provider.tpcAgent[index].text}, ID: ${provider.tpcAgent[index].id}",
// );
// provider.selectedTpcAgentID =
// provider
// .tpcAgent[index]
// .id!;
// provider.selectedTpcAgentValue =
// provider
// .tpcAgent[index]
// .text!;
// print(
// "hfjkshfg" +
// provider
// .selectedTpcAgentID
// .toString(),
// );
// provider
// .dropDownTpcSearchController
// .text = provider
// .tpcAgent[index]
// .text!;
// }
// // provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID);
// // provider.tpcAgent = [];
// },
// child: SizedBox(
// height: 45,
// child: Align(
// alignment:
// Alignment.centerLeft,
// child: Text(
// provider
// .tpcAgent[index]
// .text!,
// ),
// ),
// ),
// );
// },
// ),
// ),
// ),
// ),
// ],
if (provider.selectedTPCAgentError != null) ...[
errorWidget(
context,
......@@ -1948,17 +2343,18 @@ class _AddorderScreenState extends State<AddorderScreen> {
errorWidget(context, provider.tpcAmountError),
],
],
SizedBox(height: 15,)
SizedBox(height: 15),
],
),
),
),
),
Step( label: Text("Step 4", style: TextStyle(fontSize: 12)),
Step(
label: Text("Step 4", style: TextStyle(fontSize: 12)),
title: const Text(''),
isActive: _currentStep >= 1,
content:
OrderForm(),)
content: OrderForm(),
),
],
controlsBuilder: (context, details) {
return Column(
......@@ -1971,12 +2367,12 @@ class _AddorderScreenState extends State<AddorderScreen> {
: () {
print(_currentStep);
if (provider.validateForm4()) {
if(provider.productRows.isNotEmpty){
if (provider.productRows.isNotEmpty) {
provider.submitClicked = true;
var order_prod_data =
provider.getFormData();
print(order_prod_data);
print(order_prod_data['orders']);
print(
"Encoded Products : ${provider.getJsonEncodedProducts()}",
);
provider.getCurrentLocation();
provider
......@@ -1987,7 +2383,8 @@ class _AddorderScreenState extends State<AddorderScreen> {
provider.selectedAccountID,
provider
.selectedDispatchDistrictId,
provider.selectedDispatchSubLocID,
provider
.selectedDispatchSubLocID,
provider.selectedUnloadingScope,
provider.selectedFreightScope,
provider.selectedErectionScope,
......@@ -1996,14 +2393,15 @@ class _AddorderScreenState extends State<AddorderScreen> {
provider.selectedBillingStateID,
provider
.selectedBillingDistrictId,
provider.selectedBillingSubLocID,
provider
.selectedBillingSubLocID,
provider.selectedTpcAgentID,
order_prod_data['orders'],
provider
.getJsonEncodedProducts(),
);
}else{
} else {
toast(context, "Add min. 1 product");
}
} else {
provider.submitClicked = false;
}
......@@ -2038,19 +2436,18 @@ class _AddorderScreenState extends State<AddorderScreen> {
onTap: () {
setState(() {
if (_currentStep == 0) {
if (provider.validateForm1()){
if (provider.validateForm1()) {
_currentStep = 1;
}
} else if (_currentStep == 1) {
if (provider.validateForm2()) {
_currentStep = 2;
}
}else if (_currentStep == 2) {
} else if (_currentStep == 2) {
if (provider.validateForm3()) {
_currentStep = 3;
}
}
else {
} else {
_currentStep = 0;
}
});
......@@ -3646,9 +4043,7 @@ class _AddorderScreenState extends State<AddorderScreen> {
? null
: () {
provider.submitClicked = true;
var order_prod_data = provider.getFormData();
print(order_prod_data);
print(order_prod_data['orders']);
// var order_prod_data = provider.getFormData();
///[{"product_id":"1","qty":"1","price":"500","cgst_p":"9","sgst_p":"9","igst_p":"0","total_price":"500"},
///{"product_id":"2","qty":"1","price":"1000","cgst_p":"9","sgst_p":"9","igst_p":"0","total_price":"1000"}]
......@@ -3658,18 +4053,18 @@ class _AddorderScreenState extends State<AddorderScreen> {
widget.mode,
provider.selectedEmployeeID,
provider.selectedAccountID,
provider.selectedDispatchStateID,
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['orders'],
{},
);
},
child: Container(
......@@ -3818,14 +4213,8 @@ class OrderForm extends StatelessWidget {
var res = await Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Addorderaddproduct(
type: "Add",
),
settings: RouteSettings(
name:
'Addorderaddproduct',
),
builder: (context) => Addorderaddproduct(type: "Add"),
settings: RouteSettings(name: 'Addorderaddproduct'),
),
);
if (res != null) {
......@@ -3857,28 +4246,22 @@ class OrderForm extends StatelessWidget {
if (provider.productRows.isNotEmpty) ...[
const SizedBox(height: 10),
SizedBox(
height: 200,
height: 215,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: provider.productRows.length,
itemBuilder: (context, index) {
final product =
provider.productRows[index];
final product = provider.productRows[index];
final productName =
provider.saleProducts
.firstWhere(
(p) =>
p.id ==
product['product_id'],
(p) => p.id == product['product_id'],
orElse:
() => SaleProducts(
id: '',
prodName: 'Unknown',
),
() =>
SaleProducts(id: '', prodName: 'Unknown'),
)
.prodName;
final prodPrice =
product['price'] ?? '-';
final prodPrice = product['price'] ?? '-';
final prodQty = product['qty'] ?? '-';
final totalPrice = product['total_price'] ?? '-';
final cgstPercent = product['cgst_p'] ?? '-';
......@@ -3891,15 +4274,11 @@ class OrderForm extends StatelessWidget {
context,
MaterialPageRoute(
builder:
(context) =>
Addorderaddproduct(
(context) => Addorderaddproduct(
type: "Edit",
editIndex: index,
),
settings: RouteSettings(
name:
'Addorderaddproduct',
),
settings: RouteSettings(name: 'Addorderaddproduct'),
),
);
if (res != null) {
......@@ -3907,21 +4286,11 @@ class OrderForm extends StatelessWidget {
}
},
child: Container(
width:
MediaQuery.of(
context,
).size.width *
0.8,
width: MediaQuery.of(context).size.width * 0.8,
margin: EdgeInsets.only(
left: index == 0 ? 10 : 5,
right:
index ==
provider
.productRows
.length -
1
? 10
: 5,
index == provider.productRows.length - 1 ? 10 : 5,
bottom: 5,
),
padding: EdgeInsets.symmetric(
......@@ -3930,16 +4299,13 @@ class OrderForm extends StatelessWidget {
),
decoration: BoxDecoration(
color: Color(0xFFE6F6FF),
borderRadius:
BorderRadius.circular(14),
borderRadius: BorderRadius.circular(14),
),
child: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
flex: 1,
......@@ -3952,46 +4318,33 @@ class OrderForm extends StatelessWidget {
flex: 6,
child: Column(
crossAxisAlignment:
CrossAxisAlignment
.start,
mainAxisAlignment:
MainAxisAlignment.start,
CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Row(
children: [
Expanded(
flex: 4,
child: Text(
productName ??
"-",
productName ?? "-",
maxLines: 2,
overflow:
TextOverflow
.ellipsis,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontFamily:
"JakartaMedium",
fontFamily: "JakartaMedium",
fontSize: 14,
color:
AppColors
.semi_black,
color: AppColors.semi_black,
),
),
),
Expanded(
flex: 3,
child: Text(
textAlign:
TextAlign
.right,
textAlign: TextAlign.right,
"₹$prodPrice",
style: TextStyle(
fontFamily:
"JakartaMedium",
fontFamily: "JakartaMedium",
fontSize: 14,
color:
AppColors
.semi_black,
color: AppColors.semi_black,
),
),
),
......@@ -4000,25 +4353,19 @@ class OrderForm extends StatelessWidget {
Text(
"x $prodQty",
style: TextStyle(
fontFamily:
"JakartaMedium",
fontFamily: "JakartaMedium",
fontSize: 14,
color:
AppColors
.grey_semi,
color: AppColors.grey_semi,
),
),
SizedBox(height: 5),
],
),
),
],
),
Container(
padding: EdgeInsets.symmetric(
vertical: 3,
),
padding: EdgeInsets.symmetric(vertical: 2),
child: Row(
children: [
Expanded(
......@@ -4046,24 +4393,21 @@ class OrderForm extends StatelessWidget {
),
...List.generate(4, (j) {
final heads = [
"Total Price",
"CGST",
"SGST",
"IGST",
"Total Amount",
];
final subHeads = [
"₹ $totalPrice",
"$cgstPercent %",
"$sgstPercent %",
"$igstPerecent %",
"₹ $totalPrice",
];
return Container(
padding: EdgeInsets.symmetric(
vertical: 3,
),
padding: EdgeInsets.symmetric(vertical: 3),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
child: Text(
......@@ -4079,9 +4423,7 @@ class OrderForm extends StatelessWidget {
Expanded(
child: Text(
textAlign: TextAlign.right,
subHeads[j] == ""
? "-"
: subHeads[j],
subHeads[j] == "" ? "-" : subHeads[j],
style: TextStyle(
fontSize: 14,
color: Color(0xFF818181),
......@@ -4100,8 +4442,8 @@ class OrderForm extends StatelessWidget {
),
),
],
if(provider.productsEmptyError!=null)...[
errorWidget(context, provider.productsEmptyError)
if (provider.productsEmptyError != null) ...[
errorWidget(context, provider.productsEmptyError),
],
// Product Rows (Horizontal ListView)
// if (provider.ProductControllers.isNotEmpty) ...[
......
......@@ -123,7 +123,9 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[1],
focusNodes[2],TextInputAction.next,10
focusNodes[2],
TextInputAction.next,
10
),
if (provider.tpcMobileNumberError != null) ...[
errorWidget(context, provider.tpcMobileNumberError),
......
......@@ -63,11 +63,12 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
child: Scaffold(
resizeToAvoidBottomInset: true,
backgroundColor: AppColors.white,
appBar: appbar2(
appBar: appbar2New(
context,
"${widget.pageTitleName}",
provider.resetForm,
SizedBox(width: 0),
0xFFFFFFFF
),
body: Container(
padding: EdgeInsets.symmetric(horizontal: 10),
......@@ -538,7 +539,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
),
),
onWillPop: () async {
provider.resetForm();
return _onBackPressed(context);
},
);
......
......@@ -146,7 +146,7 @@ class _OrdermoduledashboardState extends State<Ordermoduledashboard> {
image: AssetImage(
"assets/svg/order/main_dashboard.png",
),
fit: BoxFit.contain,
fit: BoxFit.fitWidth,
),
gradient: LinearGradient(
colors: [
......@@ -158,117 +158,117 @@ class _OrdermoduledashboardState extends State<Ordermoduledashboard> {
),
),
),
if (provider.ordersgain.length > 0) ...[
Container(
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 5,
),
margin: EdgeInsets.only(bottom: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.vertical(
bottom: Radius.circular(16),
),
),
height: MediaQuery.of(context).size.height * 0.25,
child: GridView.builder(
padding: EdgeInsets.symmetric(
horizontal: 0,
vertical: 5,
),
itemCount: provider.ordersgain.length,
shrinkWrap: true,
scrollDirection: Axis.horizontal,
physics: AlwaysScrollableScrollPhysics(),
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 10,
mainAxisSpacing: 10,
childAspectRatio: 55 / 100,
),
itemBuilder: (context, jndex) {
final icons = ["comm_ic_1", "comm_ic_2"];
final leadTitles = [
'Order Gain',
'Dispatched',
'Pending Tasks',
'Quotation Generated',
];
final assetNames = [
"assets/svg/crm/open_leads_ic.svg",
"assets/svg/crm/today_visits_ic.svg",
"assets/svg/crm/pending_tasks_ic.svg",
"assets/svg/crm/quotes_generated_ic.svg",
];
final colors = [
0xFFE7FFE5,
0xFFFFFCD5,
0xFFEEF1FF,
0xFFF3EDFF,
];
final textcolors = [
0xFF0D9C00,
0xFF605C00,
0xFF6563FF,
0xFF493272,
];
return InkResponse(
child: Container(
padding: EdgeInsets.symmetric(
horizontal: 13,
),
decoration: BoxDecoration(
color: Color(colors[jndex]),
borderRadius: BorderRadius.circular(20),
),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
mainAxisAlignment:
MainAxisAlignment.center,
children: [
Text(
provider.ordersgain[jndex].count
.toString(),
style: TextStyle(
fontSize: 20,
fontFamily: "JakartaMedium",
color: Color(textcolors[jndex]),
),
),
Row(
children: [
Expanded(
flex: 3,
child: Text(
leadTitles[jndex],
style: TextStyle(
fontSize: 14,
fontFamily: "JakartaRegular",
color: AppColors.semi_black,
),
),
),
Expanded(
flex: 1,
child: SvgPicture.asset(
assetNames[jndex],
),
),
],
),
],
),
),
);
},
),
),
],
// if (provider.ordersgain.length > 0) ...[
// Container(
// padding: EdgeInsets.symmetric(
// horizontal: 10,
// vertical: 5,
// ),
// margin: EdgeInsets.only(bottom: 10),
// decoration: BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.vertical(
// bottom: Radius.circular(16),
// ),
// ),
// height: MediaQuery.of(context).size.height * 0.25,
// child: GridView.builder(
// padding: EdgeInsets.symmetric(
// horizontal: 0,
// vertical: 5,
// ),
// itemCount: provider.ordersgain.length,
// shrinkWrap: true,
// scrollDirection: Axis.horizontal,
// physics: AlwaysScrollableScrollPhysics(),
// gridDelegate:
// SliverGridDelegateWithFixedCrossAxisCount(
// crossAxisCount: 2,
// crossAxisSpacing: 10,
// mainAxisSpacing: 10,
// childAspectRatio: 55 / 100,
// ),
// itemBuilder: (context, jndex) {
// final icons = ["comm_ic_1", "comm_ic_2"];
// final leadTitles = [
// 'Order Gain',
// 'Dispatched',
// 'Pending Tasks',
// 'Quotation Generated',
// ];
// final assetNames = [
// "assets/svg/crm/open_leads_ic.svg",
// "assets/svg/crm/today_visits_ic.svg",
// "assets/svg/crm/pending_tasks_ic.svg",
// "assets/svg/crm/quotes_generated_ic.svg",
// ];
//
// final colors = [
// 0xFFE7FFE5,
// 0xFFFFFCD5,
// 0xFFEEF1FF,
// 0xFFF3EDFF,
// ];
// final textcolors = [
// 0xFF0D9C00,
// 0xFF605C00,
// 0xFF6563FF,
// 0xFF493272,
// ];
//
// return InkResponse(
// child: Container(
// padding: EdgeInsets.symmetric(
// horizontal: 13,
// ),
// decoration: BoxDecoration(
// color: Color(colors[jndex]),
// borderRadius: BorderRadius.circular(20),
// ),
// child: Column(
// crossAxisAlignment:
// CrossAxisAlignment.start,
// mainAxisAlignment:
// MainAxisAlignment.center,
// children: [
// Text(
// provider.ordersgain[jndex].count
// .toString(),
// style: TextStyle(
// fontSize: 20,
// fontFamily: "JakartaMedium",
// color: Color(textcolors[jndex]),
// ),
// ),
// Row(
// children: [
// Expanded(
// flex: 3,
// child: Text(
// leadTitles[jndex],
// style: TextStyle(
// fontSize: 14,
// fontFamily: "JakartaRegular",
// color: AppColors.semi_black,
// ),
// ),
// ),
// Expanded(
// flex: 1,
// child: SvgPicture.asset(
// assetNames[jndex],
// ),
// ),
// ],
// ),
// ],
// ),
// ),
// );
// },
// ),
// ),
// ],
],
),
),
......
......@@ -7,6 +7,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/ordersProvider/dispatchOrderProvider.dart';
import 'package:generp/Notifiers/ordersProvider/pagesDashboardProvider.dart';
import 'package:generp/Utils/GlobalConstants.dart';
import 'package:generp/Utils/dropdownTheme.dart';
import 'package:generp/screens/screensExports.dart';
import 'package:provider/provider.dart';
......@@ -344,14 +345,14 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
"Account Name",
"Sales Person Name",
"Order Received Date",
"OTP",
// "OTP",
];
final subHeadings2 = [
provider.orderDetails.orderNumber ?? "-",
provider.orderDetails.accountName ?? "-",
provider.orderDetails.salesPersonEmpName ?? "-",
provider.orderDetails.orderReceivedDate ?? "-",
provider.orderDetails.otp ?? "-",
// provider.orderDetails.otp ?? "-",
];
final headings3 = [
......@@ -503,17 +504,11 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
],
];
return WillPopScope(
child: SafeArea(
top: false,
bottom: Platform.isIOS ? false : true,
child: Scaffold(
return Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar2New(
context,
widget.mode == ""
? "Order Details"
: "Order Details (${widget.mode})",
"Order Details",
provider.resetAll,
SizedBox.shrink(),
0xFFFFFFFF,
......@@ -601,7 +596,7 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
Text(
orderDetails.balanceAmount == ""
? "-"
: "${orderDetails.balanceAmount}",
: "${orderDetails.balanceAmount}",
style: TextStyle(
fontFamily: "JakartaRegular",
fontSize: 14,
......@@ -654,16 +649,14 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
mode: widget.mode,
pageTitleName: "Edit Order",
orderID:
provider
.orderDetails
.id,
widget.orderId,
),
settings: RouteSettings(
name: 'Editorderaccountdetails',
),
),
);
if (res == true) {
if (routeSettingName == 'Editorderaccountdetails') {
provider.ordersDetailsByModeAPIFunction(
context,
widget.orderId,
......@@ -1948,7 +1941,7 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
SizedBox(width: 10),
],
if (["admin"].contains(widget.mode)) ...[
if (widget.mode=="admin") ...[
SvgPicture.asset(
"assets/svg/crm/vertical_line_ic.svg",
),
......@@ -2035,12 +2028,6 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
),
),
),
),
),
onWillPop: () {
return onBackPressed(context);
},
);
},
);
......
......@@ -3,6 +3,7 @@ import 'dart:io';
import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:generp/Utils/GlobalConstants.dart';
import 'package:generp/screens/order/ordersDetailsByModes.dart';
import 'package:provider/provider.dart';
......@@ -228,7 +229,7 @@ class _OrderslistbyModesState extends State<OrderslistbyModes> {
itemCount: ordersList.length,
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
itemBuilder: (context, ol) {
if (ordersList.isEmpty) {
return SizedBox(
child: Center(child: Text("No Data Available")),
......@@ -243,12 +244,13 @@ class _OrderslistbyModesState extends State<OrderslistbyModes> {
builder:
(context) => Ordersdetailsbymodes(
pageTitleName: widget.pageTitleName,
orderId: ordersList[index].orderId,
orderId: ordersList[ol].orderId,
mode: widget.mode,
),
settings: RouteSettings(name: "Ordersdetailsbymodes")
),
);
if (res == true) {
if (routeSettingName == "Ordersdetailsbymodes") {
provider.ordersListByModeFilterAPIFunction(
context,
widget.mode,
......@@ -303,21 +305,21 @@ class _OrderslistbyModesState extends State<OrderslistbyModes> {
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: getDecorationColor(
ordersList[index].status,
ordersList[ol].status,
),
shape: BoxShape.circle,
),
child: Center(
child: Text(
getText(
ordersList[index].status,
ordersList[ol].status,
),
style: TextStyle(
color: getTextColor(
ordersList[index].status,
ordersList[ol].status,
),
fontSize: getSize(
ordersList[index].status,
ordersList[ol].status,
),
fontFamily: "JakartaBold",
),
......@@ -334,7 +336,7 @@ class _OrderslistbyModesState extends State<OrderslistbyModes> {
CrossAxisAlignment.start,
children: [
Text(
ordersList[index]
ordersList[ol]
.accountName!,
maxLines: 1,
overflow:
......@@ -347,7 +349,7 @@ class _OrderslistbyModesState extends State<OrderslistbyModes> {
),
),
Text(
ordersList[index]
ordersList[ol]
.orderNumber!,
style: TextStyle(
fontSize: 14,
......@@ -370,7 +372,7 @@ class _OrderslistbyModesState extends State<OrderslistbyModes> {
child: Container(
child: Text(
"₹"
"${ordersList[index].balanceAmount}",
"${ordersList[ol].balanceAmount}",
textAlign: TextAlign.right,
style: TextStyle(
fontFamily: "JakartaMedium",
......
......@@ -46,6 +46,7 @@ class _TpcagentdetailsbymodeState extends State<Tpcagentdetailsbymode> {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Tpcagentsprovider>(context, listen: false);
provider.TPCAgentsDetailsAPIFunction(context, widget.tpcAgentId);
provider.showMoreDetails = false;
});
}
......@@ -128,11 +129,7 @@ class _TpcagentdetailsbymodeState extends State<Tpcagentdetailsbymode> {
"subHeadings": subHeadings2,
},
];
return WillPopScope(
child: SafeArea(
top: false,
bottom: Platform.isIOS ? false : true,
child: Scaffold(
return Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar2New(
context,
......@@ -298,9 +295,7 @@ class _TpcagentdetailsbymodeState extends State<Tpcagentdetailsbymode> {
) {
if (headings[j] == "ID Proof" &&
tpcAgentDetails
.idProofDirFilePath!
.trim()
.isEmpty) {
.idProofDirFilePath=="") {
return SizedBox.shrink();
}
return Container(
......@@ -500,6 +495,7 @@ class _TpcagentdetailsbymodeState extends State<Tpcagentdetailsbymode> {
),
margin: EdgeInsets.symmetric(
horizontal: 5,
vertical: 5
),
child: Column(
......@@ -728,12 +724,6 @@ class _TpcagentdetailsbymodeState extends State<Tpcagentdetailsbymode> {
],
),
),
),
),
onWillPop: () {
return onBackPressed(context);
},
);
},
);
......@@ -825,6 +815,7 @@ class _TpcagentdetailsbymodeState extends State<Tpcagentdetailsbymode> {
),
Divider(thickness: 0.5, color: Color(0xFFD7D7D7)),
...List.generate(provider.subHeadings.length, (j) {
return Container(
padding: EdgeInsets.symmetric(vertical: 7),
child: Row(
......
......@@ -69,7 +69,7 @@ class _TpcagentissuelistState extends State<Tpcagentissuelist> {
? Platform.isAndroid
? WillPopScope(
onWillPop: () {
Provider.of<Tpcagentsprovider>(context).resetAll();
Provider.of<Tpcagentsprovider>(context,listen: false).resetAll();
return onBackPressed(context);
},
child: SafeArea(
......@@ -87,15 +87,7 @@ class _TpcagentissuelistState extends State<Tpcagentissuelist> {
return Consumer<Tpcagentsprovider>(
builder: (context, provider, child) {
final tpcAgentsIssueList = provider.tpcAgentsIssueList;
return WillPopScope(
onWillPop: () {
provider.resetAll();
return onBackPressed(context);
},
child: SafeArea(
top: false,
bottom: Platform.isIOS?false:true,
child: Scaffold(
return Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar2New(
context,
......@@ -244,8 +236,6 @@ class _TpcagentissuelistState extends State<Tpcagentissuelist> {
],
),
) : Emptywidget(context),
),
),
);
},
);
......
......@@ -351,11 +351,7 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
],
];
return WillPopScope(
child: SafeArea(
top: false,
bottom: Platform.isIOS?false:true,
child: Scaffold(
return Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar2New(context, widget.pageTitleName, provider.resetAll,
SizedBox.shrink(),
......@@ -672,7 +668,7 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
SizedBox(
width: double.infinity,
height: 300,
height: 260,
child: ListView.builder(
physics: AlwaysScrollableScrollPhysics(),
shrinkWrap: true,
......@@ -684,7 +680,7 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
itemCount: productsHistory.length,
itemBuilder: (context, lp) {
return Container(
height: 300,
height: 260,
width:
MediaQuery.of(context).size.width * 0.9,
decoration: BoxDecoration(
......@@ -747,11 +743,11 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
),
),
Expanded(
flex: 2,
flex: 3,
child: Text(
textAlign:
TextAlign.right,
"₹${productsHistory[lp].unitPrice ?? "-"}",
"₹${productsHistory[lp].totalPrice ?? "-"}",
style: TextStyle(
fontFamily:
"JakartaMedium",
......@@ -772,7 +768,7 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
color: AppColors.grey_semi,
),
),
SizedBox(height: 5),
// DottedLine(
// dashGapLength: 4,
// dashGapColor: Colors.white,
......@@ -941,13 +937,13 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
],
),
),
...List.generate(2, (j) {
...List.generate(1, (j) {
final heads = [
"Unit Price",
// "Unit Price",
"Total Price"
];
final subHeads = [
"₹ ${productsHistory[lp].unitPrice ?? "-"}",
// "₹ ${productsHistory[lp].unitPrice ?? "-"}",
"₹ ${productsHistory[lp].totalPrice ?? "-"}",
];
return Container(
......@@ -1107,6 +1103,7 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
margin: EdgeInsets.symmetric(horizontal: 5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment:
......@@ -1144,6 +1141,8 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
feedbackHistory[lp]
.employeNaem ??
"-",
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontFamily:
"JakartaMedium",
......@@ -1170,7 +1169,7 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
),
),
Expanded(
flex: 2,
flex: 4,
child: Container(
decoration: BoxDecoration(
borderRadius:
......@@ -1694,12 +1693,6 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
),
),
),
),
onWillPop: () {
return onBackPressed(context);
},
);
},
);
......
......@@ -71,7 +71,7 @@ class _TpcagentlistbymodeState extends State<Tpcagentlistbymode> {
? Platform.isAndroid
? WillPopScope(
onWillPop: () {
Provider.of<Tpcagentsprovider>(context).resetAll();
Provider.of<Tpcagentsprovider>(context,listen: false).resetAll();
return onBackPressed(context);
},
child: SafeArea(
......@@ -89,15 +89,7 @@ class _TpcagentlistbymodeState extends State<Tpcagentlistbymode> {
return Consumer<Tpcagentsprovider>(
builder: (context, provider, child) {
final tpcAgentsLists = provider.tpcAgentsList;
return WillPopScope(
onWillPop: () {
provider.resetAll();
return onBackPressed(context);
},
child: SafeArea(
top: false,
bottom: Platform.isIOS?false:true,
child: Scaffold(
return Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar2New(
context,
......@@ -250,8 +242,6 @@ class _TpcagentlistbymodeState extends State<Tpcagentlistbymode> {
],
),
) : Emptywidget(context),
),
),
);
},
);
......
......@@ -2463,7 +2463,7 @@ class ApiCalling {
'billing_state': billing_state.toString(),
'billing_district': billing_district.toString(),
'billing_sub_locality': billing_sub_locality.toString(),
'order_products': jsonEncode(order_products).toString(),
'order_products': (order_products).toString(),
'lead_id': lead_id.toString(),
'feedback': feedback.toString(),
'in_time': in_time.toString(),
......
......@@ -289,6 +289,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.3.9"
dropdown_search:
dependency: "direct main"
description:
name: dropdown_search
sha256: c29b3e5147a82a06a4a08b3b574c51cb48cc17ad89893d53ee72a6f86643622e
url: "https://pub.dev"
source: hosted
version: "6.0.2"
equatable:
dependency: transitive
description:
......
......@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.97+105
version: 1.0.97+106
environment:
sdk: ^3.7.2
......@@ -85,6 +85,7 @@ dependencies:
flutter_staggered_grid_view: ^0.7.0
dotted_line: ^3.2.3
flutter_slidable: ^4.0.0
dropdown_search: ^6.0.2
dev_dependencies:
flutter_test:
......
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