Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sai Srinivas
GEN_ERP_2025
Commits
12aa06e4
Commit
12aa06e4
authored
Aug 13, 2025
by
Sai Srinivas
Browse files
13-08-2025 By Sai Srinivas
Test Cases
parent
2a5b9635
Changes
20
Expand all
Show whitespace changes
Inline
Side-by-side
lib/Models/ordersModels/ordersDetailsByModeResponse.dart
View file @
12aa06e4
...
...
@@ -127,7 +127,7 @@ class OrderDetails {
String
?
tpcaAgentName
;
OrderDetails
(
{
this
.
id
,
{
this
.
id
,
this
.
orderNumber
,
this
.
orderNumberHash
,
this
.
balanceAmount
,
...
...
lib/Notifiers/crmProvider/addNewLeadsandProspectsProvider.dart
View file @
12aa06e4
...
...
@@ -844,10 +844,10 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier {
nameError
=
"Please Enter Name"
;
isValid
=
false
;
}
//
if(customerMailIdController.text.trim().isEmpty){
//
mailIdError = "Please enter Email I
d
";
//
isValid = false;
//
}
if
(
customerMailIdController
.
text
.
trim
().
is
Not
Empty
&&
!
RegExp
(
r'\S+@\S+\.\S+'
).
hasMatch
(
customerMailIdController
.
text
)
){
mailIdError
=
"Please enter
a proper
Email I
D
"
;
isValid
=
false
;
}
if
(
mobileController
.
text
.
trim
().
isEmpty
){
mobileError
=
"Please enter Mobile Number"
;
isValid
=
false
;
...
...
lib/Notifiers/ordersProvider/addOrderProvider.dart
View file @
12aa06e4
...
...
@@ -566,66 +566,63 @@ String? productsEmptyError ;
notifyListeners
();
}
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
{
double
total
=
0
;
for
(
int
i
=
0
;
i
<
ProductControllers
.
length
;
i
++)
{
final
taxableValue
=
double
.
tryParse
(
TaxableValueControllers
[
i
].
text
)
??
0.0
;
final
cgst
=
double
.
tryParse
(
CGSTControllers
[
i
].
text
)
??
0.0
;
total
+=
(
taxableValue
*
cgst
)
/
100
;
}
cgstReadOnlyController
.
text
=
total
.
toStringAsFixed
(
2
);
return
total
;
}
dynamic
get
sgstAmount
{
double
total
=
0
;
for
(
int
i
=
0
;
i
<
ProductControllers
.
length
;
i
++)
{
final
taxableValue
=
double
.
tryParse
(
TaxableValueControllers
[
i
].
text
)
??
0.0
;
final
sgst
=
double
.
tryParse
(
SGSTControllers
[
i
].
text
)
??
0.0
;
total
+=
(
taxableValue
*
sgst
).
round
()
/
100
;
}
sgstReadOnlyController
.
text
=
total
.
toStringAsFixed
(
2
);
return
total
;
}
dynamic
get
igstAmount
{
double
total
=
0
;
for
(
int
i
=
0
;
i
<
ProductControllers
.
length
;
i
++)
{
final
taxableValue
=
double
.
tryParse
(
TaxableValueControllers
[
i
].
text
)
??
0.0
;
final
igst
=
double
.
tryParse
(
IGSTControllers
[
i
].
text
)
??
0.0
;
total
+=
(
taxableValue
*
igst
).
round
()
/
100
;
}
igstReadOnlyController
.
text
=
total
.
toStringAsFixed
(
2
);
return
total
;
}
dynamic
get
totalAmount
{
double
total
=
basicAmount
+
cgstAmount
+
sgstAmount
+
igstAmount
;
totalReadOnlyAmountController
.
text
=
total
.
round
().
toStringAsFixed
(
2
);
return
total
!;
}
// dynamic get basicAmount {
// double total = 0;
// total += double.tryParse(TaxableValueController.text)?.round() ?? 0.0;
// basicAmountReadOnlyController.text = total.toStringAsFixed(2);
// return total;
// }
//
// dynamic get cgstAmount {
// double total = 0;
//
// final taxableValue =
// double.tryParse(TaxableValueController.text) ?? 0.0;
// final cgst = double.tryParse(CGSTController.text) ?? 0.0;
// total += (taxableValue * cgst) / 100;
//
// cgstReadOnlyController.text = total.toStringAsFixed(2);
// return total;
// }
//
// dynamic get sgstAmount {
// double total = 0;
//
// final taxableValue =
// double.tryParse(TaxableValueController.text) ?? 0.0;
// final sgst = double.tryParse(SGSTController.text) ?? 0.0;
// total += (taxableValue * sgst).round() / 100;
//
// sgstReadOnlyController.text = total.toStringAsFixed(2);
// return total;
// }
//
// dynamic get igstAmount {
// double total = 0;
//
// final taxableValue =
// double.tryParse(TaxableValueController.text) ?? 0.0;
// final igst = double.tryParse(IGSTController.text) ?? 0.0;
// total += (taxableValue * igst).round() / 100;
//
// igstReadOnlyController.text = total.toStringAsFixed(2);
// return total;
// }
//
// dynamic get totalAmount {
// double total = basicAmount + cgstAmount + sgstAmount + igstAmount;
// totalReadOnlyAmountController.text = total.round().toStringAsFixed(2);
// return total!;
// }
void
addProduct
(
Map
<
String
,
dynamic
>
product
)
{
productRows
.
add
(
product
);
updateSummaryCalculations
();
notifyListeners
();
}
void
updateProduct
(
int
index
,
Map
<
String
,
dynamic
>
updatedProduct
)
{
productRows
[
index
]
=
updatedProduct
;
updateSummaryCalculations
();
notifyListeners
();
}
...
...
@@ -649,6 +646,61 @@ String? productsEmptyError ;
notifyListeners
();
}
void
updateSummaryCalculations
()
{
double
basicAmount
=
0.0
;
double
cgstAmount
=
0.0
;
double
sgstAmount
=
0.0
;
double
igstAmount
=
0.0
;
for
(
var
product
in
productRows
)
{
final
price
=
double
.
tryParse
(
product
[
'price'
]?.
toString
()
??
'0'
)
??
0.0
;
final
qty
=
double
.
tryParse
(
product
[
'qty'
]?.
toString
()
??
'0'
)
??
0.0
;
final
cgst
=
double
.
tryParse
(
product
[
'cgst_p'
]?.
toString
()
??
'0'
)
??
0.0
;
final
sgst
=
double
.
tryParse
(
product
[
'sgst_p'
]?.
toString
()
??
'0'
)
??
0.0
;
final
igst
=
double
.
tryParse
(
product
[
'igst_p'
]?.
toString
()
??
'0'
)
??
0.0
;
final
taxableValue
=
price
*
qty
;
basicAmount
+=
taxableValue
;
cgstAmount
+=
(
taxableValue
*
cgst
)
/
100
;
sgstAmount
+=
(
taxableValue
*
sgst
)
/
100
;
igstAmount
+=
(
taxableValue
*
igst
)
/
100
;
}
final
totalAmount
=
basicAmount
+
cgstAmount
+
sgstAmount
+
igstAmount
;
basicAmountReadOnlyController
.
text
=
basicAmount
.
toStringAsFixed
(
2
);
cgstReadOnlyController
.
text
=
cgstAmount
.
toStringAsFixed
(
2
);
sgstReadOnlyController
.
text
=
sgstAmount
.
toStringAsFixed
(
2
);
igstReadOnlyController
.
text
=
igstAmount
.
toStringAsFixed
(
2
);
totalReadOnlyAmountController
.
text
=
totalAmount
.
toStringAsFixed
(
2
);
notifyListeners
();
}
String
getJsonEncodedProducts
()
{
return
jsonEncode
(
productRows
);
}
dynamic
get
basicAmount
{
return
double
.
tryParse
(
basicAmountReadOnlyController
.
text
)
??
0.0
;
}
dynamic
get
cgstAmount
{
return
double
.
tryParse
(
cgstReadOnlyController
.
text
)
??
0.0
;
}
dynamic
get
sgstAmount
{
return
double
.
tryParse
(
sgstReadOnlyController
.
text
)
??
0.0
;
}
dynamic
get
igstAmount
{
return
double
.
tryParse
(
igstReadOnlyController
.
text
)
??
0.0
;
}
dynamic
get
totalAmount
{
return
double
.
tryParse
(
totalReadOnlyAmountController
.
text
)
??
0.0
;
}
void
updateSelectedSingleProduct
(
SaleProducts
?
product
)
{
_selectedSaleProducts
=
product
;
_selectedSingleSaleProductID
=
product
!.
id
;
...
...
@@ -675,99 +727,99 @@ String? productsEmptyError ;
notifyListeners
();
}
String
getJsonEncodedProducts
()
{
return
jsonEncode
(
productRows
);
}
void
addNewRow
()
{
ProductControllers
.
add
(
TextEditingController
());
PriceControllers
.
add
(
TextEditingController
());
QuantityControllers
.
add
(
TextEditingController
(
text:
'1'
));
CGSTControllers
.
add
(
TextEditingController
(
text:
'9'
));
SGSTControllers
.
add
(
TextEditingController
(
text:
'9'
));
IGSTControllers
.
add
(
TextEditingController
(
text:
'0'
));
TaxableValueControllers
.
add
(
TextEditingController
());
TotalPriceControllers
.
add
(
TextEditingController
());
selectedSaleProductID
.
add
(
null
);
notifyListeners
();
}
void
removeRow
(
int
index
)
{
if
(
index
>=
0
&&
index
<
ProductControllers
.
length
)
{
ProductControllers
[
index
].
dispose
();
PriceControllers
[
index
].
dispose
();
QuantityControllers
[
index
].
dispose
();
CGSTControllers
[
index
].
dispose
();
SGSTControllers
[
index
].
dispose
();
IGSTControllers
[
index
].
dispose
();
TaxableValueControllers
[
index
].
dispose
();
TotalPriceControllers
[
index
].
dispose
();
ProductControllers
.
removeAt
(
index
);
PriceControllers
.
removeAt
(
index
);
QuantityControllers
.
removeAt
(
index
);
CGSTControllers
.
removeAt
(
index
);
SGSTControllers
.
removeAt
(
index
);
IGSTControllers
.
removeAt
(
index
);
TaxableValueControllers
.
removeAt
(
index
);
TotalPriceControllers
.
removeAt
(
index
);
selectedSaleProductID
.
removeAt
(
index
);
notifyListeners
();
}
}
void
updateSelectedProduct
(
int
index
,
SaleProducts
?
product
)
{
if
(
index
>=
0
&&
index
<
_saleProducts
.
length
)
{
_selectedSaleProducts
=
product
;
_selectedSaleProductID
[
index
]
=
product
!.
id
;
PriceControllers
[
index
].
text
=
product
!.
price
!;
updateRowCalculations
(
index
);
notifyListeners
();
}
}
void
updateRowCalculations
(
int
index
)
{
if
(
index
>=
0
&&
index
<
PriceControllers
.
length
)
{
final
inclusivePrice
=
double
.
tryParse
(
PriceControllers
[
index
].
text
)
??
0.0
;
final
quantity
=
double
.
tryParse
(
QuantityControllers
[
index
].
text
)
??
1.0
;
final
cgst
=
double
.
tryParse
(
CGSTControllers
[
index
].
text
)
??
0.0
;
final
sgst
=
double
.
tryParse
(
SGSTControllers
[
index
].
text
)
??
0.0
;
final
igst
=
double
.
tryParse
(
IGSTControllers
[
index
].
text
)
??
0.0
;
final
totalTaxRate
=
(
cgst
+
sgst
+
igst
)
/
100
;
// Calculate taxable value per unit
final
taxableValuePerUnit
=
inclusivePrice
/
(
1
+
totalTaxRate
);
// Total taxable value = taxable value per unit * quantity
final
totalTaxableValue
=
taxableValuePerUnit
*
quantity
;
TaxableValueControllers
[
index
].
text
=
totalTaxableValue
.
toStringAsFixed
(
0
,
);
notifyListeners
();
}
}
Map
<
String
,
dynamic
>
getFormData
()
{
final
List
<
Map
<
String
,
dynamic
>>
orders
=
[];
for
(
int
i
=
0
;
i
<
ProductControllers
.
length
;
i
++)
{
orders
.
add
({
'product_id'
:
selectedSaleProductID
[
i
],
'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
{
'orders'
:
orders
,
'basic_amount'
:
basicAmount
.
toStringAsFixed
(
2
),
'cgst_amount'
:
cgstAmount
.
toStringAsFixed
(
2
),
'sgst_amount'
:
sgstAmount
.
toStringAsFixed
(
2
),
'igst_amount'
:
igstAmount
.
toStringAsFixed
(
2
),
'total_amount'
:
totalAmount
.
toStringAsFixed
(
2
),
'note'
:
noteController
.
text
,
};
}
// void addNewRow() {
// ProductControllers.add(TextEditingController());
// PriceControllers.add(TextEditingController());
// QuantityControllers.add(TextEditingController(text: '1'));
// CGSTControllers.add(TextEditingController(text: '9'));
// SGSTControllers.add(TextEditingController(text: '9'));
// IGSTControllers.add(TextEditingController(text: '0'));
// TaxableValueControllers.add(TextEditingController());
// TotalPriceControllers.add(TextEditingController());
//
// selectedSaleProductID.add(null);
// notifyListeners();
// }
//
// void removeRow(int index) {
// if (index >= 0 && index < ProductControllers.length) {
// ProductControllers[index].dispose();
// PriceControllers[index].dispose();
// QuantityControllers[index].dispose();
// CGSTControllers[index].dispose();
// SGSTControllers[index].dispose();
// IGSTControllers[index].dispose();
// TaxableValueControllers[index].dispose();
// TotalPriceControllers[index].dispose();
// ProductControllers.removeAt(index);
// PriceControllers.removeAt(index);
// QuantityControllers.removeAt(index);
// CGSTControllers.removeAt(index);
// SGSTControllers.removeAt(index);
// IGSTControllers.removeAt(index);
// TaxableValueControllers.removeAt(index);
// TotalPriceControllers.removeAt(index);
// selectedSaleProductID.removeAt(index);
// notifyListeners();
// }
// }
//
// void updateSelectedProduct(int index, SaleProducts? product) {
// if (index >= 0 && index < _saleProducts.length) {
// _selectedSaleProducts = product;
// _selectedSaleProductID[index] = product!.id;
// PriceControllers[index].text = product!.price!;
// updateRowCalculations(index);
// notifyListeners();
// }
// }
//
// void updateRowCalculations(int index) {
// if (index >= 0 && index < PriceControllers.length) {
// final inclusivePrice =
// double.tryParse(PriceControllers[index].text) ?? 0.0;
// final quantity = double.tryParse(QuantityControllers[index].text) ?? 1.0;
// final cgst = double.tryParse(CGSTControllers[index].text) ?? 0.0;
// final sgst = double.tryParse(SGSTControllers[index].text) ?? 0.0;
// final igst = double.tryParse(IGSTControllers[index].text) ?? 0.0;
// final totalTaxRate = (cgst + sgst + igst) / 100;
// // Calculate taxable value per unit
// final taxableValuePerUnit = inclusivePrice / (1 + totalTaxRate);
// // Total taxable value = taxable value per unit * quantity
// final totalTaxableValue = taxableValuePerUnit * quantity;
// TaxableValueControllers[index].text = totalTaxableValue.toStringAsFixed(
// 0,
// );
// notifyListeners();
// }
// }
//
// Map<String, dynamic> getFormData() {
// final List<Map<String, dynamic>> orders = [];
// for (int i = 0; i < ProductControllers.length; i++) {
// orders.add({
// 'product_id': selectedSaleProductID[i],
// '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 {
// 'orders': orders,
// 'basic_amount': basicAmount.toStringAsFixed(2),
// 'cgst_amount': cgstAmount.toStringAsFixed(2),
// 'sgst_amount': sgstAmount.toStringAsFixed(2),
// 'igst_amount': igstAmount.toStringAsFixed(2),
// 'total_amount': totalAmount.toStringAsFixed(2),
// 'note': noteController.text,
// };
// }
Future
<
void
>
ordersAddOrderAPIViewFunction
(
context
,
mode
)
async
{
try
{
...
...
@@ -878,14 +930,21 @@ String? productsEmptyError ;
_accountDetails
=
data
.
accountDetails
!;
data
.
accountDetails
!.
accManagerId
!;
billingNameController
.
text
=
data
.
accountDetails
!.
name
!;
_selectedBillingStateID
=
data
.
accountDetails
!.
state
!;
print
(
"data.accountDetails!.state
${data.accountDetails!.state}
"
);
if
(
_selectedBillingStateID
!=
null
){
getDistrictAPI
(
context
,
_selectedBillingStateID
);
}
_selectedBillingDistrictID
=
data
.
accountDetails
!.
district
!;
if
(
_selectedBillingDistrictID
!=
null
){
getSubLocationAPI
(
context
,
_selectedBillingDistrictID
);
}
_selectedBillingStates
=
billingStates
!.
firstWhere
((
e
)
=>
e
.
id
==
data
.
accountDetails
!.
state
!);
_selectedBillingStateID
=
data
.
accountDetails
!.
state
!;
_selectedBillingStateName
=
billingStates
!.
firstWhere
((
e
)
=>
e
.
id
==
data
.
accountDetails
!.
state
!).
name
;
_selectedBillingDistrictID
=
data
.
accountDetails
!.
district
!;
_selectedBillingSubLocID
=
data
.
accountDetails
!.
subLocality
!;
billingPincodeController
.
text
=
data
.
accountDetails
!.
pincode
!;
...
...
@@ -918,6 +977,9 @@ String? productsEmptyError ;
if
(
data
!=
null
)
{
if
(
data
.
error
==
"0"
)
{
_billingDistricts
=
data
.
districts
!;
_selectedBillingDistricts
=
data
.
districts
!.
firstWhere
((
e
)
=>
e
.
id
==
accountDetails
!.
district
!);
_selectedBillingDistrictValue
=
data
.
districts
!.
firstWhere
((
e
)
=>
e
.
id
==
accountDetails
!.
district
!).
district
;
notifyListeners
();
}
...
...
@@ -958,6 +1020,9 @@ String? productsEmptyError ;
if
(
data
!=
null
)
{
if
(
data
.
error
==
"0"
)
{
_billingSubLocations
=
data
.
subLocations
!;
_selectedBillingSubLocations
=
data
.
subLocations
!.
firstWhere
((
e
)
=>
e
.
id
==
accountDetails
!.
subLocality
!);
_selectedBillingSubLocValue
=
data
.
subLocations
!.
firstWhere
((
e
)
=>
e
.
id
==
accountDetails
!.
subLocality
!).
subLocality
;
notifyListeners
();
}
...
...
@@ -1003,6 +1068,31 @@ String? productsEmptyError ;
}
catch
(
e
,
s
)
{}
}
Future
<
List
<
TpcList
>>
fetchTPCAccountsfromAPI
(
context
,
mode
,
text
)
async
{
try
{
final
provider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
final
data
=
await
ApiCalling
.
addOrderTPCAgentListAPI
(
provider
.
empId
,
provider
.
session
,
mode
,
text
,
);
if
(
data
!=
null
)
{
if
(
data
.
error
==
"0"
)
{
_tpcAgent
=
data
.
tpcList
!;
notifyListeners
();
return
_tpcAgent
;
}
else
{
return
[];
}
}
else
{
return
[];
}
}
catch
(
e
,
s
)
{
return
[];
}
}
Future
<
void
>
ordersAddOrderAPISubmitFunction
(
context
,
mode
,
...
...
@@ -1178,7 +1268,7 @@ String? productsEmptyError ;
)
async
{
print
(
search
);
try
{
if
(
search
.
isEmpty
)
{
if
(
search
==
null
)
{
_accountList
=
[];
_isLoading
=
false
;
notifyListeners
();
...
...
@@ -1222,6 +1312,65 @@ String? productsEmptyError ;
}
}
Future
<
List
<
AccountList
>>
fetchAccountsFromApi
(
context
,
mode
,
accountId
,
search
,
)
async
{
print
(
search
);
try
{
if
(
search
==
null
)
{
_accountList
=
[];
_isLoading
=
false
;
notifyListeners
();
return
_accountList
;
}
_isLoading
=
true
;
notifyListeners
();
final
provider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
final
data
=
await
ApiCalling
.
AddOrderPaymentSelectAccountAPI
(
provider
.
empId
,
provider
.
session
,
mode
,
search
,
);
if
(
data
!=
null
)
{
if
(
data
.
error
==
"0"
)
{
_accountList
=
data
.
accountList
!;
if
(
_selectedAccountList
!=
null
&&
!
_accountList
.
contains
(
_selectedAccountList
))
{
_selectedAccountList
=
null
;
_selectedAccountID
=
null
;
_selectedAccountName
=
null
;
}
_isLoading
=
false
;
notifyListeners
();
return
_accountList
;
}
else
{
selectAccountError
=
data
?.
message
??
"Failed to load accounts"
;
_isLoading
=
false
;
notifyListeners
();
return
[];
}
}
else
{
selectAccountError
=
"No data received from server"
;
_isLoading
=
false
;
notifyListeners
();
return
[];
}
}
catch
(
e
,
s
)
{
selectAccountError
=
"An error occurred while fetching accounts"
;
_isLoading
=
false
;
notifyListeners
();
return
[];
}
}
imgFromCamera
(
context
)
async
{
// Capture a photo
try
{
...
...
lib/Notifiers/ordersProvider/editOrderProvider.dart
View file @
12aa06e4
...
...
@@ -202,6 +202,24 @@ class Editorderprovider extends ChangeNotifier {
_erectionScope
=
[
"Included"
,
"Excluded"
];
_unloadingScope
=
[
"Included"
,
"Excluded"
];
_freightScope
=
[
"Included"
,
"Excluded"
];
if
(
data
.
orderDetails
!.
dispatchStateId
!=
null
){
getDispatchDistrictAPI
(
context
,
data
.
orderDetails
!.
dispatchStateId
!);
}
if
(
data
.
orderDetails
!.
dispatchDistrictId
!=
null
){
getDispatchSubLocationAPI
(
context
,
data
.
orderDetails
!.
dispatchDistrictId
!);
}
_selectedDispatchStates
=
data
.
states
!.
firstWhere
((
e
)
=>
e
.
id
==
data
.
orderDetails
!.
dispatchStateId
!);
_selectedDispatchStateID
=
data
.
orderDetails
!.
dispatchStateId
!;
_selectedDispatchStateName
=
data
.
states
!.
firstWhere
((
e
)
=>
e
.
id
==
data
.
orderDetails
!.
dispatchStateId
!).
name
;
_selectedDispatchDistrictID
=
data
.
orderDetails
!.
dispatchDistrictId
!;
_selectedDispatchSubLocID
=
data
.
orderDetails
!.
dispatchSubLocationId
!;
dispatchAddressController
.
text
=
data
.
orderDetails
!.
dispatchAddress
!;
dispatchPincodeController
.
text
=
data
.
orderDetails
!.
dispatchPincode
!;
noteController
.
text
=
data
.
orderDetails
!.
note
!;
_selectedUnloadingScope
=
data
.
orderDetails
!.
unloadingScope
!;
_selectedErectionScope
=
data
.
orderDetails
!.
erectionScope
!;
_selectedFreightScope
=
data
.
orderDetails
!.
freightScope
!;
notifyListeners
();
}
else
{}
...
...
@@ -222,7 +240,8 @@ class Editorderprovider extends ChangeNotifier {
if
(
data
!=
null
)
{
if
(
data
.
error
==
"0"
)
{
_dispatchDistricts
=
data
.
districts
!;
_selectedDispatchDistricts
=
data
.
districts
!.
firstWhere
((
e
)
=>
e
.
id
==
orderDetails
!.
dispatchDistrictId
!);
_selectedDispatchDistrictValue
=
data
.
districts
!.
firstWhere
((
e
)
=>
e
.
id
==
orderDetails
!.
dispatchDistrictId
!).
district
;
notifyListeners
();
}
}
...
...
@@ -242,6 +261,8 @@ class Editorderprovider extends ChangeNotifier {
if
(
data
!=
null
)
{
if
(
data
.
error
==
"0"
)
{
_dispatchSubLocations
=
data
.
subLocations
!;
_selectedDispatchSubLocations
=
data
.
subLocations
!.
firstWhere
((
e
)
=>
e
.
id
==
orderDetails
!.
dispatchSubLocationId
!);
_selectedDispatchSubLocValue
=
data
.
subLocations
!.
firstWhere
((
e
)
=>
e
.
id
==
orderDetails
!.
dispatchSubLocationId
!).
subLocality
;
notifyListeners
();
}
...
...
lib/Notifiers/ordersProvider/pagesDashboardProvider.dart
View file @
12aa06e4
...
...
@@ -362,10 +362,73 @@ class Pagesdashboardprovider extends ChangeNotifier {
orderId
,
);
if
(
data
!=
null
)
{
_isLoading
=
true
;
//
_isLoading = true;
notifyListeners
();
if
(
data
.
error
==
"0"
)
{
_orderDetails
=
data
.
orderDetails
!;
_orderDetails
=
data
.
orderDetails
??
OrderDetails
(
id:
""
,
orderNumber:
""
,
orderNumberHash:
""
,
balanceAmount:
""
,
accId:
""
,
refType:
""
,
refId:
""
,
salesPersonEmpId:
""
,
enteredEmpId:
""
,
dispatchStateId:
""
,
dispatchDistrictId:
""
,
dispatchSubLocationId:
""
,
dispatchPincode:
""
,
dispatchAddress:
""
,
basicAmount:
""
,
cgstAmount:
""
,
sgstAmount:
""
,
igstAmount:
""
,
paidAmount:
""
,
totalAmount:
""
,
status:
""
,
orderReceivedDate:
""
,
scheduledDispatchDate:
""
,
otp:
""
,
note:
""
,
poViewFileName:
""
,
poDirFilePath:
""
,
unloadingScope:
""
,
freightScope:
""
,
erectionScope:
""
,
saleOrderNumber:
""
,
invoiceNumber:
""
,
vehicleNumber:
""
,
driverName:
""
,
driverMobileNumber:
""
,
tpcApplicable:
""
,
requestedTpcAmount:
""
,
level1TpcApprovedAmount:
""
,
level2TpcApprovedAmount:
""
,
tpcPaymentMode:
""
,
tpcPaymentReferenceNo:
""
,
tpcPaymentAttachmentDirFilePath:
""
,
tpcPaymentAttachementViewFileName:
""
,
tpcStatus:
""
,
tpcAgentId:
""
,
isExist:
""
,
createdDatetime:
""
,
updatedDatetime:
""
,
accountName:
""
,
gstNumber:
""
,
billingAddress:
""
,
billingDistrict:
""
,
billingState:
""
,
billingSubLocality:
""
,
billingPincode:
""
,
stateName:
""
,
districtName:
""
,
subLocationName:
""
,
adjustedAmount:
""
,
enteredEmpName:
""
,
salesPersonEmpName:
""
,
tpcaAgentName:
""
);
_productsHistory
=
data
.
products
!;
_feedbackHistory
=
data
.
feedbackHistory
!;
_paymentHistory
=
data
.
paymentHistory
!;
...
...
lib/Notifiers/ordersProvider/tpcAgentsProvider.dart
View file @
12aa06e4
...
...
@@ -4,6 +4,7 @@ import 'package:camera/camera.dart';
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/foundation.dart'
;
import
'package:generp/Models/ordersModels/TPCListResponse.dart'
;
import
'package:get/get.dart'
;
import
'package:image_picker/image_picker.dart'
;
import
'package:provider/provider.dart'
;
...
...
@@ -303,6 +304,10 @@ class Tpcagentsprovider extends ChangeNotifier{
tpcMobileNumberError
=
"PLease Enter Your Mobile Number"
;
isValid
=
false
;
}
if
(
tpcMobileNumberController
.
text
.
trim
().
isNotEmpty
&&
tpcMobileNumberController
.
text
.
length
<
10
){
tpcMobileNumberError
=
"Please Enter a Valid Mobile Number"
;
isValid
=
false
;
}
if
(
_image_picked
==
0
){
imageError
=
"Please select ID Proof"
;
...
...
lib/screens/crm/addLeadsProspectsScreen.dart
View file @
12aa06e4
...
...
@@ -899,9 +899,11 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
),
],
if
(
provider
.
productsEmptyError
!.
trim
().
isNotEmpty
)...[
if
(
provider
.
productRows
.
isEmpty
)...[
if
(
provider
.
productsEmptyError
!=
null
)...[
errorWidget
(
context
,
provider
.
productsEmptyError
)
]
]
],
),
),
...
...
lib/screens/order/addOrder.dart
View file @
12aa06e4
This diff is collapsed.
Click to expand it.
lib/screens/order/addTpcAgent.dart
View file @
12aa06e4
...
...
@@ -123,7 +123,9 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
false
,
FilteringTextInputFormatter
.
digitsOnly
,
focusNodes
[
1
],
focusNodes
[
2
],
TextInputAction
.
next
,
10
focusNodes
[
2
],
TextInputAction
.
next
,
10
),
if
(
provider
.
tpcMobileNumberError
!=
null
)
...[
errorWidget
(
context
,
provider
.
tpcMobileNumberError
),
...
...
lib/screens/order/editOrderAccountDetails.dart
View file @
12aa06e4
...
...
@@ -63,11 +63,12 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
child:
Scaffold
(
resizeToAvoidBottomInset:
true
,
backgroundColor:
AppColors
.
white
,
appBar:
appbar2
(
appBar:
appbar2
New
(
context
,
"
${widget.pageTitleName}
"
,
provider
.
resetForm
,
SizedBox
(
width:
0
),
0xFFFFFFFF
),
body:
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
10
),
...
...
@@ -538,7 +539,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
),
),
onWillPop:
()
async
{
provider
.
resetForm
();
return
_onBackPressed
(
context
);
},
);
...
...
lib/screens/order/orderModuleDashboard.dart
View file @
12aa06e4
...
...
@@ -146,7 +146,7 @@ class _OrdermoduledashboardState extends State<Ordermoduledashboard> {
image:
AssetImage
(
"assets/svg/order/main_dashboard.png"
,
),
fit:
BoxFit
.
contain
,
fit:
BoxFit
.
fitWidth
,
),
gradient:
LinearGradient
(
colors:
[
...
...
@@ -158,117 +158,117 @@ class _OrdermoduledashboardState extends State<Ordermoduledashboard> {
),
),
),
if
(
provider
.
ordersgain
.
length
>
0
)
...[
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
5
,
),
margin:
EdgeInsets
.
only
(
bottom:
10
),
decoration:
BoxDecoration
(
color:
Colors
.
white
,
borderRadius:
BorderRadius
.
vertical
(
bottom:
Radius
.
circular
(
16
),
),
),
height:
MediaQuery
.
of
(
context
).
size
.
height
*
0.25
,
child:
GridView
.
builder
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
0
,
vertical:
5
,
),
itemCount:
provider
.
ordersgain
.
length
,
shrinkWrap:
true
,
scrollDirection:
Axis
.
horizontal
,
physics:
AlwaysScrollableScrollPhysics
(),
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount
(
crossAxisCount:
2
,
crossAxisSpacing:
10
,
mainAxisSpacing:
10
,
childAspectRatio:
55
/
100
,
),
itemBuilder:
(
context
,
jndex
)
{
final
icons
=
[
"comm_ic_1"
,
"comm_ic_2"
];
final
leadTitles
=
[
'Order Gain'
,
'Dispatched'
,
'Pending Tasks'
,
'Quotation Generated'
,
];
final
assetNames
=
[
"assets/svg/crm/open_leads_ic.svg"
,
"assets/svg/crm/today_visits_ic.svg"
,
"assets/svg/crm/pending_tasks_ic.svg"
,
"assets/svg/crm/quotes_generated_ic.svg"
,
];
final
colors
=
[
0xFFE7FFE5
,
0xFFFFFCD5
,
0xFFEEF1FF
,
0xFFF3EDFF
,
];
final
textcolors
=
[
0xFF0D9C00
,
0xFF605C00
,
0xFF6563FF
,
0xFF493272
,
];
return
InkResponse
(
child:
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
13
,
),
decoration:
BoxDecoration
(
color:
Color
(
colors
[
jndex
]),
borderRadius:
BorderRadius
.
circular
(
20
),
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
Text
(
provider
.
ordersgain
[
jndex
].
count
.
toString
(),
style:
TextStyle
(
fontSize:
20
,
fontFamily:
"JakartaMedium"
,
color:
Color
(
textcolors
[
jndex
]),
),
),
Row
(
children:
[
Expanded
(
flex:
3
,
child:
Text
(
leadTitles
[
jndex
],
style:
TextStyle
(
fontSize:
14
,
fontFamily:
"JakartaRegular"
,
color:
AppColors
.
semi_black
,
),
),
),
Expanded
(
flex:
1
,
child:
SvgPicture
.
asset
(
assetNames
[
jndex
],
),
),
],
),
],
),
),
);
},
),
),
],
//
if (provider.ordersgain.length > 0) ...[
//
Container(
//
padding: EdgeInsets.symmetric(
//
horizontal: 10,
//
vertical: 5,
//
),
//
margin: EdgeInsets.only(bottom: 10),
//
decoration: BoxDecoration(
//
color: Colors.white,
//
borderRadius: BorderRadius.vertical(
//
bottom: Radius.circular(16),
//
),
//
),
//
height: MediaQuery.of(context).size.height * 0.25,
//
child: GridView.builder(
//
padding: EdgeInsets.symmetric(
//
horizontal: 0,
//
vertical: 5,
//
),
//
itemCount: provider.ordersgain.length,
//
shrinkWrap: true,
//
scrollDirection: Axis.horizontal,
//
physics: AlwaysScrollableScrollPhysics(),
//
gridDelegate:
//
SliverGridDelegateWithFixedCrossAxisCount(
//
crossAxisCount: 2,
//
crossAxisSpacing: 10,
//
mainAxisSpacing: 10,
//
childAspectRatio: 55 / 100,
//
),
//
itemBuilder: (context, jndex) {
//
final icons = ["comm_ic_1", "comm_ic_2"];
//
final leadTitles = [
//
'Order Gain',
//
'Dispatched',
//
'Pending Tasks',
//
'Quotation Generated',
//
];
//
final assetNames = [
//
"assets/svg/crm/open_leads_ic.svg",
//
"assets/svg/crm/today_visits_ic.svg",
//
"assets/svg/crm/pending_tasks_ic.svg",
//
"assets/svg/crm/quotes_generated_ic.svg",
//
];
//
//
final colors = [
//
0xFFE7FFE5,
//
0xFFFFFCD5,
//
0xFFEEF1FF,
//
0xFFF3EDFF,
//
];
//
final textcolors = [
//
0xFF0D9C00,
//
0xFF605C00,
//
0xFF6563FF,
//
0xFF493272,
//
];
//
//
return InkResponse(
//
child: Container(
//
padding: EdgeInsets.symmetric(
//
horizontal: 13,
//
),
//
decoration: BoxDecoration(
//
color: Color(colors[jndex]),
//
borderRadius: BorderRadius.circular(20),
//
),
//
child: Column(
//
crossAxisAlignment:
//
CrossAxisAlignment.start,
//
mainAxisAlignment:
//
MainAxisAlignment.center,
//
children: [
//
Text(
//
provider.ordersgain[jndex].count
//
.toString(),
//
style: TextStyle(
//
fontSize: 20,
//
fontFamily: "JakartaMedium",
//
color: Color(textcolors[jndex]),
//
),
//
),
//
Row(
//
children: [
//
Expanded(
//
flex: 3,
//
child: Text(
//
leadTitles[jndex],
//
style: TextStyle(
//
fontSize: 14,
//
fontFamily: "JakartaRegular",
//
color: AppColors.semi_black,
//
),
//
),
//
),
//
Expanded(
//
flex: 1,
//
child: SvgPicture.asset(
//
assetNames[jndex],
//
),
//
),
//
],
//
),
//
],
//
),
//
),
//
);
//
},
//
),
//
),
//
],
],
),
),
...
...
lib/screens/order/ordersDetailsByModes.dart
View file @
12aa06e4
...
...
@@ -7,6 +7,7 @@ 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/GlobalConstants.dart'
;
import
'package:generp/Utils/dropdownTheme.dart'
;
import
'package:generp/screens/screensExports.dart'
;
import
'package:provider/provider.dart'
;
...
...
@@ -344,14 +345,14 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
"Account Name"
,
"Sales Person Name"
,
"Order Received Date"
,
"OTP"
,
//
"OTP",
];
final
subHeadings2
=
[
provider
.
orderDetails
.
orderNumber
??
"-"
,
provider
.
orderDetails
.
accountName
??
"-"
,
provider
.
orderDetails
.
salesPersonEmpName
??
"-"
,
provider
.
orderDetails
.
orderReceivedDate
??
"-"
,
provider
.
orderDetails
.
otp
??
"-"
,
//
provider.orderDetails.otp ?? "-",
];
final
headings3
=
[
...
...
@@ -503,17 +504,11 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
],
];
return
WillPopScope
(
child:
SafeArea
(
top:
false
,
bottom:
Platform
.
isIOS
?
false
:
true
,
child:
Scaffold
(
return
Scaffold
(
resizeToAvoidBottomInset:
true
,
appBar:
appbar2New
(
context
,
widget
.
mode
==
""
?
"Order Details"
:
"Order Details (
${widget.mode}
)"
,
"Order Details"
,
provider
.
resetAll
,
SizedBox
.
shrink
(),
0xFFFFFFFF
,
...
...
@@ -601,7 +596,7 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
Text
(
orderDetails
.
balanceAmount
==
""
?
"-"
:
"
₹
${orderDetails.balanceAmount}
"
,
:
"
${orderDetails.balanceAmount}
"
,
style:
TextStyle
(
fontFamily:
"JakartaRegular"
,
fontSize:
14
,
...
...
@@ -654,16 +649,14 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
mode:
widget
.
mode
,
pageTitleName:
"Edit Order"
,
orderID:
provider
.
orderDetails
.
id
,
widget
.
orderId
,
),
settings:
RouteSettings
(
name:
'Editorderaccountdetails'
,
),
),
);
if
(
r
es
==
true
)
{
if
(
r
outeSettingName
==
'Editorderaccountdetails'
)
{
provider
.
ordersDetailsByModeAPIFunction
(
context
,
widget
.
orderId
,
...
...
@@ -1948,7 +1941,7 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
SizedBox
(
width:
10
),
],
if
([
"admin"
].
contains
(
widget
.
mode
)
)
...[
if
(
widget
.
mode
==
"admin"
)
...[
SvgPicture
.
asset
(
"assets/svg/crm/vertical_line_ic.svg"
,
),
...
...
@@ -2035,12 +2028,6 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
),
),
),
),
),
onWillPop:
()
{
return
onBackPressed
(
context
);
},
);
},
);
...
...
lib/screens/order/ordersListByModes.dart
View file @
12aa06e4
...
...
@@ -3,6 +3,7 @@ import 'dart:io';
import
'package:dropdown_button2/dropdown_button2.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_svg/svg.dart'
;
import
'package:generp/Utils/GlobalConstants.dart'
;
import
'package:generp/screens/order/ordersDetailsByModes.dart'
;
import
'package:provider/provider.dart'
;
...
...
@@ -228,7 +229,7 @@ class _OrderslistbyModesState extends State<OrderslistbyModes> {
itemCount:
ordersList
.
length
,
shrinkWrap:
true
,
physics:
NeverScrollableScrollPhysics
(),
itemBuilder:
(
context
,
index
)
{
itemBuilder:
(
context
,
ol
)
{
if
(
ordersList
.
isEmpty
)
{
return
SizedBox
(
child:
Center
(
child:
Text
(
"No Data Available"
)),
...
...
@@ -243,12 +244,13 @@ class _OrderslistbyModesState extends State<OrderslistbyModes> {
builder:
(
context
)
=>
Ordersdetailsbymodes
(
pageTitleName:
widget
.
pageTitleName
,
orderId:
ordersList
[
index
].
orderId
,
orderId:
ordersList
[
ol
].
orderId
,
mode:
widget
.
mode
,
),
settings:
RouteSettings
(
name:
"Ordersdetailsbymodes"
)
),
);
if
(
r
es
==
true
)
{
if
(
r
outeSettingName
==
"Ordersdetailsbymodes"
)
{
provider
.
ordersListByModeFilterAPIFunction
(
context
,
widget
.
mode
,
...
...
@@ -303,21 +305,21 @@ class _OrderslistbyModesState extends State<OrderslistbyModes> {
padding:
EdgeInsets
.
all
(
8.0
),
decoration:
BoxDecoration
(
color:
getDecorationColor
(
ordersList
[
index
].
status
,
ordersList
[
ol
].
status
,
),
shape:
BoxShape
.
circle
,
),
child:
Center
(
child:
Text
(
getText
(
ordersList
[
index
].
status
,
ordersList
[
ol
].
status
,
),
style:
TextStyle
(
color:
getTextColor
(
ordersList
[
index
].
status
,
ordersList
[
ol
].
status
,
),
fontSize:
getSize
(
ordersList
[
index
].
status
,
ordersList
[
ol
].
status
,
),
fontFamily:
"JakartaBold"
,
),
...
...
@@ -334,7 +336,7 @@ class _OrderslistbyModesState extends State<OrderslistbyModes> {
CrossAxisAlignment
.
start
,
children:
[
Text
(
ordersList
[
index
]
ordersList
[
ol
]
.
accountName
!,
maxLines:
1
,
overflow:
...
...
@@ -347,7 +349,7 @@ class _OrderslistbyModesState extends State<OrderslistbyModes> {
),
),
Text
(
ordersList
[
index
]
ordersList
[
ol
]
.
orderNumber
!,
style:
TextStyle
(
fontSize:
14
,
...
...
@@ -370,7 +372,7 @@ class _OrderslistbyModesState extends State<OrderslistbyModes> {
child:
Container
(
child:
Text
(
"₹"
"
${ordersList[
index
].balanceAmount}
"
,
"
${ordersList[
ol
].balanceAmount}
"
,
textAlign:
TextAlign
.
right
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
...
...
lib/screens/order/tpcAgentDetailsByMode.dart
View file @
12aa06e4
...
...
@@ -46,6 +46,7 @@ class _TpcagentdetailsbymodeState extends State<Tpcagentdetailsbymode> {
WidgetsBinding
.
instance
.
addPostFrameCallback
((
timeStamp
)
{
var
provider
=
Provider
.
of
<
Tpcagentsprovider
>(
context
,
listen:
false
);
provider
.
TPCAgentsDetailsAPIFunction
(
context
,
widget
.
tpcAgentId
);
provider
.
showMoreDetails
=
false
;
});
}
...
...
@@ -128,11 +129,7 @@ class _TpcagentdetailsbymodeState extends State<Tpcagentdetailsbymode> {
"subHeadings"
:
subHeadings2
,
},
];
return
WillPopScope
(
child:
SafeArea
(
top:
false
,
bottom:
Platform
.
isIOS
?
false
:
true
,
child:
Scaffold
(
return
Scaffold
(
resizeToAvoidBottomInset:
true
,
appBar:
appbar2New
(
context
,
...
...
@@ -298,9 +295,7 @@ class _TpcagentdetailsbymodeState extends State<Tpcagentdetailsbymode> {
)
{
if
(
headings
[
j
]
==
"ID Proof"
&&
tpcAgentDetails
.
idProofDirFilePath
!
.
trim
()
.
isEmpty
)
{
.
idProofDirFilePath
==
""
)
{
return
SizedBox
.
shrink
();
}
return
Container
(
...
...
@@ -500,6 +495,7 @@ class _TpcagentdetailsbymodeState extends State<Tpcagentdetailsbymode> {
),
margin:
EdgeInsets
.
symmetric
(
horizontal:
5
,
vertical:
5
),
child:
Column
(
...
...
@@ -728,12 +724,6 @@ class _TpcagentdetailsbymodeState extends State<Tpcagentdetailsbymode> {
],
),
),
),
),
onWillPop:
()
{
return
onBackPressed
(
context
);
},
);
},
);
...
...
@@ -825,6 +815,7 @@ class _TpcagentdetailsbymodeState extends State<Tpcagentdetailsbymode> {
),
Divider
(
thickness:
0.5
,
color:
Color
(
0xFFD7D7D7
)),
...
List
.
generate
(
provider
.
subHeadings
.
length
,
(
j
)
{
return
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
7
),
child:
Row
(
...
...
lib/screens/order/tpcAgentIssueList.dart
View file @
12aa06e4
...
...
@@ -69,7 +69,7 @@ class _TpcagentissuelistState extends State<Tpcagentissuelist> {
?
Platform
.
isAndroid
?
WillPopScope
(
onWillPop:
()
{
Provider
.
of
<
Tpcagentsprovider
>(
context
).
resetAll
();
Provider
.
of
<
Tpcagentsprovider
>(
context
,
listen:
false
).
resetAll
();
return
onBackPressed
(
context
);
},
child:
SafeArea
(
...
...
@@ -87,15 +87,7 @@ class _TpcagentissuelistState extends State<Tpcagentissuelist> {
return
Consumer
<
Tpcagentsprovider
>(
builder:
(
context
,
provider
,
child
)
{
final
tpcAgentsIssueList
=
provider
.
tpcAgentsIssueList
;
return
WillPopScope
(
onWillPop:
()
{
provider
.
resetAll
();
return
onBackPressed
(
context
);
},
child:
SafeArea
(
top:
false
,
bottom:
Platform
.
isIOS
?
false
:
true
,
child:
Scaffold
(
return
Scaffold
(
resizeToAvoidBottomInset:
true
,
appBar:
appbar2New
(
context
,
...
...
@@ -244,8 +236,6 @@ class _TpcagentissuelistState extends State<Tpcagentissuelist> {
],
),
)
:
Emptywidget
(
context
),
),
),
);
},
);
...
...
lib/screens/order/tpcAgentIssueListDetails.dart
View file @
12aa06e4
...
...
@@ -351,11 +351,7 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
],
];
return
WillPopScope
(
child:
SafeArea
(
top:
false
,
bottom:
Platform
.
isIOS
?
false
:
true
,
child:
Scaffold
(
return
Scaffold
(
resizeToAvoidBottomInset:
true
,
appBar:
appbar2New
(
context
,
widget
.
pageTitleName
,
provider
.
resetAll
,
SizedBox
.
shrink
(),
...
...
@@ -672,7 +668,7 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
SizedBox
(
width:
double
.
infinity
,
height:
30
0
,
height:
26
0
,
child:
ListView
.
builder
(
physics:
AlwaysScrollableScrollPhysics
(),
shrinkWrap:
true
,
...
...
@@ -684,7 +680,7 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
itemCount:
productsHistory
.
length
,
itemBuilder:
(
context
,
lp
)
{
return
Container
(
height:
30
0
,
height:
26
0
,
width:
MediaQuery
.
of
(
context
).
size
.
width
*
0.9
,
decoration:
BoxDecoration
(
...
...
@@ -747,11 +743,11 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
),
),
Expanded
(
flex:
2
,
flex:
3
,
child:
Text
(
textAlign:
TextAlign
.
right
,
"₹
${productsHistory[lp].
unit
Price ?? "-"}
"
,
"₹
${productsHistory[lp].
total
Price ?? "-"}
"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
...
...
@@ -772,7 +768,7 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
color:
AppColors
.
grey_semi
,
),
),
SizedBox
(
height:
5
),
// DottedLine(
// dashGapLength: 4,
// dashGapColor: Colors.white,
...
...
@@ -941,13 +937,13 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
],
),
),
...
List
.
generate
(
2
,
(
j
)
{
...
List
.
generate
(
1
,
(
j
)
{
final
heads
=
[
"Unit Price"
,
//
"Unit Price",
"Total Price"
];
final
subHeads
=
[
"₹
${productsHistory[lp].unitPrice ?? "-"}
"
,
//
"₹ ${productsHistory[lp].unitPrice ?? "-"}",
"₹
${productsHistory[lp].totalPrice ?? "-"}
"
,
];
return
Container
(
...
...
@@ -1107,6 +1103,7 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
margin:
EdgeInsets
.
symmetric
(
horizontal:
5
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Row
(
mainAxisAlignment:
...
...
@@ -1144,6 +1141,8 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
feedbackHistory
[
lp
]
.
employeNaem
??
"-"
,
maxLines:
2
,
overflow:
TextOverflow
.
ellipsis
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
...
...
@@ -1170,7 +1169,7 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
),
),
Expanded
(
flex:
2
,
flex:
4
,
child:
Container
(
decoration:
BoxDecoration
(
borderRadius:
...
...
@@ -1694,12 +1693,6 @@ class _TpcagentissuelistdetailsState extends State<Tpcagentissuelistdetails> {
),
),
),
),
onWillPop:
()
{
return
onBackPressed
(
context
);
},
);
},
);
...
...
lib/screens/order/tpcAgentListByMode.dart
View file @
12aa06e4
...
...
@@ -71,7 +71,7 @@ class _TpcagentlistbymodeState extends State<Tpcagentlistbymode> {
?
Platform
.
isAndroid
?
WillPopScope
(
onWillPop:
()
{
Provider
.
of
<
Tpcagentsprovider
>(
context
).
resetAll
();
Provider
.
of
<
Tpcagentsprovider
>(
context
,
listen:
false
).
resetAll
();
return
onBackPressed
(
context
);
},
child:
SafeArea
(
...
...
@@ -89,15 +89,7 @@ class _TpcagentlistbymodeState extends State<Tpcagentlistbymode> {
return
Consumer
<
Tpcagentsprovider
>(
builder:
(
context
,
provider
,
child
)
{
final
tpcAgentsLists
=
provider
.
tpcAgentsList
;
return
WillPopScope
(
onWillPop:
()
{
provider
.
resetAll
();
return
onBackPressed
(
context
);
},
child:
SafeArea
(
top:
false
,
bottom:
Platform
.
isIOS
?
false
:
true
,
child:
Scaffold
(
return
Scaffold
(
resizeToAvoidBottomInset:
true
,
appBar:
appbar2New
(
context
,
...
...
@@ -250,8 +242,6 @@ class _TpcagentlistbymodeState extends State<Tpcagentlistbymode> {
],
),
)
:
Emptywidget
(
context
),
),
),
);
},
);
...
...
lib/services/api_calling.dart
View file @
12aa06e4
...
...
@@ -2463,7 +2463,7 @@ class ApiCalling {
'billing_state'
:
billing_state
.
toString
(),
'billing_district'
:
billing_district
.
toString
(),
'billing_sub_locality'
:
billing_sub_locality
.
toString
(),
'order_products'
:
jsonEncode
(
order_products
).
toString
(),
'order_products'
:
(
order_products
).
toString
(),
'lead_id'
:
lead_id
.
toString
(),
'feedback'
:
feedback
.
toString
(),
'in_time'
:
in_time
.
toString
(),
...
...
pubspec.lock
View file @
12aa06e4
...
...
@@ -289,6 +289,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.3.9"
dropdown_search:
dependency: "direct main"
description:
name: dropdown_search
sha256: c29b3e5147a82a06a4a08b3b574c51cb48cc17ad89893d53ee72a6f86643622e
url: "https://pub.dev"
source: hosted
version: "6.0.2"
equatable:
dependency: transitive
description:
...
...
pubspec.yaml
View file @
12aa06e4
...
...
@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version
:
1.0.97+10
5
version
:
1.0.97+10
6
environment
:
sdk
:
^3.7.2
...
...
@@ -85,6 +85,7 @@ dependencies:
flutter_staggered_grid_view
:
^0.7.0
dotted_line
:
^3.2.3
flutter_slidable
:
^4.0.0
dropdown_search
:
^6.0.2
dev_dependencies
:
flutter_test
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment