Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sai Srinivas
GEN_ERP_2025
Commits
7210793a
Commit
7210793a
authored
Sep 17, 2025
by
Sai Srinivas
Browse files
17-09
parent
185e0896
Changes
285
Show whitespace changes
Inline
Side-by-side
lib/screens/crm/NearbyOpenLeads.dart
View file @
7210793a
...
...
@@ -397,7 +397,6 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
Widget
_buildScreen
(
BuildContext
context
)
{
return
Consumer
<
crmNearbyOpenLeadsProvider
>(
builder:
(
context
,
provider
,
child
)
{
// {
// return Scaffold(
// backgroundColor: AppColors.scaffold_bg_color,
...
...
@@ -446,7 +445,7 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
topLeft:
Radius
.
circular
(
30.0
),
topRight:
Radius
.
circular
(
30.0
),
),
child:
Container
(
child:
SizedBox
(
height:
MediaQuery
.
of
(
context
).
size
.
height
,
child:
Stack
(
children:
[
...
...
@@ -466,8 +465,13 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
),
},
initialCameraPosition:
CameraPosition
(
target:
widget
.
latitude
!=
null
&&
widget
.
longitude
!=
null
?
LatLng
(
widget
.
latitude
!,
widget
.
longitude
!)
target:
widget
.
latitude
!=
null
&&
widget
.
longitude
!=
null
?
LatLng
(
widget
.
latitude
!,
widget
.
longitude
!,
)
:
provider
.
startLocation
,
zoom:
14.0
,
),
...
...
@@ -480,7 +484,8 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
provider
.
onCameraMove
(
context
,
position
);
},
onTap:
(
position
)
{
provider
.
mapController
?.
hideMarkerInfoWindow
(
provider
.
mapController
?.
hideMarkerInfoWindow
(
provider
.
markers
.
isNotEmpty
?
provider
.
markers
.
first
.
markerId
:
MarkerId
(
''
),
...
...
@@ -495,7 +500,7 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
),
),
),
if
(
provider
.
isLoading
||
(
provider
.
markers
.
isEmpty
))...[
if
(
provider
.
isLoading
||
(
provider
.
markers
.
isEmpty
))
...[
Container
(
width:
MediaQuery
.
of
(
context
).
size
.
width
,
height:
MediaQuery
.
of
(
context
).
size
.
height
,
...
...
@@ -507,12 +512,15 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
SizedBox
(
height:
16
),
Text
(
'Loading nearby leads...'
,
style:
TextStyle
(
fontSize:
16
,
color:
AppColors
.
app_blue
),
style:
TextStyle
(
fontSize:
16
,
color:
AppColors
.
app_blue
,
),
),
],
),
)
]
)
,
]
,
],
),
),
...
...
@@ -588,7 +596,7 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
vertical:
0
,
),
iconSize:
0.0
,
initialProgress:
provider
.
currentValue
/
50
,
initialProgress:
provider
.
currentValue
/
50
,
enabled:
true
,
foregroundColor:
AppColors
.
app_blue
,
segmentDividerColor:
Color
(
0xFFF6F6F8
),
...
...
@@ -602,7 +610,10 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
Container
(
child:
InkWell
(
onTap:
()
{
provider
.
applyFilter
(
context
,
provider
.
currentValue
);
provider
.
applyFilter
(
context
,
provider
.
currentValue
,
);
Navigator
.
pop
(
context
);
},
child:
Container
(
...
...
lib/screens/crm/ProspectDetailsByMode.dart
View file @
7210793a
...
...
@@ -122,7 +122,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
element
.
id
!.
trim
()
==
editProvider
.
accountDetails
.
state
!.
trim
(),
);
if
(
selectedState
!=
null
)
{
editProvider
.
selectedStates
=
selectedState
;
editProvider
.
selectedStateId
=
selectedState
.
id
;
editProvider
.
selectedStateValue
=
selectedState
.
name
;
...
...
@@ -133,7 +132,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
editProvider
.
selectedStateId
,
);
}
}
// Prefill district
if
(
editProvider
.
districtsList
.
isNotEmpty
&&
...
...
@@ -142,7 +140,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
(
element
)
=>
element
.
id
!.
trim
()
==
editProvider
.
accountDetails
.
district
!.
trim
(),
);
if
(
selectedDistrict
!=
null
)
{
editProvider
.
selectedDistricts
=
selectedDistrict
;
editProvider
.
selectedDistrictId
=
selectedDistrict
.
id
;
editProvider
.
selectedDistrictValue
=
selectedDistrict
.
district
;
...
...
@@ -153,19 +150,16 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
editProvider
.
selectedDistrictId
,
);
}
}
if
(
editProvider
.
subLocationsList
.
isNotEmpty
&&
editProvider
.
accountDetails
.
subLocality
!=
null
)
{
final
selectedSubLocation
=
editProvider
.
subLocationsList
.
firstWhere
(
(
element
)
=>
element
.
id
==
editProvider
.
accountDetails
.
subLocality
,
);
if
(
selectedSubLocation
!=
null
)
{
editProvider
.
selectedSubLocations
=
selectedSubLocation
;
editProvider
.
selectedSubLocationId
=
selectedSubLocation
.
id
;
editProvider
.
selectedSubLocationValue
=
selectedSubLocation
.
subLocality
;
}
}
print
(
"Company Name:
${editProvider.editCompanyNameController.text}
"
);
print
(
"Pincode:
${editProvider.pincodeController.text}
"
);
...
...
@@ -240,7 +234,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
"PinCode"
,
];
var
subHeadings2
=
[
leadDetails
!
.
address
??
"-"
,
leadDetails
.
address
??
"-"
,
leadDetails
.
state
??
"-"
,
leadDetails
.
district
??
"-"
,
leadDetails
.
subLocality
??
"-"
,
...
...
@@ -254,7 +248,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
leadDetails
.
segment
??
"-"
,
];
var
headings4
=
[
"Lead Age"
];
var
subHeadings4
=
[
"
${leadDetails
!
.aage ?? "-"}
days old"
];
var
subHeadings4
=
[
"
${leadDetails.aage ?? "-"}
days old"
];
var
leadListNotEmpty
=
leadsList
.
isNotEmpty
;
var
contactNotEmpty
=
provider
.
contactList
.
isNotEmpty
;
...
...
@@ -349,7 +343,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
child:
Column
(
children:
[
Container
(
decoration:
BoxDecoration
(
color:
Colors
.
white
,
...
...
@@ -368,7 +361,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
children:
[
Expanded
(
flex:
1
,
child:
Container
(
child:
SizedBox
(
height:
50
,
width:
35
,
child:
SvgPicture
.
asset
(
...
...
@@ -478,7 +471,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
...
List
.
generate
(
subHeadings1
.
length
,
(
j
)
{
return
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
7
),
padding:
EdgeInsets
.
symmetric
(
vertical:
7
,
),
child:
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
...
...
@@ -537,7 +532,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
...
List
.
generate
(
subHeadings2
.
length
,
(
j
)
{
return
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
7
),
padding:
EdgeInsets
.
symmetric
(
vertical:
7
,
),
child:
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
...
...
@@ -596,7 +593,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
...
List
.
generate
(
subHeadings3
.
length
,
(
j
)
{
return
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
7
),
padding:
EdgeInsets
.
symmetric
(
vertical:
7
,
),
child:
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
...
...
@@ -655,7 +654,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
...
List
.
generate
(
subHeadings4
.
length
,
(
j
)
{
return
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
7
),
padding:
EdgeInsets
.
symmetric
(
vertical:
7
,
),
child:
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
...
...
@@ -671,7 +672,8 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
Expanded
(
child:
subHeadings4
[
j
]
==
"Lead Age"
child:
subHeadings4
[
j
]
==
"Lead Age"
?
Tooltip
(
triggerMode:
TooltipTriggerMode
...
...
@@ -741,7 +743,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
Transform
.
flip
(
flipY:
provider
.
showMoreDetails
?
true
:
false
,
provider
.
showMoreDetails
?
true
:
false
,
child:
SvgPicture
.
asset
(
"assets/svg/arrow_dropdown.svg"
,
height:
25
,
...
...
@@ -829,20 +833,15 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
context
,
MaterialPageRoute
(
builder:
(
context
,
)
=>
LeadDetailsByMode
(
(
context
)
=>
LeadDetailsByMode
(
mode:
""
,
pageTitleName:
"Lead Details"
,
leadId:
widget
.
leadId
,
pageTitleName:
"Lead Details"
,
leadId:
widget
.
leadId
,
),
),
);
if
(
res
==
true
)
{
provider
.
crmProspectDetailsAPIFunction
(
provider
.
crmProspectDetailsAPIFunction
(
context
,
widget
.
leadId
,
);
...
...
@@ -927,7 +926,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
child:
Center
(
child:
Text
(
textAlign:
TextAlign
.
right
,
"
${
leadsList[index].status ?? "-"
}
"
,
leadsList
[
index
].
status
??
"-"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
...
...
@@ -1041,9 +1040,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
...
List
.
generate
(
1
,
(
j
)
{
final
textheads
=
[
"Lead Open / Close"
,
];
final
textheads
=
[
"Lead Open / Close"
];
final
textSubheads
=
[
leadsList
[
index
].
openStatus
??
"-"
,
];
...
...
@@ -1079,7 +1076,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
),
],
),
);
...
...
@@ -1146,7 +1142,10 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
if
(
contactNotEmpty
)
...[
Expanded
(
child:
InkResponse
(
onTap:
provider
.
addContactSelected
?
null
:
()
{
onTap:
provider
.
addContactSelected
?
null
:
()
{
HapticFeedback
.
selectionClick
();
provider
.
addContactSelected
=
true
;
_showAddContactSheet
(
...
...
@@ -1183,16 +1182,24 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
itemCount:
provider
.
contactList
.
length
,
itemBuilder:
(
context
,
lp
)
{
return
InkResponse
(
onTap:
provider
.
addContactSelected
?
null
:
()
async
{
onTap:
provider
.
addContactSelected
?
null
:
()
async
{
provider
.
addContactSelected
=
true
;
HapticFeedback
.
selectionClick
();
provider
.
editNameController
.
text
=
provider
.
contactList
[
lp
].
name
??
""
;
provider
.
editDesignationController
.
text
=
provider
.
contactList
[
lp
].
designation
??
""
;
provider
.
contactList
[
lp
]
.
designation
??
""
;
provider
.
editMobileNumberController
.
text
=
provider
.
contactList
[
lp
].
mob1
??
""
;
provider
.
editAlternativeMobileController
.
text
=
provider
.
editAlternativeMobileController
.
text
=
provider
.
contactList
[
lp
].
mob2
??
""
;
provider
.
editTelephoneController
.
text
=
provider
.
contactList
[
lp
].
tel
??
""
;
...
...
@@ -1246,11 +1253,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
.
name
??
"-"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
color:
AppColors
.
semi_black
,
),
),
),
...
...
@@ -1264,12 +1269,20 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
},
child:
Text
(
textAlign:
TextAlign
.
right
,
"
${provider.contactList[lp].mob1 ?? "-"}
"
,
provider
.
contactList
[
lp
]
.
mob1
??
"-"
,
style:
TextStyle
(
height:
1
,
decorationColor:
AppColors
.
grey_thick
,
decoration:
TextDecoration
.
underline
,
decorationStyle:
TextDecorationStyle
.
dotted
,
decorationColor:
AppColors
.
grey_thick
,
decoration:
TextDecoration
.
underline
,
decorationStyle:
TextDecorationStyle
.
dotted
,
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
...
...
@@ -1282,8 +1295,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
],
),
Text
(
provider
.
contactList
[
lp
].
email
==
""
provider
.
contactList
[
lp
].
email
==
""
?
"-"
:
provider
.
contactList
[
lp
]
...
...
@@ -1307,7 +1319,10 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
]
else
...[
InkResponse
(
onTap:
provider
.
addContactSelected
?
null
:
()
{
onTap:
provider
.
addContactSelected
?
null
:
()
{
HapticFeedback
.
selectionClick
();
provider
.
addContactSelected
=
true
;
_showAddContactSheet
(
...
...
@@ -1343,11 +1358,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
///Order Details
if
(
orderNotEmpty
)
...[
Container
(
padding:
EdgeInsets
.
only
(
left:
10
,
right:
10
,
top:
10
,
),
padding:
EdgeInsets
.
only
(
left:
10
,
right:
10
,
top:
10
),
child:
Row
(
children:
[
Expanded
(
...
...
@@ -1394,8 +1405,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Row
(
mainAxisAlignment:
MainAxisAlignment
.
start
,
mainAxisAlignment:
MainAxisAlignment
.
start
,
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
...
...
@@ -1442,8 +1452,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
flex:
2
,
child:
Container
(
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
8
),
borderRadius:
BorderRadius
.
circular
(
8
,
),
color:
Color
(
0xFFF3FFD5
),
),
padding:
EdgeInsets
.
symmetric
(
...
...
@@ -1453,7 +1464,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
child:
Center
(
child:
Text
(
textAlign:
TextAlign
.
right
,
"
${
orderList[index].status ?? "-"
}
"
,
orderList
[
index
].
status
??
"-"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
...
...
@@ -1466,9 +1477,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
],
),
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
3
,
),
padding:
EdgeInsets
.
symmetric
(
vertical:
3
),
child:
Row
(
children:
[
Expanded
(
...
...
@@ -1537,9 +1546,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
}),
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
4
,
),
padding:
EdgeInsets
.
symmetric
(
vertical:
4
),
child:
Row
(
children:
[
Expanded
(
...
...
@@ -1618,15 +1625,13 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
textSubheads
[
j
]
==
""
?
"-"
:
textSubheads
[
j
],
overflow:
TextOverflow
.
ellipsis
,
overflow:
TextOverflow
.
ellipsis
,
style:
TextStyle
(
color:
AppColors
.
app_blue
,
decorationColor:
AppColors
.
app_blue
,
decoration:
TextDecoration
.
underline
,
TextDecoration
.
underline
,
),
),
),
...
...
@@ -1646,11 +1651,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
///Payment Details
if
(
paymentsNotEmpty
)
...[
Container
(
padding:
EdgeInsets
.
only
(
left:
10
,
right:
10
,
top:
10
,
),
padding:
EdgeInsets
.
only
(
left:
10
,
right:
10
,
top:
10
),
child:
Row
(
children:
[
Expanded
(
...
...
@@ -1687,21 +1688,15 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
context
,
MaterialPageRoute
(
builder:
(
context
,
)
=>
Paymentdetailsbymode
(
(
context
)
=>
Paymentdetailsbymode
(
mode:
""
,
pageTitleName:
"Payment Details"
,
paymentId:
paymentList
[
index
]
.
id
,
pageTitleName:
"Payment Details"
,
paymentId:
paymentList
[
index
].
id
,
),
),
);
if
(
res
==
true
)
{
provider
.
crmProspectDetailsAPIFunction
(
provider
.
crmProspectDetailsAPIFunction
(
context
,
paymentList
[
index
].
id
,
);
...
...
@@ -1711,7 +1706,10 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
height:
200
,
width:
MediaQuery
.
of
(
context
).
size
.
width
*
0.9
,
margin:
EdgeInsets
.
symmetric
(
vertical:
5
,
horizontal:
7.5
),
margin:
EdgeInsets
.
symmetric
(
vertical:
5
,
horizontal:
7.5
,
),
padding:
EdgeInsets
.
symmetric
(
horizontal:
15
,
vertical:
10
,
...
...
@@ -1783,7 +1781,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
child:
Center
(
child:
Text
(
textAlign:
TextAlign
.
right
,
"
${paymentList[index].paymentType ?? "-"}
"
,
paymentList
[
index
]
.
paymentType
??
"-"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
...
...
@@ -1871,9 +1871,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
);
}),
],
),
),
...
...
@@ -2099,7 +2096,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
);
provider
.
crmProspectDetailsAPIFunction
(
context
,
widget
.
leadId
);
});
}
,
);
});
}
Future
<
void
>
_showEditContactSheet
(
BuildContext
context
,
index
,
accid
)
{
...
...
@@ -2311,7 +2308,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
);
provider
.
crmProspectDetailsAPIFunction
(
context
,
widget
.
leadId
);
});
}
,
);
});
}
Future
<
void
>
_showTransferAccountSheet
(
BuildContext
context
,
accID
)
{
...
...
@@ -2397,10 +2394,10 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
editProsProvider
.
selectedEmployees
=
value
;
editProsProvider
.
selectedEmployeeId
=
value
!
.
id
!;
value
.
id
!;
editProsProvider
.
selectedEmployeeValue
=
value
!
.
name
!;
value
.
name
!;
}
}
},
...
...
@@ -2526,7 +2523,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
);
provider
.
crmProspectDetailsAPIFunction
(
context
,
widget
.
leadId
);
});
}
,
);
});
}
Future
<
void
>
_showEditAccountSheet
(
BuildContext
context
,
accID
)
{
...
...
@@ -2672,9 +2669,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
if
(
value
!=
null
)
{
if
(
provider
.
statesList
.
isNotEmpty
)
{
provider
.
selectedStates
=
value
;
provider
.
selectedStateId
=
value
!
.
id
!;
provider
.
selectedStateId
=
value
.
id
!;
provider
.
selectedStateValue
=
value
!
.
name
!;
value
.
name
!;
if
(
provider
.
districtsList
.
isNotEmpty
)
{
...
...
@@ -2742,9 +2739,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
if
(
provider
.
districtsList
.
isNotEmpty
)
{
provider
.
selectedDistricts
=
value
;
provider
.
selectedDistrictId
=
value
!
.
id
!;
value
.
id
!;
provider
.
selectedDistrictValue
=
value
!
.
district
!;
value
.
district
!;
if
(
provider
.
subLocationsList
.
isNotEmpty
)
{
...
...
@@ -2823,9 +2820,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
.
isNotEmpty
)
{
provider
.
selectedSubLocations
=
value
;
provider
.
selectedSubLocationId
=
value
!
.
id
!;
value
.
id
!;
provider
.
selectedSubLocationValue
=
value
!
.
subLocality
!;
value
.
subLocality
!;
}
}
},
...
...
@@ -2939,7 +2936,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
);
provider
.
crmProspectDetailsAPIFunction
(
context
,
widget
.
leadId
);
});
}
,
);
});
}
Future
<
void
>
_showOptionsSheet
(
BuildContext
context
)
{
...
...
@@ -3250,9 +3247,8 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
items:
addleadProvider
.
leadProductsList
.
map
(
(
ord
,
)
=>
DropdownMenuItem
<
Products
>(
(
ord
)
=>
DropdownMenuItem
<
Products
>(
value:
ord
,
child:
Text
(
"
${ord.name}
"
,
...
...
@@ -3266,8 +3262,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
)
.
toList
(),
value:
addleadProvider
.
selectedProducts
!=
null
addleadProvider
.
selectedProducts
!=
null
?
addleadProvider
.
leadProductsList
.
firstWhere
(
(
ord
)
=>
...
...
@@ -3301,7 +3296,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
context
,
value
.
id
.
toString
(),
);
}
},
buttonStyleData:
ddtheme
.
buttonStyleData
,
...
...
lib/screens/crm/ProspectListByMode.dart
View file @
7210793a
...
...
@@ -170,7 +170,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
children:
[
Expanded
(
flex:
1
,
child:
Container
(
child:
SizedBox
(
height:
50
,
width:
35
,
...
...
@@ -353,7 +353,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
if
(
widget
.
mode
!=
"executive"
)
{
headings
.
add
(
"Employee"
);
}
return
Container
(
return
SizedBox
(
height:
MediaQuery
.
of
(
context
).
size
.
height
*
0.3
,
child:
Column
(
mainAxisSize:
MainAxisSize
.
min
,
...
...
@@ -550,7 +550,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
EdgeInsets
.
zero
,
),
);
})
.
toList
()
,
}),
],
],
),
...
...
lib/screens/crm/addLeadProductScreen.dart
View file @
7210793a
...
...
@@ -40,14 +40,14 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
context
,
listen:
false
,
);
if
(
widget
.
type
==
"Add"
){
if
(
widget
.
type
==
"Add"
)
{
provider
.
selectedProducts
=
null
;
provider
.
selectedProductsId
=
null
;
provider
.
selectedProductsValue
=
null
;
provider
.
addProductPriceController
.
clear
();
provider
.
addQuantityController
.
clear
();
provider
.
addTotalAmountController
.
clear
();
}
else
{
}
else
{
provider
.
prefillProductForEdit
(
widget
.
editIndex
!);
}
...
...
@@ -165,7 +165,7 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
onChanged:
(
Products
?
value
)
{
if
(
value
!=
null
)
{
provider
.
selectedProducts
=
value
;
provider
.
selectedProductsId
=
value
!
.
id
!;
provider
.
selectedProductsId
=
value
.
id
!;
provider
.
selectedProductsValue
=
value
.
name
;
}
...
...
@@ -177,16 +177,12 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
dropdownSearchData:
DropdownSearchData
(
searchInnerWidgetHeight:
50
,
searchController:
provider
.
productSearchController
,
provider
.
productSearchController
,
searchInnerWidget:
Padding
(
padding:
const
EdgeInsets
.
all
(
8
,
),
padding:
const
EdgeInsets
.
all
(
8
),
child:
TextFormField
(
controller:
provider
.
productSearchController
,
provider
.
productSearchController
,
decoration:
InputDecoration
(
isDense:
true
,
contentPadding:
...
...
@@ -194,26 +190,20 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
horizontal:
10
,
vertical:
8
,
),
hintText:
'Search Product...'
,
hintText:
'Search Product...'
,
border:
OutlineInputBorder
(
borderRadius:
BorderRadius
.
circular
(
borderRadius:
BorderRadius
.
circular
(
8
,
),
),
),
),
),
searchMatchFn:
(
item
,
searchValue
,
)
{
searchMatchFn:
(
item
,
searchValue
)
{
return
item
.
value
?.
name
?.
toLowerCase
()
.
contains
(
searchValue
.
toLowerCase
(),
searchValue
.
toLowerCase
(),
)
??
false
;
},
...
...
@@ -293,7 +283,6 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
onTap:
()
{
HapticFeedback
.
selectionClick
();
if
(
provider
.
selectedProducts
!=
null
)
{
final
productData
=
{
"product_id"
:
provider
.
selectedProductsId
!,
"price"
:
provider
.
addProductPriceController
.
text
,
...
...
@@ -308,8 +297,6 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
print
(
provider
.
getJsonEncodedProducts
());
Navigator
.
pop
(
context
,
provider
.
getJsonEncodedProducts
());
}
},
child:
Container
(
alignment:
Alignment
.
center
,
...
...
lib/screens/crm/addLeadsProspectsScreen.dart
View file @
7210793a
...
...
@@ -45,7 +45,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
_nameController
.
dispose
();
_emailController
.
dispose
();
_addressController
.
dispose
();
focusNodes
.
map
((
e
)
=>
e
.
dispose
()
,
);
focusNodes
.
map
((
e
)
=>
e
.
dispose
());
super
.
dispose
();
}
...
...
@@ -80,6 +80,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
const
SnackBar
(
content:
Text
(
'Form submitted successfully!'
)),
);
}
Future
<
bool
>
onBackPressed
(
BuildContext
context
)
async
{
if
(
_currentStep
>
0
)
{
_previousStep
();
...
...
@@ -88,6 +89,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
return
true
;
}
}
@override
void
initState
()
{
super
.
initState
();
...
...
@@ -257,8 +259,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
fontSize:
14
,
),
overflow:
TextOverflow
.
ellipsis
,
TextOverflow
.
ellipsis
,
),
),
)
...
...
@@ -294,7 +295,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
null
,
focusNodes
[
0
],
focusNodes
[
1
],
TextInputAction
.
next
TextInputAction
.
next
,
),
errorWidget
(
context
,
provider
.
companynameError
),
...
...
@@ -309,7 +310,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
null
,
focusNodes
[
1
],
focusNodes
[
2
],
TextInputAction
.
next
TextInputAction
.
next
,
),
errorWidget
(
context
,
provider
.
nameError
),
...
...
@@ -337,10 +338,10 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider
.
onChangemailId
,
TextInputType
.
emailAddress
,
false
,
null
,
focusNodes
[
3
],
null
,
focusNodes
[
3
],
focusNodes
[
4
],
TextInputAction
.
next
,
),
errorWidget
(
context
,
provider
.
mailIdError
),
...
...
@@ -436,23 +437,37 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
)
.
toList
(),
// value: provider.selectedSources,
value:
provider
.
sourcesList
.
isNotEmpty
?
provider
.
selectedSources
!=
null
?
provider
.
sourcesList
.
firstWhere
((
element
)
=>
element
.
id
==
provider
.
selectedSourcesId
,
orElse:
()
=>
provider
.
sourcesList
[
0
],
):
null
:
null
,
value:
provider
.
sourcesList
.
isNotEmpty
?
provider
.
selectedSources
!=
null
?
provider
.
sourcesList
.
firstWhere
(
(
element
)
=>
element
.
id
==
provider
.
selectedSourcesId
,
orElse:
()
=>
provider
.
sourcesList
[
0
],
)
:
null
:
null
,
onChanged:
(
Sources
?
value
)
{
if
(
value
!=
null
)
{
if
(
provider
.
sourcesList
.
isNotEmpty
)
{
provider
.
selectedSources
=
value
;
provider
.
selectedSourcesId
=
value
!
.
id
!;
value
.
id
!;
provider
.
selectedSourcesValue
=
value
!
.
name
!;
value
.
name
!;
if
(
provider
.
referencesList
.
isNotEmpty
){
if
(
provider
.
referencesList
.
isNotEmpty
)
{
provider
.
referencesList
.
clear
();
provider
.
selectedReferenceId
=
null
;
provider
.
selectedReferenceValue
=
null
;
provider
.
selectedReferenceValue
=
null
;
}
provider
...
...
@@ -468,16 +483,12 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
dropdownSearchData:
DropdownSearchData
(
searchInnerWidgetHeight:
50
,
searchController:
provider
.
sourceSearchController
,
provider
.
sourceSearchController
,
searchInnerWidget:
Padding
(
padding:
const
EdgeInsets
.
all
(
8
,
),
padding:
const
EdgeInsets
.
all
(
8
),
child:
TextFormField
(
controller:
provider
.
sourceSearchController
,
provider
.
sourceSearchController
,
decoration:
InputDecoration
(
isDense:
true
,
contentPadding:
...
...
@@ -485,26 +496,19 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
horizontal:
10
,
vertical:
8
,
),
hintText:
'Search Source...'
,
hintText:
'Search Source...'
,
border:
OutlineInputBorder
(
borderRadius:
BorderRadius
.
circular
(
8
,
BorderRadius
.
circular
(
8
),
),
),
),
),
),
searchMatchFn:
(
item
,
searchValue
,
)
{
searchMatchFn:
(
item
,
searchValue
)
{
return
item
.
value
?.
name
?.
toLowerCase
()
.
contains
(
searchValue
.
toLowerCase
(),
searchValue
.
toLowerCase
(),
)
??
false
;
},
...
...
@@ -539,9 +543,8 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
items:
provider
.
referencesList
.
map
(
(
slist
)
=>
DropdownMenuItem
<
References
>(
(
slist
)
=>
DropdownMenuItem
<
References
>(
value:
slist
,
child:
Text
(
slist
.
name
!,
...
...
@@ -553,10 +556,21 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
)
.
toList
(),
// value: provider.selectedReference,
value:
provider
.
referencesList
.
isNotEmpty
?
provider
.
selectedReference
!=
null
?
provider
.
referencesList
.
firstWhere
((
element
)
=>
element
.
id
==
provider
.
selectedReferenceId
,
orElse:
()
=>
provider
.
referencesList
[
0
],
):
null
:
null
,
value:
provider
.
referencesList
.
isNotEmpty
?
provider
.
selectedReference
!=
null
?
provider
.
referencesList
.
firstWhere
(
(
element
)
=>
element
.
id
==
provider
.
selectedReferenceId
,
orElse:
()
=>
provider
.
referencesList
[
0
],
)
:
null
:
null
,
onChanged:
(
References
?
value
)
{
if
(
value
!=
null
)
{
if
(
provider
...
...
@@ -564,9 +578,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
.
isNotEmpty
)
{
provider
.
selectedReference
=
value
;
provider
.
selectedReferenceId
=
value
!
.
id
!;
value
.
id
!;
provider
.
selectedReferenceValue
=
value
!
.
name
!;
value
.
name
!;
}
}
},
...
...
@@ -574,12 +588,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
dropdownSearchData:
DropdownSearchData
(
searchInnerWidgetHeight:
50
,
searchController:
provider
.
referenceSearchController
,
provider
.
referenceSearchController
,
searchInnerWidget:
Padding
(
padding:
const
EdgeInsets
.
all
(
8
,
),
padding:
const
EdgeInsets
.
all
(
8
),
child:
TextFormField
(
controller:
provider
...
...
@@ -591,33 +602,27 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
horizontal:
10
,
vertical:
8
,
),
hintText:
'Search Reference...'
,
hintText:
'Search Reference...'
,
border:
OutlineInputBorder
(
borderRadius:
BorderRadius
.
circular
(
8
,
BorderRadius
.
circular
(
8
),
),
),
),
),
),
searchMatchFn:
(
item
,
searchValue
,
)
{
searchMatchFn:
(
item
,
searchValue
)
{
return
item
.
value
?.
name
?.
toLowerCase
()
.
contains
(
searchValue
.
toLowerCase
(),
searchValue
.
toLowerCase
(),
)
??
false
;
},
),
onMenuStateChange:
(
isOpen
)
{
if
(!
isOpen
)
{
provider
.
referenceSearchController
.
clear
();
provider
.
referenceSearchController
.
clear
();
}
},
buttonStyleData:
ddtheme
.
buttonStyleData
,
...
...
@@ -658,23 +663,34 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
)
.
toList
(),
// value: provider.selectedTeams,
value:
provider
.
teamsList
.
isNotEmpty
?
provider
.
selectedTeams
!=
null
?
provider
.
teamsList
.
firstWhere
((
element
)
=>
element
.
id
==
provider
.
selectedTeamsId
,
orElse:
()
=>
provider
.
teamsList
[
0
],
):
null
:
null
,
value:
provider
.
teamsList
.
isNotEmpty
?
provider
.
selectedTeams
!=
null
?
provider
.
teamsList
.
firstWhere
(
(
element
)
=>
element
.
id
==
provider
.
selectedTeamsId
,
orElse:
()
=>
provider
.
teamsList
[
0
],
)
:
null
:
null
,
onChanged:
(
Teams
?
value
)
{
if
(
value
!=
null
)
{
if
(
provider
.
teamsList
.
isNotEmpty
)
{
provider
.
selectedTeams
=
value
;
provider
.
selectedTeamsId
=
value
!.
id
!;
provider
.
selectedTeamsId
=
value
.
id
!;
provider
.
selectedTeamsValue
=
value
!
.
name
!;
value
.
name
!;
if
(
provider
.
segmentsList
.
isNotEmpty
){
if
(
provider
.
segmentsList
.
isNotEmpty
)
{
provider
.
segmentsList
.
clear
();
provider
.
selectedSegmentId
=
null
;
provider
.
selectedSegmentValue
=
null
;
provider
.
selectedSegmentValue
=
null
;
}
provider
.
crmLeadListSegmentOnTeamAPIFunction
(
...
...
@@ -689,16 +705,12 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
dropdownSearchData:
DropdownSearchData
(
searchInnerWidgetHeight:
50
,
searchController:
provider
.
teamSearchController
,
provider
.
teamSearchController
,
searchInnerWidget:
Padding
(
padding:
const
EdgeInsets
.
all
(
8
,
),
padding:
const
EdgeInsets
.
all
(
8
),
child:
TextFormField
(
controller:
provider
.
teamSearchController
,
provider
.
teamSearchController
,
decoration:
InputDecoration
(
isDense:
true
,
contentPadding:
...
...
@@ -706,26 +718,19 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
horizontal:
10
,
vertical:
8
,
),
hintText:
'Search Team...'
,
hintText:
'Search Team...'
,
border:
OutlineInputBorder
(
borderRadius:
BorderRadius
.
circular
(
8
,
BorderRadius
.
circular
(
8
),
),
),
),
),
),
searchMatchFn:
(
item
,
searchValue
,
)
{
searchMatchFn:
(
item
,
searchValue
)
{
return
item
.
value
?.
name
?.
toLowerCase
()
.
contains
(
searchValue
.
toLowerCase
(),
searchValue
.
toLowerCase
(),
)
??
false
;
},
...
...
@@ -773,20 +778,29 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
)
.
toList
(),
// value: provider.selectedSegment,
value:
provider
.
segmentsList
.
isNotEmpty
?
provider
.
selectedSegment
!=
null
?
provider
.
segmentsList
.
firstWhere
((
element
)
=>
element
.
id
==
provider
.
selectedSegmentId
,
orElse:
()
=>
provider
.
segmentsList
[
0
],
):
null
:
null
,
value:
provider
.
segmentsList
.
isNotEmpty
?
provider
.
selectedSegment
!=
null
?
provider
.
segmentsList
.
firstWhere
(
(
element
)
=>
element
.
id
==
provider
.
selectedSegmentId
,
orElse:
()
=>
provider
.
segmentsList
[
0
],
)
:
null
:
null
,
onChanged:
(
Segments
?
value
)
{
if
(
value
!=
null
)
{
if
(
provider
.
segmentsList
.
isNotEmpty
)
{
if
(
provider
.
segmentsList
.
isNotEmpty
)
{
provider
.
selectedSegment
=
value
;
provider
.
selectedSegmentId
=
value
!
.
id
!;
value
.
id
!;
provider
.
selectedSegmentValue
=
value
!
.
name
!;
value
.
name
!;
}
}
},
...
...
@@ -794,16 +808,12 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
dropdownSearchData:
DropdownSearchData
(
searchInnerWidgetHeight:
50
,
searchController:
provider
.
segmentSearchController
,
provider
.
segmentSearchController
,
searchInnerWidget:
Padding
(
padding:
const
EdgeInsets
.
all
(
8
,
),
padding:
const
EdgeInsets
.
all
(
8
),
child:
TextFormField
(
controller:
provider
.
segmentSearchController
,
provider
.
segmentSearchController
,
decoration:
InputDecoration
(
isDense:
true
,
contentPadding:
...
...
@@ -811,33 +821,27 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
horizontal:
10
,
vertical:
8
,
),
hintText:
'Search Segment...'
,
hintText:
'Search Segment...'
,
border:
OutlineInputBorder
(
borderRadius:
BorderRadius
.
circular
(
8
,
BorderRadius
.
circular
(
8
),
),
),
),
),
),
searchMatchFn:
(
item
,
searchValue
,
)
{
searchMatchFn:
(
item
,
searchValue
)
{
return
item
.
value
?.
name
?.
toLowerCase
()
.
contains
(
searchValue
.
toLowerCase
(),
searchValue
.
toLowerCase
(),
)
??
false
;
},
),
onMenuStateChange:
(
isOpen
)
{
if
(!
isOpen
)
{
provider
.
segmentSearchController
.
clear
();
provider
.
segmentSearchController
.
clear
();
}
},
buttonStyleData:
ddtheme
.
buttonStyleData
,
...
...
@@ -882,17 +886,15 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
Addleadproductscreen
(
type:
"Add"
,
),
(
context
)
=>
Addleadproductscreen
(
type:
"Add"
),
settings:
RouteSettings
(
name:
'Generatequotationaddeditproduct'
,
name:
'Generatequotationaddeditproduct'
,
),
),
);
if
(
res
!=
null
)
{
print
(
"result
$
{
res
}
"
);
print
(
"result
$res
"
);
}
},
child:
Container
(
...
...
@@ -944,8 +946,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
),
)
.
name
;
final
prodPrice
=
product
[
'price'
]
??
'-'
;
final
prodPrice
=
product
[
'price'
]
??
'-'
;
final
prodQty
=
product
[
'qty'
]
??
'-'
;
final
totalPrice
=
product
[
'net_price'
]
??
'-'
;
...
...
@@ -968,7 +969,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
),
);
if
(
res
!=
null
)
{
print
(
"result
$
{
res
}
"
);
print
(
"result
$res
"
);
}
},
child:
Container
(
...
...
@@ -995,8 +996,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
),
decoration:
BoxDecoration
(
color:
Color
(
0xFFE6F6FF
),
borderRadius:
BorderRadius
.
circular
(
14
),
borderRadius:
BorderRadius
.
circular
(
14
,
),
),
child:
Row
(
mainAxisAlignment:
...
...
@@ -1015,8 +1017,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
flex:
6
,
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
CrossAxisAlignment
.
start
,
mainAxisAlignment:
MainAxisAlignment
.
start
,
children:
[
...
...
@@ -1025,8 +1026,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
Expanded
(
flex:
4
,
child:
Text
(
productName
??
"-"
,
productName
??
"-"
,
maxLines:
2
,
overflow:
TextOverflow
...
...
@@ -1045,8 +1045,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
flex:
3
,
child:
Text
(
textAlign:
TextAlign
.
right
,
TextAlign
.
right
,
"₹
$prodPrice
"
,
style:
TextStyle
(
fontFamily:
...
...
@@ -1067,8 +1066,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
grey_semi
,
AppColors
.
grey_semi
,
),
),
SizedBox
(
height:
5
),
...
...
@@ -1112,11 +1110,14 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
),
],
if
(
provider
.
productRows
.
isEmpty
)...[
if
(
provider
.
productsEmptyError
!=
null
)...[
errorWidget
(
context
,
provider
.
productsEmptyError
)
]
]
if
(
provider
.
productRows
.
isEmpty
)
...[
if
(
provider
.
productsEmptyError
!=
null
)
...[
errorWidget
(
context
,
provider
.
productsEmptyError
,
),
],
],
],
),
),
...
...
@@ -1147,9 +1148,8 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
items:
provider
.
statesList
.
map
(
(
slist
)
=>
DropdownMenuItem
<
States
>(
(
slist
)
=>
DropdownMenuItem
<
States
>(
value:
slist
,
child:
Text
(
slist
.
name
!,
...
...
@@ -1166,7 +1166,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider
.
statesList
.
isNotEmpty
?
provider
.
selectedStates
!=
null
?
provider
.
statesList
!
.
firstWhere
(
?
provider
.
statesList
.
firstWhere
(
(
ord
)
=>
ord
.
id
==
provider
...
...
@@ -1174,7 +1174,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
orElse:
()
=>
provider
.
statesList
!
[
0
]
!
,
.
statesList
[
0
],
)
:
null
:
null
,
...
...
@@ -1185,31 +1185,32 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
.
isNotEmpty
)
{
provider
.
selectedStates
=
value
;
provider
.
selectedStatesId
=
value
!
.
id
!;
value
.
id
!;
provider
.
selectedStatesValue
=
value
!
.
name
!;
value
.
name
!;
provider
.
crmLeadListDistrictsOnStateAPIFunction
(
context
,
""
,
value
!
.
id
!,
value
.
id
!,
);
if
(
provider
.
districtsList
.
isNotEmpty
)
{
provider
.
districtsList
provider
.
districtsList
.
clear
();
provider
.
subLocationsList
.
clear
();
provider
.
subLocationsList
.
clear
();
// provider.selectedDistricts = null;
provider
.
selectedDistrictId
=
null
;
provider
.
selectedDistrictValue
=
""
;
provider
.
selectedSubLocationId
=
null
;
provider
.
selectedSubLocationValue
=
""
;
provider
.
selectedSubLocationId
=
null
;
provider
.
selectedSubLocationValue
=
""
;
}
}
}
},
...
...
@@ -1259,8 +1260,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider
.
districtsList
.
isNotEmpty
?
provider
.
selectedDistricts
!=
null
?
provider
.
districtsList
!
.
firstWhere
(
?
provider
.
districtsList
.
firstWhere
(
(
ord
)
=>
ord
.
id
==
provider
...
...
@@ -1268,7 +1268,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
orElse:
()
=>
provider
.
districtsList
!
[
0
]
!
,
.
districtsList
[
0
],
)
:
null
:
null
,
...
...
@@ -1280,14 +1280,14 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider
.
selectedDistricts
=
value
;
provider
.
selectedDistrictId
=
value
!
.
id
!;
value
.
id
!;
provider
.
selectedDistrictValue
=
value
!
.
district
!;
value
.
district
!;
provider
.
crmLeadListSubLocOnDistrictAPIFunction
(
context
,
""
,
value
!
.
id
!,
value
.
id
!,
);
if
(
provider
.
subLocationsList
...
...
@@ -1301,7 +1301,6 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider
.
selectedSubLocationValue
=
""
;
}
}
}
},
...
...
@@ -1348,13 +1347,10 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
// value: provider.selectedSubLocations,
value:
provider
.
subLocationsList
.
isNotEmpty
provider
.
subLocationsList
.
isNotEmpty
?
provider
.
selectedSubLocations
!=
null
?
provider
.
subLocationsList
!
?
provider
.
subLocationsList
.
firstWhere
(
(
ord
)
=>
ord
.
id
==
...
...
@@ -1363,7 +1359,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
orElse:
()
=>
provider
.
subLocationsList
!
[
0
]
!
,
.
subLocationsList
[
0
],
)
:
null
:
null
,
...
...
@@ -1375,9 +1371,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider
.
selectedSubLocations
=
value
;
provider
.
selectedSubLocationId
=
value
!
.
id
!;
value
.
id
!;
provider
.
selectedSubLocationValue
=
value
!
.
subLocality
!;
value
.
subLocality
!;
}
}
},
...
...
@@ -1407,11 +1403,8 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
Expanded
(
child:
Text
(
'Select Lead Status'
,
style:
TextStyle
(
fontSize:
14
,
),
overflow:
TextOverflow
.
ellipsis
,
style:
TextStyle
(
fontSize:
14
),
overflow:
TextOverflow
.
ellipsis
,
),
),
],
...
...
@@ -1419,9 +1412,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
items:
<
String
>[
'Cold'
,
'Hot'
,
'Warm'
]
.
map
(
(
value
)
=>
DropdownMenuItem
<
String
>(
(
value
,
)
=>
DropdownMenuItem
<
String
>(
value:
value
,
child:
Text
(
value
??
''
,
...
...
@@ -1429,8 +1422,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
fontSize:
14
,
),
overflow:
TextOverflow
.
ellipsis
,
TextOverflow
.
ellipsis
,
),
),
)
...
...
@@ -1521,7 +1513,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
onTap:
()
{
HapticFeedback
.
selectionClick
();
if
(
provider
.
validateStep3
())
{
if
(
provider
.
productRows
.
isNotEmpty
){
if
(
provider
.
productRows
.
isNotEmpty
)
{
provider
.
crmAddNewLeadsAndProspectsAPIFunction
(
context
,
""
,
...
...
@@ -1537,10 +1529,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider
.
selectedLeadStatus
,
provider
.
getJsonEncodedProducts
(),
);
}
else
{
}
else
{
toast
(
context
,
"Add min. 1 product"
);
}
}
details
.
onStepContinue
;
...
...
lib/screens/crm/addProspectLeads.dart
View file @
7210793a
...
...
@@ -114,7 +114,8 @@ class _AddProspectLeadsState extends State<AddProspectLeads> {
items:
editProvider
.
employeeList
.
map
(
(
slist
)
=>
DropdownMenuItem
<
LeadEmployees
>(
(
slist
)
=>
DropdownMenuItem
<
LeadEmployees
>(
value:
slist
,
child:
Text
(
slist
.
name
!,
...
...
@@ -135,9 +136,9 @@ class _AddProspectLeadsState extends State<AddProspectLeads> {
if
(
value
!=
null
)
{
if
(
editProvider
.
employeeList
.
isNotEmpty
)
{
editProvider
.
selectedEmployee
=
value
;
editProvider
.
selectedEmployeeId
=
value
!
.
id
!;
editProvider
.
selectedEmployeeId
=
value
.
id
!;
editProvider
.
selectedEmployeeValue
=
value
!
.
name
!;
value
.
name
!;
}
}
},
...
...
lib/screens/crm/appointmentCalendar.dart
View file @
7210793a
...
...
@@ -261,7 +261,7 @@ class _AppointmentcalendarState extends State<Appointmentcalendar> {
children:
[
Expanded
(
flex:
1
,
child:
Container
(
child:
SizedBox
(
height:
50
,
width:
35
,
child:
SvgPicture
.
asset
(
...
...
@@ -341,9 +341,7 @@ class _AppointmentcalendarState extends State<Appointmentcalendar> {
decoration:
BoxDecoration
(
color:
AppColors
.
scaffold_bg_color
,
),
child:
Center
(
child:
Text
(
"No Data Available"
),
),
child:
Center
(
child:
Text
(
"No Data Available"
)),
),
),
],
...
...
@@ -459,7 +457,7 @@ class _AppointmentcalendarState extends State<Appointmentcalendar> {
),
),
const
SizedBox
(
height:
8
),
Container
(
SizedBox
(
height:
70
,
// Increased height to accommodate weekday text
child:
ListView
.
builder
(
controller:
scrollController
,
...
...
lib/screens/crm/crmDashboard.dart
View file @
7210793a
...
...
@@ -192,7 +192,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
physics:
AlwaysScrollableScrollPhysics
(),
child:
Column
(
children:
[
if
(
provider
.
allLeads
.
length
>
0
)
...[
if
(
provider
.
allLeads
.
isNotEmpty
)
...[
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
5
),
margin:
EdgeInsets
.
only
(
bottom:
10
),
...
...
@@ -274,7 +274,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
MaterialPageRoute
(
builder:
(
context
)
=>
Leadlistbymode
(
pageTitleName:
"
${
leadTitles[jndex]
}
"
,
pageTitleName:
leadTitles
[
jndex
],
mode:
provider
.
allLeads
[
jndex
]
...
...
@@ -527,8 +527,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
builder:
(
context
)
=>
Leadlistbymode
(
mode:
"executive"
,
pageTitleName:
"Lead List"
,
pageTitleName:
"Lead List"
,
),
),
);
...
...
@@ -948,7 +947,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
),
],
if
(
provider
.
pendingTasksLists
.
length
>
0
)
...[
if
(
provider
.
pendingTasksLists
.
isNotEmpty
)
...[
Align
(
alignment:
Alignment
.
centerLeft
,
child:
Padding
(
...
...
@@ -1003,7 +1002,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
),
),
),
Container
(
SizedBox
(
width:
double
.
infinity
,
child:
ListView
.
builder
(
physics:
NeverScrollableScrollPhysics
(),
...
...
lib/screens/crm/editAccountDetails.dart
View file @
7210793a
...
...
@@ -17,14 +17,19 @@ class EditAccountDetails extends StatefulWidget {
final
accountID
;
final
companyName
;
const
EditAccountDetails
({
super
.
key
,
required
this
.
leadID
,
required
this
.
mode
,
required
this
.
accountID
,
required
this
.
companyName
});
const
EditAccountDetails
({
super
.
key
,
required
this
.
leadID
,
required
this
.
mode
,
required
this
.
accountID
,
required
this
.
companyName
,
});
@override
State
<
EditAccountDetails
>
createState
()
=>
_EditAccountDetailsState
();
}
class
_EditAccountDetailsState
extends
State
<
EditAccountDetails
>
{
Dropdowntheme
ddtheme
=
Dropdowntheme
();
@override
void
initState
()
{
...
...
@@ -36,7 +41,11 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
listen:
false
,
);
provider
.
editCompanyNameController
.
text
=
widget
.
companyName
!;
provider
.
crmLeadDetailsEditAccountAPIFunction
(
context
,
widget
.
leadID
,
widget
.
mode
);
provider
.
crmLeadDetailsEditAccountAPIFunction
(
context
,
widget
.
leadID
,
widget
.
mode
,
);
});
}
...
...
@@ -48,25 +57,23 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
onWillPop:
()
=>
onBackPressed
(
context
),
child:
SafeArea
(
top:
false
,
bottom:
Platform
.
isIOS
?
false
:
true
,
bottom:
Platform
.
isIOS
?
false
:
true
,
child:
Scaffold
(
resizeToAvoidBottomInset:
true
,
appBar:
appbar
(
context
,
"Edit Account"
),
backgroundColor:
AppColors
.
scaffold_bg_color
,
body:
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
10
),
margin:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
5
),
padding:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
10
),
margin:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
5
),
decoration:
BoxDecoration
(
color:
Colors
.
white
,
borderRadius:
BorderRadius
.
circular
(
12.0
),
),
child:
SingleChildScrollView
(
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
mainAxisSize:
MainAxisSize
.
min
,
children:
[
textControllerWidget
(
context
,
provider
.
editCompanyNameController
,
...
...
@@ -92,14 +99,11 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
items:
provider
.
teamsList
.
map
(
(
slist
)
=>
DropdownMenuItem
<
Teams
>(
(
slist
)
=>
DropdownMenuItem
<
Teams
>(
value:
slist
,
child:
Text
(
slist
.
name
!,
style:
TextStyle
(
fontSize:
14
,
),
style:
TextStyle
(
fontSize:
14
),
),
),
)
...
...
@@ -107,13 +111,17 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
value:
provider
.
selectedTeams
,
onChanged:
(
Teams
?
value
)
{
if
(
value
!=
null
)
{
if
(
provider
.
teamsList
.
isNotEmpty
){
if
(
provider
.
teamsList
.
isNotEmpty
)
{
provider
.
selectedTeams
=
value
;
provider
.
selectedTeamId
=
value
!.
id
!;
provider
.
selectedTeamValue
=
value
!.
name
!;
provider
.
crmLeadListSegmentOnTeamAPIFunction
(
context
,
widget
.
mode
,
provider
.
selectedTeamId
);
provider
.
selectedTeamId
=
value
.
id
!;
provider
.
selectedTeamValue
=
value
.
name
!;
provider
.
crmLeadListSegmentOnTeamAPIFunction
(
context
,
widget
.
mode
,
provider
.
selectedTeamId
,
);
}
}
},
isExpanded:
true
,
...
...
@@ -140,14 +148,11 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
items:
provider
.
segmentsList
.
map
(
(
slist
)
=>
DropdownMenuItem
<
Segments
>(
(
slist
)
=>
DropdownMenuItem
<
Segments
>(
value:
slist
,
child:
Text
(
slist
.
name
!,
style:
TextStyle
(
fontSize:
14
,
),
style:
TextStyle
(
fontSize:
14
),
),
),
)
...
...
@@ -155,12 +160,12 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
value:
provider
.
selectedSegments
,
onChanged:
(
Segments
?
value
)
{
if
(
value
!=
null
)
{
if
(
provider
.
segmentsList
.
isNotEmpty
){
if
(
provider
.
segmentsList
.
isNotEmpty
)
{
provider
.
selectedSegments
=
value
;
provider
.
selectedSegmentId
=
value
!.
id
!;
provider
.
selectedSegmentValue
=
value
!.
name
!;
provider
.
selectedSegmentId
=
value
.
id
!;
provider
.
selectedSegmentValue
=
value
.
name
!;
}
}
},
isExpanded:
true
,
...
...
@@ -173,11 +178,20 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
],
),
),
SizedBox
(
height:
25
,
),
SizedBox
(
height:
25
),
InkWell
(
onTap:
provider
.
isLoading
?
null
:(){
onTap:
provider
.
isLoading
?
null
:
()
{
provider
.
isLoading
=
true
;
provider
.
crmLeadDetailsEditAccountSubmitAPIFunction
(
context
,
widget
.
accountID
,
provider
.
selectedSegmentId
,
provider
.
selectedTeamId
);
provider
.
crmLeadDetailsEditAccountSubmitAPIFunction
(
context
,
widget
.
accountID
,
provider
.
selectedSegmentId
,
provider
.
selectedTeamId
,
);
},
child:
Container
(
alignment:
Alignment
.
center
,
...
...
@@ -193,7 +207,14 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
borderRadius:
BorderRadius
.
circular
(
14.0
),
),
child:
Center
(
child:
provider
.
isLoading
?
CircularProgressIndicator
.
adaptive
(
valueColor:
AlwaysStoppedAnimation
(
AppColors
.
white
),):
Text
(
child:
provider
.
isLoading
?
CircularProgressIndicator
.
adaptive
(
valueColor:
AlwaysStoppedAnimation
(
AppColors
.
white
,
),
)
:
Text
(
"Submit"
,
textAlign:
TextAlign
.
center
,
style:
TextStyle
(
color:
Colors
.
white
),
...
...
@@ -205,13 +226,10 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
),
),
),
),
),
);
},
);
}
}
lib/screens/crm/followUpListonType.dart
View file @
7210793a
...
...
@@ -16,7 +16,7 @@ import 'followUpUpdateScreen.dart';
class
Followuplistontype
extends
StatefulWidget
{
final
type
;
const
Followuplistontype
({
super
.
key
,
required
this
.
type
});
const
Followuplistontype
({
super
.
key
,
required
this
.
type
});
@override
State
<
Followuplistontype
>
createState
()
=>
_FollowuplistontypeState
();
...
...
@@ -119,7 +119,7 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
physics:
AlwaysScrollableScrollPhysics
(),
child:
Column
(
children:
[
Container
(
SizedBox
(
width:
double
.
infinity
,
child:
ListView
.
builder
(
physics:
NeverScrollableScrollPhysics
(),
...
...
@@ -132,8 +132,7 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
itemBuilder:
(
context
,
index
)
{
final
subHeadings
=
[
followUps
[
index
].
aname
??
"-"
,
followUps
[
index
].
appdate
??
"-"
,
followUps
[
index
].
appdate
??
"-"
,
followUps
[
index
].
anote
??
"-"
,
];
return
InkResponse
(
...
...
@@ -142,11 +141,8 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
Followupupdatescreen
(
leadID:
followUps
[
index
]
.
leadid
,
(
context
)
=>
Followupupdatescreen
(
leadID:
followUps
[
index
].
leadid
,
mode:
""
,
),
settings:
RouteSettings
(
...
...
@@ -154,8 +150,12 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
),
),
);
if
(
routeSettingName
==
"Followupupdatescreen"
){
provider
.
crmDashboardFollowUpAPIFunction
(
context
,
widget
.
type
);
if
(
routeSettingName
==
"Followupupdatescreen"
)
{
provider
.
crmDashboardFollowUpAPIFunction
(
context
,
widget
.
type
,
);
}
},
child:
Container
(
...
...
@@ -187,14 +187,23 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
child:
Text
(
"
${followUps[index].aname}
"
,
maxLines:
1
,
overflow:
TextOverflow
.
visible
,
overflow:
TextOverflow
.
visible
,
style:
TextStyle
(
decoration:
TextDecoration
.
underline
,
decoration:
TextDecoration
.
underline
,
height:
1
,
decorationStyle:
TextDecorationStyle
.
dotted
,
decorationColor:
Color
(
0xFF676767
),
color:
AppColors
.
semi_black
,
fontFamily:
"JakartaRegular"
,
decorationStyle:
TextDecorationStyle
.
dotted
,
decorationColor:
Color
(
0xFF676767
,
),
color:
AppColors
.
semi_black
,
fontFamily:
"JakartaRegular"
,
fontSize:
14
,
),
),
...
...
@@ -205,23 +214,31 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
textAlign:
TextAlign
.
right
,
maxLines:
1
,
style:
TextStyle
(
color:
AppColors
.
grey_semi
,
fontFamily:
"JakartaRegular"
,
color:
AppColors
.
grey_semi
,
fontFamily:
"JakartaRegular"
,
fontSize:
14
,
),
),
),
],
),
SizedBox
(
height:
10
,
),
SizedBox
(
height:
10
),
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
10
,
horizontal:
10
),
padding:
EdgeInsets
.
symmetric
(
vertical:
10
,
horizontal:
10
,
),
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
16
),
gradient:
LinearGradient
(
colors:
[
borderRadius:
BorderRadius
.
circular
(
16
),
gradient:
LinearGradient
(
colors:
[
Color
(
0xFFFFFFFF
),
Color
(
0xFFE8F7FF
)
])
Color
(
0xFFE8F7FF
),
],
),
),
child:
Row
(
crossAxisAlignment:
...
...
@@ -231,10 +248,13 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
child:
Text
(
"Remarks"
,
maxLines:
1
,
overflow:
TextOverflow
.
ellipsis
,
overflow:
TextOverflow
.
ellipsis
,
style:
TextStyle
(
color:
AppColors
.
app_blue
,
fontFamily:
"JakartaRegular"
,
color:
AppColors
.
app_blue
,
fontFamily:
"JakartaRegular"
,
fontSize:
14
,
),
),
...
...
@@ -242,11 +262,15 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
Expanded
(
child:
Text
(
"
${followUps[index].anote}
"
,
textAlign:
TextAlign
.
right
,
textAlign:
TextAlign
.
right
,
maxLines:
1
,
style:
TextStyle
(
color:
AppColors
.
semi_black
,
fontFamily:
"JakartaRegular"
,
color:
AppColors
.
semi_black
,
fontFamily:
"JakartaRegular"
,
fontSize:
14
,
),
),
...
...
lib/screens/crm/followUpUpdateScreen.dart
View file @
7210793a
...
...
@@ -15,7 +15,12 @@ class Followupupdatescreen extends StatefulWidget {
final
leadID
;
final
mode
;
final
from
;
const
Followupupdatescreen
({
super
.
key
,
required
this
.
leadID
,
this
.
mode
,
this
.
from
});
const
Followupupdatescreen
({
super
.
key
,
required
this
.
leadID
,
this
.
mode
,
this
.
from
,
});
@override
State
<
Followupupdatescreen
>
createState
()
=>
_FollowupupdatescreenState
();
...
...
@@ -26,7 +31,6 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
Map
_source
=
{
ConnectivityResult
.
mobile
:
true
};
final
MyConnectivity
_connectivity
=
MyConnectivity
.
instance
;
@override
void
initState
()
{
super
.
initState
();
...
...
@@ -35,7 +39,10 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
setState
(()
=>
_source
=
event
);
});
WidgetsBinding
.
instance
.
addPostFrameCallback
((
timeStamp
)
{
final
provider
=
Provider
.
of
<
followUpUpdateProvider
>(
context
,
listen:
false
);
final
provider
=
Provider
.
of
<
followUpUpdateProvider
>(
context
,
listen:
false
,
);
provider
.
getCurrentLocation
(
context
);
});
}
...
...
@@ -116,7 +123,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
child:
Column
(
children:
[
Container
(
padding:
EdgeInsets
.
only
(
left:
10
,
top:
10
),
padding:
EdgeInsets
.
only
(
left:
10
,
top:
10
),
alignment:
Alignment
.
topLeft
,
child:
Text
(
"Follow up Details"
,
...
...
@@ -154,10 +161,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
child:
Row
(
children:
[
Text
(
provider
.
selectedTime
.
hour
.
toString
()
+
":"
+
provider
.
selectedTime
.
minute
.
toString
()
??
"
${provider.selectedTime.hour}
:
${provider.selectedTime.minute}
"
??
"Enter in Time"
,
textAlign:
TextAlign
.
center
,
style:
TextStyle
(
fontWeight:
FontWeight
.
w400
),
...
...
@@ -188,8 +192,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
items:
<
String
>[
'Phone'
,
'Visit'
]
.
map
(
(
value
)
=>
DropdownMenuItem
<
String
>(
(
value
)
=>
DropdownMenuItem
<
String
>(
value:
value
,
child:
Text
(
value
??
''
,
...
...
@@ -216,8 +219,8 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
),
if
(
provider
.
followupError
!=
null
)...[
errorWidget
(
context
,
provider
.
followupError
)
if
(
provider
.
followupError
!=
null
)
...[
errorWidget
(
context
,
provider
.
followupError
)
,
],
textControllerWidget
(
context
,
...
...
@@ -229,8 +232,8 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
false
,
null
,
),
if
(
provider
.
followupFeedbackError
!=
null
)...[
errorWidget
(
context
,
provider
.
followupFeedbackError
)
if
(
provider
.
followupFeedbackError
!=
null
)
...[
errorWidget
(
context
,
provider
.
followupFeedbackError
)
,
],
TextWidget
(
context
,
"Lead Status"
),
DropdownButtonHideUnderline
(
...
...
@@ -251,10 +254,9 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
items:
<
String
>[
'All'
,
'Cold'
,
'Hot'
,
'Warm'
]
<
String
>[
'All'
,
'Cold'
,
'Hot'
,
'Warm'
]
.
map
(
(
value
)
=>
DropdownMenuItem
<
String
>(
(
value
)
=>
DropdownMenuItem
<
String
>(
value:
value
,
child:
Text
(
value
??
''
,
...
...
@@ -281,8 +283,8 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
),
if
(
provider
.
leadStatusError
!=
null
)...[
errorWidget
(
context
,
provider
.
leadStatusError
)
if
(
provider
.
leadStatusError
!=
null
)
...[
errorWidget
(
context
,
provider
.
leadStatusError
)
,
],
TextWidget
(
context
,
...
...
@@ -311,8 +313,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
'Update Order Status'
,
]
.
map
(
(
value
)
=>
DropdownMenuItem
<
String
>(
(
value
)
=>
DropdownMenuItem
<
String
>(
value:
value
,
child:
Text
(
value
??
''
,
...
...
@@ -339,9 +340,9 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
),
if
(
provider
.
appStatusError
!=
null
)...[
errorWidget
(
context
,
provider
.
appStatusError
)
]
if
(
provider
.
appStatusError
!=
null
)
...[
errorWidget
(
context
,
provider
.
appStatusError
)
,
]
,
],
),
),
...
...
@@ -395,8 +396,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
'No Requirement'
,
]
.
map
(
(
value
)
=>
DropdownMenuItem
<
String
>(
(
value
)
=>
DropdownMenuItem
<
String
>(
value:
value
,
child:
Text
(
value
??
''
,
...
...
@@ -423,13 +423,12 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
),
if
(
provider
.
orderStatusError
!=
null
)...[
errorWidget
(
context
,
provider
.
orderStatusError
)
if
(
provider
.
orderStatusError
!=
null
)
...[
errorWidget
(
context
,
provider
.
orderStatusError
)
,
],
if
(
provider
.
selectOrderStatus
==
"Order Gain"
)
...[]
else
...[
else
...[
if
(
provider
.
selectOrderStatus
==
"Order Lost"
)
...[
TextWidget
(
context
,
"Select Competitor"
),
DropdownButtonHideUnderline
(
...
...
@@ -485,8 +484,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
newValue
!;
});
},
buttonStyleData:
ddtheme
.
buttonStyleData
,
buttonStyleData:
ddtheme
.
buttonStyleData
,
iconStyleData:
ddtheme
.
iconStyleData
,
menuItemStyleData:
ddtheme
.
menuItemStyleData
,
...
...
@@ -497,11 +495,10 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
),
if
(
provider
.
competitorError
!=
null
)...[
errorWidget
(
context
,
provider
.
competitorError
)
]
]
else
if
(
provider
.
selectOrderStatus
==
if
(
provider
.
competitorError
!=
null
)
...[
errorWidget
(
context
,
provider
.
competitorError
),
],
]
else
if
(
provider
.
selectOrderStatus
==
"No Requirement"
)
...[],
textControllerWidget
(
...
...
@@ -514,17 +511,16 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
false
,
null
,
),
if
(
provider
.
reasonError
!=
null
)...[
errorWidget
(
context
,
provider
.
reasonError
)
]
if
(
provider
.
reasonError
!=
null
)
...[
errorWidget
(
context
,
provider
.
reasonError
)
,
]
,
],
],
),
),
SizedBox
(
height:
25
),
]
else
if
(
provider
.
nextAppointmentStatus
==
"Next Appointment"
)
...[
]
else
if
(
provider
.
nextAppointmentStatus
==
"Next Appointment"
)
...[
Container
(
padding:
EdgeInsets
.
only
(
left:
10
),
alignment:
Alignment
.
topLeft
,
...
...
@@ -542,8 +538,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
borderRadius:
BorderRadius
.
circular
(
15
),
),
margin:
EdgeInsets
.
symmetric
(
vertical:
5
,
horizontal:
10
),
padding:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
5
),
padding:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
5
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
mainAxisAlignment:
MainAxisAlignment
.
start
,
...
...
@@ -591,8 +586,8 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
),
),
),
if
(
provider
.
nextAppDateError
!=
null
)...[
errorWidget
(
context
,
provider
.
nextAppDateError
)
if
(
provider
.
nextAppDateError
!=
null
)
...[
errorWidget
(
context
,
provider
.
nextAppDateError
)
,
],
TextWidget
(
context
,
"Appointment Type"
),
DropdownButtonHideUnderline
(
...
...
@@ -615,8 +610,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
items:
<
String
>[
'Phone'
,
'Visit'
]
.
map
(
(
value
)
=>
DropdownMenuItem
<
String
>(
(
value
)
=>
DropdownMenuItem
<
String
>(
value:
value
,
child:
Text
(
value
??
''
,
...
...
@@ -637,28 +631,24 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
},
buttonStyleData:
ddtheme
.
buttonStyleData
,
iconStyleData:
ddtheme
.
iconStyleData
,
menuItemStyleData:
ddtheme
.
menuItemStyleData
,
dropdownStyleData:
ddtheme
.
dropdownStyleData
,
menuItemStyleData:
ddtheme
.
menuItemStyleData
,
dropdownStyleData:
ddtheme
.
dropdownStyleData
,
),
),
],
),
),
if
(
provider
.
nextAppType
!=
null
)...[
errorWidget
(
context
,
provider
.
nextAppType
)
if
(
provider
.
nextAppType
!=
null
)
...[
errorWidget
(
context
,
provider
.
nextAppType
)
,
],
if
(
provider
.
selectNextAppointmentType
==
"Visit"
)
...[
if
(
provider
.
selectNextAppointmentType
==
"Visit"
)
...[
CheckboxListTile
(
activeColor:
AppColors
.
app_blue
,
checkboxShape:
CircleBorder
(),
controlAffinity:
ListTileControlAffinity
.
leading
,
value:
provider
.
checked
,
contentPadding:
EdgeInsets
.
symmetric
(
horizontal:
0
),
contentPadding:
EdgeInsets
.
symmetric
(
horizontal:
0
),
title:
Text
(
"Send SMS reminder to Customer"
,
style:
TextStyle
(
...
...
@@ -673,8 +663,9 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
}
else
{
provider
.
smsSent
=
"0"
;
}
print
(
provider
.
smsSent
+
provider
.
checked
.
toString
());
print
(
provider
.
smsSent
+
provider
.
checked
.
toString
(),
);
},
),
],
...
...
@@ -688,8 +679,8 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
false
,
null
,
),
if
(
provider
.
noteError
!=
null
)...[
errorWidget
(
context
,
provider
.
noteError
)
if
(
provider
.
noteError
!=
null
)
...[
errorWidget
(
context
,
provider
.
noteError
)
,
],
],
),
...
...
@@ -703,7 +694,10 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
floatingActionButtonLocation:
FloatingActionButtonLocation
.
centerFloat
,
floatingActionButton:
InkResponse
(
onTap:
provider
.
submitLoading
?
null
:
()
{
onTap:
provider
.
submitLoading
?
null
:
()
{
provider
.
submitLoading
=
true
;
provider
.
crmAddFollowUpAPIFunction
(
context
,
...
...
@@ -716,7 +710,8 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
provider
.
selectedLeadStatus
,
provider
.
selectNextAppointmentType
,
provider
.
smsSent
,
widget
.
mode
);
widget
.
mode
,
);
},
child:
Container
(
height:
45
,
...
...
@@ -727,9 +722,12 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
color:
AppColors
.
app_blue
,
borderRadius:
BorderRadius
.
circular
(
15
),
),
child:
provider
.
submitLoading
?
CircularProgressIndicator
.
adaptive
(
child:
provider
.
submitLoading
?
CircularProgressIndicator
.
adaptive
(
valueColor:
AlwaysStoppedAnimation
(
AppColors
.
white
),
):
Text
(
)
:
Text
(
"Submit"
,
style:
TextStyle
(
fontSize:
15
,
...
...
lib/screens/crm/generateQuotationAddEditProduct.dart
View file @
7210793a
...
...
@@ -61,11 +61,11 @@ class _GeneratequotationaddeditproductState
if
(
widget
.
type
==
"add"
)
{
// Initialize controllers and dropdowns after API call
provider
.
addEditInitializeForm
(
context
);
}
else
if
(
widget
.
type
==
"edit"
){
}
else
if
(
widget
.
type
==
"edit"
)
{
print
(
widget
.
index
);
print
(
widget
.
product
);
provider
.
preFillFormForEdit
(
widget
.
product
,
widget
.
index
);
provider
.
preFillFormForEdit
(
widget
.
product
,
widget
.
index
);
}
});
}
...
...
@@ -147,9 +147,7 @@ class _GeneratequotationaddeditproductState
items:
provider
.
productsList
.
map
(
(
ord
,
)
=>
DropdownMenuItem
<
Products
>(
(
ord
)
=>
DropdownMenuItem
<
Products
>(
value:
ord
,
child:
Text
(
"
${ord.name}
"
,
...
...
@@ -161,6 +159,7 @@ class _GeneratequotationaddeditproductState
),
)
.
toList
(),
// provider.selectedOrderIds[index] != null?
// provider
// .orderList
...
...
@@ -171,25 +170,27 @@ class _GeneratequotationaddeditproductState
// provider
// .selectedOrderIds[index],
// )
value:
provider
.
selectedProducts
!=
null
?
provider
.
productsList
.
firstWhere
(
(
element
)
=>
element
.
id
==
provider
.
selectedAddEditProductId
,
provider
.
selectedAddEditProductId
,
)
:
null
,
onChanged:
(
Products
?
value
)
{
if
(
value
!=
null
)
{
provider
.
selectedProducts
=
value
;
provider
.
selectedAddEditProductId
=
value
!
.
id
!;
value
.
id
!;
provider
.
selectedAddEditProductName
=
value
.
name
;
print
(
value
.
id
.
toString
());
provider
.
crmSelectedProductDetailsApiFunction
(
context
,
value
.
id
.
toString
());
provider
.
crmSelectedProductDetailsApiFunction
(
context
,
value
.
id
.
toString
(),
);
}
},
buttonStyleData:
ddtheme
.
buttonStyleData
,
...
...
@@ -261,10 +262,9 @@ class _GeneratequotationaddeditproductState
floatingActionButton:
InkWell
(
onTap:
()
{
if
(
provider
.
selectedProducts
!=
null
)
{
var
newProduct
;
LeadProducts
newProduct
;
if
(
widget
.
type
==
"add"
)
{
newProduct
=
LeadProducts
(
productId:
provider
.
selectedAddEditProductId
,
productName:
provider
.
selectedAddEditProductName
,
price:
provider
.
addEditProductPriceController
.
text
,
...
...
@@ -280,7 +280,7 @@ class _GeneratequotationaddeditproductState
"net_price"
:
provider
.
addEditTotalAmountController
.
text
,
});
Navigator
.
pop
(
context
,
newProduct
);
}
else
if
(
widget
.
type
==
"edit"
){
}
else
if
(
widget
.
type
==
"edit"
)
{
final
updatedProduct
=
LeadProducts
(
productId:
provider
.
selectedAddEditProductId
,
productName:
provider
.
selectedAddEditProductName
,
...
...
lib/screens/crm/generateQuotationScreen.dart
View file @
7210793a
...
...
@@ -176,7 +176,7 @@ class _GeneratequotationscreenState extends State<Generatequotationscreen> {
),
);
if
(
res
!=
null
)
{
print
(
"result
$
{
res
}
"
);
print
(
"result
$res
"
);
// provider
// .crmLeadDetailsGenerateQuoteViewAPIFunction(
...
...
@@ -245,7 +245,7 @@ class _GeneratequotationscreenState extends State<Generatequotationscreen> {
),
);
if
(
res
!=
null
)
{
print
(
"result
$
{
res
}
"
);
print
(
"result
$res
"
);
}
},
child:
Container
(
...
...
lib/screens/crm/generatedQuotesList.dart
View file @
7210793a
...
...
@@ -14,7 +14,6 @@ import 'package:provider/provider.dart';
import
'LeadDetailsByMode.dart'
;
class
Generatedquoteslist
extends
StatefulWidget
{
const
Generatedquoteslist
({
super
.
key
});
@override
...
...
@@ -46,9 +45,8 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
_connectivity
.
disposeStream
();
}
getDecorationColor
(
value
){
switch
(
value
){
getDecorationColor
(
value
)
{
switch
(
value
)
{
case
"Hot"
:
return
AppColors
.
processed_bg_color
;
case
"Warm"
:
...
...
@@ -60,8 +58,8 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
}
}
getTextColor
(
value
){
switch
(
value
){
getTextColor
(
value
)
{
switch
(
value
)
{
case
"Hot"
:
return
AppColors
.
processed_text_color
;
case
"Warm"
:
...
...
@@ -73,7 +71,6 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
}
}
@override
Widget
build
(
BuildContext
context
)
{
switch
(
_source
.
keys
.
toList
()[
0
])
{
...
...
@@ -146,7 +143,7 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
physics:
AlwaysScrollableScrollPhysics
(),
child:
Column
(
children:
[
Container
(
SizedBox
(
width:
double
.
infinity
,
child:
ListView
.
builder
(
physics:
NeverScrollableScrollPhysics
(),
...
...
@@ -157,7 +154,6 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
),
itemCount:
quotess
.
length
,
itemBuilder:
(
context
,
index
)
{
return
InkResponse
(
onTap:
()
async
{
Navigator
.
push
(
...
...
@@ -183,10 +179,11 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
vertical:
10
,
),
child:
Row
(
children:
[
SvgPicture
.
asset
(
"assets/svg/finance/fin_payments_ic.svg"
,),
SizedBox
(
width:
10
,),
SvgPicture
.
asset
(
"assets/svg/finance/fin_payments_ic.svg"
,
),
SizedBox
(
width:
10
),
Expanded
(
flex:
4
,
child:
Text
(
...
...
@@ -194,9 +191,11 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
maxLines:
2
,
overflow:
TextOverflow
.
ellipsis
,
style:
TextStyle
(
decoration:
TextDecoration
.
underline
,
decoration:
TextDecoration
.
underline
,
height:
1.5
,
decorationStyle:
TextDecorationStyle
.
dotted
,
decorationStyle:
TextDecorationStyle
.
dotted
,
decorationColor:
Color
(
0xFF676767
),
color:
AppColors
.
semi_black
,
fontFamily:
"JakartaRegular"
,
...
...
@@ -204,21 +203,29 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
),
),
),
SizedBox
(
width:
10
,
),
SizedBox
(
width:
10
),
Expanded
(
flex:
2
,
child:
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
5
),
padding:
EdgeInsets
.
symmetric
(
vertical:
5
,
),
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
8
),
color:
getDecorationColor
(
quotess
[
index
].
lstatus
)
borderRadius:
BorderRadius
.
circular
(
8
,
),
color:
getDecorationColor
(
quotess
[
index
].
lstatus
,
),
),
child:
Text
(
"
${quotess[index].lstatus}
"
,
textAlign:
TextAlign
.
center
,
maxLines:
1
,
style:
TextStyle
(
color:
getTextColor
(
quotess
[
index
].
lstatus
),
color:
getTextColor
(
quotess
[
index
].
lstatus
,
),
fontFamily:
"JakartaRegular"
,
fontSize:
14
,
),
...
...
lib/screens/crm/pendingTasksDetails.dart
View file @
7210793a
...
...
@@ -176,21 +176,26 @@ class _PendingtasksdetailsState extends State<Pendingtasksdetails> {
children:
[
Expanded
(
child:
Text
(
"
${
subHeadings[j]
}
"
,
subHeadings
[
j
],
style:
TextStyle
(
decoration:
j
==
0
?
TextDecoration
.
underline
:
TextDecoration
.
none
,
height:
j
==
0
?
1
:
1.5
,
decorationStyle:
TextDecorationStyle
.
dotted
,
decorationColor:
Color
(
0xFF676767
),
decoration:
j
==
0
?
TextDecoration
.
underline
:
TextDecoration
.
none
,
height:
j
==
0
?
1
:
1.5
,
decorationStyle:
TextDecorationStyle
.
dotted
,
decorationColor:
Color
(
0xFF676767
,
),
fontFamily:
"JakartaRegular"
,
fontSize:
14
,
color:
j
==
0
?
AppColors
.
semi_black
:
AppColors
.
grey_semi
,
),
),
),
...
...
@@ -233,7 +238,7 @@ class _PendingtasksdetailsState extends State<Pendingtasksdetails> {
children:
[
Expanded
(
child:
Text
(
"
${
belowHeads[i]
}
"
,
belowHeads
[
i
],
style:
TextStyle
(
color:
AppColors
.
semi_black
,
fontSize:
14
,
...
...
@@ -242,24 +247,39 @@ class _PendingtasksdetailsState extends State<Pendingtasksdetails> {
),
Expanded
(
child:
InkResponse
(
onTap:
belowHeads
[
i
]==
"Mobile Number"
?(){
onTap:
belowHeads
[
i
]
==
"Mobile Number"
?
()
{
HapticFeedback
.
selectionClick
();
launch
(
'tel://
${belowSubHeads[i]}
'
,
);
}:
null
,
}
:
null
,
child:
Padding
(
padding:
const
EdgeInsets
.
all
(
4.0
),
padding:
const
EdgeInsets
.
all
(
4.0
,
),
child:
Text
(
"
${
belowSubHeads[i]
}
"
,
belowSubHeads
[
i
],
style:
TextStyle
(
decoration:
belowHeads
[
i
]==
"Mobile Number"
?
TextDecoration
.
underline
:
TextDecoration
.
none
,
decoration:
belowHeads
[
i
]
==
"Mobile Number"
?
TextDecoration
.
underline
:
TextDecoration
.
none
,
decorationStyle:
TextDecorationStyle
.
dotted
,
decorationColor:
Color
(
0xFF676767
),
color:
AppColors
.
grey_semi
,
decorationStyle:
TextDecorationStyle
.
dotted
,
decorationColor:
Color
(
0xFF676767
,
),
color:
AppColors
.
grey_semi
,
fontSize:
14
,
),
),
...
...
@@ -289,10 +309,13 @@ class _PendingtasksdetailsState extends State<Pendingtasksdetails> {
HapticFeedback
.
selectionClick
();
await
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
Followupupdatescreen
(
MaterialPageRoute
(
builder:
(
context
)
=>
Followupupdatescreen
(
leadID:
task
.
leadid
,
from:
"Pending Tasks"
)),
from:
"Pending Tasks"
,
),
),
);
},
child:
Container
(
...
...
lib/screens/crm/pendingTasksList.dart
View file @
7210793a
...
...
@@ -122,7 +122,7 @@ class _PendingTasksListState extends State<PendingTasksList> {
physics:
AlwaysScrollableScrollPhysics
(),
child:
Column
(
children:
[
Container
(
SizedBox
(
width:
double
.
infinity
,
child:
ListView
.
builder
(
physics:
NeverScrollableScrollPhysics
(),
...
...
@@ -149,7 +149,9 @@ class _PendingTasksListState extends State<PendingTasksList> {
(
context
)
=>
Pendingtasksdetails
(
detailIndex:
index
,
),
settings:
RouteSettings
(
name:
'Pendingtasksdetails'
)
settings:
RouteSettings
(
name:
'Pendingtasksdetails'
,
),
),
);
},
...
...
@@ -182,14 +184,23 @@ class _PendingTasksListState extends State<PendingTasksList> {
child:
Text
(
"
${provider.pendingTasksLists[index].aname}
"
,
maxLines:
1
,
overflow:
TextOverflow
.
visible
,
overflow:
TextOverflow
.
visible
,
style:
TextStyle
(
decoration:
TextDecoration
.
underline
,
decoration:
TextDecoration
.
underline
,
height:
1
,
decorationStyle:
TextDecorationStyle
.
dotted
,
decorationColor:
Color
(
0xFF676767
),
color:
AppColors
.
semi_black
,
fontFamily:
"JakartaRegular"
,
decorationStyle:
TextDecorationStyle
.
dotted
,
decorationColor:
Color
(
0xFF676767
,
),
color:
AppColors
.
semi_black
,
fontFamily:
"JakartaRegular"
,
fontSize:
14
,
),
),
...
...
@@ -200,23 +211,31 @@ class _PendingTasksListState extends State<PendingTasksList> {
textAlign:
TextAlign
.
right
,
maxLines:
1
,
style:
TextStyle
(
color:
AppColors
.
grey_semi
,
fontFamily:
"JakartaRegular"
,
color:
AppColors
.
grey_semi
,
fontFamily:
"JakartaRegular"
,
fontSize:
14
,
),
),
),
],
),
SizedBox
(
height:
10
,
),
SizedBox
(
height:
10
),
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
10
,
horizontal:
10
),
padding:
EdgeInsets
.
symmetric
(
vertical:
10
,
horizontal:
10
,
),
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
16
),
gradient:
LinearGradient
(
colors:
[
borderRadius:
BorderRadius
.
circular
(
16
),
gradient:
LinearGradient
(
colors:
[
Color
(
0xFFFFFFFF
),
Color
(
0xFFE8F7FF
)
])
Color
(
0xFFE8F7FF
),
],
),
),
child:
Row
(
crossAxisAlignment:
...
...
@@ -226,10 +245,13 @@ class _PendingTasksListState extends State<PendingTasksList> {
child:
Text
(
"Remarks"
,
maxLines:
1
,
overflow:
TextOverflow
.
ellipsis
,
overflow:
TextOverflow
.
ellipsis
,
style:
TextStyle
(
color:
AppColors
.
app_blue
,
fontFamily:
"JakartaRegular"
,
color:
AppColors
.
app_blue
,
fontFamily:
"JakartaRegular"
,
fontSize:
14
,
),
),
...
...
@@ -237,12 +259,17 @@ class _PendingTasksListState extends State<PendingTasksList> {
Expanded
(
child:
Text
(
"
${provider.pendingTasksLists[index].anote}
"
,
textAlign:
TextAlign
.
right
,
textAlign:
TextAlign
.
right
,
maxLines:
2
,
overflow:
TextOverflow
.
ellipsis
,
overflow:
TextOverflow
.
ellipsis
,
style:
TextStyle
(
color:
AppColors
.
semi_black
,
fontFamily:
"JakartaRegular"
,
color:
AppColors
.
semi_black
,
fontFamily:
"JakartaRegular"
,
fontSize:
14
,
),
),
...
...
lib/screens/crm/productDetails.dart
View file @
7210793a
...
...
@@ -2,7 +2,6 @@ import 'dart:io';
import
'package:connectivity_plus/connectivity_plus.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_svg/svg.dart'
;
import
'package:generp/Utils/commonServices.dart'
;
import
'package:generp/screens/crm/editProductsList.dart'
;
import
'package:provider/provider.dart'
;
...
...
lib/screens/crm/universalSearchScreen.dart
View file @
7210793a
...
...
@@ -52,15 +52,9 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
child:
Column
(
children:
[
Container
(
// padding: const EdgeInsets.fromLTRB(5.0, 0.0, 10, 0),
// margin: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 10),
padding:
const
EdgeInsets
.
fromLTRB
(
10.0
,
0.0
,
10
,
10
,
),
padding:
const
EdgeInsets
.
fromLTRB
(
10.0
,
0.0
,
10
,
10
),
height:
55
,
decoration:
BoxDecoration
(
color:
AppColors
.
white
,
...
...
@@ -79,8 +73,11 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
Navigator
.
pop
(
context
,
true
);
},
child:
Container
(
child:
SvgPicture
.
asset
(
"assets/svg/appbar_back_button.svg"
,
height:
25
)),
child:
SvgPicture
.
asset
(
"assets/svg/appbar_back_button.svg"
,
height:
25
,
),
),
),
),
Expanded
(
...
...
@@ -128,20 +125,26 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
),
suffixIcon:
Container
(
padding:
EdgeInsets
.
only
(
right:
10
),
child:
provider
.
searchController
.
text
.
isNotEmpty
?
InkResponse
(
child:
provider
.
searchController
.
text
.
isNotEmpty
?
InkResponse
(
onTap:
()
{
HapticFeedback
.
selectionClick
();
provider
.
searchController
.
clear
();
provider
.
crmUniversalSearchFunction
(
provider
.
searchController
.
clear
();
provider
.
crmUniversalSearchFunction
(
context
,
);
},
child:
SvgPicture
.
asset
(
"assets/svg/crm/clear_search.svg"
,
),
)
:
SvgPicture
.
asset
(
)
:
SvgPicture
.
asset
(
"assets/svg/search_ic.svg"
,
),
),
...
...
@@ -186,7 +189,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
),
),
],
if
(
provider
.
accountsList
.
length
>
0
)
...[
if
(
provider
.
accountsList
.
isNotEmpty
)
...[
Align
(
alignment:
Alignment
.
centerLeft
,
child:
Padding
(
...
...
@@ -209,11 +212,13 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
),
itemCount:
provider
.
accountsList
.
length
,
itemBuilder:
(
context
,
index
)
{
String
accname
=
provider
.
accountsList
[
index
].
aname
??
""
;
RegExp
regex
=
RegExp
(
provider
.
searchController
.
text
,
caseSensitive:
false
);
Iterable
<
Match
>
matches
=
regex
.
allMatches
(
accname
);
String
accname
=
provider
.
accountsList
[
index
].
aname
??
""
;
RegExp
regex
=
RegExp
(
provider
.
searchController
.
text
,
caseSensitive:
false
,
);
Iterable
<
Match
>
matches
=
regex
.
allMatches
(
accname
);
List
<
TextSpan
>
textSpans
=
[];
int
previousMatchEnd
=
0
;
...
...
@@ -224,7 +229,9 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
textSpans
.
add
(
TextSpan
(
text:
accname
.
substring
(
previousMatchEnd
,
match
.
start
),
previousMatchEnd
,
match
.
start
,
),
style:
TextStyle
(
color:
AppColors
.
semi_black
,
fontSize:
12
,
...
...
@@ -237,8 +244,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
// Add the matching text with highlighting
textSpans
.
add
(
TextSpan
(
text:
accname
.
substring
(
match
.
start
,
match
.
end
),
text:
accname
.
substring
(
match
.
start
,
match
.
end
),
style:
TextStyle
(
color:
AppColors
.
app_blue
,
fontSize:
12
,
// Highlight color
...
...
@@ -304,14 +310,16 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
leading:
SvgPicture
.
asset
(
"assets/svg/crm/crm_search_list_ic.svg"
,
),
title:
RichText
(
text:
TextSpan
(
title:
RichText
(
text:
TextSpan
(
children:
textSpans
,
style:
TextStyle
(
color:
AppColors
.
semi_black
,
fontSize:
12
,
// Highlight color
fontFamily:
"JakartaMedium"
,
),
)),
),
),
// trailing: SvgPicture.asset(
// "assets/svg/arrow_right_new.svg",
// ),
...
...
@@ -322,7 +330,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
),
],
if
(
provider
.
leadsList
.
length
>
0
)
...[
if
(
provider
.
leadsList
.
isNotEmpty
)
...[
Align
(
alignment:
Alignment
.
centerLeft
,
child:
Padding
(
...
...
@@ -345,11 +353,13 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
),
itemCount:
provider
.
leadsList
.
length
,
itemBuilder:
(
context
,
index
)
{
String
accname
=
provider
.
leadsList
[
index
].
aname
??
""
;
RegExp
regex
=
RegExp
(
provider
.
searchController
.
text
,
caseSensitive:
false
);
Iterable
<
Match
>
matches
=
regex
.
allMatches
(
accname
);
String
accname
=
provider
.
leadsList
[
index
].
aname
??
""
;
RegExp
regex
=
RegExp
(
provider
.
searchController
.
text
,
caseSensitive:
false
,
);
Iterable
<
Match
>
matches
=
regex
.
allMatches
(
accname
);
List
<
TextSpan
>
textSpans
=
[];
int
previousMatchEnd
=
0
;
...
...
@@ -360,7 +370,9 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
textSpans
.
add
(
TextSpan
(
text:
accname
.
substring
(
previousMatchEnd
,
match
.
start
),
previousMatchEnd
,
match
.
start
,
),
style:
TextStyle
(
color:
AppColors
.
semi_black
,
fontSize:
12
,
...
...
@@ -373,8 +385,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
// Add the matching text with highlighting
textSpans
.
add
(
TextSpan
(
text:
accname
.
substring
(
match
.
start
,
match
.
end
),
text:
accname
.
substring
(
match
.
start
,
match
.
end
),
style:
TextStyle
(
color:
AppColors
.
app_blue
,
fontSize:
12
,
// Highlight color
...
...
@@ -439,14 +450,16 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
leading:
SvgPicture
.
asset
(
"assets/svg/crm/crm_search_list_ic.svg"
,
),
title:
RichText
(
text:
TextSpan
(
title:
RichText
(
text:
TextSpan
(
children:
textSpans
,
style:
TextStyle
(
color:
AppColors
.
semi_black
,
fontSize:
12
,
// Highlight color
fontFamily:
"JakartaMedium"
,
),
)),
),
),
// trailing: SvgPicture.asset(
// "assets/svg/arrow_right_new.svg",
// ),
...
...
@@ -456,7 +469,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
},
),
],
if
(
provider
.
enquiresList
.
length
>
0
)
...[
if
(
provider
.
enquiresList
.
isNotEmpty
)
...[
Align
(
alignment:
Alignment
.
centerLeft
,
child:
Padding
(
...
...
@@ -480,17 +493,21 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
itemCount:
provider
.
enquiresList
.
length
,
itemBuilder:
(
context
,
index
)
{
String
accname
=
""
;
if
(
provider
.
enquiresList
[
index
].
companyName
!.
isEmpty
){
if
(
provider
.
enquiresList
[
index
]
.
companyName
!
.
isEmpty
)
{
accname
=
provider
.
enquiresList
[
index
].
name
??
""
;
}
else
{
accname
=
provider
.
enquiresList
[
index
].
companyName
??
""
;
}
else
{
accname
=
provider
.
enquiresList
[
index
].
companyName
??
""
;
}
RegExp
regex
=
RegExp
(
provider
.
searchController
.
text
,
caseSensitive:
false
);
Iterable
<
Match
>
matches
=
regex
.
allMatches
(
accname
);
RegExp
regex
=
RegExp
(
provider
.
searchController
.
text
,
caseSensitive:
false
,
);
Iterable
<
Match
>
matches
=
regex
.
allMatches
(
accname
);
List
<
TextSpan
>
textSpans
=
[];
int
previousMatchEnd
=
0
;
...
...
@@ -501,7 +518,9 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
textSpans
.
add
(
TextSpan
(
text:
accname
.
substring
(
previousMatchEnd
,
match
.
start
),
previousMatchEnd
,
match
.
start
,
),
style:
TextStyle
(
color:
AppColors
.
semi_black
,
fontSize:
12
,
...
...
@@ -514,8 +533,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
// Add the matching text with highlighting
textSpans
.
add
(
TextSpan
(
text:
accname
.
substring
(
match
.
start
,
match
.
end
),
text:
accname
.
substring
(
match
.
start
,
match
.
end
),
style:
TextStyle
(
color:
AppColors
.
app_blue
,
fontSize:
12
,
// Highlight color
...
...
@@ -568,14 +586,16 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
// fontSize: 14,
// ),
// ),
title:
RichText
(
text:
TextSpan
(
title:
RichText
(
text:
TextSpan
(
children:
textSpans
,
style:
TextStyle
(
color:
AppColors
.
semi_black
,
fontSize:
12
,
// Highlight color
fontFamily:
"JakartaMedium"
,
),
)),
),
),
// trailing: SvgPicture.asset(
// "assets/svg/arrow_right_new.svg",
// ),
...
...
lib/screens/finance/AllPaymentRequesitionListsByModes.dart
View file @
7210793a
...
...
@@ -337,10 +337,13 @@ class _AllpaymentrequesitionlistsbymodesState
0xFFFFFFFF
,
),
backgroundColor:
AppColors
.
scaffold_bg_color
,
body:
provider
.
isLoading
&&
requestLists
.
isEmpty
body:
provider
.
isLoading
&&
requestLists
.
isEmpty
?
Center
(
child:
CircularProgressIndicator
.
adaptive
(
valueColor:
AlwaysStoppedAnimation
<
Color
>(
AppColors
.
app_blue
),
valueColor:
AlwaysStoppedAnimation
<
Color
>(
AppColors
.
app_blue
,
),
),
)
:
requestLists
.
isNotEmpty
...
...
@@ -361,7 +364,8 @@ class _AllpaymentrequesitionlistsbymodesState
controller:
_scrollController
,
physics:
const
AlwaysScrollableScrollPhysics
(),
itemCount:
requestLists
.
length
+
(
provider
.
hasMoreData
?
1
:
0
),
requestLists
.
length
+
(
provider
.
hasMoreData
?
1
:
0
),
itemBuilder:
(
context
,
index
)
{
// loader row for pagination
if
(
index
==
requestLists
.
length
)
{
...
...
@@ -639,14 +643,11 @@ class _AllpaymentrequesitionlistsbymodesState
),
)
:
Emptywidget
(
context
),
);
},
);
}
Future
<
void
>
_showLevelApprovalSheet
(
BuildContext
context
,
paymentID
)
{
return
showModalBottomSheet
(
useSafeArea:
true
,
...
...
@@ -791,8 +792,7 @@ class _AllpaymentrequesitionlistsbymodesState
provider
.
selectedID
=
value
.
id
!;
provider
.
selectedValue
=
value
.
name
!;
print
(
"hfjkshfg"
+
provider
.
selectedID
.
toString
(),
"hfjkshfg
${provider.selectedID}
"
,
);
}
}
...
...
@@ -1079,10 +1079,6 @@ class _AllpaymentrequesitionlistsbymodesState
child:
Consumer
<
Requesitionlidtdetailsprovider
>(
builder:
(
context
,
provider
,
child
)
{
// Fallback UI if provider data is not ready
if
(
provider
.
paymentsAccounts
==
null
)
{
return
Center
(
child:
CircularProgressIndicator
());
}
return
Container
(
// Constrain the height to avoid overflow
constraints:
BoxConstraints
(
...
...
@@ -1623,7 +1619,7 @@ class _AllpaymentrequesitionlistsbymodesState
Navigator
.
of
(
context
).
pop
(
false
);
provider
.
imgFromGallery
(
context
);
},
child:
Container
(
child:
SizedBox
(
height:
35
,
child:
Text
(
"Select photo from gallery"
),
),
...
...
@@ -1635,7 +1631,7 @@ class _AllpaymentrequesitionlistsbymodesState
Navigator
.
of
(
context
).
pop
(
false
);
provider
.
imgFromCamera
(
context
);
},
child:
Container
(
child:
SizedBox
(
height:
35
,
child:
Text
(
"Capture photo from camera"
),
),
...
...
lib/screens/finance/FileViewer.dart
View file @
7210793a
...
...
@@ -79,7 +79,7 @@ class _FileviewerState extends State<Fileviewer> {
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
resizeToAvoidBottomInset:
true
,
appBar:
appbarNew
(
context
,
"File Viewer"
,
0xFFFFFFFF
),
appBar:
appbarNew
(
context
,
"File Viewer"
,
0xFFFFFFFF
),
body:
SafeArea
(
child:
Center
(
child:
fileWidget
(
context
))),
);
}
...
...
@@ -172,7 +172,7 @@ class _FileviewerState extends State<Fileviewer> {
},
onConsoleMessage:
(
controller
,
consoleMessage
)
{
if
(
kDebugMode
)
{
debugPrint
(
"consoleMessage
$
{
consoleMessage
}
"
);
debugPrint
(
"consoleMessage
$consoleMessage
"
);
}
debugPrint
(
"JavaScript console message:
${consoleMessage.message}
"
);
},
...
...
@@ -185,12 +185,10 @@ class _FileviewerState extends State<Fileviewer> {
Future
<
Uint8List
?>
_loadPdf
(
String
url
)
async
{
try
{
final
response
=
await
http
.
get
(
Uri
.
parse
(
url
));
if
(
response
!=
null
)
{
if
(
response
.
statusCode
==
200
)
{
print
(
response
.
bodyBytes
);
return
response
.
bodyBytes
;
}
}
}
catch
(
e
)
{
print
(
'Error loading PDF:
$e
'
);
}
...
...
Prev
1
…
7
8
9
10
11
12
13
14
15
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment