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)
]
]
],
),
),
......
This diff is collapsed.
......@@ -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