Commit 29665037 authored by Sai Srinivas's avatar Sai Srinivas
Browse files

30-07-2025 By Sai Srinivas

CRM Module
parent 56ca3566
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="close">
<path fill="none" d="M0 0h24v24H0V0z"></path>
<path d="M18.3 5.71c-.39-.39-1.02-.39-1.41 0L12 10.59 7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L12 13.41l4.89 4.89c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z"></path>
</svg>
\ No newline at end of file
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="20" cy="20" r="20" fill="white"/>
<path d="M26.4376 15.7071C26.8281 15.3166 26.8281 14.6834 26.4376 14.2929C26.0471 13.9024 25.4139 13.9024 25.0234 14.2929L25.7305 15L26.4376 15.7071ZM13 26.7305C13 27.2828 13.4477 27.7305 14 27.7305L23 27.7305C23.5523 27.7305 24 27.2828 24 26.7305C24 26.1782 23.5523 25.7305 23 25.7305L15 25.7305L15 17.7305C15 17.1782 14.5523 16.7305 14 16.7305C13.4477 16.7305 13 17.1782 13 17.7305L13 26.7305ZM25.7305 15L25.0234 14.2929L13.2929 26.0234L14 26.7305L14.7071 27.4376L26.4376 15.7071L25.7305 15Z" fill="#4CAF50"/>
</svg>
...@@ -354,6 +354,7 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier { ...@@ -354,6 +354,7 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier {
set productRows(value) { set productRows(value) {
_productRows = value; _productRows = value;
productsEmptyError = "";
notifyListeners(); notifyListeners();
} }
...@@ -369,6 +370,7 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier { ...@@ -369,6 +370,7 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier {
String? TelephoneError = ""; String? TelephoneError = "";
String? mobileError = ""; String? mobileError = "";
String? addressError = ""; String? addressError = "";
String? productsEmptyError = "";
String? designationError = ""; String? designationError = "";
String? taxesError = ""; String? taxesError = "";
String? SpecialNoteError = ""; String? SpecialNoteError = "";
...@@ -764,6 +766,7 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier { ...@@ -764,6 +766,7 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier {
districtsError = ""; districtsError = "";
subLocError = ""; subLocError = "";
leadStatusError = ""; leadStatusError = "";
productsEmptyError = "";
notifyListeners(); notifyListeners();
} }
...@@ -836,7 +839,13 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier { ...@@ -836,7 +839,13 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier {
if(mobileController.text.trim().isEmpty){ if(mobileController.text.trim().isEmpty){
mobileError = "Please enter Mobile Number"; mobileError = "Please enter Mobile Number";
isValid = false; isValid = false;
}else{
if(mobileController.text.length<10){
mobileError = "Please enter 10 digits";
isValid = false;
}
} }
// if(designationController.text.trim().isEmpty){ // if(designationController.text.trim().isEmpty){
// designationError = "Please enter Designation"; // designationError = "Please enter Designation";
// isValid = false; // isValid = false;
...@@ -849,11 +858,11 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier { ...@@ -849,11 +858,11 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier {
bool validateStep2(){ bool validateStep2(){
bool isValid = true; bool isValid = true;
// if(alternateMobileController.text.trim().isEmpty){ if(alternateMobileController.text.trim().isNotEmpty && alternateMobileController.text.length<10){
// AlternatemobileError = ""; AlternatemobileError = "Please enter 10 digits";
// isValid = false; isValid = false;
//
// } }
// if(telephoneController.text.trim().isEmpty){ // if(telephoneController.text.trim().isEmpty){
// isValid = false; // isValid = false;
// //
...@@ -902,6 +911,10 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier { ...@@ -902,6 +911,10 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier {
addressError = "Please Enter address"; addressError = "Please Enter address";
isValid = false; isValid = false;
} }
if(productRows.isEmpty || _productRows.isEmpty){
productsEmptyError = "Please Add min. one Product";
isValid = false;
}
notifyListeners(); notifyListeners();
return isValid; return isValid;
} }
......
import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
...@@ -8,6 +9,7 @@ import 'package:flutter_local_notifications/flutter_local_notifications.dart'; ...@@ -8,6 +9,7 @@ import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:generp/Models/crmModels/crmLeadDetailsGenerateQuotationViewResponse.dart'; import 'package:generp/Models/crmModels/crmLeadDetailsGenerateQuotationViewResponse.dart';
import 'package:generp/Models/crmModels/crmSelectedProductDetailsResponse.dart'; import 'package:generp/Models/crmModels/crmSelectedProductDetailsResponse.dart';
import 'package:generp/screens/LoginScreen.dart'; import 'package:generp/screens/LoginScreen.dart';
import 'package:get/get.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
...@@ -25,6 +27,7 @@ class Crmgeneratequotationprovider extends ChangeNotifier { ...@@ -25,6 +27,7 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
final GlobalKey webViewKey = GlobalKey(); final GlobalKey webViewKey = GlobalKey();
var dl = DownloadManager(); var dl = DownloadManager();
bool _buttonsLoading = false;
ProductsData? _selectedProductsDeatilsData; ProductsData? _selectedProductsDeatilsData;
TextEditingController addEditProductPriceController = TextEditingController(); TextEditingController addEditProductPriceController = TextEditingController();
TextEditingController addEditQuantityController = TextEditingController(); TextEditingController addEditQuantityController = TextEditingController();
...@@ -40,8 +43,16 @@ class Crmgeneratequotationprovider extends ChangeNotifier { ...@@ -40,8 +43,16 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
List<Map<String, dynamic>> get productRows => _productRows; List<Map<String, dynamic>> get productRows => _productRows;
bool get buttonsLoading => _buttonsLoading;
set buttonsLoading(bool value){
_buttonsLoading = value;
notifyListeners();
}
set productRows(value) { set productRows(value) {
_productRows = value; _productRows = value;
productRowsError = "";
notifyListeners(); notifyListeners();
} }
...@@ -50,6 +61,7 @@ class Crmgeneratequotationprovider extends ChangeNotifier { ...@@ -50,6 +61,7 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
String? mailIdError = ""; String? mailIdError = "";
String? mobileError = ""; String? mobileError = "";
String? subjectsError = ""; String? subjectsError = "";
String? productRowsError = "";
String? taxesError = ""; String? taxesError = "";
String? SpecialNoteError = ""; String? SpecialNoteError = "";
String? forError = ""; String? forError = "";
...@@ -98,6 +110,7 @@ class Crmgeneratequotationprovider extends ChangeNotifier { ...@@ -98,6 +110,7 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
set selectedTaxes(String? value){ set selectedTaxes(String? value){
_selectedTaxes = value; _selectedTaxes = value;
taxesError = "";
notifyListeners(); notifyListeners();
} }
...@@ -170,7 +183,7 @@ class Crmgeneratequotationprovider extends ChangeNotifier { ...@@ -170,7 +183,7 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
if (index >= 0 && index < leadProductsList.length) { if (index >= 0 && index < leadProductsList.length) {
leadProductsList[index] = updatedProduct; leadProductsList[index] = updatedProduct;
_productRows[index] = { _productRows[index] = {
"product_id": updatedProduct.productId!, "product_id": updatedProduct.productId,
"price": updatedProduct.price, "price": updatedProduct.price,
"qty": updatedProduct.qty, "qty": updatedProduct.qty,
"net_price": updatedProduct.prodTotalPrice, "net_price": updatedProduct.prodTotalPrice,
...@@ -190,11 +203,18 @@ class Crmgeneratequotationprovider extends ChangeNotifier { ...@@ -190,11 +203,18 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
void preFillFormForEdit(LeadProducts product) { void preFillFormForEdit(LeadProducts product,int index) {
checkDropdownReset(); final newprod = product;
selectedLeadProducts = product; selectedProducts = productsList.firstWhere(
selectedAddEditLeadProductId = product.id; (p) => p.id == newprod.productId,
selectedAddEditLeadProductName = product.productName; orElse: () => Products(id: '', name: 'Unknown'),
);
// selectedLeadProducts = product;
selectedAddEditProductId = product.productId;
selectedAddEditProductName = product.productName;
addEditProductPriceController.text = product.price?.toString() ?? ''; addEditProductPriceController.text = product.price?.toString() ?? '';
addEditQuantityController.text = product.qty?.toString() ?? ''; addEditQuantityController.text = product.qty?.toString() ?? '';
addEditTotalAmountController.text = addEditTotalAmountController.text =
...@@ -382,6 +402,11 @@ class Crmgeneratequotationprovider extends ChangeNotifier { ...@@ -382,6 +402,11 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
quotation_type, quotation_type,
) async { ) async {
try { try {
if(!validateform()){
return;
}
_buttonsLoading = true;
notifyListeners();
final prov = Provider.of<HomescreenNotifier>(context, listen: false); final prov = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.crmLeadDetailsGenerateQuotationSubmitAPI( final data = await ApiCalling.crmLeadDetailsGenerateQuotationSubmitAPI(
prov.empId, prov.empId,
...@@ -399,6 +424,7 @@ class Crmgeneratequotationprovider extends ChangeNotifier { ...@@ -399,6 +424,7 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
); );
if (data != null) { if (data != null) {
if (data.error == "0") { if (data.error == "0") {
_buttonsLoading = false;
_quotationFilePath = data.quoteFilepath!; _quotationFilePath = data.quoteFilepath!;
if (quotation_type == "genquotedown") { if (quotation_type == "genquotedown") {
String suggestedFilename = getUniqueFilename('quotation', 'pdf'); String suggestedFilename = getUniqueFilename('quotation', 'pdf');
...@@ -419,9 +445,17 @@ class Crmgeneratequotationprovider extends ChangeNotifier { ...@@ -419,9 +445,17 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
toast(context, data.message); toast(context, data.message);
resetForm(); resetForm();
notifyListeners(); notifyListeners();
} else {} } else {
} else {} _buttonsLoading = false;
notifyListeners();
}
} else {
_buttonsLoading = false;
notifyListeners();
}
} catch (e, s) { } catch (e, s) {
_buttonsLoading = false;
notifyListeners();
print("Error: $e, Stack: $s"); print("Error: $e, Stack: $s");
} }
} }
...@@ -621,6 +655,50 @@ class Crmgeneratequotationprovider extends ChangeNotifier { ...@@ -621,6 +655,50 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
bool validateform(){
bool isValid = true;
if(mailIdController.text.trim().isEmpty){
mailIdError = "Please Enter Email ID";
isValid = false;
}
if(mobileController.text.trim().isEmpty){
mobileError = "Please Enter Mobile Number";
isValid = false;
}else{
if(mobileController.text.length<10){
mobileError = "Mobile Number should be 10 digits";
isValid = false;
}
}
if(subjectsController.text.isEmpty){
subjectsError = "Please Enter Subject";
isValid = false;
}
if(productRows.isEmpty||_productRows.isEmpty){
productRowsError = "Please Add Min. 1 Product";
isValid = false;
}
if(_selectedTaxes==null||_selectedTaxes==""){
taxesError = "Please select a value";
isValid = false;
}
if(SpecialNoteController.text.trim().isEmpty){
SpecialNoteError = "Please Enter a Note";
isValid = false;
}
if(forController.text.trim().isEmpty){
forError = "Please Enter FOR";
isValid = false;
}
if(paymentTermsController.text.trim().isEmpty){
paymentTermsError = "Please Enter Terms";
isValid = false;
}
_buttonsLoading = false;
notifyListeners();
return isValid;
}
void resetForm() { void resetForm() {
checkDropdownReset(); checkDropdownReset();
_productRows.clear(); _productRows.clear();
...@@ -669,6 +747,7 @@ class Crmgeneratequotationprovider extends ChangeNotifier { ...@@ -669,6 +747,7 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
mailIdError = ""; mailIdError = "";
mobileError = ""; mobileError = "";
subjectsError = ""; subjectsError = "";
productRowsError = "";
taxesError = ""; taxesError = "";
SpecialNoteError = ""; SpecialNoteError = "";
forError = ""; forError = "";
......
...@@ -9,8 +9,6 @@ import '../../services/api_calling.dart'; ...@@ -9,8 +9,6 @@ import '../../services/api_calling.dart';
import '../HomeScreenNotifier.dart'; import '../HomeScreenNotifier.dart';
class crmProspectDetailsProvider extends ChangeNotifier { class crmProspectDetailsProvider extends ChangeNotifier {
List<Leads> _leadsList = []; List<Leads> _leadsList = [];
List<Contacts> _contactsList = []; List<Contacts> _contactsList = [];
List<Orders> _ordersList = []; List<Orders> _ordersList = [];
...@@ -32,7 +30,8 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -32,7 +30,8 @@ class crmProspectDetailsProvider extends ChangeNotifier {
TextEditingController editNameController = TextEditingController(); TextEditingController editNameController = TextEditingController();
TextEditingController editDesignationController = TextEditingController(); TextEditingController editDesignationController = TextEditingController();
TextEditingController editMobileNumberController = TextEditingController(); TextEditingController editMobileNumberController = TextEditingController();
TextEditingController editAlternativeMobileController = TextEditingController(); TextEditingController editAlternativeMobileController =
TextEditingController();
TextEditingController editTelephoneController = TextEditingController(); TextEditingController editTelephoneController = TextEditingController();
TextEditingController editEmailController = TextEditingController(); TextEditingController editEmailController = TextEditingController();
TextEditingController dateController = TextEditingController(); TextEditingController dateController = TextEditingController();
...@@ -59,103 +58,131 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -59,103 +58,131 @@ class crmProspectDetailsProvider extends ChangeNotifier {
List<String> _subHeadings = []; List<String> _subHeadings = [];
DateTime? _date; DateTime? _date;
String? _formattedDate; String? _formattedDate;
String? _formattedDateToSend;
String? get formattedDateToSend => _formattedDateToSend;
bool get showMoreDetails => _showMoreDetails; bool get showMoreDetails => _showMoreDetails;
get showTransferAccount => _transferAccount; get showTransferAccount => _transferAccount;
List<Leads> get leadList => _leadsList; List<Leads> get leadList => _leadsList;
List<Contacts> get contactList => _contactsList; List<Contacts> get contactList => _contactsList;
List<Orders> get ordersList => _ordersList; List<Orders> get ordersList => _ordersList;
List<Payments> get paymentsList => _paymentsList; List<Payments> get paymentsList => _paymentsList;
AccountDetails get accountDetails => _accountDetails; AccountDetails get accountDetails => _accountDetails;
String? get nameError => _nameError; String? get nameError => _nameError;
String? get designationError => _designationError; String? get designationError => _designationError;
String? get mobileNumError => _mobileNumError; String? get mobileNumError => _mobileNumError;
String? get altMobError => _altMobError; String? get altMobError => _altMobError;
String? get teleError => _teleError; String? get teleError => _teleError;
String? get emailError => _emailError; String? get emailError => _emailError;
String? get noteError => _noteError; String? get noteError => _noteError;
String? get editNameError => _editNameError; String? get editNameError => _editNameError;
String? get editDesignationError => _editDesignationError; String? get editDesignationError => _editDesignationError;
String? get editMobileNumError => _editMobileNumError; String? get editMobileNumError => _editMobileNumError;
String? get editAltMobError => _editAltMobError; String? get editAltMobError => _editAltMobError;
String? get editTeleError => _editTeleError; String? get editTeleError => _editTeleError;
String? get editEmailError => _editEmailError; String? get editEmailError => _editEmailError;
String? get dateError => _dateError; String? get dateError => _dateError;
bool get isLoading => _isLoading; bool get isLoading => _isLoading;
List<String> get Headings => _headings; List<String> get Headings => _headings;
List<String> get subHeadings => _subHeadings; List<String> get subHeadings => _subHeadings;
String? get formattedDate => _formattedDate; String? get formattedDate => _formattedDate;
set showMoreDetails(bool value){ set showMoreDetails(bool value) {
_showMoreDetails = value; _showMoreDetails = value;
notifyListeners(); notifyListeners();
} }
set nameError(String? value){ set nameError(String? value) {
_nameError = value; _nameError = value;
notifyListeners(); notifyListeners();
} }
set designationError(String? value){
set designationError(String? value) {
_designationError = value; _designationError = value;
notifyListeners(); notifyListeners();
} }
set mobileNumError(String? value){
set mobileNumError(String? value) {
_mobileNumError = value; _mobileNumError = value;
notifyListeners(); notifyListeners();
} }
set altMobError(String? value){
set altMobError(String? value) {
_altMobError = value; _altMobError = value;
notifyListeners(); notifyListeners();
} }
set teleError(String? value){
set teleError(String? value) {
_teleError = value; _teleError = value;
notifyListeners(); notifyListeners();
} }
set emailError(String? value){
set emailError(String? value) {
_emailError = value; _emailError = value;
notifyListeners(); notifyListeners();
} }
set noteError(String? value){ set noteError(String? value) {
_noteError = value; _noteError = value;
notifyListeners(); notifyListeners();
} }
set editNameError(String? value) {
set editNameError(String? value){
_editNameError = value; _editNameError = value;
notifyListeners(); notifyListeners();
} }
set editDesignationError(String? value){
set editDesignationError(String? value) {
_editDesignationError = value; _editDesignationError = value;
notifyListeners(); notifyListeners();
} }
set editMobileNumError(String? value){
set editMobileNumError(String? value) {
_editMobileNumError = value; _editMobileNumError = value;
notifyListeners(); notifyListeners();
} }
set editAltMobError(String? value){
set editAltMobError(String? value) {
_editAltMobError = value; _editAltMobError = value;
notifyListeners(); notifyListeners();
} }
set editTeleError(String? value){
set editTeleError(String? value) {
_editTeleError = value; _editTeleError = value;
notifyListeners(); notifyListeners();
} }
set editEmailError(String? value){
set editEmailError(String? value) {
_editEmailError = value; _editEmailError = value;
notifyListeners(); notifyListeners();
} }
set isLoading(bool value){ set isLoading(bool value) {
_isLoading = value; _isLoading = value;
notifyListeners(); notifyListeners();
} }
...@@ -167,14 +194,15 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -167,14 +194,15 @@ class crmProspectDetailsProvider extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
set dateError(value){ set dateError(value) {
_dateError = value; _dateError = value;
notifyListeners(); notifyListeners();
} }
void setDate(DateTime newDate) { void setDate(DateTime newDate) {
_date = newDate; _date = newDate;
_formattedDate = DateFormat('yyyy-MM-dd').format(newDate); _formattedDate = DateFormat('d MMM yyyy').format(newDate);
_formattedDateToSend = DateFormat('yyyy-MM-dd').format(newDate);
dateController.text = _formattedDate!; dateController.text = _formattedDate!;
_dateError = null; _dateError = null;
notifyListeners(); notifyListeners();
...@@ -194,7 +222,7 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -194,7 +222,7 @@ class crmProspectDetailsProvider extends ChangeNotifier {
if (data.error == "0") { if (data.error == "0") {
_leadsList = data.leads!; _leadsList = data.leads!;
_accountDetails = data.accountDetails!; _accountDetails = data.accountDetails!;
_contactsList =data.contacts!; _contactsList = data.contacts!;
_ordersList = data.orders!; _ordersList = data.orders!;
_paymentsList = data.payments!; _paymentsList = data.payments!;
_headings = [ _headings = [
...@@ -217,31 +245,31 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -217,31 +245,31 @@ class crmProspectDetailsProvider extends ChangeNotifier {
]; ];
_transferAccount = data.showTransfeLeadButton; _transferAccount = data.showTransfeLeadButton;
_subHeadings = [ _subHeadings = [
data.accountDetails!.name??"-", data.accountDetails!.name ?? "-",
data.accountDetails!.accManager??"-", data.accountDetails!.accManager ?? "-",
data.accountDetails!.owner??"-", data.accountDetails!.owner ?? "-",
data.accountDetails!.address??"-", data.accountDetails!.address ?? "-",
data.accountDetails!.state??"-", data.accountDetails!.state ?? "-",
data.accountDetails!.district??"-", data.accountDetails!.district ?? "-",
data.accountDetails!.subLocality??"-", data.accountDetails!.subLocality ?? "-",
data.accountDetails!.pincode??"-", data.accountDetails!.pincode ?? "-",
data.accountDetails!.source??"-", data.accountDetails!.source ?? "-",
data.accountDetails!.reference??"-", data.accountDetails!.reference ?? "-",
data.accountDetails!.team??"-", data.accountDetails!.team ?? "-",
data.accountDetails!.segment??"-", data.accountDetails!.segment ?? "-",
"${data.accountDetails!.aage ?? "-"} days old", "${data.accountDetails!.aage ?? "-"} days old",
]; ];
_isLoading = false; _isLoading = false;
notifyListeners(); notifyListeners();
}else{ } else {
_isLoading = false; _isLoading = false;
notifyListeners(); notifyListeners();
} }
}else{ } else {
_isLoading = false; _isLoading = false;
notifyListeners(); notifyListeners();
} }
...@@ -251,12 +279,15 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -251,12 +279,15 @@ class crmProspectDetailsProvider extends ChangeNotifier {
} }
} }
Future<void> crmCheckFields(context, value, type) async {
Future<void> crmCheckFields(context,value,type) async {
try { try {
var prov = Provider.of<HomescreenNotifier>(context, listen: false); var prov = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.crmCheckAccountFieldsApi(prov.empId, prov.session,value,type); final data = await ApiCalling.crmCheckAccountFieldsApi(
prov.empId,
prov.session,
value,
type,
);
if (data != null) { if (data != null) {
if (data.error == "0") { if (data.error == "0") {
...@@ -264,43 +295,55 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -264,43 +295,55 @@ class crmProspectDetailsProvider extends ChangeNotifier {
mobileNumError = null; mobileNumError = null;
altMobError = null; altMobError = null;
notifyListeners(); notifyListeners();
}else if(data.error=="1"){ } else if (data.error == "1") {
if(type=="name"){ if (type == "name") {
nameError = data.message!; nameError = data.message!;
}else if(type == 'mob1'){ } else if (type == 'mob1') {
mobileNumError = data.message!; mobileNumError = data.message!;
}else if(type == 'mob2'){ } else if (type == 'mob2') {
altMobError = data.message!; altMobError = data.message!;
} }
notifyListeners(); notifyListeners();
} }
}else{ } else {
notifyListeners(); notifyListeners();
} }
} catch (e, s) { } catch (e, s) {
notifyListeners(); notifyListeners();
} }
} }
Future<void> crmProspectDetailsAddContactAPIFunction(context, accID) async { Future<void> crmProspectDetailsAddContactAPIFunction(context, accID) async {
try { try {
var prov = Provider.of<HomescreenNotifier>(context, listen: false); if (!AddContactValidation()) {
final data = await ApiCalling.crmProspectDetailsAddAccountAPI(prov.empId, prov.session, accID, return;
nameController.text, mobileNumberController.text, designationController.text, alternativeMobileController.text, telephoneController.text, emailController.text); }
_isLoading = true; _isLoading = true;
notifyListeners(); notifyListeners();
var prov = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.crmProspectDetailsAddAccountAPI(
prov.empId,
prov.session,
nameController.text,
accID,
mobileNumberController.text,
designationController.text,
alternativeMobileController.text,
telephoneController.text,
emailController.text,
);
if (data != null) { if (data != null) {
if (data.error == "0") { if (data.error == "0") {
Navigator.pop(context,true); Navigator.pop(context, true);
resetAll(); resetAll();
_isLoading = false; _isLoading = false;
notifyListeners(); notifyListeners();
}else{ } else {
_isLoading = false; _isLoading = false;
notifyListeners(); notifyListeners();
} }
}else{ } else {
_isLoading = false; _isLoading = false;
notifyListeners(); notifyListeners();
} }
...@@ -310,25 +353,43 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -310,25 +353,43 @@ class crmProspectDetailsProvider extends ChangeNotifier {
} }
} }
Future<void> crmProspectDetailsEditContactAPIFunction(context,contactID,accID) async { Future<void> crmProspectDetailsEditContactAPIFunction(
context,
contactID,
accID,
) async {
try { try {
var prov = Provider.of<HomescreenNotifier>(context, listen: false); if (!editContactValidation()) {
final data = await ApiCalling.crmProspectDetailsEditContactAPI(prov.empId, prov.session, contactID, return;
nameController.text,accID, mobileNumberController.text, designationController.text, alternativeMobileController.text, telephoneController.text, emailController.text); }
_isLoading = true; _isLoading = true;
notifyListeners(); notifyListeners();
var prov = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.crmProspectDetailsEditContactAPI(
prov.empId,
prov.session,
contactID,
editNameController.text,
accID,
editMobileNumberController.text,
editAlternativeMobileController.text,
editTelephoneController.text,
editDesignationController.text,
editEmailController.text,
);
if (data != null) { if (data != null) {
if (data.error == "0") { if (data.error == "0") {
_isLoading = false; _isLoading = false;
Navigator.pop(context,true); Navigator.pop(context, true);
resetAll(); resetAll();
_isLoading = false; _isLoading = false;
notifyListeners(); notifyListeners();
}else{ } else {
_isLoading = false; _isLoading = false;
notifyListeners(); notifyListeners();
} }
}else{ } else {
_isLoading = false; _isLoading = false;
notifyListeners(); notifyListeners();
} }
...@@ -338,8 +399,6 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -338,8 +399,6 @@ class crmProspectDetailsProvider extends ChangeNotifier {
} }
} }
void showDatePickerDialog(BuildContext context) { void showDatePickerDialog(BuildContext context) {
showCupertinoModalPopup<void>( showCupertinoModalPopup<void>(
context: context, context: context,
...@@ -365,7 +424,10 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -365,7 +424,10 @@ class crmProspectDetailsProvider extends ChangeNotifier {
CupertinoButton( CupertinoButton(
child: Text( child: Text(
'Cancel', 'Cancel',
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue), style: TextStyle(
fontFamily: "JakartaMedium",
color: AppColors.app_blue,
),
), ),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
...@@ -374,10 +436,13 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -374,10 +436,13 @@ class crmProspectDetailsProvider extends ChangeNotifier {
CupertinoButton( CupertinoButton(
child: Text( child: Text(
'Done', 'Done',
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue), style: TextStyle(
fontFamily: "JakartaMedium",
color: AppColors.app_blue,
),
), ),
onPressed: () { onPressed: () {
setDate(_date ?? DateTime.now() ); setDate(_date ?? DateTime.now());
Navigator.pop(context); Navigator.pop(context);
}, },
), ),
...@@ -390,6 +455,7 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -390,6 +455,7 @@ class crmProspectDetailsProvider extends ChangeNotifier {
child: CupertinoDatePicker( child: CupertinoDatePicker(
dateOrder: DatePickerDateOrder.dmy, dateOrder: DatePickerDateOrder.dmy,
initialDateTime: _date ?? DateTime.now(), initialDateTime: _date ?? DateTime.now(),
minimumDate: DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day),
mode: CupertinoDatePickerMode.date, mode: CupertinoDatePickerMode.date,
use24hFormat: true, use24hFormat: true,
showDayOfWeek: true, showDayOfWeek: true,
...@@ -405,61 +471,167 @@ class crmProspectDetailsProvider extends ChangeNotifier { ...@@ -405,61 +471,167 @@ class crmProspectDetailsProvider extends ChangeNotifier {
); );
} }
void onChangeName(value){ void onChangeName(value) {
_nameError = ""; _nameError = "";
notifyListeners(); notifyListeners();
} }
void onChangeDesignation(value){
void onChangeDesignation(value) {
_designationError = ""; _designationError = "";
notifyListeners(); notifyListeners();
} }
void onChangeMobile(value){
void onChangeMobile(value) {
_mobileNumError = ""; _mobileNumError = "";
notifyListeners(); notifyListeners();
} }
void onChangeAltMobile(value){
void onChangeAltMobile(value) {
_altMobError = ""; _altMobError = "";
notifyListeners(); notifyListeners();
} }
void onChangeTelephone(value){
void onChangeTelephone(value) {
_teleError = ""; _teleError = "";
notifyListeners(); notifyListeners();
} }
void onChangeEmailId(value){
void onChangeEmailId(value) {
_emailError = ""; _emailError = "";
notifyListeners(); notifyListeners();
} }
void onChangeEditName(value){ void onChangeEditName(value) {
_editNameError = ""; _editNameError = "";
notifyListeners(); notifyListeners();
} }
void onChangeEditDesignation(value){
void onChangeEditDesignation(value) {
_editDesignationError = ""; _editDesignationError = "";
notifyListeners(); notifyListeners();
} }
void onChangeEditMobile(value){
void onChangeEditMobile(value) {
_editMobileNumError = ""; _editMobileNumError = "";
notifyListeners(); notifyListeners();
} }
void onChangeEditAltMobile(value){
void onChangeEditAltMobile(value) {
_editAltMobError = ""; _editAltMobError = "";
notifyListeners(); notifyListeners();
} }
void onChangeEditTelephone(value){
void onChangeEditTelephone(value) {
_editTeleError = ""; _editTeleError = "";
notifyListeners(); notifyListeners();
} }
void onChangeEditEmailId(value){
void onChangeEditEmailId(value) {
_editEmailError = ""; _editEmailError = "";
notifyListeners(); notifyListeners();
} }
void onChangeNote(value){
void onChangeNote(value) {
_noteError = ""; _noteError = "";
notifyListeners(); notifyListeners();
} }
void resetAll(){ bool AddContactValidation() {
bool isValid = true;
_nameError = null;
_designationError = null;
_mobileNumError = null;
_altMobError = null;
_teleError = null;
_emailError = null;
_noteError = null;
if (nameController.text.trim().isEmpty) {
_nameError = "Please Enter Name";
isValid = false;
}
if (mobileNumberController.text.trim().isEmpty ||
mobileNumberController.text.length < 10) {
_mobileNumError = "Please Enter Mobile Number 10 Digits";
isValid = false;
}
if (alternativeMobileController.text.trim().isNotEmpty) {
if (alternativeMobileController.text.length < 10) {
_altMobError = "Please Enter Mobile Number 10 Digits";
isValid = false;
}
}
if (mobileNumberController.text.trim() ==
alternativeMobileController.text.trim()) {
_altMobError =
"Mobile Number and Alternate Mobile Number Should not be same";
isValid = false;
}
if (emailController.text.isNotEmpty) {
final RegExp emailRegex = RegExp(
r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$',
);
isValid = emailRegex.hasMatch(emailController.text.trim());
if (!isValid) {
_emailError = "Please Enter Proper Email ID";
}
}
_isLoading = false;
notifyListeners();
return isValid;
}
bool editContactValidation() {
bool isValid = true;
_editNameError = null;
_editDesignationError = null;
_editMobileNumError = null;
_editAltMobError = null;
_editTeleError = null;
_editEmailError = null;
_noteError = null;
if (editNameController.text.trim().isEmpty) {
_editNameError = "Please Enter Name";
isValid = false;
}
if (editMobileNumberController.text.trim().isEmpty ||
editMobileNumberController.text.length < 10) {
_editMobileNumError = "Please Enter Mobile Number 10 Digits";
isValid = false;
}
if (editAlternativeMobileController.text.trim().isNotEmpty) {
if (editAlternativeMobileController.text.length < 10) {
_editAltMobError = "Please Enter Mobile Number 10 Digits";
isValid = false;
}
}
if (editMobileNumberController.text.trim() ==
editAlternativeMobileController.text.trim()) {
_editAltMobError =
"Mobile Number and Alternate Mobile Number Should not be same";
isValid = false;
}
if (editEmailController.text.isNotEmpty) {
final RegExp emailRegex = RegExp(
r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$',
);
isValid = emailRegex.hasMatch(editEmailController.text.trim());
if (!isValid) {
_editEmailError = "Please Enter Proper Email ID";
}
}
_isLoading = false;
notifyListeners();
return isValid;
}
void resetAll() {
_formattedDateToSend = null;
_formattedDate = null;
_date = null;
_showMoreDetails = false; _showMoreDetails = false;
nameController.clear(); nameController.clear();
designationController.clear(); designationController.clear();
......
...@@ -33,8 +33,22 @@ class followUpUpdateProvider extends ChangeNotifier { ...@@ -33,8 +33,22 @@ class followUpUpdateProvider extends ChangeNotifier {
DateTime? _date; DateTime? _date;
String? _formattedDate; String? _formattedDate;
String? _formattedDateToSend;
String? _dateError; String? _dateError;
String? followupError;
String? followupFeedbackError;
String? leadStatusError;
String? appStatusError;
String? nextAppDateError;
String? nextAppType;
String? noteError;
String? orderStatusError;
String? competitorError;
String? reasonError;
String? get formattedDateToSend => _formattedDateToSend;
bool get submitLoading => _submitLoading; bool get submitLoading => _submitLoading;
TimeOfDay get selectedTime => _selectedTime; TimeOfDay get selectedTime => _selectedTime;
...@@ -60,31 +74,37 @@ class followUpUpdateProvider extends ChangeNotifier { ...@@ -60,31 +74,37 @@ class followUpUpdateProvider extends ChangeNotifier {
set selectedFollowupType(String? value) { set selectedFollowupType(String? value) {
_selectedFollowupType = value; _selectedFollowupType = value;
followupError = null;
notifyListeners(); notifyListeners();
} }
set selectedLeadStatus(String? value) { set selectedLeadStatus(String? value) {
_selectedLeadStatus = value; _selectedLeadStatus = value;
leadStatusError = null;
notifyListeners(); notifyListeners();
} }
set nextAppointmentStatus(String? value) { set nextAppointmentStatus(String? value) {
_nextAppointmentStatus = value; _nextAppointmentStatus = value;
appStatusError = null;
notifyListeners(); notifyListeners();
} }
set selectNextAppointmentType(String? value) { set selectNextAppointmentType(String? value) {
_selectNextAppointmentType = value; _selectNextAppointmentType = value;
nextAppType = null;
notifyListeners(); notifyListeners();
} }
set selectOrderStatus(String? value) { set selectOrderStatus(String? value) {
_selectOrderStatus = value; _selectOrderStatus = value;
orderStatusError = null;
notifyListeners(); notifyListeners();
} }
set selectedCompetitor(String? value) { set selectedCompetitor(String? value) {
_selectedCompetitor = value; _selectedCompetitor = value;
competitorError = null;
notifyListeners(); notifyListeners();
} }
...@@ -109,11 +129,13 @@ class followUpUpdateProvider extends ChangeNotifier { ...@@ -109,11 +129,13 @@ class followUpUpdateProvider extends ChangeNotifier {
_formattedDate = value; _formattedDate = value;
nextAppointmentDateController.text = _formattedDate!; nextAppointmentDateController.text = _formattedDate!;
_dateError = null; _dateError = null;
nextAppDateError = null;
notifyListeners(); notifyListeners();
} }
set dateError(value) { set dateError(value) {
_dateError = value; _dateError = value;
nextAppDateError = value;
notifyListeners(); notifyListeners();
} }
...@@ -145,6 +167,10 @@ class followUpUpdateProvider extends ChangeNotifier { ...@@ -145,6 +167,10 @@ class followUpUpdateProvider extends ChangeNotifier {
[mode] [mode]
) async { ) async {
try { try {
if(!valid()){
return;
}
_submitLoading = true; _submitLoading = true;
notifyListeners(); notifyListeners();
final prov = Provider.of<HomescreenNotifier>(context, listen: false); final prov = Provider.of<HomescreenNotifier>(context, listen: false);
...@@ -162,7 +188,7 @@ class followUpUpdateProvider extends ChangeNotifier { ...@@ -162,7 +188,7 @@ class followUpUpdateProvider extends ChangeNotifier {
competitor, competitor,
reasonController.text, reasonController.text,
leadStatus, leadStatus,
nextAppointmentDateController.text, _formattedDateToSend,
appointmentType, appointmentType,
sms, sms,
noteController.text, noteController.text,
...@@ -187,9 +213,78 @@ class followUpUpdateProvider extends ChangeNotifier { ...@@ -187,9 +213,78 @@ class followUpUpdateProvider extends ChangeNotifier {
} }
} }
bool valid(){
followupError = null;
followupFeedbackError = null;
leadStatusError = null;
appStatusError = null;
nextAppDateError = null;
nextAppType = null;
noteError = null;
orderStatusError = null;
competitorError = null;
reasonError = null;
bool isValid = true;
if(_selectedFollowupType==null||_selectedFollowupType==""){
followupError = "Please select Followup Type";
isValid = false;
}
if(followUpFeedbackController.text.trim().isEmpty){
followupFeedbackError = "Please enter Feedback";
isValid = false;
}
if(_selectedLeadStatus==null||_selectedLeadStatus==""){
leadStatusError = "Please Select Lead Status";
isValid = false;
}
if(_nextAppointmentStatus==null||_nextAppointmentStatus==""){
appStatusError = "Please select a value";
isValid = false;
}
if(nextAppointmentStatus=="Next Appointment"){
if(nextAppointmentDateController.text.trim().isEmpty){
nextAppDateError = "Please Enter Date";
isValid = false;
}
if(_selectNextAppointmentType==null||_selectNextAppointmentType==""){
nextAppType = "Please select Appointment Type";
isValid = false;
}
if(noteController.text.trim().isEmpty){
noteError = "Enter Note";
isValid = false;
}
}else if(nextAppointmentStatus=="Update Order Status"){
if(_selectOrderStatus==null||_selectOrderStatus==""){
orderStatusError = "Please Select Order Status";
isValid = false;
}
if(selectOrderStatus=="Order Lost"){
if(_selectedCompetitor==null||_selectedCompetitor==""){
competitorError = "Please Select Competitor";
isValid = false;
}
}else if(selectOrderStatus=="No Requirement"){
if(reasonController.text.trim().isEmpty){
reasonError = "Please Enter reason";
isValid = false;
}
}
}
_submitLoading = false;
notifyListeners();
return isValid;
}
void setDate(DateTime newDate) { void setDate(DateTime newDate) {
_date = newDate; _date = newDate;
_formattedDate = DateFormat('yyyy-MM-dd').format(newDate); // _formattedDate = DateFormat('yyyy-MM-dd').format(newDate);
_formattedDate = DateFormat('d MMM yyyy').format(newDate);
_formattedDateToSend = DateFormat('yyyy-MM-dd').format(newDate);
nextAppointmentDateController.text = _formattedDate!; nextAppointmentDateController.text = _formattedDate!;
_dateError = null; _dateError = null;
notifyListeners(); notifyListeners();
...@@ -272,11 +367,13 @@ class followUpUpdateProvider extends ChangeNotifier { ...@@ -272,11 +367,13 @@ class followUpUpdateProvider extends ChangeNotifier {
), ),
), ),
), ),
Expanded( Expanded(
flex: 3, flex: 3,
child: CupertinoDatePicker( child: CupertinoDatePicker(
dateOrder: DatePickerDateOrder.dmy,
initialDateTime: _date ?? DateTime.now(), initialDateTime: _date ?? DateTime.now(),
minimumDate: DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day),
dateOrder: DatePickerDateOrder.dmy,
mode: CupertinoDatePickerMode.date, mode: CupertinoDatePickerMode.date,
use24hFormat: true, use24hFormat: true,
showDayOfWeek: true, showDayOfWeek: true,
...@@ -292,14 +389,28 @@ class followUpUpdateProvider extends ChangeNotifier { ...@@ -292,14 +389,28 @@ class followUpUpdateProvider extends ChangeNotifier {
); );
} }
onFollowUpChanged(value) {} onFollowUpChanged(value) {
onNoteChanged(value) {} followupFeedbackError = null;
notifyListeners();
}
onNoteChanged(value) {
noteError = null;
notifyListeners();
}
onReasonChanged(value) {} onReasonChanged(value) {
reasonError = null;
notifyListeners();
}
void resetForm(){ void resetForm(){
nextAppointmentDateController.clear(); nextAppointmentDateController.clear();
_formattedDateToSend = null;
_formattedDate = null;
_date = null;
followUpFeedbackController.clear(); followUpFeedbackController.clear();
noteController.clear(); noteController.clear();
reasonController.clear(); reasonController.clear();
...@@ -309,6 +420,16 @@ class followUpUpdateProvider extends ChangeNotifier { ...@@ -309,6 +420,16 @@ class followUpUpdateProvider extends ChangeNotifier {
_selectNextAppointmentType = null; _selectNextAppointmentType = null;
_selectOrderStatus = null; _selectOrderStatus = null;
_selectedCompetitor = null; _selectedCompetitor = null;
followupError = null;
followupFeedbackError = null;
leadStatusError = null;
appStatusError = null;
nextAppDateError = null;
nextAppType = null;
noteError = null;
orderStatusError = null;
competitorError = null;
reasonError = null;
notifyListeners(); notifyListeners();
} }
} }
...@@ -18,4 +18,13 @@ class AppColors { ...@@ -18,4 +18,13 @@ class AppColors {
static Color text_field_color = Color(0xFFF0F4F5); static Color text_field_color = Color(0xFFF0F4F5);
static Color overlay_box_color = Color(0xFFE6F6FF); static Color overlay_box_color = Color(0xFFE6F6FF);
static Color ERP_text_color = Color(0xFF2D357F); static Color ERP_text_color = Color(0xFF2D357F);
static Color requested_text_color = Color(0xFF1487C9);
static Color rejected_text_color = Color(0xFFEF3739);
static Color approved_text_color = Color(0xFF4CB443);
static Color processed_text_color = Color(0xFFFFB600);
static Color requested_bg_color = Color(0xFFE6F6FF);
static Color rejected_bg_color = Color(0xFFFFF5F5);
static Color approved_bg_color = Color(0xFFE9FFE8);
static Color processed_bg_color = Color(0xFFEFFF8E5);
} }
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -135,7 +135,7 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> { ...@@ -135,7 +135,7 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
(ord) => DropdownMenuItem<Products>( (ord) => DropdownMenuItem<Products>(
value: ord, value: ord,
child: Text( child: Text(
"(Product Name: ${ord.name})", "${ord.name}",
style: const TextStyle( style: const TextStyle(
fontSize: 14, fontSize: 14,
), ),
......
...@@ -7,6 +7,7 @@ import 'package:flutter/services.dart'; ...@@ -7,6 +7,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/crmProvider/addNewLeadsandProspectsProvider.dart'; import 'package:generp/Notifiers/crmProvider/addNewLeadsandProspectsProvider.dart';
import 'package:generp/Utils/app_colors.dart'; import 'package:generp/Utils/app_colors.dart';
import 'package:generp/Utils/commonServices.dart';
import 'package:generp/Utils/commonWidgets.dart'; import 'package:generp/Utils/commonWidgets.dart';
import 'package:generp/Utils/dropdownTheme.dart'; import 'package:generp/Utils/dropdownTheme.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
...@@ -597,6 +598,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> { ...@@ -597,6 +598,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
), ),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
InkResponse( InkResponse(
onTap: () async { onTap: () async {
...@@ -833,6 +835,10 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> { ...@@ -833,6 +835,10 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
), ),
), ),
], ],
if(provider.productsEmptyError!.trim().isNotEmpty)...[
errorWidget(context, provider.productsEmptyError)
]
], ],
), ),
), ),
...@@ -1233,6 +1239,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> { ...@@ -1233,6 +1239,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
InkResponse( InkResponse(
onTap: () { onTap: () {
if (provider.validateStep3()) { if (provider.validateStep3()) {
if(provider.productRows.isNotEmpty){
provider.crmAddNewLeadsAndProspectsAPIFunction( provider.crmAddNewLeadsAndProspectsAPIFunction(
context, context,
"", "",
...@@ -1248,6 +1255,10 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> { ...@@ -1248,6 +1255,10 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider.selectedLeadStatus, provider.selectedLeadStatus,
provider.getJsonEncodedProducts(), provider.getJsonEncodedProducts(),
); );
}else{
toast(context, "Add min. 1 product");
}
} }
details.onStepContinue; details.onStepContinue;
......
...@@ -252,7 +252,7 @@ class _AddProspectLeadsState extends State<AddProspectLeads> { ...@@ -252,7 +252,7 @@ class _AddProspectLeadsState extends State<AddProspectLeads> {
>( >(
value: ord, value: ord,
child: Text( child: Text(
"(Product Name: ${ord.name})", "${ord.name}",
style: const TextStyle( style: const TextStyle(
fontSize: 14, fontSize: 14,
), ),
......
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