Commit c9417de6 authored by Jasa Digital's avatar Jasa Digital

variant fixed

parent 33a2e00c
...@@ -186,6 +186,7 @@ class Api { ...@@ -186,6 +186,7 @@ class Api {
setTableNumber(jsonObject['data']['table_number'] ?? ''); setTableNumber(jsonObject['data']['table_number'] ?? '');
setServiceRadius(jsonObject['data']['service_radius'] ?? 0); setServiceRadius(jsonObject['data']['service_radius'] ?? 0);
setDistance(jsonObject['data']['distance'] ?? '0'); setDistance(jsonObject['data']['distance'] ?? '0');
setIsCanChangeDeliveryPickupFunc(jsonObject['data']['order_state']);
if (jsonObject['data']['payment_mode'] != null) { if (jsonObject['data']['payment_mode'] != null) {
setPaymentMode(jsonObject['data']['payment_mode']); setPaymentMode(jsonObject['data']['payment_mode']);
} }
...@@ -573,7 +574,7 @@ class Api { ...@@ -573,7 +574,7 @@ class Api {
if (favDetail[i]['favorite_group_id'] == favGroup[s]['id']) { if (favDetail[i]['favorite_group_id'] == favGroup[s]['id']) {
// List<dynamic> variantCat = favDetail[i]['variants']; // List<dynamic> variantCat = favDetail[i]['variants'];
List<VariantCategories> variantCategories = []; // List<VariantCategories> variantCategories = [];
// for (int o = 0; o < variantCat.length; o++) { // for (int o = 0; o < variantCat.length; o++) {
// List<Variants> variants = []; // List<Variants> variants = [];
...@@ -593,6 +594,35 @@ class Api { ...@@ -593,6 +594,35 @@ class Api {
// VariantCategories.createVariantCategory(dataVariantCat)); // VariantCategories.createVariantCategory(dataVariantCat));
// } // }
List<dynamic> variantCat = favDetail[i]['variants'];
List<VariantCategories> variantCategories = [];
// for (int o = 0; o < variantCat.length; o++) {
for (int j = 0; j < variantCat.length; j++) {
int index = variantCategories.indexWhere((varCat) =>
varCat.id == variantCat[j]['category_variant_id']);
if (index == -1) {
List<Variants> variants = [];
for (int k = 0; k < variantCat.length; k++) {
if (variantCat[j]['category_variant_id'] ==
variantCat[k]['category_variant_id']) {
variants.add(Variants.createVariant(variantCat[k]));
}
}
Map<String, dynamic> dataVariantCat = {
"id": variantCat[j]['category_variant_id'],
"caption": variantCat[j]['category_variant_caption'],
"type": variantCat[j]['category_variant_type'],
"variants": variants
};
variantCategories.add(
VariantCategories.createVariantCategory(
dataVariantCat));
}
}
// pemisahan type group // pemisahan type group
if (favDetail[i]['group_id'] != groupIdForFiltering) { if (favDetail[i]['group_id'] != groupIdForFiltering) {
groupIdForFiltering = favDetail[i]['group_id']; groupIdForFiltering = favDetail[i]['group_id'];
...@@ -953,6 +983,8 @@ class Api { ...@@ -953,6 +983,8 @@ class Api {
billDetail.add(BillDetail.createBillDetail(z)); billDetail.add(BillDetail.createBillDetail(z));
int totalPerCustomer = amountParseToInt(z['total']); int totalPerCustomer = amountParseToInt(z['total']);
setIsCanChangeDeliveryPickupFunc(
jsonObject['data']['order_state']);
var i = { var i = {
"id": jsonObject['data']['id'], "id": jsonObject['data']['id'],
"total": jsonObject['data']['total'], "total": jsonObject['data']['total'],
...@@ -987,6 +1019,11 @@ class Api { ...@@ -987,6 +1019,11 @@ class Api {
"rdm_staff_courier_mobile": "rdm_staff_courier_mobile":
jsonObject['data']['rdm_staff_courier_mobile'] ?? "", jsonObject['data']['rdm_staff_courier_mobile'] ?? "",
}; };
if (jsonObject['data']['type'] == typeOrderDelivery) {
setIsCustomerDelivery(true);
} else {
setIsCustomerDelivery(false);
}
bill.add(Bill.createBill(i)); bill.add(Bill.createBill(i));
// billDetail.add(BillDetail.createBillDetail(orderDetail[d])); // billDetail.add(BillDetail.createBillDetail(orderDetail[d]));
} }
......
...@@ -184,6 +184,14 @@ String formatDate(String timeString, {toLocal = false}) { ...@@ -184,6 +184,14 @@ String formatDate(String timeString, {toLocal = false}) {
return dateResult; return dateResult;
} }
void setIsCanChangeDeliveryPickupFunc(int orderState) {
if (orderState >= orderStatePaid) {
setIsCanChangeDeliveryPickup(false);
} else {
setIsCanChangeDeliveryPickup(true);
}
}
String localDate(String date, {isHistory = false}) { String localDate(String date, {isHistory = false}) {
String day; String day;
String year; String year;
...@@ -361,6 +369,8 @@ String textButtonCheckout(int orderState, bool isHistory) { ...@@ -361,6 +369,8 @@ String textButtonCheckout(int orderState, bool isHistory) {
} else { } else {
if (paymentMethod == closebill && orderState == orderStateCreated) { if (paymentMethod == closebill && orderState == orderStateCreated) {
return 'Pesan'; return 'Pesan';
} else if (paymentMethod == closebill && orderState == orderStatePending) {
return 'Menunggu konfirmasi outlet';
} else if (paymentMethod == closebill && } else if (paymentMethod == closebill &&
(orderState == orderStatePending || (orderState == orderStatePending ||
orderState == orderStateApproved) || orderState == orderStateApproved) ||
......
...@@ -44,6 +44,7 @@ const String _phoneOutlet = 'phoneOutlet'; ...@@ -44,6 +44,7 @@ const String _phoneOutlet = 'phoneOutlet';
const String _serviceRadius = 'sr'; const String _serviceRadius = 'sr';
const String _distanceOutletCustomer = 'doc'; const String _distanceOutletCustomer = 'doc';
const String _isNewOrder = 'ino'; const String _isNewOrder = 'ino';
const String _isCanChangeDeliveryPickup = 'iccdp';
String getBaseUrl() { String getBaseUrl() {
return prefs.getString(_baseUrl) ?? ''; return prefs.getString(_baseUrl) ?? '';
...@@ -384,3 +385,11 @@ bool getIsNewOrder() { ...@@ -384,3 +385,11 @@ bool getIsNewOrder() {
Future<void> setIsNewOrder(bool value) async { Future<void> setIsNewOrder(bool value) async {
prefs.setBool(_isNewOrder, value); prefs.setBool(_isNewOrder, value);
} }
bool getIsCanChangeDeliveryPickup() {
return prefs.getBool(_isCanChangeDeliveryPickup) ?? true;
}
Future<void> setIsCanChangeDeliveryPickup(bool value) async {
prefs.setBool(_isCanChangeDeliveryPickup, value);
}
...@@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; ...@@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import '../../bloc/order_bloc.dart'; import '../../bloc/order_bloc.dart';
import '../../bloc/trigger_refresh_in_confirmation_page.dart';
import '../../helper/helper.dart'; import '../../helper/helper.dart';
import '../../main.dart'; import '../../main.dart';
import '../../models/order_details.dart'; import '../../models/order_details.dart';
...@@ -30,6 +31,8 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -30,6 +31,8 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
// double widthScreen = responsiveWidthScreen(context); // double widthScreen = responsiveWidthScreen(context);
return BlocBuilder<TriggerRefresh, bool>(
builder: (context, trigger) {
return Container( return Container(
// width: widthScreen, // width: widthScreen,
height: MediaQuery.of(context).size.height * 0.7, height: MediaQuery.of(context).size.height * 0.7,
...@@ -42,16 +45,16 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -42,16 +45,16 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
), ),
child: BlocBuilder<OrdersBloc, List<Orders>>( child: BlocBuilder<OrdersBloc, List<Orders>>(
builder: (context, listCurrentOrder) { builder: (context, listCurrentOrder) {
int indexOrders = int indexOrders = listCurrentOrder
listCurrentOrder.indexWhere((value) => value == widget.orders); .indexWhere((value) => value == widget.orders);
if (indexOrders == -1) { if (indexOrders == -1) {
Navigator.pop(context); Navigator.pop(context);
} }
return Stack( return Stack(
children: [ children: [
Container( Container(
padding: padding: const EdgeInsets.symmetric(
const EdgeInsets.symmetric(horizontal: paddingLeftRight), horizontal: paddingLeftRight),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
...@@ -89,17 +92,19 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -89,17 +92,19 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
child: ListView.builder( child: ListView.builder(
itemCount: widget.orders.orderDetail.length, itemCount: widget.orders.orderDetail.length,
itemBuilder: (context, i) { itemBuilder: (context, i) {
int totalHarga = int totalHarga = widget
widget.orders.orderDetail[i].totalHarga.toInt(); .orders.orderDetail[i].totalHarga
int totalItem = .toInt();
widget.orders.orderDetail[i].totalItem.toInt(); int totalItem = widget
.orders.orderDetail[i].totalItem
.toInt();
int satuanHarga = totalHarga ~/ totalItem; int satuanHarga = totalHarga ~/ totalItem;
List<String> variantCaption = ['']; List<String> variantCaption = [''];
List<String> variantName = ['']; List<String> variantName = [''];
for (int y = 0; for (int y = 0;
y < y <
widget.orders.orderDetail[i].orderVariant widget.orders.orderDetail[i]
.length; .orderVariant.length;
y++) { y++) {
int indexCaption = variantCaption.indexWhere( int indexCaption = variantCaption.indexWhere(
(element) => (element) =>
...@@ -107,8 +112,11 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -107,8 +112,11 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
widget.orders.orderDetail[i] widget.orders.orderDetail[i]
.orderVariant[y].caption); .orderVariant[y].caption);
if (indexCaption == -1) { if (indexCaption == -1) {
variantCaption.add(widget.orders.orderDetail[i] variantCaption.add(widget
.orderVariant[y].caption); .orders
.orderDetail[i]
.orderVariant[y]
.caption);
variantName.add(widget.orders.orderDetail[i] variantName.add(widget.orders.orderDetail[i]
.orderVariant[y].name); .orderVariant[y].name);
} else { } else {
...@@ -117,9 +125,11 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -117,9 +125,11 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
} }
} }
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
Row( Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment:
CrossAxisAlignment.end,
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceBetween, MainAxisAlignment.spaceBetween,
children: [ children: [
...@@ -128,8 +138,8 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -128,8 +138,8 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: [ children: [
Container( Container(
padding: padding: const EdgeInsets.only(
const EdgeInsets.only(bottom: 8), bottom: 8),
child: defaultText( child: defaultText(
context, context,
"Rp ${formatNumber().format(widget.orders.orderDetail[i].totalHarga)}", "Rp ${formatNumber().format(widget.orders.orderDetail[i].totalHarga)}",
...@@ -155,8 +165,8 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -155,8 +165,8 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
context, context,
"${variantCaption[d]} : ", "${variantCaption[d]} : ",
maxLines: 2, maxLines: 2,
overFlow: overFlow: TextOverflow
TextOverflow.ellipsis, .ellipsis,
style: style:
textStyleVariantModal(), textStyleVariantModal(),
), ),
...@@ -164,8 +174,8 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -164,8 +174,8 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
context, context,
variantName[d], variantName[d],
maxLines: 2, maxLines: 2,
overFlow: overFlow: TextOverflow
TextOverflow.ellipsis, .ellipsis,
style: style:
textStyleVariantModal(), textStyleVariantModal(),
), ),
...@@ -173,13 +183,20 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -173,13 +183,20 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
) )
], ],
), ),
(widget.orders.orderDetail[i].note != (widget.orders.orderDetail[i]
.note !=
'') '')
? Container( ? Container(
padding: const EdgeInsets.only( padding:
const EdgeInsets.only(
bottom: 8, bottom: 8,
top: 8, top: 8,
), ),
width: MediaQuery.of(
context)
.size
.width -
(2 * paddingLeftRight),
child: defaultText( child: defaultText(
context, context,
'Catatan: ${widget.orders.orderDetail[i].note}', 'Catatan: ${widget.orders.orderDetail[i].note}',
...@@ -193,6 +210,8 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -193,6 +210,8 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
: const SizedBox() : const SizedBox()
], ],
), ),
],
),
Stack( Stack(
children: [ children: [
Container( Container(
...@@ -250,6 +269,9 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -250,6 +269,9 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
context context
.read<OrdersBloc>() .read<OrdersBloc>()
.insertData(insertData); .insertData(insertData);
context
.read<TriggerRefresh>()
.trigger(!trigger);
setState(() {}); setState(() {});
}, },
child: Container( child: Container(
...@@ -300,6 +322,9 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -300,6 +322,9 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
context context
.read<OrdersBloc>() .read<OrdersBloc>()
.insertData(insertData); .insertData(insertData);
context
.read<TriggerRefresh>()
.trigger(!trigger);
setState(() {}); setState(() {});
// context // context
// .read<OrderDetailVariant>() // .read<OrderDetailVariant>()
...@@ -337,8 +362,6 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -337,8 +362,6 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
) )
], ],
), ),
],
),
const SizedBox( const SizedBox(
height: 12, height: 12,
), ),
...@@ -417,6 +440,8 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> { ...@@ -417,6 +440,8 @@ class _CustomizeVariantNewState extends State<CustomizeVariantNew> {
}, },
), ),
); );
},
);
} }
} }
// Positioned( // Positioned(
......
...@@ -17,7 +17,9 @@ import '../../models/order_variants.dart'; ...@@ -17,7 +17,9 @@ import '../../models/order_variants.dart';
import '../screen_responsive.dart'; import '../screen_responsive.dart';
import 'bottom_sheet_menu_new.dart'; import 'bottom_sheet_menu_new.dart';
import 'bottom_sheet_variant.dart'; import 'bottom_sheet_variant.dart';
import 'bottom_sheet_variant_new.dart';
import 'variant_cat.dart'; import 'variant_cat.dart';
import 'variant_cat_new.dart';
class FavGridMenu extends StatelessWidget { class FavGridMenu extends StatelessWidget {
const FavGridMenu({ const FavGridMenu({
...@@ -192,7 +194,7 @@ class FavGridMenu extends StatelessWidget { ...@@ -192,7 +194,7 @@ class FavGridMenu extends StatelessWidget {
addCondition; // true untuk menampilkan tambah, false untuk menampilkan quantity plus minus addCondition; // true untuk menampilkan tambah, false untuk menampilkan quantity plus minus
int indexListOrderan = int indexListOrderan =
list.indexWhere((listOrderan) => listOrderan.id == menuFav.id); list.indexWhere((listOrderan) => listOrderan.id == menuFav.id);
int initialValue; int initialValue = 0;
if (indexListOrderan != -1) { if (indexListOrderan != -1) {
if (menuFav.variantCat.isNotEmpty) { if (menuFav.variantCat.isNotEmpty) {
addCondition = true; // kalau menu itu ada variantnya, biarin true addCondition = true; // kalau menu itu ada variantnya, biarin true
...@@ -200,11 +202,20 @@ class FavGridMenu extends StatelessWidget { ...@@ -200,11 +202,20 @@ class FavGridMenu extends StatelessWidget {
addCondition = false; addCondition = false;
} }
if (list[indexListOrderan].orderDetail.isNotEmpty) {
for (int d = 0;
d < list[indexListOrderan].orderDetail.length;
d++) {
initialValue += list[indexListOrderan].orderDetail[d].totalItem;
}
} else {
initialValue = list[indexListOrderan].totalItem; initialValue = list[indexListOrderan].totalItem;
}
} else { } else {
addCondition = true; addCondition = true;
initialValue = 0; initialValue = 0;
} }
String variantButtonCount = ''; String variantButtonCount = '';
if (initialValue == 1 && menuFav.variantCat.isNotEmpty) { if (initialValue == 1 && menuFav.variantCat.isNotEmpty) {
variantButtonCount = '$initialValue Item'; variantButtonCount = '$initialValue Item';
...@@ -270,7 +281,7 @@ class FavGridMenu extends StatelessWidget { ...@@ -270,7 +281,7 @@ class FavGridMenu extends StatelessWidget {
key: const Key('AddButton'), key: const Key('AddButton'),
onTap: () { onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context); FocusScopeNode currentFocus = FocusScope.of(context);
print("Panjangnya : ${menuFav.variantCat.length}");
if (!currentFocus.hasPrimaryFocus) { if (!currentFocus.hasPrimaryFocus) {
currentFocus.unfocus(); currentFocus.unfocus();
} }
...@@ -285,34 +296,66 @@ class FavGridMenu extends StatelessWidget { ...@@ -285,34 +296,66 @@ class FavGridMenu extends StatelessWidget {
1, 1,
[], [],
); // check pada bloc untuk mengethui list arraynya ); // check pada bloc untuk mengethui list arraynya
// Navigator.push(
// context,
// MaterialPageRoute(
// builder: (_) => VariantCat(
// namaMenu: menuFav.name,
// variantCategories: menuFav.variantCat,
// initPrice: amountParseToInt(menuFav.price),
// idItem: menuFav.id,
// imageUrl: menuFav.imageUrlThumbnail,
// listCurrentOrder: list,
// orderDetail: OrderDetail(
// allIdVariant: '',
// totalItem: 0,
// totalHarga: 0,
// note: '',
// orderVariant: [],
// ),
// ),
// ),
// );
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (_) => VariantCat( builder: (_) => VariantCatNew(
namaMenu: menuFav.name, initPrice: amountParseToInt(menuFav.price),
variantCategories: menuFav.variantCat, variantCategories: menuFav.variantCat,
initPrice: namaMenu: menuFav.name,
amountParseToInt(menuFav.price),
idItem: menuFav.id, idItem: menuFav.id,
imageUrl: menuFav.imageUrlThumbnail, imageUrl: menuFav.imageUrlMedium,
listCurrentOrder: list, listCurrentOrder: list,
orderDetail: OrderDetail(
allIdVariant: '',
totalItem: 0,
totalHarga: 0,
note: '',
orderVariant: [],
), ),
))); ),
);
} else { } else {
// showModalBottomSheet(
// backgroundColor: Colors.white.withOpacity(0),
// isScrollControlled: true,
// context: context,
// builder: (context) {
// return CustomizeVariant(
// orders: list[indexListOrderan],
// variantCat: menuFav.variantCat);
// },
// );
showModalBottomSheet( showModalBottomSheet(
backgroundColor: Colors.white.withOpacity(0), backgroundColor: Colors.white.withOpacity(0),
isScrollControlled: true, isScrollControlled: true,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(19),
),
context: context, context: context,
builder: (context) { builder: (context) {
return CustomizeVariant( // return CustomizeVariant(
// orders: list[indexListOrderan],
// variantCat: menuUtama.variantCat,
// );
return CustomizeVariantNew(
orders: list[indexListOrderan], orders: list[indexListOrderan],
variantCat: menuFav.variantCat); variantCat: menuFav.variantCat,
);
}, },
); );
} }
......
...@@ -22,6 +22,7 @@ import '../../bloc/address_user_bloc.dart'; ...@@ -22,6 +22,7 @@ import '../../bloc/address_user_bloc.dart';
import '../../bloc/change_delivery_pickup.dart'; import '../../bloc/change_delivery_pickup.dart';
import '../../bloc/filter_menu.dart'; import '../../bloc/filter_menu.dart';
import '../../bloc/outlet_detail.dart'; import '../../bloc/outlet_detail.dart';
import '../../bloc/trigger_refresh_in_confirmation_page.dart';
import '../../helper/mq.dart'; import '../../helper/mq.dart';
import '../../helper/widget/button_dialog.dart'; import '../../helper/widget/button_dialog.dart';
import '../../helper/widget/modal_input_name.dart'; import '../../helper/widget/modal_input_name.dart';
...@@ -461,9 +462,13 @@ class _NewHome2State extends State<NewHome2> { ...@@ -461,9 +462,13 @@ class _NewHome2State extends State<NewHome2> {
} }
} }
return BlocBuilder<TriggerRefresh,
bool>(
builder: (context, trigger) {
return BlocBuilder<OrdersBloc, return BlocBuilder<OrdersBloc,
List<Orders>>( List<Orders>>(
builder: (contextOrders, listOrders) { builder:
(contextOrders, listOrders) {
int totalItem = 0; int totalItem = 0;
int totalHarga = 0; int totalHarga = 0;
if (listOrders.isNotEmpty) { if (listOrders.isNotEmpty) {
...@@ -474,7 +479,8 @@ class _NewHome2State extends State<NewHome2> { ...@@ -474,7 +479,8 @@ class _NewHome2State extends State<NewHome2> {
int fixTotalItem = 0; int fixTotalItem = 0;
int totalItemOrderDetail = 0; int totalItemOrderDetail = 0;
int totalItemBukanOrderDetail = 0; int totalItemBukanOrderDetail =
0;
for (var i = 0; for (var i = 0;
i < listOrders.length; i < listOrders.length;
i++) { i++) {
...@@ -484,11 +490,13 @@ class _NewHome2State extends State<NewHome2> { ...@@ -484,11 +490,13 @@ class _NewHome2State extends State<NewHome2> {
.orderDetail .orderDetail
.isEmpty) { .isEmpty) {
totalHargaBukanOrderDetail += totalHargaBukanOrderDetail +=
(listOrders[i].totalItem * (listOrders[i]
.totalItem *
listOrders[i] listOrders[i]
.totalHarga); .totalHarga);
totalItemBukanOrderDetail += totalItemBukanOrderDetail +=
listOrders[i].totalItem; listOrders[i]
.totalItem;
} else { } else {
for (int kk = 0; for (int kk = 0;
kk < kk <
...@@ -552,6 +560,8 @@ class _NewHome2State extends State<NewHome2> { ...@@ -552,6 +560,8 @@ class _NewHome2State extends State<NewHome2> {
); );
}, },
); );
},
);
}); });
}, },
) )
......
...@@ -13,6 +13,7 @@ import '../select_branch.dart'; ...@@ -13,6 +13,7 @@ import '../select_branch.dart';
Future<dynamic> modalBottomSelectOption(BuildContext context) { Future<dynamic> modalBottomSelectOption(BuildContext context) {
void ontapOkeChangeOutlet() { void ontapOkeChangeOutlet() {
Navigator.pop(context);
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
...@@ -145,9 +146,7 @@ Note: Ganti outlet akan menyebabkan orderan anda saat ini hilang ...@@ -145,9 +146,7 @@ Note: Ganti outlet akan menyebabkan orderan anda saat ini hilang
Api.changeTypeOrder(typeOrderDelivery).then((value) { Api.changeTypeOrder(typeOrderDelivery).then((value) {
if (value) { if (value) {
setIsCustomerDelivery(true); setIsCustomerDelivery(true);
context context.read<ChangeDeliveryPickupBloc>().toDelivery(true);
.read<ChangeDeliveryPickupBloc>()
.toDelivery(true);
context.read<ViewBillBloc>().getBill(); context.read<ViewBillBloc>().getBill();
setTypeOrder(typeOrderDelivery); setTypeOrder(typeOrderDelivery);
} }
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import '../../helper/helper.dart'; import '../../helper/helper.dart';
import '../../helper/prefs.dart'; import '../../helper/prefs.dart';
...@@ -72,7 +73,12 @@ class ComponentNameUser extends StatelessWidget { ...@@ -72,7 +73,12 @@ class ComponentNameUser extends StatelessWidget {
(isDeliveryPickuup) (isDeliveryPickuup)
? GestureDetector( ? GestureDetector(
onTap: () { onTap: () {
if (getIsCanChangeDeliveryPickup()) {
modalBottomSelectOption(context); modalBottomSelectOption(context);
} else {
EasyLoading.showToast(
'Tidak dapat ganti tipe order karena status orderan sedang diproses / telah selesai');
}
}, },
child: Container( child: Container(
height: 30, height: 30,
......
...@@ -143,7 +143,7 @@ class _ViewBillNewState extends State<ViewBillNew> { ...@@ -143,7 +143,7 @@ class _ViewBillNewState extends State<ViewBillNew> {
} }
context.read<FeedBackOptionBloc>().getOptionFeedback(); context.read<FeedBackOptionBloc>().getOptionFeedback();
context.read<ViewBillBloc>().backToDefault(); // context.read<ViewBillBloc>().backToDefault();
getBillFunc(context); getBillFunc(context);
double widthScreen = responsiveWidthScreen(context); double widthScreen = responsiveWidthScreen(context);
double maxWidthScreen = getMaxWidthScreen(context, useResponsive); double maxWidthScreen = getMaxWidthScreen(context, useResponsive);
...@@ -196,7 +196,30 @@ class _ViewBillNewState extends State<ViewBillNew> { ...@@ -196,7 +196,30 @@ class _ViewBillNewState extends State<ViewBillNew> {
isCoreLayout: true, isCoreLayout: true,
); );
} else { } else {
if (!widget.isHistory) { saveBillDetail(dataBill);
// int totalService = 0;
// int totalServiceTax = 0;
// int individuTotalPayment = 0;
// int individuPaymentPaid = 0;
int outStandingIndividu = 0;
// int allPaymentPaid = 0;
int outStandingAll = 0;
int totalDiscount = 0;
// bool isIndividuHaveWaitingPayment = false;
// String paymentToRedirect = '';
// String paymentId = '';
// check payment pending ketika table di lock backend
// bool isStillHavePaymentPending = false;
if (dataBill.isNotEmpty) {
// karna dia looping 2x, jadi kalau orderID nya sama dengan current order ID baru diupdate, kalau gak berarti history
if (dataBill[0].id == getOrderId()) {
if (widget.isHistory == false) {
List<String> listHistoryOrder = getListHistory(); List<String> listHistoryOrder = getListHistory();
int indexListhIstory = listHistoryOrder.indexWhere( int indexListhIstory = listHistoryOrder.indexWhere(
(listHistoryOrders) => (listHistoryOrders) =>
...@@ -239,28 +262,8 @@ class _ViewBillNewState extends State<ViewBillNew> { ...@@ -239,28 +262,8 @@ class _ViewBillNewState extends State<ViewBillNew> {
setListHistory(listHistoryOrder); setListHistory(listHistoryOrder);
} }
} }
}
saveBillDetail(dataBill);
// int totalService = 0;
// int totalServiceTax = 0;
// int individuTotalPayment = 0;
// int individuPaymentPaid = 0;
int outStandingIndividu = 0;
// int allPaymentPaid = 0;
int outStandingAll = 0;
int totalDiscount = 0;
// bool isIndividuHaveWaitingPayment = false;
// String paymentToRedirect = '';
// String paymentId = '';
// check payment pending ketika table di lock backend
// bool isStillHavePaymentPending = false;
if (dataBill.isNotEmpty) {
// int indexWherePendingPayment = dataBill[0] // int indexWherePendingPayment = dataBill[0]
// .paymentList // .paymentList
// .indexWhere((element) => element.isApproved == false); // .indexWhere((element) => element.isApproved == false);
...@@ -1841,6 +1844,59 @@ class DeliveryPickupDetail extends StatelessWidget { ...@@ -1841,6 +1844,59 @@ class DeliveryPickupDetail extends StatelessWidget {
const Spacer(), const Spacer(),
BlocBuilder<TriggerRefresh, bool>( BlocBuilder<TriggerRefresh, bool>(
builder: (_, trigger) { builder: (_, trigger) {
void ontapClose() {
Navigator.pop(context);
}
void setPickupTimeUser(int time) {
String closeOutlet = getCloseTime();
String hourClose = closeOutlet.split(':')[0];
String minuteClose = closeOutlet.split(':')[1];
var now = DateTime.now().toLocal();
var dateNow = DateFormat('yyyy-MM-dd').format(now);
String dateTimeCloseOutletString =
"$dateNow $hourClose:$minuteClose:00";
DateTime dateTimeCloseOutlet =
DateTime.parse(dateTimeCloseOutletString);
String hourTime = DateFormat.H().format(dateTime);
String minuteTime = DateFormat.m().format(dateTime);
DateTime dateSelectedPickupTime = DateTime(now.year, now.month,
now.day, int.parse(hourTime) + time, int.parse(minuteTime));
final differenceClose =
dateTimeCloseOutlet.difference(dateSelectedPickupTime);
if (differenceClose.inMinutes < 59) {
buttonDialogGlobal(
context,
'Informasi',
'Pickup Hanya Bisa Dilakukan 1 Jam sebelum outlet tutup',
'OK',
'Close',
ontapClose,
ontapClose,
isOkeButtonShow: false,
);
return;
}
TimeOfDay timeOfDayPickup = TimeOfDay(
hour: int.parse(hourTime) + time,
minute: int.parse(minuteTime));
// String timeToset = timeOfDayPickup.format(context);
final hourString =
timeOfDayPickup.hour.toString().padLeft(2, '0');
final minuteString =
timeOfDayPickup.minute.toString().padLeft(2, '0');
// String amPM = timeToset.split(' ')[1];
String setPickup = "$hourString:$minuteString";
setPickupTime(setPickup);
context.read<TriggerRefresh>().trigger(!trigger);
context.read<ViewBillBloc>().getBill();
Navigator.pop(context);
}
return Column( return Column(
children: [ children: [
changeOutlet(context), changeOutlet(context),
...@@ -1849,6 +1905,65 @@ class DeliveryPickupDetail extends StatelessWidget { ...@@ -1849,6 +1905,65 @@ class DeliveryPickupDetail extends StatelessWidget {
), ),
GestureDetector( GestureDetector(
onTap: () { onTap: () {
if (getIsCanChangeDeliveryPickup()) {
showDialog(
context: context,
builder: (BuildContext ctx) => AlertDialog(
title: defaultText(
context,
'Silahkan pilih jam pickup',
style: viewbillStyle(),
),
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
GestureDetector(
onTap: () {
setPickupTimeUser(0);
},
child: ButtonComponent(
buttonColor: buttonColor,
teksButton: 'Sekarang'),
),
const SizedBox(
height: 10,
),
GestureDetector(
onTap: () {
setPickupTimeUser(1);
},
child: ButtonComponent(
buttonColor: buttonColor,
teksButton: '1 Jam'),
),
const SizedBox(
height: 10,
),
GestureDetector(
onTap: () {
setPickupTimeUser(3);
},
child: ButtonComponent(
buttonColor: buttonColor,
teksButton: '3 Jam'),
),
const SizedBox(
height: 10,
),
GestureDetector(
onTap: () {
setPickupTimeUser(5);
},
child: ButtonComponent(
buttonColor: buttonColor,
teksButton: '5 Jam'),
),
const SizedBox(
height: 10,
),
GestureDetector(
onTap: () {
Navigator.pop(context);
showTimePicker( showTimePicker(
context: context, context: context,
initialTime: timeOfDayPickup, initialTime: timeOfDayPickup,
...@@ -1856,40 +1971,54 @@ class DeliveryPickupDetail extends StatelessWidget { ...@@ -1856,40 +1971,54 @@ class DeliveryPickupDetail extends StatelessWidget {
if (value == null) { if (value == null) {
return; return;
} else { } else {
void ontapClose() {
Navigator.pop(context);
}
String closeOutlet = getCloseTime(); String closeOutlet = getCloseTime();
String hourClose = closeOutlet.split(':')[0]; String hourClose =
String minuteClose = closeOutlet.split(':')[1]; closeOutlet.split(':')[0];
String minuteClose =
closeOutlet.split(':')[1];
String openOutlet = getOpenTime(); String openOutlet = getOpenTime();
String hourOpen = openOutlet.split(':')[0]; String hourOpen =
String minuteOpen = openOutlet.split(':')[1]; openOutlet.split(':')[0];
String minuteOpen =
openOutlet.split(':')[1];
// TimeOfDay timeClose = TimeOfDay( // TimeOfDay timeClose = TimeOfDay(
// hour: int.parse(hourClose), // hour: int.parse(hourClose),
// minute: int.parse(minuteClose), // minute: int.parse(minuteClose),
// ); // );
var now = DateTime.now().toLocal(); var now = DateTime.now().toLocal();
var dateNow = DateFormat('yyyy-MM-dd').format(now); var dateNow =
DateFormat('yyyy-MM-dd')
.format(now);
String dateTimeCloseOutletString = String dateTimeCloseOutletString =
"$dateNow $hourClose:$minuteClose:00"; "$dateNow $hourClose:$minuteClose:00";
String dateTimeOpenOutletString = String dateTimeOpenOutletString =
"$dateNow $hourOpen:$minuteOpen:00"; "$dateNow $hourOpen:$minuteOpen:00";
DateTime dateTimeCloseOutlet = DateTime dateTimeCloseOutlet =
DateTime.parse(dateTimeCloseOutletString); DateTime.parse(
dateTimeCloseOutletString);
DateTime dateTimeOpenOutlet = DateTime dateTimeOpenOutlet =
DateTime.parse(dateTimeOpenOutletString); DateTime.parse(
DateTime dateSelectedPickupTime = DateTime(now.year, dateTimeOpenOutletString);
now.month, now.day, value.hour, value.minute); DateTime dateSelectedPickupTime =
final differenceClose = dateTimeCloseOutlet DateTime(
.difference(dateSelectedPickupTime); now.year,
now.month,
final differenceOpen = dateSelectedPickupTime now.day,
.difference(dateTimeOpenOutlet); value.hour,
value.minute);
final differenceClose =
dateTimeCloseOutlet.difference(
dateSelectedPickupTime);
final differenceOpen =
dateSelectedPickupTime
.difference(
dateTimeOpenOutlet);
final differenceFromNow = final differenceFromNow =
dateSelectedPickupTime.difference(now); dateSelectedPickupTime
if (differenceFromNow.inMinutes < 0) { .difference(now);
if (differenceFromNow.inMinutes <
0) {
buttonDialogGlobal( buttonDialogGlobal(
context, context,
'Informasi', 'Informasi',
...@@ -1902,7 +2031,8 @@ class DeliveryPickupDetail extends StatelessWidget { ...@@ -1902,7 +2031,8 @@ class DeliveryPickupDetail extends StatelessWidget {
); );
return; return;
} }
if (differenceClose.inMinutes < 59) { if (differenceClose.inMinutes <
59) {
buttonDialogGlobal( buttonDialogGlobal(
context, context,
'Informasi', 'Informasi',
...@@ -1930,17 +2060,50 @@ class DeliveryPickupDetail extends StatelessWidget { ...@@ -1930,17 +2060,50 @@ class DeliveryPickupDetail extends StatelessWidget {
return; return;
} }
// String timeToset = value.format(context); // String timeToset = value.format(context);
final hourString = final hourString = value.hour
value.hour.toString().padLeft(2, '0'); .toString()
final minuteString = .padLeft(2, '0');
value.minute.toString().padLeft(2, '0'); final minuteString = value.minute
.toString()
.padLeft(2, '0');
// String amPM = timeToset.split(' ')[1]; // String amPM = timeToset.split(' ')[1];
String setPickup = "$hourString:$minuteString"; String setPickup =
"$hourString:$minuteString";
setPickupTime(setPickup); setPickupTime(setPickup);
context.read<TriggerRefresh>().trigger(!trigger); context
context.read<ViewBillBloc>().getBill(); .read<TriggerRefresh>()
.trigger(!trigger);
context
.read<ViewBillBloc>()
.getBill();
} }
}); });
},
child: ButtonComponent(
buttonColor: buttonColor,
teksButton: 'Atur Sendiri',
),
),
const SizedBox(
height: 10,
),
GestureDetector(
onTap: () {
Navigator.pop(context);
},
child: const ButtonComponent(
buttonColor: Colors.transparent,
teksButton: 'Close',
teksButtonColor: textColorBlack,
),
)
],
),
));
} else {
EasyLoading.showToast(
'Tidak dapat pilih jam pikcup karena status orderan sedang diproses / telah selesai');
}
// ketika user click OK // ketika user click OK
}, },
child: Container( child: Container(
...@@ -2028,6 +2191,7 @@ class DeliveryPickupDetail extends StatelessWidget { ...@@ -2028,6 +2191,7 @@ class DeliveryPickupDetail extends StatelessWidget {
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
void ontapOkeChange() { void ontapOkeChange() {
Navigator.pop(context);
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
...@@ -2049,6 +2213,8 @@ class DeliveryPickupDetail extends StatelessWidget { ...@@ -2049,6 +2213,8 @@ class DeliveryPickupDetail extends StatelessWidget {
Ganti outlet akan menyebabkan orderan anda saat ini hilang. Ganti outlet akan menyebabkan orderan anda saat ini hilang.
Apakah ingin melanjutkan ?'''; Apakah ingin melanjutkan ?''';
if (getIsCanChangeDeliveryPickup()) {
buttonDialogGlobal( buttonDialogGlobal(
context, context,
title, title,
...@@ -2059,6 +2225,10 @@ Apakah ingin melanjutkan ?'''; ...@@ -2059,6 +2225,10 @@ Apakah ingin melanjutkan ?''';
onTapCancelChange, onTapCancelChange,
okButtonColor: buttonColor, okButtonColor: buttonColor,
); );
} else {
EasyLoading.showToast(
'Tidak dapat ganti outlet karena status orderan sedang diproses / telah selesai');
}
}, },
child: Container( child: Container(
width: 98, width: 98,
...@@ -2249,6 +2419,7 @@ Apakah ingin melanjutkan ?'''; ...@@ -2249,6 +2419,7 @@ Apakah ingin melanjutkan ?''';
children: [ children: [
GestureDetector( GestureDetector(
onTap: () { onTap: () {
if (getIsCanChangeDeliveryPickup()) {
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute( MaterialPageRoute(
...@@ -2260,6 +2431,10 @@ Apakah ingin melanjutkan ?'''; ...@@ -2260,6 +2431,10 @@ Apakah ingin melanjutkan ?''';
), ),
), ),
); );
} else {
EasyLoading.showToast(
'Tidak dapat ganti alamat karena status orderan sedang diproses / telah selesai');
}
}, },
child: Container( child: Container(
width: 98, width: 98,
...@@ -2463,15 +2638,22 @@ Apakah ingin melanjutkan ?'''; ...@@ -2463,15 +2638,22 @@ Apakah ingin melanjutkan ?''';
children: [ children: [
GestureDetector( GestureDetector(
onTap: () { onTap: () {
Navigator.pushReplacement( if (getIsCanChangeDeliveryPickup()) {
Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (_) => WebViewMap( builder: (_) => WebViewMap(
titleAppBar: 'Pilih Alamat', titleAppBar: 'Pilih Alamat',
url: url:
'${getBaseUrl()}rdm/address/add/?session_id=${getSessionId()}'), '${getBaseUrl()}rdm/address/add/?session_id=${getSessionId()}',
isFromMenu: isFromMenu,
),
), ),
); );
} else {
EasyLoading.showToast(
'Tidak dapat pilih alamat karena status orderan sedang diproses / telah selesai');
}
}, },
child: Container( child: Container(
width: 98, width: 98,
......
...@@ -40,33 +40,36 @@ class CustomAppBar extends StatelessWidget { ...@@ -40,33 +40,36 @@ class CustomAppBar extends StatelessWidget {
children: [ children: [
GestureDetector( GestureDetector(
onTap: () { onTap: () {
if (isFromSelectBranch) { if (isFromSelectBranch || isFromMenu) {
context.read<AddressUser>().getAddressUser( context.read<AddressUser>().getAddressUser(
context, context,
isGetBranchList: true, isGetBranchList: true,
isCallDeliveryCharge: false, isCallDeliveryCharge: false,
); );
Navigator.push( // Navigator.push(
context, // context,
MaterialPageRoute( // MaterialPageRoute(
builder: (_) => const SelectBranch( // builder: (_) => const SelectBranch(
isFormBill: true, // isFormBill: true,
), // ),
), // ),
); // );
} else if (isFromMenu) { Navigator.pop(context);
context.read<AddressUser>().getAddressUser( }
context, // else if (isFromMenu) {
isGetBranchList: true, // context.read<AddressUser>().getAddressUser(
isCallDeliveryCharge: false, // context,
); // isGetBranchList: true,
Navigator.push( // isCallDeliveryCharge: false,
context, // );
MaterialPageRoute( // Navigator.push(
builder: (_) => const NewHome2(), // context,
), // MaterialPageRoute(
); // builder: (_) => const NewHome2(),
} else { // ),
// );
// }
else {
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute( MaterialPageRoute(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment