Files
Kifi/kifi-app/lib/features/sales/domain/marketplace_settlement.dart

104 lines
4.1 KiB
Dart

class MarketplaceSettlement {
final int? id;
final int? userId;
final int invoiceId;
final int? salesChannelId;
final String? channelName;
final String? settlementRef;
final DateTime settlementDate;
final double grossAmount;
final double commissionFee;
final double shippingFee;
final double otherFees;
final double feeGst;
final double tcsGstAmount;
final double tdsAmount;
final double totalDeductions;
final double netPayoutAmount;
final int? payoutWalletId;
final String status;
final String? notes;
final DateTime? createdAt;
final DateTime? updatedAt;
MarketplaceSettlement({
this.id,
this.userId,
required this.invoiceId,
this.salesChannelId,
this.channelName,
this.settlementRef,
required this.settlementDate,
required this.grossAmount,
this.commissionFee = 0.0,
this.shippingFee = 0.0,
this.otherFees = 0.0,
this.feeGst = 0.0,
this.tcsGstAmount = 0.0,
this.tdsAmount = 0.0,
required this.totalDeductions,
required this.netPayoutAmount,
this.payoutWalletId,
this.status = 'SETTLED',
this.notes,
this.createdAt,
this.updatedAt,
});
factory MarketplaceSettlement.fromJson(Map<String, dynamic> json) {
return MarketplaceSettlement(
id: json['id'],
userId: json['userId'] ?? json['user_id'],
invoiceId: json['invoiceId'] ?? json['invoice_id'] ?? 0,
salesChannelId: json['salesChannelId'] ?? json['sales_channel_id'],
channelName: json['channelName'] ?? json['channel_name'],
settlementRef: json['settlementRef'] ?? json['settlement_ref'],
settlementDate: json['settlementDate'] != null
? DateTime.parse(json['settlementDate'])
: (json['settlement_date'] != null ? DateTime.parse(json['settlement_date']) : DateTime.now()),
grossAmount: (json['grossAmount'] ?? json['gross_amount'] as num?)?.toDouble() ?? 0.0,
commissionFee: (json['commissionFee'] ?? json['commission_fee'] as num?)?.toDouble() ?? 0.0,
shippingFee: (json['shippingFee'] ?? json['shipping_fee'] as num?)?.toDouble() ?? 0.0,
otherFees: (json['otherFees'] ?? json['other_fees'] as num?)?.toDouble() ?? 0.0,
feeGst: (json['feeGst'] ?? json['fee_gst'] as num?)?.toDouble() ?? 0.0,
tcsGstAmount: (json['tcsGstAmount'] ?? json['tcs_gst_amount'] as num?)?.toDouble() ?? 0.0,
tdsAmount: (json['tdsAmount'] ?? json['tds_amount'] as num?)?.toDouble() ?? 0.0,
totalDeductions: (json['totalDeductions'] ?? json['total_deductions'] as num?)?.toDouble() ?? 0.0,
netPayoutAmount: (json['netPayoutAmount'] ?? json['net_payout_amount'] as num?)?.toDouble() ?? 0.0,
payoutWalletId: json['payoutWalletId'] ?? json['payout_wallet_id'],
status: json['status'] ?? 'SETTLED',
notes: json['notes'],
createdAt: json['createdAt'] != null
? DateTime.parse(json['createdAt'])
: (json['created_at'] != null ? DateTime.parse(json['created_at']) : null),
updatedAt: json['updatedAt'] != null
? DateTime.parse(json['updatedAt'])
: (json['updated_at'] != null ? DateTime.parse(json['updated_at']) : null),
);
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = {};
if (id != null) data['id'] = id;
if (userId != null) data['userId'] = userId;
data['invoiceId'] = invoiceId;
if (salesChannelId != null) data['salesChannelId'] = salesChannelId;
if (channelName != null) data['channelName'] = channelName;
if (settlementRef != null) data['settlementRef'] = settlementRef;
data['settlementDate'] = settlementDate.toIso8601String().split('T')[0];
data['grossAmount'] = grossAmount;
data['commissionFee'] = commissionFee;
data['shippingFee'] = shippingFee;
data['otherFees'] = otherFees;
data['feeGst'] = feeGst;
data['tcsGstAmount'] = tcsGstAmount;
data['tdsAmount'] = tdsAmount;
data['totalDeductions'] = totalDeductions;
data['netPayoutAmount'] = netPayoutAmount;
if (payoutWalletId != null) data['payoutWalletId'] = payoutWalletId;
data['status'] = status;
if (notes != null) data['notes'] = notes;
return data;
}
}