From 87e0f7608f06c08e622cf5e73b467f3893db6f0c Mon Sep 17 00:00:00 2001 From: Priya Chetiwal Date: Thu, 6 Feb 2025 23:05:39 +0530 Subject: [PATCH 1/2] latest code of transporter --- .../model/view_freight_bill_res_model.dart | 316 +++++++++++++----- .../view/sub_views/generate_fright_bill.dart | 36 +- .../view/sub_views/pending_generation.dart | 9 + .../view/sub_views/view_freight_bill.dart | 80 ++--- .../transporter/view/transport_view.dart | 194 ++++++----- lib/main.dart | 1 + 6 files changed, 388 insertions(+), 248 deletions(-) diff --git a/lib/feature/presentation/screens/transporter/model/view_freight_bill_res_model.dart b/lib/feature/presentation/screens/transporter/model/view_freight_bill_res_model.dart index 2b96c6c..8a365e4 100644 --- a/lib/feature/presentation/screens/transporter/model/view_freight_bill_res_model.dart +++ b/lib/feature/presentation/screens/transporter/model/view_freight_bill_res_model.dart @@ -9,95 +9,124 @@ ViewFreightBillResModel viewFreightBillResModelFromJson(String str) => ViewFreig String viewFreightBillResModelToJson(ViewFreightBillResModel data) => json.encode(data.toJson()); class ViewFreightBillResModel { - final List>? content; - final Pageable? pageable; - final bool? last; - final int? totalElements; - final int? totalPages; - final int? size; - final int? number; - final Sort? sort; - final bool? first; - final int? numberOfElements; - final bool? empty; + List>? content; + Pageable? pageable; + int? totalPages; + int? totalElements; + bool? last; + int? size; + int? number; + Sort? sort; + int? numberOfElements; + bool? first; + bool? empty; ViewFreightBillResModel({ this.content, this.pageable, - this.last, - this.totalElements, this.totalPages, + this.totalElements, + this.last, this.size, this.number, this.sort, - this.first, this.numberOfElements, + this.first, this.empty, }); + ViewFreightBillResModel copyWith({ + List>? content, + Pageable? pageable, + int? totalPages, + int? totalElements, + bool? last, + int? size, + int? number, + Sort? sort, + int? numberOfElements, + bool? first, + bool? empty, + }) => + ViewFreightBillResModel( + content: content ?? this.content, + pageable: pageable ?? this.pageable, + totalPages: totalPages ?? this.totalPages, + totalElements: totalElements ?? this.totalElements, + last: last ?? this.last, + size: size ?? this.size, + number: number ?? this.number, + sort: sort ?? this.sort, + numberOfElements: numberOfElements ?? this.numberOfElements, + first: first ?? this.first, + empty: empty ?? this.empty, + ); + factory ViewFreightBillResModel.fromJson(Map json) => ViewFreightBillResModel( content: json["content"] == null ? [] : List>.from(json["content"]!.map((x) => List.from(x.map((x) => FreightBill.fromJson(x))))), pageable: json["pageable"] == null ? null : Pageable.fromJson(json["pageable"]), - last: json["last"], - totalElements: json["totalElements"], totalPages: json["totalPages"], + totalElements: json["totalElements"], + last: json["last"], size: json["size"], number: json["number"], sort: json["sort"] == null ? null : Sort.fromJson(json["sort"]), - first: json["first"], numberOfElements: json["numberOfElements"], + first: json["first"], empty: json["empty"], ); Map toJson() => { "content": content == null ? [] : List.from(content!.map((x) => List.from(x.map((x) => x.toJson())))), "pageable": pageable?.toJson(), - "last": last, - "totalElements": totalElements, "totalPages": totalPages, + "totalElements": totalElements, + "last": last, "size": size, "number": number, "sort": sort?.toJson(), - "first": first, "numberOfElements": numberOfElements, + "first": first, "empty": empty, }; } class FreightBill { - final int? freightbillId; - final String? freightbillCode; - final String? status; - final DateTime? statusDate; - final String? plantCode; - final String? materialCode; - final String? fromLocation; - final int? billingQty; - final dynamic uom; - final double? freightAmount; - final double? cgst; - final double? sgst; - final int? igst; - final double? totalGst; - final double? shipmentNetAmount; - final DateTime? createdOn; - final dynamic trasnporterInvoiceNo; - final dynamic trasnporterInvoiceNoDate; - final dynamic utr1No; - final dynamic utr2No; - final dynamic utr3No; - final dynamic utr4No; - final dynamic utr5No; - final dynamic utr1PaymentAmount; - final dynamic utr2PaymentAmount; - final dynamic utr3PaymentAmount; - final dynamic utr4PaymentAmount; - final dynamic utr5PaymentAmount; - final dynamic utr1Date; - final dynamic utr2Date; - final dynamic utr3Date; - final dynamic utr4Date; - final dynamic utr5Date; + int? freightbillId; + String? freightbillCode; + String? status; + DateTime? statusDate; + String? plantCode; + String? plantDesc; + String? materialCode; + String? materialDescription; + String? fromLocation; + dynamic billingNetQty; + dynamic uom; + double? shipmentGrossCost; + double? cgst; + double? sgst; + int? igst; + double? totalGst; + double? shipmentNetCost; + DateTime? createdOn; + dynamic transporterInvoiceNo; + dynamic transporterInvoiceNoDate; + dynamic utr1No; + dynamic utr2No; + dynamic utr3No; + dynamic utr4No; + dynamic utr5No; + dynamic utr1PaymentAmount; + dynamic utr2PaymentAmount; + dynamic utr3PaymentAmount; + dynamic utr4PaymentAmount; + dynamic utr5PaymentAmount; + dynamic utr1Date; + dynamic utr2Date; + dynamic utr3Date; + dynamic utr4Date; + dynamic utr5Date; FreightBill({ this.freightbillId, @@ -105,19 +134,21 @@ class FreightBill { this.status, this.statusDate, this.plantCode, + this.plantDesc, this.materialCode, + this.materialDescription, this.fromLocation, - this.billingQty, + this.billingNetQty, this.uom, - this.freightAmount, + this.shipmentGrossCost, this.cgst, this.sgst, this.igst, this.totalGst, - this.shipmentNetAmount, + this.shipmentNetCost, this.createdOn, - this.trasnporterInvoiceNo, - this.trasnporterInvoiceNoDate, + this.transporterInvoiceNo, + this.transporterInvoiceNoDate, this.utr1No, this.utr2No, this.utr3No, @@ -135,25 +166,102 @@ class FreightBill { this.utr5Date, }); + FreightBill copyWith({ + int? freightbillId, + String? freightbillCode, + String? status, + DateTime? statusDate, + String? plantCode, + String? plantDesc, + String? materialCode, + String? materialDescription, + String? fromLocation, + dynamic billingNetQty, + dynamic uom, + double? shipmentGrossCost, + double? cgst, + double? sgst, + int? igst, + double? totalGst, + double? shipmentNetCost, + DateTime? createdOn, + dynamic transporterInvoiceNo, + dynamic transporterInvoiceNoDate, + dynamic utr1No, + dynamic utr2No, + dynamic utr3No, + dynamic utr4No, + dynamic utr5No, + dynamic utr1PaymentAmount, + dynamic utr2PaymentAmount, + dynamic utr3PaymentAmount, + dynamic utr4PaymentAmount, + dynamic utr5PaymentAmount, + dynamic utr1Date, + dynamic utr2Date, + dynamic utr3Date, + dynamic utr4Date, + dynamic utr5Date, + }) => + FreightBill( + freightbillId: freightbillId ?? this.freightbillId, + freightbillCode: freightbillCode ?? this.freightbillCode, + status: status ?? this.status, + statusDate: statusDate ?? this.statusDate, + plantCode: plantCode ?? this.plantCode, + plantDesc: plantDesc ?? this.plantDesc, + materialCode: materialCode ?? this.materialCode, + materialDescription: materialDescription ?? this.materialDescription, + fromLocation: fromLocation ?? this.fromLocation, + billingNetQty: billingNetQty ?? this.billingNetQty, + uom: uom ?? this.uom, + shipmentGrossCost: shipmentGrossCost ?? this.shipmentGrossCost, + cgst: cgst ?? this.cgst, + sgst: sgst ?? this.sgst, + igst: igst ?? this.igst, + totalGst: totalGst ?? this.totalGst, + shipmentNetCost: shipmentNetCost ?? this.shipmentNetCost, + createdOn: createdOn ?? this.createdOn, + transporterInvoiceNo: transporterInvoiceNo ?? this.transporterInvoiceNo, + transporterInvoiceNoDate: transporterInvoiceNoDate ?? this.transporterInvoiceNoDate, + utr1No: utr1No ?? this.utr1No, + utr2No: utr2No ?? this.utr2No, + utr3No: utr3No ?? this.utr3No, + utr4No: utr4No ?? this.utr4No, + utr5No: utr5No ?? this.utr5No, + utr1PaymentAmount: utr1PaymentAmount ?? this.utr1PaymentAmount, + utr2PaymentAmount: utr2PaymentAmount ?? this.utr2PaymentAmount, + utr3PaymentAmount: utr3PaymentAmount ?? this.utr3PaymentAmount, + utr4PaymentAmount: utr4PaymentAmount ?? this.utr4PaymentAmount, + utr5PaymentAmount: utr5PaymentAmount ?? this.utr5PaymentAmount, + utr1Date: utr1Date ?? this.utr1Date, + utr2Date: utr2Date ?? this.utr2Date, + utr3Date: utr3Date ?? this.utr3Date, + utr4Date: utr4Date ?? this.utr4Date, + utr5Date: utr5Date ?? this.utr5Date, + ); + factory FreightBill.fromJson(Map json) => FreightBill( freightbillId: json["freightbill_id"], freightbillCode: json["freightbill_code"], status: json["status"], statusDate: json["status_date"] == null ? null : DateTime.parse(json["status_date"]), plantCode: json["plant_code"], + plantDesc: json["plant_desc"], materialCode: json["material_code"], + materialDescription: json["material_description"], fromLocation: json["from_location"], - billingQty: json["billing_qty"], + billingNetQty: json["billing_net_qty"], uom: json["uom"], - freightAmount: json["freight_amount"]?.toDouble(), + shipmentGrossCost: json["shipment_gross_cost"]?.toDouble(), cgst: json["cgst"]?.toDouble(), sgst: json["sgst"]?.toDouble(), igst: json["igst"], totalGst: json["total_gst"]?.toDouble(), - shipmentNetAmount: json["shipment_net_amount"]?.toDouble(), + shipmentNetCost: json["shipment_net_cost"]?.toDouble(), createdOn: json["created_on"] == null ? null : DateTime.parse(json["created_on"]), - trasnporterInvoiceNo: json["trasnporter_invoice_no"], - trasnporterInvoiceNoDate: json["trasnporter_invoice_no_date"], + transporterInvoiceNo: json["transporter_invoice_no"], + transporterInvoiceNoDate: json["transporter_invoice_no_date"], utr1No: json["utr1_no"], utr2No: json["utr2_no"], utr3No: json["utr3_no"], @@ -177,19 +285,21 @@ class FreightBill { "status": status, "status_date": "${statusDate!.year.toString().padLeft(4, '0')}-${statusDate!.month.toString().padLeft(2, '0')}-${statusDate!.day.toString().padLeft(2, '0')}", "plant_code": plantCode, + "plant_desc": plantDesc, "material_code": materialCode, + "material_description": materialDescription, "from_location": fromLocation, - "billing_qty": billingQty, + "billing_net_qty": billingNetQty, "uom": uom, - "freight_amount": freightAmount, + "shipment_gross_cost": shipmentGrossCost, "cgst": cgst, "sgst": sgst, "igst": igst, "total_gst": totalGst, - "shipment_net_amount": shipmentNetAmount, + "shipment_net_cost": shipmentNetCost, "created_on": createdOn?.toIso8601String(), - "trasnporter_invoice_no": trasnporterInvoiceNo, - "trasnporter_invoice_no_date": trasnporterInvoiceNoDate, + "transporter_invoice_no": transporterInvoiceNo, + "transporter_invoice_no_date": transporterInvoiceNoDate, "utr1_no": utr1No, "utr2_no": utr2No, "utr3_no": utr3No, @@ -209,61 +319,89 @@ class FreightBill { } class Pageable { - final Sort? sort; - final int? offset; - final int? pageSize; - final int? pageNumber; - final bool? unpaged; - final bool? paged; + Sort? sort; + int? pageNumber; + int? pageSize; + int? offset; + bool? paged; + bool? unpaged; Pageable({ this.sort, - this.offset, - this.pageSize, this.pageNumber, - this.unpaged, + this.pageSize, + this.offset, this.paged, + this.unpaged, }); + Pageable copyWith({ + Sort? sort, + int? pageNumber, + int? pageSize, + int? offset, + bool? paged, + bool? unpaged, + }) => + Pageable( + sort: sort ?? this.sort, + pageNumber: pageNumber ?? this.pageNumber, + pageSize: pageSize ?? this.pageSize, + offset: offset ?? this.offset, + paged: paged ?? this.paged, + unpaged: unpaged ?? this.unpaged, + ); + factory Pageable.fromJson(Map json) => Pageable( sort: json["sort"] == null ? null : Sort.fromJson(json["sort"]), - offset: json["offset"], - pageSize: json["pageSize"], pageNumber: json["pageNumber"], - unpaged: json["unpaged"], + pageSize: json["pageSize"], + offset: json["offset"], paged: json["paged"], + unpaged: json["unpaged"], ); Map toJson() => { "sort": sort?.toJson(), - "offset": offset, - "pageSize": pageSize, "pageNumber": pageNumber, - "unpaged": unpaged, + "pageSize": pageSize, + "offset": offset, "paged": paged, + "unpaged": unpaged, }; } class Sort { - final bool? empty; - final bool? sorted; - final bool? unsorted; + bool? sorted; + bool? empty; + bool? unsorted; Sort({ - this.empty, this.sorted, + this.empty, this.unsorted, }); + Sort copyWith({ + bool? sorted, + bool? empty, + bool? unsorted, + }) => + Sort( + sorted: sorted ?? this.sorted, + empty: empty ?? this.empty, + unsorted: unsorted ?? this.unsorted, + ); + factory Sort.fromJson(Map json) => Sort( - empty: json["empty"], sorted: json["sorted"], + empty: json["empty"], unsorted: json["unsorted"], ); Map toJson() => { - "empty": empty, "sorted": sorted, + "empty": empty, "unsorted": unsorted, }; } diff --git a/lib/feature/presentation/screens/transporter/view/sub_views/generate_fright_bill.dart b/lib/feature/presentation/screens/transporter/view/sub_views/generate_fright_bill.dart index d89bd34..ac2eaff 100644 --- a/lib/feature/presentation/screens/transporter/view/sub_views/generate_fright_bill.dart +++ b/lib/feature/presentation/screens/transporter/view/sub_views/generate_fright_bill.dart @@ -12,6 +12,7 @@ import '../../../../../../../components/common/common_btn.dart'; import '../../../../../../../components/common/custom_drop_down.dart'; import '../../../../../../../components/common/data_cell.dart'; import '../../../../../../../components/styles/app_strings.dart'; +import '../../../../widgets/custom_pagination.dart'; import '../../view_model/transport_controller.dart'; import '../../widgets/common_card.dart'; import '../../widgets/freightbill_dialog.dart'; @@ -368,6 +369,8 @@ class GenerateFrightBill extends StatelessWidget { ); } return Column( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.end, children: [ Container( padding: EdgeInsets.symmetric(horizontal: 10), @@ -416,9 +419,10 @@ class GenerateFrightBill extends StatelessWidget { ), Container( margin: EdgeInsets.only(bottom: 16, top: 16), - height: controller.isFilterVisibleGenerateFreight.value == true - ? MediaQuery.of(context).size.height * 0.3 - : MediaQuery.of(context).size.height * 0.64, + height: + controller.isFilterVisibleGenerateFreight.value == true + ? MediaQuery.of(context).size.height * 0.3 + : MediaQuery.of(context).size.height * 0.64, child: RawScrollbar( thumbColor: AppColors.clrD9, radius: Radius.circular(2), @@ -520,16 +524,19 @@ class GenerateFrightBill extends StatelessWidget { ), // editableCell(index, "0${index + 1}"), editableCell(index, stoppage.grnNo ?? ""), - editableCell(index, stoppage.plantCode ?? ""), + editableCell( + index, stoppage.plantCode ?? ""), editableCell( index, stoppage.materialCode ?? ""), editableCell( index, DateFormat('yyyy-MM-dd').format( - stoppage.grnDate ?? DateTime.now())), + stoppage.grnDate ?? + DateTime.now())), editableCell( index, stoppage.fromLocation ?? ""), - editableCell(index, stoppage.vehicleNo ?? ""), + editableCell( + index, stoppage.vehicleNo ?? ""), editableCell(index, stoppage.lrNo ?? ""), editableCell( index, @@ -537,15 +544,17 @@ class GenerateFrightBill extends StatelessWidget { stoppage.lrDate ?? DateTime.now())), editableCell(index, stoppage.dispQty?.toString() ?? ""), - editableCell( - index, stoppage.netQty?.toString() ?? ""), + editableCell(index, + stoppage.netQty?.toString() ?? ""), editableCell(index, stoppage.billingQty?.toString() ?? ""), editableCell(index, "-"), editableCell(index, stoppage.freightRate?.toString() ?? ""), - editableCell(index, - stoppage.shipmentCost?.toString() ?? ""), + editableCell( + index, + stoppage.shipmentCost?.toString() ?? + ""), ], ); }), @@ -559,6 +568,13 @@ class GenerateFrightBill extends StatelessWidget { ], ); }), + CustomPagination( + currentPage: controller.currentPage.value, + totalPages: controller.totalPages.value, + onPageChanged: (int page) { + controller.onPageChanged(page); + }, + ), ], ); } diff --git a/lib/feature/presentation/screens/transporter/view/sub_views/pending_generation.dart b/lib/feature/presentation/screens/transporter/view/sub_views/pending_generation.dart index 08f89b8..4a36bad 100644 --- a/lib/feature/presentation/screens/transporter/view/sub_views/pending_generation.dart +++ b/lib/feature/presentation/screens/transporter/view/sub_views/pending_generation.dart @@ -3,6 +3,7 @@ import 'package:get/get.dart'; import 'package:intl/intl.dart'; import 'package:shayog/components/styles/textStyles.dart'; import 'package:shayog/feature/presentation/screens/transporter/view_model/transport_controller.dart'; +import 'package:shayog/feature/presentation/widgets/custom_pagination.dart'; import 'package:sizer/sizer.dart'; import 'package:vph_web_date_picker/vph_web_date_picker.dart'; import '../../../../../../../components/common/data_cell.dart'; @@ -519,9 +520,17 @@ class PendingGeneration extends StatelessWidget { ), ), ), + ], ); }), + CustomPagination( + currentPage: controller.currentPage.value, + totalPages: controller.totalPages.value, + onPageChanged: (int page) { + controller.onPageChanged(page); + }, + ), ], ); } diff --git a/lib/feature/presentation/screens/transporter/view/sub_views/view_freight_bill.dart b/lib/feature/presentation/screens/transporter/view/sub_views/view_freight_bill.dart index 03e5f81..ac69d75 100644 --- a/lib/feature/presentation/screens/transporter/view/sub_views/view_freight_bill.dart +++ b/lib/feature/presentation/screens/transporter/view/sub_views/view_freight_bill.dart @@ -1,9 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:shayog/components/common/common_btn.dart'; -import 'package:shayog/components/styles/textStyles.dart'; -import 'package:shayog/feature/presentation/screens/transporter/model/sub_freight_view_dialog_model.dart'; -import 'package:shayog/feature/presentation/screens/transporter/model/view_freight_bill_res_model.dart'; +import 'package:shayog/feature/presentation/widgets/custom_pagination.dart'; import 'package:sizer/sizer.dart'; import 'package:vph_web_date_picker/vph_web_date_picker.dart'; import '../../../../../../../components/common/data_cell.dart'; @@ -11,11 +9,8 @@ import '../../../../../../../components/styles/app_colors.dart'; import '../../../../../../../components/styles/app_strings.dart'; import '../../../../../../components/common/common_button.dart'; import '../../../../../../components/common/custom_drop_down.dart'; -import '../../../../widgets/custom_pagination.dart'; import '../../../../widgets/text_view.dart'; import '../../view_model/transport_controller.dart'; -import '../../widgets/common_card.dart'; -import '../../widgets/freightbill_dialog.dart'; class ViewFreightBill extends StatelessWidget { ViewFreightBill({super.key}); @@ -57,8 +52,6 @@ class ViewFreightBill extends StatelessWidget { selected.plantCode ?? ""; controller.showPlantErrorViewFreight.value = false; - print( - "selectPlant${controller.selectPlant.value}"); } }, hintText: "Select Plant", @@ -294,19 +287,6 @@ class ViewFreightBill extends StatelessWidget { width: 100, text: AppStrings.submit, clickAction: () { - // if (controller.showPlantErrorFreight - // .value || - // controller.showProductErrorFreight - // .value || - // controller.showTransactionErrorFreight - // .value - // ) { - // print( - // 'controller.showProductError.value ${controller - // .showProductError.value}'); - // } else { - // controller.postData(); - // } controller .handleFilterSubmitViewFreightBill(); }, @@ -323,7 +303,6 @@ class ViewFreightBill extends StatelessWidget { ), ) : SizedBox.shrink()), - Obx(() { if (controller.freightViewLoader.value) { return SizedBox( @@ -347,7 +326,6 @@ class ViewFreightBill extends StatelessWidget { if (controller.freightBillData.isEmpty || controller.freightBillData == []) { return SizedBox( - height: controller.isFilterVisibleViewFreight.value ? MediaQuery.sizeOf(context).height * 0.4 : MediaQuery.sizeOf(context).height * 0.6, @@ -460,14 +438,12 @@ class ViewFreightBill extends StatelessWidget { controller.freightBillCode.value = freightBill.freightbillCode ?? ""; - print( - 'freightBill.trasnporterInvoiceNo ${freightBill.trasnporterInvoiceNo}'); return DataRow( cells: [ editableCell( - index, "${freightBill.plantCode}"), + index, "${freightBill.plantCode}-${freightBill.plantDesc}"), editableCell( - index, "${freightBill.materialCode}"), + index, "${freightBill.materialCode}-${freightBill.materialDescription}"), editableCell( index, freightBill.freightbillCode ?? "-", @@ -484,15 +460,15 @@ class ViewFreightBill extends StatelessWidget { editableCell( index, "${freightBill.createdOn ?? "-"}"), editableCell(index, - "${freightBill.trasnporterInvoiceNo ?? "-"}"), + "${freightBill.transporterInvoiceNo ?? "-"}"), editableCell(index, - "${freightBill.trasnporterInvoiceNoDate ?? "-"}"), + "${freightBill.transporterInvoiceNoDate ?? "-"}"), editableCell(index, - "${freightBill.billingQty ?? "-"}"), + "${freightBill.billingNetQty ?? "-"}"), editableCell( index, "${freightBill.uom ?? "-"}"), editableCell(index, - "${freightBill.freightAmount ?? "-"}"), + "${freightBill.shipmentGrossCost ?? "-"}"), editableCell( index, "${freightBill.cgst ?? "-"}"), editableCell( @@ -504,21 +480,21 @@ class ViewFreightBill extends StatelessWidget { editableCell( index, "${freightBill.totalGst ?? "-"}"), editableCell(index, - "${freightBill.freightAmount ?? "-"}"), + "${freightBill.shipmentNetCost ?? "-"}"), editableCell(index, - "${freightBill.trasnporterInvoiceNoDate ?? "-"}"), + "${freightBill.transporterInvoiceNoDate ?? "-"}"), editableCell( - index, "${freightBill.status ?? "-"}"), + index, freightBill.status ?? "-"), editableCell( index, "${freightBill.totalGst ?? "-"}"), editableCell(index, - "${freightBill.trasnporterInvoiceNoDate ?? "-"}"), + "${freightBill.transporterInvoiceNoDate ?? "-"}"), editableCell( index, "${freightBill.utr5No ?? "-"}"), editableCell( index, "${freightBill.utr1Date ?? "-"}"), editableCell(index, - "${freightBill.freightAmount ?? "-"}"), + "${freightBill.shipmentNetCost ?? "-"}"), editableCell( index, "${freightBill.utr1No ?? "-"}"), editableCell( @@ -558,13 +534,6 @@ class ViewFreightBill extends StatelessWidget { ), ), ), - // CustomPagination( - // currentPage: controller.currentPage.value, - // totalPages: controller.totalPages.value, - // onPageChanged: (int page) { - // controller.onPageChanged(page); - // }, - // ), ), ], ); @@ -612,8 +581,7 @@ class ViewFreightBill extends StatelessWidget { ), ), Expanded( - child: contr.grnListDialog == null || - contr.grnListDialog.isEmpty + child: contr.grnListDialog.isEmpty ? Center(child: Text('No data available.')) : Column( mainAxisSize: MainAxisSize.min, @@ -706,12 +674,20 @@ class ViewFreightBill extends StatelessWidget { ), editableCell(index, "${freightBill.grnDate ?? "-"}"), - editableCell(index, - "${freightBill.fromLocation ?? "-"}"), - editableCell(index, - "${freightBill.vehicleNo ?? "-"}"), - editableCell(index, - "${freightBill.transporterCode ?? "-"}"), + editableCell( + index, + freightBill + .fromLocation ?? + "-"), + editableCell( + index, + freightBill.vehicleNo ?? + "-"), + editableCell( + index, + freightBill + .transporterCode ?? + "-"), editableCell(index, "${freightBill.lrDate ?? "-"}"), editableCell(index, @@ -763,3 +739,5 @@ class ViewFreightBill extends StatelessWidget { ); } } + + diff --git a/lib/feature/presentation/screens/transporter/view/transport_view.dart b/lib/feature/presentation/screens/transporter/view/transport_view.dart index 7bed6b4..eb3904d 100644 --- a/lib/feature/presentation/screens/transporter/view/transport_view.dart +++ b/lib/feature/presentation/screens/transporter/view/transport_view.dart @@ -22,6 +22,7 @@ import 'sub_views/view_freight_bill.dart'; import 'package:file_picker/file_picker.dart'; import 'package:path_provider/path_provider.dart'; + class TransportView extends StatefulWidget { const TransportView({super.key}); @@ -57,7 +58,7 @@ class _TransportViewState extends State { () => InkWell( onTap: () { ctrl.selectedIndex.value = index; - ctrl.selectedUser.value =0; + ctrl.selectedUser.value = 0; }, child: Column( mainAxisAlignment: MainAxisAlignment.start, @@ -164,97 +165,99 @@ class _TransportViewState extends State { dataColumn("Add Signature"), ], rows: List.generate(ctrl.getInvoiceData.length, - (index) { - final getInvoice = ctrl.getInvoiceData[index]; - return DataRow( - cells: [ - editableCell(index, "${getInvoice.invoiceId}"), - editableCell(index, getInvoice.freightbillCode), - editableCell( - index, - DateFormat("dd MMMM yyyy").format( - DateTime.parse('${getInvoice.createdOn}'))), - editableCell( - index, "${getInvoice.sapReferenceno ?? "-"}"), - editableCell( - index, - DateFormat("d MMMM yyyy").format(DateTime.parse( - '${getInvoice.shipmentCostDate}'))), - editableCell( - index, "${getInvoice.shipmentCost ?? "-"}"), - editableCell(index,"${getInvoice.statusId?? "-"}"), - editableCell(index, getInvoice.materialCode?? "-"), - editableCell(index, getInvoice.materialDescription, isLink: true), - editableCell(index,getInvoice. status?? "-"), - editableCell(index, getInvoice.plantCode?? "-", isLink: true), - DataCell( - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Container( - padding: EdgeInsets.all(4), - decoration: BoxDecoration( - border: Border.all(color: Colors.blue), - borderRadius: BorderRadius.circular(4), - ), - child: InkWell( - onTap: () { }, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(Icons.download, - size: 16, color: Colors.blue), - SizedBox(width: 4), - Text('Download', - style: TextStyle( - color: Colors.blue, - fontSize: 12)), - ], - ), - ), + (index) { + final getInvoice = ctrl.getInvoiceData[index]; + return DataRow( + cells: [ + editableCell(index, "${getInvoice.invoiceId}"), + editableCell(index, getInvoice.freightbillCode), + editableCell( + index, + DateFormat("dd MMMM yyyy").format( + DateTime.parse('${getInvoice.createdOn}'))), + editableCell( + index, "${getInvoice.sapReferenceno ?? "-"}"), + editableCell( + index, + DateFormat("d MMMM yyyy").format(DateTime.parse( + '${getInvoice.shipmentCostDate}'))), + editableCell( + index, "${getInvoice.shipmentCost ?? "-"}"), + editableCell(index, "${getInvoice.statusId ?? "-"}"), + editableCell(index, getInvoice.materialCode ?? "-"), + editableCell(index, getInvoice.materialDescription, + isLink: true), + editableCell(index, getInvoice.status ?? "-"), + editableCell(index, getInvoice.plantCode ?? "-", + isLink: true), + DataCell( + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + border: Border.all(color: Colors.blue), + borderRadius: BorderRadius.circular(4), + ), + child: InkWell( + onTap: () {}, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.download, + size: 16, color: Colors.blue), + SizedBox(width: 4), + Text('Download', + style: TextStyle( + color: Colors.blue, + fontSize: 12)), + ], ), - SizedBox(width: 8), - Container( - padding: EdgeInsets.all(4), - decoration: BoxDecoration( - border: Border.all(color: Colors.blue), - borderRadius: BorderRadius.circular(4), - ), - child: InkWell( - onTap: () => handleFileUpload(index), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(Icons.upload, - size: 16, color: Colors.blue), - SizedBox(width: 4), - Text('Upload', - style: TextStyle( - color: Colors.blue, - fontSize: 12)), - ], - ), - ), + ), + ), + SizedBox(width: 8), + Container( + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + border: Border.all(color: Colors.blue), + borderRadius: BorderRadius.circular(4), + ), + child: InkWell( + onTap: () => handleFileUpload(index), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.upload, + size: 16, color: Colors.blue), + SizedBox(width: 4), + Text('Upload', + style: TextStyle( + color: Colors.blue, + fontSize: 12)), + ], ), + ), + ), - //###################### This Function is used to close or cut uploaded File in Local ####################### - // if (uploadedFiles.containsKey(index)) - // IconButton( - // icon: Icon(Icons.close, size: 16, color: Colors.red), - // onPressed: () { - // setState(() { - // uploadedFiles.remove(index); - // }); - // }, - // ), + //###################### This Function is used to close or cut uploaded File in Local ####################### + // if (uploadedFiles.containsKey(index)) + // IconButton( + // icon: Icon(Icons.close, size: 16, color: Colors.red), + // onPressed: () { + // setState(() { + // uploadedFiles.remove(index); + // }); + // }, + // ), //########################################################################################################### - ], - ), - ), - ], - ); - }), + ], + ), + ), + ], + ); + }), ), ), ), @@ -284,7 +287,8 @@ class _TransportViewState extends State { PlatformFile file = result.files.first; // Validate file size (optional) - if (file.size > 10 * 1024 * 1024) { // 10MB limit + if (file.size > 10 * 1024 * 1024) { + // 10MB limit ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('File size must be less than 10MB'), @@ -316,14 +320,6 @@ class _TransportViewState extends State { } } - _commonText(String title) { - return Text( - title, - style: TextStyle( - fontSize: 13, color: Colors.black, fontWeight: FontWeight.w900), - ); - } - _dashboardView() { return RawScrollbar( child: Column( @@ -350,8 +346,10 @@ class _TransportViewState extends State { ctrl.selectedUser.value = index; ctrl.refreshApis(); ctrl.isFilterVisibleViewFreight.value = false; - ctrl.isFilterVisiblePendingGeneration.value = false; - ctrl.isFilterVisibleGenerateFreight.value = false; + ctrl.isFilterVisiblePendingGeneration.value = + false; + ctrl.isFilterVisibleGenerateFreight.value = + false; }, child: Container( margin: EdgeInsets.only(bottom: 10, top: 10), diff --git a/lib/main.dart b/lib/main.dart index c6d20d9..c6df794 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -24,3 +24,4 @@ class MyApp extends StatelessWidget { }); } } + From 7951d16f87f102f7eebc3bdd5bdd034fffe1046a Mon Sep 17 00:00:00 2001 From: Priya Chetiwal Date: Fri, 7 Feb 2025 01:29:03 +0530 Subject: [PATCH 2/2] latest code here --- lib/components/styles/app_strings.dart | 3 +- .../view/sub_views/generate_fright_bill.dart | 46 ++---- .../view/sub_views/pending_generation.dart | 14 +- .../view/sub_views/view_freight_bill.dart | 40 ++--- .../view_model/transport_controller.dart | 150 +++++------------- .../widgets/custom_pagination.dart | 4 +- lib/services/network/ApiUrls.dart | 42 +---- lib/services/network/post_request.dart | 38 ++++- 8 files changed, 116 insertions(+), 221 deletions(-) diff --git a/lib/components/styles/app_strings.dart b/lib/components/styles/app_strings.dart index 3ffbc6d..de982fd 100644 --- a/lib/components/styles/app_strings.dart +++ b/lib/components/styles/app_strings.dart @@ -57,8 +57,7 @@ class AppStrings { static const String cCNDate = "CCN Date"; static const String miroStatus = "Micro Status"; static const String gstHold = "GST Hold"; - static const String gstRelease = "If GST release this invoice" - " than required GST Payment Due & UTN Number"; + static const String gstRelease = "If GST release this invoice\nthan required GST Payment Due & UTN Number"; static const String utrNo = "UTR No."; static const String utrDate = "UTR Date"; static const String amount = "Amount"; diff --git a/lib/feature/presentation/screens/transporter/view/sub_views/generate_fright_bill.dart b/lib/feature/presentation/screens/transporter/view/sub_views/generate_fright_bill.dart index ac2eaff..982305e 100644 --- a/lib/feature/presentation/screens/transporter/view/sub_views/generate_fright_bill.dart +++ b/lib/feature/presentation/screens/transporter/view/sub_views/generate_fright_bill.dart @@ -299,32 +299,9 @@ class GenerateFrightBill extends StatelessWidget { height: 30, width: 100, text: AppStrings.submit, - // clickAction: () { - // // controller.postData(); - // controller.handleFilterSubmit(); - // }, clickAction: () => controller .handleFilterSubmitGenerateFreight(), ), - // CommonButton( - // borderRadius: 4, - // height: 30, - // width: 100, - // text: AppStrings.submit, - // clickAction: () { - // controller.validateFields(); - // - // if (controller.showPlantError.value || - // controller.showProductError.value || - // controller.showTransactionError.value - // ) { - // print('controller.showProductError.value ${controller.showProductError.value}'); - // - // } else { - // controller.postData(); - // } - // }, - // ), ], ), ), @@ -349,14 +326,12 @@ class GenerateFrightBill extends StatelessWidget { color: AppColors.primaryClr, ))); } - if (controller.errorMessage.isNotEmpty) { return SizedBox( height: MediaQuery.sizeOf(context).height * 0.6, width: MediaQuery.sizeOf(context).width, child: Center(child: Text(controller.errorMessage.value))); } - if (controller.grnDetails.isEmpty) { return SizedBox( height: controller.isFilterVisibleGenerateFreight.value @@ -443,7 +418,7 @@ class GenerateFrightBill extends StatelessWidget { scrollDirection: Axis.horizontal, controller: controller.horizontalScrollController, child: Container( - margin: EdgeInsets.only(bottom: 24, right: 24), + margin: EdgeInsets.only(bottom: 24), decoration: BoxDecoration( border: Border.all( color: Colors.grey.shade400, @@ -469,17 +444,15 @@ class GenerateFrightBill extends StatelessWidget { DataColumn( label: Transform.scale( scale: 0.80, - // Adjust this scale to make the checkbox bigger or smaller child: Checkbox( value: controller.selectAllField.value, - onChanged: (value) { controller.selectAll(value ?? false); }, activeColor: AppColors.primaryClr, checkColor: Colors.white, materialTapTargetSize: MaterialTapTargetSize - .shrinkWrap, // Avoids large tap area + .shrinkWrap, ), ), ), @@ -502,7 +475,6 @@ class GenerateFrightBill extends StatelessWidget { rows: List.generate( controller.grnDetails.length, (index) { final stoppage = controller.grnDetails[index]; - return DataRow( selected: stoppage.isSelected, cells: [ @@ -565,16 +537,16 @@ class GenerateFrightBill extends StatelessWidget { ), ), ), + CustomPagination( + currentPage: controller.currentPageViewFreight.value + 1, + totalPages: controller.totalPagesViewFreight.value, + onPageChanged: (page) { + controller.viewFreightView(page: page - 1); + }, + ), ], ); }), - CustomPagination( - currentPage: controller.currentPage.value, - totalPages: controller.totalPages.value, - onPageChanged: (int page) { - controller.onPageChanged(page); - }, - ), ], ); } diff --git a/lib/feature/presentation/screens/transporter/view/sub_views/pending_generation.dart b/lib/feature/presentation/screens/transporter/view/sub_views/pending_generation.dart index 4a36bad..9756129 100644 --- a/lib/feature/presentation/screens/transporter/view/sub_views/pending_generation.dart +++ b/lib/feature/presentation/screens/transporter/view/sub_views/pending_generation.dart @@ -524,13 +524,13 @@ class PendingGeneration extends StatelessWidget { ], ); }), - CustomPagination( - currentPage: controller.currentPage.value, - totalPages: controller.totalPages.value, - onPageChanged: (int page) { - controller.onPageChanged(page); - }, - ), + // CustomPagination( + // currentPage: controller.currentPage.value, + // totalPages: controller.totalPages.value, + // onPageChanged: (int page) { + // // controller.onPageChanged(page); + // }, + // ), ], ); } diff --git a/lib/feature/presentation/screens/transporter/view/sub_views/view_freight_bill.dart b/lib/feature/presentation/screens/transporter/view/sub_views/view_freight_bill.dart index ac69d75..770e344 100644 --- a/lib/feature/presentation/screens/transporter/view/sub_views/view_freight_bill.dart +++ b/lib/feature/presentation/screens/transporter/view/sub_views/view_freight_bill.dart @@ -22,10 +22,12 @@ class ViewFreightBill extends StatelessWidget { @override Widget build(BuildContext context) { return Column( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.end, children: [ Obx(() => controller.isFilterVisibleViewFreight.value ? Container( - padding: EdgeInsets.all(16), + padding: EdgeInsets.symmetric(vertical: 10,horizontal: 16), color: AppColors.clrF2, child: Column( mainAxisAlignment: MainAxisAlignment.start, @@ -144,7 +146,7 @@ class ViewFreightBill extends StatelessWidget { ), Padding( padding: - const EdgeInsets.only(top: 16.0, left: 0, right: 8), + const EdgeInsets.only(top: 0.0, left: 0, right: 8), child: Row( children: [ Expanded( @@ -306,7 +308,7 @@ class ViewFreightBill extends StatelessWidget { Obx(() { if (controller.freightViewLoader.value) { return SizedBox( - height: MediaQuery.sizeOf(context).height * 0.6, + height: MediaQuery.sizeOf(context).height * 0.64, width: MediaQuery.sizeOf(context).width, child: Center( child: CircularProgressIndicator( @@ -318,7 +320,7 @@ class ViewFreightBill extends StatelessWidget { if (controller.errorMessage.isNotEmpty) { return SizedBox( - height: MediaQuery.sizeOf(context).height * 0.6, + height: MediaQuery.sizeOf(context).height * 0.64, width: MediaQuery.sizeOf(context).width, child: Center(child: Text(controller.errorMessage.value))); } @@ -328,7 +330,7 @@ class ViewFreightBill extends StatelessWidget { return SizedBox( height: controller.isFilterVisibleViewFreight.value ? MediaQuery.sizeOf(context).height * 0.4 - : MediaQuery.sizeOf(context).height * 0.6, + : MediaQuery.sizeOf(context).height * 0.64, width: MediaQuery.sizeOf(context).width, child: Center( child: Text( @@ -344,7 +346,7 @@ class ViewFreightBill extends StatelessWidget { Container( margin: EdgeInsets.only(bottom: 16, top: 16), height: controller.isFilterVisibleViewFreight.value == true - ? MediaQuery.of(context).size.height * 0.4 + ? MediaQuery.of(context).size.height * 0.36 : MediaQuery.of(context).size.height * 0.64, child: RawScrollbar( thumbColor: AppColors.clrD9, @@ -366,7 +368,7 @@ class ViewFreightBill extends StatelessWidget { scrollDirection: Axis.horizontal, controller: controller.horizontalScrollController, child: Container( - margin: EdgeInsets.only(bottom: 24, right: 24), + margin: EdgeInsets.only(bottom: 24), decoration: BoxDecoration( border: Border.all( color: Colors.grey.shade400, @@ -440,10 +442,10 @@ class ViewFreightBill extends StatelessWidget { freightBill.freightbillCode ?? ""; return DataRow( cells: [ - editableCell( - index, "${freightBill.plantCode}-${freightBill.plantDesc}"), - editableCell( - index, "${freightBill.materialCode}-${freightBill.materialDescription}"), + editableCell(index, + "${freightBill.plantCode}-${freightBill.plantDesc}"), + editableCell(index, + "${freightBill.materialCode}-${freightBill.materialDescription}"), editableCell( index, freightBill.freightbillCode ?? "-", @@ -535,16 +537,16 @@ class ViewFreightBill extends StatelessWidget { ), ), ), + CustomPagination( + currentPage: controller.currentPageViewFreight.value + 1, + totalPages: controller.totalPagesViewFreight.value, + onPageChanged: (page) { + controller.viewFreightView(page: page - 1); + }, + ), ], ); }), - CustomPagination( - currentPage: controller.currentPage.value, - totalPages: controller.totalPages.value, - onPageChanged: (int page) { - controller.onPageChanged(page); - }, - ), ], ); } @@ -739,5 +741,3 @@ class ViewFreightBill extends StatelessWidget { ); } } - - diff --git a/lib/feature/presentation/screens/transporter/view_model/transport_controller.dart b/lib/feature/presentation/screens/transporter/view_model/transport_controller.dart index a85187f..92420e3 100644 --- a/lib/feature/presentation/screens/transporter/view_model/transport_controller.dart +++ b/lib/feature/presentation/screens/transporter/view_model/transport_controller.dart @@ -1,5 +1,3 @@ -import 'dart:convert'; - import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; import 'package:shayog/components/styles/app_images.dart'; @@ -7,7 +5,6 @@ import 'package:shayog/feature/presentation/screens/transporter/model/sub_freigh import 'package:shayog/services/network/get_requests.dart'; import '../../../../../../components/common/common_model.dart'; import '../../../../../../components/styles/app_strings.dart'; - import '../../../../../../services/model/generate_freight_model.dart'; import '../../../../../../services/network/post_request.dart'; import '../model/freightbill_res_model.dart'; @@ -45,7 +42,6 @@ class TransportController extends GetxController { var selectTransactionTypePending = ''.obs; // for view FreightBill - RxString selectPlantViewFreight = ''.obs; var selectProductViewFreight = ''.obs; var selectLocationViewFreight = ''.obs; @@ -165,28 +161,24 @@ class TransportController extends GetxController { postData(); } - getInvoiceView() async { try { invoiceViewLoader.value = true; Map requestBody = { - "invoice_id":"", - "freightBillNo":"", - "invFromDate":"", - "invToDate":"", - "freightFromDate":"", - "freightToDate":"" + "invoice_id": "", + "freightBillNo": "", + "invFromDate": "", + "invToDate": "", + "freightFromDate": "", + "freightToDate": "" }; var response = await PostRequests.getInvoice(requestBody); if (response != null) { List flattenedContent = - response.content!.expand((list) => list).toList(); + response.content.expand((list) => list).toList(); getInvoiceData.assignAll(flattenedContent); - // print("response from${getInvoiceData[0].freightbillCode.runtimeType} view freight bill ${freightBillData[0].plantCode.runtimeType} and ${freightBillData[0].materialCode.runtimeType} and}"); - totalPages.value = response.totalPages ?? 0; - totalElements.value = response.totalElements ?? 0; print('res from invoice ${response.toString()}'); } } finally { @@ -226,7 +218,6 @@ class TransportController extends GetxController { postData() async { try { isLoading.value = true; - Map requestBody = { "plant": "", "productNane": "", @@ -235,7 +226,6 @@ class TransportController extends GetxController { "grnFromDate": "", "grnToDate": "" }; - var response = await PostRequests.addFreightBill(requestBody); if (response != null) { List flattenedContent = @@ -291,17 +281,6 @@ class TransportController extends GetxController { } } - // void handleFilterSubmit() { - // validateFieldsGenerateFreight(); - // - // if (showPlantError.value || - // showProductError.value || - // showTransactionError.value) { - // print('show errr'); - // } else { - // postData(); - // } - // } void handleFilterSubmitGenerateFreight() { validateFieldsGenerateFreight(); if (selectPlantFreight.value.isEmpty || @@ -387,8 +366,6 @@ class TransportController extends GetxController { getSubFreightBillsView() async { try { isLoading.value = true; - print('Getting details for freight bill: ${freightBillCode.value}'); - var response = await GetRequests.subViewFreightDialog(freightBillCode.value); if (response != null) { @@ -462,12 +439,7 @@ class TransportController extends GetxController { "status_id": grn.statusId }) .toList(); - - // Only send the selected data in the request body var response = await PostRequests.freightBill(selectedGrns); - - print("Selected GRNs>>>$selectedGrns"); - if (response != null) { freightBillNo.value = response.freightBillNo ?? ""; grnList.assignAll(response.grn ?? []); @@ -480,16 +452,17 @@ class TransportController extends GetxController { ////////////////////////////////////////// PRIYA /////////////////////////////////////////////// var freightBillData = [].obs; - var totalElements = 0.obs; + var totalElementsViewFreight = 0.obs; var pageSize = 2.obs; var sortField = "grn_date".obs; var sortDirection = "desc".obs; - RxInt currentPage = 1.obs; - RxInt totalPages = 3.obs; + RxInt currentPageViewFreight = 1.obs; + RxInt totalPagesViewFreight = 3.obs; final int limit = 10; - viewFreightView() async { + + viewFreightView({int page = 0}) async { try { freightViewLoader.value = true; @@ -503,40 +476,22 @@ class TransportController extends GetxController { "grnToDate": "", }; - var response = await PostRequests.viewFreightBill(requestBody); + var response = await PostRequests.viewFreightBill( + page: page, size: 4, requestBody: requestBody); + if (response != null) { List flattenedContent = response.content!.expand((list) => list).toList(); freightBillData.assignAll(flattenedContent); - print( - "response from${freightBillData[0].freightbillCode.runtimeType} view freight bill ${freightBillData[0].plantCode.runtimeType} and ${freightBillData[0].materialCode.runtimeType} and}"); - totalPages.value = response.totalPages ?? 0; - totalElements.value = response.totalElements ?? 0; + totalPagesViewFreight.value = response.totalPages ?? 0; + totalElementsViewFreight.value = response.totalElements ?? 0; + currentPageViewFreight.value = page; } } finally { freightViewLoader.value = false; } } - void nextPage() { - if (currentPage.value < totalPages.value) { - currentPage.value++; - viewFreightView(); // Fetch data for the next page - } - } - - void previousPage() { - if (currentPage.value > 1) { - currentPage.value--; - viewFreightView(); // Fetch data for the previous page - } - } - - void onPageChanged(int page) { - currentPage.value = page; - viewFreightView(); // Fetch data for the selected page - } - void changeSort(String field) { if (field == sortField.value) { sortDirection.value = sortDirection.value == "asc" ? "desc" : "asc"; @@ -544,7 +499,6 @@ class TransportController extends GetxController { sortField.value = field; sortDirection.value = "desc"; } - } var grnPendingData = [].obs; @@ -577,9 +531,10 @@ class TransportController extends GetxController { } } - void displayFilteredDataFromViewFreight() async { + void displayFilteredDataFromViewFreight({int page = 0, int size = 4}) async { try { freightViewLoader.value = true; + Map requestBody = { "plant": selectPlantViewFreight.value, "productNane": selectProductViewFreight.value, @@ -590,66 +545,37 @@ class TransportController extends GetxController { "grnToDate": "", }; - print("Filter request - Plant: ${selectPlantViewFreight.value}, " - "Product: ${selectProductViewFreight.value}, " - "Freight Bill: ${selectFreightBillValidate.value}"); + print("🔎 Filter Request - Page: $page, Size: $size, Plant: ${selectPlantViewFreight.value}, " + "Product: ${selectProductViewFreight.value}, Freight Bill: ${selectFreightBillValidate.value}"); - var response = await PostRequests.viewFreightBill(requestBody); + var response = await PostRequests.viewFreightBill( + page: page, size: size, requestBody: requestBody); // Pass pagination - if (response != null) { + if (response != null && response.content != null) { List flattenedContent = - response.content!.expand((list) => list).toList(); + response.content!.expand((list) => list).toList(); - print("Total records before filtering: ${flattenedContent.length}"); + print("📌 Total records received: ${flattenedContent.length}"); - // Log sample data for debugging if available - if (flattenedContent.isNotEmpty) { - print("Sample data - Plant: ${flattenedContent[0].plantCode}, " - "Material: ${flattenedContent[0].materialCode}, " - "Freight Bill: ${flattenedContent[0].freightbillCode}"); + if (page == 0) { + freightBillData.assignAll(flattenedContent); // First page: Replace data + } else { + freightBillData.addAll(flattenedContent); // Next pages: Append data } - List filteredData = flattenedContent.where((item) { - // Plant filter - bool plantMatch = selectPlantViewFreight.value.isEmpty || - item.plantCode.toString().toLowerCase() == - selectPlantViewFreight.value.toLowerCase(); + // Update pagination details + totalPagesViewFreight.value = response.totalPages ?? 0; + totalElementsViewFreight.value = response.totalElements ?? 0; + currentPageViewFreight.value = page; - // Product filter - bool productMatch = selectProductViewFreight.value.isEmpty || - item.materialCode.toString().toLowerCase() == - selectProductViewFreight.value.toLowerCase(); - - // Freight bill filter - bool freightBillMatch = selectFreightBillValidate.value.isEmpty || - item.freightbillCode.toString().toLowerCase() == - selectFreightBillValidate.value.toLowerCase(); - - // Debug logging for filter matches - print("Filter matches for item ${item.freightbillCode}:" - "\nPlant Match: $plantMatch (${item.plantCode} vs ${selectPlantViewFreight.value})" - "\nProduct Match: $productMatch (${item.materialCode} vs ${selectProductViewFreight.value})" - "\nFreight Bill Match: $freightBillMatch (${item.freightbillCode} vs ${selectFreightBillValidate.value})"); - - return plantMatch && productMatch && freightBillMatch; - }).toList(); - - print("Filtered records count: ${filteredData.length}"); - - freightBillData.assignAll(filteredData); - - // Update pagination values - totalPages.value = response.totalPages ?? 0; - totalElements.value = response.totalElements ?? 0; - - print("✅ Freight bill data filtered successfully"); + print("✅ Freight bill data filtered & paginated successfully"); } else { print("❌ No response received from API"); - freightBillData.clear(); + if (page == 0) freightBillData.clear(); } } catch (e) { print("❌ Error in displayFilteredDataFromViewFreight: $e"); - freightBillData.clear(); + if (page == 0) freightBillData.clear(); } finally { freightViewLoader.value = false; } diff --git a/lib/feature/presentation/widgets/custom_pagination.dart b/lib/feature/presentation/widgets/custom_pagination.dart index cf43ff4..89c132f 100644 --- a/lib/feature/presentation/widgets/custom_pagination.dart +++ b/lib/feature/presentation/widgets/custom_pagination.dart @@ -3,7 +3,8 @@ import 'package:shayog/components/styles/textStyles.dart'; import 'dart:math' as math; import '../../../components/styles/app_colors.dart'; -class CustomPagination extends StatelessWidget { +class +CustomPagination extends StatelessWidget { final int currentPage; final int totalPages; final Function(int) onPageChanged; @@ -18,7 +19,6 @@ class CustomPagination extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - padding: const EdgeInsets.symmetric(vertical: 2.0), decoration: BoxDecoration( color: AppColors.clrF2, diff --git a/lib/services/network/ApiUrls.dart b/lib/services/network/ApiUrls.dart index 226d85b..b81a163 100644 --- a/lib/services/network/ApiUrls.dart +++ b/lib/services/network/ApiUrls.dart @@ -1,8 +1,6 @@ class ApiUrls { ApiUrls._(); - static const String baseUrl = "http://46.28.44.130:9092/"; - static const addFreightBill = 'bill/grndetails?page=0&size=20&sort=grn_date,desc'; static const getFreightBills = 'bill/dropdown'; @@ -15,7 +13,7 @@ class ApiUrls { static const getAllUser = 'http://46.28.44.130:9093/api/users/userdetails?page='; static const viewFreightBill = - 'http://46.28.44.130:9092/bill/freightbill?page=0&size=15&sort=last_updated_on,desc'; + 'http://46.28.44.130:9092/bill/freightbill?page='; static const addUserType = 'http://46.28.44.130:9093/api/user-types/createUserType'; static const dropDownList = @@ -38,40 +36,4 @@ class ApiUrls { static const viewSubDetailsOfViewFreightBill = "http://46.28.44.130:9092/bill/grndetailsByFreightBill?freightBillCode="; static const getInvoiceDetails = "http://46.28.44.130:9092/invoice/getInvoice"; } -// class ApiUrls { -// ApiUrls._(); -// -// static const String baseUrl = "http://localhost:9092/"; -// -// static const addFreightBill = -// 'bill/grndetails?page=0&size=20&sort=grn_date,desc'; -// static const getFreightBills = 'bill/dropdown'; -// static const generateFreightBill = -// 'http://localhost:9092/bill/addFreightBill'; -// static const createUser = 'http://localhost:9093/api/users/createUser'; -// static const editUser = -// 'http://localhost:9093/api/users/update?userEmpTransCode='; -// static const getAllUser = -// 'http://localhost:9093/api/users/userdetails?page='; -// static const viewFreightBill = -// 'http://localhost:9092/bill/freightbill?page'; -// static const addUserType = -// 'http://localhost:9093/api/user-types/createUserType'; -// static const dropDownList = -// 'http://localhost:9093/api/user-roles/userrole_dropdown'; -// static const plantMapping = 'http://localhost:9093/userplant/fetchPlants'; -// static const checkStatus = -// 'http://localhost:9093/api/user-types/update-status/'; -// static const getInternalUserDropdown = -// 'http://localhost:9093/api/user-roles/userrole_dropdown'; -// static const fetchEmailsAndEmpCode = -// 'http://localhost:9093/api/user-roles/fetchRoles'; -// static const selectAndAssignRole = -// "http://localhost:9093/api/user-roles/assignRoles"; -// static const assignPlantRole = -// "http://localhost:9093/userplant/assignPlants"; -// static const userTypeDetails = -// "http://localhost:9093/api/user-types/usertypedetails?page=0&size=15&sort=last_updated_on,desc"; -// static const grnPendingDetails = -// "http://localhost:9092/bill/grndetailsPanding?page=0&size=20&sort=grn_date,desc"; -// } + diff --git a/lib/services/network/post_request.dart b/lib/services/network/post_request.dart index cc88f6f..99bcec9 100644 --- a/lib/services/network/post_request.dart +++ b/lib/services/network/post_request.dart @@ -20,6 +20,8 @@ class PostRequests { PostRequests._(); static Future addFreightBill( + + Map requestBody) async { var apiResponse = await RemoteService.simplePost(requestBody, ApiUrls.addFreightBill); @@ -103,7 +105,7 @@ class PostRequests { } } - static Future viewFreightBill( + static Future viewFreightBillF( Map requestBody, ) async { var apiResponse = await RemoteService.postUser(requestBody, @@ -115,6 +117,40 @@ class PostRequests { return null; } } + static Future viewFreightBill({ + int page = 0, + int size = 15, + String sort = 'last_updated_on,desc', + Map? requestBody, + }) async { + // Construct dynamic URL with query parameters + String url = 'http://46.28.44.130:9092/bill/freightbill' + '?page=$page&size=$size&sort=$sort'; + + try { + var apiResponse = await RemoteService.postUser( + requestBody ?? {}, // Use empty map if no request body + url + ); + + if (apiResponse == null) return null; + if (apiResponse.response == null || apiResponse.response!.isEmpty) { + print('Empty response received'); + return null; + } + + try { + return viewFreightBillResModelFromJson(apiResponse.response!); + } catch (e) { + print('JSON Parsing Error: $e'); + print('Problematic JSON: ${apiResponse.response}'); + return null; + } + } catch (e) { + print('API Call Error: $e'); + return null; + } + } static Future addUserType( Map requestBody) async {