Files
kulakpos_app/lib/model/sale_transaction_model.dart
2026-02-07 15:57:09 +07:00

550 lines
12 KiB
Dart

import '../widgets/multipal payment mathods/model/payment_transaction_model.dart';
class SaleModel {
SaleModel(this.message, this.totalAmount, this.totalReturnedAmount, this.data);
SaleModel.fromJson(dynamic json) {
message = json['message'];
totalAmount = json['total_amount'];
totalReturnedAmount = json['total_return_amount'];
data = json['data'] != null ? SalesTransactionModel.fromJson(json['data']) : null;
}
String? message;
num? totalAmount;
num? totalReturnedAmount;
SalesTransactionModel? data;
}
class SalesTransactionModel {
SalesTransactionModel({
this.id,
this.businessId,
this.partyId,
this.userId,
this.discountAmount,
this.discountPercent,
this.shippingCharge,
this.dueAmount,
this.isPaid,
this.vatAmount,
this.vatPercent,
this.paidAmount,
this.changeAmount,
this.totalAmount,
this.paymentTypeId,
this.paymentType,
this.discountType,
this.invoiceNumber,
this.saleDate,
this.createdAt,
this.updatedAt,
this.detailsSumLossProfit,
this.user,
this.party,
this.salesDetails,
this.salesReturns,
this.transactions, // NEW: List of transactions
this.meta,
this.vatId,
this.vat,
this.image,
this.roundingAmount,
this.actualTotalAmount,
this.roundingOption,
this.branch,
});
SalesTransactionModel.fromJson(dynamic json) {
id = json['id'];
businessId = json['business_id'];
partyId = num.tryParse(json['party_id'].toString()) ?? 0;
userId = json['user_id'];
discountAmount = json['discountAmount'];
discountPercent = num.tryParse(json['discount_percent'].toString()) ?? 0;
shippingCharge = num.tryParse(json['shipping_charge'].toString()) ?? 0;
dueAmount = json['dueAmount'];
isPaid = json['isPaid'];
vatAmount = json['vat_amount'];
vatPercent = json['vat_percent'];
vatId = json['vat_id'];
paidAmount = json['paidAmount'];
changeAmount = json['change_amount'];
totalAmount = json['totalAmount'];
paymentTypeId = int.tryParse(json['payment_type_id'].toString()) ?? 0;
discountType = json['discount_type'];
invoiceNumber = json['invoiceNumber'];
saleDate = json['saleDate'];
createdAt = json['created_at'];
updatedAt = json['updated_at'];
roundingOption = json['rounding_option'].toString();
roundingAmount = num.tryParse(json['rounding_amount'].toString()) ?? 0;
actualTotalAmount = num.tryParse(json['actual_total_amount'].toString()) ?? 0;
detailsSumLossProfit = json['lossProfit'];
user = json['user'] != null ? User.fromJson(json['user']) : null;
vat = json['vat'] != null ? SalesVat.fromJson(json['vat']) : null;
paymentType = json['payment_type'] != null ? PaymentType.fromJson(json['payment_type']) : null;
branch = json['branch'] != null ? Branch.fromJson(json['branch']) : null;
meta = json['meta'] != null ? Meta.fromJson(json['meta']) : null;
party = json['party'] != null ? SalesParty.fromJson(json['party']) : SalesParty(name: 'Guest', type: 'Guest');
if (json['details'] != null) {
salesDetails = [];
json['details'].forEach((v) {
salesDetails?.add(SalesDetails.fromJson(v));
});
}
if (json['sale_returns'] != null) {
salesReturns = [];
json['sale_returns'].forEach((v) {
salesReturns?.add(SalesReturn.fromJson(v));
});
}
// NEW: Parsing the transactions list
if (json['transactions'] != null) {
transactions = [];
json['transactions'].forEach((v) {
transactions?.add(PaymentsTransaction.fromJson(v));
});
}
image = json['image'];
}
num? id;
num? businessId;
num? partyId;
num? userId;
num? discountAmount;
num? discountPercent;
num? shippingCharge;
num? dueAmount;
bool? isPaid;
num? vatAmount;
num? vatPercent;
num? vatId;
num? paidAmount;
num? changeAmount;
num? totalAmount;
num? roundingAmount;
num? actualTotalAmount;
String? roundingOption;
PaymentType? paymentType;
Branch? branch;
int? paymentTypeId;
String? discountType;
String? invoiceNumber;
String? saleDate;
String? createdAt;
String? updatedAt;
num? detailsSumLossProfit;
User? user;
SalesParty? party;
Meta? meta;
SalesVat? vat;
List<SalesDetails>? salesDetails;
List<SalesReturn>? salesReturns;
List<PaymentsTransaction>? transactions; // NEW Variable
String? image;
}
// class PaymentType {
// int? id;
// int? name;
// PaymentType(this.id, this.name);
//
// PaymentType.fromJson(dynamic json) {
// id = json['id'];
// name = json['name'];
// }
//
// Map<String, dynamic> toJson(dynamic json) {
// final Map<String, dynamic> data = {};
// data['id'] = id;
// data['name'] = name;
// return data;
// }
// }
class SalesDetails {
SalesDetails({
this.id,
this.saleId,
this.productId,
this.price,
this.discount, // NEW
this.lossProfit,
this.quantities,
this.productPurchasePrice,
this.mfgDate,
this.expireDate,
this.stockId,
this.stock,
this.warrantyInfo, // NEW
this.createdAt,
this.updatedAt,
this.product,
});
SalesDetails.fromJson(dynamic json) {
id = json['id'];
saleId = json['sale_id'];
productId = json['product_id'];
price = json['price'];
discount = json['discount']; // NEW
lossProfit = json['lossProfit'];
quantities = json['quantities'];
productPurchasePrice = json['productPurchasePrice'];
mfgDate = json['mfg_date'];
expireDate = json['expire_date'];
stockId = json['stock_id'];
// NEW: Warranty Info parsing
warrantyInfo = json['warranty_guarantee_info'] != null
? WarrantyGuaranteeInfo.fromJson(json['warranty_guarantee_info'])
: null;
stock = json['stock'] != null ? SalesStock.fromJson(json['stock']) : null;
createdAt = json['created_at'];
updatedAt = json['updated_at'];
product = json['product'] != null ? SalesProduct.fromJson(json['product']) : null;
}
num? id;
num? saleId;
num? productId;
num? price;
num? discount; // NEW Variable
num? lossProfit;
num? quantities;
num? productPurchasePrice;
String? mfgDate;
String? expireDate;
num? stockId;
SalesStock? stock;
WarrantyGuaranteeInfo? warrantyInfo; // NEW Variable
String? createdAt;
String? updatedAt;
SalesProduct? product;
}
// NEW CLASS: Handles Warranty and Guarantee details
class WarrantyGuaranteeInfo {
String? warrantyDuration;
String? warrantyUnit;
String? guaranteeDuration;
String? guaranteeUnit;
WarrantyGuaranteeInfo({
this.warrantyDuration,
this.warrantyUnit,
this.guaranteeDuration,
this.guaranteeUnit,
});
WarrantyGuaranteeInfo.fromJson(dynamic json) {
warrantyDuration = json['warranty_duration']?.toString();
warrantyUnit = json['warranty_unit'];
guaranteeDuration = json['guarantee_duration']?.toString();
guaranteeUnit = json['guarantee_unit'];
}
}
class SalesProduct {
SalesProduct({
this.id,
this.productName,
this.categoryId,
this.category,
this.productPurchasePrice,
this.productCode,
this.productType,
});
SalesProduct.fromJson(dynamic json) {
id = json['id'];
productName = json['productName'];
productCode = json['productCode'];
categoryId = json['category_id'];
productType = json['product_type'];
productPurchasePrice = json['productPurchasePrice'];
category = json['category'] != null ? Category.fromJson(json['category']) : null;
}
num? id;
String? productName;
String? productCode;
num? categoryId;
num? productPurchasePrice;
String? productType;
Category? category;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['productName'] = productName;
map['category_id'] = categoryId;
if (category != null) {
map['category'] = category?.toJson();
}
return map;
}
}
class Category {
Category({
this.id,
this.categoryName,
});
Category.fromJson(dynamic json) {
id = json['id'];
categoryName = json['categoryName'];
}
num? id;
String? categoryName;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['categoryName'] = categoryName;
return map;
}
}
class SalesParty {
SalesParty({
this.id,
this.name,
this.email,
this.phone,
this.type,
this.address,
});
SalesParty.fromJson(dynamic json) {
id = json['id'];
name = json['name'];
email = json['email'];
phone = json['phone'];
type = json['type'];
address = json['address'];
}
num? id;
String? name;
dynamic email;
String? phone;
String? type;
String? address;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['name'] = name;
map['email'] = email;
map['phone'] = phone;
map['type'] = type;
map['address'] = address;
return map;
}
}
class User {
User({
this.id,
this.name,
this.role,
});
User.fromJson(dynamic json) {
id = json['id'];
name = json['name'];
role = json['role'];
}
num? id;
String? name;
String? role;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['name'] = name;
map['role'] = role;
return map;
}
}
class Meta {
Meta({
this.customerPhone,
this.note,
});
Meta.fromJson(dynamic json) {
customerPhone = json['customer_phone'];
note = json['note'];
}
String? customerPhone;
String? note;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['customer_phone'] = customerPhone;
map['note'] = note;
return map;
}
}
class SalesReturn {
SalesReturn({
this.id,
this.businessId,
this.saleId,
this.invoiceNo,
this.returnDate,
this.createdAt,
this.updatedAt,
this.salesReturnDetails,
});
SalesReturn.fromJson(dynamic json) {
id = json['id'];
businessId = json['business_id'];
saleId = json['sale_id'];
invoiceNo = json['invoice_no'];
returnDate = json['return_date'];
createdAt = json['created_at'];
updatedAt = json['updated_at'];
if (json['details'] != null) {
salesReturnDetails = [];
json['details'].forEach((v) {
salesReturnDetails?.add(SalesReturnDetails.fromJson(v));
});
}
}
num? id;
num? businessId;
num? saleId;
String? invoiceNo;
String? returnDate;
String? createdAt;
String? updatedAt;
List<SalesReturnDetails>? salesReturnDetails;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['business_id'] = businessId;
map['sale_id'] = saleId;
map['invoice_no'] = invoiceNo;
map['return_date'] = returnDate;
map['created_at'] = createdAt;
map['updated_at'] = updatedAt;
if (salesReturnDetails != null) {
map['details'] = salesReturnDetails?.map((v) => v.toJson()).toList();
}
return map;
}
}
class SalesReturnDetails {
SalesReturnDetails({
this.id,
this.businessId,
this.saleReturnId,
this.saleDetailId,
this.returnAmount,
this.returnQty,
});
SalesReturnDetails.fromJson(dynamic json) {
id = json['id'];
businessId = json['business_id'];
saleReturnId = json['sale_return_id'];
saleDetailId = json['sale_detail_id'];
returnAmount = json['return_amount'];
returnQty = json['return_qty'];
}
num? id;
num? businessId;
num? saleReturnId;
num? saleDetailId;
num? returnAmount;
num? returnQty;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['business_id'] = businessId;
map['sale_return_id'] = saleReturnId;
map['sale_detail_id'] = saleDetailId;
map['return_amount'] = returnAmount;
map['return_qty'] = returnQty;
return map;
}
}
class SalesVat {
SalesVat({
this.id,
this.name,
this.rate,
});
SalesVat.fromJson(dynamic json) {
id = json['id'];
name = json['name'];
rate = json['rate'];
}
num? id;
String? name;
num? rate;
}
class Branch {
Branch({
this.id,
this.name,
this.phone,
this.address,
});
Branch.fromJson(dynamic json) {
id = json['id'];
name = json['name'];
phone = json['phone'];
address = json['address'];
}
num? id;
String? name;
String? phone;
String? address;
}
class SalesStock {
SalesStock({
this.id,
this.batchNo,
this.productCurrentStock,
});
SalesStock.fromJson(dynamic json) {
id = json['id'];
batchNo = json['batch_no'] ?? 'N/A';
productCurrentStock = json['productStock'];
}
num? id;
String? batchNo;
num? productCurrentStock;
}