pd-android-app/lib/models/single_get_order_model.dart

270 lines
8.3 KiB
Dart

import 'package:cheminova/models/rd_order_item_model.dart';
class SingleGetOrderModel {
final String id;
String? paymentMode;
String? shipTo;
String? billTo;
List<RDOrderItem>? orderItem;
double? subtotal;
double? gstTotal;
double? grandTotal;
String? status;
List<dynamic>? invoices;
AddedBy? addedBy;
String? pd;
bool? isCancelled;
bool? isDelivered;
String? deliveredDate;
DateTime? statusUpdatedAt;
String? uniqueId;
DateTime? createdAt;
DateTime? updatedAt;
SingleGetOrderModel({
required this.id,
this.paymentMode,
this.shipTo,
this.billTo,
this.orderItem,
this.subtotal,
this.gstTotal,
this.grandTotal,
this.status,
this.invoices,
this.addedBy,
this.pd,
this.isCancelled,
this.isDelivered,
this.deliveredDate,
this.statusUpdatedAt,
this.uniqueId,
this.createdAt,
this.updatedAt,
});
factory SingleGetOrderModel.fromJson(Map<String, dynamic> json) {
return SingleGetOrderModel(
id: json['_id'] ?? '',
paymentMode: json['paymentMode'] ?? '',
shipTo: json['shipTo'] ?? '',
billTo: json['billTo'] ?? '',
orderItem: (json['orderItem'] as List<dynamic>?)
?.map((item) => RDOrderItem.fromJson(item))
.toList() ??
[],
subtotal: (json['subtotal'] as num?)?.toDouble() ?? 0.0,
gstTotal: (json['gstTotal'] as num?)?.toDouble() ?? 0.0,
grandTotal: (json['grandTotal'] as num?)?.toDouble() ?? 0.0,
status: json['status'] ?? '',
invoices: json['invoices'] ?? [],
addedBy: AddedBy.fromJson(json['addedBy'] ?? {}),
pd: json['pd'] ?? '',
isCancelled: json['iscancelled'] ?? false,
isDelivered: json['isDelivered'] ?? false,
deliveredDate: json['DeliveredDate'] ?? '',
statusUpdatedAt: DateTime.parse(json['statusUpdatedAt'] ?? DateTime.now().toString()),
uniqueId: json['uniqueId'] ?? '',
createdAt: DateTime.parse(json['createdAt'] ?? DateTime.now().toString()),
updatedAt: DateTime.parse(json['updatedAt'] ?? DateTime.now().toString()),
);
}
Map<String, dynamic> toJson() {
return {
'_id': id,
'paymentMode': paymentMode,
'shipTo': shipTo,
'billTo': billTo,
'orderItem': orderItem?.map((item) => item.toJson()).toList(),
'subtotal': subtotal,
'gstTotal': gstTotal,
'grandTotal': grandTotal,
'status': status,
'invoices': invoices,
'addedBy': addedBy?.toJson(),
'pd': pd,
'iscancelled': isCancelled,
'isDelivered': isDelivered,
'DeliveredDate': deliveredDate,
'statusUpdatedAt': statusUpdatedAt?.toIso8601String(),
'uniqueId': uniqueId,
'createdAt': createdAt?.toIso8601String(),
'updatedAt': updatedAt?.toIso8601String(),
};
}
@override
String toString() {
return 'SingleGetOrderModel(id: $id, paymentMode: $paymentMode, shipTo: $shipTo, billTo: $billTo, '
'orderItem: $orderItem, subtotal: $subtotal, gstTotal: $gstTotal, grandTotal: $grandTotal, '
'status: $status, invoices: $invoices, addedBy: $addedBy, pd: $pd, '
'isCancelled: $isCancelled, isDelivered: $isDelivered, deliveredDate: $deliveredDate, '
'statusUpdatedAt: $statusUpdatedAt, uniqueId: $uniqueId, createdAt: $createdAt, updatedAt: $updatedAt)';
}
}
class OrderItem {
final String productId;
final String sku;
final String name;
final String categoryName;
final String brandName;
final int price; // Use int for price
final int gst; // Use int for GST
final int hsnCode; // Use int for HSN Code
final String description;
final List<String> image; // Assuming images are stored as a list of strings
final int quantity;
final int remainingQuantity;
int? processQuantity;
final String id; // Use String for _id
OrderItem({
required this.productId,
required this.sku,
required this.name,
required this.categoryName,
required this.brandName,
required this.price,
required this.gst,
required this.hsnCode,
required this.description,
required this.image,
required this.quantity,
required this.remainingQuantity,
this.processQuantity = 1,
required this.id,
});
factory OrderItem.fromJson(Map<String, dynamic> json) {
return OrderItem(
productId: json['productId'] ?? '',
sku: json['SKU'] ?? '',
name: json['name'] ?? '',
categoryName: json['categoryName'] ?? '',
brandName: json['brandName'] ?? '',
price: (json['price'] as num?)?.toInt() ?? 0, // Handle as num
gst: (json['GST'] as num?)?.toInt() ?? 0, // Handle as num
hsnCode: (json['HSN_Code'] as num?)?.toInt() ?? 0, // Handle as num
description: json['description'] ?? '',
image: List<String>.from(json['image'] ?? []),
quantity: (json['quantity'] as num?)?.toInt() ?? 0, // Handle as num
remainingQuantity: (json['remainingQuantity'] as num?)?.toInt() ?? 0, // Handle as num
processQuantity: (json['processQuantity']as num?)?.toInt()??0,
id: json['_id'] ?? '',
);
}
Map<String, dynamic> toJson() {
return {
'productId': productId,
'SKU': sku,
'name': name,
'categoryName': categoryName,
'brandName': brandName,
'price': price,
'GST': gst,
'HSN_Code': hsnCode,
'description': description,
'image': image,
'quantity': quantity,
'remainingQuantity': remainingQuantity,
'_id': id,
};
}
@override
String toString() {
return 'OrderItem(productId: $productId, SKU: $sku, name: $name, categoryName: $categoryName, '
'brandName: $brandName, price: $price, GST: $gst, HSN_Code: $hsnCode, '
'description: $description, image: $image, quantity: $quantity, '
'remainingQuantity: $remainingQuantity, id: $id)';
}
}
class AddedBy {
final String id;
final String designation;
final String name;
final String email;
final String mobileNumber;
final String principalDistributor;
final String addedBy;
final String userType;
final String kyc;
String? fcmToken;
final DateTime createdAt;
final DateTime updatedAt;
final String mappedSC;
final String uniqueId;
final String mappedTM;
AddedBy({
required this.id,
required this.designation,
required this.name,
required this.email,
required this.mobileNumber,
required this.principalDistributor,
required this.addedBy,
required this.userType,
required this.kyc,
this.fcmToken,
required this.createdAt,
required this.updatedAt,
required this.mappedSC,
required this.uniqueId,
required this.mappedTM,
});
factory AddedBy.fromJson(Map<String, dynamic> json) {
return AddedBy(
id: json['_id'] ?? '',
designation: json['designation'] ?? '',
name: json['name'] ?? '',
email: json['email'] ?? '',
mobileNumber: json['mobile_number'] ?? '',
principalDistributor: json['principal_distributer'] ?? '',
addedBy: json['addedBy'] ?? '',
userType: json['userType'] ?? '',
kyc: json['kyc'] ?? '',
fcmToken: json['fcm_token']?.toString(), // Handle null safely
createdAt: DateTime.parse(json['createdAt'] ?? DateTime.now().toString()),
updatedAt: DateTime.parse(json['updatedAt'] ?? DateTime.now().toString()),
mappedSC: json['mappedSC'] ?? '',
uniqueId: json['uniqueId'] ?? '',
mappedTM: json['mappedTM'] ?? '',
);
}
Map<String, dynamic> toJson() {
return {
'_id': id,
'designation': designation,
'name': name,
'email': email,
'mobile_number': mobileNumber,
'principal_distributer': principalDistributor,
'addedBy': addedBy,
'userType': userType,
'kyc': kyc,
'fcm_token': fcmToken,
'createdAt': createdAt.toIso8601String(),
'updatedAt': updatedAt.toIso8601String(),
'mappedSC': mappedSC,
'uniqueId': uniqueId,
'mappedTM': mappedTM,
};
}
@override
String toString() {
return 'AddedBy(id: $id, designation: $designation, name: $name, email: $email, '
'mobileNumber: $mobileNumber, principalDistributor: $principalDistributor, '
'addedBy: $addedBy, userType: $userType, kyc: $kyc, '
'fcmToken: $fcmToken, createdAt: $createdAt, updatedAt: $updatedAt, '
'mappedSC: $mappedSC, uniqueId: $uniqueId, mappedTM: $mappedTM)';
}
}