FIX_view api
This commit is contained in:
parent
f1a57d1d8c
commit
b3884f32c4
File diff suppressed because one or more lines are too long
@ -2153,6 +2153,33 @@ class ApiService {
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> getViewInvoiceList(dynamic data) async {
|
||||
if (_token == null) {
|
||||
await _initializeToken();
|
||||
}
|
||||
|
||||
final Map<String, dynamic> map =
|
||||
data is Map ? Map<String, dynamic>.from(data) : <String, dynamic>{};
|
||||
final invoiceId = map['invoice_id'];
|
||||
final managerId = map['manager_id'];
|
||||
|
||||
final queryParameters = <String, String>{
|
||||
if (invoiceId != null) 'invoice_id': invoiceId.toString(),
|
||||
if (managerId != null) 'manager_id': managerId.toString(),
|
||||
};
|
||||
|
||||
final url = Uri.parse('${Env.apiUrl}invoice/view').replace(
|
||||
queryParameters: queryParameters,
|
||||
);
|
||||
|
||||
final headers = {
|
||||
'Authorization': 'Bearer $_token',
|
||||
'app-signature': Env.App_Signature,
|
||||
};
|
||||
|
||||
return _makeGetRequest(url, headers);
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> getCreateOrUpdate(data) async {
|
||||
final url = Uri.parse('${Env.apiUrl}invoice/create-or-update');
|
||||
// final url = Uri.parse('http://localhost/nhance_partner_be/invoice/create-or-update');
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
@ -76,15 +77,43 @@ class _PayOutDetailsViewState extends ConsumerState<PayOutDetailsView> {
|
||||
'invoice_id': invoiceId,
|
||||
'manager_id': managerId,
|
||||
};
|
||||
final response = await apiService.getCommissionRateList(jsondata);
|
||||
final response = await apiService.getViewInvoiceList(jsondata);
|
||||
if (response['status'] == 'success') {
|
||||
final totPolicy = (response['total_policies'] ?? 0).toString();
|
||||
final totalCommiss = response['total_commission'];
|
||||
final payload = response['data'];
|
||||
List<Map<String, dynamic>> items = [];
|
||||
Map<String, dynamic>? invoiceMap;
|
||||
|
||||
if (payload is Map) {
|
||||
final m = Map<String, dynamic>.from(payload);
|
||||
invoiceMap = m['invoice'] is Map
|
||||
? Map<String, dynamic>.from(m['invoice'] as Map)
|
||||
: null;
|
||||
final rawItems = m['items'];
|
||||
if (rawItems is List) {
|
||||
items = rawItems
|
||||
.map((e) => Map<String, dynamic>.from(e as Map))
|
||||
.toList();
|
||||
}
|
||||
} else if (payload is List) {
|
||||
items = List<Map<String, dynamic>>.from(payload);
|
||||
}
|
||||
|
||||
num commissionSum = 0;
|
||||
for (final row in items) {
|
||||
commissionSum +=
|
||||
num.tryParse(row['commission_amount']?.toString() ?? '0') ?? 0;
|
||||
}
|
||||
|
||||
final totPolicy = (invoiceMap?['total_policies'] ?? items.length)
|
||||
.toString();
|
||||
final totalCommiss =
|
||||
invoiceMap?['total_commission'] ?? commissionSum;
|
||||
|
||||
setState(() {
|
||||
totalPolicies = totPolicy;
|
||||
totalCommission = totalCommiss;
|
||||
masterPolicies = List<Map<String, dynamic>>.from(response['data'] ?? []);
|
||||
filteredPolicies = List<Map<String, dynamic>>.from(response['data'] ?? []);
|
||||
masterPolicies = items;
|
||||
filteredPolicies = List<Map<String, dynamic>>.from(items);
|
||||
});
|
||||
} else {
|
||||
setState(() {
|
||||
@ -200,13 +229,7 @@ class _PayOutDetailsViewState extends ConsumerState<PayOutDetailsView> {
|
||||
);
|
||||
}
|
||||
|
||||
Widget _policyTableBody() {
|
||||
return SizedBox(
|
||||
height: MediaQuery.of(context).size.height * 0.65,
|
||||
child: ListView.builder(
|
||||
itemCount: filteredPolicies.length,
|
||||
itemBuilder: (context, index) {
|
||||
final p = filteredPolicies[index];
|
||||
Widget _policyRow(Map<String, dynamic> p) {
|
||||
return Container(
|
||||
height: 38,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
@ -241,9 +264,6 @@ class _PayOutDetailsViewState extends ConsumerState<PayOutDetailsView> {
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
@ -339,24 +359,68 @@ class _PayOutDetailsViewState extends ConsumerState<PayOutDetailsView> {
|
||||
],
|
||||
),
|
||||
),
|
||||
Card(
|
||||
Expanded(
|
||||
child: Card(
|
||||
color: Colors.white,
|
||||
clipBehavior: Clip.antiAlias,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
elevation: 0,
|
||||
child: SingleChildScrollView(
|
||||
child: ScrollConfiguration(
|
||||
behavior: const MaterialScrollBehavior().copyWith(
|
||||
dragDevices: {
|
||||
PointerDeviceKind.mouse,
|
||||
PointerDeviceKind.touch,
|
||||
PointerDeviceKind.trackpad,
|
||||
},
|
||||
),
|
||||
child: LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
// Same pattern as enquiry list: nested axis scroll views
|
||||
// avoids broken vertical gestures on web/desktop.
|
||||
return SingleChildScrollView(
|
||||
scrollDirection: Axis.horizontal,
|
||||
child: SizedBox(
|
||||
width: _tableMinWidth,
|
||||
primary: false,
|
||||
child: SingleChildScrollView(
|
||||
scrollDirection: Axis.vertical,
|
||||
primary: false,
|
||||
child: ConstrainedBox(
|
||||
constraints: BoxConstraints(
|
||||
minWidth: _tableMinWidth,
|
||||
minHeight: constraints.maxHeight.isFinite
|
||||
? constraints.maxHeight
|
||||
: 0,
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
_policyTableHeader(),
|
||||
_policyTableBody(),
|
||||
if (filteredPolicies.isEmpty)
|
||||
const Padding(
|
||||
padding: EdgeInsets.all(24),
|
||||
child: Center(
|
||||
child: Text(
|
||||
'No policies in this payout',
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
color: Colors.blueGrey,
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
else
|
||||
...filteredPolicies.map(_policyRow),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
padding: const EdgeInsets.all(8),
|
||||
|
||||
@ -15,8 +15,8 @@
|
||||
the `--base-href` argument provided to `flutter build`.
|
||||
-->
|
||||
<!-- <base href="$FLUTTER_BASE_HREF"> -->
|
||||
<!-- <base href="/partner/"> <!- Live build: also check env.dart (line 8) -->
|
||||
<base href="/nhance/partner/app/">
|
||||
<!-- <base href="/partner/"> --> <!-- Live build: also check env.dart (line 8) -->
|
||||
<base href="/nhance/partner/app/">
|
||||
<!-- <base href="{Env.baseHref}">-->
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
Loading…
Reference in New Issue
Block a user