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; List? salesReturns; List? 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 toJson(dynamic json) { // final Map 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 toJson() { final map = {}; 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 toJson() { final map = {}; 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 toJson() { final map = {}; 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 toJson() { final map = {}; 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 toJson() { final map = {}; 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; Map toJson() { final map = {}; 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 toJson() { final map = {}; 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; }