Commit 7959ada6 authored by Sai Srinivas's avatar Sai Srinivas
Browse files

01-08-2025 By Sai Srinivas

Finance Module and CRM issues
parent 14d01f4d
......@@ -883,7 +883,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
Expanded(
flex: 4,
child: Text(
"Find Nearby Generators",
"Find Nearby Leads",
style: TextStyle(
fontSize: 14,
color: AppColors.app_blue,
......@@ -1108,10 +1108,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
floatingActionButton:(provider.accessPages
.where((page) => [8, 9].contains(page.id))
.toList()
.contains([8, 9]))? InkResponse(
floatingActionButton:provider.accessPages.any((element) => [8,9].contains(element.id),)? InkResponse(
onTap: () async {
// if (provider.accessPages
// .where((page) => [8, 9].contains(page.id))
......
......@@ -14,7 +14,8 @@ import 'package:provider/provider.dart';
class Followupupdatescreen extends StatefulWidget {
final leadID;
final mode;
const Followupupdatescreen({super.key,required this.leadID, this.mode});
final from;
const Followupupdatescreen({super.key,required this.leadID, this.mode, this.from});
@override
State<Followupupdatescreen> createState() => _FollowupupdatescreenState();
......@@ -34,7 +35,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
setState(() => _source = event);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
final provider = Provider.of<followUpUpdateProvider>(context);
final provider = Provider.of<followUpUpdateProvider>(context,listen: false);
provider.getCurrentLocation(context);
});
}
......@@ -115,7 +116,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
child: Column(
children: [
Container(
padding: EdgeInsets.only(left: 10),
padding: EdgeInsets.only(left: 10,top: 10),
alignment: Alignment.topLeft,
child: Text(
"Follow up Details",
......@@ -520,6 +521,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
),
SizedBox(height: 25),
] else if(provider.nextAppointmentStatus ==
"Next Appointment")
...[
......@@ -692,7 +694,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
),
SizedBox(height: 25),
],
SizedBox(height: 150),
],
......@@ -705,6 +707,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
provider.submitLoading = true;
provider.crmAddFollowUpAPIFunction(
context,
widget.from,
provider.nextAppointmentStatus,
provider.selectOrderStatus,
widget.leadID,
......
......@@ -676,21 +676,11 @@ class _GeneratequotationscreenState extends State<Generatequotationscreen> {
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children:provider.buttonsLoading?[
CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(AppColors.app_blue),
),
SizedBox(width:25),
SvgPicture.asset("assets/svg/crm/vertical_line_ic.svg"),
SizedBox(width:25),
CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(AppColors.app_blue),
),
SizedBox(width:25),
SvgPicture.asset("assets/svg/crm/vertical_line_ic.svg"),
SizedBox(width:25),
CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(AppColors.app_blue),
)
]: [
Expanded(
child: InkResponse(
......
......@@ -282,6 +282,7 @@ class _PendingtasksdetailsState extends State<Pendingtasksdetails> {
context,
MaterialPageRoute(builder: (context) => Followupupdatescreen(
leadID: task.leadid,
from:"Pending Tasks"
)),
);
},
......
......@@ -121,13 +121,13 @@ class _AllpaymentrequesitionlistsbymodesState
case 'Requested':
return "R";
case 'Level 1 Approved':
return "A";
return "L1A";
case 'Level 1 Rejected':
return "R";
return "L1R";
case 'Level 2 Approved':
return "A";
return "L2A";
case 'Level 2 Rejected':
return "R";
return "L2R";
case 'Processed':
return "P";
case 'Payment Rejected':
......@@ -137,6 +137,28 @@ class _AllpaymentrequesitionlistsbymodesState
return text;
}
double getSize(value){
var text = "A";
switch (value){
case 'Requested':
return 18.0;
case 'Level 1 Approved':
return 14.0;
case 'Level 1 Rejected':
return 14.0;
case 'Level 2 Approved':
return 14.0;
case 'Level 2 Rejected':
return 14.0;
case 'Processed':
return 18.0;
case 'Payment Rejected':
return 18.0;
}
return 18.0;
}
@override
void dispose() {
// TODO: implement dispose
......@@ -315,7 +337,7 @@ class _AllpaymentrequesitionlistsbymodesState
getText(requestLists[index].status),
style: TextStyle(
color: getTextColor(requestLists[index].status),
fontSize: 18,
fontSize: getSize(requestLists[index].status),
fontFamily: "JakartaBold"
),
),
......
......@@ -79,8 +79,8 @@ class _FileviewerState extends State<Fileviewer> {
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar(context, "File Viewer"),
body: SafeArea(child: fileWidget(context)),
appBar: appbarNew(context, "File Viewer",0xFFFFFFFF),
body: SafeArea(child: Center(child: fileWidget(context))),
);
}
......
......@@ -90,20 +90,23 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
builder: (context, provider, child) {
return Scaffold(
resizeToAvoidBottomInset: true,
backgroundColor: AppColors.white,
appBar: appbar2(
backgroundColor: AppColors.scaffold_bg_color,
appBar: appbar2New(
context,
"${widget.pageTitleName}",
provider.resetForm,
SizedBox(width: 0),
SizedBox.shrink(),
0xFFFFFFFF
),
body: Container(
body: Scrollbar(
thumbVisibility: false,
child: SingleChildScrollView(
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
color: Colors.white,
color: AppColors.white,
borderRadius: BorderRadius.circular(20),
),
child: SingleChildScrollView(
),margin: EdgeInsets.only(top: 10,left: 10,right: 10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
......@@ -583,6 +586,8 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
flex: 5,
child: Text(
"${provider.imagePath}",
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: AppColors.semi_black,
fontSize: 11,
......@@ -614,6 +619,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
),
),
),
),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
bottomNavigationBar: InkResponse(
......@@ -630,7 +636,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
child: Container(
height: 45,
alignment: Alignment.center,
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 0),
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 10),
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
decoration: BoxDecoration(
color: AppColors.app_blue,
......
......@@ -95,15 +95,18 @@ class _DirectpaymentrequesitionlistState
builder: (context, provider, child) {
return Scaffold(
resizeToAvoidBottomInset: true,
backgroundColor: AppColors.white,
appBar: appbar(context, "${widget.pageTitleName}"),
body: Container(
backgroundColor: AppColors.scaffold_bg_color,
appBar: appbarNew(context, "${widget.pageTitleName}",0xFFFFFFFF),
body: Scrollbar(
thumbVisibility: false,
child: SingleChildScrollView(
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10),
margin: EdgeInsets.only(top: 10,left: 10,right: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
......@@ -584,6 +587,8 @@ class _DirectpaymentrequesitionlistState
flex: 4,
child: Text(
"${provider.imagePath}",
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: AppColors.semi_black,
fontSize: 11,
......@@ -610,10 +615,12 @@ class _DirectpaymentrequesitionlistState
),
),
],
SizedBox(height: 20,)
],
),
),
),
),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
bottomNavigationBar: InkResponse(
......
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:dotted_line/dotted_line.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:generp/Utils/app_colors.dart';
......@@ -9,6 +10,7 @@ import 'package:provider/provider.dart';
import '../../Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart';
import '../../Utils/commonServices.dart';
import '../commom/accountsListDetails.dart';
import 'FileViewer.dart';
class Paymentdetailspaymentrequisition extends StatefulWidget {
......@@ -45,6 +47,7 @@ class _PaymentdetailspaymentrequisitionState
listen: false,
);
provider.paymentsListDetailsAPI(context, widget.paymentRequestId);
provider.showMoreDetails = false;
});
}
......@@ -83,6 +86,388 @@ class _PaymentdetailspaymentrequisitionState
}
Widget _scaffold(BuildContext context) {
return Consumer<Paymentrequisitionpaymentslistprovider>(
builder: (context, provider, child) {
var payment_det = provider.paymentDetails;
final headings1 = ["From Account", "Created Employee"];
final subHeadings1 = [
payment_det.paymentAccountName ?? "-",
payment_det.paymentEmployeeName ?? "-",
];
final headings2 = [
"Bank Name",
"Account Holder Name",
"Account Number",
"Branch",
"IFSC",
"UPI ID",
];
final subHeadings2 = [
payment_det.bankName ?? "-",
payment_det.bankAccountHolderName ?? "-",
payment_det.bankAccountNumber ?? "-",
payment_det.bankBranchName ?? "-",
payment_det.bankIfscCode ?? "-",
payment_det.bankUpiId ?? "-",
];
final headings3 = [
"Payment Mode",
"Payment Reference",
"Attachment",
"Payment Date",
];
final subHeadings3 = [
payment_det.mode ?? "-",
payment_det.paymentReferenceNumber ?? "-",
"View",
payment_det.paymentDate ?? "-",
];
final sections = [
{
"title": "Account Details",
"headings": headings1,
"subHeadings": subHeadings1,
},
if (provider.showMoreDetails) ...[
{
"title": "Bank Details",
"headings": headings2,
"subHeadings": subHeadings2,
},
{
"title": "Payment Details",
"headings": headings3,
"subHeadings": subHeadings3,
},
],
];
var clickable = sections.any(
(element) => [
"From Account",
"Created Employee",
"Attachment",
].contains(element["headings"]),
);
return Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar(context, widget.pageName),
backgroundColor: AppColors.scaffold_bg_color,
body: SizedBox(
child: SingleChildScrollView(
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16),
),
margin: EdgeInsets.symmetric(vertical: 10, horizontal: 10),
padding: EdgeInsets.symmetric(vertical: 10, horizontal: 10),
child: Column(
children: [
Row(
children: [
Expanded(
flex: 1,
child: Container(
height: 45,
width: 45,
padding: EdgeInsets.all(7.5),
decoration: BoxDecoration(
color: Color(0xFFE6F6FF),
shape: BoxShape.circle,
// borderRadius: BorderRadius.circular(8),
),
child: SvgPicture.asset("assets/svg/fin_ic.svg"),
),
),
SizedBox(width: 10),
Expanded(
flex: 4,
child: SizedBox(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
InkResponse(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Accountslistdetails(
accountID: payment_det.accountId,
),
),
);
},
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 6,
),
child: Text(
payment_det.accountName ?? "-",
style: TextStyle(
decoration: TextDecoration.underline,
decorationColor: AppColors.grey_thick,
decorationStyle:
TextDecorationStyle.dotted,
height: 1.5,
fontFamily: "JakartaRegular",
fontSize: 14,
color: AppColors.semi_black,
),
),
),
),
Text(
"₹${payment_det.amount}",
style: TextStyle(
fontFamily: "JakartaRegular",
fontSize: 14,
color: AppColors.grey_semi,
),
),
],
),
),
),
Expanded(
flex: 2,
child: Container(
padding: EdgeInsets.symmetric(
horizontal: 5,
vertical: 10,
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: Color(0xFFE3FFE0),
),
child: Center(
child: Text(
payment_det.refType ?? "-",
textAlign: TextAlign.center,
style: TextStyle(
fontFamily: "JakartaMedium",
fontSize: 14,
color: Color(0xFF0D9C00),
),
),
),
),
),
],
),
SizedBox(height: 10),
Column(
children: List.generate(sections.length, (sectionIndex) {
final section = sections[sectionIndex];
final title = section["title"] as String;
final headings = section["headings"] as List<String>;
final subHeadings =
section["subHeadings"] as List<String>;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
padding: EdgeInsets.symmetric(vertical: 4),
child: Row(
children: [
Expanded(
flex: 3,
child: Text(
title,
style: TextStyle(
fontSize: 14,
fontFamily: "JakartaSemiBold",
),
),
),
Expanded(
flex: 6,
child: DottedLine(
dashGapLength: 4,
dashGapColor: Colors.white,
dashColor: AppColors.grey_semi,
dashLength: 2,
lineThickness: 0.5,
),
),
],
),
),
Column(
children: List.generate(headings.length, (j) {
return Container(
padding: EdgeInsets.symmetric(vertical: 7),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Expanded(
child: Text(
headings[j],
style: TextStyle(
fontFamily: "JakartaRegular",
fontSize: 14,
color: AppColors.semi_black,
),
),
),
Expanded(
child: InkResponse(
onTap: [
"Attachment",
"From Account",
"Created Employee",
].contains(headings[j]) ? () {
switch(headings[j]){
case "Attachment":
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Fileviewer(
fileName:
payment_det
.attachmentViewFileName!,
fileUrl:
payment_det
.attachmentDirFilePath!,
),
),
);
break;
case "From Account":
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Accountslistdetails(
accountID: payment_det.paymentAccountId,
),
),
);
break;
case "Created Employee":
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Accountslistdetails(
accountID: payment_det.createdEmployeeId,
),
),
);
break;
}
} : null,
child: Padding(
padding: EdgeInsets.only(
top: 2.5,
bottom: 2.5,
),
child: Text(
subHeadings[j].isEmpty
? "-"
: subHeadings[j],
style: TextStyle(
decoration:
[
"Attachment",
"From Account",
"Created Employee",
].contains(headings[j])
? TextDecoration
.underline
: TextDecoration.none,
decorationStyle:
[
"From Account",
"Created Employee",
].contains(headings[j])
? TextDecorationStyle
.dotted
: subHeadings[j] ==
"View"
? TextDecorationStyle
.solid
: TextDecorationStyle
.solid,
decorationColor: [
"From Account",
"Created Employee",
].contains(headings[j])
? AppColors.grey_thick
: subHeadings[j] ==
"View"
? AppColors.app_blue
: AppColors.app_blue,
fontSize: 14,
color:
subHeadings[j] == "View"
? AppColors.app_blue
: Color(0xFF818181),
),
),
),
),
),
],
),
);
}),
),
],
);
}),
),
InkResponse(
onTap: () async {
provider.showMoreDetails = !provider.showMoreDetails;
},
child: Container(
padding: EdgeInsets.symmetric(vertical: 5),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
provider.showMoreDetails
? "Hide Details"
: "View Details",
style: TextStyle(
fontFamily: "JakartaMedium",
fontSize: 14,
color: AppColors.app_blue,
),
),
Transform.flip(
flipY: provider.showMoreDetails ? true : false,
child: SvgPicture.asset(
"assets/svg/arrow_dropdown.svg",
height: 25,
width: 20,
color: AppColors.app_blue,
),
),
],
),
),
),
],
),
),
),
),
);
},
);
}
Widget _scaffold1(BuildContext context) {
return Consumer<Paymentrequisitionpaymentslistprovider>(
builder: (context, provider, child) {
var payment_det = provider.paymentDetails;
......
......@@ -175,15 +175,17 @@ class _SubmitpaymentrequestionlistsbymodeState
builder: (context, provider, child) {
return Scaffold(
resizeToAvoidBottomInset: true,
backgroundColor: AppColors.white,
appBar: appbar2(
backgroundColor: AppColors.scaffold_bg_color,
appBar: appbar2New(
context,
"${widget.pageTitleName}",
provider.resetForm,
SizedBox(width: 0),
0xFFFFFFFF
),
body: Container(
padding: EdgeInsets.symmetric(horizontal: 10),
margin: EdgeInsets.only(top: 10,left: 10,right: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
......@@ -607,6 +609,8 @@ class _SubmitpaymentrequestionlistsbymodeState
flex: 4,
child: Text(
"${provider.imagePath}",
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: AppColors.semi_black,
fontSize: 11,
......
......@@ -354,13 +354,7 @@ class _SplashState extends State<Splash> {
default:
connection = 'Offline';
}
if (connection == 'Online') {
print("camer here");
Provider.of<SplashVersionNotifier>(
context,
listen: false,
).handleVersionCheck(context);
}
return (connection == 'Online')
? SafeArea(
top: false,
......
......@@ -17,6 +17,7 @@ import 'package:generp/Models/crmModels/ProspectListViewResponse.dart';
import 'package:generp/Models/crmModels/SubmitLeadListFilterResponse.dart';
import 'package:generp/Models/crmModels/crmDownloadGenQuoteResponse.dart';
import 'package:generp/Models/crmModels/crmLeadDetailsGenerateQuotationSubmitResponse.dart';
import 'package:generp/Models/crmModels/crmNewLeadsProspectsSubmitResponse.dart';
import 'package:generp/Models/crmModels/crmNewLeadsProspectsViewResponse.dart';
import 'package:generp/Models/crmModels/crmProspectDetailsAddFollowUpAppointmentResponse.dart';
import 'package:generp/Models/crmModels/crmProspectDetailsAddLeadsResponse.dart';
......@@ -3345,7 +3346,7 @@ class ApiCalling {
}
}
static Future<CommonResponse?> crmNewLeadsProspectsSubmitAPI(
static Future<crmNewLeadsProspectsSubmitResponse?> crmNewLeadsProspectsSubmitAPI(
session_id,
emp_id,
mode,
......@@ -3398,7 +3399,7 @@ class ApiCalling {
if (res != null) {
print(data);
debugPrint("Submit New Leads ${res.body}");
return CommonResponse.fromJson(jsonDecode(res.body));
return crmNewLeadsProspectsSubmitResponse.fromJson(jsonDecode(res.body));
} else {
debugPrint("Null Response");
return null;
......
......@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.95+99
version: 1.0.95+101
environment:
sdk: ^3.7.2
......
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