Added market place specific feature
This commit is contained in:
201
kifi-app/lib/features/sales/domain/credit_note.dart
Normal file
201
kifi-app/lib/features/sales/domain/credit_note.dart
Normal file
@@ -0,0 +1,201 @@
|
||||
class CreditNoteItem {
|
||||
final int? id;
|
||||
final int? creditNoteId;
|
||||
final int? invoiceItemId;
|
||||
final int? productId;
|
||||
final int? inventoryItemId;
|
||||
final String? productName;
|
||||
final String? sku;
|
||||
final String? huid;
|
||||
final String? hsnCode;
|
||||
final double quantity;
|
||||
final double? weight;
|
||||
final double unitPrice;
|
||||
final double taxRate;
|
||||
final double cgst;
|
||||
final double sgst;
|
||||
final double igst;
|
||||
final double discount;
|
||||
final double makingCharge;
|
||||
final double otherCharges;
|
||||
final double total;
|
||||
|
||||
CreditNoteItem({
|
||||
this.id,
|
||||
this.creditNoteId,
|
||||
this.invoiceItemId,
|
||||
this.productId,
|
||||
this.inventoryItemId,
|
||||
this.productName,
|
||||
this.sku,
|
||||
this.huid,
|
||||
this.hsnCode,
|
||||
required this.quantity,
|
||||
this.weight,
|
||||
required this.unitPrice,
|
||||
this.taxRate = 0.0,
|
||||
this.cgst = 0.0,
|
||||
this.sgst = 0.0,
|
||||
this.igst = 0.0,
|
||||
this.discount = 0.0,
|
||||
this.makingCharge = 0.0,
|
||||
this.otherCharges = 0.0,
|
||||
required this.total,
|
||||
});
|
||||
|
||||
factory CreditNoteItem.fromJson(Map<String, dynamic> json) {
|
||||
return CreditNoteItem(
|
||||
id: json['id'],
|
||||
creditNoteId: json['creditNoteId'] ?? json['credit_note_id'],
|
||||
invoiceItemId: json['invoiceItemId'] ?? json['invoice_item_id'],
|
||||
productId: json['productId'] ?? json['product_id'],
|
||||
inventoryItemId: json['inventoryItemId'] ?? json['inventory_item_id'],
|
||||
productName: json['productName'] ?? json['product_name'],
|
||||
sku: json['sku'],
|
||||
huid: json['huid'],
|
||||
hsnCode: json['hsnCode'] ?? json['hsn_code'],
|
||||
quantity: (json['quantity'] as num?)?.toDouble() ?? 1.0,
|
||||
weight: (json['weight'] as num?)?.toDouble(),
|
||||
unitPrice: (json['unitPrice'] ?? json['unit_price'] as num?)?.toDouble() ?? 0.0,
|
||||
taxRate: (json['taxRate'] ?? json['tax_rate'] as num?)?.toDouble() ?? 0.0,
|
||||
cgst: (json['cgst'] as num?)?.toDouble() ?? 0.0,
|
||||
sgst: (json['sgst'] as num?)?.toDouble() ?? 0.0,
|
||||
igst: (json['igst'] as num?)?.toDouble() ?? 0.0,
|
||||
discount: (json['discount'] as num?)?.toDouble() ?? 0.0,
|
||||
makingCharge: (json['makingCharge'] ?? json['making_charge'] as num?)?.toDouble() ?? 0.0,
|
||||
otherCharges: (json['otherCharges'] ?? json['other_charges'] as num?)?.toDouble() ?? 0.0,
|
||||
total: (json['total'] as num?)?.toDouble() ?? 0.0,
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = {};
|
||||
if (id != null) data['id'] = id;
|
||||
if (creditNoteId != null) data['creditNoteId'] = creditNoteId;
|
||||
if (invoiceItemId != null) data['invoiceItemId'] = invoiceItemId;
|
||||
if (productId != null) data['productId'] = productId;
|
||||
if (inventoryItemId != null) data['inventoryItemId'] = inventoryItemId;
|
||||
if (productName != null) data['productName'] = productName;
|
||||
if (sku != null) data['sku'] = sku;
|
||||
if (huid != null) data['huid'] = huid;
|
||||
if (hsnCode != null) data['hsnCode'] = hsnCode;
|
||||
data['quantity'] = quantity;
|
||||
if (weight != null) data['weight'] = weight;
|
||||
data['unitPrice'] = unitPrice;
|
||||
data['taxRate'] = taxRate;
|
||||
data['cgst'] = cgst;
|
||||
data['sgst'] = sgst;
|
||||
data['igst'] = igst;
|
||||
data['discount'] = discount;
|
||||
data['makingCharge'] = makingCharge;
|
||||
data['otherCharges'] = otherCharges;
|
||||
data['total'] = total;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class CreditNote {
|
||||
final int? id;
|
||||
final int? userId;
|
||||
final int invoiceId;
|
||||
final String creditNoteNumber;
|
||||
final int? customerId;
|
||||
final DateTime returnDate;
|
||||
final String reason; // CUSTOMER_RETURN, RTO_UNDELIVERED, DEFECTIVE, EXCHANGE, OTHER
|
||||
final bool restockItems;
|
||||
final double subtotal;
|
||||
final double taxTotal;
|
||||
final double cgstTotal;
|
||||
final double sgstTotal;
|
||||
final double igstTotal;
|
||||
final double discountTotal;
|
||||
final double totalAmount;
|
||||
final String refundStatus; // ADJUSTED_TO_AR, REFUNDED_TO_WALLET, STORE_CREDIT, PENDING
|
||||
final int? refundWalletId;
|
||||
final String? notes;
|
||||
final DateTime? createdAt;
|
||||
final DateTime? updatedAt;
|
||||
final List<CreditNoteItem> items;
|
||||
|
||||
CreditNote({
|
||||
this.id,
|
||||
this.userId,
|
||||
required this.invoiceId,
|
||||
required this.creditNoteNumber,
|
||||
this.customerId,
|
||||
required this.returnDate,
|
||||
this.reason = 'CUSTOMER_RETURN',
|
||||
this.restockItems = true,
|
||||
required this.subtotal,
|
||||
this.taxTotal = 0.0,
|
||||
this.cgstTotal = 0.0,
|
||||
this.sgstTotal = 0.0,
|
||||
this.igstTotal = 0.0,
|
||||
this.discountTotal = 0.0,
|
||||
required this.totalAmount,
|
||||
this.refundStatus = 'ADJUSTED_TO_AR',
|
||||
this.refundWalletId,
|
||||
this.notes,
|
||||
this.createdAt,
|
||||
this.updatedAt,
|
||||
this.items = const [],
|
||||
});
|
||||
|
||||
factory CreditNote.fromJson(Map<String, dynamic> json) {
|
||||
return CreditNote(
|
||||
id: json['id'],
|
||||
userId: json['userId'] ?? json['user_id'],
|
||||
invoiceId: json['invoiceId'] ?? json['invoice_id'] ?? 0,
|
||||
creditNoteNumber: json['creditNoteNumber'] ?? json['credit_note_number'] ?? '',
|
||||
customerId: json['customerId'] ?? json['customer_id'],
|
||||
returnDate: json['returnDate'] != null
|
||||
? DateTime.parse(json['returnDate'])
|
||||
: (json['return_date'] != null ? DateTime.parse(json['return_date']) : DateTime.now()),
|
||||
reason: json['reason'] ?? 'CUSTOMER_RETURN',
|
||||
restockItems: json['restockItems'] ?? json['restock_items'] ?? true,
|
||||
subtotal: (json['subtotal'] as num?)?.toDouble() ?? 0.0,
|
||||
taxTotal: (json['taxTotal'] ?? json['tax_total'] as num?)?.toDouble() ?? 0.0,
|
||||
cgstTotal: (json['cgstTotal'] ?? json['cgst_total'] as num?)?.toDouble() ?? 0.0,
|
||||
sgstTotal: (json['sgstTotal'] ?? json['sgst_total'] as num?)?.toDouble() ?? 0.0,
|
||||
igstTotal: (json['igstTotal'] ?? json['igst_total'] as num?)?.toDouble() ?? 0.0,
|
||||
discountTotal: (json['discountTotal'] ?? json['discount_total'] as num?)?.toDouble() ?? 0.0,
|
||||
totalAmount: (json['totalAmount'] ?? json['total_amount'] as num?)?.toDouble() ?? 0.0,
|
||||
refundStatus: json['refundStatus'] ?? json['refund_status'] ?? 'ADJUSTED_TO_AR',
|
||||
refundWalletId: json['refundWalletId'] ?? json['refund_wallet_id'],
|
||||
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),
|
||||
items: json['items'] != null
|
||||
? (json['items'] as List).map((i) => CreditNoteItem.fromJson(i)).toList()
|
||||
: [],
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = {};
|
||||
if (id != null) data['id'] = id;
|
||||
if (userId != null) data['userId'] = userId;
|
||||
data['invoiceId'] = invoiceId;
|
||||
data['creditNoteNumber'] = creditNoteNumber;
|
||||
if (customerId != null) data['customerId'] = customerId;
|
||||
data['returnDate'] = returnDate.toIso8601String().split('T')[0];
|
||||
data['reason'] = reason;
|
||||
data['restockItems'] = restockItems;
|
||||
data['subtotal'] = subtotal;
|
||||
data['taxTotal'] = taxTotal;
|
||||
data['cgstTotal'] = cgstTotal;
|
||||
data['sgstTotal'] = sgstTotal;
|
||||
data['igstTotal'] = igstTotal;
|
||||
data['discountTotal'] = discountTotal;
|
||||
data['totalAmount'] = totalAmount;
|
||||
data['refundStatus'] = refundStatus;
|
||||
if (refundWalletId != null) data['refundWalletId'] = refundWalletId;
|
||||
if (notes != null) data['notes'] = notes;
|
||||
data['items'] = items.map((i) => i.toJson()).toList();
|
||||
return data;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user