update order detail

This commit is contained in:
Phuoc Nguyen
2025-11-24 17:00:11 +07:00
parent 75d6507719
commit 1851d60038
9 changed files with 1238 additions and 455 deletions

View File

@@ -0,0 +1,221 @@
/// Order Detail Entity
///
/// Complete order detail information including addresses, items, timeline, etc.
library;
import 'package:equatable/equatable.dart';
/// Order Detail Entity
class OrderDetail extends Equatable {
const OrderDetail({
required this.order,
required this.billingAddress,
required this.shippingAddress,
required this.items,
required this.paymentTerms,
required this.timeline,
required this.payments,
required this.invoices,
});
final OrderDetailInfo order;
final AddressInfo billingAddress;
final AddressInfo shippingAddress;
final List<OrderItemDetail> items;
final PaymentTermsInfo paymentTerms;
final List<TimelineItem> timeline;
final List<dynamic> payments; // Payment entities can be added later
final List<dynamic> invoices; // Invoice entities can be added later
@override
List<Object?> get props => [
order,
billingAddress,
shippingAddress,
items,
paymentTerms,
timeline,
payments,
invoices,
];
}
/// Order Detail Info
class OrderDetailInfo extends Equatable {
const OrderDetailInfo({
required this.name,
required this.customer,
required this.transactionDate,
required this.deliveryDate,
required this.status,
required this.statusColor,
required this.totalQty,
required this.total,
required this.grandTotal,
required this.totalRemaining,
required this.description,
required this.contractRequest,
required this.ignorePricingRule,
this.rejectionReason,
required this.isAllowCancel,
});
final String name;
final String customer;
final String transactionDate;
final String deliveryDate;
final String status;
final String statusColor;
final double totalQty;
final double total;
final double grandTotal;
final double totalRemaining;
final String description;
final bool contractRequest;
final bool ignorePricingRule;
final String? rejectionReason;
final bool isAllowCancel;
@override
List<Object?> get props => [
name,
customer,
transactionDate,
deliveryDate,
status,
statusColor,
totalQty,
total,
grandTotal,
totalRemaining,
description,
contractRequest,
ignorePricingRule,
rejectionReason,
isAllowCancel,
];
}
/// Address Info
class AddressInfo extends Equatable {
const AddressInfo({
required this.name,
required this.addressTitle,
required this.addressLine1,
required this.phone,
required this.email,
this.fax,
required this.taxCode,
required this.cityCode,
required this.wardCode,
required this.cityName,
required this.wardName,
required this.isAllowEdit,
});
final String name;
final String addressTitle;
final String addressLine1;
final String phone;
final String email;
final String? fax;
final String taxCode;
final String cityCode;
final String wardCode;
final String cityName;
final String wardName;
final bool isAllowEdit;
@override
List<Object?> get props => [
name,
addressTitle,
addressLine1,
phone,
email,
fax,
taxCode,
cityCode,
wardCode,
cityName,
wardName,
isAllowEdit,
];
}
/// Order Item Detail
class OrderItemDetail extends Equatable {
const OrderItemDetail({
required this.name,
required this.itemCode,
required this.itemName,
required this.description,
required this.qtyEntered,
required this.qtyOfSm,
required this.qtyOfNos,
required this.conversionFactor,
required this.price,
required this.totalAmount,
required this.deliveryDate,
this.thumbnail,
});
final String name;
final String itemCode;
final String itemName;
final String description;
final double qtyEntered;
final double qtyOfSm;
final double qtyOfNos;
final double conversionFactor;
final double price;
final double totalAmount;
final String deliveryDate;
final String? thumbnail;
@override
List<Object?> get props => [
name,
itemCode,
itemName,
description,
qtyEntered,
qtyOfSm,
qtyOfNos,
conversionFactor,
price,
totalAmount,
deliveryDate,
thumbnail,
];
}
/// Payment Terms Info
class PaymentTermsInfo extends Equatable {
const PaymentTermsInfo({
required this.name,
required this.description,
});
final String name;
final String description;
@override
List<Object?> get props => [name, description];
}
/// Timeline Item
class TimelineItem extends Equatable {
const TimelineItem({
required this.label,
this.value,
required this.status,
});
final String label;
final String? value;
final String status; // Success, Warning, Secondary, etc.
@override
List<Object?> get props => [label, value, status];
}

View File

@@ -4,6 +4,7 @@
library;
import 'package:worker/features/orders/domain/entities/order.dart';
import 'package:worker/features/orders/domain/entities/order_detail.dart';
import 'package:worker/features/orders/domain/entities/order_status.dart';
import 'package:worker/features/orders/domain/entities/payment_term.dart';
@@ -15,6 +16,9 @@ abstract class OrderRepository {
int limitPageLength = 0,
});
/// Get order detail by ID
Future<OrderDetail> getOrderDetail(String orderId);
/// Get list of available order statuses
Future<List<OrderStatus>> getOrderStatusList();