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;
}
}
...@@ -22,506 +22,522 @@ import '../../Models/ordersModels/addOrderTpcAgentListResponse.dart'; ...@@ -22,506 +22,522 @@ import '../../Models/ordersModels/addOrderTpcAgentListResponse.dart';
import '../../services/api_calling.dart'; import '../../services/api_calling.dart';
import '../HomeScreenNotifier.dart'; import '../HomeScreenNotifier.dart';
class Addorderprovider extends ChangeNotifier {TextEditingController dropDownSearchController = TextEditingController(); class Addorderprovider extends ChangeNotifier {
TextEditingController dropDownTpcSearchController = TextEditingController(); TextEditingController dropDownSearchController = TextEditingController();
TextEditingController billingStateSearchController = TextEditingController(); TextEditingController dropDownTpcSearchController = TextEditingController();
TextEditingController billingDistrictSearchController = TextEditingController(); TextEditingController billingStateSearchController = TextEditingController();
TextEditingController billingSubLocSearchController = TextEditingController(); TextEditingController billingDistrictSearchController =
TextEditingController dispatchStateSearchController = TextEditingController(); TextEditingController();
TextEditingController dispatchDistrictSearchController = TextEditingController(); TextEditingController billingSubLocSearchController = TextEditingController();
TextEditingController dispatchSubLocSearchController = TextEditingController(); TextEditingController dispatchStateSearchController = TextEditingController();
TextEditingController dispatchDistrictSearchController =
TextEditingController billingNameController = TextEditingController(); TextEditingController();
TextEditingController billingAddressController = TextEditingController(); TextEditingController dispatchSubLocSearchController =
TextEditingController billingPincodeController = TextEditingController(); TextEditingController();
TextEditingController dispatchAddressController = TextEditingController();
TextEditingController dispatchPincodeController = TextEditingController(); TextEditingController billingNameController = TextEditingController();
TextEditingController gstController = TextEditingController(); TextEditingController billingAddressController = TextEditingController();
TextEditingController orderReceivedDateController = TextEditingController(); TextEditingController billingPincodeController = TextEditingController();
TextEditingController tpcAmountController = TextEditingController(); TextEditingController dispatchAddressController = TextEditingController();
TextEditingController dispatchPincodeController = TextEditingController();
List<TextEditingController> ProductControllers = []; TextEditingController gstController = TextEditingController();
List<TextEditingController> PriceControllers = []; TextEditingController orderReceivedDateController = TextEditingController();
List<TextEditingController> QuantityControllers = []; TextEditingController tpcAmountController = TextEditingController();
List<TextEditingController> CGSTControllers = [];
List<TextEditingController> SGSTControllers = []; List<TextEditingController> ProductControllers = [];
List<TextEditingController> IGSTControllers = []; List<TextEditingController> PriceControllers = [];
List<TextEditingController> TotalPriceControllers = []; List<TextEditingController> QuantityControllers = [];
List<TextEditingController> TaxableValueControllers = []; List<TextEditingController> CGSTControllers = [];
List<TextEditingController> SGSTControllers = [];
TextEditingController basicAmountReadOnlyController = TextEditingController(); List<TextEditingController> IGSTControllers = [];
TextEditingController cgstReadOnlyController = TextEditingController(); List<TextEditingController> TotalPriceControllers = [];
TextEditingController sgstReadOnlyController = TextEditingController(); List<TextEditingController> TaxableValueControllers = [];
TextEditingController igstReadOnlyController = TextEditingController();
TextEditingController totalReadOnlyAmountController = TextEditingController(); TextEditingController basicAmountReadOnlyController = TextEditingController();
TextEditingController noteController = TextEditingController(); TextEditingController cgstReadOnlyController = TextEditingController();
List<AccountList> _accountList = []; TextEditingController sgstReadOnlyController = TextEditingController();
List<Employees> _employees = []; TextEditingController igstReadOnlyController = TextEditingController();
List<States> _billingStates = []; TextEditingController totalReadOnlyAmountController = TextEditingController();
List<States> _dispatchStates = []; TextEditingController noteController = TextEditingController();
List<SaleProducts> _saleProducts = []; List<AccountList> _accountList = [];
List<Employees> _employees = [];
List<Districts> _billingDistricts = []; List<States> _billingStates = [];
List<Districts> _dispatchDistricts = []; List<States> _dispatchStates = [];
List<SubLocations> _billingSubLocations = []; List<SaleProducts> _saleProducts = [];
List<SubLocations> _dispatchSubLocations = [];
List<Districts> _billingDistricts = [];
List<String> _unloadingScope = []; List<Districts> _dispatchDistricts = [];
List<String> _freightScope = []; List<SubLocations> _billingSubLocations = [];
List<String> _erectionScope = []; List<SubLocations> _dispatchSubLocations = [];
List<String> _tpcApplicable = [];
List<TpcList> _tpcAgent = []; List<String> _unloadingScope = [];
List<String> _freightScope = [];
AccountDetails _accountDetails = AccountDetails(); List<String> _erectionScope = [];
List<String> _tpcApplicable = [];
String selectAccountError = ""; List<TpcList> _tpcAgent = [];
String billingNameError = "";
String billingAddressError = ""; AccountDetails _accountDetails = AccountDetails();
String billingPincodeError = "";
String dispatchAddressError = ""; String selectAccountError = "";
String dispatchPincodeError = ""; String orderDateError = "";
String tpcAmountError = ""; String billingNameError = "";
String gstError = ""; String billingAddressError = "";
String billingPincodeError = "";
AccountList? _selectedAccountList; String dispatchAddressError = "";
String? _selectedAccountID; String dispatchPincodeError = "";
String? _selectedAccountName; String tpcAmountError = "";
String gstError = "";
Employees? _selectedEmployees; String selectedBillingStateError = "";
String? _selectedEmployeeID; String selectedBillingDistrictError = "";
String? _selectedEmployeeName; String selectedBillingSubLocError = "";
String selectedDispatchStateError = "";
States? _selectedBillingStates; String selectedDispatchDistrictError = "";
String? _selectedBillingStateID; String selectedDispatchSubLocError = "";
String? _selectedBillingStateName;
AccountList? _selectedAccountList;
Districts? _selectedBillingDistricts; String? _selectedAccountID;
String? _selectedBillingDistrictID; String? _selectedAccountName;
String? _selectedBillingDistrictValue;
Employees? _selectedEmployees;
SubLocations? _selectedBillingSubLocations; String? _selectedEmployeeID;
String? _selectedBillingSubLocID; String? _selectedEmployeeName;
String? _selectedBillingSubLocValue;
States? _selectedBillingStates;
States? _selectedDispatchStates; String? _selectedBillingStateID;
String? _selectedDispatchStateID; String? _selectedBillingStateName;
String? _selectedDispatchStateName;
Districts? _selectedBillingDistricts;
Districts? _selectedDispatchDistricts; String? _selectedBillingDistrictID;
String? _selectedDispatchDistrictID; String? _selectedBillingDistrictValue;
String? _selectedDispatchDistrictValue;
SubLocations? _selectedBillingSubLocations;
SubLocations? _selectedDispatchSubLocations; String? _selectedBillingSubLocID;
String? _selectedDispatchSubLocID; String? _selectedBillingSubLocValue;
String? _selectedDispatchSubLocValue;
States? _selectedDispatchStates;
SaleProducts? _selectedSaleProducts; String? _selectedDispatchStateID;
String? _selectedDispatchStateName;
List<String?> _selectedSaleProductID = [];
String? _selectedSaleProductName; Districts? _selectedDispatchDistricts;
String? _selectedDispatchDistrictID;
String? _selectedUnloadingScope; String? _selectedDispatchDistrictValue;
String? _selectedFreightScope;
String? _selectedErectionScope; SubLocations? _selectedDispatchSubLocations;
String? _selectedTpcStatus; String? _selectedDispatchSubLocID;
TpcList? _selectedTpcAgent; String? _selectedDispatchSubLocValue;
String? _selectedTpcAgentID;
String? _selectedTpcAgentValue; SaleProducts? _selectedSaleProducts;
List<String?> _selectedSaleProductID = [];
String? _selectedSaleProductName;
LatLng startLocation = const LatLng(17.439112226708446, 78.43292499146135); String? _selectedUnloadingScope;
LatLng? currentLocationLatLng; String? _selectedFreightScope;
String latlongs = ""; String? _selectedErectionScope;
Set<Marker> markers = {}; String? _selectedTpcStatus;
Location.LocationData? currentLocation; TpcList? _selectedTpcAgent;
bool isLocationEnabled = false; String? _selectedTpcAgentID;
bool hasLocationPermission = false; String? _selectedTpcAgentValue;
String? FileError; LatLng startLocation = const LatLng(17.439112226708446, 78.43292499146135);
String? dateError; LatLng? currentLocationLatLng;
bool _isLoading = false; String latlongs = "";
int _imagePicked = 0; Set<Marker> markers = {};
File? _image; Location.LocationData? currentLocation;
File? _imageName; bool isLocationEnabled = false;
final ImagePicker _picker = ImagePicker(); bool hasLocationPermission = false;
DateTime? _date;
String? _formattedDate; String? FileError;
Timer? _debounce; String? dateError;
List<Map<String, String>> _selectedOrders = []; bool _isLoading = false;
int _imagePicked = 0;
List<Map<String, String>> get selectedOrders => _selectedOrders; File? _image;
File? _imageName;
bool _submitClicked = false; final ImagePicker _picker = ImagePicker();
DateTime? _date;
bool get submitClicked => _submitClicked; String? _formattedDate;
Timer? _debounce;
set submitClicked(bool value){ List<Map<String, String>> _selectedOrders = [];
List<Map<String, String>> get selectedOrders => _selectedOrders;
bool _submitClicked = false;
bool get submitClicked => _submitClicked;
set submitClicked(bool value) {
_submitClicked = value; _submitClicked = value;
notifyListeners(); notifyListeners();
} }
set selectedOrders(value) { set selectedOrders(value) {
_selectedOrders = selectedOrders; _selectedOrders = selectedOrders;
notifyListeners(); notifyListeners();
} }
bool get isLoading => _isLoading; bool get isLoading => _isLoading;
String? get formattedDate => _formattedDate; String? get formattedDate => _formattedDate;
DateTime? get dateNow => _date; DateTime? get dateNow => _date;
File? get imagePath => _imageName; File? get imagePath => _imageName;
File? get imageFilePath => _image; File? get imageFilePath => _image;
int get imagePicked => _imagePicked; int get imagePicked => _imagePicked;
List<AccountList> get accountList => _accountList; List<AccountList> get accountList => _accountList;
List<Employees> get employees => _employees; List<Employees> get employees => _employees;
List<SaleProducts> get saleProducts => _saleProducts; List<SaleProducts> get saleProducts => _saleProducts;
List<String> get unloadingScope => _unloadingScope; List<String> get unloadingScope => _unloadingScope;
List<String> get freightScope => _freightScope; List<String> get freightScope => _freightScope;
List<String> get erectionScope => _erectionScope; List<String> get erectionScope => _erectionScope;
List<String> get tpcApplicable => _tpcApplicable; List<String> get tpcApplicable => _tpcApplicable;
List<TpcList> get tpcAgent => _tpcAgent; List<TpcList> get tpcAgent => _tpcAgent;
AccountList? get selectedAccountList => _selectedAccountList; AccountList? get selectedAccountList => _selectedAccountList;
String? get selectedAccountID => _selectedAccountID; String? get selectedAccountID => _selectedAccountID;
String? get selectedAccountName => _selectedAccountName; String? get selectedAccountName => _selectedAccountName;
Employees? get selectedEmployees => _selectedEmployees; Employees? get selectedEmployees => _selectedEmployees;
String? get selectedEmployeeID => _selectedEmployeeID; String? get selectedEmployeeID => _selectedEmployeeID;
String? get selectedEmployeeName => _selectedEmployeeName; String? get selectedEmployeeName => _selectedEmployeeName;
List<States> get billingStates => _billingStates; List<States> get billingStates => _billingStates;
States? get selecetdBillingStates => _selectedBillingStates; States? get selecetdBillingStates => _selectedBillingStates;
String? get selectedBillingStateID => _selectedBillingStateID; String? get selectedBillingStateID => _selectedBillingStateID;
String? get selectedBillingStateName => _selectedBillingStateName; String? get selectedBillingStateName => _selectedBillingStateName;
List<Districts> get billingDistricts => _billingDistricts; List<Districts> get billingDistricts => _billingDistricts;
List<SubLocations> get billingSubLocations => _billingSubLocations; List<SubLocations> get billingSubLocations => _billingSubLocations;
Districts? get selectedBillingDistricts => _selectedBillingDistricts; Districts? get selectedBillingDistricts => _selectedBillingDistricts;
String? get selectedBillingDistrictId => _selectedBillingDistrictID; String? get selectedBillingDistrictId => _selectedBillingDistrictID;
String? get selectedBillingDistrictValue => _selectedBillingDistrictValue; String? get selectedBillingDistrictValue => _selectedBillingDistrictValue;
SubLocations? get selectedBillingSubLocations => _selectedBillingSubLocations; SubLocations? get selectedBillingSubLocations => _selectedBillingSubLocations;
String? get selectedBillingSubLocID => _selectedBillingSubLocID; String? get selectedBillingSubLocID => _selectedBillingSubLocID;
String? get selectedBillingSubLocValue => _selectedBillingSubLocValue; String? get selectedBillingSubLocValue => _selectedBillingSubLocValue;
List<States> get dispatchStates => _dispatchStates; List<States> get dispatchStates => _dispatchStates;
States? get selecetdDispatchStates => _selectedDispatchStates; States? get selecetdDispatchStates => _selectedDispatchStates;
String? get selectedDispatchStateID => _selectedDispatchStateID; String? get selectedDispatchStateID => _selectedDispatchStateID;
String? get selectedDispatchStateName => _selectedDispatchStateName; String? get selectedDispatchStateName => _selectedDispatchStateName;
List<Districts> get dispatchDistricts => _dispatchDistricts; List<Districts> get dispatchDistricts => _dispatchDistricts;
List<SubLocations> get dispatchSubLocations => _dispatchSubLocations; List<SubLocations> get dispatchSubLocations => _dispatchSubLocations;
Districts? get selectedDispatchDistricts => _selectedDispatchDistricts; Districts? get selectedDispatchDistricts => _selectedDispatchDistricts;
String? get selectedDispatchDistrictId => _selectedDispatchDistrictID; String? get selectedDispatchDistrictId => _selectedDispatchDistrictID;
String? get selectedDispatchDistrictValue => _selectedDispatchDistrictValue; String? get selectedDispatchDistrictValue => _selectedDispatchDistrictValue;
SubLocations? get selectedDispatchSubLocations => SubLocations? get selectedDispatchSubLocations =>
_selectedDispatchSubLocations; _selectedDispatchSubLocations;
String? get selectedDispatchSubLocID => _selectedDispatchSubLocID; String? get selectedDispatchSubLocID => _selectedDispatchSubLocID;
String? get selectedDispatchSubLocValue => _selectedDispatchSubLocValue; String? get selectedDispatchSubLocValue => _selectedDispatchSubLocValue;
SaleProducts? get selectedSaleProducts => _selectedSaleProducts; SaleProducts? get selectedSaleProducts => _selectedSaleProducts;
List<String?> get selectedSaleProductID => _selectedSaleProductID; List<String?> get selectedSaleProductID => _selectedSaleProductID;
String? get selectedSaleProductName => _selectedSaleProductName; String? get selectedSaleProductName => _selectedSaleProductName;
String? get selectedUnloadingScope => _selectedUnloadingScope; String? get selectedUnloadingScope => _selectedUnloadingScope;
String? get selectedFreightScope => _selectedFreightScope; String? get selectedFreightScope => _selectedFreightScope;
String? get selectedErectionScope => _selectedErectionScope; String? get selectedErectionScope => _selectedErectionScope;
String? get selectedTpcStatus => _selectedTpcStatus; String? get selectedTpcStatus => _selectedTpcStatus;
TpcList? get selectedTpcAgent => _selectedTpcAgent; TpcList? get selectedTpcAgent => _selectedTpcAgent;
String? get selectedTpcAgentID => _selectedTpcAgentID; String? get selectedTpcAgentID => _selectedTpcAgentID;
String? get selectedTpcAgentValue => _selectedTpcAgentValue; String? get selectedTpcAgentValue => _selectedTpcAgentValue;
AccountDetails get accountDetails => _accountDetails; AccountDetails get accountDetails => _accountDetails;
set accountList(List<AccountList> value) { set accountList(List<AccountList> value) {
_accountList = value; _accountList = value;
notifyListeners(); notifyListeners();
} }
set selectedAccountList(AccountList? value) { set selectedAccountList(AccountList? value) {
_selectedAccountList = value; _selectedAccountList = value;
_selectedAccountID = value!.id; _selectedAccountID = value!.id;
_selectedAccountName = value!.text!; _selectedAccountName = value!.text!;
notifyListeners(); notifyListeners();
} }
set selectedAccountID(String? value) { set selectedAccountID(String? value) {
_selectedAccountID = value; _selectedAccountID = value;
notifyListeners(); notifyListeners();
} }
set selectedAccountName(String? value) { set selectedAccountName(String? value) {
_selectedAccountName = value; _selectedAccountName = value;
notifyListeners(); notifyListeners();
} }
set selectedEmployees(Employees? value) { set selectedEmployees(Employees? value) {
_selectedEmployees = value; _selectedEmployees = value;
_selectedEmployeeID = value!.id; _selectedEmployeeID = value!.id;
_selectedEmployeeName = value!.name!; _selectedEmployeeName = value!.name!;
notifyListeners(); notifyListeners();
} }
set selectedEmployeeID(String? value) { set selectedEmployeeID(String? value) {
_selectedEmployeeID = value; _selectedEmployeeID = value;
notifyListeners(); notifyListeners();
} }
set selectedEmployeeName(String? value) { set selectedEmployeeName(String? value) {
_selectedEmployeeName = value; _selectedEmployeeName = value;
notifyListeners(); notifyListeners();
} }
set selecetdBillingStates(States? value) { set selecetdBillingStates(States? value) {
_selectedBillingStates = value; _selectedBillingStates = value;
_selectedBillingStateID = value!.id; _selectedBillingStateID = value!.id;
_selectedBillingStateName = value!.name!; _selectedBillingStateName = value!.name!;
selectedBillingStateError = "";
notifyListeners(); notifyListeners();
} }
set selectedBillingStateID(String? value) { set selectedBillingStateID(String? value) {
_selectedBillingStateID = value; _selectedBillingStateID = value;
selectedBillingStateError = "";
notifyListeners(); notifyListeners();
} }
set selectedBillingStateName(String? value) { set selectedBillingStateName(String? value) {
_selectedBillingStateName = value; _selectedBillingStateName = value;
selectedBillingStateError = "";
notifyListeners(); notifyListeners();
} }
set selectedBillingDistricts(Districts? value) { set selectedBillingDistricts(Districts? value) {
_selectedBillingDistricts = value; _selectedBillingDistricts = value;
_selectedBillingDistrictID = value!.id; _selectedBillingDistrictID = value!.id;
_selectedBillingDistrictValue = value!.district; _selectedBillingDistrictValue = value!.district;
selectedBillingDistrictError = "";
// districtError = null; // districtError = null;
notifyListeners(); notifyListeners();
} }
set selectedBillingSubLocations(SubLocations? value) { set selectedBillingSubLocations(SubLocations? value) {
_selectedBillingSubLocations = value; _selectedBillingSubLocations = value;
_selectedBillingSubLocID = value!.id; _selectedBillingSubLocID = value!.id;
_selectedBillingSubLocValue = value!.subLocality!; _selectedBillingSubLocValue = value!.subLocality!;
selectedBillingSubLocError = "";
// localityError = null; // localityError = null;
notifyListeners(); notifyListeners();
} }
set selectedBillingDistrictId(value) { set selectedBillingDistrictId(value) {
_selectedBillingDistrictID = value; _selectedBillingDistrictID = value;
notifyListeners(); notifyListeners();
} }
set selectedBillingDistrictValue(value) { set selectedBillingDistrictValue(value) {
_selectedBillingDistrictValue = value; _selectedBillingDistrictValue = value;
notifyListeners(); notifyListeners();
} }
set selectedBillingSubLocID(value) { set selectedBillingSubLocID(value) {
_selectedBillingSubLocID = value; _selectedBillingSubLocID = value;
notifyListeners(); notifyListeners();
} }
set selectedBillingSubLocValue(value) { set selectedBillingSubLocValue(value) {
_selectedBillingSubLocValue = value; _selectedBillingSubLocValue = value;
notifyListeners(); notifyListeners();
} }
set selecetdDispatchStates(States? value) { set selecetdDispatchStates(States? value) {
_selectedDispatchStates = value; _selectedDispatchStates = value;
_selectedDispatchStateID = value!.id; _selectedDispatchStateID = value!.id;
_selectedDispatchStateName = value!.name!; _selectedDispatchStateName = value!.name!;
selectedDispatchStateError = "";
notifyListeners(); notifyListeners();
} }
set selectedDispatchStateID(String? value) { set selectedDispatchStateID(String? value) {
_selectedDispatchStateID = value; _selectedDispatchStateID = value;
notifyListeners(); notifyListeners();
} }
set selectedDispatchStateName(String? value) { set selectedDispatchStateName(String? value) {
_selectedDispatchStateName = value; _selectedDispatchStateName = value;
notifyListeners(); notifyListeners();
} }
set selectedDispatchDistricts(Districts? value) { set selectedDispatchDistricts(Districts? value) {
_selectedDispatchDistricts = value; _selectedDispatchDistricts = value;
_selectedDispatchDistrictID = value!.id; _selectedDispatchDistrictID = value!.id;
_selectedDispatchDistrictValue = value!.district; _selectedDispatchDistrictValue = value!.district;
selectedDispatchDistrictError = "";
// districtError = null; // districtError = null;
notifyListeners(); notifyListeners();
} }
set selectedDispatchSubLocations(SubLocations? value) { set selectedDispatchSubLocations(SubLocations? value) {
_selectedDispatchSubLocations = value; _selectedDispatchSubLocations = value;
_selectedDispatchSubLocID = value!.id; _selectedDispatchSubLocID = value!.id;
_selectedDispatchSubLocValue = value!.subLocality!; _selectedDispatchSubLocValue = value!.subLocality!;
selectedDispatchSubLocError = "";
// localityError = null; // localityError = null;
notifyListeners(); notifyListeners();
} }
set selectedDispatchDistrictId(value) { set selectedDispatchDistrictId(value) {
_selectedDispatchDistrictID = value; _selectedDispatchDistrictID = value;
notifyListeners(); notifyListeners();
} }
set selectedDispatchDistrictValue(value) { set selectedDispatchDistrictValue(value) {
_selectedDispatchDistrictValue = value; _selectedDispatchDistrictValue = value;
notifyListeners(); notifyListeners();
} }
set selectedDispatchSubLocID(value) { set selectedDispatchSubLocID(value) {
_selectedDispatchSubLocID = value; _selectedDispatchSubLocID = value;
notifyListeners(); notifyListeners();
} }
set selectedDispatchSubLocValue(value) { set selectedDispatchSubLocValue(value) {
_selectedDispatchSubLocValue = value; _selectedDispatchSubLocValue = value;
notifyListeners(); notifyListeners();
} }
set selectedSaleProducts(SaleProducts? value) { set selectedSaleProducts(SaleProducts? value) {
_selectedSaleProducts = value; _selectedSaleProducts = value;
// _selectedSaleProductID = value!.id!; // _selectedSaleProductID = value!.id!;
// _selectedSaleProductName = value!.prodName; // _selectedSaleProductName = value!.prodName;
notifyListeners(); notifyListeners();
} }
set selectedSaleProductID(List<String?> value) { set selectedSaleProductID(List<String?> value) {
_selectedSaleProductID = value; _selectedSaleProductID = value;
notifyListeners(); notifyListeners();
} }
set selectedSaleProductName(String? value) { set selectedSaleProductName(String? value) {
_selectedSaleProductName = value; _selectedSaleProductName = value;
notifyListeners(); notifyListeners();
} }
set selectedUnloadingScope(String? value) { set selectedUnloadingScope(String? value) {
_selectedUnloadingScope = value; _selectedUnloadingScope = value;
notifyListeners(); notifyListeners();
} }
set selectedFreightScope(String? value) { set selectedFreightScope(String? value) {
_selectedFreightScope = value; _selectedFreightScope = value;
notifyListeners(); notifyListeners();
} }
set selectedErectionScope(String? value) { set selectedErectionScope(String? value) {
_selectedErectionScope = value; _selectedErectionScope = value;
notifyListeners(); notifyListeners();
} }
set selectedTpcStatus(String? value) { set selectedTpcStatus(String? value) {
_selectedTpcStatus = value; _selectedTpcStatus = value;
notifyListeners(); notifyListeners();
} }
set selectedTpcAgent(TpcList? value) { set selectedTpcAgent(TpcList? value) {
_selectedTpcAgent = value; _selectedTpcAgent = value;
_selectedTpcAgentID = value!.id; _selectedTpcAgentID = value!.id;
_selectedTpcAgentValue = value!.text; _selectedTpcAgentValue = value!.text;
notifyListeners(); notifyListeners();
} }
set selectedTpcAgentID(String? value) { set selectedTpcAgentID(String? value) {
_selectedTpcAgentID = value; _selectedTpcAgentID = value;
notifyListeners(); notifyListeners();
} }
set selectedTpcAgentValue(String? value) { set selectedTpcAgentValue(String? value) {
_selectedTpcAgentValue = value; _selectedTpcAgentValue = value;
notifyListeners(); notifyListeners();
} }
set accountDetails(AccountDetails value) { set accountDetails(AccountDetails value) {
_accountDetails = value; _accountDetails = value;
notifyListeners(); notifyListeners();
} }
set imagePath(File? value) { set imagePath(File? value) {
_imageName = value; _imageName = value;
notifyListeners(); notifyListeners();
} }
set imageFilePath(File? value) { set imageFilePath(File? value) {
_image = value; _image = value;
notifyListeners(); notifyListeners();
} }
set imagePicked(value) { set imagePicked(value) {
_imagePicked = value; _imagePicked = value;
notifyListeners(); notifyListeners();
} }
set formattedDate(String? value) { set formattedDate(String? value) {
_formattedDate = value; _formattedDate = value;
orderReceivedDateController.text = _formattedDate!; orderReceivedDateController.text = _formattedDate!;
dateError = null; dateError = null;
notifyListeners(); notifyListeners();
} }
void setDate(DateTime newDate) { void setDate(DateTime newDate) {
_date = newDate; _date = newDate;
_formattedDate = DateFormat('yyyy-MM-dd').format(newDate); _formattedDate = DateFormat('yyyy-MM-dd').format(newDate);
orderReceivedDateController.text = _formattedDate!; orderReceivedDateController.text = _formattedDate!;
dateError = null; dateError = null;
notifyListeners(); notifyListeners();
} }
dynamic get basicAmount { dynamic get basicAmount {
double total = 0; double total = 0;
for (var controller in TaxableValueControllers) { for (var controller in TaxableValueControllers) {
total += double.tryParse(controller.text)?.round() ?? 0.0; total += double.tryParse(controller.text)?.round() ?? 0.0;
} }
basicAmountReadOnlyController.text = total.toStringAsFixed(2); basicAmountReadOnlyController.text = total.toStringAsFixed(2);
return total; return total;
} }
dynamic get cgstAmount { dynamic get cgstAmount {
double total = 0; double total = 0;
for (int i = 0; i < ProductControllers.length; i++) { for (int i = 0; i < ProductControllers.length; i++) {
final taxableValue = final taxableValue =
...@@ -531,9 +547,9 @@ dynamic get cgstAmount { ...@@ -531,9 +547,9 @@ dynamic get cgstAmount {
} }
cgstReadOnlyController.text = total.toStringAsFixed(2); cgstReadOnlyController.text = total.toStringAsFixed(2);
return total; return total;
} }
dynamic get sgstAmount { dynamic get sgstAmount {
double total = 0; double total = 0;
for (int i = 0; i < ProductControllers.length; i++) { for (int i = 0; i < ProductControllers.length; i++) {
final taxableValue = final taxableValue =
...@@ -543,9 +559,9 @@ dynamic get sgstAmount { ...@@ -543,9 +559,9 @@ dynamic get sgstAmount {
} }
sgstReadOnlyController.text = total.toStringAsFixed(2); sgstReadOnlyController.text = total.toStringAsFixed(2);
return total; return total;
} }
dynamic get igstAmount { dynamic get igstAmount {
double total = 0; double total = 0;
for (int i = 0; i < ProductControllers.length; i++) { for (int i = 0; i < ProductControllers.length; i++) {
final taxableValue = final taxableValue =
...@@ -555,15 +571,15 @@ dynamic get igstAmount { ...@@ -555,15 +571,15 @@ dynamic get igstAmount {
} }
igstReadOnlyController.text = total.toStringAsFixed(2); igstReadOnlyController.text = total.toStringAsFixed(2);
return total; return total;
} }
dynamic get totalAmount { dynamic get totalAmount {
double total = basicAmount + cgstAmount + sgstAmount + igstAmount; double total = basicAmount + cgstAmount + sgstAmount + igstAmount;
totalReadOnlyAmountController.text = total.round().toStringAsFixed(2); totalReadOnlyAmountController.text = total.round().toStringAsFixed(2);
return total! ; return total!;
} }
void addNewRow() { void addNewRow() {
ProductControllers.add(TextEditingController()); ProductControllers.add(TextEditingController());
PriceControllers.add(TextEditingController()); PriceControllers.add(TextEditingController());
QuantityControllers.add(TextEditingController(text: '1')); QuantityControllers.add(TextEditingController(text: '1'));
...@@ -571,12 +587,13 @@ void addNewRow() { ...@@ -571,12 +587,13 @@ void addNewRow() {
SGSTControllers.add(TextEditingController(text: '9')); SGSTControllers.add(TextEditingController(text: '9'));
IGSTControllers.add(TextEditingController(text: '0')); IGSTControllers.add(TextEditingController(text: '0'));
TaxableValueControllers.add(TextEditingController()); TaxableValueControllers.add(TextEditingController());
TotalPriceControllers.add(TextEditingController());
selectedSaleProductID.add(null); selectedSaleProductID.add(null);
notifyListeners(); notifyListeners();
} }
void removeRow(int index) { void removeRow(int index) {
if (index >= 0 && index < ProductControllers.length) { if (index >= 0 && index < ProductControllers.length) {
ProductControllers[index].dispose(); ProductControllers[index].dispose();
PriceControllers[index].dispose(); PriceControllers[index].dispose();
...@@ -585,6 +602,7 @@ void removeRow(int index) { ...@@ -585,6 +602,7 @@ void removeRow(int index) {
SGSTControllers[index].dispose(); SGSTControllers[index].dispose();
IGSTControllers[index].dispose(); IGSTControllers[index].dispose();
TaxableValueControllers[index].dispose(); TaxableValueControllers[index].dispose();
TotalPriceControllers[index].dispose();
ProductControllers.removeAt(index); ProductControllers.removeAt(index);
PriceControllers.removeAt(index); PriceControllers.removeAt(index);
QuantityControllers.removeAt(index); QuantityControllers.removeAt(index);
...@@ -592,12 +610,13 @@ void removeRow(int index) { ...@@ -592,12 +610,13 @@ void removeRow(int index) {
SGSTControllers.removeAt(index); SGSTControllers.removeAt(index);
IGSTControllers.removeAt(index); IGSTControllers.removeAt(index);
TaxableValueControllers.removeAt(index); TaxableValueControllers.removeAt(index);
TotalPriceControllers.removeAt(index);
selectedSaleProductID.removeAt(index); selectedSaleProductID.removeAt(index);
notifyListeners(); notifyListeners();
} }
} }
void updateSelectedProduct(int index, SaleProducts? product) { void updateSelectedProduct(int index, SaleProducts? product) {
if (index >= 0 && index < _saleProducts.length) { if (index >= 0 && index < _saleProducts.length) {
_selectedSaleProducts = product; _selectedSaleProducts = product;
_selectedSaleProductID[index] = product!.id; _selectedSaleProductID[index] = product!.id;
...@@ -605,9 +624,9 @@ void updateSelectedProduct(int index, SaleProducts? product) { ...@@ -605,9 +624,9 @@ void updateSelectedProduct(int index, SaleProducts? product) {
updateRowCalculations(index); updateRowCalculations(index);
notifyListeners(); notifyListeners();
} }
} }
void updateRowCalculations(int index) { void updateRowCalculations(int index) {
if (index >= 0 && index < PriceControllers.length) { if (index >= 0 && index < PriceControllers.length) {
final inclusivePrice = final inclusivePrice =
double.tryParse(PriceControllers[index].text) ?? 0.0; double.tryParse(PriceControllers[index].text) ?? 0.0;
...@@ -625,21 +644,20 @@ void updateRowCalculations(int index) { ...@@ -625,21 +644,20 @@ void updateRowCalculations(int index) {
); );
notifyListeners(); notifyListeners();
} }
} }
///[{"product_id":"1","qty":"1","price":"500","cgst_p":"9","sgst_p":"9","igst_p":"0","total_price":"500"},
///{"product_id":"2","qty":"1","price":"1000","cgst_p":"9","sgst_p":"9","igst_p":"0","total_price":"1000"}]
Map<String, dynamic> getFormData() { Map<String, dynamic> getFormData() {
final List<Map<String, dynamic>> orders = []; final List<Map<String, dynamic>> orders = [];
for (int i = 0; i < ProductControllers.length; i++) { for (int i = 0; i < ProductControllers.length; i++) {
orders.add({ orders.add({
'product_id': selectedSaleProductID[i], 'product_id': selectedSaleProductID[i],
'product_name': ProductControllers[i].text, 'qty': QuantityControllers[i].text,
'inclusive_price': PriceControllers[i].text, 'price': PriceControllers[i].text,
'quantity': QuantityControllers[i].text, 'cgst_p': CGSTControllers[i].text,
'cgst': CGSTControllers[i].text, 'sgst_p': SGSTControllers[i].text,
'sgst': SGSTControllers[i].text, 'igst_p': IGSTControllers[i].text,
'igst': IGSTControllers[i].text, 'total_price': TaxableValueControllers[i].text,
'taxable_value': TaxableValueControllers[i].text,
}); });
} }
return { return {
...@@ -807,14 +825,14 @@ void updateRowCalculations(int index) { ...@@ -807,14 +825,14 @@ void updateRowCalculations(int index) {
); );
if (data != null) { if (data != null) {
if (data.error == "0") { if (data.error == "0") {
_tpcApplicable = ["Yes","No"]; _tpcApplicable = ["Yes", "No"];
_erectionScope = data.erectionScope??[]; _erectionScope = data.erectionScope ?? [];
_unloadingScope = data.unloadingScope??[]; _unloadingScope = data.unloadingScope ?? [];
_freightScope = data.freightScope??[]; _freightScope = data.freightScope ?? [];
_employees = data.employees??[]; _employees = data.employees ?? [];
_billingStates = data.states??[]; _billingStates = data.states ?? [];
_dispatchStates = data.states??[]; _dispatchStates = data.states ?? [];
_saleProducts = data.saleProducts??[]; _saleProducts = data.saleProducts ?? [];
checkDropdownselected(); checkDropdownselected();
...@@ -839,7 +857,6 @@ void updateRowCalculations(int index) { ...@@ -839,7 +857,6 @@ void updateRowCalculations(int index) {
!_billingStates.contains(_selectedBillingStates)) { !_billingStates.contains(_selectedBillingStates)) {
_selectedBillingStateID = null; _selectedBillingStateID = null;
_selectedBillingStateName = ""; _selectedBillingStateName = "";
} }
if (_selectedBillingDistricts != null && if (_selectedBillingDistricts != null &&
!_billingDistricts.contains(_selectedBillingDistricts)) { !_billingDistricts.contains(_selectedBillingDistricts)) {
...@@ -884,8 +901,7 @@ void updateRowCalculations(int index) { ...@@ -884,8 +901,7 @@ void updateRowCalculations(int index) {
_selectedTpcStatus = null; _selectedTpcStatus = null;
} }
if (_selectedTpcAgent != null && if (_selectedTpcAgent != null && !_tpcAgent.contains(_selectedTpcAgent)) {
!_tpcAgent.contains(_selectedTpcAgent)) {
_selectedTpcAgentID = null; _selectedTpcAgentID = null;
_selectedTpcAgentValue = ""; _selectedTpcAgentValue = "";
} }
...@@ -941,6 +957,7 @@ void updateRowCalculations(int index) { ...@@ -941,6 +957,7 @@ void updateRowCalculations(int index) {
} }
} catch (e, s) {} } catch (e, s) {}
} }
Future<void> getDispatchDistrictAPI(context, stateID) async { Future<void> getDispatchDistrictAPI(context, stateID) async {
try { try {
var homeProv = Provider.of<HomescreenNotifier>(context, listen: false); var homeProv = Provider.of<HomescreenNotifier>(context, listen: false);
...@@ -980,6 +997,7 @@ void updateRowCalculations(int index) { ...@@ -980,6 +997,7 @@ void updateRowCalculations(int index) {
} }
} catch (e, s) {} } catch (e, s) {}
} }
Future<void> getDispatchSubLocationAPI(context, districtID) async { Future<void> getDispatchSubLocationAPI(context, districtID) async {
try { try {
var homeProv = Provider.of<HomescreenNotifier>(context, listen: false); var homeProv = Provider.of<HomescreenNotifier>(context, listen: false);
...@@ -1000,7 +1018,7 @@ void updateRowCalculations(int index) { ...@@ -1000,7 +1018,7 @@ void updateRowCalculations(int index) {
} catch (e, s) {} } catch (e, s) {}
} }
Future<void> ordersAddOrderTPCAgentFunction(context,mode, text) async { Future<void> ordersAddOrderTPCAgentFunction(context, mode, text) async {
try { try {
final provider = Provider.of<HomescreenNotifier>(context, listen: false); final provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.addOrderTPCAgentListAPI( final data = await ApiCalling.addOrderTPCAgentListAPI(
...@@ -1037,6 +1055,9 @@ void updateRowCalculations(int index) { ...@@ -1037,6 +1055,9 @@ void updateRowCalculations(int index) {
order_products, order_products,
) async { ) async {
try { try {
if (!validateAddOrder()) {
return;
}
_submitClicked = true; _submitClicked = true;
final provider = Provider.of<HomescreenNotifier>(context, listen: false); final provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.addOrderSubmitAPI( final data = await ApiCalling.addOrderSubmitAPI(
...@@ -1311,6 +1332,112 @@ void updateRowCalculations(int index) { ...@@ -1311,6 +1332,112 @@ void updateRowCalculations(int index) {
notifyListeners(); notifyListeners();
} }
bool validateAddOrder() {
bool isValid = true;
selectAccountError = "";
billingNameError = "";
orderDateError = "";
billingAddressError = "";
billingPincodeError = "";
dispatchAddressError = "";
dispatchPincodeError = "";
gstError = "";
tpcAmountError = "";
selectedBillingStateError = "";
selectedBillingDistrictError = "";
selectedBillingSubLocError = "";
selectedDispatchStateError = "";
selectedDispatchDistrictError = "";
selectedDispatchSubLocError = "";
if (_selectedAccountList == null || _selectedAccountID==null) {
selectAccountError = "Please select an Account";
isValid = false;
}
if (_selectedAccountList == null || _selectedAccountID==null) {
selectAccountError = "Please select an Account";
isValid = false;
}
if (_selectedBillingStates == null || _selectedBillingStateID==null) {
selectedBillingStateError = "Please select a State";
isValid = false;
}
if (_selectedBillingDistricts == null || _selectedBillingDistrictID==null) {
selectedBillingDistrictError = "Please select a District";
isValid = false;
}
if (_selectedBillingSubLocations == null || _selectedBillingSubLocID==null) {
selectedBillingSubLocError = "Please select a Location";
isValid = false;
}
if (_selectedDispatchStates == null || _selectedDispatchStateID==null) {
selectedDispatchStateError = "Please select a State";
isValid = false;
}
if (_selectedDispatchDistricts == null || _selectedDispatchDistrictID==null) {
selectedDispatchDistrictError = "Please select a District";
isValid = false;
}
if (_selectedDispatchSubLocations == null || _selectedDispatchSubLocID==null) {
selectedDispatchSubLocError = "Please select a Location";
isValid = false;
}
if (orderReceivedDateController.text.trim().isEmpty) {
orderDateError = "Please Enter Date";
isValid = false;
notifyListeners();
}
if (billingNameController.text.trim().isEmpty) {
isValid = false;
billingNameError = "Please Enter Your Name";
notifyListeners();
}
if (billingAddressController.text.trim().isEmpty) {
isValid = false;
billingAddressError = "Please Enter Address";
notifyListeners();
}
if (billingPincodeController.text.trim().isEmpty) {
isValid = false;
billingPincodeError = "Please Enter Pin Code";
notifyListeners();
}
if (dispatchAddressController.text.trim().isEmpty) {
dispatchAddressError = "Please Enter Dispatch Address";
isValid = false;
notifyListeners();
}
if (dispatchPincodeController.text.trim().isEmpty) {
dispatchPincodeError = "Please Enter Dispatch Pin Code";
isValid = false;
notifyListeners();
}
if (gstController.text.trim().isEmpty) {
gstError = "Please Enter GST Number";
isValid = false;
notifyListeners();
}
if (_selectedTpcStatus == "Yes") {
if (tpcAmountController.text.trim().isEmpty) {
isValid = false;
tpcAmountError = "Please Enter Amount";
notifyListeners();
}
}
notifyListeners();
return isValid;
}
void resetForm() { void resetForm() {
_submitClicked = false; _submitClicked = false;
dropDownSearchController.clear(); dropDownSearchController.clear();
...@@ -1331,7 +1458,6 @@ void updateRowCalculations(int index) { ...@@ -1331,7 +1458,6 @@ void updateRowCalculations(int index) {
gstController.clear(); gstController.clear();
orderReceivedDateController.clear(); orderReceivedDateController.clear();
tpcAmountController.clear(); tpcAmountController.clear();
gstController.clear();
orderReceivedDateController.clear(); orderReceivedDateController.clear();
noteController.clear(); noteController.clear();
...@@ -1367,7 +1493,12 @@ void updateRowCalculations(int index) { ...@@ -1367,7 +1493,12 @@ void updateRowCalculations(int index) {
billingPincodeError = ""; billingPincodeError = "";
dispatchAddressError = ""; dispatchAddressError = "";
dispatchPincodeError = ""; dispatchPincodeError = "";
selectedBillingStateError = "";
selectedBillingDistrictError = "";
selectedBillingSubLocError = "";
selectedDispatchStateError = "";
selectedDispatchDistrictError = "";
selectedDispatchSubLocError = "";
_selectedAccountList = null; _selectedAccountList = null;
_selectedEmployees = null; _selectedEmployees = null;
_selectedBillingStates = null; _selectedBillingStates = null;
......
...@@ -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();
}
} catch (e, s) {
_submitClicked = false;
notifyListeners(); notifyListeners();
} }
} catch (e, s) {}
} }
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();
}
} catch (e, s) {
_submitClicked = false;
notifyListeners(); notifyListeners();
} }
} catch (e, s) {}
} }
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) {
_submitClicked = false;
notifyListeners();
} }
} catch (e, s) {}
} }
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) {
_submitClicked = false;
notifyListeners();
} }
} catch (e, s) {}
} }
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';
......
...@@ -26,7 +26,8 @@ class _AddorderScreenState extends State<AddorderScreen> { ...@@ -26,7 +26,8 @@ class _AddorderScreenState extends State<AddorderScreen> {
FocusNode focusNode = FocusNode(); FocusNode focusNode = FocusNode();
FocusNode focusNodetpc = FocusNode(); FocusNode focusNodetpc = FocusNode();
List<FocusNode> focusNodes = List.generate(10, (index) => FocusNode()); List<FocusNode> focusNodes = List.generate(10, (index) => FocusNode());
Dropdowntheme ddtheme = Dropdowntheme(); Dropdowntheme ddtheme = Dropdowntheme();
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
...@@ -44,7 +45,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -44,7 +45,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
@override @override
void dispose() { void dispose() {
focusNodes.map((e)=>e.dispose()); focusNodes.map((e) => e.dispose());
focusNode.dispose(); focusNode.dispose();
focusNodetpc.dispose(); focusNodetpc.dispose();
super.dispose(); super.dispose();
...@@ -95,7 +96,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -95,7 +96,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
borderRadius: BorderRadius.circular(14), borderRadius: BorderRadius.circular(14),
), ),
child: ListTile( child: ListTile(
onTap: (){ onTap: () {
if (focusNode.hasFocus) { if (focusNode.hasFocus) {
focusNode.unfocus(); focusNode.unfocus();
} else { } else {
...@@ -162,7 +163,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -162,7 +163,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
margin: EdgeInsets.symmetric(horizontal: 0), margin: EdgeInsets.symmetric(horizontal: 0),
child: Container( child: Container(
padding: EdgeInsets.symmetric(horizontal: 10), padding: EdgeInsets.symmetric(horizontal: 10),
height: widget.mode=="self"?50:150, height: widget.mode == "self" ? 50 : 150,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
), ),
...@@ -317,7 +318,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -317,7 +318,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
], ],
), ),
), ),
errorWidget(context, provider.dateError), errorWidget(context, provider.orderDateError),
textControllerWidget( textControllerWidget(
context, context,
...@@ -329,7 +330,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -329,7 +330,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
null, null,
focusNodes[0], focusNodes[0],
null, null,
TextInputAction.done TextInputAction.done,
), ),
errorWidget(context, provider.billingNameError), errorWidget(context, provider.billingNameError),
TextWidget(context, "Billing State"), TextWidget(context, "Billing State"),
...@@ -381,7 +382,8 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -381,7 +382,8 @@ Dropdowntheme ddtheme = Dropdowntheme();
}, },
dropdownSearchData: DropdownSearchData( dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50, searchInnerWidgetHeight: 50,
searchController:provider.billingStateSearchController, searchController:
provider.billingStateSearchController,
searchInnerWidget: Padding( searchInnerWidget: Padding(
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
child: TextFormField( child: TextFormField(
...@@ -396,8 +398,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -396,8 +398,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
), ),
hintText: 'Search Sate...', hintText: 'Search Sate...',
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: borderRadius: BorderRadius.circular(8),
BorderRadius.circular(8),
), ),
), ),
), ),
...@@ -413,8 +414,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -413,8 +414,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
), ),
onMenuStateChange: (isOpen) { onMenuStateChange: (isOpen) {
if (!isOpen) { if (!isOpen) {
provider.billingStateSearchController provider.billingStateSearchController.clear();
.clear();
} }
}, },
buttonStyleData: ddtheme.buttonStyleData, buttonStyleData: ddtheme.buttonStyleData,
...@@ -426,6 +426,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -426,6 +426,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
], ],
), ),
), ),
errorWidget(context, provider.selectedBillingStateError),
TextWidget(context, "Billing District"), TextWidget(context, "Billing District"),
//dd //dd
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
...@@ -474,12 +475,14 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -474,12 +475,14 @@ Dropdowntheme ddtheme = Dropdowntheme();
}, },
dropdownSearchData: DropdownSearchData( dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50, searchInnerWidgetHeight: 50,
searchController:provider.billingDistrictSearchController, searchController:
provider.billingDistrictSearchController,
searchInnerWidget: Padding( searchInnerWidget: Padding(
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
child: TextFormField( child: TextFormField(
controller: controller:
provider.billingDistrictSearchController, provider
.billingDistrictSearchController,
decoration: InputDecoration( decoration: InputDecoration(
isDense: true, isDense: true,
contentPadding: contentPadding:
...@@ -489,8 +492,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -489,8 +492,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
), ),
hintText: 'Search District...', hintText: 'Search District...',
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: borderRadius: BorderRadius.circular(8),
BorderRadius.circular(8),
), ),
), ),
), ),
...@@ -519,6 +521,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -519,6 +521,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
], ],
), ),
), ),
errorWidget(context, provider.selectedBillingDistrictError),
TextWidget(context, "Billing Sub Location"), TextWidget(context, "Billing Sub Location"),
//dd //dd
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
...@@ -555,7 +558,8 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -555,7 +558,8 @@ Dropdowntheme ddtheme = Dropdowntheme();
}, },
dropdownSearchData: DropdownSearchData( dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50, searchInnerWidgetHeight: 50,
searchController:provider.billingSubLocSearchController, searchController:
provider.billingSubLocSearchController,
searchInnerWidget: Padding( searchInnerWidget: Padding(
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
child: TextFormField( child: TextFormField(
...@@ -570,8 +574,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -570,8 +574,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
), ),
hintText: 'Search Sub Location...', hintText: 'Search Sub Location...',
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: borderRadius: BorderRadius.circular(8),
BorderRadius.circular(8),
), ),
), ),
), ),
...@@ -600,6 +603,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -600,6 +603,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
], ],
), ),
), ),
errorWidget(context, provider.selectedBillingSubLocError),
textControllerWidget( textControllerWidget(
context, context,
provider.billingAddressController, provider.billingAddressController,
...@@ -610,7 +614,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -610,7 +614,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
null, null,
focusNodes[1], focusNodes[1],
focusNodes[2], focusNodes[2],
TextInputAction.next TextInputAction.next,
), ),
errorWidget(context, provider.billingAddressError), errorWidget(context, provider.billingAddressError),
...@@ -625,7 +629,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -625,7 +629,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
focusNodes[2], focusNodes[2],
null, null,
TextInputAction.done, TextInputAction.done,
6 6,
), ),
errorWidget(context, provider.billingPincodeError), errorWidget(context, provider.billingPincodeError),
...@@ -676,7 +680,8 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -676,7 +680,8 @@ Dropdowntheme ddtheme = Dropdowntheme();
}, },
dropdownSearchData: DropdownSearchData( dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50, searchInnerWidgetHeight: 50,
searchController:provider.dispatchStateSearchController, searchController:
provider.dispatchStateSearchController,
searchInnerWidget: Padding( searchInnerWidget: Padding(
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
child: TextFormField( child: TextFormField(
...@@ -691,8 +696,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -691,8 +696,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
), ),
hintText: 'Search Sate...', hintText: 'Search Sate...',
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: borderRadius: BorderRadius.circular(8),
BorderRadius.circular(8),
), ),
), ),
), ),
...@@ -721,6 +725,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -721,6 +725,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
], ],
), ),
), ),
errorWidget(context, provider.selectedDispatchStateError),
//dd //dd
TextWidget(context, "Dispatch District"), TextWidget(context, "Dispatch District"),
//dd //dd
...@@ -773,12 +778,14 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -773,12 +778,14 @@ Dropdowntheme ddtheme = Dropdowntheme();
}, },
dropdownSearchData: DropdownSearchData( dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50, searchInnerWidgetHeight: 50,
searchController:provider.dispatchDistrictSearchController, searchController:
provider.dispatchDistrictSearchController,
searchInnerWidget: Padding( searchInnerWidget: Padding(
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
child: TextFormField( child: TextFormField(
controller: controller:
provider.dispatchDistrictSearchController, provider
.dispatchDistrictSearchController,
decoration: InputDecoration( decoration: InputDecoration(
isDense: true, isDense: true,
contentPadding: contentPadding:
...@@ -788,8 +795,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -788,8 +795,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
), ),
hintText: 'Search District...', hintText: 'Search District...',
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: borderRadius: BorderRadius.circular(8),
BorderRadius.circular(8),
), ),
), ),
), ),
...@@ -818,6 +824,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -818,6 +824,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
], ],
), ),
), ),
errorWidget(context, provider.selectedDispatchDistrictError),
TextWidget(context, "Dispatch Sub Location"), TextWidget(context, "Dispatch Sub Location"),
DropdownButtonHideUnderline( DropdownButtonHideUnderline(
child: Row( child: Row(
...@@ -854,7 +861,8 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -854,7 +861,8 @@ Dropdowntheme ddtheme = Dropdowntheme();
}, },
dropdownSearchData: DropdownSearchData( dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50, searchInnerWidgetHeight: 50,
searchController:provider.dispatchSubLocSearchController, searchController:
provider.dispatchSubLocSearchController,
searchInnerWidget: Padding( searchInnerWidget: Padding(
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
child: TextFormField( child: TextFormField(
...@@ -869,8 +877,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -869,8 +877,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
), ),
hintText: 'Search Sub Location...', hintText: 'Search Sub Location...',
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: borderRadius: BorderRadius.circular(8),
BorderRadius.circular(8),
), ),
), ),
), ),
...@@ -899,6 +906,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -899,6 +906,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
], ],
), ),
), ),
errorWidget(context, provider.selectedDispatchSubLocError),
//dd //dd
textControllerWidget( textControllerWidget(
context, context,
...@@ -910,7 +918,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -910,7 +918,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
null, null,
focusNodes[3], focusNodes[3],
focusNodes[4], focusNodes[4],
TextInputAction.next TextInputAction.next,
), ),
errorWidget(context, provider.dispatchAddressError), errorWidget(context, provider.dispatchAddressError),
...@@ -925,7 +933,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -925,7 +933,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
focusNodes[4], focusNodes[4],
focusNodes[5], focusNodes[5],
TextInputAction.next, TextInputAction.next,
6 6,
), ),
errorWidget(context, provider.dispatchPincodeError), errorWidget(context, provider.dispatchPincodeError),
...@@ -939,7 +947,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -939,7 +947,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
null, null,
focusNodes[5], focusNodes[5],
null, null,
TextInputAction.done TextInputAction.done,
), ),
errorWidget(context, provider.gstError), errorWidget(context, provider.gstError),
...@@ -1333,7 +1341,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -1333,7 +1341,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
focusNodes[6], focusNodes[6],
focusNodes[7], focusNodes[7],
TextInputAction.next TextInputAction.next,
), ),
errorWidget(context, provider.tpcAmountError), errorWidget(context, provider.tpcAmountError),
], ],
...@@ -1355,6 +1363,10 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -1355,6 +1363,10 @@ Dropdowntheme ddtheme = Dropdowntheme();
provider.submitClicked = true; provider.submitClicked = true;
var order_prod_data = provider.getFormData(); var order_prod_data = provider.getFormData();
print(order_prod_data); print(order_prod_data);
print(order_prod_data['orders']);
///[{"product_id":"1","qty":"1","price":"500","cgst_p":"9","sgst_p":"9","igst_p":"0","total_price":"500"},
///{"product_id":"2","qty":"1","price":"1000","cgst_p":"9","sgst_p":"9","igst_p":"0","total_price":"1000"}]
provider.getCurrentLocation(); provider.getCurrentLocation();
provider.ordersAddOrderAPISubmitFunction( provider.ordersAddOrderAPISubmitFunction(
context, context,
...@@ -1372,7 +1384,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -1372,7 +1384,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
provider.selectedBillingDistrictId, provider.selectedBillingDistrictId,
provider.selectedBillingSubLocID, provider.selectedBillingSubLocID,
provider.selectedTpcAgentID, provider.selectedTpcAgentID,
order_prod_data, order_prod_data['orders'],
); );
}, },
child: Container( child: Container(
...@@ -1388,7 +1400,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -1388,7 +1400,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
provider.submitClicked provider.submitClicked
? CircularProgressIndicator.adaptive( ? CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation<Color>( valueColor: AlwaysStoppedAnimation<Color>(
AppColors.app_blue, AppColors.white,
), ),
) )
: Text( : Text(
...@@ -1603,10 +1615,16 @@ class OrderForm extends StatelessWidget { ...@@ -1603,10 +1615,16 @@ class OrderForm extends StatelessWidget {
) )
.toList(), .toList(),
value: value:
provider.saleProducts.contains(provider.selectedSaleProducts)? provider.saleProducts.contains(
provider.saleProducts.firstWhere( provider.selectedSaleProducts,
(product) => product.id == provider.selectedSaleProductID[index], )
):null, ? provider.saleProducts.firstWhere(
(product) =>
product.id ==
provider
.selectedSaleProductID[index],
)
: null,
onChanged: (SaleProducts? value) { onChanged: (SaleProducts? value) {
if (value != null) { if (value != null) {
if (provider if (provider
...@@ -1624,10 +1642,13 @@ class OrderForm extends StatelessWidget { ...@@ -1624,10 +1642,13 @@ class OrderForm extends StatelessWidget {
} }
} }
}, },
buttonStyleData: ddtheme.buttonStyleData, buttonStyleData:
ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData, iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData, menuItemStyleData:
dropdownStyleData: ddtheme.dropdownStyleData, ddtheme.menuItemStyleData,
dropdownStyleData:
ddtheme.dropdownStyleData,
), ),
), ),
), ),
...@@ -1649,8 +1670,7 @@ class OrderForm extends StatelessWidget { ...@@ -1649,8 +1670,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null, null,
null, null,
TextInputAction.next TextInputAction.next,
), ),
), ),
const SizedBox(width: 8.0), const SizedBox(width: 8.0),
...@@ -1686,7 +1706,7 @@ class OrderForm extends StatelessWidget { ...@@ -1686,7 +1706,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null, null,
null, null,
TextInputAction.next TextInputAction.next,
), ),
), ),
], ],
...@@ -1725,7 +1745,7 @@ class OrderForm extends StatelessWidget { ...@@ -1725,7 +1745,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null, null,
null, null,
TextInputAction.next TextInputAction.next,
), ),
), ),
const SizedBox(width: 8.0), const SizedBox(width: 8.0),
...@@ -1760,7 +1780,7 @@ class OrderForm extends StatelessWidget { ...@@ -1760,7 +1780,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null, null,
null, null,
TextInputAction.next TextInputAction.next,
), ),
), ),
const SizedBox(width: 8.0), const SizedBox(width: 8.0),
...@@ -1795,7 +1815,7 @@ class OrderForm extends StatelessWidget { ...@@ -1795,7 +1815,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null, null,
null, null,
TextInputAction.next TextInputAction.next,
), ),
), ),
], ],
...@@ -1830,7 +1850,7 @@ class OrderForm extends StatelessWidget { ...@@ -1830,7 +1850,7 @@ class OrderForm extends StatelessWidget {
null, null,
null, null,
null, null,
TextInputAction.next TextInputAction.next,
), ),
), ),
// const SizedBox(width: 8.0), // const SizedBox(width: 8.0),
...@@ -1871,7 +1891,7 @@ class OrderForm extends StatelessWidget { ...@@ -1871,7 +1891,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null, null,
null, null,
TextInputAction.none TextInputAction.none,
), ),
textControllerWidget( textControllerWidget(
context, context,
...@@ -1883,7 +1903,7 @@ class OrderForm extends StatelessWidget { ...@@ -1883,7 +1903,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null, null,
null, null,
TextInputAction.none TextInputAction.none,
), ),
textControllerWidget( textControllerWidget(
context, context,
...@@ -1895,7 +1915,7 @@ class OrderForm extends StatelessWidget { ...@@ -1895,7 +1915,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null, null,
null, null,
TextInputAction.none TextInputAction.none,
), ),
textControllerWidget( textControllerWidget(
context, context,
...@@ -1907,7 +1927,7 @@ class OrderForm extends StatelessWidget { ...@@ -1907,7 +1927,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null, null,
null, null,
TextInputAction.none TextInputAction.none,
), ),
textControllerWidget( textControllerWidget(
context, context,
...@@ -1919,7 +1939,7 @@ class OrderForm extends StatelessWidget { ...@@ -1919,7 +1939,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null, null,
null, null,
TextInputAction.none TextInputAction.none,
), ),
textControllerWidget( textControllerWidget(
context, context,
...@@ -1931,7 +1951,7 @@ class OrderForm extends StatelessWidget { ...@@ -1931,7 +1951,7 @@ class OrderForm extends StatelessWidget {
null, null,
focusNode, focusNode,
null, null,
TextInputAction.done TextInputAction.done,
), ),
], ],
), ),
...@@ -2010,10 +2030,11 @@ class OrderForm extends StatelessWidget { ...@@ -2010,10 +2030,11 @@ class OrderForm extends StatelessWidget {
style: const TextStyle(fontWeight: FontWeight.bold), style: const TextStyle(fontWeight: FontWeight.bold),
), ),
), ),
Padding(padding: const EdgeInsets.all(8.0), child: Text(value.toString())), Padding(
padding: const EdgeInsets.all(8.0),
child: Text(value.toString()),
),
], ],
); );
} }
} }
...@@ -120,11 +120,11 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -120,11 +120,11 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
focusedBorder: InputBorder.none, focusedBorder: InputBorder.none,
isDense: true, isDense: true,
contentPadding: const EdgeInsets.symmetric( contentPadding: const EdgeInsets.symmetric(
horizontal: 10, horizontal: 0,
vertical: 8, vertical: 8,
), ),
hintText: 'Select Account Type', hintText: 'Select Account Type',
hintStyle: const TextStyle(fontSize: 12), hintStyle: const TextStyle(fontSize: 14),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
...@@ -154,7 +154,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -154,7 +154,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
margin: EdgeInsets.symmetric(horizontal: 0), margin: EdgeInsets.symmetric(horizontal: 0),
child: Container( child: Container(
padding: EdgeInsets.symmetric(horizontal: 10), padding: EdgeInsets.symmetric(horizontal: 10),
height: 150, height: widget.mode=="self"?50:150,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
), ),
...@@ -211,298 +211,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -211,298 +211,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
), ),
), ),
], ],
// DropdownButtonHideUnderline(
// child: Row(
// children: [
// Expanded(
// child: DropdownButton2<AccountList>(
// isExpanded: true,
// hint: Text(
// 'Select Account Type',
// style: TextStyle(fontSize: 14),
// overflow: TextOverflow.ellipsis,
// ),
//
// items: provider.accountList.isEmpty
// ? [
// DropdownMenuItem(
// enabled: false,
// value: null,
// child: Text(
// 'Select Account Type',
// style: TextStyle(
// fontSize: 14,
// color: Colors.grey,
// ),
// ),
// ),
// ]
// :provider.accountList
// .map(
// (accs) => DropdownMenuItem(
// value: accs,
// child: Text(
// accs.text ?? '',
// style: const TextStyle(
// fontSize: 14,
// ),
// overflow: TextOverflow.ellipsis,
// ),
// ),
// )
// .toList(),
// value: provider.accountList.contains(provider.selectedAccountList)
// ? provider.selectedAccountList
// : null,
//
// onChanged: (AccountList? value) {
// if (value != null) {
// if (provider.accountList.isNotEmpty) {
// provider.selectedAccountList = value;
//
// print("Selected Complaint Type: ${value.text}, ID: ${value.id}");
// provider.selectedAccountID = value.id!;
// provider.selectedAccountName = value.text!;
// print("hfjkshfg" + provider.selectedAccountID.toString());
// }
// provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID);
// }
// },
// buttonStyleData: ButtonStyleData(
// height: 50,
// width: 160,
// padding: const EdgeInsets.only(
// left: 14,
// right: 14,
// ),
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(14),
// color: AppColors.text_field_color,
// ),
// ),
// iconStyleData: IconStyleData(
// icon: SvgPicture.asset(
// "assets/svg/arrow_dropdown.svg",
// height: 25,
// width: 20,
// ),
// iconSize: 12,
// iconEnabledColor: Color(0xFF2D2D2D),
// iconDisabledColor: Colors.grey,
// ),
// dropdownStyleData: DropdownStyleData(
// maxHeight: 200,
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(14),
// color: AppColors.text_field_color,
// ),
// scrollbarTheme: ScrollbarThemeData(
// radius: const Radius.circular(15),
// thickness: MaterialStateProperty.all<double>(6),
// thumbVisibility: MaterialStateProperty.all<bool>(true),
// ),
// ),
// menuItemStyleData: const MenuItemStyleData(
// height: 40,
// padding: EdgeInsets.only(left: 14, right: 14),
// ),
// dropdownSearchData: DropdownSearchData(
//
// searchController: provider.dropDownSearchController,
// searchInnerWidgetHeight: 50,
// searchInnerWidget: Container(
// height: 50,
// padding: const EdgeInsets.only(
// top: 8,
// bottom: 4,
// right: 8,
// left: 8,
// ),
// child: TextFormField(
// controller: provider.dropDownSearchController,
// onChanged: (value) async {
// Future.delayed(Durations.short2,() async {
// await provider.ordersAddPaymentSelectAccountAPIFunction(
// context,
// widget.mode,
// provider.selectedAccountID,
// value,
// );
// },);
//
//
//
// },
// decoration: InputDecoration(
// isDense: true,
// contentPadding: const EdgeInsets.symmetric(
// horizontal: 10,
// vertical: 8,
// ),
// hintText: 'Search account type...',
// hintStyle: const TextStyle(fontSize: 12),
// border: OutlineInputBorder(
// borderRadius: BorderRadius.circular(8),
// ),
// ),
// ),
// ),
// searchMatchFn: (item, searchValue) {
// if (item.value == null || searchValue.isEmpty) return false;
// return item.value!.text!
// .toLowerCase()
// .contains(searchValue.toLowerCase());
// },
// // searchMatchFn: (item, searchValue) {
// // if (item.value == null) return false; //
// // return item.value!.text!.toLowerCase().contains(searchValue.toLowerCase());
// // },
// ),
//
// onMenuStateChange: (isOpen) {
// print("isOpen:${isOpen}");
// if (isOpen) {
// provider.ordersAddPaymentSelectAccountAPIFunction(
// context,
// widget.mode,
// provider.selectedAccountID,
// provider.dropDownSearchController.text,
// );
//
// } else {
// provider.dropDownSearchController.clear();
// }
// },
// ),
// ),
// ],
// ),
// ),
///enwewe ///enwewe
// DropdownButtonHideUnderline(
// child: Row(
// children: [
// Expanded(
// child: DropdownButton2<AccountList>(
// isExpanded: true,
// hint: Text(
// 'Select Account Type',
// style: TextStyle(fontSize: 14),
// overflow: TextOverflow.ellipsis,
// ),
// items: provider.accountList
// .map(
// (accs) => DropdownMenuItem<AccountList>(
// value: accs,
// child: Text(
// accs.text ?? '',
// style: const TextStyle(
// fontSize: 14,
// ),
// overflow: TextOverflow.ellipsis,
// ),
// ),
// )
// .toList(),
// value: provider.selectedAccountList,
// onChanged: (AccountList? value) {
// if (value != null) {
// if (provider.accountList.isNotEmpty) {
// provider.selectedAccountList = value;
// print("Selected Complaint Type: ${value.text}, ID: ${value.id}");
// provider.selectedAccountID = value.id!;
// provider.selectedAccountName = value.text!;
// print("hfjkshfg" + provider.selectedAccountID.toString());
// }
// provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID);
// }
// },
// buttonStyleData: ButtonStyleData(
// height: 50,
// width: 160,
// padding: const EdgeInsets.only(
// left: 14,
// right: 14,
// ),
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(14),
// color: AppColors.text_field_color,
// ),
// ),
// iconStyleData: IconStyleData(
// icon: SvgPicture.asset(
// "assets/svg/arrow_dropdown.svg",
// height: 25,
// width: 20,
// ),
// iconSize: 12,
// iconEnabledColor: Color(0xFF2D2D2D),
// iconDisabledColor: Colors.grey,
// ),
// dropdownStyleData: DropdownStyleData(
// maxHeight: 200,
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(14),
// color: AppColors.text_field_color,
// ),
// scrollbarTheme: ScrollbarThemeData(
// radius: const Radius.circular(15),
// thickness: MaterialStateProperty.all<double>(6),
// thumbVisibility: MaterialStateProperty.all<bool>(true),
// ),
// ),
// menuItemStyleData: const MenuItemStyleData(
// height: 40,
// padding: EdgeInsets.only(left: 14, right: 14),
// ),
// dropdownSearchData: DropdownSearchData(
// searchController: provider.dropDownSearchController,
// searchInnerWidgetHeight: 50,
// searchInnerWidget: Container(
// height: 50,
// padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
// child: TextFormField(
// controller: provider.dropDownSearchController,
// onChanged: (searchTerm) {
// onSearchChanged(searchTerm);
// },
// decoration: InputDecoration(
// isDense: true,
// contentPadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 8),
// hintText: 'Search account type...',
// hintStyle: const TextStyle(fontSize: 12),
// border: OutlineInputBorder(
// borderRadius: BorderRadius.circular(8),
// ),
// ),
// ),
// ),
// // You can omit or always return true since we're doing server-side filtering
// searchMatchFn: (item, searchValue) => true,
// ),
//
// onMenuStateChange: (isOpen) {
// if (!isOpen) {
// print("is called"); // Clear search when menu closes
// // Optionally reset accountList to initial state
// setState(() {
// provider.ordersAddPaymentSelectAccountAPIFunction(context, widget.mode,provider.selectedAccountID,provider.dropDownSearchController.text);
// });
// } else {
// print("is called2");
// // Fetch initial data when menu opens
// setState(() {
// provider.ordersAddPaymentSelectAccountAPIFunction(context, widget.mode,provider.selectedAccountID,provider.dropDownSearchController.text);
// });
// }
// },
// ),
// ),
// ],
// ),
// ),
errorWidget(context, provider.selectAccountError), errorWidget(context, provider.selectAccountError),
textControllerWidget( textControllerWidget(
...@@ -520,7 +229,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -520,7 +229,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
errorWidget(context, provider.amountError), errorWidget(context, provider.amountError),
///Addorderbutton ///Addorderbutton
if (provider.selectedAccountID!.isNotEmpty) ...[ if (provider.selectedAccountID!=null) ...[
InkResponse( InkResponse(
onTap: () { onTap: () {
// if (provider.selectedOrderIds.length < provider.orderList.length) { // if (provider.selectedOrderIds.length < provider.orderList.length) {
...@@ -617,7 +326,8 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -617,7 +326,8 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
) )
.toList(), .toList(),
// value: provider.selectedOrderLists, // value: provider.selectedOrderLists,
value: provider value:provider.selectedOrderIds[index] != null?
provider
.orderList .orderList
.firstWhere( .firstWhere(
(product) => (product) =>
...@@ -625,7 +335,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -625,7 +335,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
.orderId == .orderId ==
provider provider
.selectedOrderIds[index], .selectedOrderIds[index],
), ):null,
onChanged: ( onChanged: (
OrderList? value, OrderList? value,
) { ) {
...@@ -684,7 +394,9 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -684,7 +394,9 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
provider provider
.orderAmountControllers[index], .orderAmountControllers[index],
"Enter Order Amount", "Enter Order Amount",
(p0) {}, (p0) {
provider.updateAdjustedAmount();
},
TextInputType.number, TextInputType.number,
false, false,
FilteringTextInputFormatter FilteringTextInputFormatter
...@@ -708,6 +420,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -708,6 +420,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
], ],
), ),
], ],
], ],
textControllerWidget( textControllerWidget(
...@@ -959,10 +672,11 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -959,10 +672,11 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
), ),
floatingActionButtonLocation: floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat, FloatingActionButtonLocation.centerFloat,
bottomNavigationBar: InkResponse( bottomNavigationBar:provider.submitClicked?null:
InkResponse(
onTap: () { onTap: () {
provider.submitClicked = true;
provider.selectedOrders = provider.getFormData(); provider.selectedOrders = provider.getFormData();
print(provider.selectedOrders);
provider.ordersAddPaymentAPISubmitFunction( provider.ordersAddPaymentAPISubmitFunction(
context, context,
provider.selectedAccountID, provider.selectedAccountID,
...@@ -980,7 +694,9 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -980,7 +694,9 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
color: AppColors.app_blue, color: AppColors.app_blue,
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
), ),
child: Text( child:provider.submitClicked?CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(Colors.white),
): Text(
"Submit", "Submit",
style: TextStyle( style: TextStyle(
fontSize: 15, fontSize: 15,
......
...@@ -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),
......
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/ordersProvider/dispatchOrderProvider.dart';
import 'package:generp/Notifiers/ordersProvider/pagesDashboardProvider.dart'; import 'package:generp/Notifiers/ordersProvider/pagesDashboardProvider.dart';
import 'package:generp/Utils/dropdownTheme.dart';
import 'package:generp/screens/screensExports.dart'; import 'package:generp/screens/screensExports.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
...@@ -9,6 +12,7 @@ import '../../Utils/app_colors.dart'; ...@@ -9,6 +12,7 @@ import '../../Utils/app_colors.dart';
import '../../Utils/commonWidgets.dart'; import '../../Utils/commonWidgets.dart';
import '../finance/FileViewer.dart'; import '../finance/FileViewer.dart';
import 'editOrderAccountDetails.dart'; import 'editOrderAccountDetails.dart';
import 'package:generp/Models/ordersModels/ordersDetailsDispatchOrderViewResponse.dart';
class Ordersdetailsbymodes extends StatefulWidget { class Ordersdetailsbymodes extends StatefulWidget {
final pageTitleName; final pageTitleName;
...@@ -27,6 +31,7 @@ class Ordersdetailsbymodes extends StatefulWidget { ...@@ -27,6 +31,7 @@ class Ordersdetailsbymodes extends StatefulWidget {
} }
class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> { class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
Dropdowntheme ddtheme = Dropdowntheme();
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
...@@ -36,6 +41,8 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> { ...@@ -36,6 +41,8 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
context, context,
listen: false, listen: false,
); );
var disproved = Provider.of<Dispatchorderprovider>(context,listen: false);
disproved.ordersDetailsDispatchOrderViewFunction(context,widget.orderId);
provider.ordersDetailsByModeAPIFunction( provider.ordersDetailsByModeAPIFunction(
context, context,
widget.orderId, widget.orderId,
...@@ -46,8 +53,8 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> { ...@@ -46,8 +53,8 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Pagesdashboardprovider>( return Consumer2<Pagesdashboardprovider,Dispatchorderprovider>(
builder: (context, provider, child) { builder: (context, provider,disProvider, child) {
var orderDetails = provider.orderDetails; var orderDetails = provider.orderDetails;
return WillPopScope( return WillPopScope(
...@@ -333,7 +340,34 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> { ...@@ -333,7 +340,34 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
), ),
), ),
], ],
if (widget.mode == "dispatched") ...[], if (widget.mode == "dispatched") ...[
Expanded(
child: InkResponse(
onTap: () {
disProvider.initializeForm(context);
_showDispatchSheet(context, "Dispatch");
},
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: Color(0xFFFFEFEF),
border: Border.all(
color: Color(0xFFED3424),
width: 0.5,
),
),
child: Center(
child: Text(
"Dispatch",
style: TextStyle(
color: Color(0xFFED3424),
),
),
),
),
),
),
],
], ],
), ),
), ),
...@@ -401,10 +435,12 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> { ...@@ -401,10 +435,12 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: builder:
(context) => (
Editorderaccountdetails( context,
) => Editorderaccountdetails(
mode: widget.mode, mode: widget.mode,
pageTitleName: "Edit Order (${widget.mode})", pageTitleName:
"Edit Order (${widget.mode})",
orderID: provider.orderDetails.id, orderID: provider.orderDetails.id,
), ),
), ),
...@@ -693,7 +729,8 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> { ...@@ -693,7 +729,8 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
), ),
], ],
InkWell( InkWell(
onTap: () { onTap:provider.submitClicked?null: () {
provider.submitClicked = true;
provider.approvalRejectionAPIFunction( provider.approvalRejectionAPIFunction(
context, context,
details.status, details.status,
...@@ -735,8 +772,287 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> { ...@@ -735,8 +772,287 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
color: AppColors.app_blue, //1487C9 color: AppColors.app_blue, //1487C9
borderRadius: BorderRadius.circular(14.0), borderRadius: BorderRadius.circular(14.0),
), ),
child: Center(
child:provider.submitClicked?CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(Colors.white),
): Text(
"Submit",
textAlign: TextAlign.center,
style: TextStyle(color: Colors.white),
),
),
),
),
],
),
),
);
},
),
);
},
);
},
);
}
Future<void> _showDispatchSheet(BuildContext context, type) {
return showModalBottomSheet(
useSafeArea: true,
isDismissible: true,
isScrollControlled: true,
showDragHandle: true,
backgroundColor: Colors.white,
enableDrag: true,
context: context,
builder: (context) {
return StatefulBuilder(
builder: (context, setState) {
return SafeArea(
child: Consumer2<Pagesdashboardprovider, Dispatchorderprovider>(
builder: (context, provider, disProvider, child) {
final details = provider.orderDetails;
return Container(
margin: EdgeInsets.only(
bottom: 15,
left: 15,
right: 15,
top: 10,
),
padding: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom,
),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Align(
alignment: Alignment.topLeft,
child: Text(
"Dispatch",
style: TextStyle(
color: AppColors.app_blue,
fontSize: 16,
),
),
),
textControllerWidget(
context,
disProvider.invoiceNumberController,
"Enter Invoice Number",
disProvider.onChangedinvoiceNumber,
TextInputType.text,
false,
null,
),
errorWidget(context, disProvider.invoiceNumberError),
textControllerWidget(
context,
disProvider.vehicleNumberController,
"Enter Vehicle Number",
disProvider.onChangedvehicleNumber,
TextInputType.text,
false,
null,
),
errorWidget(context, disProvider.vehicleNumberError),
textControllerWidget(
context,
disProvider.driverNameController,
"Enter Driver Name",
disProvider.onChangeddriverName,
TextInputType.text,
false,
null,
),
errorWidget(context, disProvider.driverNameError),
textControllerWidget(
context,
disProvider.driverMobileNumberController,
"Enter Driver Mobile Number",
disProvider.onChangeddriverMobileNumber,
TextInputType.text,
false,
null,
),
errorWidget(context, disProvider.driverMobileNumberError),
InkResponse(
onTap: () {
disProvider.editAddNewRow();
},
child: Container(
margin: const EdgeInsets.symmetric(vertical: 10),
height: 45,
width: MediaQuery.of(context).size.width,
decoration: BoxDecoration(
color: const Color(0xFFE6F6FF),
borderRadius: BorderRadius.circular(12),
border: Border.all(
color: AppColors.app_blue,
width: 0.5,
),
),
child: Center( child: Center(
child: Text( child: Text(
"+ Add Product",
style: TextStyle(
fontFamily: "JakartaMedium",
color: AppColors.app_blue,
),
),
),
),
),
if (disProvider.leadProductsList.isNotEmpty ||
disProvider.engineNumberControllers.isNotEmpty)...[
ListView.builder(
itemCount: disProvider.engineNumberControllers.length,
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (context, j) {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10),
margin: const EdgeInsets.symmetric(vertical: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextWidget(context, "Product"),
DropdownButtonHideUnderline(
child: Row(
children: [
Expanded(
child: DropdownButton2<Products>(
isExpanded: true,
hint: const Text(
'Select Product',
style: TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
),
items: disProvider.productsList
.map((ord) => DropdownMenuItem<Products>(
value: ord,
child: Text(
"(Product Name: ${ord.productName})",
style: const TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
),
))
.toList(),
value: disProvider.selectedProductIds[j] != null
? disProvider.productsList.firstWhere(
(ord) => ord.id == disProvider.selectedProductIds[j],
orElse: () => disProvider.productsList[0],
)
: null,
onChanged: (Products? value) {
if (value != null) {
disProvider.updateSelectedProductIds(j, value);
disProvider.selectedProductIds[j] =
value.id?.toString() ?? '';
disProvider.updateTotalAmount(j);
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
),
),
const SizedBox(height: 10),
Row(
children: [
Expanded(
flex: 2,
child: textControllerWidget(
context,
disProvider.engineNumberControllers[j],
"Enter Engine Number",
(value) => disProvider.updateTotalAmount(j),
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
),
),
],
),
const SizedBox(height: 10),
Row(
children: [
Expanded(
flex: 2,
child: textControllerWidget(
context,
disProvider.pdiIDControllers[j],
"Enter PDI ID",
(value) => disProvider.updateTotalAmount(j),
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
),
),
],
),
const SizedBox(height: 10),
// IconButton(
// icon: const Icon(Icons.delete),
// onPressed: disProvider.editProductPriceControllers.length > 1
// ? () => disProvider.editRemoveRow(j)
// : null,
// ),
],
),
);
},
),
],
InkWell(
onTap:provider.submitClicked?null: () {
provider.submitClicked = false;
final data = disProvider.getFormData();
print(data);
// disProvider.approvalRejectionAPIFunction(
// context,
// details.status,
// details.id,
// type == "Dispatch",
// provider.approveRejectFeedbackController.text,
// details.tpcApplicable,
// details.tpcApplicable == "Yes"
// ? (widget.mode == "level_one_approval"
// ? details.level1TpcApprovedAmount
// : details.level2TpcApprovedAmount)
// : "",
// provider.saleOrderNumberController.text,
// provider.editCompanyController.text,
// data,
// );
},
child: Container(
alignment: Alignment.center,
height: 45,
margin: EdgeInsets.only(
left: 5.0,
right: 5.0,
top: 5.0,
bottom: 5.0,
),
decoration: BoxDecoration(
color: AppColors.app_blue, //1487C9
borderRadius: BorderRadius.circular(14.0),
),
child: Center(
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),
...@@ -857,7 +1173,8 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> { ...@@ -857,7 +1173,8 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
), ),
], ],
InkWell( InkWell(
onTap: () { onTap:provider.submitClicked ?null: () {
provider.submitClicked = true;
provider.delectionAPIFunction( provider.delectionAPIFunction(
context, context,
provider.orderDetails.id, provider.orderDetails.id,
...@@ -877,7 +1194,9 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> { ...@@ -877,7 +1194,9 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
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),
......
...@@ -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