Compare commits

...

4 Commits

Author SHA1 Message Date
efrilm
c09822b470 feat: success save order 2025-08-13 23:08:12 +07:00
efrilm
6a9a26f71c fix: success save order 2025-08-13 23:00:11 +07:00
efrilm
b0006ee6bc fix: order and add to order 2025-08-13 22:52:37 +07:00
efrilm
b34428965e fix: bug 2025-08-13 22:11:24 +07:00
14 changed files with 114 additions and 70 deletions

View File

@ -405,7 +405,7 @@ class OrderRemoteDatasource {
}
}
Future<Either<String, OrderDetailResponseModel>> addToOrder({
Future<Either<String, bool>> addToOrder({
required String orderId,
required List<OrderItemRequest> orderItems,
}) async {
@ -429,8 +429,7 @@ class OrderRemoteDatasource {
);
if (response.statusCode == 200) {
final data = OrderDetailResponseModel.fromMap(response.data);
return Right(data);
return Right(true);
} else {
return const Left('Gagal menambahkan pesanan pesanan');
}
@ -442,7 +441,7 @@ class OrderRemoteDatasource {
return Left(errorMessage);
} catch (e) {
log("đź’Ą Unexpected error: $e");
return const Left('Terjadi kesalahan tak terduga');
return const Left('Terjadi kesalahan, coba lagi nanti.');
}
}

View File

@ -59,11 +59,17 @@ class DashboardAnalyticData {
dateFrom: map['date_from'],
dateTo: map['date_to'],
overview: DashboardOverview.fromMap(map['overview']),
topProducts: List<TopProduct>.from(
topProducts: map['top_products'] == null
? []
: List<TopProduct>.from(
map['top_products']?.map((x) => TopProduct.fromMap(x))),
paymentMethods: List<PaymentMethodAnalytic>.from(map['payment_methods']
paymentMethods: map['payment_methods'] == null
? []
: List<PaymentMethodAnalytic>.from(map['payment_methods']
?.map((x) => PaymentMethodAnalytic.fromMap(x))),
recentSales: List<RecentSale>.from(
recentSales: map['recent_sales'] == null
? []
: List<RecentSale>.from(
map['recent_sales']?.map((x) => RecentSale.fromMap(x))),
);

View File

@ -81,7 +81,7 @@ class OrderData {
orders: map["orders"] == null
? []
: List<Order>.from(map['orders']?.map((x) => Order.fromMap(x))),
payments: map["orders"] == null
payments: map["payments"] == null
? []
: List<Payment>.from(map['payments']?.map((x) => Payment.fromMap(x))),
totalCount: map['total_count'],

View File

@ -64,8 +64,11 @@ class PaymentMethodAnalyticData {
dateTo: DateTime.parse(map['date_to']),
groupBy: map['group_by'],
summary: PaymentSummary.fromMap(map['summary']),
data: List<PaymentMethodAnalyticItem>.from(
map['data']?.map((x) => PaymentMethodAnalyticItem.fromMap(x)) ?? [],
data: map['data'] == null
? []
: List<PaymentMethodAnalyticItem>.from(
map['data']?.map((x) => PaymentMethodAnalyticItem.fromMap(x)) ??
[],
),
);
}

View File

@ -52,7 +52,9 @@ class ProductAnalyticData {
outletId: map['outlet_id'],
dateFrom: DateTime.parse(map['date_from']),
dateTo: DateTime.parse(map['date_to']),
data: List<ProductAnalyticItem>.from(
data: map['data'] == null
? []
: List<ProductAnalyticItem>.from(
map['data'].map((x) => ProductAnalyticItem.fromMap(x)),
),
);

View File

@ -77,8 +77,8 @@ class OrderFormBloc extends Bloc<OrderFormEvent, OrderFormState> {
customerName: event.customerName,
notes: '',
orderType: event.orderType.name,
tableId: event.table.id,
tableNumber: event.table.tableName,
tableId: event.table?.id ?? "",
tableNumber: event.table?.tableName ?? "",
outletId: userData.user?.outletId,
customerId: event.customer?.id ?? '',
orderItems: event.items
@ -131,11 +131,11 @@ class OrderFormBloc extends Bloc<OrderFormEvent, OrderFormState> {
result.fold(
(error) => emit(_Error(error)),
(success) => emit(_Success(success.data!)),
(success) => emit(_SuccessMsg()),
);
} catch (e) {
log("Error in AddOrderItemsBloc: $e");
emit(_Error("Failed to add order items: $e"));
emit(_Error("Ada kesalahan. Coba lagi nanti"));
}
},
);

View File

@ -27,7 +27,7 @@ mixin _$OrderFormEvent {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)
createWithPayment,
required TResult Function(List<ProductQuantity> items, String orderId)
@ -53,7 +53,7 @@ mixin _$OrderFormEvent {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult? Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -76,7 +76,7 @@ mixin _$OrderFormEvent {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -226,7 +226,7 @@ class _$StartedImpl implements _Started {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)
createWithPayment,
required TResult Function(List<ProductQuantity> items, String orderId)
@ -255,7 +255,7 @@ class _$StartedImpl implements _Started {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult? Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -281,7 +281,7 @@ class _$StartedImpl implements _Started {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -496,7 +496,7 @@ class _$CreateImpl implements _Create {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)
createWithPayment,
required TResult Function(List<ProductQuantity> items, String orderId)
@ -525,7 +525,7 @@ class _$CreateImpl implements _Create {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult? Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -551,7 +551,7 @@ class _$CreateImpl implements _Create {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -652,7 +652,7 @@ abstract class _$$CreateWithPaymentMethodImplCopyWith<$Res> {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod});
}
@ -674,7 +674,7 @@ class __$$CreateWithPaymentMethodImplCopyWithImpl<$Res>
Object? customerName = null,
Object? customer = freezed,
Object? orderType = null,
Object? table = null,
Object? table = freezed,
Object? paymentMethod = null,
}) {
return _then(_$CreateWithPaymentMethodImpl(
@ -694,10 +694,10 @@ class __$$CreateWithPaymentMethodImplCopyWithImpl<$Res>
? _value.orderType
: orderType // ignore: cast_nullable_to_non_nullable
as OrderType,
table: null == table
table: freezed == table
? _value.table
: table // ignore: cast_nullable_to_non_nullable
as TableModel,
as TableModel?,
paymentMethod: null == paymentMethod
? _value.paymentMethod
: paymentMethod // ignore: cast_nullable_to_non_nullable
@ -733,7 +733,7 @@ class _$CreateWithPaymentMethodImpl implements _CreateWithPaymentMethod {
@override
final OrderType orderType;
@override
final TableModel table;
final TableModel? table;
@override
final PaymentMethod paymentMethod;
@ -790,7 +790,7 @@ class _$CreateWithPaymentMethodImpl implements _CreateWithPaymentMethod {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)
createWithPayment,
required TResult Function(List<ProductQuantity> items, String orderId)
@ -820,7 +820,7 @@ class _$CreateWithPaymentMethodImpl implements _CreateWithPaymentMethod {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult? Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -847,7 +847,7 @@ class _$CreateWithPaymentMethodImpl implements _CreateWithPaymentMethod {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -922,7 +922,7 @@ abstract class _CreateWithPaymentMethod implements OrderFormEvent {
required final String customerName,
required final Customer? customer,
required final OrderType orderType,
required final TableModel table,
required final TableModel? table,
required final PaymentMethod paymentMethod}) =
_$CreateWithPaymentMethodImpl;
@ -930,7 +930,7 @@ abstract class _CreateWithPaymentMethod implements OrderFormEvent {
String get customerName;
Customer? get customer;
OrderType get orderType;
TableModel get table;
TableModel? get table;
PaymentMethod get paymentMethod;
/// Create a copy of OrderFormEvent
@ -1034,7 +1034,7 @@ class _$AddToOrderImpl implements _AddToOrder {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)
createWithPayment,
required TResult Function(List<ProductQuantity> items, String orderId)
@ -1063,7 +1063,7 @@ class _$AddToOrderImpl implements _AddToOrder {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult? Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -1089,7 +1089,7 @@ class _$AddToOrderImpl implements _AddToOrder {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -1276,7 +1276,7 @@ class _$RefundImpl implements _Refund {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)
createWithPayment,
required TResult Function(List<ProductQuantity> items, String orderId)
@ -1305,7 +1305,7 @@ class _$RefundImpl implements _Refund {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult? Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -1331,7 +1331,7 @@ class _$RefundImpl implements _Refund {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -1520,7 +1520,7 @@ class _$VoidOrderImpl implements _VoidOrder {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)
createWithPayment,
required TResult Function(List<ProductQuantity> items, String orderId)
@ -1549,7 +1549,7 @@ class _$VoidOrderImpl implements _VoidOrder {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult? Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -1575,7 +1575,7 @@ class _$VoidOrderImpl implements _VoidOrder {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -1737,7 +1737,7 @@ class _$ToggleItemImpl implements _ToggleItem {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)
createWithPayment,
required TResult Function(List<ProductQuantity> items, String orderId)
@ -1766,7 +1766,7 @@ class _$ToggleItemImpl implements _ToggleItem {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult? Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -1792,7 +1792,7 @@ class _$ToggleItemImpl implements _ToggleItem {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -1951,7 +1951,7 @@ class _$ToggleSelectAllImpl implements _ToggleSelectAll {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)
createWithPayment,
required TResult Function(List<ProductQuantity> items, String orderId)
@ -1980,7 +1980,7 @@ class _$ToggleSelectAllImpl implements _ToggleSelectAll {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult? Function(List<ProductQuantity> items, String orderId)? addToOrder,
@ -2006,7 +2006,7 @@ class _$ToggleSelectAllImpl implements _ToggleSelectAll {
String customerName,
Customer? customer,
OrderType orderType,
TableModel table,
TableModel? table,
PaymentMethod paymentMethod)?
createWithPayment,
TResult Function(List<ProductQuantity> items, String orderId)? addToOrder,

View File

@ -15,7 +15,7 @@ class OrderFormEvent with _$OrderFormEvent {
required String customerName,
required Customer? customer,
required OrderType orderType,
required TableModel table,
required TableModel? table,
required PaymentMethod paymentMethod,
}) = _CreateWithPaymentMethod;
const factory OrderFormEvent.addToOrder({

View File

@ -289,7 +289,7 @@ class _PaymentAddOrderDialogState extends State<PaymentAddOrderDialog> {
listener: (context, state) {
state.maybeWhen(
orElse: () {},
success: (data) {
successMsg: () {
context.pop();
context.pushReplacement(
SuccessSaveOrderPage(

View File

@ -45,7 +45,6 @@ class OrderRequestModel {
Map<String, dynamic> data = {
"outlet_id": outletId,
"table_number": tableNumber,
"table_id": tableId,
"order_type": orderType,
"notes": notes,
"order_items": orderItems == null
@ -58,6 +57,10 @@ class OrderRequestModel {
data["customer_id"] = customerId;
}
if (tableId != null && tableId != "") {
data["table_id"] = tableId;
}
return data;
}
}

View File

@ -355,7 +355,10 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
(previousValue, element) =>
previousValue +
(element.product.price! *
element.quantity),
element.quantity) +
(element.variant
?.priceModifier ??
0),
));
return Text(
price.currencyFormatRp,
@ -500,7 +503,9 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
(previousValue, element) =>
previousValue +
(element.product.price! *
element.quantity),
element.quantity) +
(element.variant?.priceModifier ??
0),
),
);
@ -1065,12 +1070,15 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
}
context.read<OrderFormBloc>().add(
OrderFormEvent.create(
OrderFormEvent
.createWithPayment(
items: items,
customerName:
customerController
.text,
orderType: orderType,
paymentMethod:
selectedPaymentMethod!,
table: widget.table,
customer:
selectedCustomer,

View File

@ -429,8 +429,10 @@ class _HomePageState extends State<HomePage> {
}
return products
.map((e) =>
e.product.price! *
e.quantity)
(e.product.price! *
e.quantity) +
(e.variant?.priceModifier ??
0))
.reduce((value, element) =>
value + element);
});

View File

@ -538,7 +538,8 @@ class _SuccessOrderPageState extends State<SuccessOrderPage>
Widget _buildProductCard(int index) {
final item = widget.productQuantity[index];
final totalPrice = (item.product.price ?? 0) * item.quantity;
final totalPrice = (item.product.price ?? 0) * item.quantity +
(item.variant?.priceModifier ?? 0);
return TweenAnimationBuilder<double>(
tween: Tween<double>(begin: 0.0, end: 1.0),
@ -634,7 +635,8 @@ class _SuccessOrderPageState extends State<SuccessOrderPage>
borderRadius: BorderRadius.circular(8),
),
child: Text(
(item.product.price ?? 0)
((item.product.price ?? 0) +
(item.variant?.priceModifier ?? 0))
.toString()
.currencyFormatRpV2,
style: TextStyle(

View File

@ -24,12 +24,27 @@ class SuccessSaveOrderPage extends StatefulWidget {
}
class _SuccessSaveOrderPageState extends State<SuccessSaveOrderPage> {
int totalPrice = 0;
getPrice() {
setState(() {
totalPrice = widget.productQuantity.fold(
0,
(previousValue, element) =>
previousValue +
(element.product.price! * element.quantity) +
(element.variant?.priceModifier ?? 0),
);
});
}
@override
void initState() {
super.initState();
context
.read<OrderLoaderBloc>()
.add(OrderLoaderEvent.getById(widget.orderId));
getPrice();
}
@override
@ -380,7 +395,8 @@ class _SuccessSaveOrderPageState extends State<SuccessSaveOrderPage> {
Widget _buildProductCard(int index) {
final item = widget.productQuantity[index];
final totalPrice = (item.product.price ?? 0) * item.quantity;
final totalPrice = (item.product.price ?? 0) * item.quantity +
(item.variant?.priceModifier ?? 0);
return Container(
padding: const EdgeInsets.all(16.0),
@ -464,7 +480,10 @@ class _SuccessSaveOrderPageState extends State<SuccessSaveOrderPage> {
borderRadius: BorderRadius.circular(8),
),
child: Text(
(item.product.price ?? 0).toString().currencyFormatRpV2,
((item.product.price ?? 0) +
(item.variant?.priceModifier ?? 0))
.toString()
.currencyFormatRpV2,
style: TextStyle(
fontSize: 14,
color: Colors.grey.shade700,
@ -707,7 +726,7 @@ class _SuccessSaveOrderPageState extends State<SuccessSaveOrderPage> {
),
),
Text(
(order.totalAmount ?? 0).toString().currencyFormatRpV2,
totalPrice.toString().currencyFormatRpV2,
style: const TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
@ -876,7 +895,7 @@ class _SuccessSaveOrderPageState extends State<SuccessSaveOrderPage> {
],
),
Text(
(order.totalAmount ?? 0).toString().currencyFormatRpV2,
totalPrice.toString().currencyFormatRpV2,
style: const TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
@ -954,7 +973,7 @@ class _SuccessSaveOrderPageState extends State<SuccessSaveOrderPage> {
],
),
child: Text(
(order.totalAmount ?? 0).toString().currencyFormatRpV2,
totalPrice.toString().currencyFormatRpV2,
style: const TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,