Push After Pull from dev_priya and resolve merge conflicts
commit
2382a8eaa9
|
@ -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";
|
||||
|
|
|
@ -9,95 +9,124 @@ ViewFreightBillResModel viewFreightBillResModelFromJson(String str) => ViewFreig
|
|||
String viewFreightBillResModelToJson(ViewFreightBillResModel data) => json.encode(data.toJson());
|
||||
|
||||
class ViewFreightBillResModel {
|
||||
final List<List<FreightBill>>? 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<List<FreightBill>>? 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<List<FreightBill>>? 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<String, dynamic> json) => ViewFreightBillResModel(
|
||||
content: json["content"] == null ? [] : List<List<FreightBill>>.from(json["content"]!.map((x) => List<FreightBill>.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<String, dynamic> toJson() => {
|
||||
"content": content == null ? [] : List<dynamic>.from(content!.map((x) => List<dynamic>.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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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<String, dynamic> json) => Sort(
|
||||
empty: json["empty"],
|
||||
sorted: json["sorted"],
|
||||
empty: json["empty"],
|
||||
unsorted: json["unsorted"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"empty": empty,
|
||||
"sorted": sorted,
|
||||
"empty": empty,
|
||||
"unsorted": unsorted,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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';
|
||||
|
@ -298,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();
|
||||
// }
|
||||
// },
|
||||
// ),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
@ -348,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
|
||||
|
@ -368,6 +344,8 @@ class GenerateFrightBill extends StatelessWidget {
|
|||
);
|
||||
}
|
||||
return Column(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 10),
|
||||
|
@ -416,9 +394,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),
|
||||
|
@ -439,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,
|
||||
|
@ -465,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,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -498,7 +475,6 @@ class GenerateFrightBill extends StatelessWidget {
|
|||
rows: List<DataRow>.generate(
|
||||
controller.grnDetails.length, (index) {
|
||||
final stoppage = controller.grnDetails[index];
|
||||
|
||||
return DataRow(
|
||||
selected: stoppage.isSelected,
|
||||
cells: [
|
||||
|
@ -520,16 +496,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 +516,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() ??
|
||||
""),
|
||||
],
|
||||
);
|
||||
}),
|
||||
|
@ -556,6 +537,13 @@ class GenerateFrightBill extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
),
|
||||
CustomPagination(
|
||||
currentPage: controller.currentPageViewFreight.value + 1,
|
||||
totalPages: controller.totalPagesViewFreight.value,
|
||||
onPageChanged: (page) {
|
||||
controller.viewFreightView(page: page - 1);
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
}),
|
||||
|
|
|
@ -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);
|
||||
// },
|
||||
// ),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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});
|
||||
|
@ -27,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,
|
||||
|
@ -57,8 +54,6 @@ class ViewFreightBill extends StatelessWidget {
|
|||
selected.plantCode ?? "";
|
||||
controller.showPlantErrorViewFreight.value =
|
||||
false;
|
||||
print(
|
||||
"selectPlant${controller.selectPlant.value}");
|
||||
}
|
||||
},
|
||||
hintText: "Select Plant",
|
||||
|
@ -151,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(
|
||||
|
@ -294,19 +289,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,11 +305,10 @@ class ViewFreightBill extends StatelessWidget {
|
|||
),
|
||||
)
|
||||
: SizedBox.shrink()),
|
||||
|
||||
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(
|
||||
|
@ -339,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)));
|
||||
}
|
||||
|
@ -347,10 +328,9 @@ 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,
|
||||
: MediaQuery.sizeOf(context).height * 0.64,
|
||||
width: MediaQuery.sizeOf(context).width,
|
||||
child: Center(
|
||||
child: Text(
|
||||
|
@ -366,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,
|
||||
|
@ -388,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,
|
||||
|
@ -460,14 +440,12 @@ class ViewFreightBill extends StatelessWidget {
|
|||
|
||||
controller.freightBillCode.value =
|
||||
freightBill.freightbillCode ?? "";
|
||||
print(
|
||||
'freightBill.trasnporterInvoiceNo ${freightBill.trasnporterInvoiceNo}');
|
||||
return DataRow(
|
||||
cells: [
|
||||
editableCell(
|
||||
index, "${freightBill.plantCode}"),
|
||||
editableCell(
|
||||
index, "${freightBill.materialCode}"),
|
||||
editableCell(index,
|
||||
"${freightBill.plantCode}-${freightBill.plantDesc}"),
|
||||
editableCell(index,
|
||||
"${freightBill.materialCode}-${freightBill.materialDescription}"),
|
||||
editableCell(
|
||||
index,
|
||||
freightBill.freightbillCode ?? "-",
|
||||
|
@ -484,15 +462,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 +482,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,24 +536,17 @@ class ViewFreightBill extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
),
|
||||
// CustomPagination(
|
||||
// currentPage: controller.currentPage.value,
|
||||
// totalPages: controller.totalPages.value,
|
||||
// onPageChanged: (int page) {
|
||||
// controller.onPageChanged(page);
|
||||
// },
|
||||
// ),
|
||||
),
|
||||
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);
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
@ -612,8 +583,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 +676,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,
|
||||
|
|
|
@ -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<TransportView> {
|
|||
() => 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<TransportView> {
|
|||
dataColumn("Add Signature"),
|
||||
],
|
||||
rows: List<DataRow>.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<TransportView> {
|
|||
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<TransportView> {
|
|||
}
|
||||
}
|
||||
|
||||
_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<TransportView> {
|
|||
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),
|
||||
|
|
|
@ -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<String, String> 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<GetInvoiceContent> 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<String, String> requestBody = {
|
||||
"plant": "",
|
||||
"productNane": "",
|
||||
|
@ -235,7 +226,6 @@ class TransportController extends GetxController {
|
|||
"grnFromDate": "",
|
||||
"grnToDate": ""
|
||||
};
|
||||
|
||||
var response = await PostRequests.addFreightBill(requestBody);
|
||||
if (response != null) {
|
||||
List<Content> 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 = <FreightBill>[].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<FreightBill> 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 = <GrnPending>[].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<String, String> 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<FreightBill> flattenedContent =
|
||||
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<FreightBill> 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;
|
||||
}
|
||||
|
|
|
@ -4,7 +4,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;
|
||||
|
@ -19,7 +20,6 @@ class CustomPagination extends StatelessWidget {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
|
||||
padding: const EdgeInsets.symmetric(vertical: 2.0),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColors.clrF2,
|
||||
|
|
|
@ -24,3 +24,4 @@ class MyApp extends StatelessWidget {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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";
|
||||
// }
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@ class PostRequests {
|
|||
PostRequests._();
|
||||
|
||||
static Future<GenerateFreightBills?> addFreightBill(
|
||||
|
||||
|
||||
Map<String, String> requestBody) async {
|
||||
var apiResponse =
|
||||
await RemoteService.simplePost(requestBody, ApiUrls.addFreightBill);
|
||||
|
@ -103,7 +105,7 @@ class PostRequests {
|
|||
}
|
||||
}
|
||||
|
||||
static Future<ViewFreightBillResModel?> viewFreightBill(
|
||||
static Future<ViewFreightBillResModel?> viewFreightBillF(
|
||||
Map<String, String> requestBody,
|
||||
) async {
|
||||
var apiResponse = await RemoteService.postUser(requestBody,
|
||||
|
@ -115,6 +117,40 @@ class PostRequests {
|
|||
return null;
|
||||
}
|
||||
}
|
||||
static Future<ViewFreightBillResModel?> viewFreightBill({
|
||||
int page = 0,
|
||||
int size = 15,
|
||||
String sort = 'last_updated_on,desc',
|
||||
Map<String, String>? 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<UserTypeResModel?> addUserType(
|
||||
Map<String, String> requestBody) async {
|
||||
|
|
Loading…
Reference in New Issue