feat: payment split

This commit is contained in:
efrilm
2025-08-07 14:48:59 +07:00
parent 9d78c9dcce
commit ffe076e120
7 changed files with 325 additions and 46 deletions
@@ -17,7 +17,14 @@ import 'package:flutter_bloc/flutter_bloc.dart';
class PaymentPage extends StatefulWidget {
final Order order;
const PaymentPage({Key? key, required this.order}) : super(key: key);
final bool isSplit;
final String? splitType;
const PaymentPage({
super.key,
required this.order,
this.isSplit = false,
this.splitType,
});
@override
State<PaymentPage> createState() => _PaymentPageState();
@@ -434,23 +441,42 @@ class _PaymentPageState extends State<PaymentPage> {
final itemPending = widget.order.orderItems
?.where((item) => item.status == "pending")
.toList();
if (widget.isSplit == false) {
final request = PaymentRequestModel(
amount: widget.order.totalAmount ?? 0,
orderId: widget.order.id,
paymentMethodId: selectedPaymentMethod?.id,
splitDescription: '',
splitNumber: 1,
splitTotal: 1,
transactionId: '',
paymentOrderItems: itemPending
?.map((item) => PaymentOrderItemModel(
orderItemId: item.id,
amount: item.totalPrice,
))
.toList(),
);
final request = PaymentRequestModel(
amount: widget.order.totalAmount ?? 0,
orderId: widget.order.id,
paymentMethodId: selectedPaymentMethod?.id,
splitDescription: '',
splitNumber: 1,
splitTotal: 1,
transactionId: '',
paymentOrderItems: itemPending
?.map((item) => PaymentOrderItemModel(
orderItemId: item.id,
amount: item.totalPrice,
))
.toList(),
);
context.read<PaymentFormBloc>().add(PaymentFormEvent.create(request));
context.read<PaymentFormBloc>().add(PaymentFormEvent.create(request));
} else {
final request = PaymentSplitBillRequest(
amount: widget.order.totalAmount ?? 0,
customerId: '',
items: itemPending
?.map((item) => SplitItem(
orderItemId: item.id ?? "",
quantity: item.quantity ?? 0,
))
.toList() ??
[],
orderId: widget.order.id ?? "",
paymentMethodId: selectedPaymentMethod?.id ?? "",
type: widget.splitType ?? "",
);
context.read<PaymentFormBloc>().add(
PaymentFormEvent.createSplitBill(request),
);
}
}
}