Commit 2ccf19cc authored by Sai Srinivas's avatar Sai Srinivas
Browse files

04-07-2025 By Sai Srinivas

Test cases and Order Module, Crm Module.
parent 4b790bef
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:generp/Models/crmModels/crmDashboardResponse.dart';
import 'package:provider/provider.dart';
import '../../Models/crmModels/AccessiblePagesResponse.dart';
import '../../Models/crmModels/crmPendingTasksResponse.dart';
import '../../Models/crmModels/crmUniversalSearchResponse.dart';
import '../../services/api_calling.dart';
import '../HomeScreenNotifier.dart';
class Crmdashboardprovider extends ChangeNotifier{
TextEditingController searchController = TextEditingController();
List<PagesAccessible> _accessPages = [];
List<PagesAccessible> get accessPages => _accessPages;
List<PendingTasks> _pendingTasks = [];
List<PendingTasks> get pendingTasksLists => _pendingTasks;
List<Accounts> _accountsList = [];
List<Leads> _leadsList = [];
List<Enquires> _enquiresList = [];
Future<void> accessPagesAPIFunction(context) async {
List<Accounts> get accountsList => _accountsList;
List<Leads> get leadsList => _leadsList;
List<Enquires> get enquiresList => _enquiresList;
Hotleads _hotleads = Hotleads();
Hotleads get hotleads => _hotleads;
Hotleads _coldleads = Hotleads();
Hotleads get coldleads => _coldleads;
Hotleads _warmleads = Hotleads();
Hotleads get warmleads => _warmleads;
Hotleads _totalleads = Hotleads();
Hotleads get totalleads => _totalleads;
Hotleads _orderlost = Hotleads();
Hotleads get orderlost => _orderlost;
Hotleads _norequirement = Hotleads();
Hotleads get norequirement => _norequirement;
Hotleads _openEnquiries = Hotleads();
Hotleads get openEnquiries => _openEnquiries;
List<Hotleads> _allLeads = [];
List<Hotleads> get allLeads => _allLeads;
Future<void>accessPagesAPIFunction(context) async {
try{
var HomeProv = Provider.of<HomescreenNotifier>(context,listen: false);
final data = await ApiCalling.crmAccessiblePagesAPI(HomeProv.empId, HomeProv.session);
......@@ -26,4 +58,72 @@ class Crmdashboardprovider extends ChangeNotifier{
}
}
Future<void> crmDashboardAPIFunction(context, mode,
from,to,teamemployee) async {
try{
var HomeProv = Provider.of<HomescreenNotifier>(context,listen: false);
final data = await ApiCalling.crmDashboardAPI(HomeProv.empId, HomeProv.session, mode,
from,to,teamemployee);
if(data!=null){
if(data.error=="0"){
_hotleads = data.hotleads!;
_coldleads = data.coldleads!;
_warmleads = data.warmleads!;
_totalleads = data.totalleads!;
_orderlost = data.orderlost!;
_norequirement = data.norequirement!;
_openEnquiries = data.openEnquiries!;
_allLeads = [
_hotleads,
_coldleads,
_warmleads,
_totalleads,
_orderlost,
_norequirement,
_openEnquiries,
];
notifyListeners();
}
}
}catch (e,s){
}
}
Future<void> crmPendingTasksAPIFunction(context) async {
try{
var HomeProv = Provider.of<HomescreenNotifier>(context,listen: false);
final data = await ApiCalling.crmPendingTasksAPI(HomeProv.empId, HomeProv.session);
if(data!=null){
if(data.error=="0"){
_pendingTasks = data.pendingTasks!;
notifyListeners();
}
}
}catch (e,s){
}
}
Future<void> crmUniversalSearchFunction(context) async {
try{
var HomeProv = Provider.of<HomescreenNotifier>(context,listen: false);
final data = await ApiCalling.crmUniversalSearchAPI(HomeProv.empId, HomeProv.session,searchController.text);
if(data!=null){
if(data.error=="0"){
_accountsList = data.accounts??[];
_leadsList = data.leads??[];
_enquiresList = data.enquires??[];
notifyListeners();
}
}
}catch (e,s){
}
}
}
\ No newline at end of file
......@@ -238,12 +238,14 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
if(quotation_type=="genquotedown"){
String suggestedFilename = getUniqueFilename('quotation', 'pdf');
String contentDisposition = 'attachment; filename="$suggestedFilename"';
openWhatsApp(data.quoteFilepath!);
// openWhatsApp(data.quoteFilepath!);
_handleDownload(context,data.quoteFilepath!,contentDisposition,'application/octet-stream','');
}
else if(quotation_type=="genquotewhatsappbymynum"){
openWhatsApp(data.quoteFilepath!);
}
Navigator.pop(context,true);
toast(context, data.message);
resetForm();
notifyListeners();
} else {}
......@@ -291,6 +293,8 @@ class Crmgeneratequotationprovider extends ChangeNotifier {
'mimeType': mimeType,
'suggestedFilename': suggestedFilename,
});
await launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication);
} else if (Platform.isIOS) {
_handleIOSDownload(context,url, suggestedFilename);
}
......
......@@ -4,12 +4,14 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import '../../Models/crmModels/LeadDetailsResponse.dart';
import '../../Utils/app_colors.dart';
import '../../services/api_calling.dart';
import '../HomeScreenNotifier.dart';
class crmLeadDetailsProvider extends ChangeNotifier {
bool _isLoading = false;
bool _showMoreDetails = false;
TextEditingController nameController = TextEditingController();
TextEditingController designationController = TextEditingController();
......@@ -77,6 +79,7 @@ class crmLeadDetailsProvider extends ChangeNotifier {
String? get dateError => _dateError;
bool get isLoading => _isLoading;
bool get showMoreDetails => _showMoreDetails;
List<String> get visitTypes => _visitTypes;
String? get selectedVisitType => _selectedVisitType;
......@@ -94,9 +97,9 @@ class crmLeadDetailsProvider extends ChangeNotifier {
List<QuotationsDetails> get quotationsDetails => _quotationsDetails;
List<String> get Headings => _headings;
List<String> get subHeadings => _subHeadings;
// List<String> get Headings => _headings;
//
// List<String> get subHeadings => _subHeadings;
String? get formattedDate => _formattedDate;
......@@ -167,6 +170,11 @@ class crmLeadDetailsProvider extends ChangeNotifier {
notifyListeners();
}
set showMoreDetails(bool value){
_showMoreDetails = value;
notifyListeners();
}
set formattedDate(String? value) {
_formattedDate = value;
dateController.text = _formattedDate!;
......@@ -206,34 +214,7 @@ class crmLeadDetailsProvider extends ChangeNotifier {
_followupDetails = data.followupDetails!;
_appointmentDetails = data.appointmentDetails!;
_quotationsDetails = data.quotationsDetails!;
_headings = [
"Address",
"Account Manager Name",
"Account Created By",
"State",
"District",
"Sub Locality",
"Source",
"Reference",
"Team",
"Segment",
"Lead Status",
"Lead Age",
];
_subHeadings = [
data.leadDetails!.address??"-",
data.accountDetails!.accManager??"-",
data.accountDetails!.owner??"-",
data.accountDetails!.state??"-",
data.accountDetails!.district??"-",
data.accountDetails!.subLocality??"-",
data.accountDetails!.source??"-",
data.accountDetails!.reference??"-",
data.accountDetails!.team??"-",
data.accountDetails!.segment??"-",
data.leadDetails!.status??"-",
"${data.leadDetails!.lage??"-"} days",
];
_visitTypes = ["Phone","Visit"];
_isLoading = false;
notifyListeners();
......@@ -358,7 +339,7 @@ class crmLeadDetailsProvider extends ChangeNotifier {
CupertinoButton(
child: Text(
'Cancel',
style: TextStyle(fontFamily: "JakartaMedium"),
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue),
),
onPressed: () {
Navigator.pop(context);
......@@ -367,7 +348,7 @@ class crmLeadDetailsProvider extends ChangeNotifier {
CupertinoButton(
child: Text(
'Done',
style: TextStyle(fontFamily: "JakartaMedium"),
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue),
),
onPressed: () {
Navigator.pop(context);
......@@ -380,6 +361,7 @@ class crmLeadDetailsProvider extends ChangeNotifier {
Expanded(
flex: 3,
child: CupertinoDatePicker(
dateOrder: DatePickerDateOrder.dmy,
initialDateTime: _date ?? DateTime.now(),
mode: CupertinoDatePickerMode.date,
use24hFormat: true,
......
......@@ -155,6 +155,7 @@ class crmNearbyOpenLeadsProvider extends ChangeNotifier {
provider.empId,
provider.session,
_latlongs,
_currentValue
);
if (data != null) {
......
......@@ -3,6 +3,7 @@ import 'package:flutter/foundation.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import '../../Models/crmModels/crmProspectDetailsResponse.dart';
import '../../Utils/app_colors.dart';
import '../../Utils/commonServices.dart';
import '../../services/api_calling.dart';
import '../HomeScreenNotifier.dart';
......@@ -315,7 +316,7 @@ class crmProspectDetailsProvider extends ChangeNotifier {
CupertinoButton(
child: Text(
'Cancel',
style: TextStyle(fontFamily: "JakartaMedium"),
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue),
),
onPressed: () {
Navigator.pop(context);
......@@ -324,7 +325,7 @@ class crmProspectDetailsProvider extends ChangeNotifier {
CupertinoButton(
child: Text(
'Done',
style: TextStyle(fontFamily: "JakartaMedium"),
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue),
),
onPressed: () {
Navigator.pop(context);
......@@ -337,6 +338,7 @@ class crmProspectDetailsProvider extends ChangeNotifier {
Expanded(
flex: 3,
child: CupertinoDatePicker(
dateOrder: DatePickerDateOrder.dmy,
initialDateTime: _date ?? DateTime.now(),
mode: CupertinoDatePickerMode.date,
use24hFormat: true,
......
......@@ -14,6 +14,7 @@ import 'approveRejectPaymentRequestResponse.dart';
class Requesitionlidtdetailsprovider extends ChangeNotifier {
TextEditingController requestedAmount = TextEditingController();
TextEditingController approvedAmountReadonly = TextEditingController();
TextEditingController proposedPaymentAccount = TextEditingController();
TextEditingController approvedAmount = TextEditingController();
TextEditingController accountName = TextEditingController();
......@@ -30,7 +31,7 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier {
TextEditingController bankHolderName = TextEditingController();
TextEditingController paymentAccountSearchController =
TextEditingController();
String? proposedAmountError;
PaymentDetails _paymentDetails = PaymentDetails();
RequestDetails _requestDetails = RequestDetails();
PaymentRequestDetails _paymentRequestDetails = PaymentRequestDetails();
......@@ -279,6 +280,7 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier {
print("here 212ssass1");
requestedAmount.text = _requestDetails.requestedAmount ?? "-";
proposedPaymentAccount.text = _requestDetails.proposedAccount ?? "-";
approvedAmountReadonly.text = _requestDetails.formattedAmount ?? "-";
approvedAmount.text = _requestDetails.amount ?? "-";
accountName.text = _requestDetails.accountName ?? "-";
branch.text = _requestDetails.branch ?? "-";
......@@ -320,6 +322,10 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier {
payment_request_id,
approve_remarks,) async {
try {
if(approve_remarks.toString().trim().isEmpty) {
toast(context,"Enter Remarks");
return;
}
var provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.RejectPaymentRequestSubmitAPI(
provider.empId,
......@@ -371,6 +377,7 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier {
Future<void> paymentrequisitionProcessSubmitAPIFunction(context,
mode,
reference_num,
payment_amount,
payment_request_id,
payment_account_id,
processing_remarks,
......@@ -382,6 +389,7 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier {
provider.session,
mode,
reference_num,
payment_amount,
payment_request_id,
payment_account_id,
processing_remarks,
......@@ -401,6 +409,7 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier {
resetAll() {
requestedAmount.clear();
proposedPaymentAccount.clear();
approvedAmountReadonly.clear();
approvedAmount.clear();
accountName.clear();
branch.clear();
......@@ -418,6 +427,7 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier {
_selectedPaymentAccounts = null;
_selectedValue = "";
_selectedID = null;
proposedAmountError = null;
checkDropDownReset();
notifyListeners();
......
......@@ -28,6 +28,7 @@ import 'package:pdf/widgets.dart' as pw;
import 'package:printing/printing.dart';
import '../../Models/financeModels/paymentRequestionBankDetailsResponse.dart';
import '../../Utils/app_colors.dart';
class Requestionlistprovider extends ChangeNotifier {
TextEditingController reqPurposeController = TextEditingController();
......@@ -49,6 +50,7 @@ class Requestionlistprovider extends ChangeNotifier {
String? _formattedDate;
List<Accounts> _accounts = [];
List<PaymentModes> _paymentModes = [];
List<Employees> _approvalEmployee = [];
List<String> _requestingPurposes = [];
List<RequistionList> _requisitionList = [];
......@@ -58,6 +60,10 @@ class Requestionlistprovider extends ChangeNotifier {
List<DirectPaymentModes> _directPaymentModes = [];
Employees? _selectedApprovalEmployee;
String? _selectedApprovalEmployeeID;
String? _selectedApprovalEmployeeValue;
DirectAccounts? _selectedDirectAccounts;
DirectPaymentAccounts? _selectDirectPaymentAccounts;
......@@ -73,6 +79,16 @@ class Requestionlistprovider extends ChangeNotifier {
String _directPaymentModesID = "";
String _directPaymentModesValues = "";
List<Employees> get approvalEmployee => _approvalEmployee;
Employees? get selectedApprovalEmployee => _selectedApprovalEmployee;
String? get selectedApprovalEmployeeID => _selectedApprovalEmployeeID;
String? get selectedApprovalEmployeeValue => _selectedApprovalEmployeeValue;
List<DirectAccounts> get directAccounts => _directAccounts;
List<DirectPaymentAccounts> get directPaymentAccounts =>
......@@ -104,6 +120,22 @@ class Requestionlistprovider extends ChangeNotifier {
// Date picker methods
String? get formattedDate => _formattedDate;
set selectedApprovalEmployee(Employees? value){
_selectedApprovalEmployee = value;
_selectedApprovalEmployeeID = value!.id!;
_selectedApprovalEmployeeValue = value!.name!;
notifyListeners();
}
set selectedApprovalEmployeeValue(String? value){
_selectedApprovalEmployeeValue = value;
notifyListeners();
}
set selectedApprovalEmployeeID(String? value){
_selectedApprovalEmployeeID = value;
notifyListeners();
}
set formattedDate(String? value) {
_formattedDate = value;
dateController.text = _formattedDate!;
......@@ -180,6 +212,7 @@ class Requestionlistprovider extends ChangeNotifier {
String _paymentModeId = "";
String _paymentModeValue = "";
String _accountId = "";
String _accountValue = "";
String _reqPurpose = "";
String? selectAccountError;
......@@ -226,6 +259,7 @@ class Requestionlistprovider extends ChangeNotifier {
get imagePicked => _image_picked;
String get accountId => _accountId;
String get accountValue => _accountValue;
String get reqPurpose => _reqPurpose;
......@@ -266,8 +300,10 @@ class Requestionlistprovider extends ChangeNotifier {
}
set selectedAccount(Accounts? value) {
_selectedAccounts = value;
_accountId = value!.id!;
selectAccountError = null;
_accountId = value!.id!;
_accountValue = value!.name!;
selectAccountError = null;
print("_accountId:$_accountId");
notifyListeners();
}
......@@ -302,6 +338,10 @@ class Requestionlistprovider extends ChangeNotifier {
_accountId = value;
notifyListeners();
}
set accountValue(String value) {
_accountValue = value;
notifyListeners();
}
set reqPurposeId(String value) {
_reqPurpose = value;
......@@ -364,20 +404,19 @@ class Requestionlistprovider extends ChangeNotifier {
_accounts.clear();
_paymentModes.clear();
_requestingPurposes.clear();
_approvalEmployee.clear();
notifyListeners();
if (data != null) {
if (data.error == "0") {
_accounts = data.accounts??[];
print("1234234");
if(mode=="self"&&data.accounts!.length==1){
print("1234234");
paymentRequestionBankDetailsAPIFunction(context, data.accounts!.first.id);
}
_approvalEmployee = data.employees??[];
_paymentModes = data.paymentModes??[];
_requestingPurposes = data.requestingPurposes??[];
print('here');
print(data.requestingPurposes);
print(_accounts);
_requestingPurposes = data.requestingPurposes??[];
notifyListeners();
checkDropdownselected();
......@@ -416,7 +455,7 @@ class Requestionlistprovider extends ChangeNotifier {
} catch (e, s) {}
}
Future<void> addPaymentRequestionSubmitAPI(context, mode) async {
Future<void> addPaymentRequestionSubmitAPI(context, mode,approvalEmployeeID) async {
try {
_submitClicked = true;
notifyListeners();
......@@ -447,6 +486,7 @@ class Requestionlistprovider extends ChangeNotifier {
bankAcHolderController.text,
bankUpiController.text,
_image,
approvalEmployeeID
);
if (data != null) {
if (data.error == "0") {
......@@ -606,7 +646,7 @@ class Requestionlistprovider extends ChangeNotifier {
CupertinoButton(
child: Text(
'Cancel',
style: TextStyle(fontFamily: "JakartaMedium"),
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue),
),
onPressed: () {
Navigator.pop(context);
......@@ -615,7 +655,7 @@ class Requestionlistprovider extends ChangeNotifier {
CupertinoButton(
child: Text(
'Done',
style: TextStyle(fontFamily: "JakartaMedium"),
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue),
),
onPressed: () {
Navigator.pop(context);
......@@ -628,10 +668,12 @@ class Requestionlistprovider extends ChangeNotifier {
Expanded(
flex: 3,
child: CupertinoDatePicker(
dateOrder: DatePickerDateOrder.dmy,
initialDateTime: _date ?? DateTime.now(),
mode: CupertinoDatePickerMode.date,
use24hFormat: true,
showDayOfWeek: true,
onDateTimeChanged: (DateTime newDate) {
setDate(newDate);
},
......@@ -910,6 +952,7 @@ class Requestionlistprovider extends ChangeNotifier {
_paymentModeId = "";
_paymentModeValue = "";
_accountId = "";
_accountValue = "";
_reqPurpose = "";
_image = null;
......@@ -966,6 +1009,7 @@ class Requestionlistprovider extends ChangeNotifier {
!_accounts.contains(_selectedAccounts)) {
_selectedAccounts = null;
_accountId = "";
_accountValue = "";
}
if (_selectedPayment != null &&
!_paymentModes.contains(_selectedPayment)) {
......@@ -1131,6 +1175,10 @@ class Requestionlistprovider extends ChangeNotifier {
}
if (_paymentModeValue == "UPI") {
if (bankAcHolderController.text.trim().isEmpty) {
bankHolderError = "Please enter account holder name";
isValid = false;
}
if (bankUpiController.text.trim().isEmpty) {
UPIError = "Please enter UPI ID";
isValid = false;
......
......@@ -8,6 +8,7 @@ import 'package:excel/excel.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:generp/Notifiers/HomeScreenNotifier.dart';
import 'package:generp/Utils/app_colors.dart';
import 'package:generp/services/api_calling.dart';
import 'package:image_picker/image_picker.dart';
import 'package:intl/intl.dart';
......@@ -931,7 +932,7 @@ class Paymentreceiptsprovider extends ChangeNotifier {
CupertinoButton(
child: Text(
'Cancel',
style: TextStyle(fontFamily: "JakartaMedium"),
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue),
),
onPressed: () {
Navigator.pop(context);
......@@ -940,7 +941,7 @@ class Paymentreceiptsprovider extends ChangeNotifier {
CupertinoButton(
child: Text(
'Done',
style: TextStyle(fontFamily: "JakartaMedium"),
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue),
),
onPressed: () {
Navigator.pop(context);
......@@ -953,6 +954,7 @@ class Paymentreceiptsprovider extends ChangeNotifier {
Expanded(
flex: 3,
child: CupertinoDatePicker(
dateOrder: DatePickerDateOrder.dmy,
initialDateTime: _date ?? DateTime.now(),
mode: CupertinoDatePickerMode.date,
use24hFormat: true,
......
......@@ -41,6 +41,11 @@ class Loginnotifier extends ChangeNotifier {
String get AndroidDevId => _androidId;
int get loginStatus => _loginStatus;
set isLoading(bool value){
_isLoading = value;
notifyListeners();
}
Future<void> initAndroidId() async {
String androidId;
......@@ -157,6 +162,7 @@ int get loginStatus => _loginStatus;
password,
) async {
try {
if (!_validate(email, password)) return;
_isLoading = true;
......
......@@ -5,6 +5,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:generp/Models/ordersModels/addOrderAccontDetailsResponse.dart';
import 'package:generp/Utils/app_colors.dart';
import 'package:generp/Utils/commonServices.dart';
import 'package:geolocator/geolocator.dart';
import 'package:geolocator/geolocator.dart' as geo_location;
......@@ -385,7 +386,7 @@ class Addorderprovider extends ChangeNotifier {
set selecetdDispatchStates(States? value) {
_selectedDispatchStates = value;
_selectedDispatchStateID = value!.id;
_selectedDispatchStateID = value?.id;
_selectedDispatchStateName = value!.name!;
selectedDispatchStateError = "";
notifyListeners();
......@@ -403,7 +404,7 @@ class Addorderprovider extends ChangeNotifier {
set selectedDispatchDistricts(Districts? value) {
_selectedDispatchDistricts = value;
_selectedDispatchDistrictID = value!.id;
_selectedDispatchDistrictID = value?.id;
_selectedDispatchDistrictValue = value!.district;
selectedDispatchDistrictError = "";
// districtError = null;
......@@ -412,7 +413,7 @@ class Addorderprovider extends ChangeNotifier {
set selectedDispatchSubLocations(SubLocations? value) {
_selectedDispatchSubLocations = value;
_selectedDispatchSubLocID = value!.id;
_selectedDispatchSubLocID = value?.id;
_selectedDispatchSubLocValue = value!.subLocality!;
selectedDispatchSubLocError = "";
// localityError = null;
......@@ -1573,7 +1574,7 @@ class Addorderprovider extends ChangeNotifier {
CupertinoButton(
child: Text(
'Cancel',
style: TextStyle(fontFamily: "JakartaMedium"),
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue),
),
onPressed: () {
Navigator.pop(context);
......@@ -1582,7 +1583,7 @@ class Addorderprovider extends ChangeNotifier {
CupertinoButton(
child: Text(
'Done',
style: TextStyle(fontFamily: "JakartaMedium"),
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue),
),
onPressed: () {
Navigator.pop(context);
......@@ -1595,6 +1596,7 @@ class Addorderprovider extends ChangeNotifier {
Expanded(
flex: 3,
child: CupertinoDatePicker(
dateOrder: DatePickerDateOrder.dmy,
initialDateTime: _date ?? DateTime.now(),
mode: CupertinoDatePickerMode.date,
use24hFormat: true,
......
......@@ -14,6 +14,7 @@ import 'package:provider/provider.dart';
import '../../Models/ordersModels/AddOrderPaymentSelectAccountResponse.dart';
import '../../Models/ordersModels/AddOrderPaymentSelectOrderResponse.dart';
import '../../Utils/app_colors.dart';
class Addpaymentprovider extends ChangeNotifier{
......@@ -115,6 +116,7 @@ class Addpaymentprovider extends ChangeNotifier{
}
set selectedDescription(String? value){
_selectedDescription = value;
descriptionError = "";
notifyListeners();
}
set selectedAccountList(AccountList? value){
......@@ -496,22 +498,18 @@ class Addpaymentprovider extends ChangeNotifier{
if(amountController.text.trim().isEmpty){
isValid = false;
amountError = "Please Enter the Amount";
notifyListeners();
}
if(orderAdjustedAmountController.text.trim().isEmpty){
isValid = false;
orderAdjustedAmountError = "Please Enter the Amount";
notifyListeners();
}
if(descriptionController.text.trim().isEmpty){
if (_description == null || _selectedDescription==null) {
descriptionError = "Please select";
isValid = false;
descriptionError = "Please Enter the Description";
notifyListeners();
}
if(paymentReceivedDateController.text.trim().isEmpty){
isValid = false;
paymentModeError = "Please Enter the Amount";
notifyListeners();
}
if (_paymentMode == null || _selectedPaymentMode==null) {
paymentModeError = "Please select an Account";
......@@ -521,8 +519,8 @@ class Addpaymentprovider extends ChangeNotifier{
if(paymentRefController.text.trim().isEmpty){
isValid = false;
paymentRefError = "Please Enter the Payment reference";
notifyListeners();
}
_submitClicked = false;
notifyListeners();
return isValid;
}
......@@ -614,7 +612,7 @@ class Addpaymentprovider extends ChangeNotifier{
CupertinoButton(
child: Text(
'Cancel',
style: TextStyle(fontFamily: "JakartaMedium"),
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue),
),
onPressed: () {
Navigator.pop(context);
......@@ -623,7 +621,7 @@ class Addpaymentprovider extends ChangeNotifier{
CupertinoButton(
child: Text(
'Done',
style: TextStyle(fontFamily: "JakartaMedium"),
style: TextStyle(fontFamily: "JakartaMedium",color: AppColors.app_blue),
),
onPressed: () {
Navigator.pop(context);
......@@ -636,6 +634,7 @@ class Addpaymentprovider extends ChangeNotifier{
Expanded(
flex: 3,
child: CupertinoDatePicker(
dateOrder: DatePickerDateOrder.dmy,
initialDateTime: _date ?? DateTime.now(),
mode: CupertinoDatePickerMode.date,
use24hFormat: true,
......
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:generp/Notifiers/ordersProvider/pagesDashboardProvider.dart';
import 'package:provider/provider.dart';
import '../../Utils/commonServices.dart';
......@@ -112,6 +113,24 @@ String? driverMobileNumberError;
}
Future<void> ordersPDIIDByEngineNumberFunction(context,index) async {
try {
final provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.ordersPdiIdByEngNumberUrlAPI(
provider.empId,
provider.session,
engineNumberControllers[index].text,
);
if (data != null) {
if (data.error == "0") {
pdiIDControllers[index].text = data.pdiId!;
updateTotalAmount(index);
notifyListeners();
} else {}
} else {}
} catch (e, s) {}
}
Future<void> ordersDetailsDispatchOrderViewFunction(context, orderID) async {
try {
final provider = Provider.of<HomescreenNotifier>(context, listen: false);
......@@ -140,6 +159,7 @@ String? driverMobileNumberError;
sale_order_number,
edit_company_name,
crm_order_p_id,
mode
) async {
try {
if (!validateApproveRejectForm()) {
......@@ -149,6 +169,7 @@ String? driverMobileNumberError;
_submitClicked = true;
notifyListeners();
var provider = Provider.of<HomescreenNotifier>(context, listen: false);
final detProvider = Provider.of<Pagesdashboardprovider>(context,listen: false);
final data = await ApiCalling.ordersDetailsApproveRejectAPI(
provider.empId,
provider.session,
......@@ -171,6 +192,11 @@ String? driverMobileNumberError;
_submitClicked = false;
toast(context, "${data.message}");
resetForm();
detProvider.ordersDetailsByModeAPIFunction(
context,
orderId,
mode,
);
Navigator.pop(context, true);
notifyListeners();
} else {
......
......@@ -39,7 +39,6 @@ class Editorderprovider extends ChangeNotifier {
String? _selectedDispatchSubLocID;
String? _selectedDispatchSubLocValue;
String? _selectedUnloadingScope;
String? _selectedFreightScope;
String? _selectedErectionScope;
......@@ -59,7 +58,6 @@ class Editorderprovider extends ChangeNotifier {
int get imagePicked => _imagePicked;
List<String> get unloadingScope => _unloadingScope;
List<String> get freightScope => _freightScope;
......@@ -99,9 +97,7 @@ class Editorderprovider extends ChangeNotifier {
String? get selectedDispatchSubLocValue => _selectedDispatchSubLocValue;
OrderDetails get orderDetails =>_orderDetails;
OrderDetails get orderDetails => _orderDetails;
set imagePath(File? value) {
_imageName = value;
......@@ -117,6 +113,7 @@ class Editorderprovider extends ChangeNotifier {
_imagePicked = value;
notifyListeners();
}
set selecetdDispatchStates(States? value) {
_selectedDispatchStates = value;
_selectedDispatchStateID = value!.id;
......@@ -169,10 +166,12 @@ class Editorderprovider extends ChangeNotifier {
_selectedDispatchSubLocValue = value;
notifyListeners();
}
set submitClicked(bool value){
set submitClicked(bool value) {
_submitClicked = value;
notifyListeners();
}
set selectedUnloadingScope(String? value) {
_selectedUnloadingScope = value;
notifyListeners();
......@@ -200,15 +199,16 @@ class Editorderprovider extends ChangeNotifier {
if (data.error == "0") {
_dispatchStates = data.states!;
_orderDetails = data.orderDetails!;
_erectionScope = ["Excluded","Included","Excluded"];
_unloadingScope = ["Excluded","Included","Excluded"];
_freightScope = ["Included","Included","Excluded"];
_erectionScope = ["Included", "Excluded"];
_unloadingScope = ["Included", "Excluded"];
_freightScope = ["Included", "Excluded"];
notifyListeners();
} else {}
} else {}
} catch (e, s) {}
}
Future<void> getDispatchDistrictAPI(context, stateID) async {
try {
var homeProv = Provider.of<HomescreenNotifier>(context, listen: false);
......@@ -249,18 +249,39 @@ class Editorderprovider extends ChangeNotifier {
} catch (e, s) {}
}
Future<void> ordersEditOrderAPISubmitFunction(context, orderID, stateID, districtID, subLocID,unloading, freight, erection) async {
Future<void> ordersEditOrderAPISubmitFunction(
context,
orderID,
stateID,
districtID,
subLocID,
unloading,
freight,
erection,
) async {
try {
_submitClicked = true;
notifyListeners();
final provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.ordersDetailsEditOrderSubmitAPI(provider.empId, provider.session, orderID, _image, stateID, districtID, subLocID,
dispatchPincodeController.text, dispatchAddressController.text, unloading, freight, erection, noteController.text);
final data = await ApiCalling.ordersDetailsEditOrderSubmitAPI(
provider.empId,
provider.session,
orderID,
_image,
stateID,
districtID,
subLocID,
dispatchPincodeController.text,
dispatchAddressController.text,
unloading,
freight,
erection,
noteController.text,
);
if (data != null) {
if (data.error == "0") {
_submitClicked = false;
Navigator.pop(context,true);
Navigator.pop(context, true);
toast(context, data.message);
notifyListeners();
} else {
......@@ -277,7 +298,6 @@ class Editorderprovider extends ChangeNotifier {
}
}
imgFromCamera(context) async {
// Capture a photo
try {
......@@ -320,20 +340,66 @@ class Editorderprovider extends ChangeNotifier {
}
}
void onChangedDispatchAddress(value){
void onChangedDispatchAddress(value) {
dispatchAddressError = "";
notifyListeners();
}
void onChangedDispatchPincode(value){
void onChangedDispatchPincode(value) {
dispatchPincodeError = "";
notifyListeners();
}
void onChangedNote(value){
void onChangedNote(value) {
noteError = "";
notifyListeners();
}
void resetForm(){
void resetForm() {
dispatchPincodeController.clear();
dispatchAddressController.clear();
noteController.clear();
_selectedUnloadingScope = null;
_selectedFreightScope = null;
_selectedErectionScope = null;
_selectedDispatchStates = null;
_selectedDispatchStateID = null;
_selectedDispatchStateName = null;
_selectedDispatchDistricts = null;
_selectedDispatchDistrictID = null;
_selectedDispatchDistrictValue = null;
_selectedDispatchSubLocations = null;
_selectedDispatchSubLocID = null;
_selectedDispatchSubLocValue = null;
if (!_dispatchStates.contains(_selectedDispatchStates) &&
_selectedDispatchStates != null) {
_selectedDispatchStateID = null;
_selectedDispatchStateName = null;
}
if (!_dispatchDistricts.contains(_selectedDispatchDistricts) &&
_selectedDispatchDistricts != null) {
_selectedDispatchDistrictID = null;
_selectedDispatchDistrictValue = null;
}
if (!_dispatchSubLocations.contains(_selectedDispatchSubLocations) &&
_selectedDispatchSubLocations != null) {
_selectedDispatchSubLocID = null;
_selectedDispatchSubLocValue = null;
}
if (!_unloadingScope.contains(_selectedUnloadingScope) &&
_selectedUnloadingScope != null) {
_selectedUnloadingScope = null;
}
if (!_freightScope.contains(_selectedFreightScope) &&
_selectedFreightScope != null) {
_selectedFreightScope = null;
}
if (!_erectionScope.contains(_selectedErectionScope) &&
_selectedErectionScope != null) {
_selectedErectionScope = null;
}
notifyListeners();
}
}
......@@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart';
import 'package:image_picker/image_picker.dart';
import 'package:provider/provider.dart';
import '../../Models/ordersModels/orderDashboardResponse.dart';
import '../../Models/ordersModels/ordersAccessiblePagesResponse.dart';
import '../../Models/ordersModels/ordersDetailsByModeResponse.dart';
import '../../Models/ordersModels/ordersListByModeFilterResponse.dart';
......@@ -15,6 +16,8 @@ import '../HomeScreenNotifier.dart';
class Pagesdashboardprovider extends ChangeNotifier {
bool _submitClicked = false;
bool _showMoreDetails = false;
TextEditingController feedbackController = TextEditingController();
TextEditingController approveRejectFeedbackController =
TextEditingController();
......@@ -47,6 +50,21 @@ class Pagesdashboardprovider extends ChangeNotifier {
var _image_picked = 0;
final ImagePicker _picker = ImagePicker();
Ordergain _ordergain = Ordergain();
Ordergain get ordergain => _ordergain;
Ordergain _dispatches = Ordergain();
Ordergain get dispatches => _dispatches;
Ordergain _pendingTasks = Ordergain();
Ordergain get pendingTasks => _pendingTasks;
Ordergain _quote = Ordergain();
Ordergain get quote => _quote;
List<Ordergain> _ordersgain = [];
List<Ordergain> get ordersgain => _ordersgain;
bool get showMoreDetails => _showMoreDetails;
set showMoreDetails(bool value){
_showMoreDetails = value;
notifyListeners();
}
File? _image;
File? _imageName;
......@@ -112,9 +130,9 @@ class Pagesdashboardprovider extends ChangeNotifier {
String? get selectedLeadType => _selectedLeadType;
List<String> get Headings => _headings;
List<String> get subHeadings => _subHeadings;
// List<String> get Headings => _headings;
//
// List<String> get subHeadings => _subHeadings;
set imagePath(File? value) {
_imageName = value;
......@@ -214,10 +232,38 @@ class Pagesdashboardprovider extends ChangeNotifier {
}
}
Future<void> orderDashboardAPIFunction(context, mode,
from,to,teamemployee) async {
try{
var HomeProv = Provider.of<HomescreenNotifier>(context,listen: false);
final data = await ApiCalling.ordersDashboardAPI(HomeProv.empId, HomeProv.session, mode,
from,to,teamemployee);
if(data!=null){
if(data.error=="0"){
_ordergain = data.ordergain!;
_dispatches = data.dispatches!;
_pendingTasks = data.pendingTasks!;
_quote = data.quote!;
_ordersgain = [
_ordergain,
_dispatches,
_pendingTasks,
_quote,
];
notifyListeners();
}
}
}catch (e,s){
}
}
Future<void> ordersAccessiblePagesAPIFunction(context) async {
try {
var provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.ordersDashboardAPI(
final data = await ApiCalling.ordersAccesiblePagesAPI(
provider.empId,
provider.session,
);
......@@ -303,7 +349,7 @@ class Pagesdashboardprovider extends ChangeNotifier {
_paymentHistory = data.paymentHistory!;
editCompanyController.text = data.orderDetails!.accountName ?? "";
_headings = [
"Order No",
"Order Number",
"Account Name",
"Billing State",
......
......@@ -108,8 +108,6 @@ class Tpcagentsprovider extends ChangeNotifier{
if (data.error == "0") {
_tpcAgentsList = data.tpcAgentList!;
_isLoading = false;
notifyListeners();
} else {
_isLoading = false;
}
......
......@@ -84,11 +84,13 @@ class Scanloginprovider extends ChangeNotifier{
if (data.sessionExists == 1) {
if (data.error == 0) {
Navigator.pop(context);
toast(context, data.message);
toast(context, "Login Successful!!");
} else if (data.error == 1) {
toast(context, data.message);
toast(context, "Session Expired, Please Try Again!!");
} else if (data.error == 2) {
toast(context, data.message);
toast(context, "Something Went wrong, Please Try Again!!");
} else {
toast(context,
"Something Went wrong, Please Try Again!");
......
......@@ -118,6 +118,7 @@ Widget errorWidget(context, text) {
Widget textControllerWidget(
context,
controller,
textHead,
hintText,
Function(String)? onChanged,
inputtype,
......@@ -133,7 +134,7 @@ Widget textControllerWidget(
children: [
Padding(
padding: const EdgeInsets.only(bottom: 5.0, top: 8.0),
child: Text(hintText),
child: Text(textHead),
),
Container(
height: hintText == "Enter Description" ? 150 : 50,
......
......@@ -242,6 +242,11 @@ class MyApp extends StatelessWidget {
shadowColor: Colors.white54,
searchBarTheme: const SearchBarThemeData(),
tabBarTheme: const TabBarThemeData(),
textSelectionTheme: TextSelectionThemeData(
cursorColor: AppColors.app_blue
),
dialogTheme: const DialogThemeData(
shadowColor: Colors.white,
surfaceTintColor: Colors.white,
......@@ -264,6 +269,7 @@ class MyApp extends StatelessWidget {
color: Colors.white,
//),
),
textButtonTheme: TextButtonThemeData(
style: ButtonStyle(
// overlayColor: MaterialStateProperty.all(Colors.white),
......@@ -287,6 +293,16 @@ class MyApp extends StatelessWidget {
AppColors.grey_semi.withOpacity(0.6),
),
),
inputDecorationTheme: InputDecorationTheme(
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14,
),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
),
),
home: const Splash(),
);
......
This diff is collapsed.
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:generp/Utils/app_colors.dart';
import 'package:generp/Utils/commonWidgets.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:image_picker/image_picker.dart';
import 'package:provider/provider.dart';
import '../Notifiers/CheckInProvider.dart';
import 'FrontCameraCapture.dart';
class CheckInOutScreen extends StatefulWidget {
final int getAttendanceStatus;
......@@ -26,6 +31,13 @@ class _CheckInOutScreenState extends State<CheckInOutScreen> {
});
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
}
@override
Widget build(BuildContext context) {
......@@ -35,10 +47,12 @@ class _CheckInOutScreenState extends State<CheckInOutScreen> {
return Consumer<CheckInOutProvider>(
builder: (context, provider, child) {
return WillPopScope(
onWillPop: () => onBackPressed(context),
onWillPop: () {
provider.dispose();
return onBackPressed(context);},
child: Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar(context, widget.getAttendanceStatus==0? "Check In":"Check Out"),
appBar: appbar2(context, widget.getAttendanceStatus==0? "Check In":"Check Out", provider.dispose,SizedBox(width: 0,)),
body:SafeArea(
child: Container(
child: SafeArea(
......@@ -133,6 +147,10 @@ class _CheckInOutScreenState extends State<CheckInOutScreen> {
provider.locationController,
keyboardType:
TextInputType.text,
onChanged: (value) {
provider.validateLocation = "";
provider.notifyListeners();
},
decoration: InputDecoration(
hintText:
......@@ -189,9 +207,38 @@ class _CheckInOutScreenState extends State<CheckInOutScreen> {
provider.notifyListeners();
} else {
provider.validateLocation = "";
if (Platform.isAndroid) {
provider.image = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
FrontCameraCapture()));
print("${provider.image}");
if(provider.image!=null){
provider.imagePicked = 1;
}
var file = await FlutterImageCompress.compressWithFile(
provider.image!.path,
);
if (file != null) {
if (widget.getAttendanceStatus == 0) {
provider.checkIn(context);
} else if (widget.getAttendanceStatus == 1) {
provider.checkOut(context);
}
}
} else if (Platform.isIOS) {
// BackgroundLocation.stopLocationService();
provider.imgFromCamera(
context,widget.getAttendanceStatus);
// setState(() {
// isLoading = true;
// image_picked = 0;
// CheckIn();
// });
}
}
},
......
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