feat: sync payment methods

This commit is contained in:
efrilm
2025-08-03 00:47:49 +07:00
parent 7678b4791d
commit 39e3fdc81c
6 changed files with 410 additions and 371 deletions
@@ -31,10 +31,10 @@ class PaymentTablePage extends StatefulWidget {
final DraftOrderModel? draftOrder;
final TableModel? table;
const PaymentTablePage({
Key? key,
super.key,
this.draftOrder,
this.table,
}) : super(key: key);
});
@override
State<PaymentTablePage> createState() => _PaymentTablePageState();
@@ -98,11 +98,13 @@ class _PaymentTablePageState extends State<PaymentTablePage> {
// Set a default payment method in case API fails
selectedPaymentMethod = PaymentMethod(
id: 1,
name: 'Cash',
description: 'Cash payment',
id: "4b1c0d21-c98a-4fc0-a2f9-8d90a0c9d905",
organizationId: "3e8b1793-d18b-40c4-a03d-0c6480b630c7",
name: "CASH",
type: "cash",
isActive: true,
sortOrder: 1,
createdAt: DateTime.tryParse('2025-07-18T03:43:13.857048+07:00'),
updatedAt: DateTime.tryParse('2025-07-18T03:43:13.857048+07:00'),
);
}
@@ -444,7 +446,7 @@ class _PaymentTablePageState extends State<PaymentTablePage> {
),
BlocBuilder<CheckoutBloc, CheckoutState>(
builder: (context, state) {
final tax = state.maybeWhen(
state.maybeWhen(
orElse: () => 0,
loaded: (products,
discountModel,
@@ -805,41 +807,37 @@ class _PaymentTablePageState extends State<PaymentTablePage> {
8.0),
)
: null,
child: Tooltip(
message: method.description ??
'No description available',
child: isSelected
? Button.filled(
width: double.infinity,
height: 50.0,
onPressed: () {
setState(() {
selectedPaymentMethod =
method;
});
},
label: method.name
?.isNotEmpty ==
true
? method.name!
: 'Unknown',
)
: Button.outlined(
width: double.infinity,
height: 50.0,
onPressed: () {
setState(() {
selectedPaymentMethod =
method;
});
},
label: method.name
?.isNotEmpty ==
true
? method.name!
: 'Unknown',
),
),
child: isSelected
? Button.filled(
width: double.infinity,
height: 50.0,
onPressed: () {
setState(() {
selectedPaymentMethod =
method;
});
},
label: method.name
?.isNotEmpty ==
true
? method.name!
: 'Unknown',
)
: Button.outlined(
width: double.infinity,
height: 50.0,
onPressed: () {
setState(() {
selectedPaymentMethod =
method;
});
},
label: method.name
?.isNotEmpty ==
true
? method.name!
: 'Unknown',
),
);
}).toList(),
);
@@ -1052,7 +1050,7 @@ class _PaymentTablePageState extends State<PaymentTablePage> {
if (discountModel == null) {
return 0;
}
return discountModel!.value!
return discountModel.value!
.replaceAll('.00', '')
.toIntegerFromText;
});
@@ -1135,8 +1133,6 @@ class _PaymentTablePageState extends State<PaymentTablePage> {
orderType,
);
final totalPrice = subTotal + finalTax;
return Flexible(
child: Button.filled(
onPressed: () async {