Commit 1a2ae52a authored by Sai Srinivas's avatar Sai Srinivas
Browse files

27-06-2025 By Sai Srinivas

Add Order Module and Test cases.
parent 381932be
class ordersDetailsDispatchOrderViewResponse {
List<Products>? products;
String? error;
String? message;
ordersDetailsDispatchOrderViewResponse(
{this.products, this.error, this.message});
ordersDetailsDispatchOrderViewResponse.fromJson(Map<String, dynamic> json) {
if (json['products'] != null) {
products = <Products>[];
json['products'].forEach((v) {
products!.add(new Products.fromJson(v));
});
}
error = json['error'];
message = json['message'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.products != null) {
data['products'] = this.products!.map((v) => v.toJson()).toList();
}
data['error'] = this.error;
data['message'] = this.message;
return data;
}
}
class Products {
String? id;
String? orderId;
String? productId;
String? pdiId;
String? qty;
String? unitPrice;
String? cgstPercentage;
String? sgstPercentage;
String? igstPercentage;
String? totalPrice;
String? isExist;
String? createdDatetime;
String? updatedDatetime;
String? productName;
String? crmOrderPId;
Products(
{this.id,
this.orderId,
this.productId,
this.pdiId,
this.qty,
this.unitPrice,
this.cgstPercentage,
this.sgstPercentage,
this.igstPercentage,
this.totalPrice,
this.isExist,
this.createdDatetime,
this.updatedDatetime,
this.productName,
this.crmOrderPId});
Products.fromJson(Map<String, dynamic> json) {
id = json['id'];
orderId = json['order_id'];
productId = json['product_id'];
pdiId = json['pdi_id'];
qty = json['qty'];
unitPrice = json['unit_price'];
cgstPercentage = json['cgst_percentage'];
sgstPercentage = json['sgst_percentage'];
igstPercentage = json['igst_percentage'];
totalPrice = json['total_price'];
isExist = json['is_exist'];
createdDatetime = json['created_datetime'];
updatedDatetime = json['updated_datetime'];
productName = json['product_name'];
crmOrderPId = json['crm_order_p_id'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['order_id'] = this.orderId;
data['product_id'] = this.productId;
data['pdi_id'] = this.pdiId;
data['qty'] = this.qty;
data['unit_price'] = this.unitPrice;
data['cgst_percentage'] = this.cgstPercentage;
data['sgst_percentage'] = this.sgstPercentage;
data['igst_percentage'] = this.igstPercentage;
data['total_price'] = this.totalPrice;
data['is_exist'] = this.isExist;
data['created_datetime'] = this.createdDatetime;
data['updated_datetime'] = this.updatedDatetime;
data['product_name'] = this.productName;
data['crm_order_p_id'] = this.crmOrderPId;
return data;
}
}
...@@ -6,6 +6,7 @@ import 'package:dropdown_button2/dropdown_button2.dart'; ...@@ -6,6 +6,7 @@ import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:generp/Notifiers/HomeScreenNotifier.dart'; import 'package:generp/Notifiers/HomeScreenNotifier.dart';
import 'package:generp/Utils/commonServices.dart';
import 'package:generp/services/api_calling.dart'; import 'package:generp/services/api_calling.dart';
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
...@@ -15,6 +16,8 @@ import '../../Models/ordersModels/AddOrderPaymentSelectAccountResponse.dart'; ...@@ -15,6 +16,8 @@ import '../../Models/ordersModels/AddOrderPaymentSelectAccountResponse.dart';
import '../../Models/ordersModels/AddOrderPaymentSelectOrderResponse.dart'; import '../../Models/ordersModels/AddOrderPaymentSelectOrderResponse.dart';
class Addpaymentprovider extends ChangeNotifier{ class Addpaymentprovider extends ChangeNotifier{
bool _submitClicked = false;
TextEditingController dropDownSearchController = TextEditingController(); TextEditingController dropDownSearchController = TextEditingController();
TextEditingController amountController = TextEditingController(); TextEditingController amountController = TextEditingController();
...@@ -65,7 +68,7 @@ class Addpaymentprovider extends ChangeNotifier{ ...@@ -65,7 +68,7 @@ class Addpaymentprovider extends ChangeNotifier{
bool get submitClicked =>_submitClicked;
List<String> get paymentMode => _paymentMode; List<String> get paymentMode => _paymentMode;
List<String> get description => _description; List<String> get description => _description;
bool get isLoading => _isLoading; bool get isLoading => _isLoading;
...@@ -90,6 +93,11 @@ class Addpaymentprovider extends ChangeNotifier{ ...@@ -90,6 +93,11 @@ class Addpaymentprovider extends ChangeNotifier{
File? get imageFilePath => _image; File? get imageFilePath => _image;
int get imagePicked => _imagePicked; int get imagePicked => _imagePicked;
set submitClicked(bool value){
_submitClicked = value;
notifyListeners();
}
set accountList(List<AccountList> value){ set accountList(List<AccountList> value){
_accountList = value; _accountList = value;
notifyListeners(); notifyListeners();
...@@ -130,7 +138,7 @@ class Addpaymentprovider extends ChangeNotifier{ ...@@ -130,7 +138,7 @@ class Addpaymentprovider extends ChangeNotifier{
} }
void updateSelectedOrderId(int index, OrderList? value) { void updateSelectedOrderId(int index, OrderList? value) {
_selectedOrderLists = value!; _selectedOrderLists = value!;
_updateAdjustedAmount();
_selectedOrderIds[index] = value!.orderId; _selectedOrderIds[index] = value!.orderId;
print(_selectedOrderIds[index]); print(_selectedOrderIds[index]);
notifyListeners(); notifyListeners();
...@@ -212,11 +220,18 @@ class Addpaymentprovider extends ChangeNotifier{ ...@@ -212,11 +220,18 @@ class Addpaymentprovider extends ChangeNotifier{
tempAdjustAmount += int.tryParse(text) ?? 0; tempAdjustAmount += int.tryParse(text) ?? 0;
} }
} }
int amountControllerAmount = int.parse(amountController.text.toString());
if(tempAdjustAmount>amountControllerAmount){
orderAdjustedAmountError = "Amount Should not be greater than Total Amount";
}else{
orderAdjustedAmountError = "";
}
orderAdjustedAmountController.text = tempAdjustAmount.toString(); orderAdjustedAmountController.text = tempAdjustAmount.toString();
notifyListeners(); notifyListeners();
} }
void updateAdjustedAmount() => _updateAdjustedAmount();
List<Map<String, String>> getFormData() { List<Map<String, String>> getFormData() {
_selectedOrders = []; _selectedOrders = [];
...@@ -225,18 +240,17 @@ class Addpaymentprovider extends ChangeNotifier{ ...@@ -225,18 +240,17 @@ class Addpaymentprovider extends ChangeNotifier{
for (int i = 0; i < orderAmountControllers.length; i++) { for (int i = 0; i < orderAmountControllers.length; i++) {
if (_selectedOrderIds[i] != null && if (_selectedOrderIds[i] != null &&
orderAmountControllers[i].text.isNotEmpty) { orderAmountControllers[i].text.isNotEmpty) {
latestEntries[_selectedOrderIds[i]!] = orderAmountControllers[i].text; // latestEntries[_selectedOrderIds[i]!] = orderAmountControllers[i].text;
_selectedOrders.add({
"order_id": _selectedOrderIds[i]!,
"amount": orderAmountControllers[i].text,
});
tempAdjustAmount = tempAdjustAmount+int.parse(double.parse(orderAmountControllers[i].text).round().toString()); tempAdjustAmount = tempAdjustAmount+int.parse(double.parse(orderAmountControllers[i].text).round().toString());
} }
} }
_selectedOrders = latestEntries.entries
.map((entry) => {
"order_id": entry.key,
"amount": entry.value,
})
.toList();
print("Form Data: $_selectedOrders"); print("Form Data: $_selectedOrders");
orderAdjustedAmountController.text = tempAdjustAmount.toString(); orderAdjustedAmountController.text = tempAdjustAmount.toString();
...@@ -369,6 +383,12 @@ class Addpaymentprovider extends ChangeNotifier{ ...@@ -369,6 +383,12 @@ class Addpaymentprovider extends ChangeNotifier{
accountId,selDescription, selectedOrders, accountId,selDescription, selectedOrders,
paymentMode,) async { paymentMode,) async {
try{ try{
if (!validateAddPayment()) {
return;
}
_submitClicked = true;
notifyListeners();
final provider = Provider.of<HomescreenNotifier>(context,listen: false); final provider = Provider.of<HomescreenNotifier>(context,listen: false);
final data = await ApiCalling.addOrderpaymentListSubmitAPI(provider.empId, provider.session, final data = await ApiCalling.addOrderpaymentListSubmitAPI(provider.empId, provider.session,
accountId, selDescription, accountId, selDescription,
...@@ -377,20 +397,26 @@ class Addpaymentprovider extends ChangeNotifier{ ...@@ -377,20 +397,26 @@ class Addpaymentprovider extends ChangeNotifier{
paymentMode, paymentRefController.text, _image); paymentMode, paymentRefController.text, _image);
if(data!=null){ if(data!=null){
if(data.error=="0"){ if(data.error=="0"){
_submitClicked = false;
resetForm(); resetForm();
Navigator.pop(context); Navigator.pop(context);
toast(context, data.message);
notifyListeners();
}else{ }else{
_submitClicked = false;
notifyListeners();
toast(context, data.message);
} }
}else{ }else{
submitClicked = false;
notifyListeners();
} }
}catch(e,s){ }catch(e,s){
submitClicked = false;
notifyListeners();
} }
} }
...@@ -437,11 +463,13 @@ class Addpaymentprovider extends ChangeNotifier{ ...@@ -437,11 +463,13 @@ class Addpaymentprovider extends ChangeNotifier{
} }
void onChangeAmount(value){ void onChangeAmount(value){
_updateAdjustedAmount();
amountError = ""; amountError = "";
notifyListeners(); notifyListeners();
} }
void onChangeorderAdjustedAmount(value){ void onChangeorderAdjustedAmount(value){
orderAdjustedAmountError = "";
_updateAdjustedAmount();
notifyListeners(); notifyListeners();
} }
void onChangeDescription(value){ void onChangeDescription(value){
...@@ -453,6 +481,51 @@ class Addpaymentprovider extends ChangeNotifier{ ...@@ -453,6 +481,51 @@ class Addpaymentprovider extends ChangeNotifier{
paymentRefError = ""; paymentRefError = "";
notifyListeners(); notifyListeners();
} }
bool validateAddPayment(){
bool isValid = true;
selectAccountError = "";
amountError = "";
orderAdjustedAmountError = "";
descriptionError = "";
paymentModeError = "";
paymentRefError = "";
if (_selectedAccountList == null || _selectedAccountID==null) {
selectAccountError = "Please select an Account";
isValid = false;
}
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){
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";
isValid = false;
}
if(paymentRefController.text.trim().isEmpty){
isValid = false;
paymentRefError = "Please Enter the Payment reference";
notifyListeners();
}
notifyListeners();
return isValid;
}
void resetForm() { void resetForm() {
......
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:provider/provider.dart';
import '../../Utils/commonServices.dart';
import '../../services/api_calling.dart';
import '../HomeScreenNotifier.dart';
import 'package:generp/Models/ordersModels/ordersDetailsDispatchOrderViewResponse.dart';
class Dispatchorderprovider extends ChangeNotifier{
bool _submitClicked = false;
TextEditingController invoiceNumberController = TextEditingController();
TextEditingController vehicleNumberController = TextEditingController();
TextEditingController driverNameController = TextEditingController();
TextEditingController driverMobileNumberController = TextEditingController();
String? invoiceNumberError;
String? vehicleNumberError;
String? driverNameError;
String? driverMobileNumberError;
List<Products> _leadProductsList = [];
Products? _selectedProducts;
List<TextEditingController> engineNumberControllers = [];
List<TextEditingController> pdiIDControllers = [];
List<String?> _selectedProductIds = [];
List<String?> _selectedProductValues = [];
List<Products> get productsList => _leadProductsList;
List<Products> get leadProductsList => _leadProductsList;
Products? get selectedProducts => _selectedProducts;
List<String?> get selectedProductIds => _selectedProductIds;
List<String?> get selectedProductValues => _selectedProductValues;
bool get submitClicked => _submitClicked;
set submitClicked(bool value){
_submitClicked = value;
notifyListeners();
}
void initializeForm(BuildContext context) {
// Clear existing controllers
engineNumberControllers.clear();
pdiIDControllers.clear();
_selectedProductIds.clear();
_selectedProductValues.clear();
// Initialize controllers for each lead product
for (var product in _leadProductsList) {
engineNumberControllers.add(TextEditingController());
pdiIDControllers.add(TextEditingController(text: product.pdiId?.toString() ?? ''));
_selectedProductIds.add(product.id);
_selectedProductValues.add(product.productName);
}
// Add one empty row if the list is empty
if (_leadProductsList.isEmpty) {
editAddNewRow();
}
notifyListeners();
}
void editAddNewRow() {
engineNumberControllers.add(TextEditingController());
pdiIDControllers.add(TextEditingController());
_selectedProductIds.add(null);
_selectedProductValues.add(null);
notifyListeners();
}
void editRemoveRow(int index) {
engineNumberControllers[index].dispose();
pdiIDControllers[index].dispose();
engineNumberControllers.removeAt(index);
pdiIDControllers.removeAt(index);
_selectedProductIds.removeAt(index);
_selectedProductValues.removeAt(index);
notifyListeners();
}
void updateSelectedProductIds(int index, Products value) {
_selectedProductIds[index] = value.id;
_selectedProductValues[index] = value.productName;
notifyListeners();
}
void updateTotalAmount(int index) {
final price = double.tryParse(engineNumberControllers[index].text) ?? 0;
final qty = int.tryParse(pdiIDControllers[index].text) ?? 0;
// editTotalAmountControllers[index].text = (price * qty).toString();
notifyListeners();
}
List<Map<String, String>> getFormData() {
final List<Map<String, String>> insertData = [];
for (int i = 0; i < engineNumberControllers.length; i++) {
if (_selectedProductIds[i] != null) {
final rowData = {
"product_id": _selectedProductIds[i]!,
"engine_number": engineNumberControllers[i].text,
"pdi_id": pdiIDControllers[i].text,
};
insertData.add(rowData);
}
}
return insertData;
}
Future<void> ordersDetailsDispatchOrderViewFunction(context, orderID) async {
try {
final provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.ordersDetailsDispatchOrderViewAPI(
provider.empId,
provider.session,
orderID,
);
if (data != null) {
if (data.error == "0") {
_leadProductsList = data.products!;
notifyListeners();
} else {}
} else {}
} catch (e, s) {}
}
Future<void> approvalRejectionAPIFunction(
context,
status,
orderId,
type,
feedback,
tpc_applicable,
tpc_approved_amount,
sale_order_number,
edit_company_name,
crm_order_p_id,
) async {
try {
if (!validateApproveRejectForm()) {
// _submitClicked = false;
return;
}
_submitClicked = true;
notifyListeners();
var provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.ordersDetailsApproveRejectAPI(
provider.empId,
provider.session,
status,
type,
orderId,
feedback,
tpc_applicable,
tpc_approved_amount,
sale_order_number,
edit_company_name,
invoiceNumberController.text,
vehicleNumberController.text,
driverNameController.text,
driverMobileNumberController.text,
crm_order_p_id,
);
if (data != null) {
if (data.error == "0") {
_submitClicked = false;
toast(context, "${data.message}");
resetForm();
Navigator.pop(context, true);
notifyListeners();
} else {
_submitClicked = false;
notifyListeners();
}
}else{
_submitClicked = false;
notifyListeners();
}
} catch (e, s) {
_submitClicked = false;
notifyListeners();
}
}
bool validateApproveRejectForm(){
bool isValid = true;
if(invoiceNumberController.text.trim().isEmpty){
invoiceNumberError = "Enter Invoice Number";
isValid = false;
}
if(vehicleNumberController.text.trim().isEmpty){
vehicleNumberError = "Enter Vehicle Number";
isValid = false;
}
if(driverNameController.text.trim().isEmpty){
driverNameError = "Enter Driver Name";
isValid = false;
}
if(driverMobileNumberController.text.trim().isEmpty){
driverMobileNumberError = "Enter Driver Number";
isValid = false;
}
notifyListeners();
return isValid;
}
resetForm(){
invoiceNumberController.clear();
vehicleNumberController.clear();
driverNameController.clear();
driverMobileNumberController.clear();
engineNumberControllers.clear();
pdiIDControllers.clear();
_selectedProductIds.clear();
_selectedProductValues.clear();
_leadProductsList.clear();
invoiceNumberError = null;
vehicleNumberError = null;
driverNameError = null;
driverMobileNumberError = null;
notifyListeners();
}
onChangedinvoiceNumber(value){
invoiceNumberError = null;
notifyListeners();
}
onChangedvehicleNumber(value){
vehicleNumberError = null;
notifyListeners();
}
onChangeddriverName(value){
driverNameError = null;
notifyListeners();
}
onChangeddriverMobileNumber(value){
driverMobileNumberError = null;
notifyListeners();
}
}
...@@ -14,6 +14,7 @@ import '../../services/api_calling.dart'; ...@@ -14,6 +14,7 @@ import '../../services/api_calling.dart';
import '../HomeScreenNotifier.dart'; import '../HomeScreenNotifier.dart';
class Pagesdashboardprovider extends ChangeNotifier { class Pagesdashboardprovider extends ChangeNotifier {
bool _submitClicked = false;
TextEditingController feedbackController = TextEditingController(); TextEditingController feedbackController = TextEditingController();
TextEditingController approveRejectFeedbackController = TextEditingController approveRejectFeedbackController =
TextEditingController(); TextEditingController();
...@@ -49,6 +50,12 @@ class Pagesdashboardprovider extends ChangeNotifier { ...@@ -49,6 +50,12 @@ class Pagesdashboardprovider extends ChangeNotifier {
File? _image; File? _image;
File? _imageName; File? _imageName;
bool get submitClicked => _submitClicked;
set submitClicked(bool value){
_submitClicked = value;
notifyListeners();
}
String get approvalSheetHeading => _approvalSheetHeading; String get approvalSheetHeading => _approvalSheetHeading;
String get rejecetionSheetHeading => _rejecetionSheetHeading; String get rejecetionSheetHeading => _rejecetionSheetHeading;
...@@ -459,6 +466,8 @@ class Pagesdashboardprovider extends ChangeNotifier { ...@@ -459,6 +466,8 @@ class Pagesdashboardprovider extends ChangeNotifier {
// _submitClicked = false; // _submitClicked = false;
return; return;
} }
_submitClicked = true;
notifyListeners();
var provider = Provider.of<HomescreenNotifier>(context, listen: false); var provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.ordersDetailsFeedbackSubmissionAPI( final data = await ApiCalling.ordersDetailsFeedbackSubmissionAPI(
provider.empId, provider.empId,
...@@ -470,14 +479,23 @@ class Pagesdashboardprovider extends ChangeNotifier { ...@@ -470,14 +479,23 @@ class Pagesdashboardprovider extends ChangeNotifier {
); );
if (data != null) { if (data != null) {
if (data.error == "0") { if (data.error == "0") {
_submitClicked = false;
toast(context, "Submitted Successfully"); toast(context, "Submitted Successfully");
resetForm(); resetForm();
Navigator.pop(context, true); Navigator.pop(context, true);
notifyListeners(); notifyListeners();
} else {} } else {
_submitClicked = false;
notifyListeners();
}
}else{
_submitClicked = false;
notifyListeners(); notifyListeners();
} }
} catch (e, s) {} } catch (e, s) {
_submitClicked = false;
notifyListeners();
}
} }
Future<void> approvalRejectionAPIFunction( Future<void> approvalRejectionAPIFunction(
...@@ -499,6 +517,8 @@ class Pagesdashboardprovider extends ChangeNotifier { ...@@ -499,6 +517,8 @@ class Pagesdashboardprovider extends ChangeNotifier {
// _submitClicked = false; // _submitClicked = false;
return; return;
} }
_submitClicked = true;
notifyListeners();
var provider = Provider.of<HomescreenNotifier>(context, listen: false); var provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.ordersDetailsApproveRejectAPI( final data = await ApiCalling.ordersDetailsApproveRejectAPI(
provider.empId, provider.empId,
...@@ -519,12 +539,12 @@ class Pagesdashboardprovider extends ChangeNotifier { ...@@ -519,12 +539,12 @@ class Pagesdashboardprovider extends ChangeNotifier {
); );
if (data != null) { if (data != null) {
if (data.error == "0") { if (data.error == "0") {
_submitClicked = false;
toast(context, "${data.message}"); toast(context, "${data.message}");
resetForm(); resetForm();
Navigator.pop(context, true); Navigator.pop(context, true);
notifyListeners(); notifyListeners();
} else {} } else {}
notifyListeners();
} }
} catch (e, s) {} } catch (e, s) {}
} }
...@@ -548,10 +568,18 @@ class Pagesdashboardprovider extends ChangeNotifier { ...@@ -548,10 +568,18 @@ class Pagesdashboardprovider extends ChangeNotifier {
resetForm(); resetForm();
Navigator.pop(context, true); Navigator.pop(context, true);
notifyListeners(); notifyListeners();
} else {} } else {
_submitClicked = false;
notifyListeners();
}
}else{
_submitClicked = false;
notifyListeners(); notifyListeners();
} }
} catch (e, s) {} } catch (e, s) {
_submitClicked = false;
notifyListeners();
}
} }
void onChangeFeedback(value) { void onChangeFeedback(value) {
......
...@@ -14,6 +14,7 @@ import '../../services/api_calling.dart'; ...@@ -14,6 +14,7 @@ import '../../services/api_calling.dart';
import '../HomeScreenNotifier.dart'; import '../HomeScreenNotifier.dart';
class Tpcagentsprovider extends ChangeNotifier{ class Tpcagentsprovider extends ChangeNotifier{
bool _submitClicked = false;
TextEditingController tpcNameController = TextEditingController(); TextEditingController tpcNameController = TextEditingController();
TextEditingController tpcMobileNumberController = TextEditingController(); TextEditingController tpcMobileNumberController = TextEditingController();
...@@ -34,6 +35,7 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -34,6 +35,7 @@ class Tpcagentsprovider extends ChangeNotifier{
String? tpcBankAccountNumberError = ""; String? tpcBankAccountNumberError = "";
String? tpcBankIFSCError = ""; String? tpcBankIFSCError = "";
String? tpcNoteError = ""; String? tpcNoteError = "";
String? imageError = "";
String? tpcPaymentModeError = ""; String? tpcPaymentModeError = "";
String? tpcPaymentReferenceNoError = ""; String? tpcPaymentReferenceNoError = "";
...@@ -53,6 +55,7 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -53,6 +55,7 @@ class Tpcagentsprovider extends ChangeNotifier{
File? _image; File? _image;
File? _imageName; File? _imageName;
bool get submitClicked => _submitClicked;
List<String> get Headings => _headings; List<String> get Headings => _headings;
List<String> get subHeadings => _subHeadings; List<String> get subHeadings => _subHeadings;
...@@ -69,6 +72,11 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -69,6 +72,11 @@ class Tpcagentsprovider extends ChangeNotifier{
get imagePicked => _image_picked; get imagePicked => _image_picked;
set submitClicked(bool value){
_submitClicked = value;
notifyListeners();
}
set imagePath(File? value) { set imagePath(File? value) {
_imageName = value; _imageName = value;
notifyListeners(); notifyListeners();
...@@ -188,6 +196,8 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -188,6 +196,8 @@ class Tpcagentsprovider extends ChangeNotifier{
// _submitClicked = false; // _submitClicked = false;
return; return;
} }
_submitClicked = true;
notifyListeners();
var provider = Provider.of<HomescreenNotifier>(context, listen: false); var provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.TpcIssueListApprovalAPI( final data = await ApiCalling.TpcIssueListApprovalAPI(
provider.empId, provider.empId,
...@@ -201,13 +211,26 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -201,13 +211,26 @@ class Tpcagentsprovider extends ChangeNotifier{
if (data != null) { if (data != null) {
if (data.error == "0") { if (data.error == "0") {
_submitClicked = false;
toast(context, "Submitted Successfully"); toast(context, "Submitted Successfully");
resetAll();
resetApprovalForm(); resetApprovalForm();
Navigator.pop(context, true); Navigator.pop(context, true);
notifyListeners(); notifyListeners();
}else{
_submitClicked = false;
notifyListeners();
} }
}else{
_submitClicked = false;
notifyListeners();
} }
} catch (e, s) {} } catch (e, s) {
_submitClicked = false;
notifyListeners();
}
} }
Future<void> addTPCAgentAPIFunction(context) async { Future<void> addTPCAgentAPIFunction(context) async {
...@@ -216,6 +239,8 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -216,6 +239,8 @@ class Tpcagentsprovider extends ChangeNotifier{
// _submitClicked = false; // _submitClicked = false;
return; return;
} }
_submitClicked = true;
notifyListeners();
var provider = Provider.of<HomescreenNotifier>(context, listen: false); var provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.ordersAddTPCAgentAPI( final data = await ApiCalling.ordersAddTPCAgentAPI(
provider.empId, provider.empId,
...@@ -233,13 +258,24 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -233,13 +258,24 @@ class Tpcagentsprovider extends ChangeNotifier{
if (data != null) { if (data != null) {
if (data.error == "0") { if (data.error == "0") {
_submitClicked = false;
toast(context, "Submitted Successfully"); toast(context, "Submitted Successfully");
resetAll();
resetAddTPCAgentForm(); resetAddTPCAgentForm();
Navigator.pop(context, true); Navigator.pop(context, true);
notifyListeners(); notifyListeners();
}else{
_submitClicked = false;
notifyListeners();
} }
}else{
_submitClicked = false;
notifyListeners();
} }
} catch (e, s) {} } catch (e, s) {
_submitClicked = false;
notifyListeners();
}
} }
bool validateAddTPCAgentForm(BuildContext context) { bool validateAddTPCAgentForm(BuildContext context) {
...@@ -262,6 +298,11 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -262,6 +298,11 @@ class Tpcagentsprovider extends ChangeNotifier{
tpcMobileNumberError = "PLease Enter Your Mobile Number"; tpcMobileNumberError = "PLease Enter Your Mobile Number";
isValid = false; isValid = false;
} }
if(_image_picked==0){
imageError = "Please select ID Proof";
isValid = false;
}
if(tpcBankNameController.text.trim().isEmpty){ if(tpcBankNameController.text.trim().isEmpty){
tpcBankNameError = "Please Enter Bank Name"; tpcBankNameError = "Please Enter Bank Name";
isValid = false; isValid = false;
...@@ -278,7 +319,7 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -278,7 +319,7 @@ class Tpcagentsprovider extends ChangeNotifier{
tpcBankIFSCError = "Please Enter IFSC"; tpcBankIFSCError = "Please Enter IFSC";
isValid = false; isValid = false;
} }
_submitClicked = false;
notifyListeners(); notifyListeners();
return isValid; return isValid;
...@@ -305,6 +346,7 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -305,6 +346,7 @@ class Tpcagentsprovider extends ChangeNotifier{
orderTpcFeedbackError = "Please enter a description"; orderTpcFeedbackError = "Please enter a description";
isValid = false; isValid = false;
} }
_submitClicked = false;
notifyListeners(); notifyListeners();
return isValid; return isValid;
} }
...@@ -367,6 +409,9 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -367,6 +409,9 @@ class Tpcagentsprovider extends ChangeNotifier{
tpcBankAccountNumberController.clear(); tpcBankAccountNumberController.clear();
tpcBankIFSCController.clear(); tpcBankIFSCController.clear();
tpcNoteController.clear(); tpcNoteController.clear();
tpcPaymentModeController.clear();
tpcPaymentReferenceNoController.clear();
orderTpcFeedbackController.clear();
tpcNameError = ""; tpcNameError = "";
tpcMobileNumberError = ""; tpcMobileNumberError = "";
tpcBankNameError = ""; tpcBankNameError = "";
...@@ -376,7 +421,9 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -376,7 +421,9 @@ class Tpcagentsprovider extends ChangeNotifier{
tpcNoteError = ""; tpcNoteError = "";
_image = null; _image = null;
_imageName = null; _imageName = null;
imageError = null;
_image_picked = 0; _image_picked = 0;
notifyListeners();
} }
void resetApprovalForm() { void resetApprovalForm() {
...@@ -388,7 +435,9 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -388,7 +435,9 @@ class Tpcagentsprovider extends ChangeNotifier{
orderTpcFeedbackError = ""; orderTpcFeedbackError = "";
_image = null; _image = null;
_imageName = null; _imageName = null;
imageError = null;
_image_picked = 0; _image_picked = 0;
notifyListeners();
} }
void resetAll(){ void resetAll(){
...@@ -415,6 +464,8 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -415,6 +464,8 @@ class Tpcagentsprovider extends ChangeNotifier{
_image = null; _image = null;
_imageName = null; _imageName = null;
_image_picked = 0; _image_picked = 0;
imageError = null;
notifyListeners();
} }
imgFromCamera(context) async { imgFromCamera(context) async {
...@@ -429,6 +480,7 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -429,6 +480,7 @@ class Tpcagentsprovider extends ChangeNotifier{
_image = File(galleryImage!.path); _image = File(galleryImage!.path);
_imageName = File(galleryImage!.name); _imageName = File(galleryImage!.name);
_image_picked = 1; _image_picked = 1;
imageError = null;
notifyListeners(); notifyListeners();
} catch (e) { } catch (e) {
debugPrint("mmmm: ${e.toString()}"); debugPrint("mmmm: ${e.toString()}");
...@@ -450,6 +502,7 @@ class Tpcagentsprovider extends ChangeNotifier{ ...@@ -450,6 +502,7 @@ class Tpcagentsprovider extends ChangeNotifier{
_image = File(galleryImage!.path); _image = File(galleryImage!.path);
_imageName = File(galleryImage!.name); _imageName = File(galleryImage!.name);
_image_picked = 1; _image_picked = 1;
imageError = null;
notifyListeners(); notifyListeners();
// var file = FlutterImageCompress.compressWithFile(galleryImage!.path); // var file = FlutterImageCompress.compressWithFile(galleryImage!.path);
} catch (e) { } catch (e) {
......
...@@ -216,6 +216,7 @@ class MyApp extends StatelessWidget { ...@@ -216,6 +216,7 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider(create: (_) => Crmeditprospectaccountprovider()), ChangeNotifierProvider(create: (_) => Crmeditprospectaccountprovider()),
ChangeNotifierProvider(create: (_) => Addprospectleadsprovider()), ChangeNotifierProvider(create: (_) => Addprospectleadsprovider()),
ChangeNotifierProvider(create: (_) => Editorderprovider()), ChangeNotifierProvider(create: (_) => Editorderprovider()),
ChangeNotifierProvider(create: (_) => Dispatchorderprovider()),
], ],
child: Builder( child: Builder(
builder: (BuildContext context) { builder: (BuildContext context) {
......
...@@ -54,7 +54,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> { ...@@ -54,7 +54,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
resizeToAvoidBottomInset: true, resizeToAvoidBottomInset: true,
appBar: appbar2( appBar: appbar2(
context, context,
widget.pageTitleName, "Lead Details (${widget.mode})",
provider.resetAll, provider.resetAll,
InkResponse( InkResponse(
onTap: () { onTap: () {
......
...@@ -40,6 +40,8 @@ export 'package:generp/Notifiers/ordersProvider/addPaymentProvider.dart'; ...@@ -40,6 +40,8 @@ export 'package:generp/Notifiers/ordersProvider/addPaymentProvider.dart';
export 'package:generp/Notifiers/ordersProvider/addOrderProvider.dart'; export 'package:generp/Notifiers/ordersProvider/addOrderProvider.dart';
export 'package:generp/Notifiers/ordersProvider/editPaymentProvider.dart'; export 'package:generp/Notifiers/ordersProvider/editPaymentProvider.dart';
export 'package:generp/Notifiers/ordersProvider/editOrderProvider.dart'; export 'package:generp/Notifiers/ordersProvider/editOrderProvider.dart';
export 'package:generp/Notifiers/ordersProvider/dispatchOrderProvider.dart';
export 'package:generp/Notifiers/crmProvider/crmDashboardProvider.dart'; export 'package:generp/Notifiers/crmProvider/crmDashboardProvider.dart';
export 'package:generp/Notifiers/crmProvider/LeadListProvider.dart'; export 'package:generp/Notifiers/crmProvider/LeadListProvider.dart';
......
This diff is collapsed.
This diff is collapsed.
...@@ -155,6 +155,7 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -155,6 +155,7 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
), ),
), ),
], ],
errorWidget(context, provider.imageError),
textControllerWidget( textControllerWidget(
context, context,
...@@ -212,7 +213,8 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -212,7 +213,8 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
TextInputType.text, TextInputType.text,
false, false,
null, null,
focusNodes[5],focusNodes[6],TextInputAction.next focusNodes[5],focusNodes[6],
TextInputAction.next
), ),
if (provider.tpcBankIFSCError != null) ...[ if (provider.tpcBankIFSCError != null) ...[
errorWidget(context, provider.tpcBankIFSCError), errorWidget(context, provider.tpcBankIFSCError),
...@@ -232,7 +234,8 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -232,7 +234,8 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
errorWidget(context, provider.tpcNoteError), errorWidget(context, provider.tpcNoteError),
], ],
InkWell( InkWell(
onTap: () { onTap:provider.submitClicked?null: () {
provider.submitClicked = true;
provider.addTPCAgentAPIFunction(context); provider.addTPCAgentAPIFunction(context);
}, },
...@@ -250,7 +253,9 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -250,7 +253,9 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
borderRadius: BorderRadius.circular(14.0), borderRadius: BorderRadius.circular(14.0),
), ),
child: Center( child: Center(
child: Text( child:provider.submitClicked?CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(Colors.white),
): Text(
"Submit", "Submit",
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle(color: Colors.white), style: TextStyle(color: Colors.white),
......
This diff is collapsed.
...@@ -90,6 +90,7 @@ import '../Models/ordersModels/addOrderTpcAgentListResponse.dart'; ...@@ -90,6 +90,7 @@ import '../Models/ordersModels/addOrderTpcAgentListResponse.dart';
import '../Models/ordersModels/commonResponse.dart'; import '../Models/ordersModels/commonResponse.dart';
import '../Models/ordersModels/ordersAccessiblePagesResponse.dart'; import '../Models/ordersModels/ordersAccessiblePagesResponse.dart';
import '../Models/ordersModels/ordersDetailsByModeResponse.dart'; import '../Models/ordersModels/ordersDetailsByModeResponse.dart';
import '../Models/ordersModels/ordersDetailsDispatchOrderViewResponse.dart';
import '../Models/ordersModels/ordersDetailsEditOrderViewResponse.dart'; import '../Models/ordersModels/ordersDetailsEditOrderViewResponse.dart';
import '../Models/ordersModels/ordersListByModeFilterResponse.dart'; import '../Models/ordersModels/ordersListByModeFilterResponse.dart';
import '../Models/ordersModels/ordersListByModeResponse.dart'; import '../Models/ordersModels/ordersListByModeResponse.dart';
...@@ -2485,6 +2486,33 @@ class ApiCalling { ...@@ -2485,6 +2486,33 @@ class ApiCalling {
} }
} }
static Future<ordersDetailsDispatchOrderViewResponse?> ordersDetailsDispatchOrderViewAPI(
empId,
session,
order_id,
) async {
try {
Map<String, String> data = {
'empId,':empId.toString(),
'session,':session.toString(),
'order_id,':order_id.toString(),
};
final res = await post(data, ordersOrderDetailsDispatchProductsUrl, {});
if(res!=null){
return ordersDetailsDispatchOrderViewResponse.fromJson(jsonDecode(res.body));
}else{
debugPrint("Null Response");
}
} catch (e) {
debugPrint('hello bev=bug $e ');
return null;
}
}
static Future<CommonResponse?> ordersDetailsApproveRejectAPI( static Future<CommonResponse?> ordersDetailsApproveRejectAPI(
empId, empId,
session, session,
......
...@@ -146,7 +146,7 @@ packages: ...@@ -146,7 +146,7 @@ packages:
source: hosted source: hosted
version: "1.1.2" version: "1.1.2"
collection: collection:
dependency: transitive dependency: "direct main"
description: description:
name: collection name: collection
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
......
...@@ -79,6 +79,7 @@ dependencies: ...@@ -79,6 +79,7 @@ dependencies:
printing: ^5.14.2 printing: ^5.14.2
interactive_slider: ^0.5.1 interactive_slider: ^0.5.1
tuple: ^2.0.2 tuple: ^2.0.2
collection: ^1.19.1
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
......
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