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

23-06-2025 By Sai Srinivas

Finance module test cases
parent a7dc0d35
<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1115_3151)">
<path d="M15.5488 20.5042H3.24645C1.45236 20.5042 0 19.0519 0 17.2578V4.95544C0 3.16134 1.45236 1.70898 3.24645 1.70898H9.39762C9.91022 1.70898 10.252 2.05072 10.252 2.56331C10.252 3.07591 9.91022 3.41764 9.39762 3.41764H3.24645C2.39212 3.41764 1.70866 4.10111 1.70866 4.95544V17.1723C1.70866 18.0267 2.39212 18.7101 3.24645 18.7101H15.4634C16.3177 18.7101 17.0012 18.0267 17.0012 17.1723V11.1066C17.0012 10.594 17.3429 10.2523 17.8555 10.2523C18.3681 10.2523 18.7098 10.594 18.7098 11.1066V17.2578C18.7952 19.0519 17.3429 20.5042 15.5488 20.5042Z" fill="#2D2D2D"/>
<path d="M5.12581 16.2323C4.86951 16.2323 4.69865 16.1468 4.52778 15.976C4.35692 15.8051 4.27148 15.4634 4.27148 15.2071L5.12581 10.9354C5.12581 10.7646 5.21125 10.5937 5.38211 10.5083L15.6341 0.256299C15.9758 -0.0854329 16.4884 -0.0854329 16.8301 0.256299L20.2474 3.67362C20.5892 4.01535 20.5892 4.52795 20.2474 4.86968L9.99549 15.1216C9.91006 15.2071 9.73919 15.2925 9.56833 15.3779L5.29668 16.2323H5.12581ZM6.74904 11.5334L6.23644 14.2673L8.9703 13.7547L18.4534 4.27165L16.2321 2.05039L6.74904 11.5334Z" fill="#2D2D2D"/>
</g>
<defs>
<clipPath id="clip0_1115_3151">
<rect width="20.5039" height="20.5039" fill="white"/>
</clipPath>
</defs>
</svg>
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1115_3149)">
<path d="M14.9827 29.0987C12.7208 29.1555 8.27503 28.8036 6.82436 28.458C5.83413 28.2494 4.90358 27.673 4.20212 26.8709C3.50066 26.0688 3.05841 25.0775 2.95609 24.0759L2.95268 24.0452C2.87722 23.297 2.85385 22.5444 2.88276 21.793C2.88276 21.793 2.82592 21.1296 2.95325 19.9262C2.95325 19.916 2.95325 19.9058 2.95609 19.8961C3.06132 18.9084 3.50284 17.9868 4.20667 17.2858C4.91428 16.5774 5.84181 16.1308 6.83686 16.0193C8.29378 15.8653 12.7276 15.7811 14.981 15.7811C17.2343 15.7811 20.8513 15.8647 22.3082 16.0193C23.3034 16.1308 24.2309 16.5777 24.9384 17.2864C25.6421 17.9877 26.0836 18.9094 26.189 19.8972L26.1924 19.9274C26.318 21.1313 26.301 21.7919 26.301 21.7919C26.3047 22.5453 26.2685 23.2984 26.1924 24.048C26.1924 24.0583 26.1924 24.0685 26.1895 24.0787C26.0867 25.0809 25.6438 26.0711 24.9424 26.8743C24.2409 27.6775 23.3121 28.2517 22.3218 28.4609C20.8683 28.79 17.2445 29.114 14.9827 29.0987ZM14.4387 1.12389e-06C13.0455 0.00078804 11.6838 0.414637 10.5259 1.18923C9.36786 1.96381 8.46554 3.06436 7.93297 4.35171C7.4004 5.63907 7.26149 7.05544 7.53381 8.42173C7.80612 9.78803 8.47744 11.0429 9.46288 12.0277C10.4483 13.0125 11.7036 13.683 13.0701 13.9545C14.4366 14.2259 15.8528 14.0861 17.1399 13.5527C18.4269 13.0193 19.5268 12.1162 20.3007 10.9577C21.0745 9.79925 21.4875 8.43733 21.4874 7.04416C21.4873 6.11875 21.3049 5.20241 20.9506 4.34751C20.5963 3.49262 20.077 2.7159 19.4224 2.06175C18.7678 1.40759 17.9908 0.888813 17.1357 0.535052C16.2805 0.181291 15.3641 -0.000521585 14.4387 1.12389e-06Z" fill="url(#paint0_linear_1115_3149)"/>
</g>
<defs>
<linearGradient id="paint0_linear_1115_3149" x1="2.87026" y1="14.5522" x2="26.3038" y2="14.5522" gradientUnits="userSpaceOnUse">
<stop stop-color="#0080DE"/>
<stop offset="0.6" stop-color="#49BCFF"/>
<stop offset="1" stop-color="#61CAFF"/>
</linearGradient>
<clipPath id="clip0_1115_3149">
<rect width="29.1043" height="29.1043" fill="white"/>
</clipPath>
</defs>
</svg>
......@@ -34,7 +34,7 @@ class Pendingcomplaintsprovider extends ChangeNotifier {
bool _submitLoading = false;
String? statusError;
String? fsrError;
String? runningHoursError;
String? _runningHoursError;
List<TP_List> get technician_complaint_list => _technician_complaint_list;
bool get isLoading => _isLoading;
bool get submitLoading => _submitLoading;
......@@ -45,10 +45,15 @@ class Pendingcomplaintsprovider extends ChangeNotifier {
int get imagePicked => _image_picked;
File? get imagePath => _imageName;
File? get imageFilePath => _image;
String? get runningHoursError => _runningHoursError;
final List<Map<String, dynamic>> CompletedStatus = [
{"id": "1", "name": "Pending"},
{"id": "2", "name": "Completed"}
];
set runningHoursError(String? values){
_runningHoursError =values;
notifyListeners();
}
set imagePicked(int value){
_image_picked = value;
notifyListeners();
......@@ -83,9 +88,10 @@ class Pendingcomplaintsprovider extends ChangeNotifier {
feedbackController.clear();
statusError = "";
fsrError = "";
runningHoursError = "";
_runningHoursError = "";
_image = null;
_imageName = null;
_selectedTime = TimeOfDay.now();
checkDropDownSelected();
notifyListeners();
......@@ -147,10 +153,12 @@ class Pendingcomplaintsprovider extends ChangeNotifier {
final TimeOfDay? picked = await showTimePicker(
context: context,
initialTime: _selectedTime,
);
if (picked != null && picked != _selectedTime) _selectedTime = picked;
_formattedTime =
_selectedTime.hour.toString() + ":" + _selectedTime.minute.toString();
notifyListeners();
}
String formatTime(int hour, int minute) {
......@@ -176,12 +184,12 @@ class Pendingcomplaintsprovider extends ChangeNotifier {
runningHr,
statusId,
) async {
if (!validatereceiptForm(context)) {
return;
}
var HomeProvider = Provider.of<HomescreenNotifier>(context,listen: false);
try {
if(!validatereceiptForm(context)){
return;
}
final data = await ApiCalling.UpdateComplaintAPI(
HomeProvider.empId,
HomeProvider.session,
......@@ -233,7 +241,7 @@ class Pendingcomplaintsprovider extends ChangeNotifier {
bool validatereceiptForm(BuildContext context) {
statusError = null;
fsrError = null;
runningHoursError = null;
_runningHoursError = null;
_submitLoading = false;
bool isValid = true;
if (_statusId == null || _statusId!.isEmpty) {
......@@ -250,11 +258,12 @@ class Pendingcomplaintsprovider extends ChangeNotifier {
}
if(runningHoursController.text.trim().isEmpty){
runningHoursError = "Enter Running Hours";
_runningHoursError = "Enter Running Hours";
_submitLoading = false;
isValid = false;
}
notifyListeners();
return isValid;
}
......
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:provider/provider.dart';
......@@ -9,6 +10,34 @@ class crmLeadDetailsProvider extends ChangeNotifier {
bool _isLoading = false;
TextEditingController nameController = TextEditingController();
TextEditingController designationController = TextEditingController();
TextEditingController mobileNumberController = TextEditingController();
TextEditingController alternativeMobileController = TextEditingController();
TextEditingController telephoneController = TextEditingController();
TextEditingController emailController = TextEditingController();
TextEditingController editNameController = TextEditingController();
TextEditingController editDesignationController = TextEditingController();
TextEditingController editMobileNumberController = TextEditingController();
TextEditingController editAlternativeMobileController = TextEditingController();
TextEditingController editTelephoneController = TextEditingController();
TextEditingController editEmailController = TextEditingController();
String? _nameError;
String? _designationError;
String? _mobileNumError;
String? _altMobError;
String? _teleError;
String? _emailError;
String? _editNameError;
String? _editDesignationError;
String? _editMobileNumError;
String? _editAltMobError;
String? _editTeleError;
String? _editEmailError;
LeadDetails _leadDetails = LeadDetails();
AccountDetails _accountDetails = AccountDetails();
List<LeadProducts> _leadProducts = [];
......@@ -19,6 +48,20 @@ class crmLeadDetailsProvider extends ChangeNotifier {
List<String> _headings = [];
List<String> _subHeadings = [];
String? get nameError => _nameError;
String? get designationError => _designationError;
String? get mobileNumError => _mobileNumError;
String? get altMobError => _altMobError;
String? get teleError => _teleError;
String? get emailError => _emailError;
String? get editNameError => _editNameError;
String? get editDesignationError => _editDesignationError;
String? get editMobileNumError => _editMobileNumError;
String? get editAltMobError => _editAltMobError;
String? get editTeleError => _editTeleError;
String? get editEmailError => _editEmailError;
bool get isLoading => _isLoading;
LeadDetails get leadDetails => _leadDetails;
......@@ -39,12 +82,63 @@ class crmLeadDetailsProvider extends ChangeNotifier {
List<String> get subHeadings => _subHeadings;
set nameError(String? value){
_nameError = value;
notifyListeners();
}
set designationError(String? value){
_designationError = value;
notifyListeners();
}
set mobileNumError(String? value){
_mobileNumError = value;
notifyListeners();
}
set altMobError(String? value){
_altMobError = value;
notifyListeners();
}
set teleError(String? value){
_teleError = value;
notifyListeners();
}
set emailError(String? value){
_emailError = value;
notifyListeners();
}
set editNameError(String? value){
_editNameError = value;
notifyListeners();
}
set editDesignationError(String? value){
_editDesignationError = value;
notifyListeners();
}
set editMobileNumError(String? value){
_editMobileNumError = value;
notifyListeners();
}
set editAltMobError(String? value){
_editAltMobError = value;
notifyListeners();
}
set editTeleError(String? value){
_editTeleError = value;
notifyListeners();
}
set editEmailError(String? value){
_editEmailError = value;
notifyListeners();
}
set isLoading(bool value){
_isLoading = value;
notifyListeners();
}
Future<void> crmLeadDetailsAPI(context, leadID, mode) async {
Future<void> crmLeadDetailsAPIFunction(context, leadID, mode) async {
try {
var HomeProv = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.crmLeadDetailsAPI(
......@@ -90,7 +184,7 @@ class crmLeadDetailsProvider extends ChangeNotifier {
data.accountDetails!.team??"-",
data.accountDetails!.segment??"-",
data.leadDetails!.status??"-",
data.leadDetails!.lage??"-",
"${data.leadDetails!.lage??"-"} days",
];
_isLoading = false;
notifyListeners();
......@@ -107,7 +201,139 @@ class crmLeadDetailsProvider extends ChangeNotifier {
notifyListeners();
}
}
void resetAll(){
Future<void> crmLeadDetailsAddContactAPIFunction(context, accID) async {
try {
var prov = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.crmLeadDetailsAddContactAPI(prov.empId, prov.session, accID,
nameController.text, mobileNumberController.text, designationController.text, alternativeMobileController.text, telephoneController.text, emailController.text);
_isLoading = true;
notifyListeners();
if (data != null) {
if (data.error == "0") {
Navigator.pop(context,true);
resetAll();
_isLoading = false;
notifyListeners();
}else{
_isLoading = false;
notifyListeners();
}
}else{
_isLoading = false;
notifyListeners();
}
} catch (e, s) {
_isLoading = false;
notifyListeners();
}
}
Future<void> crmLeadDetailsEditContactAPIFunction(context,contactID) async {
try {
var prov = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.crmLeadDetailsEditContactAPI(prov.empId, prov.session, contactID,
nameController.text, mobileNumberController.text, designationController.text, alternativeMobileController.text, telephoneController.text, emailController.text);
_isLoading = true;
notifyListeners();
if (data != null) {
if (data.error == "0") {
_isLoading = false;
Navigator.pop(context,true);
resetAll();
_isLoading = false;
notifyListeners();
}else{
_isLoading = false;
notifyListeners();
}
}else{
_isLoading = false;
notifyListeners();
}
} catch (e, s) {
_isLoading = false;
notifyListeners();
}
}
void onChangeName(value){
_nameError = "";
notifyListeners();
}
void onChangeDesignation(value){
_designationError = "";
notifyListeners();
}
void onChangeMobile(value){
_mobileNumError = "";
notifyListeners();
}
void onChangeAltMobile(value){
_altMobError = "";
notifyListeners();
}
void onChangeTelephone(value){
_teleError = "";
notifyListeners();
}
void onChangeEmailId(value){
_emailError = "";
notifyListeners();
}
void onChangeEditName(value){
_editNameError = "";
notifyListeners();
}
void onChangeEditDesignation(value){
_editDesignationError = "";
notifyListeners();
}
void onChangeEditMobile(value){
_editMobileNumError = "";
notifyListeners();
}
void onChangeEditAltMobile(value){
_editAltMobError = "";
notifyListeners();
}
void onChangeEditTelephone(value){
_editTeleError = "";
notifyListeners();
}
void onChangeEditEmailId(value){
_editEmailError = "";
notifyListeners();
}
void resetAll(){
nameController.clear();
designationController.clear();
mobileNumberController.clear();
alternativeMobileController.clear();
telephoneController.clear();
emailController.clear();
editNameController.clear();
editDesignationController.clear();
editMobileNumberController.clear();
editAlternativeMobileController.clear();
editTelephoneController.clear();
editEmailController.clear();
_nameError = "";
_designationError = "";
_mobileNumError = "";
_altMobError = "";
_teleError = "";
_emailError = "";
_editNameError = "";
_editDesignationError = "";
_editMobileNumError = "";
_editAltMobError = "";
_editTeleError = "";
_editEmailError = "";
notifyListeners();
}
}
......@@ -305,7 +305,6 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier {
_paymentModes = data.paymentModes!;
_paymentAccounts = data.paymentAccounts!;
_paymentRequestDetails = data.paymentRequestDetails!;
resetAll();
notifyListeners();
}
}
......
......@@ -459,7 +459,6 @@ class Paymentreceiptsprovider extends ChangeNotifier {
_submitClicked = true;
notifyListeners();
if (!validatereceiptForm(context)) {
_submitClicked = false;
return;
}
......@@ -487,12 +486,12 @@ class Paymentreceiptsprovider extends ChangeNotifier {
);
if (data != null) {
if (data.error == "0") {
_submitClicked = true;
notifyListeners();
_submitClicked = false;
toast(context, "Added Successfully");
resetForm();
Navigator.pop(context, true);
notifyListeners();
Navigator.of(context).pop(context);
} else {
_submitClicked = true;
notifyListeners();
......@@ -729,7 +728,6 @@ class Paymentreceiptsprovider extends ChangeNotifier {
// Clear validation errors
selectAccountError = null;
selectreceiptPaymentAccounts = null;
selectPaymentAccountError = null;
dateError = null;
paymentreferenceError = null;
......@@ -853,6 +851,7 @@ class Paymentreceiptsprovider extends ChangeNotifier {
descriptionError = "Please Enter Description";
isValid = false;_submitClicked = false;
}
_submitClicked = false;
notifyListeners();
return isValid;
}
......
import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'app_colors.dart';
class Dropdowntheme {
final buttonStyleData = ButtonStyleData(
height: 50,
width: 160,
padding: const EdgeInsets.only(left: 14, right: 14),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
);
final iconStyleData = IconStyleData(
icon: SvgPicture.asset(
"assets/svg/arrow_dropdown.svg",
height: 25,
width: 20,
),
iconSize: 12,
iconEnabledColor: Color(0xFF2D2D2D),
iconDisabledColor: Colors.grey,
);
final dropdownStyleData = DropdownStyleData(
maxHeight: 200,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(15),
thickness: MaterialStateProperty.all<double>(6),
thumbVisibility: MaterialStateProperty.all<bool>(true),
),
);
final menuItemStyleData = const MenuItemStyleData(
height: 40,
padding: EdgeInsets.only(left: 14, right: 14),
);
}
\ No newline at end of file
......@@ -272,7 +272,7 @@ class MyApp extends StatelessWidget {
radius: Radius.circular(6),
thickness: WidgetStatePropertyAll(10),
thumbColor: WidgetStateProperty.all(AppColors.grey_semi.withOpacity(0.6))
)
),
),
home: const Splash(),
);
......
......@@ -118,8 +118,8 @@ class _MyHomePageState extends State<MyHomePage> {
"Whizzdom",
"Common",
"Finance",
"Orders",
"CRM",
// "Orders",
// "CRM",
];
final icons = [
"assets/svg/home_icons_1.svg",
......@@ -131,8 +131,8 @@ class _MyHomePageState extends State<MyHomePage> {
"assets/svg/home_icons_81.svg",
"assets/svg/home_icons_9.svg",
"assets/svg/home_icons_10.svg",
"assets/svg/home_icons_11.svg",
"assets/svg/home_icons_12.svg",
// "assets/svg/home_icons_11.svg",
// "assets/svg/home_icons_12.svg",
];
final requiredRoles = [
"430",
......@@ -144,8 +144,8 @@ class _MyHomePageState extends State<MyHomePage> {
"431",
"430",
"430",
"430",
"430",
// "430",
// "430",
];
final filteredItems = <Map<String, String>>[];
......
......@@ -10,6 +10,7 @@ import '../../Models/commonModels/commonAccountLedgerResponse.dart';
import '../../Notifiers/commonProvider/accountDetailsProvider.dart';
import '../../Utils/app_colors.dart';
import '../../Utils/commonWidgets.dart';
import '../../Utils/dropdownTheme.dart';
class Accountledger extends StatefulWidget {
const Accountledger({super.key});
......@@ -19,6 +20,7 @@ class Accountledger extends StatefulWidget {
}
class _AccountledgerState extends State<Accountledger> {
Dropdowntheme ddtheme = Dropdowntheme();
@override
void initState() {
// TODO: implement initState
......@@ -534,49 +536,10 @@ class _AccountledgerState extends State<Accountledger> {
}
}
},
buttonStyleData: ButtonStyleData(
height: 50,
width: 160,
padding: const EdgeInsets.only(
left: 14,
right: 14,
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
),
iconStyleData: IconStyleData(
icon: SvgPicture.asset("assets/svg/arrow_dropdown.svg",height: 25,width: 20,),
iconSize: 12,
iconEnabledColor: Color(0xFF2D2D2D),
iconDisabledColor: Colors.grey,
),
dropdownStyleData: DropdownStyleData(
maxHeight: 200,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(15),
thickness:
MaterialStateProperty.all<double>(
6,
),
thumbVisibility:
MaterialStateProperty.all<bool>(
true,
),
),
),
menuItemStyleData: const MenuItemStyleData(
height: 40,
padding: EdgeInsets.only(
left: 14,
right: 14,
),
),
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......
......@@ -5,6 +5,7 @@ import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/commonProvider/accountsListProvider.dart';
import 'package:generp/Utils/app_colors.dart';
import 'package:generp/Utils/commonWidgets.dart';
import 'package:generp/Utils/dropdownTheme.dart';
import 'package:provider/provider.dart';
import 'package:generp/Models/commonModels/DistrictsResponse.dart';
import 'package:generp/Models/commonModels/SubLocationsResponse.dart';
......@@ -19,6 +20,7 @@ class Addcommonpayment extends StatefulWidget {
}
class _AddcommonpaymentState extends State<Addcommonpayment> {
Dropdowntheme ddtheme = Dropdowntheme();
@override
void initState() {
// TODO: implement initState
......@@ -100,44 +102,10 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
);
}
},
buttonStyleData: ButtonStyleData(
height: 50,
width: 160,
padding: const EdgeInsets.only(
left: 14,
right: 14,
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
),
iconStyleData: IconStyleData(
icon: SvgPicture.asset("assets/svg/arrow_dropdown.svg",height: 25,width: 20,),
iconSize: 14,
iconEnabledColor: Color(0xFF2D2D2D),
iconDisabledColor: Colors.grey,
),
dropdownStyleData: DropdownStyleData(
maxHeight: 200,
width: 350,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(15),
thickness: MaterialStateProperty.all<double>(
6,
),
thumbVisibility:
MaterialStateProperty.all<bool>(true),
),
),
menuItemStyleData: const MenuItemStyleData(
height: 40,
padding: EdgeInsets.only(left: 14, right: 14),
),
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......@@ -218,43 +186,10 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
}
}
},
buttonStyleData: ButtonStyleData(
height: 50,
width: 160,
padding: const EdgeInsets.only(
left: 14,
right: 14,
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
),
iconStyleData: IconStyleData(
icon: SvgPicture.asset("assets/svg/arrow_dropdown.svg",height: 25,width: 20,),
iconSize: 12,
iconEnabledColor: Color(0xFF2D2D2D),
iconDisabledColor: Colors.grey,
),
dropdownStyleData: DropdownStyleData(
maxHeight: 200,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(15),
thickness: MaterialStateProperty.all<double>(
6,
),
thumbVisibility:
MaterialStateProperty.all<bool>(true),
),
),
menuItemStyleData: const MenuItemStyleData(
height: 40,
padding: EdgeInsets.only(left: 14, right: 14),
),
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......@@ -309,43 +244,10 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
}
}
},
buttonStyleData: ButtonStyleData(
height: 50,
width: 160,
padding: const EdgeInsets.only(
left: 14,
right: 14,
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
),
iconStyleData: IconStyleData(
icon: SvgPicture.asset("assets/svg/arrow_dropdown.svg",height: 25,width: 20,),
iconSize: 12,
iconEnabledColor: Color(0xFF2D2D2D),
iconDisabledColor: Colors.grey,
),
dropdownStyleData: DropdownStyleData(
maxHeight: 200,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(15),
thickness: MaterialStateProperty.all<double>(
6,
),
thumbVisibility:
MaterialStateProperty.all<bool>(true),
),
),
menuItemStyleData: const MenuItemStyleData(
height: 40,
padding: EdgeInsets.only(left: 14, right: 14),
),
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......@@ -396,43 +298,10 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
}
}
},
buttonStyleData: ButtonStyleData(
height: 50,
width: 160,
padding: const EdgeInsets.only(
left: 14,
right: 14,
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
),
iconStyleData: IconStyleData(
icon: SvgPicture.asset("assets/svg/arrow_dropdown.svg",height: 25,width: 20,),
iconSize: 12,
iconEnabledColor: Color(0xFF2D2D2D),
iconDisabledColor: Colors.grey,
),
dropdownStyleData: DropdownStyleData(
maxHeight: 200,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(15),
thickness: MaterialStateProperty.all<double>(
6,
),
thumbVisibility:
MaterialStateProperty.all<bool>(true),
),
),
menuItemStyleData: const MenuItemStyleData(
height: 40,
padding: EdgeInsets.only(left: 14, right: 14),
),
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......
......@@ -3,7 +3,10 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import '../Utils/dropdownTheme.dart';
class Commondaterangefilter {
Dropdowntheme ddtheme = Dropdowntheme();
final List<String> filterItems = [
'Today',
'Yesterday',
......@@ -412,6 +415,9 @@ class Commondaterangefilter {
),
SizedBox(height: 16),
DropdownButtonHideUnderline(
child: Row(
children: [
Expanded(
child: DropdownButton2<String>(
isExpanded: true,
hint: Text(
......@@ -451,23 +457,13 @@ class Commondaterangefilter {
}
});
},
buttonStyleData: ButtonStyleData(
height: 40,
width: double.infinity,
padding: EdgeInsets.symmetric(horizontal: 14),
decoration: BoxDecoration(
border: Border.all(color: Colors.grey),
borderRadius: BorderRadius.circular(8),
),
),
dropdownStyleData: DropdownStyleData(
maxHeight: 200,
width: MediaQuery.of(context).size.width - 32,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: Colors.white,
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
),
),
if (tempSelectedValue == 'Custom') ...[
......
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../Notifiers/crmProvider/crmLeadDetailsProvider.dart';
import '../../Utils/app_colors.dart';
import '../../Utils/commonWidgets.dart';
class AppointmentDetails extends StatefulWidget {
const AppointmentDetails({super.key});
@override
State<AppointmentDetails> createState() => _AppointmentDetailsState();
}
class _AppointmentDetailsState extends State<AppointmentDetails> {
@override
Widget build(BuildContext context) {
return Consumer<crmLeadDetailsProvider>(
builder: (context, provider, child) {
var quotationDetails = provider.appointmentDetails;
return WillPopScope(
onWillPop: () => onBackPressed(context),
child: Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar(context, "Appointment Details"),
backgroundColor: AppColors.scaffold_bg_color,
body: SafeArea(
child: SizedBox(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget(context, "Appointment Details"),
ListView.builder(
itemCount: quotationDetails.length,
shrinkWrap: true,
itemBuilder: (context, index) {
return Container(
margin: EdgeInsets.symmetric(
horizontal: 10,
vertical: 5,
),
padding: EdgeInsets.symmetric(
horizontal: 15,
vertical: 10,
),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
...List.generate(5, (j) {
final textheads = [
"Employee Name",
"Appointment Date",
"Appointment Type",
"Note",
"Appointment Executed",
"Appointment Created on",
];
final textSubheads = [
quotationDetails[index].ename ?? "-",
quotationDetails[index].aappDate ?? "-",
quotationDetails[index].atype ?? "-",
quotationDetails[index].anote ?? "-",
quotationDetails[index].astatus ?? "-",
quotationDetails[index].adate ?? "-",
];
return Container(
padding: EdgeInsets.symmetric(
vertical: 6,
horizontal: 0,
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Expanded(
child: Text(
textheads[j].toString(),
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
),
Expanded(
child: Text(
textSubheads[j],
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: textSubheads[j]=="View File"?AppColors.app_blue:
Color(0xFF818181),
decoration:textSubheads[j]=="View File"? TextDecoration.underline:TextDecoration.none,
decorationColor: AppColors.app_blue
),
),
),
],
),
);
}),
],
),
);
},
),
SizedBox(height: 75),
],
),
),
),
),
floatingActionButton: Align(
alignment: Alignment.bottomCenter,
child: InkWell(
child: Container(
alignment: Alignment.bottomCenter,
height: 45,
width: MediaQuery
.of(context)
.size
.width,
margin: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
color: AppColors.app_blue,
borderRadius: BorderRadius.circular(14.0),
),
child: Center(
child: Text(
"Add Appointment",
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontFamily: "JakartaMedium",
),
),
),
),
),
),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
),
);
},
);
}
}
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart';
import '../../Notifiers/crmProvider/crmLeadDetailsProvider.dart';
import '../../Utils/app_colors.dart';
import '../../Utils/commonWidgets.dart';
class FollowUpDetails extends StatefulWidget {
const FollowUpDetails({super.key});
@override
State<FollowUpDetails> createState() => _FollowUpDetailsState();
}
class _FollowUpDetailsState extends State<FollowUpDetails> {
@override
Widget build(BuildContext context) {
return Consumer<crmLeadDetailsProvider>(
builder: (context, provider, child) {
var followupDetails = provider.followupDetails;
return WillPopScope(
onWillPop: () => onBackPressed(context),
child: Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar(context, "Followup Details"),
backgroundColor: AppColors.scaffold_bg_color,
body: SafeArea(
child: SizedBox(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget(context, "Followup Details"),
ListView.builder(
itemCount: followupDetails.length,
shrinkWrap: true,
itemBuilder: (context, index) {
return Container(
margin: EdgeInsets.symmetric(
horizontal: 10,
vertical: 5,
),
padding: EdgeInsets.symmetric(
horizontal: 15,
vertical: 10,
),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
...List.generate(7, (j) {
final textheads = [
"Employee Name",
"Date",
"Type",
"In Time",
"Out Time",
"Status",
"Feedback",
];
final textSubheads = [
followupDetails[index].ename ?? "-",
followupDetails[index].fdate ?? "-",
followupDetails[index].ftype ?? "-",
followupDetails[index].finTime ?? "-",
followupDetails[index].foutTime ?? "-",
followupDetails[index].fstatus ?? "-",
followupDetails[index].ffeedback ?? "-",
];
return Container(
padding: EdgeInsets.symmetric(
vertical: 6,
horizontal: 0,
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Expanded(
child: Text(
textheads[j].toString(),
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
),
Expanded(
child: Text(
textSubheads[j],
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: Color(0xFF818181),
),
),
),
],
),
);
}),
],
),
);
},
),
SizedBox(height: 75),
],
),
),
),
),
floatingActionButton: Align(
alignment: Alignment.bottomCenter,
child: InkWell(
child: Container(
alignment: Alignment.bottomCenter,
height: 45,
width: MediaQuery.of(context).size.width,
margin: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
color: AppColors.app_blue,
borderRadius: BorderRadius.circular(14.0),
),
child: Center(
child: Text(
"Followup Details",
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontFamily: "JakartaMedium",
),
),
),
),
),
),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
),
);
},
);
}
}
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/crmProvider/crmLeadDetailsProvider.dart';
import 'package:generp/screens/crm/AppointmentDetails.dart';
import 'package:generp/screens/crm/FollowUpDetails.dart';
import 'package:generp/screens/crm/QuotationDetails.dart';
import 'package:generp/screens/crm/contactDetails.dart';
import 'package:generp/screens/crm/productDetails.dart';
import 'package:provider/provider.dart';
......@@ -35,7 +38,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
context,
listen: false,
);
provider.crmLeadDetailsAPI(context, widget.leadId, widget.mode);
provider.crmLeadDetailsAPIFunction(context, widget.leadId, widget.mode);
});
}
......@@ -227,8 +230,18 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
Navigator.push(context, MaterialPageRoute(builder: (context) => Productdetails(),));
break;
case 1:
Navigator.push(context, MaterialPageRoute(builder: (context) => Contactdetails(),));
Navigator.push(context, MaterialPageRoute(builder: (context) => Contactdetails(
accID:provider.leadDetails.accId
),));
break;
case 2:
Navigator.push(context, MaterialPageRoute(builder: (context) => FollowUpDetails(),));
break;
case 3:
Navigator.push(context, MaterialPageRoute(builder: (context) => AppointmentDetails(),));
break;
case 4:
Navigator.push(context, MaterialPageRoute(builder: (context) => QuotationDetails(),));
default:
print("object");
}
......
......@@ -13,6 +13,7 @@ import 'package:provider/provider.dart';
import '../../Utils/app_colors.dart';
import '../../Utils/commonWidgets.dart';
import '../../Utils/dropdownTheme.dart';
import '../commonDateRangeFilter.dart';
class Leadlistbymode extends StatefulWidget {
......@@ -26,6 +27,7 @@ class Leadlistbymode extends StatefulWidget {
}
class _LeadlistbymodeState extends State<Leadlistbymode> {
Dropdowntheme ddtheme = Dropdowntheme();
@override
void initState() {
// TODO: implement initState
......@@ -49,41 +51,7 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
);
});
}
final buttonStyleData = ButtonStyleData(
height: 50,
width: 160,
padding: const EdgeInsets.only(left: 14, right: 14),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
);
final iconStyleData = IconStyleData(
icon: SvgPicture.asset(
"assets/svg/arrow_dropdown.svg",
height: 25,
width: 20,
),
iconSize: 12,
iconEnabledColor: Color(0xFF2D2D2D),
iconDisabledColor: Colors.grey,
);
final dropdownStyleData = DropdownStyleData(
maxHeight: 200,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColors.text_field_color,
),
scrollbarTheme: ScrollbarThemeData(
radius: const Radius.circular(15),
thickness: MaterialStateProperty.all<double>(6),
thumbVisibility: MaterialStateProperty.all<bool>(true),
),
);
final menuItemStyleData = const MenuItemStyleData(
height: 40,
padding: EdgeInsets.only(left: 14, right: 14),
);
@override
Widget build(BuildContext context) {
......@@ -419,10 +387,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
}
},
isExpanded: true,
buttonStyleData: buttonStyleData,
iconStyleData: iconStyleData,
menuItemStyleData: menuItemStyleData,
dropdownStyleData: dropdownStyleData,
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......@@ -461,10 +429,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
}
},
isExpanded: true,
buttonStyleData: buttonStyleData,
iconStyleData: iconStyleData,
menuItemStyleData: menuItemStyleData,
dropdownStyleData: dropdownStyleData,
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......@@ -503,10 +471,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
}
},
isExpanded: true,
buttonStyleData: buttonStyleData,
iconStyleData: iconStyleData,
menuItemStyleData: menuItemStyleData,
dropdownStyleData: dropdownStyleData,
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......@@ -569,10 +537,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
}
},
isExpanded: true,
buttonStyleData: buttonStyleData,
iconStyleData: iconStyleData,
menuItemStyleData: menuItemStyleData,
dropdownStyleData: dropdownStyleData,
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......@@ -616,10 +584,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
}
},
isExpanded: true,
buttonStyleData: buttonStyleData,
iconStyleData: iconStyleData,
menuItemStyleData: menuItemStyleData,
dropdownStyleData: dropdownStyleData,
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......@@ -664,10 +632,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
}
},
isExpanded: true,
buttonStyleData: buttonStyleData,
iconStyleData: iconStyleData,
menuItemStyleData: menuItemStyleData,
dropdownStyleData: dropdownStyleData,
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......@@ -711,10 +679,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
}
},
isExpanded: true,
buttonStyleData: buttonStyleData,
iconStyleData: iconStyleData,
menuItemStyleData: menuItemStyleData,
dropdownStyleData: dropdownStyleData,
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......@@ -765,10 +733,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
}
},
isExpanded: true,
buttonStyleData: buttonStyleData,
iconStyleData: iconStyleData,
menuItemStyleData: menuItemStyleData,
dropdownStyleData: dropdownStyleData,
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......@@ -822,10 +790,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
}
},
isExpanded: true,
buttonStyleData: buttonStyleData,
iconStyleData: iconStyleData,
menuItemStyleData: menuItemStyleData,
dropdownStyleData: dropdownStyleData,
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......@@ -869,10 +837,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
}
},
isExpanded: true,
buttonStyleData: buttonStyleData,
iconStyleData: iconStyleData,
menuItemStyleData: menuItemStyleData,
dropdownStyleData: dropdownStyleData,
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
......
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../Notifiers/crmProvider/crmLeadDetailsProvider.dart';
import '../../Utils/app_colors.dart';
import '../../Utils/commonWidgets.dart';
class QuotationDetails extends StatefulWidget {
const QuotationDetails({super.key});
@override
State<QuotationDetails> createState() => _QuotationDetailsState();
}
class _QuotationDetailsState extends State<QuotationDetails> {
@override
Widget build(BuildContext context) {
return Consumer<crmLeadDetailsProvider>(
builder: (context, provider, child) {
var quotationDetails = provider.quotationsDetails;
return WillPopScope(
onWillPop: () => onBackPressed(context),
child: Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar(context, "Quotation Details"),
backgroundColor: AppColors.scaffold_bg_color,
body: SafeArea(
child: SizedBox(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget(context, "Quotation Details"),
ListView.builder(
itemCount: quotationDetails.length,
shrinkWrap: true,
itemBuilder: (context, index) {
return Container(
margin: EdgeInsets.symmetric(
horizontal: 10,
vertical: 5,
),
padding: EdgeInsets.symmetric(
horizontal: 15,
vertical: 10,
),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
...List.generate(5, (j) {
final textheads = [
"Id",
"Employee Name",
"Quotation",
"Info",
"Date"
];
final textSubheads = [
quotationDetails[index].id ?? "-",
quotationDetails[index].employee ?? "-",
"View File",
// quotationDetails[index].finTime ?? "-",
quotationDetails[index].info ?? "-",
quotationDetails[index].date ?? "-",
];
return Container(
padding: EdgeInsets.symmetric(
vertical: 6,
horizontal: 0,
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Expanded(
child: Text(
textheads[j].toString(),
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
),
Expanded(
child: Text(
textSubheads[j],
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: textSubheads[j]=="View File"?AppColors.app_blue:
Color(0xFF818181),
decoration:textSubheads[j]=="View File"? TextDecoration.underline:TextDecoration.none,
decorationColor: AppColors.app_blue
),
),
),
],
),
);
}),
],
),
);
},
),
SizedBox(height: 75),
],
),
),
),
),
floatingActionButton: Align(
alignment: Alignment.bottomCenter,
child: InkWell(
child: Container(
alignment: Alignment.bottomCenter,
height: 45,
width: MediaQuery
.of(context)
.size
.width,
margin: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
color: AppColors.app_blue,
borderRadius: BorderRadius.circular(14.0),
),
child: Center(
child: Text(
"Followup Details",
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontFamily: "JakartaMedium",
),
),
),
),
),
),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
),
);
},
);
}
}
This diff is collapsed.
......@@ -30,7 +30,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
builder: (context, provider, child) {
final gridPages =
provider.accessPages
.where((page) => ![8, 9, 23, 24].contains(page.id))
.where((page) => ![8, 9, 23, 24,51,50].contains(page.id))
.toList();
return WillPopScope(
......
......@@ -46,7 +46,7 @@ class _AllpaymentrequesitionlistsbymodesState
);
final dateRange = cf.getFormattedDateRange(range);
// print(dateRange);
provider.paymentRequestionListsAPIFunction(context, widget.mode, dateRange[0], dateRange[1]);
provider.paymentRequestionListsAPIFunction(context, widget.mode, "","");
});
}
......@@ -244,6 +244,10 @@ class _AllpaymentrequesitionlistsbymodesState
requestLists[index].date,
requestLists[index].description,
];
if(j==1&&requestLists[index]
.attachmentViewFileName==""){
return SizedBox.shrink();
}
return Container(
padding: EdgeInsets.symmetric(
vertical: 5,
......
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