Files
worker/lib/features/quotes/data/models/quote_item_model.dart
2025-11-07 11:52:06 +07:00

65 lines
1.8 KiB
Dart

import 'package:hive_ce/hive.dart';
import 'package:worker/core/constants/storage_constants.dart';
part 'quote_item_model.g.dart';
@HiveType(typeId: HiveTypeIds.quoteItemModel)
class QuoteItemModel extends HiveObject {
QuoteItemModel({
required this.quoteItemId,
required this.quoteId,
required this.productId,
required this.quantity,
required this.originalPrice,
required this.negotiatedPrice,
required this.discountPercent,
required this.subtotal,
this.notes,
});
@HiveField(0)
final String quoteItemId;
@HiveField(1)
final String quoteId;
@HiveField(2)
final String productId;
@HiveField(3)
final double quantity;
@HiveField(4)
final double originalPrice;
@HiveField(5)
final double negotiatedPrice;
@HiveField(6)
final double discountPercent;
@HiveField(7)
final double subtotal;
@HiveField(8)
final String? notes;
factory QuoteItemModel.fromJson(Map<String, dynamic> json) => QuoteItemModel(
quoteItemId: json['quote_item_id'] as String,
quoteId: json['quote_id'] as String,
productId: json['product_id'] as String,
quantity: (json['quantity'] as num).toDouble(),
originalPrice: (json['original_price'] as num).toDouble(),
negotiatedPrice: (json['negotiated_price'] as num).toDouble(),
discountPercent: (json['discount_percent'] as num).toDouble(),
subtotal: (json['subtotal'] as num).toDouble(),
notes: json['notes'] as String?,
);
Map<String, dynamic> toJson() => {
'quote_item_id': quoteItemId,
'quote_id': quoteId,
'product_id': productId,
'quantity': quantity,
'original_price': originalPrice,
'negotiated_price': negotiatedPrice,
'discount_percent': discountPercent,
'subtotal': subtotal,
'notes': notes,
};
double get totalDiscount => originalPrice * quantity - subtotal;
}