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';
import '../../services/api_calling.dart';
import '../HomeScreenNotifier.dart';
class Addorderprovider extends ChangeNotifier {TextEditingController dropDownSearchController = TextEditingController();
TextEditingController dropDownTpcSearchController = TextEditingController();
TextEditingController billingStateSearchController = TextEditingController();
TextEditingController billingDistrictSearchController = TextEditingController();
TextEditingController billingSubLocSearchController = TextEditingController();
TextEditingController dispatchStateSearchController = TextEditingController();
TextEditingController dispatchDistrictSearchController = TextEditingController();
TextEditingController dispatchSubLocSearchController = TextEditingController();
TextEditingController billingNameController = TextEditingController();
TextEditingController billingAddressController = TextEditingController();
TextEditingController billingPincodeController = TextEditingController();
TextEditingController dispatchAddressController = TextEditingController();
TextEditingController dispatchPincodeController = TextEditingController();
TextEditingController gstController = TextEditingController();
TextEditingController orderReceivedDateController = TextEditingController();
TextEditingController tpcAmountController = TextEditingController();
List<TextEditingController> ProductControllers = [];
List<TextEditingController> PriceControllers = [];
List<TextEditingController> QuantityControllers = [];
List<TextEditingController> CGSTControllers = [];
List<TextEditingController> SGSTControllers = [];
List<TextEditingController> IGSTControllers = [];
List<TextEditingController> TotalPriceControllers = [];
List<TextEditingController> TaxableValueControllers = [];
TextEditingController basicAmountReadOnlyController = TextEditingController();
TextEditingController cgstReadOnlyController = TextEditingController();
TextEditingController sgstReadOnlyController = TextEditingController();
TextEditingController igstReadOnlyController = TextEditingController();
TextEditingController totalReadOnlyAmountController = TextEditingController();
TextEditingController noteController = TextEditingController();
List<AccountList> _accountList = [];
List<Employees> _employees = [];
List<States> _billingStates = [];
List<States> _dispatchStates = [];
List<SaleProducts> _saleProducts = [];
List<Districts> _billingDistricts = [];
List<Districts> _dispatchDistricts = [];
List<SubLocations> _billingSubLocations = [];
List<SubLocations> _dispatchSubLocations = [];
List<String> _unloadingScope = [];
List<String> _freightScope = [];
List<String> _erectionScope = [];
List<String> _tpcApplicable = [];
List<TpcList> _tpcAgent = [];
AccountDetails _accountDetails = AccountDetails();
String selectAccountError = "";
String billingNameError = "";
String billingAddressError = "";
String billingPincodeError = "";
String dispatchAddressError = "";
String dispatchPincodeError = "";
String tpcAmountError = "";
String gstError = "";
AccountList? _selectedAccountList;
String? _selectedAccountID;
String? _selectedAccountName;
Employees? _selectedEmployees;
String? _selectedEmployeeID;
String? _selectedEmployeeName;
States? _selectedBillingStates;
String? _selectedBillingStateID;
String? _selectedBillingStateName;
Districts? _selectedBillingDistricts;
String? _selectedBillingDistrictID;
String? _selectedBillingDistrictValue;
SubLocations? _selectedBillingSubLocations;
String? _selectedBillingSubLocID;
String? _selectedBillingSubLocValue;
States? _selectedDispatchStates;
String? _selectedDispatchStateID;
String? _selectedDispatchStateName;
Districts? _selectedDispatchDistricts;
String? _selectedDispatchDistrictID;
String? _selectedDispatchDistrictValue;
SubLocations? _selectedDispatchSubLocations;
String? _selectedDispatchSubLocID;
String? _selectedDispatchSubLocValue;
SaleProducts? _selectedSaleProducts;
List<String?> _selectedSaleProductID = [];
String? _selectedSaleProductName;
String? _selectedUnloadingScope;
String? _selectedFreightScope;
String? _selectedErectionScope;
String? _selectedTpcStatus;
TpcList? _selectedTpcAgent;
String? _selectedTpcAgentID;
String? _selectedTpcAgentValue;
LatLng startLocation = const LatLng(17.439112226708446, 78.43292499146135);
LatLng? currentLocationLatLng;
String latlongs = "";
Set<Marker> markers = {};
Location.LocationData? currentLocation;
bool isLocationEnabled = false;
bool hasLocationPermission = false;
String? FileError;
String? dateError;
bool _isLoading = false;
int _imagePicked = 0;
File? _image;
File? _imageName;
final ImagePicker _picker = ImagePicker();
DateTime? _date;
String? _formattedDate;
Timer? _debounce;
List<Map<String, String>> _selectedOrders = [];
List<Map<String, String>> get selectedOrders => _selectedOrders;
bool _submitClicked = false;
bool get submitClicked => _submitClicked;
set submitClicked(bool value){
class Addorderprovider extends ChangeNotifier {
TextEditingController dropDownSearchController = TextEditingController();
TextEditingController dropDownTpcSearchController = TextEditingController();
TextEditingController billingStateSearchController = TextEditingController();
TextEditingController billingDistrictSearchController =
TextEditingController();
TextEditingController billingSubLocSearchController = TextEditingController();
TextEditingController dispatchStateSearchController = TextEditingController();
TextEditingController dispatchDistrictSearchController =
TextEditingController();
TextEditingController dispatchSubLocSearchController =
TextEditingController();
TextEditingController billingNameController = TextEditingController();
TextEditingController billingAddressController = TextEditingController();
TextEditingController billingPincodeController = TextEditingController();
TextEditingController dispatchAddressController = TextEditingController();
TextEditingController dispatchPincodeController = TextEditingController();
TextEditingController gstController = TextEditingController();
TextEditingController orderReceivedDateController = TextEditingController();
TextEditingController tpcAmountController = TextEditingController();
List<TextEditingController> ProductControllers = [];
List<TextEditingController> PriceControllers = [];
List<TextEditingController> QuantityControllers = [];
List<TextEditingController> CGSTControllers = [];
List<TextEditingController> SGSTControllers = [];
List<TextEditingController> IGSTControllers = [];
List<TextEditingController> TotalPriceControllers = [];
List<TextEditingController> TaxableValueControllers = [];
TextEditingController basicAmountReadOnlyController = TextEditingController();
TextEditingController cgstReadOnlyController = TextEditingController();
TextEditingController sgstReadOnlyController = TextEditingController();
TextEditingController igstReadOnlyController = TextEditingController();
TextEditingController totalReadOnlyAmountController = TextEditingController();
TextEditingController noteController = TextEditingController();
List<AccountList> _accountList = [];
List<Employees> _employees = [];
List<States> _billingStates = [];
List<States> _dispatchStates = [];
List<SaleProducts> _saleProducts = [];
List<Districts> _billingDistricts = [];
List<Districts> _dispatchDistricts = [];
List<SubLocations> _billingSubLocations = [];
List<SubLocations> _dispatchSubLocations = [];
List<String> _unloadingScope = [];
List<String> _freightScope = [];
List<String> _erectionScope = [];
List<String> _tpcApplicable = [];
List<TpcList> _tpcAgent = [];
AccountDetails _accountDetails = AccountDetails();
String selectAccountError = "";
String orderDateError = "";
String billingNameError = "";
String billingAddressError = "";
String billingPincodeError = "";
String dispatchAddressError = "";
String dispatchPincodeError = "";
String tpcAmountError = "";
String gstError = "";
String selectedBillingStateError = "";
String selectedBillingDistrictError = "";
String selectedBillingSubLocError = "";
String selectedDispatchStateError = "";
String selectedDispatchDistrictError = "";
String selectedDispatchSubLocError = "";
AccountList? _selectedAccountList;
String? _selectedAccountID;
String? _selectedAccountName;
Employees? _selectedEmployees;
String? _selectedEmployeeID;
String? _selectedEmployeeName;
States? _selectedBillingStates;
String? _selectedBillingStateID;
String? _selectedBillingStateName;
Districts? _selectedBillingDistricts;
String? _selectedBillingDistrictID;
String? _selectedBillingDistrictValue;
SubLocations? _selectedBillingSubLocations;
String? _selectedBillingSubLocID;
String? _selectedBillingSubLocValue;
States? _selectedDispatchStates;
String? _selectedDispatchStateID;
String? _selectedDispatchStateName;
Districts? _selectedDispatchDistricts;
String? _selectedDispatchDistrictID;
String? _selectedDispatchDistrictValue;
SubLocations? _selectedDispatchSubLocations;
String? _selectedDispatchSubLocID;
String? _selectedDispatchSubLocValue;
SaleProducts? _selectedSaleProducts;
List<String?> _selectedSaleProductID = [];
String? _selectedSaleProductName;
String? _selectedUnloadingScope;
String? _selectedFreightScope;
String? _selectedErectionScope;
String? _selectedTpcStatus;
TpcList? _selectedTpcAgent;
String? _selectedTpcAgentID;
String? _selectedTpcAgentValue;
LatLng startLocation = const LatLng(17.439112226708446, 78.43292499146135);
LatLng? currentLocationLatLng;
String latlongs = "";
Set<Marker> markers = {};
Location.LocationData? currentLocation;
bool isLocationEnabled = false;
bool hasLocationPermission = false;
String? FileError;
String? dateError;
bool _isLoading = false;
int _imagePicked = 0;
File? _image;
File? _imageName;
final ImagePicker _picker = ImagePicker();
DateTime? _date;
String? _formattedDate;
Timer? _debounce;
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;
notifyListeners();
}
}
set selectedOrders(value) {
set selectedOrders(value) {
_selectedOrders = selectedOrders;
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;
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;
notifyListeners();
}
}
set selectedAccountList(AccountList? value) {
set selectedAccountList(AccountList? value) {
_selectedAccountList = value;
_selectedAccountID = value!.id;
_selectedAccountName = value!.text!;
notifyListeners();
}
}
set selectedAccountID(String? value) {
set selectedAccountID(String? value) {
_selectedAccountID = value;
notifyListeners();
}
}
set selectedAccountName(String? value) {
set selectedAccountName(String? value) {
_selectedAccountName = value;
notifyListeners();
}
}
set selectedEmployees(Employees? value) {
set selectedEmployees(Employees? value) {
_selectedEmployees = value;
_selectedEmployeeID = value!.id;
_selectedEmployeeName = value!.name!;
notifyListeners();
}
}
set selectedEmployeeID(String? value) {
set selectedEmployeeID(String? value) {
_selectedEmployeeID = value;
notifyListeners();
}
}
set selectedEmployeeName(String? value) {
set selectedEmployeeName(String? value) {
_selectedEmployeeName = value;
notifyListeners();
}
}
set selecetdBillingStates(States? value) {
set selecetdBillingStates(States? value) {
_selectedBillingStates = value;
_selectedBillingStateID = value!.id;
_selectedBillingStateName = value!.name!;
selectedBillingStateError = "";
notifyListeners();
}
}
set selectedBillingStateID(String? value) {
set selectedBillingStateID(String? value) {
_selectedBillingStateID = value;
selectedBillingStateError = "";
notifyListeners();
}
}
set selectedBillingStateName(String? value) {
set selectedBillingStateName(String? value) {
_selectedBillingStateName = value;
selectedBillingStateError = "";
notifyListeners();
}
}
set selectedBillingDistricts(Districts? value) {
set selectedBillingDistricts(Districts? value) {
_selectedBillingDistricts = value;
_selectedBillingDistrictID = value!.id;
_selectedBillingDistrictValue = value!.district;
selectedBillingDistrictError = "";
// districtError = null;
notifyListeners();
}
}
set selectedBillingSubLocations(SubLocations? value) {
set selectedBillingSubLocations(SubLocations? value) {
_selectedBillingSubLocations = value;
_selectedBillingSubLocID = value!.id;
_selectedBillingSubLocValue = value!.subLocality!;
selectedBillingSubLocError = "";
// localityError = null;
notifyListeners();
}
}
set selectedBillingDistrictId(value) {
set selectedBillingDistrictId(value) {
_selectedBillingDistrictID = value;
notifyListeners();
}
}
set selectedBillingDistrictValue(value) {
set selectedBillingDistrictValue(value) {
_selectedBillingDistrictValue = value;
notifyListeners();
}
}
set selectedBillingSubLocID(value) {
set selectedBillingSubLocID(value) {
_selectedBillingSubLocID = value;
notifyListeners();
}
}
set selectedBillingSubLocValue(value) {
set selectedBillingSubLocValue(value) {
_selectedBillingSubLocValue = value;
notifyListeners();
}
}
set selecetdDispatchStates(States? value) {
set selecetdDispatchStates(States? value) {
_selectedDispatchStates = value;
_selectedDispatchStateID = value!.id;
_selectedDispatchStateName = value!.name!;
selectedDispatchStateError = "";
notifyListeners();
}
}
set selectedDispatchStateID(String? value) {
set selectedDispatchStateID(String? value) {
_selectedDispatchStateID = value;
notifyListeners();
}
}
set selectedDispatchStateName(String? value) {
set selectedDispatchStateName(String? value) {
_selectedDispatchStateName = value;
notifyListeners();
}
}
set selectedDispatchDistricts(Districts? value) {
set selectedDispatchDistricts(Districts? value) {
_selectedDispatchDistricts = value;
_selectedDispatchDistrictID = value!.id;
_selectedDispatchDistrictValue = value!.district;
selectedDispatchDistrictError = "";
// districtError = null;
notifyListeners();
}
}
set selectedDispatchSubLocations(SubLocations? value) {
set selectedDispatchSubLocations(SubLocations? value) {
_selectedDispatchSubLocations = value;
_selectedDispatchSubLocID = value!.id;
_selectedDispatchSubLocValue = value!.subLocality!;
selectedDispatchSubLocError = "";
// localityError = null;
notifyListeners();
}
}
set selectedDispatchDistrictId(value) {
set selectedDispatchDistrictId(value) {
_selectedDispatchDistrictID = value;
notifyListeners();
}
}
set selectedDispatchDistrictValue(value) {
set selectedDispatchDistrictValue(value) {
_selectedDispatchDistrictValue = value;
notifyListeners();
}
}
set selectedDispatchSubLocID(value) {
set selectedDispatchSubLocID(value) {
_selectedDispatchSubLocID = value;
notifyListeners();
}
}
set selectedDispatchSubLocValue(value) {
set selectedDispatchSubLocValue(value) {
_selectedDispatchSubLocValue = value;
notifyListeners();
}
}
set selectedSaleProducts(SaleProducts? value) {
set selectedSaleProducts(SaleProducts? value) {
_selectedSaleProducts = value;
// _selectedSaleProductID = value!.id!;
// _selectedSaleProductName = value!.prodName;
notifyListeners();
}
}
set selectedSaleProductID(List<String?> value) {
set selectedSaleProductID(List<String?> value) {
_selectedSaleProductID = value;
notifyListeners();
}
}
set selectedSaleProductName(String? value) {
set selectedSaleProductName(String? value) {
_selectedSaleProductName = value;
notifyListeners();
}
}
set selectedUnloadingScope(String? value) {
set selectedUnloadingScope(String? value) {
_selectedUnloadingScope = value;
notifyListeners();
}
}
set selectedFreightScope(String? value) {
set selectedFreightScope(String? value) {
_selectedFreightScope = value;
notifyListeners();
}
}
set selectedErectionScope(String? value) {
set selectedErectionScope(String? value) {
_selectedErectionScope = value;
notifyListeners();
}
}
set selectedTpcStatus(String? value) {
set selectedTpcStatus(String? value) {
_selectedTpcStatus = value;
notifyListeners();
}
}
set selectedTpcAgent(TpcList? value) {
set selectedTpcAgent(TpcList? value) {
_selectedTpcAgent = value;
_selectedTpcAgentID = value!.id;
_selectedTpcAgentValue = value!.text;
notifyListeners();
}
}
set selectedTpcAgentID(String? value) {
set selectedTpcAgentID(String? value) {
_selectedTpcAgentID = value;
notifyListeners();
}
}
set selectedTpcAgentValue(String? value) {
set selectedTpcAgentValue(String? value) {
_selectedTpcAgentValue = value;
notifyListeners();
}
}
set accountDetails(AccountDetails value) {
set accountDetails(AccountDetails value) {
_accountDetails = value;
notifyListeners();
}
}
set imagePath(File? value) {
set imagePath(File? value) {
_imageName = value;
notifyListeners();
}
}
set imageFilePath(File? value) {
set imageFilePath(File? value) {
_image = value;
notifyListeners();
}
}
set imagePicked(value) {
set imagePicked(value) {
_imagePicked = value;
notifyListeners();
}
}
set formattedDate(String? value) {
set formattedDate(String? value) {
_formattedDate = value;
orderReceivedDateController.text = _formattedDate!;
dateError = null;
notifyListeners();
}
}
void setDate(DateTime newDate) {
void setDate(DateTime newDate) {
_date = newDate;
_formattedDate = DateFormat('yyyy-MM-dd').format(newDate);
orderReceivedDateController.text = _formattedDate!;
dateError = null;
notifyListeners();
}
}
dynamic get basicAmount {
dynamic get basicAmount {
double total = 0;
for (var controller in TaxableValueControllers) {
total += double.tryParse(controller.text)?.round() ?? 0.0;
}
basicAmountReadOnlyController.text = total.toStringAsFixed(2);
return total;
}
}
dynamic get cgstAmount {
dynamic get cgstAmount {
double total = 0;
for (int i = 0; i < ProductControllers.length; i++) {
final taxableValue =
......@@ -531,9 +547,9 @@ dynamic get cgstAmount {
}
cgstReadOnlyController.text = total.toStringAsFixed(2);
return total;
}
}
dynamic get sgstAmount {
dynamic get sgstAmount {
double total = 0;
for (int i = 0; i < ProductControllers.length; i++) {
final taxableValue =
......@@ -543,9 +559,9 @@ dynamic get sgstAmount {
}
sgstReadOnlyController.text = total.toStringAsFixed(2);
return total;
}
}
dynamic get igstAmount {
dynamic get igstAmount {
double total = 0;
for (int i = 0; i < ProductControllers.length; i++) {
final taxableValue =
......@@ -555,15 +571,15 @@ dynamic get igstAmount {
}
igstReadOnlyController.text = total.toStringAsFixed(2);
return total;
}
}
dynamic get totalAmount {
dynamic get totalAmount {
double total = basicAmount + cgstAmount + sgstAmount + igstAmount;
totalReadOnlyAmountController.text = total.round().toStringAsFixed(2);
return total! ;
}
return total!;
}
void addNewRow() {
void addNewRow() {
ProductControllers.add(TextEditingController());
PriceControllers.add(TextEditingController());
QuantityControllers.add(TextEditingController(text: '1'));
......@@ -571,12 +587,13 @@ void addNewRow() {
SGSTControllers.add(TextEditingController(text: '9'));
IGSTControllers.add(TextEditingController(text: '0'));
TaxableValueControllers.add(TextEditingController());
TotalPriceControllers.add(TextEditingController());
selectedSaleProductID.add(null);
notifyListeners();
}
}
void removeRow(int index) {
void removeRow(int index) {
if (index >= 0 && index < ProductControllers.length) {
ProductControllers[index].dispose();
PriceControllers[index].dispose();
......@@ -585,6 +602,7 @@ void removeRow(int index) {
SGSTControllers[index].dispose();
IGSTControllers[index].dispose();
TaxableValueControllers[index].dispose();
TotalPriceControllers[index].dispose();
ProductControllers.removeAt(index);
PriceControllers.removeAt(index);
QuantityControllers.removeAt(index);
......@@ -592,12 +610,13 @@ void removeRow(int index) {
SGSTControllers.removeAt(index);
IGSTControllers.removeAt(index);
TaxableValueControllers.removeAt(index);
TotalPriceControllers.removeAt(index);
selectedSaleProductID.removeAt(index);
notifyListeners();
}
}
}
void updateSelectedProduct(int index, SaleProducts? product) {
void updateSelectedProduct(int index, SaleProducts? product) {
if (index >= 0 && index < _saleProducts.length) {
_selectedSaleProducts = product;
_selectedSaleProductID[index] = product!.id;
......@@ -605,9 +624,9 @@ void updateSelectedProduct(int index, SaleProducts? product) {
updateRowCalculations(index);
notifyListeners();
}
}
}
void updateRowCalculations(int index) {
void updateRowCalculations(int index) {
if (index >= 0 && index < PriceControllers.length) {
final inclusivePrice =
double.tryParse(PriceControllers[index].text) ?? 0.0;
......@@ -625,21 +644,20 @@ void updateRowCalculations(int index) {
);
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() {
final List<Map<String, dynamic>> orders = [];
for (int i = 0; i < ProductControllers.length; i++) {
orders.add({
'product_id': selectedSaleProductID[i],
'product_name': ProductControllers[i].text,
'inclusive_price': PriceControllers[i].text,
'quantity': QuantityControllers[i].text,
'cgst': CGSTControllers[i].text,
'sgst': SGSTControllers[i].text,
'igst': IGSTControllers[i].text,
'taxable_value': TaxableValueControllers[i].text,
'qty': QuantityControllers[i].text,
'price': PriceControllers[i].text,
'cgst_p': CGSTControllers[i].text,
'sgst_p': SGSTControllers[i].text,
'igst_p': IGSTControllers[i].text,
'total_price': TaxableValueControllers[i].text,
});
}
return {
......@@ -807,14 +825,14 @@ void updateRowCalculations(int index) {
);
if (data != null) {
if (data.error == "0") {
_tpcApplicable = ["Yes","No"];
_erectionScope = data.erectionScope??[];
_unloadingScope = data.unloadingScope??[];
_freightScope = data.freightScope??[];
_employees = data.employees??[];
_billingStates = data.states??[];
_dispatchStates = data.states??[];
_saleProducts = data.saleProducts??[];
_tpcApplicable = ["Yes", "No"];
_erectionScope = data.erectionScope ?? [];
_unloadingScope = data.unloadingScope ?? [];
_freightScope = data.freightScope ?? [];
_employees = data.employees ?? [];
_billingStates = data.states ?? [];
_dispatchStates = data.states ?? [];
_saleProducts = data.saleProducts ?? [];
checkDropdownselected();
......@@ -839,7 +857,6 @@ void updateRowCalculations(int index) {
!_billingStates.contains(_selectedBillingStates)) {
_selectedBillingStateID = null;
_selectedBillingStateName = "";
}
if (_selectedBillingDistricts != null &&
!_billingDistricts.contains(_selectedBillingDistricts)) {
......@@ -884,8 +901,7 @@ void updateRowCalculations(int index) {
_selectedTpcStatus = null;
}
if (_selectedTpcAgent != null &&
!_tpcAgent.contains(_selectedTpcAgent)) {
if (_selectedTpcAgent != null && !_tpcAgent.contains(_selectedTpcAgent)) {
_selectedTpcAgentID = null;
_selectedTpcAgentValue = "";
}
......@@ -941,6 +957,7 @@ void updateRowCalculations(int index) {
}
} catch (e, s) {}
}
Future<void> getDispatchDistrictAPI(context, stateID) async {
try {
var homeProv = Provider.of<HomescreenNotifier>(context, listen: false);
......@@ -980,6 +997,7 @@ void updateRowCalculations(int index) {
}
} catch (e, s) {}
}
Future<void> getDispatchSubLocationAPI(context, districtID) async {
try {
var homeProv = Provider.of<HomescreenNotifier>(context, listen: false);
......@@ -1000,7 +1018,7 @@ void updateRowCalculations(int index) {
} catch (e, s) {}
}
Future<void> ordersAddOrderTPCAgentFunction(context,mode, text) async {
Future<void> ordersAddOrderTPCAgentFunction(context, mode, text) async {
try {
final provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.addOrderTPCAgentListAPI(
......@@ -1037,6 +1055,9 @@ void updateRowCalculations(int index) {
order_products,
) async {
try {
if (!validateAddOrder()) {
return;
}
_submitClicked = true;
final provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.addOrderSubmitAPI(
......@@ -1311,6 +1332,112 @@ void updateRowCalculations(int index) {
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() {
_submitClicked = false;
dropDownSearchController.clear();
......@@ -1331,7 +1458,6 @@ void updateRowCalculations(int index) {
gstController.clear();
orderReceivedDateController.clear();
tpcAmountController.clear();
gstController.clear();
orderReceivedDateController.clear();
noteController.clear();
......@@ -1367,7 +1493,12 @@ void updateRowCalculations(int index) {
billingPincodeError = "";
dispatchAddressError = "";
dispatchPincodeError = "";
selectedBillingStateError = "";
selectedBillingDistrictError = "";
selectedBillingSubLocError = "";
selectedDispatchStateError = "";
selectedDispatchDistrictError = "";
selectedDispatchSubLocError = "";
_selectedAccountList = null;
_selectedEmployees = null;
_selectedBillingStates = null;
......
......@@ -6,6 +6,7 @@ import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:generp/Notifiers/HomeScreenNotifier.dart';
import 'package:generp/Utils/commonServices.dart';
import 'package:generp/services/api_calling.dart';
import 'package:image_picker/image_picker.dart';
import 'package:intl/intl.dart';
......@@ -15,6 +16,8 @@ import '../../Models/ordersModels/AddOrderPaymentSelectAccountResponse.dart';
import '../../Models/ordersModels/AddOrderPaymentSelectOrderResponse.dart';
class Addpaymentprovider extends ChangeNotifier{
bool _submitClicked = false;
TextEditingController dropDownSearchController = TextEditingController();
TextEditingController amountController = TextEditingController();
......@@ -65,7 +68,7 @@ class Addpaymentprovider extends ChangeNotifier{
bool get submitClicked =>_submitClicked;
List<String> get paymentMode => _paymentMode;
List<String> get description => _description;
bool get isLoading => _isLoading;
......@@ -90,6 +93,11 @@ class Addpaymentprovider extends ChangeNotifier{
File? get imageFilePath => _image;
int get imagePicked => _imagePicked;
set submitClicked(bool value){
_submitClicked = value;
notifyListeners();
}
set accountList(List<AccountList> value){
_accountList = value;
notifyListeners();
......@@ -130,7 +138,7 @@ class Addpaymentprovider extends ChangeNotifier{
}
void updateSelectedOrderId(int index, OrderList? value) {
_selectedOrderLists = value!;
_updateAdjustedAmount();
_selectedOrderIds[index] = value!.orderId;
print(_selectedOrderIds[index]);
notifyListeners();
......@@ -212,11 +220,18 @@ class Addpaymentprovider extends ChangeNotifier{
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();
notifyListeners();
}
void updateAdjustedAmount() => _updateAdjustedAmount();
List<Map<String, String>> getFormData() {
_selectedOrders = [];
......@@ -225,18 +240,17 @@ class Addpaymentprovider extends ChangeNotifier{
for (int i = 0; i < orderAmountControllers.length; i++) {
if (_selectedOrderIds[i] != null &&
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());
}
}
_selectedOrders = latestEntries.entries
.map((entry) => {
"order_id": entry.key,
"amount": entry.value,
})
.toList();
print("Form Data: $_selectedOrders");
orderAdjustedAmountController.text = tempAdjustAmount.toString();
......@@ -369,6 +383,12 @@ class Addpaymentprovider extends ChangeNotifier{
accountId,selDescription, selectedOrders,
paymentMode,) async {
try{
if (!validateAddPayment()) {
return;
}
_submitClicked = true;
notifyListeners();
final provider = Provider.of<HomescreenNotifier>(context,listen: false);
final data = await ApiCalling.addOrderpaymentListSubmitAPI(provider.empId, provider.session,
accountId, selDescription,
......@@ -377,20 +397,26 @@ class Addpaymentprovider extends ChangeNotifier{
paymentMode, paymentRefController.text, _image);
if(data!=null){
if(data.error=="0"){
_submitClicked = false;
resetForm();
Navigator.pop(context);
toast(context, data.message);
notifyListeners();
}else{
_submitClicked = false;
notifyListeners();
toast(context, data.message);
}
}else{
submitClicked = false;
notifyListeners();
}
}catch(e,s){
submitClicked = false;
notifyListeners();
}
}
......@@ -437,11 +463,13 @@ class Addpaymentprovider extends ChangeNotifier{
}
void onChangeAmount(value){
_updateAdjustedAmount();
amountError = "";
notifyListeners();
}
void onChangeorderAdjustedAmount(value){
orderAdjustedAmountError = "";
_updateAdjustedAmount();
notifyListeners();
}
void onChangeDescription(value){
......@@ -453,6 +481,51 @@ class Addpaymentprovider extends ChangeNotifier{
paymentRefError = "";
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() {
......
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';
import '../HomeScreenNotifier.dart';
class Pagesdashboardprovider extends ChangeNotifier {
bool _submitClicked = false;
TextEditingController feedbackController = TextEditingController();
TextEditingController approveRejectFeedbackController =
TextEditingController();
......@@ -49,6 +50,12 @@ class Pagesdashboardprovider extends ChangeNotifier {
File? _image;
File? _imageName;
bool get submitClicked => _submitClicked;
set submitClicked(bool value){
_submitClicked = value;
notifyListeners();
}
String get approvalSheetHeading => _approvalSheetHeading;
String get rejecetionSheetHeading => _rejecetionSheetHeading;
......@@ -459,6 +466,8 @@ class Pagesdashboardprovider extends ChangeNotifier {
// _submitClicked = false;
return;
}
_submitClicked = true;
notifyListeners();
var provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.ordersDetailsFeedbackSubmissionAPI(
provider.empId,
......@@ -470,14 +479,23 @@ class Pagesdashboardprovider extends ChangeNotifier {
);
if (data != null) {
if (data.error == "0") {
_submitClicked = false;
toast(context, "Submitted Successfully");
resetForm();
Navigator.pop(context, true);
notifyListeners();
} else {}
} else {
_submitClicked = false;
notifyListeners();
}
}else{
_submitClicked = false;
notifyListeners();
}
} catch (e, s) {
_submitClicked = false;
notifyListeners();
}
} catch (e, s) {}
}
Future<void> approvalRejectionAPIFunction(
......@@ -499,6 +517,8 @@ class Pagesdashboardprovider extends ChangeNotifier {
// _submitClicked = false;
return;
}
_submitClicked = true;
notifyListeners();
var provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.ordersDetailsApproveRejectAPI(
provider.empId,
......@@ -519,12 +539,12 @@ class Pagesdashboardprovider extends ChangeNotifier {
);
if (data != null) {
if (data.error == "0") {
_submitClicked = false;
toast(context, "${data.message}");
resetForm();
Navigator.pop(context, true);
notifyListeners();
} else {}
notifyListeners();
}
} catch (e, s) {}
}
......@@ -548,10 +568,18 @@ class Pagesdashboardprovider extends ChangeNotifier {
resetForm();
Navigator.pop(context, true);
notifyListeners();
} else {}
} else {
_submitClicked = false;
notifyListeners();
}
}else{
_submitClicked = false;
notifyListeners();
}
} catch (e, s) {
_submitClicked = false;
notifyListeners();
}
} catch (e, s) {}
}
void onChangeFeedback(value) {
......
......@@ -14,6 +14,7 @@ import '../../services/api_calling.dart';
import '../HomeScreenNotifier.dart';
class Tpcagentsprovider extends ChangeNotifier{
bool _submitClicked = false;
TextEditingController tpcNameController = TextEditingController();
TextEditingController tpcMobileNumberController = TextEditingController();
......@@ -34,6 +35,7 @@ class Tpcagentsprovider extends ChangeNotifier{
String? tpcBankAccountNumberError = "";
String? tpcBankIFSCError = "";
String? tpcNoteError = "";
String? imageError = "";
String? tpcPaymentModeError = "";
String? tpcPaymentReferenceNoError = "";
......@@ -53,6 +55,7 @@ class Tpcagentsprovider extends ChangeNotifier{
File? _image;
File? _imageName;
bool get submitClicked => _submitClicked;
List<String> get Headings => _headings;
List<String> get subHeadings => _subHeadings;
......@@ -69,6 +72,11 @@ class Tpcagentsprovider extends ChangeNotifier{
get imagePicked => _image_picked;
set submitClicked(bool value){
_submitClicked = value;
notifyListeners();
}
set imagePath(File? value) {
_imageName = value;
notifyListeners();
......@@ -188,6 +196,8 @@ class Tpcagentsprovider extends ChangeNotifier{
// _submitClicked = false;
return;
}
_submitClicked = true;
notifyListeners();
var provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.TpcIssueListApprovalAPI(
provider.empId,
......@@ -201,13 +211,26 @@ class Tpcagentsprovider extends ChangeNotifier{
if (data != null) {
if (data.error == "0") {
_submitClicked = false;
toast(context, "Submitted Successfully");
resetAll();
resetApprovalForm();
Navigator.pop(context, true);
notifyListeners();
}else{
_submitClicked = false;
notifyListeners();
}
}else{
_submitClicked = false;
notifyListeners();
}
} catch (e, s) {
_submitClicked = false;
notifyListeners();
}
} catch (e, s) {}
}
Future<void> addTPCAgentAPIFunction(context) async {
......@@ -216,6 +239,8 @@ class Tpcagentsprovider extends ChangeNotifier{
// _submitClicked = false;
return;
}
_submitClicked = true;
notifyListeners();
var provider = Provider.of<HomescreenNotifier>(context, listen: false);
final data = await ApiCalling.ordersAddTPCAgentAPI(
provider.empId,
......@@ -233,13 +258,24 @@ class Tpcagentsprovider extends ChangeNotifier{
if (data != null) {
if (data.error == "0") {
_submitClicked = false;
toast(context, "Submitted Successfully");
resetAll();
resetAddTPCAgentForm();
Navigator.pop(context, true);
notifyListeners();
}else{
_submitClicked = false;
notifyListeners();
}
}else{
_submitClicked = false;
notifyListeners();
}
} catch (e, s) {
_submitClicked = false;
notifyListeners();
}
} catch (e, s) {}
}
bool validateAddTPCAgentForm(BuildContext context) {
......@@ -262,6 +298,11 @@ class Tpcagentsprovider extends ChangeNotifier{
tpcMobileNumberError = "PLease Enter Your Mobile Number";
isValid = false;
}
if(_image_picked==0){
imageError = "Please select ID Proof";
isValid = false;
}
if(tpcBankNameController.text.trim().isEmpty){
tpcBankNameError = "Please Enter Bank Name";
isValid = false;
......@@ -278,7 +319,7 @@ class Tpcagentsprovider extends ChangeNotifier{
tpcBankIFSCError = "Please Enter IFSC";
isValid = false;
}
_submitClicked = false;
notifyListeners();
return isValid;
......@@ -305,6 +346,7 @@ class Tpcagentsprovider extends ChangeNotifier{
orderTpcFeedbackError = "Please enter a description";
isValid = false;
}
_submitClicked = false;
notifyListeners();
return isValid;
}
......@@ -367,6 +409,9 @@ class Tpcagentsprovider extends ChangeNotifier{
tpcBankAccountNumberController.clear();
tpcBankIFSCController.clear();
tpcNoteController.clear();
tpcPaymentModeController.clear();
tpcPaymentReferenceNoController.clear();
orderTpcFeedbackController.clear();
tpcNameError = "";
tpcMobileNumberError = "";
tpcBankNameError = "";
......@@ -376,7 +421,9 @@ class Tpcagentsprovider extends ChangeNotifier{
tpcNoteError = "";
_image = null;
_imageName = null;
imageError = null;
_image_picked = 0;
notifyListeners();
}
void resetApprovalForm() {
......@@ -388,7 +435,9 @@ class Tpcagentsprovider extends ChangeNotifier{
orderTpcFeedbackError = "";
_image = null;
_imageName = null;
imageError = null;
_image_picked = 0;
notifyListeners();
}
void resetAll(){
......@@ -415,6 +464,8 @@ class Tpcagentsprovider extends ChangeNotifier{
_image = null;
_imageName = null;
_image_picked = 0;
imageError = null;
notifyListeners();
}
imgFromCamera(context) async {
......@@ -429,6 +480,7 @@ class Tpcagentsprovider extends ChangeNotifier{
_image = File(galleryImage!.path);
_imageName = File(galleryImage!.name);
_image_picked = 1;
imageError = null;
notifyListeners();
} catch (e) {
debugPrint("mmmm: ${e.toString()}");
......@@ -450,6 +502,7 @@ class Tpcagentsprovider extends ChangeNotifier{
_image = File(galleryImage!.path);
_imageName = File(galleryImage!.name);
_image_picked = 1;
imageError = null;
notifyListeners();
// var file = FlutterImageCompress.compressWithFile(galleryImage!.path);
} catch (e) {
......
......@@ -216,6 +216,7 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider(create: (_) => Crmeditprospectaccountprovider()),
ChangeNotifierProvider(create: (_) => Addprospectleadsprovider()),
ChangeNotifierProvider(create: (_) => Editorderprovider()),
ChangeNotifierProvider(create: (_) => Dispatchorderprovider()),
],
child: Builder(
builder: (BuildContext context) {
......
......@@ -54,7 +54,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
resizeToAvoidBottomInset: true,
appBar: appbar2(
context,
widget.pageTitleName,
"Lead Details (${widget.mode})",
provider.resetAll,
InkResponse(
onTap: () {
......
......@@ -40,6 +40,8 @@ export 'package:generp/Notifiers/ordersProvider/addPaymentProvider.dart';
export 'package:generp/Notifiers/ordersProvider/addOrderProvider.dart';
export 'package:generp/Notifiers/ordersProvider/editPaymentProvider.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/LeadListProvider.dart';
......
......@@ -26,7 +26,8 @@ class _AddorderScreenState extends State<AddorderScreen> {
FocusNode focusNode = FocusNode();
FocusNode focusNodetpc = FocusNode();
List<FocusNode> focusNodes = List.generate(10, (index) => FocusNode());
Dropdowntheme ddtheme = Dropdowntheme();
Dropdowntheme ddtheme = Dropdowntheme();
@override
void initState() {
// TODO: implement initState
......@@ -44,7 +45,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
@override
void dispose() {
focusNodes.map((e)=>e.dispose());
focusNodes.map((e) => e.dispose());
focusNode.dispose();
focusNodetpc.dispose();
super.dispose();
......@@ -95,7 +96,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
borderRadius: BorderRadius.circular(14),
),
child: ListTile(
onTap: (){
onTap: () {
if (focusNode.hasFocus) {
focusNode.unfocus();
} else {
......@@ -162,7 +163,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
margin: EdgeInsets.symmetric(horizontal: 0),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10),
height: widget.mode=="self"?50:150,
height: widget.mode == "self" ? 50 : 150,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
),
......@@ -317,7 +318,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
],
),
),
errorWidget(context, provider.dateError),
errorWidget(context, provider.orderDateError),
textControllerWidget(
context,
......@@ -329,7 +330,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
null,
focusNodes[0],
null,
TextInputAction.done
TextInputAction.done,
),
errorWidget(context, provider.billingNameError),
TextWidget(context, "Billing State"),
......@@ -381,7 +382,8 @@ Dropdowntheme ddtheme = Dropdowntheme();
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.billingStateSearchController,
searchController:
provider.billingStateSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
......@@ -396,8 +398,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
),
hintText: 'Search Sate...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
borderRadius: BorderRadius.circular(8),
),
),
),
......@@ -413,8 +414,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.billingStateSearchController
.clear();
provider.billingStateSearchController.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
......@@ -426,6 +426,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
],
),
),
errorWidget(context, provider.selectedBillingStateError),
TextWidget(context, "Billing District"),
//dd
DropdownButtonHideUnderline(
......@@ -474,12 +475,14 @@ Dropdowntheme ddtheme = Dropdowntheme();
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.billingDistrictSearchController,
searchController:
provider.billingDistrictSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.billingDistrictSearchController,
provider
.billingDistrictSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
......@@ -489,8 +492,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
),
hintText: 'Search District...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
borderRadius: BorderRadius.circular(8),
),
),
),
......@@ -519,6 +521,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
],
),
),
errorWidget(context, provider.selectedBillingDistrictError),
TextWidget(context, "Billing Sub Location"),
//dd
DropdownButtonHideUnderline(
......@@ -555,7 +558,8 @@ Dropdowntheme ddtheme = Dropdowntheme();
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.billingSubLocSearchController,
searchController:
provider.billingSubLocSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
......@@ -570,8 +574,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
),
hintText: 'Search Sub Location...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
borderRadius: BorderRadius.circular(8),
),
),
),
......@@ -600,6 +603,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
],
),
),
errorWidget(context, provider.selectedBillingSubLocError),
textControllerWidget(
context,
provider.billingAddressController,
......@@ -610,7 +614,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
null,
focusNodes[1],
focusNodes[2],
TextInputAction.next
TextInputAction.next,
),
errorWidget(context, provider.billingAddressError),
......@@ -625,7 +629,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
focusNodes[2],
null,
TextInputAction.done,
6
6,
),
errorWidget(context, provider.billingPincodeError),
......@@ -676,7 +680,8 @@ Dropdowntheme ddtheme = Dropdowntheme();
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.dispatchStateSearchController,
searchController:
provider.dispatchStateSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
......@@ -691,8 +696,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
),
hintText: 'Search Sate...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
borderRadius: BorderRadius.circular(8),
),
),
),
......@@ -721,6 +725,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
],
),
),
errorWidget(context, provider.selectedDispatchStateError),
//dd
TextWidget(context, "Dispatch District"),
//dd
......@@ -773,12 +778,14 @@ Dropdowntheme ddtheme = Dropdowntheme();
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.dispatchDistrictSearchController,
searchController:
provider.dispatchDistrictSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.dispatchDistrictSearchController,
provider
.dispatchDistrictSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
......@@ -788,8 +795,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
),
hintText: 'Search District...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
borderRadius: BorderRadius.circular(8),
),
),
),
......@@ -818,6 +824,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
],
),
),
errorWidget(context, provider.selectedDispatchDistrictError),
TextWidget(context, "Dispatch Sub Location"),
DropdownButtonHideUnderline(
child: Row(
......@@ -854,7 +861,8 @@ Dropdowntheme ddtheme = Dropdowntheme();
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.dispatchSubLocSearchController,
searchController:
provider.dispatchSubLocSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
......@@ -869,8 +877,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
),
hintText: 'Search Sub Location...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
borderRadius: BorderRadius.circular(8),
),
),
),
......@@ -899,6 +906,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
],
),
),
errorWidget(context, provider.selectedDispatchSubLocError),
//dd
textControllerWidget(
context,
......@@ -910,7 +918,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
null,
focusNodes[3],
focusNodes[4],
TextInputAction.next
TextInputAction.next,
),
errorWidget(context, provider.dispatchAddressError),
......@@ -925,7 +933,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
focusNodes[4],
focusNodes[5],
TextInputAction.next,
6
6,
),
errorWidget(context, provider.dispatchPincodeError),
......@@ -939,7 +947,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
null,
focusNodes[5],
null,
TextInputAction.done
TextInputAction.done,
),
errorWidget(context, provider.gstError),
......@@ -1333,7 +1341,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
FilteringTextInputFormatter.digitsOnly,
focusNodes[6],
focusNodes[7],
TextInputAction.next
TextInputAction.next,
),
errorWidget(context, provider.tpcAmountError),
],
......@@ -1355,6 +1363,10 @@ Dropdowntheme ddtheme = Dropdowntheme();
provider.submitClicked = true;
var order_prod_data = provider.getFormData();
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.ordersAddOrderAPISubmitFunction(
context,
......@@ -1372,7 +1384,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
provider.selectedBillingDistrictId,
provider.selectedBillingSubLocID,
provider.selectedTpcAgentID,
order_prod_data,
order_prod_data['orders'],
);
},
child: Container(
......@@ -1388,7 +1400,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
provider.submitClicked
? CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation<Color>(
AppColors.app_blue,
AppColors.white,
),
)
: Text(
......@@ -1603,10 +1615,16 @@ class OrderForm extends StatelessWidget {
)
.toList(),
value:
provider.saleProducts.contains(provider.selectedSaleProducts)?
provider.saleProducts.firstWhere(
(product) => product.id == provider.selectedSaleProductID[index],
):null,
provider.saleProducts.contains(
provider.selectedSaleProducts,
)
? provider.saleProducts.firstWhere(
(product) =>
product.id ==
provider
.selectedSaleProductID[index],
)
: null,
onChanged: (SaleProducts? value) {
if (value != null) {
if (provider
......@@ -1624,10 +1642,13 @@ class OrderForm extends StatelessWidget {
}
}
},
buttonStyleData: ddtheme.buttonStyleData,
buttonStyleData:
ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
menuItemStyleData:
ddtheme.menuItemStyleData,
dropdownStyleData:
ddtheme.dropdownStyleData,
),
),
),
......@@ -1649,8 +1670,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
TextInputAction.next,
),
),
const SizedBox(width: 8.0),
......@@ -1686,7 +1706,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
TextInputAction.next,
),
),
],
......@@ -1725,7 +1745,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
TextInputAction.next,
),
),
const SizedBox(width: 8.0),
......@@ -1760,7 +1780,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
TextInputAction.next,
),
),
const SizedBox(width: 8.0),
......@@ -1795,7 +1815,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
TextInputAction.next,
),
),
],
......@@ -1830,7 +1850,7 @@ class OrderForm extends StatelessWidget {
null,
null,
null,
TextInputAction.next
TextInputAction.next,
),
),
// const SizedBox(width: 8.0),
......@@ -1871,7 +1891,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
TextInputAction.none,
),
textControllerWidget(
context,
......@@ -1883,7 +1903,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
TextInputAction.none,
),
textControllerWidget(
context,
......@@ -1895,7 +1915,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
TextInputAction.none,
),
textControllerWidget(
context,
......@@ -1907,7 +1927,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
TextInputAction.none,
),
textControllerWidget(
context,
......@@ -1919,7 +1939,7 @@ class OrderForm extends StatelessWidget {
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
TextInputAction.none,
),
textControllerWidget(
context,
......@@ -1931,7 +1951,7 @@ class OrderForm extends StatelessWidget {
null,
focusNode,
null,
TextInputAction.done
TextInputAction.done,
),
],
),
......@@ -2010,10 +2030,11 @@ class OrderForm extends StatelessWidget {
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> {
focusedBorder: InputBorder.none,
isDense: true,
contentPadding: const EdgeInsets.symmetric(
horizontal: 10,
horizontal: 0,
vertical: 8,
),
hintText: 'Select Account Type',
hintStyle: const TextStyle(fontSize: 12),
hintStyle: const TextStyle(fontSize: 14),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
),
......@@ -154,7 +154,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
margin: EdgeInsets.symmetric(horizontal: 0),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10),
height: 150,
height: widget.mode=="self"?50:150,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
),
......@@ -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
// 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),
textControllerWidget(
......@@ -520,7 +229,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
errorWidget(context, provider.amountError),
///Addorderbutton
if (provider.selectedAccountID!.isNotEmpty) ...[
if (provider.selectedAccountID!=null) ...[
InkResponse(
onTap: () {
// if (provider.selectedOrderIds.length < provider.orderList.length) {
......@@ -617,7 +326,8 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
)
.toList(),
// value: provider.selectedOrderLists,
value: provider
value:provider.selectedOrderIds[index] != null?
provider
.orderList
.firstWhere(
(product) =>
......@@ -625,7 +335,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
.orderId ==
provider
.selectedOrderIds[index],
),
):null,
onChanged: (
OrderList? value,
) {
......@@ -684,7 +394,9 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
provider
.orderAmountControllers[index],
"Enter Order Amount",
(p0) {},
(p0) {
provider.updateAdjustedAmount();
},
TextInputType.number,
false,
FilteringTextInputFormatter
......@@ -708,6 +420,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
],
),
],
],
textControllerWidget(
......@@ -959,10 +672,11 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
bottomNavigationBar: InkResponse(
bottomNavigationBar:provider.submitClicked?null:
InkResponse(
onTap: () {
provider.submitClicked = true;
provider.selectedOrders = provider.getFormData();
print(provider.selectedOrders);
provider.ordersAddPaymentAPISubmitFunction(
context,
provider.selectedAccountID,
......@@ -980,7 +694,9 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
color: AppColors.app_blue,
borderRadius: BorderRadius.circular(15),
),
child: Text(
child:provider.submitClicked?CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(Colors.white),
): Text(
"Submit",
style: TextStyle(
fontSize: 15,
......
......@@ -155,6 +155,7 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
),
),
],
errorWidget(context, provider.imageError),
textControllerWidget(
context,
......@@ -212,7 +213,8 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
TextInputType.text,
false,
null,
focusNodes[5],focusNodes[6],TextInputAction.next
focusNodes[5],focusNodes[6],
TextInputAction.next
),
if (provider.tpcBankIFSCError != null) ...[
errorWidget(context, provider.tpcBankIFSCError),
......@@ -232,7 +234,8 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
errorWidget(context, provider.tpcNoteError),
],
InkWell(
onTap: () {
onTap:provider.submitClicked?null: () {
provider.submitClicked = true;
provider.addTPCAgentAPIFunction(context);
},
......@@ -250,7 +253,9 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
borderRadius: BorderRadius.circular(14.0),
),
child: Center(
child: Text(
child:provider.submitClicked?CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(Colors.white),
): Text(
"Submit",
textAlign: TextAlign.center,
style: TextStyle(color: Colors.white),
......
import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/ordersProvider/dispatchOrderProvider.dart';
import 'package:generp/Notifiers/ordersProvider/pagesDashboardProvider.dart';
import 'package:generp/Utils/dropdownTheme.dart';
import 'package:generp/screens/screensExports.dart';
import 'package:provider/provider.dart';
......@@ -9,6 +12,7 @@ import '../../Utils/app_colors.dart';
import '../../Utils/commonWidgets.dart';
import '../finance/FileViewer.dart';
import 'editOrderAccountDetails.dart';
import 'package:generp/Models/ordersModels/ordersDetailsDispatchOrderViewResponse.dart';
class Ordersdetailsbymodes extends StatefulWidget {
final pageTitleName;
......@@ -27,6 +31,7 @@ class Ordersdetailsbymodes extends StatefulWidget {
}
class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
Dropdowntheme ddtheme = Dropdowntheme();
@override
void initState() {
// TODO: implement initState
......@@ -36,6 +41,8 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
context,
listen: false,
);
var disproved = Provider.of<Dispatchorderprovider>(context,listen: false);
disproved.ordersDetailsDispatchOrderViewFunction(context,widget.orderId);
provider.ordersDetailsByModeAPIFunction(
context,
widget.orderId,
......@@ -46,8 +53,8 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
@override
Widget build(BuildContext context) {
return Consumer<Pagesdashboardprovider>(
builder: (context, provider, child) {
return Consumer2<Pagesdashboardprovider,Dispatchorderprovider>(
builder: (context, provider,disProvider, child) {
var orderDetails = provider.orderDetails;
return WillPopScope(
......@@ -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> {
context,
MaterialPageRoute(
builder:
(context) =>
Editorderaccountdetails(
(
context,
) => Editorderaccountdetails(
mode: widget.mode,
pageTitleName: "Edit Order (${widget.mode})",
pageTitleName:
"Edit Order (${widget.mode})",
orderID: provider.orderDetails.id,
),
),
......@@ -693,7 +729,8 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
),
],
InkWell(
onTap: () {
onTap:provider.submitClicked?null: () {
provider.submitClicked = true;
provider.approvalRejectionAPIFunction(
context,
details.status,
......@@ -735,8 +772,287 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
color: AppColors.app_blue, //1487C9
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: 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",
textAlign: TextAlign.center,
style: TextStyle(color: Colors.white),
......@@ -857,7 +1173,8 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
),
],
InkWell(
onTap: () {
onTap:provider.submitClicked ?null: () {
provider.submitClicked = true;
provider.delectionAPIFunction(
context,
provider.orderDetails.id,
......@@ -877,7 +1194,9 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
borderRadius: BorderRadius.circular(14.0),
),
child: Center(
child: Text(
child:provider.submitClicked ?CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(Colors.white),
): Text(
"Submit",
textAlign: TextAlign.center,
style: TextStyle(color: Colors.white),
......
......@@ -90,6 +90,7 @@ import '../Models/ordersModels/addOrderTpcAgentListResponse.dart';
import '../Models/ordersModels/commonResponse.dart';
import '../Models/ordersModels/ordersAccessiblePagesResponse.dart';
import '../Models/ordersModels/ordersDetailsByModeResponse.dart';
import '../Models/ordersModels/ordersDetailsDispatchOrderViewResponse.dart';
import '../Models/ordersModels/ordersDetailsEditOrderViewResponse.dart';
import '../Models/ordersModels/ordersListByModeFilterResponse.dart';
import '../Models/ordersModels/ordersListByModeResponse.dart';
......@@ -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(
empId,
session,
......
......@@ -146,7 +146,7 @@ packages:
source: hosted
version: "1.1.2"
collection:
dependency: transitive
dependency: "direct main"
description:
name: collection
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
......
......@@ -79,6 +79,7 @@ dependencies:
printing: ^5.14.2
interactive_slider: ^0.5.1
tuple: ^2.0.2
collection: ^1.19.1
dev_dependencies:
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