Files
kulakpos_app/lib/Screens/Purchase/Model/purchase_transaction_model.dart
2026-02-07 15:57:09 +07:00

503 lines
11 KiB
Dart

import '../../../model/sale_transaction_model.dart';
import '../../../widgets/multipal payment mathods/model/payment_transaction_model.dart';
class PurchaseTransaction {
PurchaseTransaction({
this.id,
this.partyId,
this.businessId,
this.userId,
this.discountAmount,
this.discountPercent,
this.discountType,
this.shippingCharge,
this.dueAmount,
this.paidAmount,
this.changeAmount,
this.totalAmount,
this.invoiceNumber,
this.isPaid,
this.paymentTypeId,
this.paymentType,
this.purchaseDate,
this.createdAt,
this.updatedAt,
this.user,
this.party,
this.details,
this.purchaseReturns,
this.transactions, // New Field
this.vatAmount,
this.vatId,
this.vatPercent,
this.vat,
this.branch,
});
PurchaseTransaction.fromJson(dynamic json) {
id = json['id'];
partyId = json['party_id'];
businessId = json['business_id'];
userId = json['user_id'];
discountAmount = json['discountAmount'];
discountPercent = json['discount_percent'];
shippingCharge = json['shipping_charge'];
discountType = json['discount_type'];
dueAmount = json['dueAmount'];
changeAmount = json['change_amount'];
vatAmount = json['vat_amount'];
vatPercent = json['vat_percent'];
vatId = json['vat_id'];
paidAmount = json['paidAmount'];
totalAmount = json['totalAmount'];
invoiceNumber = json['invoiceNumber'];
isPaid = json['isPaid'];
paymentTypeId = int.tryParse(json["payment_type_id"].toString());
vat = json['vat'] != null ? PurchaseVat.fromJson(json['vat']) : null;
purchaseDate = json['purchaseDate'];
createdAt = json['created_at'];
updatedAt = json['updated_at'];
paymentType = json['payment_type'] != null ? PaymentType.fromJson(json['payment_type']) : null;
branch = json['branch'] != null ? Branch.fromJson(json['branch']) : null;
user = json['user'] != null ? User.fromJson(json['user']) : null;
party = json['party'] != null ? Party.fromJson(json['party']) : null;
if (json['details'] != null) {
details = [];
json['details'].forEach((v) {
details?.add(PurchaseDetails.fromJson(v));
});
}
if (json['purchase_returns'] != null) {
purchaseReturns = [];
json['purchase_returns'].forEach((v) {
purchaseReturns?.add(PurchaseReturn.fromJson(v));
});
}
// New List from JSON
if (json['transactions'] != null) {
transactions = [];
json['transactions'].forEach((v) {
transactions?.add(PaymentsTransaction.fromJson(v));
});
}
}
num? id;
num? partyId;
num? businessId;
num? userId;
num? discountAmount;
num? discountPercent;
num? shippingCharge;
String? discountType;
num? dueAmount;
num? paidAmount;
num? changeAmount;
num? vatAmount;
num? vatPercent;
num? vatId;
num? totalAmount;
String? invoiceNumber;
bool? isPaid;
int? paymentTypeId;
PaymentType? paymentType;
Branch? branch;
String? purchaseDate;
String? createdAt;
String? updatedAt;
User? user;
Party? party;
List<PurchaseDetails>? details;
List<PurchaseReturn>? purchaseReturns;
List<PaymentsTransaction>? transactions; // Added
PurchaseVat? vat;
}
class PurchaseDetails {
PurchaseDetails({
this.id,
this.purchaseId,
this.productId,
this.productPurchasePrice,
this.quantities,
this.productWholeSalePrice,
this.productSalePrice,
this.productDealerPrice,
this.productStock,
this.profitPercent,
this.mfgDate,
this.expireDate,
this.stockId,
this.product,
this.stock,
});
PurchaseDetails.fromJson(dynamic json) {
id = json['id'];
purchaseId = json['purchase_id'];
productId = json['product_id'];
productPurchasePrice = json['productPurchasePrice'];
quantities = json['quantities'];
productDealerPrice = json['productDealerPrice'];
productSalePrice = json['productSalePrice'];
productStock = json['productStock'];
profitPercent = json['profit_percent'];
mfgDate = json['mfg_date'];
expireDate = json['expire_date'];
stockId = json['stock_id']; // Added
productWholeSalePrice = json['productWholeSalePrice'];
product = json['product'] != null ? Product.fromJson(json['product']) : null;
stock = json['stock'] != null ? PurchaseStock.fromJson(json['stock']) : null;
}
num? id;
num? purchaseId;
num? productId;
num? productPurchasePrice;
num? quantities;
num? productDealerPrice;
num? productSalePrice;
num? productWholeSalePrice;
num? productStock;
num? profitPercent;
num? stockId; // Added
PurchaseStock? stock;
String? mfgDate;
String? expireDate;
Product? product;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['purchase_id'] = purchaseId;
map['product_id'] = productId;
map['productPurchasePrice'] = productPurchasePrice;
map['quantities'] = quantities;
map['stock_id'] = stockId;
if (product != null) {
map['product'] = product?.toJson();
}
return map;
}
}
class Product {
Product({
this.id,
this.productName,
this.categoryId,
this.category,
this.productType,
this.vatAmount,
this.vatType,
this.vat,
});
Product.fromJson(dynamic json) {
id = json['id'];
productName = json['productName'];
productType = json['product_type'];
categoryId = json['category_id'];
vatAmount = json['vat_amount'];
vatType = json['vat_type'];
category = json['category'] != null ? Category.fromJson(json['category']) : null;
vat = json['vat'] != null ? PurchaseProductVat.fromJson(json['vat']) : null;
}
num? id;
String? productName;
String? productType;
String? vatType;
num? categoryId;
num? vatAmount;
Category? category;
PurchaseProductVat? vat;
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 PurchaseStock {
PurchaseStock({
this.id,
this.batchNo,
this.variantName,
this.warehouseId,
});
PurchaseStock.fromJson(dynamic json) {
id = json['id'];
batchNo = json['batch_no'] ?? 'N/A';
variantName = json['variant_name']; // Added
warehouseId = json['warehouse_id']; // Added
}
num? id;
String? batchNo;
String? variantName; // Added
num? warehouseId; // Added
}
class Party {
Party({
this.id,
this.name,
this.email,
this.phone,
this.type,
this.address,
});
Party.fromJson(dynamic json) {
id = json['id'];
name = json['name'];
email = json['email'];
phone = json['phone'];
type = json['type']; // Added based on JSON
address = json['address']; // Added based on JSON
}
num? id;
String? name;
String? email;
String? address;
String? phone;
String? type;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['name'] = name;
map['email'] = email;
map['address'] = address;
map['phone'] = phone;
map['type'] = type;
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 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 PurchaseReturn {
PurchaseReturn({
this.id,
this.businessId,
this.purchaseId,
this.invoiceNo,
this.returnDate,
this.createdAt,
this.updatedAt,
this.purchaseReturnDetails,
});
PurchaseReturn.fromJson(dynamic json) {
id = json['id'];
businessId = json['business_id'];
purchaseId = json['purchase_id'];
invoiceNo = json['invoice_no'];
returnDate = json['return_date'];
createdAt = json['created_at'];
updatedAt = json['updated_at'];
if (json['details'] != null) {
purchaseReturnDetails = [];
json['details'].forEach((v) {
purchaseReturnDetails?.add(PurchaseReturnDetails.fromJson(v));
});
}
}
num? id;
num? businessId;
num? purchaseId;
String? invoiceNo;
String? returnDate;
String? createdAt;
String? updatedAt;
List<PurchaseReturnDetails>? purchaseReturnDetails;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['business_id'] = businessId;
map['purchase_id'] = purchaseId;
map['invoice_no'] = invoiceNo;
map['return_date'] = returnDate;
map['created_at'] = createdAt;
map['updated_at'] = updatedAt;
if (purchaseReturnDetails != null) {
map['details'] = purchaseReturnDetails?.map((v) => v.toJson()).toList();
}
return map;
}
}
class PurchaseReturnDetails {
PurchaseReturnDetails({
this.id,
this.businessId,
this.purchaseReturnId,
this.purchaseDetailId,
this.returnAmount,
this.returnQty,
});
PurchaseReturnDetails.fromJson(dynamic json) {
id = json['id'];
businessId = json['business_id'];
purchaseReturnId = json['purchase_return_id'];
purchaseDetailId = json['purchase_detail_id'];
returnAmount = json['return_amount'];
returnQty = json['return_qty'];
}
num? id;
num? businessId;
num? purchaseReturnId;
num? purchaseDetailId;
num? returnAmount;
num? returnQty;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['business_id'] = businessId;
map['purchase_return_id'] = purchaseReturnId;
map['purchase_detail_id'] = purchaseDetailId;
map['return_amount'] = returnAmount;
map['return_qty'] = returnQty;
return map;
}
}
class PurchaseVat {
PurchaseVat({
this.id,
this.name,
this.rate,
});
PurchaseVat.fromJson(dynamic json) {
id = json['id'];
name = json['name'];
rate = json['rate'];
}
num? id;
String? name;
num? rate;
}
class PaymentType {
PaymentType({
this.id,
this.name,
});
PaymentType.fromJson(dynamic json) {
id = json['id'];
name = json['name'];
}
num? id;
String? name;
}
class PurchaseProductVat {
PurchaseProductVat({
this.id,
this.name,
this.rate,
});
PurchaseProductVat.fromJson(dynamic json) {
id = json['id'];
name = json['name'];
rate = json['rate'];
}
num? id;
num? rate;
String? name;
}