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
64c42cd9
Commit
64c42cd9
authored
May 17, 2025
by
Sai Srinivas
Browse files
17-05-2025 By Sai Srinivas
Finance Module payment, receipt list and details
parent
94df616d
Changes
22
Show whitespace changes
Inline
Side-by-side
lib/Models/financeModels/addDirectPaymentResponse.dart
0 → 100644
View file @
64c42cd9
class
addDirectPaymentResponse
{
List
<
DirectAccounts
>?
accounts
;
List
<
DirectPaymentAccounts
>?
paymentAccounts
;
List
<
DirectPaymentModes
>?
paymentModes
;
String
?
error
;
String
?
message
;
addDirectPaymentResponse
(
{
this
.
accounts
,
this
.
paymentAccounts
,
this
.
paymentModes
,
this
.
error
,
this
.
message
});
addDirectPaymentResponse
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
if
(
json
[
'accounts'
]
!=
null
)
{
accounts
=
<
DirectAccounts
>[];
json
[
'accounts'
].
forEach
((
v
)
{
accounts
!.
add
(
new
DirectAccounts
.
fromJson
(
v
));
});
}
if
(
json
[
'payment_accounts'
]
!=
null
)
{
paymentAccounts
=
<
DirectPaymentAccounts
>[];
json
[
'payment_accounts'
].
forEach
((
v
)
{
paymentAccounts
!.
add
(
new
DirectPaymentAccounts
.
fromJson
(
v
));
});
}
if
(
json
[
'payment_modes'
]
!=
null
)
{
paymentModes
=
<
DirectPaymentModes
>[];
json
[
'payment_modes'
].
forEach
((
v
)
{
paymentModes
!.
add
(
new
DirectPaymentModes
.
fromJson
(
v
));
});
}
error
=
json
[
'error'
];
message
=
json
[
'message'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
if
(
this
.
accounts
!=
null
)
{
data
[
'accounts'
]
=
this
.
accounts
!.
map
((
v
)
=>
v
.
toJson
()).
toList
();
}
if
(
this
.
paymentAccounts
!=
null
)
{
data
[
'payment_accounts'
]
=
this
.
paymentAccounts
!.
map
((
v
)
=>
v
.
toJson
()).
toList
();
}
if
(
this
.
paymentModes
!=
null
)
{
data
[
'payment_modes'
]
=
this
.
paymentModes
!.
map
((
v
)
=>
v
.
toJson
()).
toList
();
}
data
[
'error'
]
=
this
.
error
;
data
[
'message'
]
=
this
.
message
;
return
data
;
}
}
class
DirectAccounts
{
String
?
id
;
String
?
name
;
DirectAccounts
({
this
.
id
,
this
.
name
});
DirectAccounts
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
id
=
json
[
'id'
];
name
=
json
[
'name'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
data
[
'id'
]
=
this
.
id
;
data
[
'name'
]
=
this
.
name
;
return
data
;
}
}
class
DirectPaymentAccounts
{
String
?
id
;
String
?
name
;
DirectPaymentAccounts
({
this
.
id
,
this
.
name
});
DirectPaymentAccounts
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
id
=
json
[
'id'
];
name
=
json
[
'name'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
data
[
'id'
]
=
this
.
id
;
data
[
'name'
]
=
this
.
name
;
return
data
;
}
}
class
DirectPaymentModes
{
String
?
id
;
String
?
name
;
DirectPaymentModes
({
this
.
id
,
this
.
name
});
DirectPaymentModes
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
id
=
json
[
'id'
];
name
=
json
[
'name'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
data
[
'id'
]
=
this
.
id
;
data
[
'name'
]
=
this
.
name
;
return
data
;
}
}
\ No newline at end of file
lib/Models/financeModels/paymentRequisitionDetailsResponse.dart
View file @
64c42cd9
...
@@ -57,9 +57,14 @@ class RequestDetails {
...
@@ -57,9 +57,14 @@ class RequestDetails {
String
?
updatedDatetime
;
String
?
updatedDatetime
;
String
?
proposedAccount
;
String
?
proposedAccount
;
String
?
proposedAccountId
;
String
?
proposedAccountId
;
String
?
bankName
;
String
?
bankBranchname
;
String
?
bankIfscCode
;
String
?
bankAccountHolderName
;
String
?
bankAccountNumber
;
String
?
bankUpiId
;
RequestDetails
(
RequestDetails
({
this
.
id
,
{
this
.
id
,
this
.
isProcessedPaymentRequest
,
this
.
isProcessedPaymentRequest
,
this
.
accountId
,
this
.
accountId
,
this
.
accountName
,
this
.
accountName
,
...
@@ -82,7 +87,14 @@ class RequestDetails {
...
@@ -82,7 +87,14 @@ class RequestDetails {
this
.
createdDatetime
,
this
.
createdDatetime
,
this
.
updatedDatetime
,
this
.
updatedDatetime
,
this
.
proposedAccount
,
this
.
proposedAccount
,
this
.
proposedAccountId
});
this
.
proposedAccountId
,
this
.
bankName
,
this
.
bankBranchname
,
this
.
bankIfscCode
,
this
.
bankAccountHolderName
,
this
.
bankAccountNumber
,
this
.
bankUpiId
,
});
RequestDetails
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
RequestDetails
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
id
=
json
[
'id'
];
id
=
json
[
'id'
];
...
@@ -109,6 +121,12 @@ class RequestDetails {
...
@@ -109,6 +121,12 @@ class RequestDetails {
updatedDatetime
=
json
[
'updated_datetime'
];
updatedDatetime
=
json
[
'updated_datetime'
];
proposedAccount
=
json
[
'proposed_account'
];
proposedAccount
=
json
[
'proposed_account'
];
proposedAccountId
=
json
[
'proposed_account_id'
];
proposedAccountId
=
json
[
'proposed_account_id'
];
bankName
=
json
[
'bank_name'
];
bankBranchname
=
json
[
'bank_branch_name'
];
bankIfscCode
=
json
[
'bank_ifsc_code'
];
bankAccountHolderName
=
json
[
'bank_account_holder_name'
];
bankAccountNumber
=
json
[
'bank_account_number'
];
bankUpiId
=
json
[
'bank_upi_id'
];
}
}
Map
<
String
,
dynamic
>
toJson
()
{
Map
<
String
,
dynamic
>
toJson
()
{
...
@@ -137,6 +155,12 @@ class RequestDetails {
...
@@ -137,6 +155,12 @@ class RequestDetails {
data
[
'updated_datetime'
]
=
this
.
updatedDatetime
;
data
[
'updated_datetime'
]
=
this
.
updatedDatetime
;
data
[
'proposed_account'
]
=
this
.
proposedAccount
;
data
[
'proposed_account'
]
=
this
.
proposedAccount
;
data
[
'proposed_account_id'
]
=
this
.
proposedAccountId
;
data
[
'proposed_account_id'
]
=
this
.
proposedAccountId
;
data
[
'bank_name'
]
=
this
.
bankName
;
data
[
'bank_branch_name'
]
=
this
.
bankBranchname
;
data
[
'bank_ifsc_code'
]
=
this
.
bankIfscCode
;
data
[
'bank_account_holder_name'
]
=
this
.
bankAccountHolderName
;
data
[
'bank_account_number'
]
=
this
.
bankAccountNumber
;
data
[
'bank_upi_id'
]
=
this
.
bankUpiId
;
return
data
;
return
data
;
}
}
}
}
...
@@ -170,8 +194,7 @@ class PaymentDetails {
...
@@ -170,8 +194,7 @@ class PaymentDetails {
String
?
paymentEmployeeName
;
String
?
paymentEmployeeName
;
String
?
mode
;
String
?
mode
;
PaymentDetails
(
PaymentDetails
({
this
.
id
,
{
this
.
id
,
this
.
refType
,
this
.
refType
,
this
.
refId
,
this
.
refId
,
this
.
paymentAccountId
,
this
.
paymentAccountId
,
...
...
lib/Models/financeModels/paymentRequisitionPaymentsDetailsResponse.dart
0 → 100644
View file @
64c42cd9
class
paymentRequisitionPaymentsDetailsResponse
{
PaymentDetails
?
paymentDetails
;
String
?
error
;
String
?
message
;
paymentRequisitionPaymentsDetailsResponse
(
{
this
.
paymentDetails
,
this
.
error
,
this
.
message
});
paymentRequisitionPaymentsDetailsResponse
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
paymentDetails
=
json
[
'payment_details'
]
!=
null
?
new
PaymentDetails
.
fromJson
(
json
[
'payment_details'
])
:
null
;
error
=
json
[
'error'
];
message
=
json
[
'message'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
if
(
this
.
paymentDetails
!=
null
)
{
data
[
'payment_details'
]
=
this
.
paymentDetails
!.
toJson
();
}
data
[
'error'
]
=
this
.
error
;
data
[
'message'
]
=
this
.
message
;
return
data
;
}
}
class
PaymentDetails
{
String
?
id
;
String
?
refType
;
String
?
refId
;
String
?
paymentAccountId
;
String
?
accountId
;
String
?
paymentModeId
;
String
?
amount
;
String
?
bankName
;
String
?
bankBranchName
;
String
?
bankIfscCode
;
String
?
bankAccountHolderName
;
String
?
bankAccountNumber
;
String
?
bankUpiId
;
String
?
attachmentDirFilePath
;
String
?
attachmentViewFileName
;
String
?
description
;
String
?
paymentReferenceNumber
;
String
?
createdEmployeeId
;
String
?
paymentDate
;
String
?
paymentRemarks
;
String
?
isExists
;
String
?
createdDatetime
;
String
?
updatedDatetime
;
String
?
accountName
;
String
?
paymentAccountName
;
String
?
paymentEmployeeName
;
String
?
mode
;
PaymentDetails
(
{
this
.
id
,
this
.
refType
,
this
.
refId
,
this
.
paymentAccountId
,
this
.
accountId
,
this
.
paymentModeId
,
this
.
amount
,
this
.
bankName
,
this
.
bankBranchName
,
this
.
bankIfscCode
,
this
.
bankAccountHolderName
,
this
.
bankAccountNumber
,
this
.
bankUpiId
,
this
.
attachmentDirFilePath
,
this
.
attachmentViewFileName
,
this
.
description
,
this
.
paymentReferenceNumber
,
this
.
createdEmployeeId
,
this
.
paymentDate
,
this
.
paymentRemarks
,
this
.
isExists
,
this
.
createdDatetime
,
this
.
updatedDatetime
,
this
.
accountName
,
this
.
paymentAccountName
,
this
.
paymentEmployeeName
,
this
.
mode
});
PaymentDetails
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
id
=
json
[
'id'
];
refType
=
json
[
'ref_type'
];
refId
=
json
[
'ref_id'
];
paymentAccountId
=
json
[
'payment_account_id'
];
accountId
=
json
[
'account_id'
];
paymentModeId
=
json
[
'payment_mode_id'
];
amount
=
json
[
'amount'
];
bankName
=
json
[
'bank_name'
];
bankBranchName
=
json
[
'bank_branch_name'
];
bankIfscCode
=
json
[
'bank_ifsc_code'
];
bankAccountHolderName
=
json
[
'bank_account_holder_name'
];
bankAccountNumber
=
json
[
'bank_account_number'
];
bankUpiId
=
json
[
'bank_upi_id'
];
attachmentDirFilePath
=
json
[
'attachment_dir_file_path'
];
attachmentViewFileName
=
json
[
'attachment_view_file_name'
];
description
=
json
[
'description'
];
paymentReferenceNumber
=
json
[
'payment_reference_number'
];
createdEmployeeId
=
json
[
'created_employee_id'
];
paymentDate
=
json
[
'payment_date'
];
paymentRemarks
=
json
[
'payment_remarks'
];
isExists
=
json
[
'is_exists'
];
createdDatetime
=
json
[
'created_datetime'
];
updatedDatetime
=
json
[
'updated_datetime'
];
accountName
=
json
[
'account_name'
];
paymentAccountName
=
json
[
'payment_account_name'
];
paymentEmployeeName
=
json
[
'payment_employee_name'
];
mode
=
json
[
'mode'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
data
[
'id'
]
=
this
.
id
;
data
[
'ref_type'
]
=
this
.
refType
;
data
[
'ref_id'
]
=
this
.
refId
;
data
[
'payment_account_id'
]
=
this
.
paymentAccountId
;
data
[
'account_id'
]
=
this
.
accountId
;
data
[
'payment_mode_id'
]
=
this
.
paymentModeId
;
data
[
'amount'
]
=
this
.
amount
;
data
[
'bank_name'
]
=
this
.
bankName
;
data
[
'bank_branch_name'
]
=
this
.
bankBranchName
;
data
[
'bank_ifsc_code'
]
=
this
.
bankIfscCode
;
data
[
'bank_account_holder_name'
]
=
this
.
bankAccountHolderName
;
data
[
'bank_account_number'
]
=
this
.
bankAccountNumber
;
data
[
'bank_upi_id'
]
=
this
.
bankUpiId
;
data
[
'attachment_dir_file_path'
]
=
this
.
attachmentDirFilePath
;
data
[
'attachment_view_file_name'
]
=
this
.
attachmentViewFileName
;
data
[
'description'
]
=
this
.
description
;
data
[
'payment_reference_number'
]
=
this
.
paymentReferenceNumber
;
data
[
'created_employee_id'
]
=
this
.
createdEmployeeId
;
data
[
'payment_date'
]
=
this
.
paymentDate
;
data
[
'payment_remarks'
]
=
this
.
paymentRemarks
;
data
[
'is_exists'
]
=
this
.
isExists
;
data
[
'created_datetime'
]
=
this
.
createdDatetime
;
data
[
'updated_datetime'
]
=
this
.
updatedDatetime
;
data
[
'account_name'
]
=
this
.
accountName
;
data
[
'payment_account_name'
]
=
this
.
paymentAccountName
;
data
[
'payment_employee_name'
]
=
this
.
paymentEmployeeName
;
data
[
'mode'
]
=
this
.
mode
;
return
data
;
}
}
lib/Models/financeModels/paymentRequisitionPaymentsListResponse.dart
0 → 100644
View file @
64c42cd9
class
paymentRequisitionPaymentsListResponse
{
List
<
PaymentsList
>?
paymentsList
;
String
?
error
;
String
?
message
;
paymentRequisitionPaymentsListResponse
(
{
this
.
paymentsList
,
this
.
error
,
this
.
message
});
paymentRequisitionPaymentsListResponse
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
if
(
json
[
'payments_list'
]
!=
null
)
{
paymentsList
=
<
PaymentsList
>[];
json
[
'payments_list'
].
forEach
((
v
)
{
paymentsList
!.
add
(
new
PaymentsList
.
fromJson
(
v
));
});
}
error
=
json
[
'error'
];
message
=
json
[
'message'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
if
(
this
.
paymentsList
!=
null
)
{
data
[
'payments_list'
]
=
this
.
paymentsList
!.
map
((
v
)
=>
v
.
toJson
()).
toList
();
}
data
[
'error'
]
=
this
.
error
;
data
[
'message'
]
=
this
.
message
;
return
data
;
}
}
class
PaymentsList
{
String
?
id
;
String
?
refType
;
String
?
amount
;
String
?
bankName
;
String
?
bankBranchName
;
String
?
bankIfscCode
;
String
?
bankAccountHolderName
;
String
?
bankAccountNumber
;
String
?
bankUpiId
;
String
?
attachmentDirFilePath
;
String
?
attachmentViewFileName
;
String
?
description
;
String
?
paymentReferenceNumber
;
String
?
paymentDate
;
String
?
receipientAccount
;
String
?
payAccount
;
String
?
requestMode
;
String
?
createdEmployee
;
String
?
createdDatetime
;
String
?
accountId
;
String
?
paymentAccountId
;
PaymentsList
(
{
this
.
id
,
this
.
refType
,
this
.
amount
,
this
.
bankName
,
this
.
bankBranchName
,
this
.
bankIfscCode
,
this
.
bankAccountHolderName
,
this
.
bankAccountNumber
,
this
.
bankUpiId
,
this
.
attachmentDirFilePath
,
this
.
attachmentViewFileName
,
this
.
description
,
this
.
paymentReferenceNumber
,
this
.
paymentDate
,
this
.
receipientAccount
,
this
.
payAccount
,
this
.
requestMode
,
this
.
createdEmployee
,
this
.
createdDatetime
,
this
.
accountId
,
this
.
paymentAccountId
});
PaymentsList
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
id
=
json
[
'id'
];
refType
=
json
[
'ref_type'
];
amount
=
json
[
'amount'
];
bankName
=
json
[
'bank_name'
];
bankBranchName
=
json
[
'bank_branch_name'
];
bankIfscCode
=
json
[
'bank_ifsc_code'
];
bankAccountHolderName
=
json
[
'bank_account_holder_name'
];
bankAccountNumber
=
json
[
'bank_account_number'
];
bankUpiId
=
json
[
'bank_upi_id'
];
attachmentDirFilePath
=
json
[
'attachment_dir_file_path'
];
attachmentViewFileName
=
json
[
'attachment_view_file_name'
];
description
=
json
[
'description'
];
paymentReferenceNumber
=
json
[
'payment_reference_number'
];
paymentDate
=
json
[
'payment_date'
];
receipientAccount
=
json
[
'receipient_account'
];
payAccount
=
json
[
'pay_account'
];
requestMode
=
json
[
'request_mode'
];
createdEmployee
=
json
[
'created_employee'
];
createdDatetime
=
json
[
'created_datetime'
];
accountId
=
json
[
'account_id'
];
paymentAccountId
=
json
[
'payment_account_id'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
data
[
'id'
]
=
this
.
id
;
data
[
'ref_type'
]
=
this
.
refType
;
data
[
'amount'
]
=
this
.
amount
;
data
[
'bank_name'
]
=
this
.
bankName
;
data
[
'bank_branch_name'
]
=
this
.
bankBranchName
;
data
[
'bank_ifsc_code'
]
=
this
.
bankIfscCode
;
data
[
'bank_account_holder_name'
]
=
this
.
bankAccountHolderName
;
data
[
'bank_account_number'
]
=
this
.
bankAccountNumber
;
data
[
'bank_upi_id'
]
=
this
.
bankUpiId
;
data
[
'attachment_dir_file_path'
]
=
this
.
attachmentDirFilePath
;
data
[
'attachment_view_file_name'
]
=
this
.
attachmentViewFileName
;
data
[
'description'
]
=
this
.
description
;
data
[
'payment_reference_number'
]
=
this
.
paymentReferenceNumber
;
data
[
'payment_date'
]
=
this
.
paymentDate
;
data
[
'receipient_account'
]
=
this
.
receipientAccount
;
data
[
'pay_account'
]
=
this
.
payAccount
;
data
[
'request_mode'
]
=
this
.
requestMode
;
data
[
'created_employee'
]
=
this
.
createdEmployee
;
data
[
'created_datetime'
]
=
this
.
createdDatetime
;
data
[
'account_id'
]
=
this
.
accountId
;
data
[
'payment_account_id'
]
=
this
.
paymentAccountId
;
return
data
;
}
}
lib/Models/financeModels/paymentRequisitionPaymentsReceiptsDetailsResponse.dart
0 → 100644
View file @
64c42cd9
class
paymentRequisitionPaymentsReceiptsDetailsResponse
{
ReceiptDetails
?
receiptDetails
;
String
?
error
;
String
?
message
;
paymentRequisitionPaymentsReceiptsDetailsResponse
(
{
this
.
receiptDetails
,
this
.
error
,
this
.
message
});
paymentRequisitionPaymentsReceiptsDetailsResponse
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
receiptDetails
=
json
[
'receipt_details'
]
!=
null
?
new
ReceiptDetails
.
fromJson
(
json
[
'receipt_details'
])
:
null
;
error
=
json
[
'error'
];
message
=
json
[
'message'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
if
(
this
.
receiptDetails
!=
null
)
{
data
[
'receipt_details'
]
=
this
.
receiptDetails
!.
toJson
();
}
data
[
'error'
]
=
this
.
error
;
data
[
'message'
]
=
this
.
message
;
return
data
;
}
}
class
ReceiptDetails
{
String
?
id
;
String
?
amount
;
String
?
bankName
;
String
?
bankBranchName
;
String
?
bankIfscCode
;
String
?
bankAccountHolderName
;
String
?
bankAccountNumber
;
String
?
attachmentDirFilePath
;
String
?
attachmentViewFileName
;
String
?
accountId
;
String
?
description
;
String
?
paymentReferenceNumber
;
String
?
receiptDate
;
String
?
receipientAccount
;
String
?
payAccount
;
String
?
requestMode
;
String
?
createdEmployee
;
String
?
createdDatetime
;
String
?
updatedDatetime
;
String
?
receiptAccountId
;
String
?
bankUpiId
;
ReceiptDetails
(
{
this
.
id
,
this
.
amount
,
this
.
bankName
,
this
.
bankBranchName
,
this
.
bankIfscCode
,
this
.
bankAccountHolderName
,
this
.
bankAccountNumber
,
this
.
attachmentDirFilePath
,
this
.
attachmentViewFileName
,
this
.
accountId
,
this
.
description
,
this
.
paymentReferenceNumber
,
this
.
receiptDate
,
this
.
receipientAccount
,
this
.
payAccount
,
this
.
requestMode
,
this
.
createdEmployee
,
this
.
createdDatetime
,
this
.
updatedDatetime
,
this
.
receiptAccountId
,
this
.
bankUpiId
});
ReceiptDetails
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
id
=
json
[
'id'
];
amount
=
json
[
'amount'
];
bankName
=
json
[
'bank_name'
];
bankBranchName
=
json
[
'bank_branch_name'
];
bankIfscCode
=
json
[
'bank_ifsc_code'
];
bankAccountHolderName
=
json
[
'bank_account_holder_name'
];
bankAccountNumber
=
json
[
'bank_account_number'
];
attachmentDirFilePath
=
json
[
'attachment_dir_file_path'
];
attachmentViewFileName
=
json
[
'attachment_view_file_name'
];
accountId
=
json
[
'account_id'
];
description
=
json
[
'description'
];
paymentReferenceNumber
=
json
[
'payment_reference_number'
];
receiptDate
=
json
[
'receipt_date'
];
receipientAccount
=
json
[
'receipient_account'
];
payAccount
=
json
[
'pay_account'
];
requestMode
=
json
[
'request_mode'
];
createdEmployee
=
json
[
'created_employee'
];
createdDatetime
=
json
[
'created_datetime'
];
updatedDatetime
=
json
[
'updated_datetime'
];
receiptAccountId
=
json
[
'receipt_account_id'
];
bankUpiId
=
json
[
'bank_upi_id'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
data
[
'id'
]
=
this
.
id
;
data
[
'amount'
]
=
this
.
amount
;
data
[
'bank_name'
]
=
this
.
bankName
;
data
[
'bank_branch_name'
]
=
this
.
bankBranchName
;
data
[
'bank_ifsc_code'
]
=
this
.
bankIfscCode
;
data
[
'bank_account_holder_name'
]
=
this
.
bankAccountHolderName
;
data
[
'bank_account_number'
]
=
this
.
bankAccountNumber
;
data
[
'attachment_dir_file_path'
]
=
this
.
attachmentDirFilePath
;
data
[
'attachment_view_file_name'
]
=
this
.
attachmentViewFileName
;
data
[
'account_id'
]
=
this
.
accountId
;
data
[
'description'
]
=
this
.
description
;
data
[
'payment_reference_number'
]
=
this
.
paymentReferenceNumber
;
data
[
'receipt_date'
]
=
this
.
receiptDate
;
data
[
'receipient_account'
]
=
this
.
receipientAccount
;
data
[
'pay_account'
]
=
this
.
payAccount
;
data
[
'request_mode'
]
=
this
.
requestMode
;
data
[
'created_employee'
]
=
this
.
createdEmployee
;
data
[
'created_datetime'
]
=
this
.
createdDatetime
;
data
[
'updated_datetime'
]
=
this
.
updatedDatetime
;
data
[
'receipt_account_id'
]
=
this
.
receiptAccountId
;
data
[
'bank_upi_id'
]
=
this
.
bankUpiId
;
return
data
;
}
}
lib/Models/financeModels/paymentRequisitionPaymentsReceiptsListResponse.dart
0 → 100644
View file @
64c42cd9
class
paymentRequisitionPaymentsReceiptsListResponse
{
List
<
ReceiptsList
>?
receiptsList
;
String
?
error
;
String
?
message
;
paymentRequisitionPaymentsReceiptsListResponse
(
{
this
.
receiptsList
,
this
.
error
,
this
.
message
});
paymentRequisitionPaymentsReceiptsListResponse
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
if
(
json
[
'receipts_list'
]
!=
null
)
{
receiptsList
=
<
ReceiptsList
>[];
json
[
'receipts_list'
].
forEach
((
v
)
{
receiptsList
!.
add
(
new
ReceiptsList
.
fromJson
(
v
));
});
}
error
=
json
[
'error'
];
message
=
json
[
'message'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
if
(
this
.
receiptsList
!=
null
)
{
data
[
'receipts_list'
]
=
this
.
receiptsList
!.
map
((
v
)
=>
v
.
toJson
()).
toList
();
}
data
[
'error'
]
=
this
.
error
;
data
[
'message'
]
=
this
.
message
;
return
data
;
}
}
class
ReceiptsList
{
String
?
id
;
String
?
amount
;
String
?
bankName
;
String
?
bankBranchName
;
String
?
bankIfscCode
;
String
?
bankAccountHolderName
;
String
?
bankAccountNumber
;
String
?
attachmentDirFilePath
;
String
?
attachmentViewFileName
;
String
?
accountId
;
String
?
description
;
String
?
paymentReferenceNumber
;
String
?
receiptDate
;
String
?
receipientAccount
;
String
?
payAccount
;
String
?
requestMode
;
String
?
createdEmployee
;
String
?
createdDatetime
;
String
?
updatedDatetime
;
String
?
receiptAccountId
;
ReceiptsList
(
{
this
.
id
,
this
.
amount
,
this
.
bankName
,
this
.
bankBranchName
,
this
.
bankIfscCode
,
this
.
bankAccountHolderName
,
this
.
bankAccountNumber
,
this
.
attachmentDirFilePath
,
this
.
attachmentViewFileName
,
this
.
accountId
,
this
.
description
,
this
.
paymentReferenceNumber
,
this
.
receiptDate
,
this
.
receipientAccount
,
this
.
payAccount
,
this
.
requestMode
,
this
.
createdEmployee
,
this
.
createdDatetime
,
this
.
updatedDatetime
,
this
.
receiptAccountId
});
ReceiptsList
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
id
=
json
[
'id'
];
amount
=
json
[
'amount'
];
bankName
=
json
[
'bank_name'
];
bankBranchName
=
json
[
'bank_branch_name'
];
bankIfscCode
=
json
[
'bank_ifsc_code'
];
bankAccountHolderName
=
json
[
'bank_account_holder_name'
];
bankAccountNumber
=
json
[
'bank_account_number'
];
attachmentDirFilePath
=
json
[
'attachment_dir_file_path'
];
attachmentViewFileName
=
json
[
'attachment_view_file_name'
];
accountId
=
json
[
'account_id'
];
description
=
json
[
'description'
];
paymentReferenceNumber
=
json
[
'payment_reference_number'
];
receiptDate
=
json
[
'receipt_date'
];
receipientAccount
=
json
[
'receipient_account'
];
payAccount
=
json
[
'pay_account'
];
requestMode
=
json
[
'request_mode'
];
createdEmployee
=
json
[
'created_employee'
];
createdDatetime
=
json
[
'created_datetime'
];
updatedDatetime
=
json
[
'updated_datetime'
];
receiptAccountId
=
json
[
'receipt_account_id'
];
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
new
Map
<
String
,
dynamic
>();
data
[
'id'
]
=
this
.
id
;
data
[
'amount'
]
=
this
.
amount
;
data
[
'bank_name'
]
=
this
.
bankName
;
data
[
'bank_branch_name'
]
=
this
.
bankBranchName
;
data
[
'bank_ifsc_code'
]
=
this
.
bankIfscCode
;
data
[
'bank_account_holder_name'
]
=
this
.
bankAccountHolderName
;
data
[
'bank_account_number'
]
=
this
.
bankAccountNumber
;
data
[
'attachment_dir_file_path'
]
=
this
.
attachmentDirFilePath
;
data
[
'attachment_view_file_name'
]
=
this
.
attachmentViewFileName
;
data
[
'account_id'
]
=
this
.
accountId
;
data
[
'description'
]
=
this
.
description
;
data
[
'payment_reference_number'
]
=
this
.
paymentReferenceNumber
;
data
[
'receipt_date'
]
=
this
.
receiptDate
;
data
[
'receipient_account'
]
=
this
.
receipientAccount
;
data
[
'pay_account'
]
=
this
.
payAccount
;
data
[
'request_mode'
]
=
this
.
requestMode
;
data
[
'created_employee'
]
=
this
.
createdEmployee
;
data
[
'created_datetime'
]
=
this
.
createdDatetime
;
data
[
'updated_datetime'
]
=
this
.
updatedDatetime
;
data
[
'receipt_account_id'
]
=
this
.
receiptAccountId
;
return
data
;
}
}
lib/Notifiers/financeProvider/RequesitionLidtDetailsProvider.dart
View file @
64c42cd9
import
'dart:io'
;
import
'package:camera/camera.dart'
;
import
'package:flutter/foundation.dart'
;
import
'package:flutter/foundation.dart'
;
import
'package:flutter/material.dart'
;
import
'package:generp/Models/financeModels/paymentRequisitionDetailsResponse.dart'
;
import
'package:generp/Models/financeModels/paymentRequisitionDetailsResponse.dart'
;
import
'package:generp/Notifiers/HomeScreenNotifier.dart'
;
import
'package:generp/Notifiers/HomeScreenNotifier.dart'
;
import
'package:generp/Utils/commonServices.dart'
;
import
'package:generp/services/api_calling.dart'
;
import
'package:generp/services/api_calling.dart'
;
import
'package:image_picker/image_picker.dart'
;
import
'package:provider/provider.dart'
;
import
'package:provider/provider.dart'
;
import
'approveRejectPaymentRequestResponse.dart'
;
import
'approveRejectPaymentRequestResponse.dart'
;
class
Requesitionlidtdetailsprovider
extends
ChangeNotifier
{
class
Requesitionlidtdetailsprovider
extends
ChangeNotifier
{
PaymentDetails
_paymentDetails
=
PaymentDetails
();
RequestDetails
_requestDetails
=
RequestDetails
();
PaymentDetails
get
paymentsDetails
=>
_paymentDetails
;
TextEditingController
requestedAmount
=
TextEditingController
();
RequestDetails
get
requestsDetails
=>
_requestDetails
;
TextEditingController
proposedPaymentAccount
=
TextEditingController
();
TextEditingController
accountName
=
TextEditingController
();
TextEditingController
branch
=
TextEditingController
();
TextEditingController
requestingPurpose
=
TextEditingController
();
TextEditingController
description
=
TextEditingController
();
TextEditingController
amount
=
TextEditingController
();
TextEditingController
paymentMode
=
TextEditingController
();
TextEditingController
bankUpiID
=
TextEditingController
();
TextEditingController
bankName
=
TextEditingController
();
TextEditingController
bankBranchName
=
TextEditingController
();
TextEditingController
bankAccountNumber
=
TextEditingController
();
TextEditingController
bankIfscCode
=
TextEditingController
();
TextEditingController
bankHolderName
=
TextEditingController
();
List
<
PaymentAccounts
>
_paymentAccounts
=
[];
PaymentDetails
_paymentDetails
=
PaymentDetails
();
RequestDetails
_requestDetails
=
RequestDetails
();
PaymentRequestDetails
_paymentRequestDetails
=
PaymentRequestDetails
();
PaymentRequestDetails
_paymentRequestDetails
=
PaymentRequestDetails
();
PaymentAccounts
?
_selectedPaymentAccounts
;
List
<
PaymentModes
>
_paymentModes
=
[];
List
<
PaymentModes
>
_paymentModes
=
[];
List
<
PaymentAccounts
>
_paymentAccounts
=
[];
PaymentAccounts
?
_selectedPaymentAccounts
;
var
_selectedValue
;
var
_selectedID
;
List
<
String
>
_headings
=
[];
List
<
String
>
_subHeadings
=
[];
String
?
FileError
;
var
_image_picked
=
0
;
final
ImagePicker
_picker
=
ImagePicker
();
File
?
_image
;
get
image_picked
=>
_image_picked
;
File
?
get
imagePath
=>
_image
;
PaymentDetails
get
paymentsDetails
=>
_paymentDetails
;
RequestDetails
get
requestsDetails
=>
_requestDetails
;
List
<
PaymentAccounts
>
get
paymentsAccounts
=>
_paymentAccounts
;
List
<
PaymentAccounts
>
get
paymentsAccounts
=>
_paymentAccounts
;
List
<
PaymentModes
>
get
paymentsModes
=>
_paymentModes
;
List
<
PaymentModes
>
get
paymentsModes
=>
_paymentModes
;
PaymentRequestDetails
get
paymentsReqDetails
=>
_paymentRequestDetails
;
PaymentRequestDetails
get
paymentsReqDetails
=>
_paymentRequestDetails
;
PaymentAccounts
?
get
selectedPaymentAccounts
=>
_selectedPaymentAccounts
;
PaymentAccounts
?
get
selectedPaymentAccounts
=>
_selectedPaymentAccounts
;
var
_selectedValue
;
var
_selectedID
;
get
selectedValue
=>
_selectedValue
;
get
selectedValue
=>
_selectedValue
;
get
selectedID
=>
_selectedID
;
get
selectedID
=>
_selectedID
;
List
<
String
>
_headings
=
[
];
List
<
String
>
_subHeadings
=[];
List
<
String
>
get
subHeadings
=>
_subHeadings
;
List
<
String
>
get
subHeadings
=>
_subHeadings
;
List
<
String
>
get
Headings
=>
_headings
;
set
subHeadings
(
List
<
String
>
value
){
_subHeadings
=
value
;
notifyListeners
();
}
List
<
String
>
get
Headings
=>
_headings
;
set
selectedPaymentAccounts
(
PaymentAccounts
?
value
){
set
selectedPaymentAccounts
(
PaymentAccounts
?
value
)
{
_selectedPaymentAccounts
=
value
;
_selectedPaymentAccounts
=
value
;
_selectedValue
=
value
!.
name
!;
_selectedValue
=
value
!.
name
!;
_selectedID
=
value
!.
id
;
_selectedID
=
value
!.
id
;
notifyListeners
();
notifyListeners
();
}
}
set
selectedValue
(
value
){
set
selectedValue
(
value
)
{
_selectedValue
=
value
;
_selectedValue
=
value
;
notifyListeners
();
notifyListeners
();
}
}
set
selectedID
(
value
){
set
selectedID
(
value
)
{
_selectedID
=
value
;
_selectedID
=
value
;
notifyListeners
();
notifyListeners
();
}
}
Future
<
void
>
paymentRequesitionDetails
(
context
,
payment_request_id
)
async
{
imgFromCamera
(
context
)
async
{
try
{
// Capture a photo
var
provider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
try
{
final
data
=
await
ApiCalling
.
paymentRequestionDetailsAPI
(
provider
.
empId
,
provider
.
session
,
payment_request_id
);
final
XFile
?
galleryImage
=
await
_picker
.
pickImage
(
if
(
data
!=
null
){
source
:
ImageSource
.
camera
,
if
(
data
.
error
==
"0"
){
imageQuality:
50
,
);
debugPrint
(
"added"
);
_image
=
File
(
galleryImage
!.
path
);
_image_picked
=
1
;
FileError
=
null
;
notifyListeners
();
}
catch
(
e
)
{
debugPrint
(
"mmmm:
${e.toString()}
"
);
}
}
imgFromGallery
(
context
)
async
{
// Pick an image
try
{
final
XFile
?
galleryImage
=
await
_picker
.
pickImage
(
source
:
ImageSource
.
gallery
,
);
final
bytes
=
(
await
galleryImage
?.
readAsBytes
())?.
lengthInBytes
;
final
kb
=
bytes
!
/
1024
;
final
mb
=
kb
/
1024
;
debugPrint
(
"Jenny: bytes:
$bytes
, kb:
$kb
, mb:
$mb
"
);
_image
=
File
(
galleryImage
!.
path
);
_image_picked
=
1
;
FileError
=
null
;
notifyListeners
();
// var file = FlutterImageCompress.compressWithFile(galleryImage!.path);
}
catch
(
e
)
{
debugPrint
(
"mmmm:
${e.toString()}
"
);
}
}
Future
<
void
>
paymentRequesitionDetails
(
context
,
payment_request_id
)
async
{
try
{
var
provider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
final
data
=
await
ApiCalling
.
paymentRequestionDetailsAPI
(
provider
.
empId
,
provider
.
session
,
payment_request_id
,
);
if
(
data
!=
null
)
{
if
(
data
.
error
==
"0"
)
{
_headings
=
[
_headings
=
[
"Requested Account"
,
"Requested Account"
,
"Proposed Account Name"
,
"Proposed Account Name"
,
...
@@ -79,7 +163,9 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier{
...
@@ -79,7 +163,9 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier{
"Created Date/Time"
,
"Created Date/Time"
,
"Updated Date/Time"
,
"Updated Date/Time"
,
];
];
_paymentDetails
=
data
.
paymentDetails
??
PaymentDetails
(
_paymentDetails
=
data
.
paymentDetails
??
PaymentDetails
(
accountId:
""
,
accountId:
""
,
accountName:
""
,
accountName:
""
,
amount:
""
,
amount:
""
,
...
@@ -106,9 +192,12 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier{
...
@@ -106,9 +192,12 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier{
paymentRemarks:
""
,
paymentRemarks:
""
,
refId:
""
,
refId:
""
,
refType:
""
,
refType:
""
,
updatedDatetime:
""
updatedDatetime:
""
,
);
);
_requestDetails
=
data
.
requestDetails
??
RequestDetails
(
_requestDetails
=
data
.
requestDetails
??
RequestDetails
(
updatedDatetime:
""
,
updatedDatetime:
""
,
id:
""
,
id:
""
,
description:
""
,
description:
""
,
...
@@ -132,70 +221,137 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier{
...
@@ -132,70 +221,137 @@ class Requesitionlidtdetailsprovider extends ChangeNotifier{
requestingPurpose:
""
,
requestingPurpose:
""
,
requestMode:
""
,
requestMode:
""
,
status:
""
,
status:
""
,
transDis:
""
transDis:
""
,
);
);
_subHeadings
=
[
_requestDetails
.
accountName
??
"-"
,
print
(
"here 2121"
);
_requestDetails
.
proposedAccount
??
"-"
,
preValues
();
_requestDetails
.
branch
??
"-"
,
_requestDetails
.
requestingPurpose
??
"-"
,
_requestDetails
.
requestMode
??
"-"
,
_requestDetails
.
createdEmployee
??
"-"
,
_requestDetails
.
attachmentViewFileName
??
"-"
,
_requestDetails
.
date
??
"-"
,
_requestDetails
.
description
??
"-"
,
_requestDetails
.
level1ApprovalRemarks
??
"-"
,
_requestDetails
.
level1Employee
??
"-"
,
_requestDetails
.
level2ApprovalRemarks
??
"-"
,
_requestDetails
.
level2Employee
??
"-"
,
_requestDetails
.
createdDatetime
??
"-"
,
_requestDetails
.
updatedDatetime
??
"-"
];
notifyListeners
();
notifyListeners
();
}
}
}
}
}
catch
(
e
,
s
){}
}
catch
(
e
,
s
)
{}
}
}
Future
<
void
>
approveRejectPaymentRequestAPIFunction
(
context
,
payment_request_id
)
async
{
preValues
(){
try
{
print
(
"here 212ssass1"
);
var
provider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
requestedAmount
.
text
=
_requestDetails
.
requestedAmount
??
"-"
;
final
data
=
await
ApiCalling
.
approveRejectPaymentRequestAPI
(
provider
.
empId
,
provider
.
session
,
payment_request_id
);
proposedPaymentAccount
.
text
=
_requestDetails
.
proposedAccount
??
"-"
;
if
(
data
!=
null
){
accountName
.
text
=
_requestDetails
.
accountName
??
"-"
;
if
(
data
.
error
==
"0"
){
branch
.
text
=
_requestDetails
.
branch
??
"-"
;
requestingPurpose
.
text
=
_requestDetails
.
requestingPurpose
??
"-"
;
description
.
text
=
_requestDetails
.
description
??
"-"
;
amount
.
text
=
_requestDetails
.
amount
??
"-"
;
paymentMode
.
text
=
_requestDetails
.
requestMode
??
"-"
;
bankUpiID
.
text
=
_requestDetails
.
bankUpiId
??
"-"
;
bankName
.
text
=
_requestDetails
.
bankName
??
"-"
;
bankBranchName
.
text
=
_requestDetails
.
bankBranchname
??
"-"
;
bankAccountNumber
.
text
=
_requestDetails
.
bankAccountNumber
??
"-"
;
bankIfscCode
.
text
=
_requestDetails
.
bankIfscCode
??
"-"
;
bankHolderName
.
text
=
_requestDetails
.
bankAccountHolderName
??
"-"
;
notifyListeners
();
}
Future
<
void
>
approveRejectPaymentRequestAPIFunction
(
context
,
payment_request_id
,
)
async
{
try
{
var
provider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
final
data
=
await
ApiCalling
.
approveRejectPaymentRequestAPI
(
provider
.
empId
,
provider
.
session
,
payment_request_id
,
);
if
(
data
!=
null
)
{
if
(
data
.
error
==
"0"
)
{
_paymentModes
=
data
.
paymentModes
!;
_paymentModes
=
data
.
paymentModes
!;
_paymentAccounts
=
data
.
paymentAccounts
!;
_paymentAccounts
=
data
.
paymentAccounts
!;
_paymentRequestDetails
=
data
.
paymentRequestDetails
!;
_paymentRequestDetails
=
data
.
paymentRequestDetails
!;
notifyListeners
();
notifyListeners
();
}
}
}
}
}
catch
(
e
,
s
){}
}
catch
(
e
,
s
)
{}
}
}
Future
<
void
>
paymentrequisitionRejectSubmitAPIFunction
(
Future
<
void
>
paymentrequisitionRejectSubmitAPIFunction
(
context
,
mode
,
payment_request_id
,
approve_remarks
)
async
{
context
,
try
{
mode
,
var
provider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
payment_request_id
,
final
data
=
await
ApiCalling
.
RejectPaymentRequestSubmitAPI
(
provider
.
empId
,
provider
.
session
,
mode
,
payment_request_id
,
approve_remarks
);
approve_remarks
,
}
catch
(
e
,
s
){
)
async
{
try
{
var
provider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
final
data
=
await
ApiCalling
.
RejectPaymentRequestSubmitAPI
(
provider
.
empId
,
provider
.
session
,
mode
,
payment_request_id
,
approve_remarks
,
);
if
(
data
!=
null
){
if
(
data
.
error
==
"0"
){
toast
(
context
,
data
.
message
);
Navigator
.
pop
(
context
);
}
}
}
}
}
catch
(
e
,
s
)
{}
}
Future
<
void
>
paymentrequisitionApproveSubmitAPIFunction
(
context
,
mode
,
payment_request_id
,
approved_amount
,
approve_remarks
,
proposed_payment_account_id
)
async
{
Future
<
void
>
paymentrequisitionApproveSubmitAPIFunction
(
try
{
context
,
var
provider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
mode
,
final
data
=
await
ApiCalling
.
ApprovePaymentRequestSubmitAPI
(
provider
.
empId
,
provider
.
session
,
mode
,
payment_request_id
,
approved_amount
,
approve_remarks
,
proposed_payment_account_id
);
payment_request_id
,
}
catch
(
e
,
s
){
approved_amount
,
approve_remarks
,
proposed_payment_account_id
,
)
async
{
try
{
var
provider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
final
data
=
await
ApiCalling
.
ApprovePaymentRequestSubmitAPI
(
provider
.
empId
,
provider
.
session
,
mode
,
payment_request_id
,
approved_amount
,
approve_remarks
,
proposed_payment_account_id
,
);
if
(
data
!=
null
){
if
(
data
.
error
==
"0"
){
toast
(
context
,
data
.
message
);
Navigator
.
pop
(
context
);
}
}
}
}
Future
<
void
>
paymentrequisitionProcessSubmitAPIFunction
(
context
,
mode
,
payment_request_id
,
approved_amount
,
approve_remarks
,
proposed_payment_account_id
,
payment_account_id
,
processing_remarks
,
attachment
)
async
{
}
catch
(
e
,
s
)
{}
try
{
}
var
provider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
final
data
=
await
ApiCalling
.
processApproveRejectPaymentRequestSubmitAPI
(
provider
.
empId
,
provider
.
session
,
mode
,
payment_request_id
,
approved_amount
,
approve_remarks
,
proposed_payment_account_id
,
payment_account_id
,
processing_remarks
,
attachment
);
Future
<
void
>
paymentrequisitionProcessSubmitAPIFunction
(
}
catch
(
e
,
s
){
context
,
mode
,
payment_request_id
,
payment_account_id
,
processing_remarks
,
attachment
,
)
async
{
try
{
var
provider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
final
data
=
await
ApiCalling
.
processApproveRejectPaymentRequestSubmitAPI
(
provider
.
empId
,
provider
.
session
,
mode
,
payment_request_id
,
payment_account_id
,
processing_remarks
,
attachment
,
);
if
(
data
!=
null
){
if
(
data
.
error
==
"0"
){
toast
(
context
,
data
.
message
);
Navigator
.
pop
(
context
);
}
}
}
}
catch
(
e
,
s
)
{}
}
}
}
}
lib/Notifiers/financeProvider/RequestionListProvider.dart
View file @
64c42cd9
...
@@ -6,10 +6,12 @@ import 'package:flutter/foundation.dart';
...
@@ -6,10 +6,12 @@ import 'package:flutter/foundation.dart';
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/services.dart'
;
import
'package:flutter/services.dart'
;
import
'package:flutter_image_compress/flutter_image_compress.dart'
;
import
'package:flutter_image_compress/flutter_image_compress.dart'
;
import
'package:generp/Models/financeModels/addDirectPaymentResponse.dart'
;
import
'package:generp/Notifiers/HomeScreenNotifier.dart'
;
import
'package:generp/Notifiers/HomeScreenNotifier.dart'
;
import
'package:generp/Utils/commonServices.dart'
;
import
'package:generp/Utils/commonServices.dart'
;
import
'package:generp/services/api_calling.dart'
;
import
'package:generp/services/api_calling.dart'
;
import
'package:image_picker/image_picker.dart'
;
import
'package:image_picker/image_picker.dart'
;
import
'package:intl/intl.dart'
;
import
'package:permission_handler/permission_handler.dart'
;
import
'package:permission_handler/permission_handler.dart'
;
import
'package:provider/provider.dart'
;
import
'package:provider/provider.dart'
;
import
'package:share_plus/share_plus.dart'
;
import
'package:share_plus/share_plus.dart'
;
...
@@ -24,8 +26,6 @@ import 'package:pdf/widgets.dart' as pw;
...
@@ -24,8 +26,6 @@ import 'package:pdf/widgets.dart' as pw;
import
'package:printing/printing.dart'
;
import
'package:printing/printing.dart'
;
class
Requestionlistprovider
extends
ChangeNotifier
{
class
Requestionlistprovider
extends
ChangeNotifier
{
TextEditingController
reqPurposeController
=
TextEditingController
();
TextEditingController
reqPurposeController
=
TextEditingController
();
TextEditingController
descController
=
TextEditingController
();
TextEditingController
descController
=
TextEditingController
();
TextEditingController
amountController
=
TextEditingController
();
TextEditingController
amountController
=
TextEditingController
();
...
@@ -35,11 +35,116 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -35,11 +35,116 @@ class Requestionlistprovider extends ChangeNotifier {
TextEditingController
bankIfscController
=
TextEditingController
();
TextEditingController
bankIfscController
=
TextEditingController
();
TextEditingController
bankAcHolderController
=
TextEditingController
();
TextEditingController
bankAcHolderController
=
TextEditingController
();
TextEditingController
bankUpiController
=
TextEditingController
();
TextEditingController
bankUpiController
=
TextEditingController
();
TextEditingController
paymentReferenceController
=
TextEditingController
();
// Date picker state
DateTime
?
_date
;
String
?
_formattedDate
;
List
<
Accounts
>
_accounts
=
[];
List
<
Accounts
>
_accounts
=
[];
List
<
PaymentModes
>
_paymentModes
=
[];
List
<
PaymentModes
>
_paymentModes
=
[];
List
<
String
>
_requestingPurposes
=
[];
List
<
String
>
_requestingPurposes
=
[];
List
<
RequistionList
>
_requisitionList
=
[];
List
<
RequistionList
>
_requisitionList
=
[];
List
<
DirectAccounts
>
_directAccounts
=
[];
List
<
DirectPaymentAccounts
>
_directPaymentAccounts
=
[];
List
<
DirectPaymentModes
>
_directPaymentModes
=
[];
DirectAccounts
?
_selectedDirectAccounts
;
DirectPaymentAccounts
?
_selectDirectPaymentAccounts
;
DirectPaymentModes
?
_selectDirectPaymentModes
;
String
_directAccountID
=
""
;
String
_directAccountValue
=
""
;
String
_directPaymentAccountsID
=
""
;
String
_directPaymentAccountsValue
=
""
;
String
_directPaymentModesID
=
""
;
String
_directPaymentModesValues
=
""
;
List
<
DirectAccounts
>
get
directAccounts
=>
_directAccounts
;
List
<
DirectPaymentAccounts
>
get
directPaymentAccounts
=>
_directPaymentAccounts
;
List
<
DirectPaymentModes
>
get
directPaymentModes
=>
_directPaymentModes
;
DirectAccounts
?
get
selectDirectAccounts
=>
_selectedDirectAccounts
;
DirectPaymentAccounts
?
get
selectDirectPaymentAccounts
=>
_selectDirectPaymentAccounts
;
DirectPaymentModes
?
get
selectDirectPaymentModes
=>
_selectDirectPaymentModes
;
String
get
directAccountId
=>
_directAccountID
;
String
get
directAccountValue
=>
_directAccountValue
;
String
get
directPaymentAccountsID
=>
_directPaymentAccountsID
;
String
get
directPaymentAccountsValue
=>
_directPaymentAccountsValue
;
String
get
directPaymentModesID
=>
_directPaymentModesID
;
String
get
directPaymentModesValues
=>
_directPaymentModesValues
;
// Date picker methods
void
setDate
(
DateTime
newDate
)
{
_date
=
newDate
;
_formattedDate
=
DateFormat
(
'yyyy-MM-dd'
).
format
(
newDate
);
notifyListeners
();
}
set
selectDirectAccounts
(
DirectAccounts
?
value
)
{
_selectedDirectAccounts
=
value
;
_directAccountID
=
value
!.
id
!;
_directAccountValue
=
value
!.
name
!;
notifyListeners
();
}
set
selectDirectPaymentAccounts
(
DirectPaymentAccounts
?
value
)
{
_selectDirectPaymentAccounts
=
value
;
_directPaymentAccountsID
=
value
!.
id
!;
_directPaymentAccountsValue
=
value
!.
name
!;
notifyListeners
();
}
set
selectDirectPaymentModes
(
DirectPaymentModes
?
value
)
{
_selectDirectPaymentModes
=
value
;
_directPaymentModesID
=
value
!.
id
!;
_directPaymentModesValues
=
value
!.
name
!;
notifyListeners
();
}
set
directAccountId
(
String
value
)
{
_directAccountID
=
value
;
notifyListeners
();
}
set
directAccountValue
(
String
value
)
{
_directAccountValue
=
value
;
notifyListeners
();
}
set
directPaymentAccountsID
(
String
value
)
{
_directPaymentAccountsID
=
value
;
notifyListeners
();
}
set
directPaymentAccountsValue
(
String
value
)
{
_directPaymentAccountsValue
=
value
;
notifyListeners
();
}
set
directPaymentModesID
(
String
value
)
{
_directPaymentModesID
=
value
;
notifyListeners
();
}
set
directPaymentModesValues
(
String
value
)
{
_directPaymentModesValues
=
value
;
notifyListeners
();
}
Accounts
?
_selectedAccounts
;
Accounts
?
_selectedAccounts
;
PaymentModes
?
_selectedPayment
;
PaymentModes
?
_selectedPayment
;
String
?
_selectReqPurpose
;
String
?
_selectReqPurpose
;
...
@@ -96,6 +201,7 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -96,6 +201,7 @@ class Requestionlistprovider extends ChangeNotifier {
List
<
String
>
get
requestingPurposes
=>
_requestingPurposes
;
List
<
String
>
get
requestingPurposes
=>
_requestingPurposes
;
List
<
RequistionList
>
get
requisitionList
=>
_requisitionList
;
List
<
RequistionList
>
get
requisitionList
=>
_requisitionList
;
String
?
get
formattedDate
=>
_formattedDate
;
// bool get submitClicked => _submitClicked;
// bool get submitClicked => _submitClicked;
// set submitClicked(bool value){
// set submitClicked(bool value){
...
@@ -236,7 +342,9 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -236,7 +342,9 @@ class Requestionlistprovider extends ChangeNotifier {
homeProvider
.
session
,
homeProvider
.
session
,
mode
,
mode
,
_accountId
,
_accountId
,
[
"self"
,
"admin"
].
contains
(
mode
)
?
_selectReqPurpose:
reqPurposeController
.
text
,
[
"self"
,
"admin"
].
contains
(
mode
)
?
_selectReqPurpose
:
reqPurposeController
.
text
,
descController
.
text
,
descController
.
text
,
amountController
.
text
,
amountController
.
text
,
_paymentModeId
,
_paymentModeId
,
...
@@ -246,15 +354,99 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -246,15 +354,99 @@ class Requestionlistprovider extends ChangeNotifier {
bankIfscController
.
text
,
bankIfscController
.
text
,
bankAcHolderController
.
text
,
bankAcHolderController
.
text
,
bankUpiController
.
text
,
bankUpiController
.
text
,
_image
_image
,
);
);
if
(
data
!=
null
)
{
if
(
data
!=
null
)
{
if
(
data
[
'error'
]
==
"0"
)
{
if
(
data
[
'error'
]
==
"0"
)
{
print
(
data
[
'error'
]==
"0"
);
print
(
data
[
'error'
]
==
"0"
);
toast
(
context
,
"Added Successfully"
);
toast
(
context
,
"Added Successfully"
);
resetForm
();
resetForm
();
Navigator
.
pop
(
context
,
true
);
Navigator
.
pop
(
context
,
true
);
notifyListeners
();
}
else
{}
}
}
catch
(
e
,
s
)
{}
}
Future
<
void
>
addDirectPaymentRequestionViewAPI
(
context
)
async
{
try
{
var
homeProvider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
,
);
final
data
=
await
ApiCalling
.
addDirectPaymentRequestionViewAPI
(
homeProvider
.
empId
,
homeProvider
.
session
,
);
if
(
data
!=
null
)
{
if
(
data
.
error
==
"0"
)
{
_directPaymentAccounts
=
data
.
paymentAccounts
!;
_directPaymentModes
=
data
.
paymentModes
!;
_directAccounts
=
data
.
accounts
!;
if
(
_selectedDirectAccounts
!=
null
&&
!
_directAccounts
.
contains
(
_selectedDirectAccounts
))
{
_selectedDirectAccounts
=
null
;
_directAccountID
=
""
;
_directAccountValue
=
""
;
}
if
(
_selectDirectPaymentModes
!=
null
&&
!
_directPaymentModes
.
contains
(
_selectDirectPaymentModes
))
{
_selectDirectPaymentModes
=
null
;
_directPaymentModesID
=
""
;
_directPaymentModesValues
=
""
;
}
if
(
_selectDirectPaymentAccounts
!=
null
&&
!
_directPaymentAccounts
.
contains
(
_selectDirectPaymentAccounts
))
{
_selectDirectPaymentAccounts
=
null
;
_directPaymentAccountsID
=
""
;
_directPaymentAccountsValue
=
""
;
}
notifyListeners
();
}
else
{}
}
}
catch
(
e
,
s
)
{}
}
Future
<
void
>
addDirectPaymentRequestionSubmitAPI
(
context
,
payment_date
)
async
{
try
{
// _submitClicked = true;
if
(!
validateDirectForm
(
context
))
{
// _submitClicked = false;
return
;
}
var
homeProvider
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
,
);
final
data
=
await
ApiCalling
.
addDirectPaymentRequestionSubmitAPI
(
homeProvider
.
empId
,
homeProvider
.
session
,
_directAccountID
,
_directPaymentAccountsID
,
descController
.
text
,
_directPaymentModesID
,
amountController
.
text
,
payment_date
,
paymentReferenceController
.
text
,
bankNameController
.
text
,
bankBranchController
.
text
,
bankAccNumberController
.
text
,
bankIfscController
.
text
,
bankAcHolderController
.
text
,
bankUpiController
.
text
,
_image
);
if
(
data
!=
null
)
{
if
(
data
[
'error'
]
==
"0"
)
{
print
(
data
[
'error'
]
==
"0"
);
toast
(
context
,
"Added Successfully"
);
resetForm
();
Navigator
.
pop
(
context
,
true
);
notifyListeners
();
notifyListeners
();
}
else
{}
}
else
{}
}
}
...
@@ -280,7 +472,68 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -280,7 +472,68 @@ class Requestionlistprovider extends ChangeNotifier {
}
}
}
catch
(
e
,
s
)
{}
}
catch
(
e
,
s
)
{}
}
}
void
showDatePickerDialog
(
BuildContext
context
)
{
showCupertinoModalPopup
<
void
>(
context:
context
,
builder:
(
BuildContext
context
)
=>
Container
(
height:
216
,
padding:
const
EdgeInsets
.
only
(
top:
6.0
),
margin:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
).
viewInsets
.
bottom
,
),
color:
CupertinoColors
.
systemBackground
.
resolveFrom
(
context
),
child:
SafeArea
(
top:
false
,
child:
Column
(
children:
[
Expanded
(
flex:
1
,
child:
SizedBox
(
height:
40
,
child:
Row
(
mainAxisAlignment:
MainAxisAlignment
.
spaceBetween
,
children:
[
CupertinoButton
(
child:
Text
(
'Cancel'
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
),
),
onPressed:
()
{
Navigator
.
pop
(
context
);
},
),
CupertinoButton
(
child:
Text
(
'Done'
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
),
),
onPressed:
()
{
Navigator
.
pop
(
context
);
},
),
],
),
),
),
Expanded
(
flex:
3
,
child:
CupertinoDatePicker
(
minimumDate:
_date
??
DateTime
.
now
(),
initialDateTime:
_date
??
DateTime
.
now
(),
mode:
CupertinoDatePickerMode
.
date
,
use24hFormat:
true
,
showDayOfWeek:
true
,
onDateTimeChanged:
(
DateTime
newDate
)
{
setDate
(
newDate
);
},
),
),
],
),
),
),
);
}
List
<
List
<
String
>>
prepareExportData
()
{
List
<
List
<
String
>>
prepareExportData
()
{
final
headers
=
[
final
headers
=
[
'ID'
,
'ID'
,
...
@@ -294,7 +547,11 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -294,7 +547,11 @@ class Requestionlistprovider extends ChangeNotifier {
'Date'
,
'Date'
,
];
];
final
rows
=
requisitionList
.
map
((
item
)
=>
[
final
rows
=
requisitionList
.
map
(
(
item
)
=>
[
item
.
id
??
''
,
item
.
id
??
''
,
item
.
accountName
??
''
,
item
.
accountName
??
''
,
item
.
branch
??
''
,
item
.
branch
??
''
,
...
@@ -304,16 +561,19 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -304,16 +561,19 @@ class Requestionlistprovider extends ChangeNotifier {
item
.
requestMode
??
''
,
item
.
requestMode
??
''
,
item
.
status
??
''
,
item
.
status
??
''
,
item
.
date
??
''
,
item
.
date
??
''
,
]).
toList
();
],
)
.
toList
();
return
[
headers
,
...
rows
];
return
[
headers
,
...
rows
];
}
}
void
copyToClipboard
(
BuildContext
context
)
async
{
void
copyToClipboard
(
BuildContext
context
)
async
{
try
{
try
{
if
(
requisitionList
.
isEmpty
)
{
if
(
requisitionList
.
isEmpty
)
{
ScaffoldMessenger
.
of
(
context
).
showSnackBar
(
ScaffoldMessenger
.
of
(
SnackBar
(
content:
Text
(
"No data to copy"
))
,
context
,
);
).
showSnackBar
(
SnackBar
(
content:
Text
(
"No data to copy"
))
);
return
;
return
;
}
}
final
data
=
prepareExportData
();
final
data
=
prepareExportData
();
...
@@ -331,8 +591,12 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -331,8 +591,12 @@ class Requestionlistprovider extends ChangeNotifier {
try
{
try
{
if
(
Platform
.
isAndroid
)
{
if
(
Platform
.
isAndroid
)
{
// Request storage permission for Android
// Request storage permission for Android
if
(
await
Permission
.
storage
.
request
().
isGranted
||
if
(
await
Permission
.
storage
await
Permission
.
manageExternalStorage
.
request
().
isGranted
)
{
.
request
()
.
isGranted
||
await
Permission
.
manageExternalStorage
.
request
()
.
isGranted
)
{
final
dir
=
await
getApplicationDocumentsDirectory
();
final
dir
=
await
getApplicationDocumentsDirectory
();
if
(
dir
!=
null
)
{
if
(
dir
!=
null
)
{
print
(
'Using Downloads directory:
${dir.path}
'
);
print
(
'Using Downloads directory:
${dir.path}
'
);
...
@@ -368,9 +632,9 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -368,9 +632,9 @@ class Requestionlistprovider extends ChangeNotifier {
Future
<
void
>
downloadCSV
(
BuildContext
context
)
async
{
Future
<
void
>
downloadCSV
(
BuildContext
context
)
async
{
try
{
try
{
if
(
requisitionList
.
isEmpty
)
{
if
(
requisitionList
.
isEmpty
)
{
ScaffoldMessenger
.
of
(
context
).
showSnackBar
(
ScaffoldMessenger
.
of
(
SnackBar
(
content:
Text
(
"No data to export"
))
,
context
,
);
).
showSnackBar
(
SnackBar
(
content:
Text
(
"No data to export"
))
);
return
;
return
;
}
}
final
data
=
prepareExportData
();
final
data
=
prepareExportData
();
...
@@ -386,7 +650,6 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -386,7 +650,6 @@ class Requestionlistprovider extends ChangeNotifier {
toast
(
context
,
"CSV Downloaded"
);
toast
(
context
,
"CSV Downloaded"
);
}
catch
(
e
)
{
}
catch
(
e
)
{
print
(
'Error downloading CSV:
$e
'
);
print
(
'Error downloading CSV:
$e
'
);
}
}
}
}
...
@@ -415,7 +678,6 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -415,7 +678,6 @@ class Requestionlistprovider extends ChangeNotifier {
toast
(
context
,
(
"XLSX Downloaded and opened"
));
toast
(
context
,
(
"XLSX Downloaded and opened"
));
}
catch
(
e
)
{
}
catch
(
e
)
{
print
(
'Error downloading XLSX:
$e
'
);
print
(
'Error downloading XLSX:
$e
'
);
}
}
}
}
...
@@ -428,9 +690,7 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -428,9 +690,7 @@ class Requestionlistprovider extends ChangeNotifier {
final
data
=
prepareExportData
();
final
data
=
prepareExportData
();
final
pdf
=
pw
.
Document
();
final
pdf
=
pw
.
Document
();
pdf
.
addPage
(
pdf
.
addPage
(
pw
.
Page
(
pw
.
Page
(
build:
(
context
)
=>
pw
.
Table
.
fromTextArray
(
data:
data
)),
build:
(
context
)
=>
pw
.
Table
.
fromTextArray
(
data:
data
),
),
);
);
final
dirPath
=
await
getSaveDirectory
();
final
dirPath
=
await
getSaveDirectory
();
final
file
=
File
(
'
$dirPath
/requisition_data.pdf'
);
final
file
=
File
(
'
$dirPath
/requisition_data.pdf'
);
...
@@ -441,7 +701,6 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -441,7 +701,6 @@ class Requestionlistprovider extends ChangeNotifier {
// await OpenFile.open(file.path); // Open the file
// await OpenFile.open(file.path); // Open the file
// await Share.shareXFiles([file.path], text: 'Requisition Data PDF'); // Share the file
// await Share.shareXFiles([file.path], text: 'Requisition Data PDF'); // Share the file
toast
(
context
,
"PDF Downloaded "
);
toast
(
context
,
"PDF Downloaded "
);
}
catch
(
e
)
{
}
catch
(
e
)
{
print
(
'Error downloading PDF:
$e
'
);
print
(
'Error downloading PDF:
$e
'
);
}
}
...
@@ -456,9 +715,7 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -456,9 +715,7 @@ class Requestionlistprovider extends ChangeNotifier {
final
data
=
prepareExportData
();
final
data
=
prepareExportData
();
final
pdf
=
pw
.
Document
();
final
pdf
=
pw
.
Document
();
pdf
.
addPage
(
pdf
.
addPage
(
pw
.
Page
(
pw
.
Page
(
build:
(
context
)
=>
pw
.
Table
.
fromTextArray
(
data:
data
)),
build:
(
context
)
=>
pw
.
Table
.
fromTextArray
(
data:
data
),
),
);
);
await
Printing
.
layoutPdf
(
await
Printing
.
layoutPdf
(
onLayout:
(
PdfPageFormat
format
)
async
=>
pdf
.
save
(),
onLayout:
(
PdfPageFormat
format
)
async
=>
pdf
.
save
(),
...
@@ -568,7 +825,6 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -568,7 +825,6 @@ class Requestionlistprovider extends ChangeNotifier {
notifyListeners
();
notifyListeners
();
}
}
bool
validateForm
(
BuildContext
context
,
String
mode
)
{
bool
validateForm
(
BuildContext
context
,
String
mode
)
{
// Reset all errors
// Reset all errors
selectAccountError
=
null
;
selectAccountError
=
null
;
...
@@ -597,18 +853,24 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -597,18 +853,24 @@ class Requestionlistprovider extends ChangeNotifier {
isValid
=
false
;
isValid
=
false
;
}
}
}
else
{
}
else
{
if
(
reqPurposeController
.
text
.
trim
().
isEmpty
)
{
if
(
reqPurposeController
.
text
.
trim
()
.
isEmpty
)
{
reqPurposeError
=
"Please enter a requisition purpose"
;
reqPurposeError
=
"Please enter a requisition purpose"
;
isValid
=
false
;
isValid
=
false
;
}
}
}
}
if
(
descController
.
text
.
trim
().
isEmpty
)
{
if
(
descController
.
text
.
trim
()
.
isEmpty
)
{
descriptionError
=
"Please enter a description"
;
descriptionError
=
"Please enter a description"
;
isValid
=
false
;
isValid
=
false
;
}
}
if
(
amountController
.
text
.
trim
().
isEmpty
)
{
if
(
amountController
.
text
.
trim
()
.
isEmpty
)
{
amountError
=
"Please enter an amount"
;
amountError
=
"Please enter an amount"
;
isValid
=
false
;
isValid
=
false
;
}
}
...
@@ -619,30 +881,42 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -619,30 +881,42 @@ class Requestionlistprovider extends ChangeNotifier {
}
}
if
([
"Cheque"
,
"RTGS"
,
"IMPS"
,
"NEFT"
].
contains
(
_paymentModeValue
))
{
if
([
"Cheque"
,
"RTGS"
,
"IMPS"
,
"NEFT"
].
contains
(
_paymentModeValue
))
{
if
(
bankNameController
.
text
.
trim
().
isEmpty
)
{
if
(
bankNameController
.
text
.
trim
()
.
isEmpty
)
{
bankNameError
=
"Please enter bank name"
;
bankNameError
=
"Please enter bank name"
;
isValid
=
false
;
isValid
=
false
;
}
}
if
(
bankBranchController
.
text
.
trim
().
isEmpty
)
{
if
(
bankBranchController
.
text
.
trim
()
.
isEmpty
)
{
bankBranchError
=
"Please enter bank branch"
;
bankBranchError
=
"Please enter bank branch"
;
isValid
=
false
;
isValid
=
false
;
}
}
if
(
bankAccNumberController
.
text
.
trim
().
isEmpty
)
{
if
(
bankAccNumberController
.
text
.
trim
()
.
isEmpty
)
{
bankNumberError
=
"Please enter account number"
;
bankNumberError
=
"Please enter account number"
;
isValid
=
false
;
isValid
=
false
;
}
}
if
(
bankIfscController
.
text
.
trim
().
isEmpty
)
{
if
(
bankIfscController
.
text
.
trim
()
.
isEmpty
)
{
bankIFSCError
=
"Please enter IFSC code"
;
bankIFSCError
=
"Please enter IFSC code"
;
isValid
=
false
;
isValid
=
false
;
}
}
if
(
bankAcHolderController
.
text
.
trim
().
isEmpty
)
{
if
(
bankAcHolderController
.
text
.
trim
()
.
isEmpty
)
{
bankHolderError
=
"Please enter account holder name"
;
bankHolderError
=
"Please enter account holder name"
;
isValid
=
false
;
isValid
=
false
;
}
}
}
}
if
(
_paymentModeValue
==
"UPI"
)
{
if
(
_paymentModeValue
==
"UPI"
)
{
if
(
bankUpiController
.
text
.
trim
().
isEmpty
)
{
if
(
bankUpiController
.
text
.
trim
()
.
isEmpty
)
{
UPIError
=
"Please enter UPI ID"
;
UPIError
=
"Please enter UPI ID"
;
isValid
=
false
;
isValid
=
false
;
}
}
...
@@ -657,6 +931,15 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -657,6 +931,15 @@ class Requestionlistprovider extends ChangeNotifier {
return
isValid
;
return
isValid
;
}
}
bool
validateDirectForm
(
BuildContext
context
)
{
bool
isValid
=
true
;
notifyListeners
();
return
isValid
;
}
void
updateReqPupose
(
String
value
)
{
void
updateReqPupose
(
String
value
)
{
reqPurposeError
=
null
;
reqPurposeError
=
null
;
notifyListeners
();
notifyListeners
();
...
@@ -666,33 +949,39 @@ class Requestionlistprovider extends ChangeNotifier {
...
@@ -666,33 +949,39 @@ class Requestionlistprovider extends ChangeNotifier {
descriptionError
=
null
;
descriptionError
=
null
;
notifyListeners
();
notifyListeners
();
}
}
void
updateAmount
(
String
value
)
{
void
updateAmount
(
String
value
)
{
amountError
=
null
;
amountError
=
null
;
notifyListeners
();
notifyListeners
();
}
}
void
updateBankName
(
String
value
)
{
void
updateBankName
(
String
value
)
{
bankNameError
=
null
;
bankNameError
=
null
;
notifyListeners
();
notifyListeners
();
}
}
void
updateBankBranch
(
String
value
)
{
void
updateBankBranch
(
String
value
)
{
bankBranchError
=
null
;
bankBranchError
=
null
;
notifyListeners
();
notifyListeners
();
}
}
void
updateNumber
(
String
value
)
{
void
updateNumber
(
String
value
)
{
bankNumberError
=
null
;
bankNumberError
=
null
;
notifyListeners
();
notifyListeners
();
}
}
void
updateIFSC
(
String
value
)
{
void
updateIFSC
(
String
value
)
{
bankIFSCError
=
null
;
bankIFSCError
=
null
;
notifyListeners
();
notifyListeners
();
}
}
void
updateHolder
(
String
value
)
{
void
updateHolder
(
String
value
)
{
bankHolderError
=
null
;
bankHolderError
=
null
;
notifyListeners
();
notifyListeners
();
}
}
void
updateUPI
(
String
value
)
{
void
updateUPI
(
String
value
)
{
UPIError
=
null
;
UPIError
=
null
;
notifyListeners
();
notifyListeners
();
}
}
}
}
lib/Notifiers/financeProvider/paymentReceiptsProvider.dart
0 → 100644
View file @
64c42cd9
import
'package:flutter/foundation.dart'
;
import
'dart:io'
;
import
'package:csv/csv.dart'
;
import
'package:excel/excel.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/services.dart'
;
import
'package:generp/Notifiers/HomeScreenNotifier.dart'
;
import
'package:generp/services/api_calling.dart'
;
import
'package:path_provider/path_provider.dart'
;
import
'package:pdf/pdf.dart'
;
import
'package:pdf/widgets.dart'
as
pw
;
import
'package:permission_handler/permission_handler.dart'
;
import
'package:printing/printing.dart'
;
import
'package:provider/provider.dart'
;
import
'../../Models/financeModels/paymentRequisitionPaymentsReceiptsDetailsResponse.dart'
;
import
'../../Models/financeModels/paymentRequisitionPaymentsReceiptsListResponse.dart'
;
import
'../../Utils/commonServices.dart'
;
class
Paymentreceiptsprovider
extends
ChangeNotifier
{
List
<
ReceiptsList
>
_receiptsList
=
[];
ReceiptDetails
_receiptDetails
=
ReceiptDetails
();
List
<
String
>
_headings
=
[];
List
<
String
>
_subHeadings
=
[];
List
<
ReceiptsList
>
get
receiptsList
=>
_receiptsList
;
ReceiptDetails
get
receiptDetails
=>
_receiptDetails
;
List
<
String
>
get
Headings
=>
_headings
;
List
<
String
>
get
subHeadings
=>
_subHeadings
;
Future
<
void
>
paymentsListAPI
(
context
)
async
{
try
{
var
prov
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
final
data
=
await
ApiCalling
.
paymentRequisitionPaymentReceiptListAPI
(
prov
.
empId
,
prov
.
session
);
if
(
data
!=
null
){
if
(
data
.
error
==
"0"
){
_receiptsList
=
data
.
receiptsList
!;
notifyListeners
();
}
}
}
catch
(
e
,
s
){
}
}
Future
<
void
>
paymentsListDetailsAPI
(
context
,
paymentId
)
async
{
try
{
var
prov
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
final
data
=
await
ApiCalling
.
paymentRequisitionPaymentReceiptDetailsAPI
(
prov
.
empId
,
prov
.
session
,
paymentId
);
if
(
data
!=
null
){
if
(
data
.
error
==
"0"
){
_receiptDetails
=
data
.
receiptDetails
!;
_headings
=
[
"Payment Mode"
,
"Created Employee"
,
"Attachment"
,
"Receipt Date"
,
"Note"
,
"Bank Name"
,
"Bank Branch Name"
,
"Bank IFSC Code"
,
"Bank Holder Name"
,
"Bank Account Number"
,
"Bank UPI ID"
,
"Payment Reference Number"
,
"Created Date Time"
,
"Updated Date Time"
];
_subHeadings
=
[
_receiptDetails
.
requestMode
??
"-"
,
_receiptDetails
.
createdEmployee
??
"-"
,
_receiptDetails
.
attachmentDirFilePath
??
"-"
,
_receiptDetails
.
receiptDate
??
"-"
,
_receiptDetails
.
description
??
"-"
,
_receiptDetails
.
bankName
??
"-"
,
_receiptDetails
.
bankBranchName
??
"-"
,
_receiptDetails
.
bankIfscCode
??
"-"
,
_receiptDetails
.
bankAccountHolderName
??
"-"
,
_receiptDetails
.
bankAccountNumber
??
"-"
,
_receiptDetails
.
bankUpiId
??
"-"
,
_receiptDetails
.
paymentReferenceNumber
??
"-"
,
_receiptDetails
.
createdDatetime
??
"-"
,
_receiptDetails
.
updatedDatetime
??
"-"
];
notifyListeners
();
}
}
}
catch
(
e
,
s
){
}
}
List
<
List
<
String
>>
prepareExportData
()
{
final
headers
=
[
'ID'
,
'Payment Account'
,
'Amount'
,
'Branch'
,
'Account Number'
,
'Description'
,
'Mode'
,
'Payment Reference Number'
,
'Created Employee'
,
'Date'
,
];
final
rows
=
receiptsList
.
map
(
(
item
)
=>
[
item
.
id
??
''
,
item
.
payAccount
??
''
,
item
.
amount
??
''
,
item
.
bankName
??
""
,
item
.
bankBranchName
??
''
,
item
.
bankAccountNumber
??
''
,
item
.
description
??
''
,
item
.
requestMode
??
''
,
item
.
paymentReferenceNumber
??
''
,
item
.
createdEmployee
??
''
,
item
.
createdDatetime
??
''
,
],
)
.
toList
();
return
[
headers
,
...
rows
];
}
void
copyToClipboard
(
BuildContext
context
)
async
{
try
{
if
(
receiptsList
.
isEmpty
)
{
ScaffoldMessenger
.
of
(
context
,
).
showSnackBar
(
SnackBar
(
content:
Text
(
"No data to copy"
)));
return
;
}
final
data
=
prepareExportData
();
String
raw
=
data
.
map
((
row
)
=>
row
.
join
(
'
\t
'
)).
join
(
'
\n
'
);
print
(
'Clipboard data:
$raw
'
);
await
Clipboard
.
setData
(
ClipboardData
(
text:
raw
));
toast
(
context
,
"Copied to Clipboard"
);
}
catch
(
e
)
{
print
(
'Error copying to clipboard:
$e
'
);
}
}
Future
<
String
>
getSaveDirectory
()
async
{
// Try Downloads directory first
try
{
if
(
Platform
.
isAndroid
)
{
// Request storage permission for Android
if
(
await
Permission
.
storage
.
request
()
.
isGranted
||
await
Permission
.
manageExternalStorage
.
request
()
.
isGranted
)
{
final
dir
=
await
getApplicationDocumentsDirectory
();
if
(
dir
!=
null
)
{
print
(
'Using Downloads directory:
${dir.path}
'
);
return
dir
.
path
;
}
}
}
}
catch
(
e
)
{
print
(
'Error accessing Downloads directory:
$e
'
);
}
// Fallback to shared Documents directory
try
{
final
dir
=
await
getDownloadsDirectory
();
if
(
dir
!=
null
)
{
final
customDir
=
Directory
(
'
${dir.path}
/RequisitionData'
);
if
(!
await
customDir
.
exists
())
{
await
customDir
.
create
(
recursive:
true
);
}
print
(
'Using custom Documents directory:
${customDir.path}
'
);
return
customDir
.
path
;
}
}
catch
(
e
)
{
print
(
'Error accessing Documents directory:
$e
'
);
}
// Final fallback to app's Documents directory
final
dir
=
await
getApplicationDocumentsDirectory
();
print
(
'Using app Documents directory:
${dir.path}
'
);
return
dir
.
path
;
}
Future
<
void
>
downloadCSV
(
BuildContext
context
)
async
{
try
{
if
(
receiptsList
.
isEmpty
)
{
ScaffoldMessenger
.
of
(
context
,
).
showSnackBar
(
SnackBar
(
content:
Text
(
"No data to export"
)));
return
;
}
final
data
=
prepareExportData
();
final
csvData
=
const
ListToCsvConverter
().
convert
(
data
);
final
dirPath
=
await
getSaveDirectory
();
final
file
=
File
(
'
$dirPath
/requisition_data.csv'
);
await
file
.
writeAsString
(
csvData
);
print
(
'CSV saved at:
${file.path}
'
);
bool
exists
=
await
file
.
exists
();
print
(
'File exists:
$exists
'
);
// await OpenFile.open(file.path); // Open the file
// await Share.share(file.path); // Share the file
toast
(
context
,
"CSV Downloaded"
);
}
catch
(
e
)
{
print
(
'Error downloading CSV:
$e
'
);
}
}
Future
<
void
>
downloadXLS
(
BuildContext
context
)
async
{
try
{
if
(
receiptsList
.
isEmpty
)
{
toast
(
context
,
"No Data to export"
);
return
;
}
final
data
=
prepareExportData
();
var
excel
=
Excel
.
createExcel
();
Sheet
sheet
=
excel
[
'Sheet1'
];
for
(
var
row
in
data
)
{
sheet
.
appendRow
(
row
.
map
((
cell
)
=>
TextCellValue
(
cell
)).
toList
());
}
final
dirPath
=
await
getSaveDirectory
();
final
file
=
File
(
'
$dirPath
/requisition_data.xlsx'
);
final
bytes
=
excel
.
encode
();
if
(
bytes
==
null
)
throw
Exception
(
"Excel encoding failed"
);
await
file
.
writeAsBytes
(
bytes
);
print
(
'XLSX saved at:
${file.path}
'
);
bool
exists
=
await
file
.
exists
();
print
(
'File exists:
$exists
'
);
// await OpenFile.open(file.path); // Open the file
// await Share.share([file.path], text: 'Requisition Data XLSX'); // Share the file
toast
(
context
,
(
"XLSX Downloaded and opened"
));
}
catch
(
e
)
{
print
(
'Error downloading XLSX:
$e
'
);
}
}
Future
<
void
>
downloadPDF
(
BuildContext
context
)
async
{
try
{
if
(
receiptsList
.
isEmpty
)
{
toast
(
context
,
"No Data to export"
);
return
;
}
final
data
=
prepareExportData
();
final
pdf
=
pw
.
Document
();
pdf
.
addPage
(
pw
.
Page
(
build:
(
context
)
=>
pw
.
Table
.
fromTextArray
(
data:
data
)),
);
final
dirPath
=
await
getSaveDirectory
();
final
file
=
File
(
'
$dirPath
/requisition_data.pdf'
);
await
file
.
writeAsBytes
(
await
pdf
.
save
());
print
(
'PDF saved at:
${file.path}
'
);
bool
exists
=
await
file
.
exists
();
print
(
'File exists:
$exists
'
);
// await OpenFile.open(file.path); // Open the file
// await Share.shareXFiles([file.path], text: 'Requisition Data PDF'); // Share the file
toast
(
context
,
"PDF Downloaded "
);
}
catch
(
e
)
{
print
(
'Error downloading PDF:
$e
'
);
}
}
Future
<
void
>
printData
(
BuildContext
context
)
async
{
try
{
if
(
receiptsList
.
isEmpty
)
{
toast
(
context
,
"No Data to Print"
);
return
;
}
final
data
=
prepareExportData
();
final
pdf
=
pw
.
Document
();
pdf
.
addPage
(
pw
.
Page
(
build:
(
context
)
=>
pw
.
Table
.
fromTextArray
(
data:
data
)),
);
await
Printing
.
layoutPdf
(
onLayout:
(
PdfPageFormat
format
)
async
=>
pdf
.
save
(),
);
}
catch
(
e
)
{
print
(
'Error printing data:
$e
'
);
}
}
}
\ No newline at end of file
lib/Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart
0 → 100644
View file @
64c42cd9
import
'dart:io'
;
import
'package:csv/csv.dart'
;
import
'package:excel/excel.dart'
;
import
'package:flutter/foundation.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/services.dart'
;
import
'package:generp/Models/financeModels/paymentRequisitionPaymentsDetailsResponse.dart'
;
import
'package:generp/Models/financeModels/paymentRequisitionPaymentsListResponse.dart'
;
import
'package:generp/Notifiers/HomeScreenNotifier.dart'
;
import
'package:generp/services/api_calling.dart'
;
import
'package:path_provider/path_provider.dart'
;
import
'package:pdf/pdf.dart'
;
import
'package:pdf/widgets.dart'
as
pw
;
import
'package:permission_handler/permission_handler.dart'
;
import
'package:printing/printing.dart'
;
import
'package:provider/provider.dart'
;
import
'../../Utils/commonServices.dart'
;
class
Paymentrequisitionpaymentslistprovider
extends
ChangeNotifier
{
List
<
PaymentsList
>
_paymentsList
=
[];
PaymentDetails
_paymentDetails
=
PaymentDetails
();
List
<
String
>
_headings
=
[];
List
<
String
>
_subHeadings
=
[];
List
<
PaymentsList
>
get
paymentsList
=>
_paymentsList
;
PaymentDetails
get
paymentDetails
=>
_paymentDetails
;
List
<
String
>
get
Headings
=>
_headings
;
List
<
String
>
get
subHeadings
=>
_subHeadings
;
Future
<
void
>
paymentsListAPI
(
context
)
async
{
try
{
var
prov
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
final
data
=
await
ApiCalling
.
paymentRequisitionPaymentListAPI
(
prov
.
empId
,
prov
.
session
);
if
(
data
!=
null
){
if
(
data
.
error
==
"0"
){
_paymentsList
=
data
.
paymentsList
!;
notifyListeners
();
}
}
}
catch
(
e
,
s
){
}
}
Future
<
void
>
paymentsListDetailsAPI
(
context
,
paymentId
)
async
{
try
{
var
prov
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
final
data
=
await
ApiCalling
.
paymentRequisitionPaymentDetailsAPI
(
prov
.
empId
,
prov
.
session
,
paymentId
);
if
(
data
!=
null
){
if
(
data
.
error
==
"0"
){
_paymentDetails
=
data
.
paymentDetails
!;
_headings
=
[
"From Account"
,
"Payment Mode"
,
"Created Employee"
,
"Attachment"
,
"Payment Date"
,
"Note"
,
"Bank Name"
,
"Bank Branch Name"
,
"Bank IFSC Code"
,
"Bank Holder Name"
,
"Bank Account Number"
,
"Bank UPI ID"
,
"Payment Reference Number"
,
"Created Date Time"
,
"Updated Date Time"
];
_subHeadings
=
[
_paymentDetails
.
paymentAccountName
??
"-"
,
_paymentDetails
.
mode
??
"-"
,
_paymentDetails
.
paymentEmployeeName
??
"-"
,
_paymentDetails
.
attachmentDirFilePath
??
"-"
,
_paymentDetails
.
paymentDate
??
"-"
,
_paymentDetails
.
paymentRemarks
??
"-"
,
_paymentDetails
.
bankName
??
"-"
,
_paymentDetails
.
bankBranchName
??
"-"
,
_paymentDetails
.
bankIfscCode
??
"-"
,
_paymentDetails
.
bankAccountHolderName
??
"-"
,
_paymentDetails
.
bankAccountNumber
??
"-"
,
_paymentDetails
.
bankUpiId
??
"-"
,
_paymentDetails
.
paymentReferenceNumber
??
"-"
,
_paymentDetails
.
createdDatetime
??
"-"
,
_paymentDetails
.
updatedDatetime
??
"-"
];
notifyListeners
();
}
}
}
catch
(
e
,
s
){
}
}
List
<
List
<
String
>>
prepareExportData
()
{
final
headers
=
[
'ID'
,
'Payment Account'
,
'Amount'
,
'Branch'
,
'Account Number'
,
'Description'
,
'Mode'
,
'Payment Reference Number'
,
'Created Employee'
,
'Date'
,
];
final
rows
=
paymentsList
.
map
(
(
item
)
=>
[
item
.
id
??
''
,
item
.
payAccount
??
''
,
item
.
amount
??
''
,
item
.
bankName
??
""
,
item
.
bankBranchName
??
''
,
item
.
bankAccountNumber
??
''
,
item
.
description
??
''
,
item
.
requestMode
??
''
,
item
.
paymentReferenceNumber
??
''
,
item
.
createdEmployee
??
''
,
item
.
createdDatetime
??
''
,
],
)
.
toList
();
return
[
headers
,
...
rows
];
}
void
copyToClipboard
(
BuildContext
context
)
async
{
try
{
if
(
paymentsList
.
isEmpty
)
{
ScaffoldMessenger
.
of
(
context
,
).
showSnackBar
(
SnackBar
(
content:
Text
(
"No data to copy"
)));
return
;
}
final
data
=
prepareExportData
();
String
raw
=
data
.
map
((
row
)
=>
row
.
join
(
'
\t
'
)).
join
(
'
\n
'
);
print
(
'Clipboard data:
$raw
'
);
await
Clipboard
.
setData
(
ClipboardData
(
text:
raw
));
toast
(
context
,
"Copied to Clipboard"
);
}
catch
(
e
)
{
print
(
'Error copying to clipboard:
$e
'
);
}
}
Future
<
String
>
getSaveDirectory
()
async
{
// Try Downloads directory first
try
{
if
(
Platform
.
isAndroid
)
{
// Request storage permission for Android
if
(
await
Permission
.
storage
.
request
()
.
isGranted
||
await
Permission
.
manageExternalStorage
.
request
()
.
isGranted
)
{
final
dir
=
await
getApplicationDocumentsDirectory
();
if
(
dir
!=
null
)
{
print
(
'Using Downloads directory:
${dir.path}
'
);
return
dir
.
path
;
}
}
}
}
catch
(
e
)
{
print
(
'Error accessing Downloads directory:
$e
'
);
}
// Fallback to shared Documents directory
try
{
final
dir
=
await
getDownloadsDirectory
();
if
(
dir
!=
null
)
{
final
customDir
=
Directory
(
'
${dir.path}
/RequisitionData'
);
if
(!
await
customDir
.
exists
())
{
await
customDir
.
create
(
recursive:
true
);
}
print
(
'Using custom Documents directory:
${customDir.path}
'
);
return
customDir
.
path
;
}
}
catch
(
e
)
{
print
(
'Error accessing Documents directory:
$e
'
);
}
// Final fallback to app's Documents directory
final
dir
=
await
getApplicationDocumentsDirectory
();
print
(
'Using app Documents directory:
${dir.path}
'
);
return
dir
.
path
;
}
Future
<
void
>
downloadCSV
(
BuildContext
context
)
async
{
try
{
if
(
paymentsList
.
isEmpty
)
{
ScaffoldMessenger
.
of
(
context
,
).
showSnackBar
(
SnackBar
(
content:
Text
(
"No data to export"
)));
return
;
}
final
data
=
prepareExportData
();
final
csvData
=
const
ListToCsvConverter
().
convert
(
data
);
final
dirPath
=
await
getSaveDirectory
();
final
file
=
File
(
'
$dirPath
/requisition_data.csv'
);
await
file
.
writeAsString
(
csvData
);
print
(
'CSV saved at:
${file.path}
'
);
bool
exists
=
await
file
.
exists
();
print
(
'File exists:
$exists
'
);
// await OpenFile.open(file.path); // Open the file
// await Share.share(file.path); // Share the file
toast
(
context
,
"CSV Downloaded"
);
}
catch
(
e
)
{
print
(
'Error downloading CSV:
$e
'
);
}
}
Future
<
void
>
downloadXLS
(
BuildContext
context
)
async
{
try
{
if
(
paymentsList
.
isEmpty
)
{
toast
(
context
,
"No Data to export"
);
return
;
}
final
data
=
prepareExportData
();
var
excel
=
Excel
.
createExcel
();
Sheet
sheet
=
excel
[
'Sheet1'
];
for
(
var
row
in
data
)
{
sheet
.
appendRow
(
row
.
map
((
cell
)
=>
TextCellValue
(
cell
)).
toList
());
}
final
dirPath
=
await
getSaveDirectory
();
final
file
=
File
(
'
$dirPath
/requisition_data.xlsx'
);
final
bytes
=
excel
.
encode
();
if
(
bytes
==
null
)
throw
Exception
(
"Excel encoding failed"
);
await
file
.
writeAsBytes
(
bytes
);
print
(
'XLSX saved at:
${file.path}
'
);
bool
exists
=
await
file
.
exists
();
print
(
'File exists:
$exists
'
);
// await OpenFile.open(file.path); // Open the file
// await Share.share([file.path], text: 'Requisition Data XLSX'); // Share the file
toast
(
context
,
(
"XLSX Downloaded and opened"
));
}
catch
(
e
)
{
print
(
'Error downloading XLSX:
$e
'
);
}
}
Future
<
void
>
downloadPDF
(
BuildContext
context
)
async
{
try
{
if
(
paymentsList
.
isEmpty
)
{
toast
(
context
,
"No Data to export"
);
return
;
}
final
data
=
prepareExportData
();
final
pdf
=
pw
.
Document
();
pdf
.
addPage
(
pw
.
Page
(
build:
(
context
)
=>
pw
.
Table
.
fromTextArray
(
data:
data
)),
);
final
dirPath
=
await
getSaveDirectory
();
final
file
=
File
(
'
$dirPath
/requisition_data.pdf'
);
await
file
.
writeAsBytes
(
await
pdf
.
save
());
print
(
'PDF saved at:
${file.path}
'
);
bool
exists
=
await
file
.
exists
();
print
(
'File exists:
$exists
'
);
// await OpenFile.open(file.path); // Open the file
// await Share.shareXFiles([file.path], text: 'Requisition Data PDF'); // Share the file
toast
(
context
,
"PDF Downloaded "
);
}
catch
(
e
)
{
print
(
'Error downloading PDF:
$e
'
);
}
}
Future
<
void
>
printData
(
BuildContext
context
)
async
{
try
{
if
(
paymentsList
.
isEmpty
)
{
toast
(
context
,
"No Data to Print"
);
return
;
}
final
data
=
prepareExportData
();
final
pdf
=
pw
.
Document
();
pdf
.
addPage
(
pw
.
Page
(
build:
(
context
)
=>
pw
.
Table
.
fromTextArray
(
data:
data
)),
);
await
Printing
.
layoutPdf
(
onLayout:
(
PdfPageFormat
format
)
async
=>
pdf
.
save
(),
);
}
catch
(
e
)
{
print
(
'Error printing data:
$e
'
);
}
}
}
\ No newline at end of file
lib/Utils/commonWidgets.dart
View file @
64c42cd9
...
@@ -51,10 +51,14 @@ PreferredSizeWidget appbar2(BuildContext context, title,widget) {
...
@@ -51,10 +51,14 @@ PreferredSizeWidget appbar2(BuildContext context, title,widget) {
onTap:
()
=>
Navigator
.
pop
(
context
,
true
),
onTap:
()
=>
Navigator
.
pop
(
context
,
true
),
child:
SvgPicture
.
asset
(
"assets/svg/app_bar_back.svg"
,
height:
25
),
child:
SvgPicture
.
asset
(
"assets/svg/app_bar_back.svg"
,
height:
25
),
),
),
InkResponse
(
Expanded
(
flex:
4
,
child:
InkResponse
(
onTap:
()
=>
Navigator
.
pop
(
context
,
true
),
onTap:
()
=>
Navigator
.
pop
(
context
,
true
),
child:
Text
(
child:
Text
(
title
,
title
,
overflow:
TextOverflow
.
ellipsis
,
maxLines:
1
,
style:
TextStyle
(
style:
TextStyle
(
fontSize:
16
,
fontSize:
16
,
height:
1.1
,
height:
1.1
,
...
@@ -63,6 +67,7 @@ PreferredSizeWidget appbar2(BuildContext context, title,widget) {
...
@@ -63,6 +67,7 @@ PreferredSizeWidget appbar2(BuildContext context, title,widget) {
),
),
),
),
),
),
),
Spacer
(),
Spacer
(),
widget
widget
],
],
...
...
lib/main.dart
View file @
64c42cd9
...
@@ -25,6 +25,8 @@ import 'package:generp/Notifiers/UpdatePasswordProvider.dart';
...
@@ -25,6 +25,8 @@ import 'package:generp/Notifiers/UpdatePasswordProvider.dart';
import
'package:generp/Notifiers/VisitDetailsProvider.dart'
;
import
'package:generp/Notifiers/VisitDetailsProvider.dart'
;
import
'package:generp/Notifiers/financeProvider/DashboardProvider.dart'
;
import
'package:generp/Notifiers/financeProvider/DashboardProvider.dart'
;
import
'package:generp/Notifiers/financeProvider/RequestionListProvider.dart'
;
import
'package:generp/Notifiers/financeProvider/RequestionListProvider.dart'
;
import
'package:generp/Notifiers/financeProvider/paymentReceiptsProvider.dart'
;
import
'package:generp/Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart'
;
import
'package:generp/Notifiers/loginNotifier.dart'
;
import
'package:generp/Notifiers/loginNotifier.dart'
;
import
'package:generp/Notifiers/scanLoginProvider.dart'
;
import
'package:generp/Notifiers/scanLoginProvider.dart'
;
import
'package:generp/Notifiers/splashVersionNotifier.dart'
;
import
'package:generp/Notifiers/splashVersionNotifier.dart'
;
...
@@ -212,6 +214,8 @@ class MyApp extends StatelessWidget {
...
@@ -212,6 +214,8 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider
(
create:
(
_
)
=>
Dashboardprovider
(),),
ChangeNotifierProvider
(
create:
(
_
)
=>
Dashboardprovider
(),),
ChangeNotifierProvider
(
create:
(
_
)
=>
Requestionlistprovider
(),),
ChangeNotifierProvider
(
create:
(
_
)
=>
Requestionlistprovider
(),),
ChangeNotifierProvider
(
create:
(
_
)
=>
Requesitionlidtdetailsprovider
(),),
ChangeNotifierProvider
(
create:
(
_
)
=>
Requesitionlidtdetailsprovider
(),),
ChangeNotifierProvider
(
create:
(
_
)
=>
Paymentrequisitionpaymentslistprovider
(),),
ChangeNotifierProvider
(
create:
(
_
)
=>
Paymentreceiptsprovider
(),),
],
],
child:
Builder
(
child:
Builder
(
builder:
(
BuildContext
context
)
{
builder:
(
BuildContext
context
)
{
...
...
lib/screens/finance/PaymentRequestionListDetails.dart
View file @
64c42cd9
...
@@ -28,13 +28,26 @@ class Paymentrequestionlistdetails extends StatefulWidget {
...
@@ -28,13 +28,26 @@ class Paymentrequestionlistdetails extends StatefulWidget {
class
_PaymentrequestionlistdetailsState
class
_PaymentrequestionlistdetailsState
extends
State
<
Paymentrequestionlistdetails
>
{
extends
State
<
Paymentrequestionlistdetails
>
{
TextEditingController
requestedAmount
=
TextEditingController
();
TextEditingController
approvedAmount
=
TextEditingController
();
TextEditingController
approvedAmount
=
TextEditingController
();
TextEditingController
remarks
=
TextEditingController
();
TextEditingController
remarks
=
TextEditingController
();
FocusNode
request
=
FocusNode
();
TextEditingController
paymentReferenceNumber
=
TextEditingController
();
FocusNode
approve
=
FocusNode
();
FocusNode
requestNode
=
FocusNode
();
FocusNode
approveNode
=
FocusNode
();
FocusNode
remarkNode
=
FocusNode
();
FocusNode
remarkNode
=
FocusNode
();
FocusNode
proposedPaymentAmountNode
=
FocusNode
();
FocusNode
paymentReferenceNumberNode
=
FocusNode
();
FocusNode
accountNameNode
=
FocusNode
();
FocusNode
branchNode
=
FocusNode
();
FocusNode
requestingPurposeNode
=
FocusNode
();
FocusNode
descriptionNode
=
FocusNode
();
FocusNode
amountNode
=
FocusNode
();
FocusNode
paymentModeNode
=
FocusNode
();
FocusNode
bankUpiIDNode
=
FocusNode
();
@override
@override
void
initState
()
{
void
initState
()
{
...
@@ -55,6 +68,26 @@ class _PaymentrequestionlistdetailsState
...
@@ -55,6 +68,26 @@ class _PaymentrequestionlistdetailsState
builder:
(
context
,
provider
,
child
)
{
builder:
(
context
,
provider
,
child
)
{
var
payment_det
=
provider
.
paymentsDetails
;
var
payment_det
=
provider
.
paymentsDetails
;
var
req_det
=
provider
.
requestsDetails
;
var
req_det
=
provider
.
requestsDetails
;
WidgetsBinding
.
instance
.
addPostFrameCallback
((
timeStamp
)
{
provider
.
subHeadings
=
[
req_det
.
accountName
??
"-"
,
req_det
.
proposedAccount
??
"-"
,
req_det
.
branch
??
"-"
,
req_det
.
requestingPurpose
??
"-"
,
req_det
.
requestMode
??
"-"
,
req_det
.
createdEmployee
??
"-"
,
req_det
.
attachmentViewFileName
??
"-"
,
req_det
.
date
??
"-"
,
req_det
.
description
??
"-"
,
req_det
.
level1ApprovalRemarks
??
"-"
,
req_det
.
level1Employee
??
"-"
,
req_det
.
level2ApprovalRemarks
??
"-"
,
req_det
.
level2Employee
??
"-"
,
req_det
.
createdDatetime
??
"-"
,
req_det
.
updatedDatetime
??
"-"
,
];
},);
return
WillPopScope
(
return
WillPopScope
(
child:
Scaffold
(
child:
Scaffold
(
appBar:
appbar
(
context
,
widget
.
pageName
),
appBar:
appbar
(
context
,
widget
.
pageName
),
...
@@ -93,7 +126,7 @@ class _PaymentrequestionlistdetailsState
...
@@ -93,7 +126,7 @@ class _PaymentrequestionlistdetailsState
crossAxisAlignment:
CrossAxisAlignment
.
start
,
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
children:
[
Text
(
Text
(
req_det
.
accountName
!
,
req_det
.
accountName
??
"-"
,
style:
TextStyle
(
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
fontSize:
14
,
...
@@ -101,8 +134,7 @@ class _PaymentrequestionlistdetailsState
...
@@ -101,8 +134,7 @@ class _PaymentrequestionlistdetailsState
),
),
),
),
Text
(
Text
(
"₹"
"₹
${req_det.amount}
"
,
"
${req_det.amount}
"
,
style:
TextStyle
(
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
fontSize:
14
,
...
@@ -126,7 +158,8 @@ class _PaymentrequestionlistdetailsState
...
@@ -126,7 +158,8 @@ class _PaymentrequestionlistdetailsState
),
),
child:
Center
(
child:
Center
(
child:
Text
(
child:
Text
(
req_det
.
status
!,
req_det
.
status
??
"-"
,
textAlign:
TextAlign
.
center
,
style:
TextStyle
(
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
fontSize:
14
,
...
@@ -163,8 +196,7 @@ class _PaymentrequestionlistdetailsState
...
@@ -163,8 +196,7 @@ class _PaymentrequestionlistdetailsState
context
,
context
,
MaterialPageRoute
(
MaterialPageRoute
(
builder:
builder:
(
context
)
=>
(
context
)
=>
Fileviewer
(
Fileviewer
(
fileName:
fileName:
req_det
req_det
.
attachmentViewFileName
!,
.
attachmentViewFileName
!,
...
@@ -238,7 +270,9 @@ class _PaymentrequestionlistdetailsState
...
@@ -238,7 +270,9 @@ class _PaymentrequestionlistdetailsState
child:
Center
(
child:
Center
(
child:
Text
(
child:
Text
(
"Reject"
,
"Reject"
,
style:
TextStyle
(
color:
Color
(
0xFFED3424
)),
style:
TextStyle
(
color:
Color
(
0xFFED3424
),
),
),
),
),
),
),
),
...
@@ -252,8 +286,11 @@ class _PaymentrequestionlistdetailsState
...
@@ -252,8 +286,11 @@ class _PaymentrequestionlistdetailsState
Expanded
(
Expanded
(
child:
InkResponse
(
child:
InkResponse
(
onTap:
()
{
onTap:
()
{
provider
.
approveRejectPaymentRequestAPIFunction
(
provider
context
,
provider
.
requestsDetails
.
id
);
.
approveRejectPaymentRequestAPIFunction
(
context
,
provider
.
requestsDetails
.
id
,
);
_showLevelApprovalSheet
(
context
);
_showLevelApprovalSheet
(
context
);
},
},
child:
Container
(
child:
Container
(
...
@@ -276,9 +313,17 @@ class _PaymentrequestionlistdetailsState
...
@@ -276,9 +313,17 @@ class _PaymentrequestionlistdetailsState
),
),
),
),
),
),
]
else
]
else
if
(
widget
.
mode
==
"process"
)
...[
if
(
widget
.
mode
==
"process"
)
...[
Expanded
(
Expanded
(
child:
InkResponse
(
onTap:
()
{
provider
.
approveRejectPaymentRequestAPIFunction
(
context
,
provider
.
requestsDetails
.
id
,
);
_showAddPaymentSheet
(
context
);
},
child:
Container
(
child:
Container
(
decoration:
BoxDecoration
(
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
8
),
borderRadius:
BorderRadius
.
circular
(
8
),
...
@@ -298,6 +343,7 @@ class _PaymentrequestionlistdetailsState
...
@@ -298,6 +343,7 @@ class _PaymentrequestionlistdetailsState
),
),
),
),
),
),
),
],
],
],
],
),
),
...
@@ -327,6 +373,7 @@ class _PaymentrequestionlistdetailsState
...
@@ -327,6 +373,7 @@ class _PaymentrequestionlistdetailsState
return
SafeArea
(
return
SafeArea
(
child:
Consumer
<
Requesitionlidtdetailsprovider
>(
child:
Consumer
<
Requesitionlidtdetailsprovider
>(
builder:
(
context
,
provider
,
child
)
{
builder:
(
context
,
provider
,
child
)
{
return
Container
(
return
Container
(
margin:
EdgeInsets
.
only
(
margin:
EdgeInsets
.
only
(
bottom:
15
,
bottom:
15
,
...
@@ -345,14 +392,14 @@ class _PaymentrequestionlistdetailsState
...
@@ -345,14 +392,14 @@ class _PaymentrequestionlistdetailsState
"Level 1 Approval"
,
"Level 1 Approval"
,
style:
TextStyle
(
style:
TextStyle
(
color:
AppColors
.
app_blue
,
color:
AppColors
.
app_blue
,
fontSize:
16
fontSize:
16
,
),
),
),
),
),
),
textControllerWidget
(
textController
Readonly
Widget
(
context
,
context
,
requestedAmount
,
provider
.
requestedAmount
,
"Enter Requested Amount"
,
"Enter Requested Amount"
,
(
p0
)
{},
(
p0
)
{},
),
),
...
@@ -383,15 +430,17 @@ class _PaymentrequestionlistdetailsState
...
@@ -383,15 +430,17 @@ class _PaymentrequestionlistdetailsState
items:
items:
provider
.
paymentsAccounts
provider
.
paymentsAccounts
.
map
(
.
map
(
(
paymenents
)
=>
(
paymenents
)
=>
DropdownMenuItem
<
DropdownMenuItem
<
PaymentAccounts
>(
PaymentAccounts
>(
value:
paymenents
,
value:
paymenents
,
child:
Text
(
child:
Text
(
paymenents
.
name
??
''
,
paymenents
.
name
??
''
,
style:
const
TextStyle
(
style:
const
TextStyle
(
fontSize:
14
,
fontSize:
14
,
),
),
overflow:
TextOverflow
.
ellipsis
,
overflow:
TextOverflow
.
ellipsis
,
),
),
),
),
)
)
...
@@ -399,13 +448,13 @@ class _PaymentrequestionlistdetailsState
...
@@ -399,13 +448,13 @@ class _PaymentrequestionlistdetailsState
value:
provider
.
selectedPaymentAccounts
,
value:
provider
.
selectedPaymentAccounts
,
onChanged:
(
PaymentAccounts
?
value
)
{
onChanged:
(
PaymentAccounts
?
value
)
{
if
(
value
!=
null
)
{
if
(
value
!=
null
)
{
if
(
provider
.
paymentsAccounts
if
(
provider
.
paymentsAccounts
.
isNotEmpty
)
{
.
isNotEmpty
)
{
provider
.
selectedPaymentAccounts
=
provider
.
selectedPaymentAccounts
=
value
;
value
;
print
(
print
(
"Selected Complaint Type:
${value
"Selected Complaint Type:
${value.name}
, ID:
${value.id}
"
,
.name}
, ID:
${value.id}
"
,
);
);
provider
.
selectedID
=
value
.
id
!;
provider
.
selectedID
=
value
.
id
!;
provider
.
selectedValue
=
value
.
name
!;
provider
.
selectedValue
=
value
.
name
!;
...
@@ -442,18 +491,22 @@ class _PaymentrequestionlistdetailsState
...
@@ -442,18 +491,22 @@ class _PaymentrequestionlistdetailsState
),
),
scrollbarTheme:
ScrollbarThemeData
(
scrollbarTheme:
ScrollbarThemeData
(
radius:
const
Radius
.
circular
(
15
),
radius:
const
Radius
.
circular
(
15
),
thickness:
MaterialStateProperty
.
all
<
thickness:
double
>(
MaterialStateProperty
.
all
<
double
>(
6
,
6
,
),
),
thumbVisibility:
thumbVisibility:
MaterialStateProperty
.
all
<
bool
>(
true
),
MaterialStateProperty
.
all
<
bool
>(
true
,
),
),
),
),
),
menuItemStyleData:
const
MenuItemStyleData
(
menuItemStyleData:
const
MenuItemStyleData
(
height:
40
,
height:
40
,
padding:
EdgeInsets
.
only
(
padding:
EdgeInsets
.
only
(
left:
14
,
right:
14
),
left:
14
,
right:
14
,
),
),
),
),
),
),
),
...
@@ -464,10 +517,13 @@ class _PaymentrequestionlistdetailsState
...
@@ -464,10 +517,13 @@ class _PaymentrequestionlistdetailsState
onTap:
()
{
onTap:
()
{
provider
provider
.
paymentrequisitionApproveSubmitAPIFunction
(
.
paymentrequisitionApproveSubmitAPIFunction
(
context
,
widget
.
mode
,
context
,
widget
.
mode
,
provider
.
paymentsReqDetails
.
id
,
provider
.
paymentsReqDetails
.
id
,
approvedAmount
.
text
,
remarks
.
text
,
approvedAmount
.
text
,
provider
.
selectedID
);
remarks
.
text
,
provider
.
selectedID
,
);
},
},
child:
Container
(
child:
Container
(
alignment:
Alignment
.
center
,
alignment:
Alignment
.
center
,
...
@@ -480,7 +536,7 @@ class _PaymentrequestionlistdetailsState
...
@@ -480,7 +536,7 @@ class _PaymentrequestionlistdetailsState
),
),
decoration:
BoxDecoration
(
decoration:
BoxDecoration
(
color:
AppColors
.
app_blue
,
//1487C9
color:
AppColors
.
app_blue
,
//1487C9
borderRadius:
BorderRadius
.
circular
(
30
.0
),
borderRadius:
BorderRadius
.
circular
(
14
.0
),
),
),
child:
Center
(
child:
Center
(
child:
Text
(
child:
Text
(
...
@@ -537,14 +593,14 @@ class _PaymentrequestionlistdetailsState
...
@@ -537,14 +593,14 @@ class _PaymentrequestionlistdetailsState
"Level 1 Rejection"
,
"Level 1 Rejection"
,
style:
TextStyle
(
style:
TextStyle
(
color:
AppColors
.
app_blue
,
color:
AppColors
.
app_blue
,
fontSize:
16
fontSize:
16
,
),
),
),
),
),
),
textControllerWidget
(
textController
Readonly
Widget
(
context
,
context
,
requestedAmount
,
provider
.
requestedAmount
,
"Enter Requested Amount"
,
"Enter Requested Amount"
,
(
p0
)
{},
(
p0
)
{},
),
),
...
@@ -559,8 +615,321 @@ class _PaymentrequestionlistdetailsState
...
@@ -559,8 +615,321 @@ class _PaymentrequestionlistdetailsState
onTap:
()
{
onTap:
()
{
provider
provider
.
paymentrequisitionRejectSubmitAPIFunction
(
.
paymentrequisitionRejectSubmitAPIFunction
(
context
,
widget
.
mode
,
context
,
provider
.
paymentsReqDetails
.
id
,
remarks
.
text
);
widget
.
mode
,
provider
.
paymentsReqDetails
.
id
,
remarks
.
text
,
);
},
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:
Text
(
"Submit"
,
textAlign:
TextAlign
.
center
,
style:
TextStyle
(
color:
Colors
.
white
),
),
),
),
),
],
),
),
);
},
),
);
},
);
},
);
}
Future
<
void
>
_showAddPaymentSheet
(
BuildContext
context
)
{
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:
Consumer
<
Requesitionlidtdetailsprovider
>(
builder:
(
context
,
provider
,
child
)
{
return
Container
(
margin:
EdgeInsets
.
only
(
bottom:
15
,
left:
15
,
right:
15
,
top:
10
,
),
child:
SingleChildScrollView
(
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
mainAxisSize:
MainAxisSize
.
min
,
children:
[
Align
(
alignment:
Alignment
.
topLeft
,
child:
Text
(
"Add Approval"
,
style:
TextStyle
(
color:
AppColors
.
app_blue
,
fontSize:
16
,
),
),
),
textControllerReadonlyWidget
(
context
,
provider
.
proposedPaymentAccount
,
"Enter Proposed Payment Account"
,
(
p0
)
{},
),
TextWidget
(
context
,
"Payment Account"
),
DropdownButtonHideUnderline
(
child:
Row
(
children:
[
Expanded
(
child:
DropdownButton2
<
PaymentAccounts
>(
isExpanded:
true
,
hint:
Text
(
'Select Account'
,
style:
TextStyle
(
fontSize:
14
),
overflow:
TextOverflow
.
ellipsis
,
),
items:
provider
.
paymentsAccounts
.
map
(
(
paymenents
)
=>
DropdownMenuItem
<
PaymentAccounts
>(
value:
paymenents
,
child:
Text
(
paymenents
.
name
??
''
,
style:
const
TextStyle
(
fontSize:
14
,
),
overflow:
TextOverflow
.
ellipsis
,
),
),
)
.
toList
(),
value:
provider
.
selectedPaymentAccounts
,
onChanged:
(
PaymentAccounts
?
value
)
{
if
(
value
!=
null
)
{
if
(
provider
.
paymentsAccounts
.
isNotEmpty
)
{
provider
.
selectedPaymentAccounts
=
value
;
print
(
"Selected Complaint Type:
${value.name}
, ID:
${value.id}
"
,
);
provider
.
selectedID
=
value
.
id
!;
provider
.
selectedValue
=
value
.
name
!;
print
(
"hfjkshfg"
+
provider
.
selectedID
.
toString
(),
);
}
}
},
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:
const
IconStyleData
(
icon:
Icon
(
Icons
.
keyboard_arrow_down
),
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
,
),
),
),
),
],
),
),
textControllerWidget
(
context
,
paymentReferenceNumber
,
"Enter Payment Reference Number"
,
(
p0
)
{},
),
textControllerWidget
(
context
,
remarks
,
"Enter Remarks"
,
(
p0
)
{},
),
InkResponse
(
onTap:
()
{
_showAttachmentSheet
(
context
);
},
child:
Container
(
margin:
EdgeInsets
.
symmetric
(
vertical:
10
),
height:
45
,
width:
MediaQuery
.
of
(
context
).
size
.
width
,
decoration:
BoxDecoration
(
color:
Color
(
0xFFE6F6FF
),
borderRadius:
BorderRadius
.
circular
(
12
),
border:
Border
.
all
(
color:
AppColors
.
app_blue
,
width:
0.5
,
),
),
child:
Center
(
child:
Text
(
"Add Attachment"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
color:
AppColors
.
app_blue
,
),
),
),
),
),
textControllerReadonlyWidget
(
context
,
provider
.
accountName
,
"Enter Account Name"
,
(
p0
)
{},
),
textControllerReadonlyWidget
(
context
,
provider
.
branch
,
"Enter Branch Name"
,
(
p0
)
{},
),
textControllerReadonlyWidget
(
context
,
provider
.
requestingPurpose
,
"Enter Requesting Purpose"
,
(
p0
)
{},
),
textControllerReadonlyWidget
(
context
,
provider
.
description
,
"Enter Description"
,
(
p0
)
{},
),
textControllerReadonlyWidget
(
context
,
provider
.
amount
,
"Enter Amount"
,
(
p0
)
{},
),
textControllerReadonlyWidget
(
context
,
provider
.
paymentMode
,
"Enter Payment Mode"
,
(
p0
)
{},
),
textControllerReadonlyWidget
(
context
,
provider
.
bankHolderName
,
"Bank Account Holder Name"
,
(
p0
)
{},
),
textControllerReadonlyWidget
(
context
,
provider
.
bankAccountNumber
,
"Bank Account Number"
,
(
p0
)
{},
),
textControllerReadonlyWidget
(
context
,
provider
.
bankName
,
"Bank Name"
,
(
p0
)
{},
),
textControllerReadonlyWidget
(
context
,
provider
.
bankBranchName
,
"Bank Branch Name"
,
(
p0
)
{},
),
textControllerReadonlyWidget
(
context
,
provider
.
bankIfscCode
,
"Bank IFSC Code"
,
(
p0
)
{},
),
textControllerReadonlyWidget
(
context
,
provider
.
bankUpiID
,
"Bank UPI ID"
,
(
p0
)
{},
),
InkWell
(
onTap:
()
{
provider
.
paymentrequisitionProcessSubmitAPIFunction
(
context
,
widget
.
mode
,
provider
.
paymentsReqDetails
.
id
,
paymentReferenceNumber
.
text
,
remarks
.
text
,
provider
.
imagePath
);
},
},
child:
Container
(
child:
Container
(
alignment:
Alignment
.
center
,
alignment:
Alignment
.
center
,
...
@@ -573,7 +942,7 @@ class _PaymentrequestionlistdetailsState
...
@@ -573,7 +942,7 @@ class _PaymentrequestionlistdetailsState
),
),
decoration:
BoxDecoration
(
decoration:
BoxDecoration
(
color:
AppColors
.
app_blue
,
//1487C9
color:
AppColors
.
app_blue
,
//1487C9
borderRadius:
BorderRadius
.
circular
(
30
.0
),
borderRadius:
BorderRadius
.
circular
(
14
.0
),
),
),
child:
Center
(
child:
Center
(
child:
Text
(
child:
Text
(
...
@@ -597,6 +966,86 @@ class _PaymentrequestionlistdetailsState
...
@@ -597,6 +966,86 @@ class _PaymentrequestionlistdetailsState
);
);
}
}
Future
<
void
>
_showAttachmentSheet
(
BuildContext
context
)
{
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:
Consumer
<
Requesitionlidtdetailsprovider
>(
builder:
(
context
,
provider
,
child
)
{
return
Padding
(
padding:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
,
).
viewInsets
.
bottom
,
// This handles keyboard
),
child:
Container
(
margin:
EdgeInsets
.
only
(
bottom:
15
,
left:
15
,
right:
15
,
top:
10
,
),
child:
SingleChildScrollView
(
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
mainAxisSize:
MainAxisSize
.
min
,
children:
[
Align
(
alignment:
Alignment
.
center
,
child:
Text
(
"Select Source"
,
style:
TextStyle
(
color:
AppColors
.
app_blue
,
fontSize:
16
,
),
),
),
SizedBox
(
height:
15
),
InkWell
(
onTap:
()
{
Navigator
.
of
(
context
).
pop
(
false
);
provider
.
imgFromGallery
(
context
);
},
child:
Container
(
height:
35
,
child:
Text
(
"Select photo from gallery"
),
),
),
SizedBox
(
height:
10
),
InkWell
(
onTap:
()
{
Navigator
.
of
(
context
).
pop
(
false
);
provider
.
imgFromCamera
(
context
);
},
child:
Container
(
height:
35
,
child:
Text
(
"Capture photo from camera"
),
),
),
],
),
),
),
);
},
),
);
},
);
},
);
}
Widget
TextWidget
(
context
,
text
)
{
Widget
TextWidget
(
context
,
text
)
{
return
Padding
(
return
Padding
(
...
@@ -612,10 +1061,12 @@ class _PaymentrequestionlistdetailsState
...
@@ -612,10 +1061,12 @@ class _PaymentrequestionlistdetailsState
return
SizedBox
(
height:
10
);
return
SizedBox
(
height:
10
);
}
}
Widget
textControllerWidget
(
context
,
Widget
textControllerWidget
(
context
,
controller
,
controller
,
hintText
,
hintText
,
Function
(
String
)?
onChanged
,)
{
Function
(
String
)?
onChanged
,
)
{
return
Column
(
return
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
children:
[
...
@@ -624,7 +1075,7 @@ class _PaymentrequestionlistdetailsState
...
@@ -624,7 +1075,7 @@ class _PaymentrequestionlistdetailsState
child:
Text
(
hintText
),
child:
Text
(
hintText
),
),
),
Container
(
Container
(
height:
hintText
==
"Enter Description"
?
150
:
50
,
height:
hintText
==
"Enter Description"
||
hintText
==
"Enter Remarks"
?
150
:
50
,
alignment:
Alignment
.
center
,
alignment:
Alignment
.
center
,
decoration:
BoxDecoration
(
decoration:
BoxDecoration
(
color:
AppColors
.
text_field_color
,
color:
AppColors
.
text_field_color
,
...
@@ -635,9 +1086,60 @@ class _PaymentrequestionlistdetailsState
...
@@ -635,9 +1086,60 @@ class _PaymentrequestionlistdetailsState
child:
TextFormField
(
child:
TextFormField
(
controller:
controller
,
controller:
controller
,
keyboardType:
TextInputType
.
text
,
keyboardType:
TextInputType
.
text
,
maxLines:
hintText
==
"Enter Description"
||
hintText
==
"Enter Remarks"
?
60
:
1
,
onChanged:
onChanged
,
decoration:
InputDecoration
(
hintText:
hintText
,
hintStyle:
TextStyle
(
fontWeight:
FontWeight
.
w400
,
color:
Color
(
0xFFB4BEC0
),
fontSize:
14
,
),
enabledBorder:
InputBorder
.
none
,
focusedBorder:
InputBorder
.
none
,
),
),
),
),
],
);
}
Widget
textControllerReadonlyWidget
(
context
,
controller
,
hintText
,
Function
(
String
)?
onChanged
,
)
{
return
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Padding
(
padding:
const
EdgeInsets
.
only
(
bottom:
5.0
,
top:
8.0
),
child:
Text
(
hintText
),
),
Container
(
height:
hintText
==
"Enter Description"
?
150
:
50
,
alignment:
Alignment
.
center
,
decoration:
BoxDecoration
(
color:
Color
(
0xFFE9E9E9
),
borderRadius:
BorderRadius
.
circular
(
14
),
),
child:
Padding
(
padding:
const
EdgeInsets
.
fromLTRB
(
10.0
,
0.0
,
10
,
0
),
child:
TextFormField
(
controller:
controller
,
readOnly:
true
,
keyboardType:
TextInputType
.
text
,
maxLines:
hintText
==
"Enter Description"
?
60
:
1
,
maxLines:
hintText
==
"Enter Description"
?
60
:
1
,
onChanged:
onChanged
,
onChanged:
onChanged
,
style:
TextStyle
(
color:
Color
(
0xFF818181
),
fontSize:
14
,
),
decoration:
InputDecoration
(
decoration:
InputDecoration
(
hintText:
hintText
,
hintText:
hintText
,
hintStyle:
TextStyle
(
hintStyle:
TextStyle
(
fontWeight:
FontWeight
.
w400
,
fontWeight:
FontWeight
.
w400
,
...
...
lib/screens/finance/directPaymentRequesitionList.dart
View file @
64c42cd9
import
'package:flutter/material.dart'
;
import
'package:dropdown_button2/dropdown_button2.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/material.dart'
;
import
'package:generp/Notifiers/financeProvider/RequestionListProvider.dart'
;
import
'package:generp/Utils/app_colors.dart'
;
import
'package:generp/Utils/commonWidgets.dart'
;
import
'package:intl/intl.dart'
;
import
'package:provider/provider.dart'
;
class
Directpaymentrequesitionlist
extends
StatefulWidget
{
import
'../../Models/financeModels/addDirectPaymentResponse.dart'
;
const
Directpaymentrequesitionlist
({
super
.
key
});
class
Directpaymentrequesitionlist
extends
StatefulWidget
{
final
String
pageTitleName
;
const
Directpaymentrequesitionlist
({
super
.
key
,
required
this
.
pageTitleName
});
@override
State
<
Directpaymentrequesitionlist
>
createState
()
=>
_DirectpaymentrequesitionlistState
();
}
class
_DirectpaymentrequesitionlistState
extends
State
<
Directpaymentrequesitionlist
>
{
@override
@override
State
<
Directpaymentrequesitionlist
>
createState
()
=>
_DirectpaymentrequesitionlistState
();
void
initState
()
{
}
// TODO: implement initState
super
.
initState
();
WidgetsBinding
.
instance
.
addPostFrameCallback
((
timeStamp
)
{
var
provider
=
Provider
.
of
<
Requestionlistprovider
>(
context
,
listen:
false
,
);
provider
.
addDirectPaymentRequestionViewAPI
(
context
);
});
}
@override
void
dispose
()
{
super
.
dispose
();
}
Future
<
bool
>
_onBackPressed
(
BuildContext
context
)
async
{
Navigator
.
pop
(
context
,
true
);
return
true
;
}
class
_DirectpaymentrequesitionlistState
extends
State
<
Directpaymentrequesitionlist
>
{
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
const
Placeholder
();
return
Consumer
<
Requestionlistprovider
>(
builder:
(
context
,
provider
,
child
)
{
return
WillPopScope
(
child:
Scaffold
(
backgroundColor:
AppColors
.
white
,
appBar:
appbar
(
context
,
"
${widget.pageTitleName}
"
),
body:
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
10
),
decoration:
BoxDecoration
(
color:
Colors
.
white
,
borderRadius:
BorderRadius
.
circular
(
20
),
),
child:
SingleChildScrollView
(
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
TextWidget
(
context
,
"Account"
),
DropdownButtonHideUnderline
(
child:
Row
(
children:
[
Expanded
(
child:
DropdownButton2
<
DirectAccounts
>(
isExpanded:
true
,
hint:
Text
(
'Select Account Type'
,
style:
TextStyle
(
fontSize:
14
),
overflow:
TextOverflow
.
ellipsis
,
),
items:
provider
.
directAccounts
.
map
(
(
accs
)
=>
DropdownMenuItem
<
DirectAccounts
>(
value:
accs
,
child:
Text
(
accs
.
name
??
''
,
style:
const
TextStyle
(
fontSize:
14
,
),
overflow:
TextOverflow
.
ellipsis
,
),
),
)
.
toList
(),
value:
provider
.
selectDirectAccounts
,
onChanged:
(
DirectAccounts
?
value
)
{
if
(
value
!=
null
)
{
if
(
provider
.
directAccounts
.
isNotEmpty
)
{
provider
.
selectDirectAccounts
=
value
;
print
(
"Selected Complaint Type:
${value.name}
, ID:
${value.id}
"
,
);
provider
.
directAccountId
=
value
.
id
!;
provider
.
directAccountValue
=
value
.
name
!;
print
(
"hfjkshfg"
+
provider
.
directAccountId
.
toString
(),
);
}
}
},
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:
const
IconStyleData
(
icon:
Icon
(
Icons
.
keyboard_arrow_down
),
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
),
),
),
),
],
),
),
TextWidget
(
context
,
"Payment Account"
),
DropdownButtonHideUnderline
(
child:
Row
(
children:
[
Expanded
(
child:
DropdownButton2
<
DirectPaymentAccounts
>(
isExpanded:
true
,
hint:
Text
(
'Select Account Type'
,
style:
TextStyle
(
fontSize:
14
),
overflow:
TextOverflow
.
ellipsis
,
),
items:
provider
.
directPaymentAccounts
.
map
(
(
accs
)
=>
DropdownMenuItem
<
DirectPaymentAccounts
>(
value:
accs
,
child:
Text
(
accs
.
name
??
''
,
style:
const
TextStyle
(
fontSize:
14
,
),
overflow:
TextOverflow
.
ellipsis
,
),
),
)
.
toList
(),
value:
provider
.
selectDirectPaymentAccounts
,
onChanged:
(
DirectPaymentAccounts
?
value
)
{
if
(
value
!=
null
)
{
if
(
provider
.
directPaymentAccounts
.
isNotEmpty
)
{
provider
.
selectDirectPaymentAccounts
=
value
;
print
(
"Selected Complaint Type:
${value.name}
, ID:
${value.id}
"
,
);
provider
.
directPaymentAccountsID
=
value
.
id
!;
provider
.
directPaymentAccountsValue
=
value
.
name
!;
print
(
"hfjkshfg"
+
provider
.
directPaymentAccountsID
.
toString
(),
);
}
}
},
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:
const
IconStyleData
(
icon:
Icon
(
Icons
.
keyboard_arrow_down
),
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
),
),
),
),
],
),
),
textControllerWidget
(
context
,
provider
.
amountController
,
"Enter Amount"
,
provider
.
updateAmount
,
),
///payment date toBE
TextWidget
(
context
,
"Enter Date"
),
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
center
,
children:
[
Expanded
(
child:
InkResponse
(
onTap:
()
async
{
provider
.
showDatePickerDialog
(
context
);
},
child:
Container
(
padding:
EdgeInsets
.
only
(
left:
10
),
height:
48
,
alignment:
Alignment
.
centerLeft
,
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
14
),
color:
AppColors
.
text_field_color
),
child:
Text
(
'
${provider.formattedDate ?? 'Select Date'}
'
,
style:
TextStyle
(
fontSize:
14
,
fontFamily:
"JakartaMedium"
,
color:
AppColors
.
semi_black
,
),
),
),
),
),
],
),
TextWidget
(
context
,
"Select Payment Mode"
),
DropdownButtonHideUnderline
(
child:
Row
(
children:
[
Expanded
(
child:
DropdownButton2
<
DirectPaymentModes
>(
isExpanded:
true
,
hint:
Text
(
'Select Payment mode'
,
style:
TextStyle
(
fontSize:
14
),
overflow:
TextOverflow
.
ellipsis
,
),
items:
provider
.
directPaymentModes
.
map
(
(
paymenents
)
=>
DropdownMenuItem
<
DirectPaymentModes
>(
value:
paymenents
,
child:
Text
(
paymenents
.
name
??
''
,
style:
const
TextStyle
(
fontSize:
14
,
),
overflow:
TextOverflow
.
ellipsis
,
),
),
)
.
toList
(),
value:
provider
.
selectDirectPaymentModes
,
onChanged:
(
DirectPaymentModes
?
value
)
{
if
(
value
!=
null
)
{
if
(
provider
.
directPaymentModes
.
isNotEmpty
)
{
provider
.
selectDirectPaymentModes
=
value
;
print
(
"Selected Complaint Type:
${value.name}
, ID:
${value.id}
"
,
);
provider
.
directPaymentModesID
=
value
.
id
!;
provider
.
directPaymentModesValues
=
value
.
name
!;
print
(
"hfjkshfg"
+
provider
.
directPaymentModesID
.
toString
(),
);
}
}
},
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:
const
IconStyleData
(
icon:
Icon
(
Icons
.
keyboard_arrow_down
),
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
),
),
),
),
],
),
),
if
([
"Cheque"
,
"RTGS"
,
"IMPS"
,
"NEFT"
,
].
contains
(
provider
.
paymentModeValue
))
...
[
textControllerWidget
(
context
,
provider
.
bankNameController
,
"Enter Bank Name"
,
provider
.
updateBankName
,
),
textControllerWidget
(
context
,
provider
.
bankBranchController
,
"Enter Bank Branch"
,
provider
.
updateBankBranch
,
),
textControllerWidget
(
context
,
provider
.
bankAccNumberController
,
"Enter Account Number"
,
provider
.
updateNumber
,
),
textControllerWidget
(
context
,
provider
.
bankIfscController
,
"Enter Bank IFSC"
,
provider
.
updateIFSC
,
),
textControllerWidget
(
context
,
provider
.
bankAcHolderController
,
"Enter Bank Account Holder Name"
,
provider
.
updateHolder
,
),
]
else
if
(
provider
.
paymentModeValue
==
"UPI"
)
...
[
textControllerWidget
(
context
,
provider
.
amountController
,
"Enter UPI ID"
,
provider
.
updateUPI
,
),
],
textControllerWidget
(
context
,
provider
.
paymentReferenceController
,
"Enter Payment Reference Number"
,
provider
.
updateDescription
,
),
textControllerWidget
(
context
,
provider
.
descController
,
"Enter Description"
,
provider
.
updateDescription
,
),
InkResponse
(
onTap:
()
{
_showAttachmentSheet
(
context
);
},
child:
Container
(
margin:
EdgeInsets
.
symmetric
(
vertical:
10
),
height:
45
,
width:
MediaQuery
.
of
(
context
).
size
.
width
,
decoration:
BoxDecoration
(
color:
Color
(
0xFFE6F6FF
),
borderRadius:
BorderRadius
.
circular
(
12
),
border:
Border
.
all
(
color:
AppColors
.
app_blue
,
width:
0.5
,
),
),
child:
Center
(
child:
Text
(
"File Attachment"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
color:
AppColors
.
app_blue
,
),
),
),
),
),
],
),
),
),
floatingActionButtonLocation:
FloatingActionButtonLocation
.
centerFloat
,
bottomNavigationBar:
InkResponse
(
onTap:
()
{
// provider.submitClicked = true;
provider
.
addDirectPaymentRequestionSubmitAPI
(
context
,
provider
.
formattedDate
);
},
child:
Container
(
height:
45
,
alignment:
Alignment
.
center
,
margin:
EdgeInsets
.
symmetric
(
horizontal:
10
),
padding:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
5
),
decoration:
BoxDecoration
(
color:
AppColors
.
app_blue
,
borderRadius:
BorderRadius
.
circular
(
15
),
),
child:
Text
(
"Submit"
,
style:
TextStyle
(
fontSize:
15
,
fontFamily:
"JakartaMedium"
,
color:
Colors
.
white
,
),
),
),
),
),
onWillPop:
()
{
provider
.
resetForm
();
return
onBackPressed
(
context
);
},
);
},
);
}
void
_showDialog
(
Widget
child
)
{
showCupertinoModalPopup
<
void
>(
context:
context
,
builder:
(
BuildContext
context
)
=>
Container
(
height:
216
,
padding:
const
EdgeInsets
.
only
(
top:
6.0
),
// The Bottom margin is provided to align the popup above the system
// navigation bar.
margin:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
).
viewInsets
.
bottom
,
),
// Provide a background color for the popup.
color:
CupertinoColors
.
systemBackground
.
resolveFrom
(
context
),
// Use a SafeArea widget to avoid system overlaps.
child:
SafeArea
(
top:
false
,
child:
Column
(
children:
[
Expanded
(
flex:
1
,
child:
SizedBox
(
height:
40
,
child:
Row
(
mainAxisAlignment:
MainAxisAlignment
.
spaceBetween
,
children:
[
// Add a Cancel button (optional)
CupertinoButton
(
child:
Text
(
'Cancel'
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
),
),
onPressed:
()
{
Navigator
.
pop
(
context
);
},
),
// Add a Done button
CupertinoButton
(
child:
Text
(
'Done'
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
)),
onPressed:
()
{
Navigator
.
pop
(
context
);
// Dismiss the dialog
},
),
],
),
),
),
Expanded
(
flex:
3
,
child:
child
),
],
),
),
),
);
}
Widget
TextWidget
(
context
,
text
)
{
return
Padding
(
padding:
const
EdgeInsets
.
only
(
bottom:
5.0
,
top:
8.0
),
child:
Text
(
text
),
);
}
Widget
ErrorWidget
(
context
,
text
)
{
if
(
text
!=
null
)
return
Text
(
text
!,
style:
TextStyle
(
color:
Colors
.
red
,
fontSize:
12
));
else
return
SizedBox
(
height:
10
);
}
Widget
textControllerWidget
(
context
,
controller
,
hintText
,
Function
(
String
)?
onChanged
,
)
{
return
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Padding
(
padding:
const
EdgeInsets
.
only
(
bottom:
5.0
,
top:
8.0
),
child:
Text
(
hintText
),
),
Container
(
height:
hintText
==
"Enter Description"
?
150
:
50
,
alignment:
Alignment
.
center
,
decoration:
BoxDecoration
(
color:
AppColors
.
text_field_color
,
borderRadius:
BorderRadius
.
circular
(
14
),
),
child:
Padding
(
padding:
const
EdgeInsets
.
fromLTRB
(
10.0
,
0.0
,
10
,
0
),
child:
TextFormField
(
controller:
controller
,
keyboardType:
TextInputType
.
text
,
maxLines:
hintText
==
"Enter Description"
?
60
:
1
,
onChanged:
onChanged
,
decoration:
InputDecoration
(
hintText:
hintText
,
hintStyle:
TextStyle
(
fontWeight:
FontWeight
.
w400
,
color:
Color
(
0xFFB4BEC0
),
fontSize:
14
,
),
enabledBorder:
InputBorder
.
none
,
focusedBorder:
InputBorder
.
none
,
),
),
),
),
],
);
}
Future
<
void
>
_showAttachmentSheet
(
BuildContext
context
)
{
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:
Consumer
<
Requestionlistprovider
>(
builder:
(
context
,
provider
,
child
)
{
return
Padding
(
padding:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
,
).
viewInsets
.
bottom
,
// This handles keyboard
),
child:
Container
(
margin:
EdgeInsets
.
only
(
bottom:
15
,
left:
15
,
right:
15
,
top:
10
,
),
child:
SingleChildScrollView
(
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
mainAxisSize:
MainAxisSize
.
min
,
children:
[
Align
(
alignment:
Alignment
.
center
,
child:
Text
(
"Select Source"
,
style:
TextStyle
(
color:
AppColors
.
app_blue
,
fontFamily:
"JakrtaMedium"
,
fontSize:
16
,
),
),
),
SizedBox
(
height:
15
),
InkWell
(
onTap:
()
{
Navigator
.
of
(
context
).
pop
(
false
);
provider
.
imgFromGallery
(
context
);
},
child:
Container
(
height:
35
,
child:
Text
(
"Select photo from gallery"
),
),
),
SizedBox
(
height:
10
),
InkWell
(
onTap:
()
{
Navigator
.
of
(
context
).
pop
(
false
);
provider
.
imgFromCamera
(
context
);
},
child:
Container
(
height:
35
,
child:
Text
(
"Capture photo from camera"
),
),
),
],
),
),
),
);
},
),
);
},
);
},
);
}
}
}
}
lib/screens/finance/financeDashboard.dart
View file @
64c42cd9
...
@@ -5,6 +5,8 @@ import 'package:generp/Utils/app_colors.dart';
...
@@ -5,6 +5,8 @@ import 'package:generp/Utils/app_colors.dart';
import
'package:generp/Utils/commonWidgets.dart'
;
import
'package:generp/Utils/commonWidgets.dart'
;
import
'package:generp/screens/finance/AllPaymentRequesitionListsByModes.dart'
;
import
'package:generp/screens/finance/AllPaymentRequesitionListsByModes.dart'
;
import
'package:generp/screens/finance/directPaymentRequesitionList.dart'
;
import
'package:generp/screens/finance/directPaymentRequesitionList.dart'
;
import
'package:generp/screens/finance/paymentListPaymentRequisition.dart'
;
import
'package:generp/screens/finance/paymentreceiptList.dart'
;
import
'package:generp/screens/finance/submitPaymentRequestionListsByMode.dart'
;
import
'package:generp/screens/finance/submitPaymentRequestionListsByMode.dart'
;
import
'package:provider/provider.dart'
;
import
'package:provider/provider.dart'
;
...
@@ -65,10 +67,38 @@ class _FinancedashboardState extends State<Financedashboard> {
...
@@ -65,10 +67,38 @@ class _FinancedashboardState extends State<Financedashboard> {
}
}
return
InkResponse
(
return
InkResponse
(
onTap:
()
async
{
onTap:
()
async
{
await
Navigator
.
push
(
context
,
MaterialPageRoute
(
var
navigate
;
builder:
(
context
)
=>
if
(
provider
.
accessiblePagesList
[
index
].
pageName
==
Allpaymentrequesitionlistsbymodes
(
mode:
provider
.
accessiblePagesList
[
index
].
mode
!,
"Payments List"
)
{
pageTitleName:
provider
.
accessiblePagesList
[
index
].
pageName
!),));
navigate
=
Paymentlistpaymentrequisition
(
pageTitleName:
provider
.
accessiblePagesList
[
index
]
.
pageName
!,
);
}
else
if
(
provider
.
accessiblePagesList
[
index
]
.
pageName
==
"Payment Receipts List"
)
{
navigate
=
Paymentreceiptlist
(
pageTitleName:
provider
.
accessiblePagesList
[
index
]
.
pageName
!,
);
}
else
{
navigate
=
Allpaymentrequesitionlistsbymodes
(
mode:
provider
.
accessiblePagesList
[
index
].
mode
!,
pageTitleName:
provider
.
accessiblePagesList
[
index
]
.
pageName
!,
);
}
await
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
navigate
),
);
},
},
child:
Container
(
child:
Container
(
margin:
EdgeInsets
.
symmetric
(
margin:
EdgeInsets
.
symmetric
(
...
@@ -89,8 +119,7 @@ class _FinancedashboardState extends State<Financedashboard> {
...
@@ -89,8 +119,7 @@ class _FinancedashboardState extends State<Financedashboard> {
Expanded
(
Expanded
(
flex:
5
,
flex:
5
,
child:
Text
(
child:
Text
(
"
${provider.accessiblePagesList[index]
"
${provider.accessiblePagesList[index].pageName}
"
,
.pageName}
"
,
),
),
),
),
Expanded
(
Expanded
(
...
@@ -169,8 +198,9 @@ class _FinancedashboardState extends State<Financedashboard> {
...
@@ -169,8 +198,9 @@ class _FinancedashboardState extends State<Financedashboard> {
children:
[
children:
[
SizedBox
(
height:
15
),
SizedBox
(
height:
15
),
...
List
.
generate
(
...
List
.
generate
(
provider
.
accessiblePagesList2
.
length
,
(
provider
.
accessiblePagesList2
.
length
,
(
index
)
{
index
,
)
{
print
(
provider
.
accessiblePagesList2
[
index
].
mode
);
print
(
provider
.
accessiblePagesList2
[
index
].
mode
);
List
<
String
>
mode_lst
=
[
List
<
String
>
mode_lst
=
[
"self"
,
"self"
,
...
@@ -190,24 +220,36 @@ class _FinancedashboardState extends State<Financedashboard> {
...
@@ -190,24 +220,36 @@ class _FinancedashboardState extends State<Financedashboard> {
onTap:
()
async
{
onTap:
()
async
{
Navigator
.
pop
(
context
);
Navigator
.
pop
(
context
);
var
res
;
var
res
;
if
(
provider
.
accessiblePagesList2
[
index
]
if
(
provider
.
pageName
==
"Add Direct Payment"
)
{
.
accessiblePagesList2
[
index
]
res
=
await
Navigator
.
push
(
context
,
.
pageName
==
MaterialPageRoute
(
builder:
(
context
)
=>
"Add Direct Payment"
)
{
Directpaymentrequesitionlist
(),));
}
else
{
res
=
await
Navigator
.
push
(
res
=
await
Navigator
.
push
(
context
,
context
,
MaterialPageRoute
(
MaterialPageRoute
(
builder:
builder:
(
context
)
=>
(
Submitpaymentrequestionlistsbymode
(
context
,
mode:
"
${provider
)
=>
Directpaymentrequesitionlist
(
.accessiblePagesList2[index]
pageTitleName:
.mode}
"
,
provider
pageTitleName:
"
${provider
.
accessiblePagesList2
[
index
]
.
accessiblePagesList2
[
index
]
.pageName}
"
,
.
pageName
!,
),
),
);
}
else
{
res
=
await
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
,
)
=>
Submitpaymentrequestionlistsbymode
(
mode:
"
${provider.accessiblePagesList2[index].mode}
"
,
pageTitleName:
"
${provider.accessiblePagesList2[index].pageName}
"
,
),
),
),
),
);
);
...
@@ -217,8 +259,7 @@ class _FinancedashboardState extends State<Financedashboard> {
...
@@ -217,8 +259,7 @@ class _FinancedashboardState extends State<Financedashboard> {
"assets/svg/fin_ic.svg"
,
"assets/svg/fin_ic.svg"
,
),
),
title:
Text
(
title:
Text
(
"
${provider.accessiblePagesList2[index]
"
${provider.accessiblePagesList2[index].pageName}
"
,
.pageName}
"
,
style:
TextStyle
(
style:
TextStyle
(
fontSize:
14
,
fontSize:
14
,
fontFamily:
"JakartaMedium"
,
fontFamily:
"JakartaMedium"
,
...
...
lib/screens/finance/paymentDetailsPaymentRequisition.dart
0 → 100644
View file @
64c42cd9
import
'package:dropdown_button2/dropdown_button2.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_svg/svg.dart'
;
import
'package:generp/Notifiers/financeProvider/RequesitionLidtDetailsProvider.dart'
;
import
'package:generp/Notifiers/financeProvider/approveRejectPaymentRequestResponse.dart'
;
import
'package:generp/Utils/app_colors.dart'
;
import
'package:generp/Utils/commonWidgets.dart'
;
import
'package:provider/provider.dart'
;
import
'../../Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart'
;
import
'FileViewer.dart'
;
class
Paymentdetailspaymentrequisition
extends
StatefulWidget
{
final
paymentRequestId
;
final
pageName
;
const
Paymentdetailspaymentrequisition
({
super
.
key
,
required
this
.
paymentRequestId
,
required
this
.
pageName
,
});
@override
State
<
Paymentdetailspaymentrequisition
>
createState
()
=>
_PaymentdetailspaymentrequisitionState
();
}
class
_PaymentdetailspaymentrequisitionState
extends
State
<
Paymentdetailspaymentrequisition
>
{
@override
void
initState
()
{
// TODO: implement initState
super
.
initState
();
WidgetsBinding
.
instance
.
addPostFrameCallback
((
timeStamp
)
{
var
provider
=
Provider
.
of
<
Paymentrequisitionpaymentslistprovider
>(
context
,
listen:
false
,
);
provider
.
paymentsListDetailsAPI
(
context
,
widget
.
paymentRequestId
);
});
}
@override
Widget
build
(
BuildContext
context
)
{
return
Consumer
<
Paymentrequisitionpaymentslistprovider
>(
builder:
(
context
,
provider
,
child
)
{
var
payment_det
=
provider
.
paymentDetails
;
return
WillPopScope
(
child:
Scaffold
(
appBar:
appbar
(
context
,
widget
.
pageName
),
backgroundColor:
AppColors
.
scaffold_bg_color
,
body:
Container
(
child:
SingleChildScrollView
(
child:
Container
(
decoration:
BoxDecoration
(
color:
Colors
.
white
,
borderRadius:
BorderRadius
.
circular
(
16
),
),
margin:
EdgeInsets
.
symmetric
(
vertical:
10
,
horizontal:
10
),
padding:
EdgeInsets
.
symmetric
(
vertical:
10
,
horizontal:
10
),
child:
Column
(
children:
[
Row
(
children:
[
Expanded
(
flex:
1
,
child:
Container
(
height:
50
,
width:
35
,
padding:
EdgeInsets
.
all
(
8.0
),
decoration:
BoxDecoration
(
color:
Color
(
0xFFFFF3CE
),
borderRadius:
BorderRadius
.
circular
(
8
),
),
child:
SvgPicture
.
asset
(
"assets/svg/fin_ic.svg"
),
),
),
SizedBox
(
width:
10
),
Expanded
(
flex:
4
,
child:
SizedBox
(
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
payment_det
.
accountName
??
"-"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
),
),
Text
(
"₹
${payment_det.amount}
"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
app_blue
,
),
),
],
),
),
),
Expanded
(
flex:
2
,
child:
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
5
,
vertical:
10
,
),
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
8
),
color:
Color
(
0xFFE3FFE0
),
),
child:
Center
(
child:
Text
(
payment_det
.
refType
??
"-"
,
textAlign:
TextAlign
.
center
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
Color
(
0xFF0D9C00
),
),
),
),
),
),
],
),
Divider
(
thickness:
0.5
,
color:
Color
(
0xFFD7D7D7
)),
...
List
.
generate
(
provider
.
subHeadings
.
length
,
(
j
)
{
return
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
7
),
child:
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Expanded
(
child:
Text
(
provider
.
Headings
[
j
],
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
),
),
),
Expanded
(
child:
InkResponse
(
onTap:
()
{
if
(
provider
.
Headings
[
j
]
==
"Attachment"
)
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
Fileviewer
(
fileName:
payment_det
.
attachmentViewFileName
!,
fileUrl:
payment_det
.
attachmentDirFilePath
!,
),
),
);
}
},
child:
Text
(
provider
.
Headings
[
j
]
==
"Attachment"
?
"View"
:
"
${provider.subHeadings[j]}
"
,
style:
TextStyle
(
fontSize:
14
,
color:
provider
.
Headings
[
j
]
==
"Attachment"
?
AppColors
.
app_blue
:
Color
(
0xFF818181
),
decoration:
provider
.
Headings
[
j
]
==
"Attachment"
?
TextDecoration
.
underline
:
TextDecoration
.
none
,
decorationColor:
provider
.
Headings
[
j
]
==
"Attachment"
?
AppColors
.
app_blue
:
AppColors
.
white
,
),
),
),
),
],
),
);
}),
],
),
),
),
),
),
onWillPop:
()
{
return
onBackPressed
(
context
);
},
);
},
);
}
}
lib/screens/finance/paymentListPaymentRequisition.dart
0 → 100644
View file @
64c42cd9
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_svg/svg.dart'
;
import
'package:generp/screens/finance/paymentDetailsPaymentRequisition.dart'
;
import
'package:provider/provider.dart'
;
import
'../../Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart'
;
import
'../../Utils/app_colors.dart'
;
import
'../../Utils/commonWidgets.dart'
;
import
'FileViewer.dart'
;
class
Paymentlistpaymentrequisition
extends
StatefulWidget
{
final
String
pageTitleName
;
const
Paymentlistpaymentrequisition
({
super
.
key
,
required
this
.
pageTitleName
});
@override
State
<
Paymentlistpaymentrequisition
>
createState
()
=>
_PaymentlistpaymentrequisitionState
();
}
class
_PaymentlistpaymentrequisitionState
extends
State
<
Paymentlistpaymentrequisition
>
{
@override
void
initState
()
{
// TODO: implement initState
super
.
initState
();
WidgetsBinding
.
instance
.
addPostFrameCallback
((
timeStamp
)
{
var
provider
=
Provider
.
of
<
Paymentrequisitionpaymentslistprovider
>(
context
,
listen:
false
,
);
provider
.
paymentsListAPI
(
context
);
});
}
@override
Widget
build
(
BuildContext
context
)
{
return
Consumer
<
Paymentrequisitionpaymentslistprovider
>(
builder:
(
context
,
provider
,
child
)
{
final
requestLists
=
provider
.
paymentsList
;
return
WillPopScope
(
onWillPop:
()
{
return
onBackPressed
(
context
);
},
child:
Scaffold
(
appBar:
appbar2
(
context
,
widget
.
pageTitleName
,
Row
(
children:
[
InkResponse
(
onTap:
()
{
_showOptionsSheet
(
context
);
},
child:
Icon
(
CupertinoIcons
.
down_arrow
),
),
],
),
),
backgroundColor:
AppColors
.
scaffold_bg_color
,
body:
Container
(
child:
SingleChildScrollView
(
child:
Column
(
children:
[
ListView
.
builder
(
itemCount:
requestLists
.
length
,
shrinkWrap:
true
,
physics:
NeverScrollableScrollPhysics
(),
itemBuilder:
(
context
,
index
)
{
return
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
10
,
),
margin:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
10
,
),
decoration:
BoxDecoration
(
color:
Colors
.
white
,
borderRadius:
BorderRadius
.
circular
(
16
),
),
child:
Column
(
children:
[
Row
(
children:
[
Expanded
(
flex:
1
,
child:
Container
(
height:
50
,
width:
35
,
padding:
EdgeInsets
.
all
(
8.0
),
decoration:
BoxDecoration
(
color:
Color
(
0xFFFFF3CE
),
borderRadius:
BorderRadius
.
circular
(
8
),
),
child:
SvgPicture
.
asset
(
"assets/svg/fin_ic.svg"
,
),
),
),
SizedBox
(
width:
10
),
Expanded
(
flex:
4
,
child:
SizedBox
(
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
requestLists
[
index
].
receipientAccount
!,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
),
),
Text
(
"₹
${requestLists[index].amount}
"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
app_blue
,
),
),
],
),
),
),
Expanded
(
flex:
2
,
child:
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
5
,
vertical:
10
,
),
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
8
),
color:
Color
(
0xFFE3FFE0
),
),
child:
Center
(
child:
Text
(
requestLists
[
index
].
refType
!,
textAlign:
TextAlign
.
center
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
Color
(
0xFF0D9C00
),
),
),
),
),
),
],
),
Divider
(
thickness:
0.5
,
color:
Color
(
0xFFD7D7D7
)),
...
List
.
generate
(
4
,
(
j
)
{
final
headings
=
[
"Request Mode"
,
"Attachment"
,
"Payment Date"
,
"Note"
,
];
final
subHeadings
=
[
requestLists
[
index
].
requestMode
,
"View"
,
// requestLists[index].attachmentDirFilePath
requestLists
[
index
].
paymentDate
,
requestLists
[
index
].
description
,
];
return
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
5
),
child:
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Expanded
(
child:
Text
(
headings
[
j
],
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
),
),
),
Expanded
(
child:
InkResponse
(
onTap:
j
!=
1
?
null
:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
,
)
=>
Fileviewer
(
fileName:
requestLists
[
index
]
.
attachmentViewFileName
!,
fileUrl:
requestLists
[
index
]
.
attachmentDirFilePath
!,
),
),
);
},
child:
Text
(
subHeadings
[
j
]!,
style:
TextStyle
(
fontSize:
14
,
color:
j
==
1
?
AppColors
.
app_blue
:
Color
(
0xFF818181
),
decoration:
j
==
1
?
TextDecoration
.
underline
:
TextDecoration
.
none
,
decorationColor:
j
==
1
?
AppColors
.
app_blue
:
AppColors
.
white
,
),
),
),
),
],
),
);
}),
InkResponse
(
onTap:
()
async
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
Paymentdetailspaymentrequisition
(
pageName:
widget
.
pageTitleName
,
paymentRequestId:
requestLists
[
index
].
id
,
),
),
);
},
child:
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
5
),
child:
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
center
,
mainAxisAlignment:
MainAxisAlignment
.
start
,
children:
[
Text
(
"View Details"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
app_blue
,
),
),
SizedBox
(
width:
5
),
SvgPicture
.
asset
(
"assets/svg/next_button.svg"
,
),
],
),
),
),
],
),
);
},
),
],
),
),
),
),
);
},
);
}
Future
<
void
>
_showOptionsSheet
(
BuildContext
context
)
{
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:
Consumer
<
Paymentrequisitionpaymentslistprovider
>(
builder:
(
context
,
provider
,
child
)
{
return
Container
(
margin:
EdgeInsets
.
only
(
bottom:
15
,
left:
15
,
right:
15
,
top:
10
,
),
child:
SingleChildScrollView
(
child:
Column
(
mainAxisSize:
MainAxisSize
.
min
,
children:
[
SizedBox
(
height:
15
),
...
List
.
generate
(
5
,
(
index
)
{
final
assetnames
=
[
"se_locate_customer"
,
"se_locate_customer"
,
"se_update_complaint"
,
"se_payment_details"
,
"se_payment_details"
,
];
final
Headingnames
=
[
"Copy to Clipboard"
,
"Download CSV"
,
"Download XLSX"
,
"Download PDF"
,
"Print Data"
,
];
return
ListTile
(
onTap:
()
{
switch
(
index
)
{
case
0
:
provider
.
copyToClipboard
(
context
);
break
;
case
1
:
provider
.
downloadCSV
(
context
);
break
;
case
2
:
provider
.
downloadXLS
(
context
);
break
;
case
3
:
provider
.
downloadPDF
(
context
);
break
;
case
4
:
provider
.
printData
(
context
);
break
;
}
},
leading:
SvgPicture
.
asset
(
"assets/svg/
${assetnames[index]}
.svg"
,
),
title:
Text
(
Headingnames
[
index
],
style:
TextStyle
(
fontFamily:
"JakartaMedium"
),
),
trailing:
SvgPicture
.
asset
(
"assets/svg/arrow_right_new.svg"
,
),
);
}),
],
),
),
);
},
),
);
},
);
},
);
}
}
lib/screens/finance/paymentReceiptDetails.dart
0 → 100644
View file @
64c42cd9
import
'package:dropdown_button2/dropdown_button2.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_svg/svg.dart'
;
import
'package:generp/Notifiers/financeProvider/RequesitionLidtDetailsProvider.dart'
;
import
'package:generp/Notifiers/financeProvider/approveRejectPaymentRequestResponse.dart'
;
import
'package:generp/Utils/app_colors.dart'
;
import
'package:generp/Utils/commonWidgets.dart'
;
import
'package:provider/provider.dart'
;
import
'../../Notifiers/financeProvider/paymentReceiptsProvider.dart'
;
import
'../../Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart'
;
import
'FileViewer.dart'
;
class
Paymentreceiptdetails
extends
StatefulWidget
{
final
paymentRequestId
;
final
pageName
;
const
Paymentreceiptdetails
({
super
.
key
,
required
this
.
paymentRequestId
,
required
this
.
pageName
,
});
@override
State
<
Paymentreceiptdetails
>
createState
()
=>
_PaymentreceiptdetailsState
();
}
class
_PaymentreceiptdetailsState
extends
State
<
Paymentreceiptdetails
>
{
@override
void
initState
()
{
// TODO: implement initState
super
.
initState
();
WidgetsBinding
.
instance
.
addPostFrameCallback
((
timeStamp
)
{
var
provider
=
Provider
.
of
<
Paymentreceiptsprovider
>(
context
,
listen:
false
,
);
provider
.
paymentsListDetailsAPI
(
context
,
widget
.
paymentRequestId
);
});
}
@override
Widget
build
(
BuildContext
context
)
{
return
Consumer
<
Paymentreceiptsprovider
>(
builder:
(
context
,
provider
,
child
)
{
var
payment_det
=
provider
.
receiptDetails
;
return
WillPopScope
(
child:
Scaffold
(
appBar:
appbar
(
context
,
widget
.
pageName
),
backgroundColor:
AppColors
.
scaffold_bg_color
,
body:
Container
(
child:
SingleChildScrollView
(
child:
Container
(
decoration:
BoxDecoration
(
color:
Colors
.
white
,
borderRadius:
BorderRadius
.
circular
(
16
),
),
margin:
EdgeInsets
.
symmetric
(
vertical:
10
,
horizontal:
10
),
padding:
EdgeInsets
.
symmetric
(
vertical:
10
,
horizontal:
10
),
child:
Column
(
children:
[
Row
(
children:
[
Expanded
(
flex:
1
,
child:
Container
(
height:
50
,
width:
35
,
padding:
EdgeInsets
.
all
(
8.0
),
decoration:
BoxDecoration
(
color:
Color
(
0xFFFFF3CE
),
borderRadius:
BorderRadius
.
circular
(
8
),
),
child:
SvgPicture
.
asset
(
"assets/svg/fin_ic.svg"
),
),
),
SizedBox
(
width:
10
),
Expanded
(
flex:
4
,
child:
SizedBox
(
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
payment_det
.
receipientAccount
??
"-"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
),
),
Text
(
"₹
${payment_det.amount}
"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
app_blue
,
),
),
],
),
),
),
],
),
Divider
(
thickness:
0.5
,
color:
Color
(
0xFFD7D7D7
)),
...
List
.
generate
(
provider
.
subHeadings
.
length
,
(
j
)
{
return
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
7
),
child:
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Expanded
(
child:
Text
(
provider
.
Headings
[
j
],
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
),
),
),
Expanded
(
child:
InkResponse
(
onTap:
()
{
if
(
provider
.
Headings
[
j
]
==
"Attachment"
)
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
Fileviewer
(
fileName:
payment_det
.
attachmentViewFileName
!,
fileUrl:
payment_det
.
attachmentDirFilePath
!,
),
),
);
}
},
child:
Text
(
provider
.
Headings
[
j
]
==
"Attachment"
?
"View"
:
"
${provider.subHeadings[j]}
"
,
style:
TextStyle
(
fontSize:
14
,
color:
provider
.
Headings
[
j
]
==
"Attachment"
?
AppColors
.
app_blue
:
Color
(
0xFF818181
),
decoration:
provider
.
Headings
[
j
]
==
"Attachment"
?
TextDecoration
.
underline
:
TextDecoration
.
none
,
decorationColor:
provider
.
Headings
[
j
]
==
"Attachment"
?
AppColors
.
app_blue
:
AppColors
.
white
,
),
),
),
),
],
),
);
}),
],
),
),
),
),
),
onWillPop:
()
{
return
onBackPressed
(
context
);
},
);
},
);
}
}
lib/screens/finance/paymentreceiptList.dart
0 → 100644
View file @
64c42cd9
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_svg/svg.dart'
;
import
'package:generp/screens/finance/paymentDetailsPaymentRequisition.dart'
;
import
'package:generp/screens/finance/paymentReceiptDetails.dart'
;
import
'package:provider/provider.dart'
;
import
'../../Notifiers/financeProvider/paymentReceiptsProvider.dart'
;
import
'../../Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart'
;
import
'../../Utils/app_colors.dart'
;
import
'../../Utils/commonWidgets.dart'
;
import
'FileViewer.dart'
;
class
Paymentreceiptlist
extends
StatefulWidget
{
final
String
pageTitleName
;
const
Paymentreceiptlist
({
super
.
key
,
required
this
.
pageTitleName
});
@override
State
<
Paymentreceiptlist
>
createState
()
=>
_PaymentreceiptlistState
();
}
class
_PaymentreceiptlistState
extends
State
<
Paymentreceiptlist
>
{
@override
void
initState
()
{
// TODO: implement initState
super
.
initState
();
WidgetsBinding
.
instance
.
addPostFrameCallback
((
timeStamp
)
{
var
provider
=
Provider
.
of
<
Paymentreceiptsprovider
>(
context
,
listen:
false
,
);
provider
.
paymentsListAPI
(
context
);
});
}
@override
Widget
build
(
BuildContext
context
)
{
return
Consumer
<
Paymentreceiptsprovider
>(
builder:
(
context
,
provider
,
child
)
{
final
requestLists
=
provider
.
receiptsList
;
return
WillPopScope
(
onWillPop:
()
{
return
onBackPressed
(
context
);
},
child:
Scaffold
(
appBar:
appbar2
(
context
,
widget
.
pageTitleName
,
Row
(
children:
[
InkResponse
(
onTap:
()
{
_showOptionsSheet
(
context
);
},
child:
Icon
(
CupertinoIcons
.
down_arrow
),
),
],
),
),
backgroundColor:
AppColors
.
scaffold_bg_color
,
body:
Container
(
child:
SingleChildScrollView
(
child:
Column
(
children:
[
ListView
.
builder
(
itemCount:
requestLists
.
length
,
shrinkWrap:
true
,
physics:
NeverScrollableScrollPhysics
(),
itemBuilder:
(
context
,
index
)
{
return
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
10
,
),
margin:
EdgeInsets
.
symmetric
(
horizontal:
10
,
vertical:
10
,
),
decoration:
BoxDecoration
(
color:
Colors
.
white
,
borderRadius:
BorderRadius
.
circular
(
16
),
),
child:
Column
(
children:
[
Row
(
children:
[
Expanded
(
flex:
1
,
child:
Container
(
height:
50
,
width:
35
,
padding:
EdgeInsets
.
all
(
8.0
),
decoration:
BoxDecoration
(
color:
Color
(
0xFFFFF3CE
),
borderRadius:
BorderRadius
.
circular
(
8
),
),
child:
SvgPicture
.
asset
(
"assets/svg/fin_ic.svg"
,
),
),
),
SizedBox
(
width:
10
),
Expanded
(
flex:
4
,
child:
SizedBox
(
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
requestLists
[
index
].
receipientAccount
!,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
),
),
Text
(
"₹
${requestLists[index].amount}
"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
app_blue
,
),
),
],
),
),
),
],
),
Divider
(
thickness:
0.5
,
color:
Color
(
0xFFD7D7D7
)),
...
List
.
generate
(
4
,
(
j
)
{
final
headings
=
[
"Request Mode"
,
"Attachment"
,
"Receipt Date"
,
"Note"
,
];
final
subHeadings
=
[
requestLists
[
index
].
requestMode
,
"View"
,
// requestLists[index].attachmentDirFilePath
requestLists
[
index
].
receiptDate
,
requestLists
[
index
].
description
,
];
return
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
5
),
child:
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Expanded
(
child:
Text
(
headings
[
j
],
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
),
),
),
Expanded
(
child:
InkResponse
(
onTap:
j
!=
1
?
null
:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
,
)
=>
Fileviewer
(
fileName:
requestLists
[
index
]
.
attachmentViewFileName
!,
fileUrl:
requestLists
[
index
]
.
attachmentDirFilePath
!,
),
),
);
},
child:
Text
(
subHeadings
[
j
]!,
style:
TextStyle
(
fontSize:
14
,
color:
j
==
1
?
AppColors
.
app_blue
:
Color
(
0xFF818181
),
decoration:
j
==
1
?
TextDecoration
.
underline
:
TextDecoration
.
none
,
decorationColor:
j
==
1
?
AppColors
.
app_blue
:
AppColors
.
white
,
),
),
),
),
],
),
);
}),
InkResponse
(
onTap:
()
async
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
Paymentreceiptdetails
(
pageName:
widget
.
pageTitleName
,
paymentRequestId:
requestLists
[
index
].
id
,
),
),
);
},
child:
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
5
),
child:
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
center
,
mainAxisAlignment:
MainAxisAlignment
.
start
,
children:
[
Text
(
"View Details"
,
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
color:
AppColors
.
app_blue
,
),
),
SizedBox
(
width:
5
),
SvgPicture
.
asset
(
"assets/svg/next_button.svg"
,
),
],
),
),
),
],
),
);
},
),
],
),
),
),
),
);
},
);
}
Future
<
void
>
_showOptionsSheet
(
BuildContext
context
)
{
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:
Consumer
<
Paymentrequisitionpaymentslistprovider
>(
builder:
(
context
,
provider
,
child
)
{
return
Container
(
margin:
EdgeInsets
.
only
(
bottom:
15
,
left:
15
,
right:
15
,
top:
10
,
),
child:
SingleChildScrollView
(
child:
Column
(
mainAxisSize:
MainAxisSize
.
min
,
children:
[
SizedBox
(
height:
15
),
...
List
.
generate
(
5
,
(
index
)
{
final
assetnames
=
[
"se_locate_customer"
,
"se_locate_customer"
,
"se_update_complaint"
,
"se_payment_details"
,
"se_payment_details"
,
];
final
Headingnames
=
[
"Copy to Clipboard"
,
"Download CSV"
,
"Download XLSX"
,
"Download PDF"
,
"Print Data"
,
];
return
ListTile
(
onTap:
()
{
switch
(
index
)
{
case
0
:
provider
.
copyToClipboard
(
context
);
break
;
case
1
:
provider
.
downloadCSV
(
context
);
break
;
case
2
:
provider
.
downloadXLS
(
context
);
break
;
case
3
:
provider
.
downloadPDF
(
context
);
break
;
case
4
:
provider
.
printData
(
context
);
break
;
}
},
leading:
SvgPicture
.
asset
(
"assets/svg/
${assetnames[index]}
.svg"
,
),
title:
Text
(
Headingnames
[
index
],
style:
TextStyle
(
fontFamily:
"JakartaMedium"
),
),
trailing:
SvgPicture
.
asset
(
"assets/svg/arrow_right_new.svg"
,
),
);
}),
],
),
),
);
},
),
);
},
);
},
);
}
}
lib/services/api_calling.dart
View file @
64c42cd9
...
@@ -2,6 +2,8 @@ import 'dart:convert';
...
@@ -2,6 +2,8 @@ import 'dart:convert';
import
'dart:io'
;
import
'dart:io'
;
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:generp/Models/ViewVisitDetailsResponseNew.dart'
;
import
'package:generp/Models/ViewVisitDetailsResponseNew.dart'
;
import
'package:generp/Models/financeModels/addDirectPaymentResponse.dart'
;
import
'package:generp/Models/financeModels/paymentRequisitionPaymentsListResponse.dart'
;
import
'package:generp/services/api_names.dart'
;
import
'package:generp/services/api_names.dart'
;
import
'package:generp/services/api_post_request.dart'
;
import
'package:generp/services/api_post_request.dart'
;
import
'package:path_provider/path_provider.dart'
;
import
'package:path_provider/path_provider.dart'
;
...
@@ -40,6 +42,9 @@ import '../Models/ViewVisitDetailsResponse.dart';
...
@@ -40,6 +42,9 @@ import '../Models/ViewVisitDetailsResponse.dart';
import
'../Models/financeModels/addPaymentRequestionResponse.dart'
;
import
'../Models/financeModels/addPaymentRequestionResponse.dart'
;
import
'../Models/financeModels/paymentRequesitionListsResponse.dart'
;
import
'../Models/financeModels/paymentRequesitionListsResponse.dart'
;
import
'../Models/financeModels/paymentRequisitionDetailsResponse.dart'
;
import
'../Models/financeModels/paymentRequisitionDetailsResponse.dart'
;
import
'../Models/financeModels/paymentRequisitionPaymentsDetailsResponse.dart'
;
import
'../Models/financeModels/paymentRequisitionPaymentsReceiptsDetailsResponse.dart'
;
import
'../Models/financeModels/paymentRequisitionPaymentsReceiptsListResponse.dart'
;
import
'../Models/generatorComplaintResponse.dart'
;
import
'../Models/generatorComplaintResponse.dart'
;
import
'../Models/loadGeneratorDetailsResponse.dart'
;
import
'../Models/loadGeneratorDetailsResponse.dart'
;
import
'../Models/financeModels/financeDashboardPagesResponse.dart'
;
import
'../Models/financeModels/financeDashboardPagesResponse.dart'
;
...
@@ -1180,6 +1185,32 @@ class ApiCalling {
...
@@ -1180,6 +1185,32 @@ class ApiCalling {
}
}
}
}
static
Future
<
addDirectPaymentResponse
?>
addDirectPaymentRequestionViewAPI
(
empId
,
session
,
)
async
{
try
{
Map
<
String
,
String
>
data
=
{
'emp_id'
:
(
empId
).
toString
(),
'session_id'
:
(
session
).
toString
(),
};
final
res
=
await
post
(
data
,
addDirectPaymentRequestionViewUrl
,
{});
if
(
res
!=
null
)
{
debugPrint
(
res
.
body
);
return
addDirectPaymentResponse
.
fromJson
(
jsonDecode
(
res
.
body
));
}
else
{
debugPrint
(
"Null Response"
);
return
null
;
}
}
catch
(
e
)
{
debugPrint
(
'hello bev=bug
$e
'
);
return
null
;
}
}
static
addPaymentRequestionSubmitAPI
(
static
addPaymentRequestionSubmitAPI
(
emp_id
,
emp_id
,
session_id
,
session_id
,
...
@@ -1241,6 +1272,69 @@ class ApiCalling {
...
@@ -1241,6 +1272,69 @@ class ApiCalling {
}
}
}
}
static
addDirectPaymentRequestionSubmitAPI
(
emp_id
,
session_id
,
from_account_id
,
to_account_id
,
description
,
payment_mode_id
,
amount
,
payment_date
,
payment_reference_number
,
bank_name
,
bank_branch_name
,
bank_acc_number
,
bank_ifsc_code
,
acc_holder_name
,
bank_upi_id
,
attachment
,
)
async
{
try
{
Map
<
String
,
String
>
data
=
{
'emp_id'
:
emp_id
.
toString
(),
'session_id'
:
session_id
.
toString
(),
'from_account_id'
:
from_account_id
.
toString
(),
'to_account_id'
:
to_account_id
.
toString
(),
'description'
:
description
.
toString
(),
'payment_mode_id'
:
payment_mode_id
.
toString
(),
'amount'
:
amount
.
toString
(),
'payment_date'
:
payment_date
.
toString
(),
'payment_reference_number'
:
payment_reference_number
.
toString
(),
'bank_name'
:
bank_name
.
toString
(),
'bank_branch_name'
:
bank_branch_name
.
toString
(),
'bank_acc_number'
:
bank_acc_number
.
toString
(),
'bank_ifsc_code'
:
bank_ifsc_code
.
toString
(),
'acc_holder_name'
:
acc_holder_name
.
toString
(),
'bank_upi_id'
:
bank_upi_id
.
toString
(),
};
var
res
;
if
(
attachment
!=
null
)
{
res
=
await
postImageNew
(
data
,
{},
addDirectPaymentRequestionSubmitUrl
,
attachment
,
"attachment"
,
);
res
=
jsonDecode
(
res
);
}
else
{
res
=
await
post
(
data
,
addDirectPaymentRequestionSubmitUrl
,
{});
res
=
jsonDecode
(
res
);
}
if
(
res
!=
null
)
{
return
res
;
}
else
{
debugPrint
(
"Null Response"
);
return
null
;
}
}
catch
(
e
)
{
debugPrint
(
'hello bev=bug
$e
'
);
return
null
;
}
}
static
Future
<
paymentRequesitionListsResponse
?>
paymentRequestionListsAPI
(
static
Future
<
paymentRequesitionListsResponse
?>
paymentRequestionListsAPI
(
empId
,
empId
,
session
,
session
,
...
@@ -1291,11 +1385,8 @@ class ApiCalling {
...
@@ -1291,11 +1385,8 @@ class ApiCalling {
}
}
}
}
static
Future
<
approveRejectPaymentRequestResponse
?>
approveRejectPaymentRequestAPI
(
static
Future
<
approveRejectPaymentRequestResponse
?>
empId
,
approveRejectPaymentRequestAPI
(
empId
,
session
,
payment_request_id
)
async
{
session
,
payment_request_id
,
)
async
{
try
{
try
{
Map
<
String
,
String
>
data
=
{
Map
<
String
,
String
>
data
=
{
'emp_id'
:
(
empId
).
toString
(),
'emp_id'
:
(
empId
).
toString
(),
...
@@ -1305,7 +1396,9 @@ class ApiCalling {
...
@@ -1305,7 +1396,9 @@ class ApiCalling {
final
res
=
await
post
(
data
,
approveRejectPaymentRequestUrl
,
{});
final
res
=
await
post
(
data
,
approveRejectPaymentRequestUrl
,
{});
if
(
res
!=
null
)
{
if
(
res
!=
null
)
{
debugPrint
(
res
.
body
);
debugPrint
(
res
.
body
);
return
approveRejectPaymentRequestResponse
.
fromJson
(
jsonDecode
(
res
.
body
));
return
approveRejectPaymentRequestResponse
.
fromJson
(
jsonDecode
(
res
.
body
),
);
}
else
{
}
else
{
debugPrint
(
"Null Response"
);
debugPrint
(
"Null Response"
);
return
null
;
return
null
;
...
@@ -1316,40 +1409,41 @@ class ApiCalling {
...
@@ -1316,40 +1409,41 @@ class ApiCalling {
}
}
}
}
static
Future
<
approveRejectPaymentRequestResponse
?>
RejectPaymentRequestSubmitAPI
(
static
Future
<
approveRejectPaymentRequestResponse
?>
RejectPaymentRequestSubmitAPI
(
empId
,
empId
,
session
,
session
,
mode
,
mode
,
payment_request_id
,
payment_request_id
,
approve_remarks
,
approve_remarks
,
)
async
{
)
async
{
try
{
try
{
Map
<
String
,
String
>
data
=
{
Map
<
String
,
String
>
data
=
{
'emp_id'
:
(
empId
).
toString
(),
'emp_id'
:
(
empId
).
toString
(),
'session_id'
:
(
session
).
toString
(),
'session_id'
:
(
session
).
toString
(),
'type'
:
'reject'
,
'type'
:
'reject'
,
'mode'
:
mode
.
toString
(),
'mode'
:
mode
.
toString
(),
'payment_request_id'
:
(
payment_request_id
).
toString
(),
'payment_request_id'
:
(
payment_request_id
).
toString
(),
'approve_remarks'
:
approve_remarks
,
'approve_remarks'
:
approve_remarks
,
};
};
final
res
=
await
post
(
data
,
approveRejectPaymentRequestSubmitUrl
,
{});
final
res
=
await
post
(
data
,
approveRejectPaymentRequestSubmitUrl
,
{});
if
(
res
!=
null
)
{
if
(
res
!=
null
)
{
debugPrint
(
res
.
body
);
debugPrint
(
res
.
body
);
return
approveRejectPaymentRequestResponse
.
fromJson
(
jsonDecode
(
res
.
body
));
return
approveRejectPaymentRequestResponse
.
fromJson
(
jsonDecode
(
res
.
body
),
);
}
else
{
}
else
{
debugPrint
(
"Null Response"
);
debugPrint
(
"Null Response"
);
return
null
;
return
null
;
}
}
}
catch
(
e
)
{
}
catch
(
e
)
{
debugPrint
(
'hello bev=bug
$e
'
);
debugPrint
(
'hello bev=bug
$e
'
);
return
null
;
return
null
;
}
}
}
}
static
Future
<
approveRejectPaymentRequestResponse
?>
ApprovePaymentRequestSubmitAPI
(
static
Future
<
approveRejectPaymentRequestResponse
?>
ApprovePaymentRequestSubmitAPI
(
empId
,
empId
,
session
,
session
,
mode
,
mode
,
...
@@ -1362,53 +1456,47 @@ class ApiCalling {
...
@@ -1362,53 +1456,47 @@ class ApiCalling {
Map
<
String
,
String
>
data
=
{
Map
<
String
,
String
>
data
=
{
'emp_id'
:
(
empId
).
toString
(),
'emp_id'
:
(
empId
).
toString
(),
'session_id'
:
(
session
).
toString
(),
'session_id'
:
(
session
).
toString
(),
'type'
:
'approve'
,
'type'
:
'approve'
,
'mode'
:
mode
.
toString
(),
'mode'
:
mode
.
toString
(),
'payment_request_id'
:
(
payment_request_id
).
toString
(),
'payment_request_id'
:
(
payment_request_id
).
toString
(),
'approve_remarks'
:
approve_remarks
,
'approve_remarks'
:
approve_remarks
,
'proposed_payment_account_id'
:
proposed_payment_account_id
,
'proposed_payment_account_id'
:
proposed_payment_account_id
,
};
};
final
res
=
await
post
(
data
,
approveRejectPaymentRequestSubmitUrl
,
{});
final
res
=
await
post
(
data
,
approveRejectPaymentRequestSubmitUrl
,
{});
if
(
res
!=
null
)
{
if
(
res
!=
null
)
{
debugPrint
(
res
.
body
);
debugPrint
(
res
.
body
);
return
approveRejectPaymentRequestResponse
.
fromJson
(
jsonDecode
(
res
.
body
));
return
approveRejectPaymentRequestResponse
.
fromJson
(
jsonDecode
(
res
.
body
),
);
}
else
{
}
else
{
debugPrint
(
"Null Response"
);
debugPrint
(
"Null Response"
);
return
null
;
return
null
;
}
}
}
catch
(
e
)
{
}
catch
(
e
)
{
debugPrint
(
'hello bev=bug
$e
'
);
debugPrint
(
'hello bev=bug
$e
'
);
return
null
;
return
null
;
}
}
}
}
static
Future
<
approveRejectPaymentRequestResponse
?>
processApproveRejectPaymentRequestSubmitAPI
(
static
Future
<
approveRejectPaymentRequestResponse
?>
processApproveRejectPaymentRequestSubmitAPI
(
empId
,
empId
,
session
,
session
,
mode
,
mode
,
payment_request_id
,
payment_request_id
,
approved_amount
,
approve_remarks
,
proposed_payment_account_id
,
payment_account_id
,
payment_account_id
,
processing_remarks
,
processing_remarks
,
attachment
attachment
,
)
async
{
)
async
{
try
{
try
{
Map
<
String
,
String
>
data
=
{
Map
<
String
,
String
>
data
=
{
'emp_id'
:
(
empId
).
toString
(),
'emp_id'
:
(
empId
).
toString
(),
'session_id'
:
(
session
).
toString
(),
'session_id'
:
(
session
).
toString
(),
'type'
:
'approve'
,
'type'
:
'approve'
,
'mode'
:
mode
.
toString
(),
'mode'
:
mode
.
toString
(),
'payment_request_id'
:
(
payment_request_id
).
toString
(),
'payment_request_id'
:
(
payment_request_id
).
toString
(),
'approved_amount'
:
approved_amount
,
'payment_account_id'
:
payment_account_id
,
'approve_remarks'
:
approve_remarks
,
'processing_remarks'
:
processing_remarks
,
'proposed_payment_account_id'
:
proposed_payment_account_id
,
'payment_account_id'
:
payment_account_id
,
'processing_remarks'
:
processing_remarks
,
};
};
var
res
;
var
res
;
if
(
attachment
!=
null
)
{
if
(
attachment
!=
null
)
{
...
@@ -1429,4 +1517,94 @@ class ApiCalling {
...
@@ -1429,4 +1517,94 @@ class ApiCalling {
return
null
;
return
null
;
}
}
}
}
static
Future
<
paymentRequisitionPaymentsListResponse
?>
paymentRequisitionPaymentListAPI
(
empId
,
session
,)
async
{
try
{
Map
<
String
,
String
>
data
=
{
'emp_id'
:
(
empId
).
toString
(),
'session_id'
:
(
session
).
toString
(),
};
final
res
=
await
post
(
data
,
paymentRequesitionPaymentsListUrl
,
{});
if
(
res
!=
null
)
{
debugPrint
(
res
.
body
);
return
paymentRequisitionPaymentsListResponse
.
fromJson
(
jsonDecode
(
res
.
body
),
);
}
else
{
debugPrint
(
"Null Response"
);
return
null
;
}
}
catch
(
e
)
{
debugPrint
(
'hello bev=bug
$e
'
);
return
null
;
}
}
static
Future
<
paymentRequisitionPaymentsReceiptsListResponse
?>
paymentRequisitionPaymentReceiptListAPI
(
empId
,
session
,)
async
{
try
{
Map
<
String
,
String
>
data
=
{
'emp_id'
:
(
empId
).
toString
(),
'session_id'
:
(
session
).
toString
(),
};
final
res
=
await
post
(
data
,
paymentRequesitionPaymentsReceiptsListUrl
,
{});
if
(
res
!=
null
)
{
debugPrint
(
res
.
body
);
return
paymentRequisitionPaymentsReceiptsListResponse
.
fromJson
(
jsonDecode
(
res
.
body
),
);
}
else
{
debugPrint
(
"Null Response"
);
return
null
;
}
}
catch
(
e
)
{
debugPrint
(
'hello bev=bug
$e
'
);
return
null
;
}
}
static
Future
<
paymentRequisitionPaymentsDetailsResponse
?>
paymentRequisitionPaymentDetailsAPI
(
empId
,
session
,
payment_id
)
async
{
try
{
Map
<
String
,
String
>
data
=
{
'emp_id'
:
(
empId
).
toString
(),
'session_id'
:
(
session
).
toString
(),
'payment_id'
:
(
payment_id
).
toString
(),
};
final
res
=
await
post
(
data
,
paymentRequesitionPaymentsDetailsUrl
,
{});
if
(
res
!=
null
)
{
debugPrint
(
res
.
body
);
return
paymentRequisitionPaymentsDetailsResponse
.
fromJson
(
jsonDecode
(
res
.
body
),
);
}
else
{
debugPrint
(
"Null Response"
);
return
null
;
}
}
catch
(
e
)
{
debugPrint
(
'hello bev=bug
$e
'
);
return
null
;
}
}
static
Future
<
paymentRequisitionPaymentsReceiptsDetailsResponse
?>
paymentRequisitionPaymentReceiptDetailsAPI
(
empId
,
session
,
payment_id
)
async
{
try
{
Map
<
String
,
String
>
data
=
{
'emp_id'
:
(
empId
).
toString
(),
'session_id'
:
(
session
).
toString
(),
'payment_receipt_id'
:
(
payment_id
).
toString
(),
};
final
res
=
await
post
(
data
,
paymentRequesitionPaymentsReceiptsDetailsUrl
,
{});
if
(
res
!=
null
)
{
debugPrint
(
res
.
body
);
return
paymentRequisitionPaymentsReceiptsDetailsResponse
.
fromJson
(
jsonDecode
(
res
.
body
),
);
}
else
{
debugPrint
(
"Null Response"
);
return
null
;
}
}
catch
(
e
)
{
debugPrint
(
'hello bev=bug
$e
'
);
return
null
;
}
}
}
}
Prev
1
2
Next
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