merge with priya
parent
4817694d0e
commit
da5e0fedbb
|
@ -0,0 +1,37 @@
|
||||||
|
// To parse this JSON data, do
|
||||||
|
//
|
||||||
|
// final statusResModel = statusResModelFromJson(jsonString);
|
||||||
|
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
StatusResModel statusResModelFromJson(String str) => StatusResModel.fromJson(json.decode(str));
|
||||||
|
|
||||||
|
String statusResModelToJson(StatusResModel data) => json.encode(data.toJson());
|
||||||
|
|
||||||
|
class StatusResModel {
|
||||||
|
final int? status;
|
||||||
|
final String? message;
|
||||||
|
final List<dynamic>? data;
|
||||||
|
final DateTime? timestamp;
|
||||||
|
|
||||||
|
StatusResModel({
|
||||||
|
this.status,
|
||||||
|
this.message,
|
||||||
|
this.data,
|
||||||
|
this.timestamp,
|
||||||
|
});
|
||||||
|
|
||||||
|
factory StatusResModel.fromJson(Map<String, dynamic> json) => StatusResModel(
|
||||||
|
status: json["status"],
|
||||||
|
message: json["message"],
|
||||||
|
data: json["data"] == null ? [] : List<dynamic>.from(json["data"]!.map((x) => x)),
|
||||||
|
timestamp: json["timestamp"] == null ? null : DateTime.parse(json["timestamp"]),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"status": status,
|
||||||
|
"message": message,
|
||||||
|
"data": data == null ? [] : List<dynamic>.from(data!.map((x) => x)),
|
||||||
|
"timestamp": timestamp?.toIso8601String(),
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
|
||||||
|
class CancelledView extends StatelessWidget {
|
||||||
|
const CancelledView({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Column();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
|
||||||
|
class CcnView extends StatelessWidget {
|
||||||
|
const CcnView({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Column(
|
||||||
|
|
||||||
|
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:shayog/components/common/common_button.dart';
|
||||||
|
import 'package:shayog/components/common/common_model.dart';
|
||||||
|
import '../../../../../../../services/network/get_requests.dart';
|
||||||
|
import '../../../../../../../services/network/post_request.dart';
|
||||||
|
import '../../../model/freightbill_res_model.dart';
|
||||||
|
import '../model/payment_res_model.dart';
|
||||||
|
|
||||||
|
class PaymentViewCtrl extends GetxController {
|
||||||
|
final ScrollController horizontalScrollController = ScrollController();
|
||||||
|
final ScrollController verticalScrollController = ScrollController();
|
||||||
|
var product = <Prodect>[].obs;
|
||||||
|
var plant = <Plant>[].obs;
|
||||||
|
var freightBill = <String>[].obs;
|
||||||
|
var isLoading = false.obs;
|
||||||
|
var isPayment = false.obs;
|
||||||
|
RxString selectedPlant = "Select Plant".obs;
|
||||||
|
RxString selectedFreightBill =
|
||||||
|
"Select Bill No.".obs;
|
||||||
|
RxString selectedProduct =
|
||||||
|
"Select Product Name".obs;
|
||||||
|
|
||||||
|
|
||||||
|
resetDropdowns() {
|
||||||
|
selectedPlant.value = "Select Plant";
|
||||||
|
selectedFreightBill.value = "Select Bill No.";
|
||||||
|
selectedProduct.value = "Select Product Name";
|
||||||
|
getPayments();
|
||||||
|
payments.refresh();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onInit() {
|
||||||
|
super.onInit();
|
||||||
|
getPaymentSearchData();
|
||||||
|
getPayments();
|
||||||
|
}
|
||||||
|
|
||||||
|
getPaymentSearchData() async {
|
||||||
|
try {
|
||||||
|
isLoading.value = true;
|
||||||
|
|
||||||
|
var response = await GetRequests.getFreightBill();
|
||||||
|
if (response != null) {
|
||||||
|
plant.assignAll(response.plant ?? []);
|
||||||
|
product.assignAll(response.prodect ?? []);
|
||||||
|
freightBill.assignAll(response.freightBill?.map((e) => e.toString()) ?? []);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
isLoading.value = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var payments = <Payment>[].obs;
|
||||||
|
|
||||||
|
getPayments() async {
|
||||||
|
try {
|
||||||
|
isPayment.value = true;
|
||||||
|
|
||||||
|
Map<String, String> requestBody = {
|
||||||
|
"plant_id":
|
||||||
|
selectedPlant.value == "Select Plant" ? "" : selectedPlant.value,
|
||||||
|
"freightbill_id": selectedFreightBill.value == "Select Bill No."
|
||||||
|
? ""
|
||||||
|
: selectedFreightBill.value,
|
||||||
|
"material_id": selectedProduct.value == "Select Product Name"
|
||||||
|
? ""
|
||||||
|
: selectedProduct.value,
|
||||||
|
"freightbill_fromdate": "",
|
||||||
|
"freightbill_todate": ""
|
||||||
|
};
|
||||||
|
|
||||||
|
var response = await PostRequests.getAllPayments(requestBody);
|
||||||
|
if (response != null) {
|
||||||
|
List<Payment> flattenedContent =
|
||||||
|
response.content!.expand((list) => list).toList();
|
||||||
|
payments.assignAll(flattenedContent);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
isPayment.value = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,337 @@
|
||||||
|
// To parse this JSON data, do
|
||||||
|
//
|
||||||
|
// final paymentResModel = paymentResModelFromJson(jsonString);
|
||||||
|
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
PaymentResModel paymentResModelFromJson(String str) => PaymentResModel.fromJson(json.decode(str));
|
||||||
|
|
||||||
|
String paymentResModelToJson(PaymentResModel data) => json.encode(data.toJson());
|
||||||
|
|
||||||
|
class PaymentResModel {
|
||||||
|
final List<List<Payment>>? content;
|
||||||
|
final Pageable? pageable;
|
||||||
|
final int? totalPages;
|
||||||
|
final int? totalElements;
|
||||||
|
final bool? last;
|
||||||
|
final int? size;
|
||||||
|
final int? number;
|
||||||
|
final Sort? sort;
|
||||||
|
final int? numberOfElements;
|
||||||
|
final bool? first;
|
||||||
|
final bool? empty;
|
||||||
|
|
||||||
|
PaymentResModel({
|
||||||
|
this.content,
|
||||||
|
this.pageable,
|
||||||
|
this.totalPages,
|
||||||
|
this.totalElements,
|
||||||
|
this.last,
|
||||||
|
this.size,
|
||||||
|
this.number,
|
||||||
|
this.sort,
|
||||||
|
this.numberOfElements,
|
||||||
|
this.first,
|
||||||
|
this.empty,
|
||||||
|
});
|
||||||
|
|
||||||
|
factory PaymentResModel.fromJson(Map<String, dynamic> json) => PaymentResModel(
|
||||||
|
content: json["content"] == null ? [] : List<List<Payment>>.from(json["content"]!.map((x) => List<Payment>.from(x.map((x) => Payment.fromJson(x))))),
|
||||||
|
pageable: json["pageable"] == null ? null : Pageable.fromJson(json["pageable"]),
|
||||||
|
totalPages: json["totalPages"],
|
||||||
|
totalElements: json["totalElements"],
|
||||||
|
last: json["last"],
|
||||||
|
size: json["size"],
|
||||||
|
number: json["number"],
|
||||||
|
sort: json["sort"] == null ? null : Sort.fromJson(json["sort"]),
|
||||||
|
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(),
|
||||||
|
"totalPages": totalPages,
|
||||||
|
"totalElements": totalElements,
|
||||||
|
"last": last,
|
||||||
|
"size": size,
|
||||||
|
"number": number,
|
||||||
|
"sort": sort?.toJson(),
|
||||||
|
"numberOfElements": numberOfElements,
|
||||||
|
"first": first,
|
||||||
|
"empty": empty,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
class Payment {
|
||||||
|
final int? plantId;
|
||||||
|
final String? plantCode;
|
||||||
|
final String? plantDesc;
|
||||||
|
final int? materialId;
|
||||||
|
final String? materialCode;
|
||||||
|
final dynamic uom;
|
||||||
|
final double? shipmentNetQty;
|
||||||
|
final double? shipmentNetCost;
|
||||||
|
final int? igstAmount;
|
||||||
|
final double? sgstAmount;
|
||||||
|
final double? cgstAmount;
|
||||||
|
final double? totalGst;
|
||||||
|
final double? shipmentGrossCost;
|
||||||
|
final int? invoiceId;
|
||||||
|
final dynamic transporterInvoiceNo;
|
||||||
|
final dynamic transporterInvoiceNoDate;
|
||||||
|
final int? freightbillId;
|
||||||
|
final String? freightbillCode;
|
||||||
|
final double? shipmentCost;
|
||||||
|
final DateTime? shipmentCostDate;
|
||||||
|
final double? gstAmount;
|
||||||
|
final dynamic paymentAmount;
|
||||||
|
final dynamic paymentDate;
|
||||||
|
final dynamic paymentCaseno;
|
||||||
|
final String? miroDocument;
|
||||||
|
final DateTime? miroDocumentDate;
|
||||||
|
final String? sapReferenceno;
|
||||||
|
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;
|
||||||
|
final dynamic singedDocLink;
|
||||||
|
final dynamic signedDocUploadedOn;
|
||||||
|
final dynamic signedDocUploadedBy;
|
||||||
|
final String? status;
|
||||||
|
final int? statusId;
|
||||||
|
final int? createdBy;
|
||||||
|
final int? lastUpdatedBy;
|
||||||
|
final DateTime? lastUpdatedOn;
|
||||||
|
|
||||||
|
Payment({
|
||||||
|
this.plantId,
|
||||||
|
this.plantCode,
|
||||||
|
this.plantDesc,
|
||||||
|
this.materialId,
|
||||||
|
this.materialCode,
|
||||||
|
this.uom,
|
||||||
|
this.shipmentNetQty,
|
||||||
|
this.shipmentNetCost,
|
||||||
|
this.igstAmount,
|
||||||
|
this.sgstAmount,
|
||||||
|
this.cgstAmount,
|
||||||
|
this.totalGst,
|
||||||
|
this.shipmentGrossCost,
|
||||||
|
this.invoiceId,
|
||||||
|
this.transporterInvoiceNo,
|
||||||
|
this.transporterInvoiceNoDate,
|
||||||
|
this.freightbillId,
|
||||||
|
this.freightbillCode,
|
||||||
|
this.shipmentCost,
|
||||||
|
this.shipmentCostDate,
|
||||||
|
this.gstAmount,
|
||||||
|
this.paymentAmount,
|
||||||
|
this.paymentDate,
|
||||||
|
this.paymentCaseno,
|
||||||
|
this.miroDocument,
|
||||||
|
this.miroDocumentDate,
|
||||||
|
this.sapReferenceno,
|
||||||
|
this.utr1No,
|
||||||
|
this.utr2No,
|
||||||
|
this.utr3No,
|
||||||
|
this.utr4No,
|
||||||
|
this.utr5No,
|
||||||
|
this.utr1PaymentAmount,
|
||||||
|
this.utr2PaymentAmount,
|
||||||
|
this.utr3PaymentAmount,
|
||||||
|
this.utr4PaymentAmount,
|
||||||
|
this.utr5PaymentAmount,
|
||||||
|
this.utr1Date,
|
||||||
|
this.utr2Date,
|
||||||
|
this.utr3Date,
|
||||||
|
this.utr4Date,
|
||||||
|
this.utr5Date,
|
||||||
|
this.singedDocLink,
|
||||||
|
this.signedDocUploadedOn,
|
||||||
|
this.signedDocUploadedBy,
|
||||||
|
this.status,
|
||||||
|
this.statusId,
|
||||||
|
this.createdBy,
|
||||||
|
this.lastUpdatedBy,
|
||||||
|
this.lastUpdatedOn,
|
||||||
|
});
|
||||||
|
|
||||||
|
factory Payment.fromJson(Map<String, dynamic> json) => Payment(
|
||||||
|
plantId: json["plant_id"],
|
||||||
|
plantCode: json["plant_code"],
|
||||||
|
plantDesc: json["plant_desc"],
|
||||||
|
materialId: json["material_id"],
|
||||||
|
materialCode: json["material_code"],
|
||||||
|
uom: json["uom"],
|
||||||
|
shipmentNetQty: json["shipment_net_qty"]?.toDouble(),
|
||||||
|
shipmentNetCost: json["shipment_net_cost"]?.toDouble(),
|
||||||
|
igstAmount: json["igst_amount"],
|
||||||
|
sgstAmount: json["sgst_amount"]?.toDouble(),
|
||||||
|
cgstAmount: json["cgst_amount"]?.toDouble(),
|
||||||
|
totalGst: json["total_gst"]?.toDouble(),
|
||||||
|
shipmentGrossCost: json["shipment_gross_cost"]?.toDouble(),
|
||||||
|
invoiceId: json["invoice_id"],
|
||||||
|
transporterInvoiceNo: json["transporter_invoice_no"],
|
||||||
|
transporterInvoiceNoDate: json["transporter_invoice_no_date"],
|
||||||
|
freightbillId: json["freightbill_id"],
|
||||||
|
freightbillCode: json["freightbill_code"],
|
||||||
|
shipmentCost: json["shipment_cost"]?.toDouble(),
|
||||||
|
shipmentCostDate: json["shipment_cost_date"] == null ? null : DateTime.parse(json["shipment_cost_date"]),
|
||||||
|
gstAmount: json["gst_amount"]?.toDouble(),
|
||||||
|
paymentAmount: json["payment_amount"],
|
||||||
|
paymentDate: json["payment_date"],
|
||||||
|
paymentCaseno: json["payment_caseno"],
|
||||||
|
miroDocument: json["miro_document"],
|
||||||
|
miroDocumentDate: json["miro_document_date"] == null ? null : DateTime.parse(json["miro_document_date"]),
|
||||||
|
sapReferenceno: json["sap_referenceno"],
|
||||||
|
utr1No: json["utr1_no"],
|
||||||
|
utr2No: json["utr2_no"],
|
||||||
|
utr3No: json["utr3_no"],
|
||||||
|
utr4No: json["utr4_no"],
|
||||||
|
utr5No: json["utr5_no"],
|
||||||
|
utr1PaymentAmount: json["utr1_payment_amount"],
|
||||||
|
utr2PaymentAmount: json["utr2_payment_amount"],
|
||||||
|
utr3PaymentAmount: json["utr3_payment_amount"],
|
||||||
|
utr4PaymentAmount: json["utr4_payment_amount"],
|
||||||
|
utr5PaymentAmount: json["utr5_payment_amount"],
|
||||||
|
utr1Date: json["utr1_date"],
|
||||||
|
utr2Date: json["utr2_date"],
|
||||||
|
utr3Date: json["utr3_date"],
|
||||||
|
utr4Date: json["utr4_date"],
|
||||||
|
utr5Date: json["utr5_date"],
|
||||||
|
singedDocLink: json["singed_doc_link"],
|
||||||
|
signedDocUploadedOn: json["signed_doc_uploaded_on"],
|
||||||
|
signedDocUploadedBy: json["signed_doc_uploaded_by"],
|
||||||
|
status: json["status"],
|
||||||
|
statusId: json["status_id"],
|
||||||
|
createdBy: json["created_by"],
|
||||||
|
lastUpdatedBy: json["last_updated_by"],
|
||||||
|
lastUpdatedOn: json["last_updated_on"] == null ? null : DateTime.parse(json["last_updated_on"]),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"plant_id": plantId,
|
||||||
|
"plant_code": plantCode,
|
||||||
|
"plant_desc": plantDesc,
|
||||||
|
"material_id": materialId,
|
||||||
|
"material_code": materialCode,
|
||||||
|
"uom": uom,
|
||||||
|
"shipment_net_qty": shipmentNetQty,
|
||||||
|
"shipment_net_cost": shipmentNetCost,
|
||||||
|
"igst_amount": igstAmount,
|
||||||
|
"sgst_amount": sgstAmount,
|
||||||
|
"cgst_amount": cgstAmount,
|
||||||
|
"total_gst": totalGst,
|
||||||
|
"shipment_gross_cost": shipmentGrossCost,
|
||||||
|
"invoice_id": invoiceId,
|
||||||
|
"transporter_invoice_no": transporterInvoiceNo,
|
||||||
|
"transporter_invoice_no_date": transporterInvoiceNoDate,
|
||||||
|
"freightbill_id": freightbillId,
|
||||||
|
"freightbill_code": freightbillCode,
|
||||||
|
"shipment_cost": shipmentCost,
|
||||||
|
"shipment_cost_date": "${shipmentCostDate!.year.toString().padLeft(4, '0')}-${shipmentCostDate!.month.toString().padLeft(2, '0')}-${shipmentCostDate!.day.toString().padLeft(2, '0')}",
|
||||||
|
"gst_amount": gstAmount,
|
||||||
|
"payment_amount": paymentAmount,
|
||||||
|
"payment_date": paymentDate,
|
||||||
|
"payment_caseno": paymentCaseno,
|
||||||
|
"miro_document": miroDocument,
|
||||||
|
"miro_document_date": "${miroDocumentDate!.year.toString().padLeft(4, '0')}-${miroDocumentDate!.month.toString().padLeft(2, '0')}-${miroDocumentDate!.day.toString().padLeft(2, '0')}",
|
||||||
|
"sap_referenceno": sapReferenceno,
|
||||||
|
"utr1_no": utr1No,
|
||||||
|
"utr2_no": utr2No,
|
||||||
|
"utr3_no": utr3No,
|
||||||
|
"utr4_no": utr4No,
|
||||||
|
"utr5_no": utr5No,
|
||||||
|
"utr1_payment_amount": utr1PaymentAmount,
|
||||||
|
"utr2_payment_amount": utr2PaymentAmount,
|
||||||
|
"utr3_payment_amount": utr3PaymentAmount,
|
||||||
|
"utr4_payment_amount": utr4PaymentAmount,
|
||||||
|
"utr5_payment_amount": utr5PaymentAmount,
|
||||||
|
"utr1_date": utr1Date,
|
||||||
|
"utr2_date": utr2Date,
|
||||||
|
"utr3_date": utr3Date,
|
||||||
|
"utr4_date": utr4Date,
|
||||||
|
"utr5_date": utr5Date,
|
||||||
|
"singed_doc_link": singedDocLink,
|
||||||
|
"signed_doc_uploaded_on": signedDocUploadedOn,
|
||||||
|
"signed_doc_uploaded_by": signedDocUploadedBy,
|
||||||
|
"status": status,
|
||||||
|
"status_id": statusId,
|
||||||
|
"created_by": createdBy,
|
||||||
|
"last_updated_by": lastUpdatedBy,
|
||||||
|
"last_updated_on": lastUpdatedOn?.toIso8601String(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
class Pageable {
|
||||||
|
final Sort? sort;
|
||||||
|
final int? pageNumber;
|
||||||
|
final int? pageSize;
|
||||||
|
final int? offset;
|
||||||
|
final bool? paged;
|
||||||
|
final bool? unpaged;
|
||||||
|
|
||||||
|
Pageable({
|
||||||
|
this.sort,
|
||||||
|
this.pageNumber,
|
||||||
|
this.pageSize,
|
||||||
|
this.offset,
|
||||||
|
this.paged,
|
||||||
|
this.unpaged,
|
||||||
|
});
|
||||||
|
|
||||||
|
factory Pageable.fromJson(Map<String, dynamic> json) => Pageable(
|
||||||
|
sort: json["sort"] == null ? null : Sort.fromJson(json["sort"]),
|
||||||
|
pageNumber: json["pageNumber"],
|
||||||
|
pageSize: json["pageSize"],
|
||||||
|
offset: json["offset"],
|
||||||
|
paged: json["paged"],
|
||||||
|
unpaged: json["unpaged"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"sort": sort?.toJson(),
|
||||||
|
"pageNumber": pageNumber,
|
||||||
|
"pageSize": pageSize,
|
||||||
|
"offset": offset,
|
||||||
|
"paged": paged,
|
||||||
|
"unpaged": unpaged,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
class Sort {
|
||||||
|
final bool? sorted;
|
||||||
|
final bool? empty;
|
||||||
|
final bool? unsorted;
|
||||||
|
|
||||||
|
Sort({
|
||||||
|
this.sorted,
|
||||||
|
this.empty,
|
||||||
|
this.unsorted,
|
||||||
|
});
|
||||||
|
|
||||||
|
factory Sort.fromJson(Map<String, dynamic> json) => Sort(
|
||||||
|
sorted: json["sorted"],
|
||||||
|
empty: json["empty"],
|
||||||
|
unsorted: json["unsorted"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"sorted": sorted,
|
||||||
|
"empty": empty,
|
||||||
|
"unsorted": unsorted,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,348 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:shayog/components/common/input_field.dart';
|
||||||
|
import 'package:shayog/components/styles/textStyles.dart';
|
||||||
|
import 'package:shayog/feature/presentation/screens/transporter/invoice_management/payment_view/ctrl/payment_view_ctrl.dart';
|
||||||
|
import '../../../../../../components/common/common_btn.dart';
|
||||||
|
import '../../../../../../components/common/common_button.dart';
|
||||||
|
import '../../../../../../components/common/custom_drop_down.dart';
|
||||||
|
import '../../../../../../components/common/data_cell.dart';
|
||||||
|
import '../../../../../../components/styles/app_colors.dart';
|
||||||
|
import '../../../../../../components/styles/app_strings.dart';
|
||||||
|
import '../../../../widgets/text_view.dart';
|
||||||
|
import '../../view/ctrl/invoice_management_controller.dart';
|
||||||
|
|
||||||
|
class PaymentView extends StatelessWidget {
|
||||||
|
const PaymentView({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final controller = Get.put(InvoiceManagementController());
|
||||||
|
final paymentCtrl = Get.put(PaymentViewCtrl());
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Obx(
|
||||||
|
() => controller.isPaymentFilter.value
|
||||||
|
? Container(
|
||||||
|
padding: const EdgeInsets.only(
|
||||||
|
left: 16.0, top: 8, right: 16, bottom: 16),
|
||||||
|
color: AppColors.clrF2,
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
TextView(text: "Plant"),
|
||||||
|
SizedBox(height: 8),
|
||||||
|
CustomDropdown(
|
||||||
|
backClr: AppColors.clrD9,
|
||||||
|
borderClr: AppColors.clrGrey,
|
||||||
|
items: paymentCtrl.plant,
|
||||||
|
itemLabel: (item) =>
|
||||||
|
"${item.plantCode}-${item.plantDesc}",
|
||||||
|
onSelected: (selected) {
|
||||||
|
paymentCtrl.selectedPlant.value =
|
||||||
|
"${selected?.plantCode}-${selected?.plantDesc}";
|
||||||
|
},
|
||||||
|
hintText: paymentCtrl.selectedPlant.value,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 16),
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
TextView(text: "Freight Bill No."),
|
||||||
|
SizedBox(height: 8),
|
||||||
|
CustomDropdown<String>(
|
||||||
|
backClr: AppColors.clrD9,
|
||||||
|
borderClr: AppColors.clrGrey,
|
||||||
|
items: paymentCtrl.freightBill,
|
||||||
|
itemLabel: (item) => item,
|
||||||
|
|
||||||
|
onSelected: (selected) {
|
||||||
|
paymentCtrl.selectedFreightBill.value =
|
||||||
|
selected.toString();
|
||||||
|
},
|
||||||
|
hintText:
|
||||||
|
paymentCtrl.selectedFreightBill.value,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 16),
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
TextView(text: "Product"),
|
||||||
|
SizedBox(height: 8),
|
||||||
|
CustomDropdown<dynamic>(
|
||||||
|
width: 250,
|
||||||
|
backClr: AppColors.clrD9,
|
||||||
|
borderClr: AppColors.clrGrey,
|
||||||
|
items: paymentCtrl.product,
|
||||||
|
itemLabel: (item) =>
|
||||||
|
"${item.materialCode}-${item.materialDescription}",
|
||||||
|
onSelected: (selected) {
|
||||||
|
paymentCtrl.selectedProduct.value =
|
||||||
|
"${selected.materialCode}-${selected.materialDescription}";
|
||||||
|
},
|
||||||
|
hintText: paymentCtrl.selectedProduct.value,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(height: 12),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
TextView(text: "Freight Invoice Date"),
|
||||||
|
SizedBox(height: 8),
|
||||||
|
InputField(
|
||||||
|
title: "Select Invoice Freight Date"),
|
||||||
|
|
||||||
|
// CustomDropdown(
|
||||||
|
// backClr: AppColors.clrD9,
|
||||||
|
// borderClr: AppColors.clrGrey,
|
||||||
|
// items: paymentCtrl.plant,
|
||||||
|
// itemLabel: (item) =>
|
||||||
|
// "${item.plantCode}-${item.plantDesc}",
|
||||||
|
// onSelected: (selected) {
|
||||||
|
// paymentCtrl.selectedPlant.value =
|
||||||
|
// selected?.plantCode ?? "";
|
||||||
|
// },
|
||||||
|
// hintText: paymentCtrl.selectedPlant.value,
|
||||||
|
// ),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(width: 16),
|
||||||
|
Expanded(child: Container()),
|
||||||
|
SizedBox(width: 16),
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
TextView(
|
||||||
|
text: "Freight Bill No.",
|
||||||
|
style: 12.txtTransparent),
|
||||||
|
SizedBox(height: 8),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
children: [
|
||||||
|
CommonBtn(
|
||||||
|
height: 25,
|
||||||
|
width: 100,
|
||||||
|
bkClr: Colors.white,
|
||||||
|
text: AppStrings.cancel,
|
||||||
|
style: 12.txtSBoldBlue,
|
||||||
|
clickAction: () {
|
||||||
|
paymentCtrl.resetDropdowns();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
SizedBox(width: 16),
|
||||||
|
CommonButton(
|
||||||
|
isLoading: paymentCtrl.isPayment,
|
||||||
|
borderRadius: 4,
|
||||||
|
height: 25,
|
||||||
|
width: 100,
|
||||||
|
text: AppStrings.submit,
|
||||||
|
textStyle: 12.txtSBoldWhite,
|
||||||
|
clickAction: () {
|
||||||
|
paymentCtrl.getPayments();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: SizedBox(),
|
||||||
|
),
|
||||||
|
Obx(
|
||||||
|
() => paymentCtrl.isPayment.value
|
||||||
|
? CircularProgressIndicator()
|
||||||
|
: Container(
|
||||||
|
margin: EdgeInsets.only(bottom: 16, top: 8),
|
||||||
|
// height: MediaQuery.of(context).size.height * 0.4,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border.all(color: AppColors.clrGrey)),
|
||||||
|
child: RawScrollbar(
|
||||||
|
thumbColor: AppColors.clrD9,
|
||||||
|
radius: Radius.circular(2),
|
||||||
|
trackVisibility: true,
|
||||||
|
thumbVisibility: true,
|
||||||
|
thickness: 14,
|
||||||
|
controller: paymentCtrl.verticalScrollController,
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
controller: paymentCtrl.verticalScrollController,
|
||||||
|
child: RawScrollbar(
|
||||||
|
thumbColor: AppColors.clrD9,
|
||||||
|
radius: Radius.circular(2),
|
||||||
|
thickness: 14,
|
||||||
|
trackVisibility: true,
|
||||||
|
thumbVisibility: true,
|
||||||
|
controller: paymentCtrl.horizontalScrollController,
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
scrollDirection: Axis.horizontal,
|
||||||
|
controller: paymentCtrl.horizontalScrollController,
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(bottom: 24, right: 24),
|
||||||
|
child: DataTable(
|
||||||
|
dataRowHeight: 28,
|
||||||
|
headingRowHeight: 40,
|
||||||
|
headingRowColor:
|
||||||
|
WidgetStateProperty.all(AppColors.clrF2),
|
||||||
|
border: TableBorder(
|
||||||
|
horizontalInside:
|
||||||
|
BorderSide(color: AppColors.clrGrey),
|
||||||
|
verticalInside:
|
||||||
|
BorderSide(color: AppColors.clrGrey),
|
||||||
|
bottom: BorderSide(color: AppColors.clrGrey),
|
||||||
|
left: BorderSide(color: AppColors.clrGrey),
|
||||||
|
right: BorderSide(color: AppColors.clrGrey),
|
||||||
|
top: BorderSide(color: AppColors.clrGrey),
|
||||||
|
),
|
||||||
|
columns: [
|
||||||
|
dataColumn(AppStrings.plant),
|
||||||
|
dataColumn(
|
||||||
|
AppStrings.productName,
|
||||||
|
),
|
||||||
|
dataColumn(AppStrings.freightBillNo),
|
||||||
|
dataColumn(AppStrings.freightBillDate),
|
||||||
|
dataColumn(AppStrings.billingQty),
|
||||||
|
dataColumn(AppStrings.uom),
|
||||||
|
dataColumn(AppStrings.freightAmount),
|
||||||
|
dataColumn(AppStrings.cGST),
|
||||||
|
dataColumn(AppStrings.sGST),
|
||||||
|
dataColumn(AppStrings.iGST),
|
||||||
|
dataColumn(AppStrings.totalGst),
|
||||||
|
dataColumn(AppStrings.totalInvoiceAmt),
|
||||||
|
dataColumn(AppStrings.paidAmt),
|
||||||
|
dataColumn(AppStrings.gstHold),
|
||||||
|
dataColumn('${AppStrings.utrNo}1'),
|
||||||
|
dataColumn('${AppStrings.utrDate}1'),
|
||||||
|
dataColumn('${AppStrings.utrAmt}1'),
|
||||||
|
dataColumn('${AppStrings.utrNo}2'),
|
||||||
|
dataColumn('${AppStrings.utrDate}2'),
|
||||||
|
dataColumn('${AppStrings.utrAmt}2'),
|
||||||
|
dataColumn('${AppStrings.utrNo}3'),
|
||||||
|
dataColumn('${AppStrings.utrDate}3'),
|
||||||
|
dataColumn('${AppStrings.utrAmt}3'),
|
||||||
|
dataColumn('${AppStrings.utrNo}4'),
|
||||||
|
dataColumn('${AppStrings.utrDate}4'),
|
||||||
|
dataColumn('${AppStrings.utrAmt}4'),
|
||||||
|
dataColumn('${AppStrings.utrNo}5'),
|
||||||
|
dataColumn('${AppStrings.utrDate}5'),
|
||||||
|
dataColumn('${AppStrings.utrAmt}5'),
|
||||||
|
],
|
||||||
|
rows: List<DataRow>.generate(
|
||||||
|
paymentCtrl.payments.length, (index) {
|
||||||
|
final stoppage = paymentCtrl.payments[index];
|
||||||
|
|
||||||
|
return DataRow(
|
||||||
|
// selected: stoppage.isSelected,
|
||||||
|
cells: [
|
||||||
|
editableCell(index,
|
||||||
|
"${stoppage.plantCode}-${stoppage.plantDesc}"),
|
||||||
|
editableCell(
|
||||||
|
index, "${stoppage.materialCode}"),
|
||||||
|
editableCell(
|
||||||
|
index, "${stoppage.freightbillCode}"),
|
||||||
|
editableCell(
|
||||||
|
index, "${stoppage.lastUpdatedOn}"),
|
||||||
|
|
||||||
|
editableCell(
|
||||||
|
index, "${stoppage.shipmentNetQty}"),
|
||||||
|
editableCell(index, "TON"),
|
||||||
|
editableCell(
|
||||||
|
index, "${stoppage.shipmentNetCost}"),
|
||||||
|
editableCell(
|
||||||
|
index, "${stoppage.cgstAmount}"),
|
||||||
|
editableCell(
|
||||||
|
index, "${stoppage.sgstAmount}"),
|
||||||
|
editableCell(
|
||||||
|
index, "${stoppage.igstAmount}"),
|
||||||
|
editableCell(
|
||||||
|
index, "${stoppage.totalGst}"),
|
||||||
|
editableCell(index,
|
||||||
|
"${stoppage.shipmentGrossCost}"),
|
||||||
|
editableCell(index, "-"),
|
||||||
|
// editableCell(index,
|
||||||
|
// "${stoppage.utr1PaymentAmount + stoppage.utr2PaymentAmount +
|
||||||
|
// stoppage.utr3PaymentAmount + stoppage.utr4PaymentAmount +
|
||||||
|
// stoppage.utr5PaymentAmount}"),
|
||||||
|
editableCell(
|
||||||
|
index, "${stoppage.gstAmount}"),
|
||||||
|
editableCell(
|
||||||
|
index, stoppage.utr1No ?? "-"),
|
||||||
|
editableCell(
|
||||||
|
index, stoppage.utr1Date ?? "-"),
|
||||||
|
editableCell(index,
|
||||||
|
stoppage.utr1PaymentAmount ?? "-"),
|
||||||
|
|
||||||
|
editableCell(
|
||||||
|
index, stoppage.utr2No ?? "-"),
|
||||||
|
editableCell(
|
||||||
|
index, stoppage.utr2Date ?? "-"),
|
||||||
|
editableCell(index,
|
||||||
|
stoppage.utr2PaymentAmount ?? "-"),
|
||||||
|
editableCell(
|
||||||
|
index, stoppage.utr3No ?? "-"),
|
||||||
|
editableCell(
|
||||||
|
index, stoppage.utr3Date ?? "-"),
|
||||||
|
editableCell(index,
|
||||||
|
stoppage.utr3PaymentAmount ?? "-"),
|
||||||
|
editableCell(
|
||||||
|
index, stoppage.utr4No ?? "-"),
|
||||||
|
editableCell(
|
||||||
|
index, stoppage.utr4Date ?? "-"),
|
||||||
|
editableCell(index,
|
||||||
|
stoppage.utr4PaymentAmount ?? "-"),
|
||||||
|
editableCell(
|
||||||
|
index, stoppage.utr5No ?? "-"),
|
||||||
|
editableCell(
|
||||||
|
index, stoppage.utr5Date ?? "-"),
|
||||||
|
editableCell(index,
|
||||||
|
stoppage.utr5PaymentAmount ?? "-"),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
|
||||||
|
class ViewInvoice extends StatelessWidget {
|
||||||
|
const ViewInvoice({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Column();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue