Commit 35f60e81 by 宁斌

Revert "1.2.1測試版"

This reverts commit 8fbea4e5
parent 8fbea4e5
......@@ -29,14 +29,14 @@ android {
buildTypes {
debug {
buildConfigField "boolean", "LOG_DEBUG", "true"
buildConfigField "boolean", "USE_CANARY", "true"
buildConfigField "boolean", "LOG_DEBUG", rootProject.ext.buildType["debugLogDebug"]
buildConfigField "boolean", "USE_CANARY", rootProject.ext.buildType["debugUseCanary"]
minifyEnabled false
proguardFiles 'proguard.cfg'
}
release {
buildConfigField "boolean", "LOG_DEBUG", "false"
buildConfigField "boolean", "USE_CANARY", "false"
buildConfigField "boolean", "LOG_DEBUG", rootProject.ext.buildType["releaseLogDebug"]
buildConfigField "boolean", "USE_CANARY", rootProject.ext.buildType["releaseUseCanary"]
minifyEnabled false
zipAlignEnabled false
proguardFiles 'proguard.cfg'
......
package com.gingersoft.supply_chain.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.supply_chain.di.module.WareHousingDetailsModule;
import com.gingersoft.supply_chain.mvp.contract.WareHousingDetailsContract;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.supply_chain.mvp.ui.fragment.warehouse.WareHousingDetailsFragment;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/12/2021 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
@Component(modules = WareHousingDetailsModule.class, dependencies = AppComponent.class)
public interface WareHousingDetailsComponent {
void inject(WareHousingDetailsFragment fragment);
@Component.Builder
interface Builder {
@BindsInstance
WareHousingDetailsComponent.Builder view(WareHousingDetailsContract.View view);
WareHousingDetailsComponent.Builder appComponent(AppComponent appComponent);
WareHousingDetailsComponent build();
}
}
\ No newline at end of file
package com.gingersoft.supply_chain.di.module;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.supply_chain.mvp.contract.WareHousingDetailsContract;
import com.gingersoft.supply_chain.mvp.model.WareHousingDetailsModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/12/2021 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class WareHousingDetailsModule {
@Binds
abstract WareHousingDetailsContract.Model bindWareHousingDetailsModel(WareHousingDetailsModel model);
}
\ No newline at end of file
package com.gingersoft.supply_chain.mvp.contract;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/12/2021 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface WareHousingDetailsContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
}
}
package com.gingersoft.supply_chain.mvp.model;
import android.app.Application;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject;
import com.gingersoft.supply_chain.mvp.contract.WareHousingDetailsContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/12/2021 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public class WareHousingDetailsModel extends BaseModel implements WareHousingDetailsContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public WareHousingDetailsModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mGson = null;
this.mApplication = null;
}
}
\ No newline at end of file
package com.gingersoft.supply_chain.mvp.presenter;
import android.app.Application;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import javax.inject.Inject;
import com.gingersoft.supply_chain.mvp.contract.WareHousingDetailsContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/12/2021 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public class WareHousingDetailsPresenter extends BasePresenter<WareHousingDetailsContract.Model, WareHousingDetailsContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public WareHousingDetailsPresenter(WareHousingDetailsContract.Model model, WareHousingDetailsContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
}
package com.gingersoft.supply_chain.mvp.ui.fragment.warehouse;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.di.component.DaggerWareHousingDetailsComponent;
import com.gingersoft.supply_chain.mvp.contract.WareHousingDetailsContract;
import com.gingersoft.supply_chain.mvp.presenter.WareHousingDetailsPresenter;
import com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment;
import com.jess.arms.di.component.AppComponent;
/**
* ================================================
* Description: 入庫庫存詳情
*/
public class WareHousingDetailsFragment extends BaseSupplyChainFragment<WareHousingDetailsPresenter> implements WareHousingDetailsContract.View {
public static WareHousingDetailsFragment newInstance() {
WareHousingDetailsFragment fragment = new WareHousingDetailsFragment();
return fragment;
}
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerWareHousingDetailsComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_ware_housing_details, container, false);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_f0"
android:orientation="vertical">
<include layout="@layout/supply_chain_top_bar" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_10"
android:background="@drawable/shape_theme_eight_corners_bg"
app:layout_collapseMode="parallax">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="@dimen/dp_10"
android:paddingTop="@dimen/dp_5"
android:paddingBottom="@dimen/dp_5">
<TextView
android:id="@+id/tv_order_details_supplier_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="@dimen/dp_16"
tools:text="海鮮天地" />
<TextView
android:id="@+id/tv_order_details_order_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
android:textColor="@color/white"
android:textSize="@dimen/dp_14"
tools:text="訂單號:DD0001" />
<TextView
android:id="@+id/tv_order_details_create_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
android:textColor="@color/white"
android:textSize="@dimen/dp_14"
tools:text="2020-11-20 12:00" />
</LinearLayout>
<TextView
android:id="@+id/tv_order_details_order_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:layout_marginRight="@dimen/dp_10"
android:textColor="@color/white"
android:textSize="@dimen/dp_18"
tools:text="部分收貨" />
</FrameLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_order_details_food_list"
android:layout_width="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:layout_height="0dp"
android:layout_weight="1" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="@dimen/dp_10"
android:background="@color/white"
android:orientation="vertical"
android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="@dimen/dp_20"
android:paddingRight="@dimen/dp_20">
<CheckBox
android:id="@+id/cb_order_details_all_selected"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全選"
android:textColor="@color/color_3c"
android:textSize="@dimen/dp_14" />
<TextView
style="@style/supplier_chain_222_16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_20"
android:text="食材種類:"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_order_details_food_type_total"
style="@style/supplier_chain_222_16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/required_color"
tools:text="3" />
<View
android:layout_width="@dimen/dp_0"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
style="@style/supplier_chain_222_16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_20"
android:text="總計:"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_order_details_total_amount"
style="@style/supplier_chain_222_16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/required_color"
tools:text="$300.00" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="@dimen/dp_20"
android:paddingTop="@dimen/dp_10"
android:paddingRight="@dimen/dp_20">
<TextView
style="@style/supplier_chain_222_16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文件上傳:" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_order_details_click_upload"
style="@style/supplier_chain_222_16"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="end"
android:layout_weight="1"
android:text="點擊上傳"
android:textColor="@color/click_upload_text_color" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_1"
android:background="@color/color_53" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
android:orientation="horizontal"
android:paddingLeft="@dimen/dp_20"
android:paddingRight="@dimen/dp_20">
<TextView
style="@style/supplier_chain_222_16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="備註:" />
<EditText
android:id="@+id/ed_order_details_remark"
style="@style/supplier_chain_222_16"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="手動輸入"
android:textColorHint="@color/color_c9" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10">
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/tv_order_details_buy_again"
style="@style/Style_Btn_Green"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="再次購買" />
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/tv_order_details_partial_receipt"
style="@style/Style_Btn_Yellow"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_12"
android:layout_weight="1"
android:gravity="center"
android:text="部分收貨" />
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/tv_order_details_receipt"
style="@style/Style_Btn_Brick_Red"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_12"
android:layout_weight="1"
android:gravity="center"
android:text="收貨" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.mvp.action.order;
import android.text.TextUtils;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
import com.gingersoft.gsa.cloud.pay.pos.PosAction;
......@@ -14,6 +16,7 @@ import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.VoidRespose;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.delegate.IActivity;
import com.jess.arms.mvp.IView;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
......@@ -31,7 +34,7 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
private BaseFragmentActivity mActivity;
private IView mRootView;
public CancelOrder(BaseFragmentActivity fragmentActivity, IView rootView){
public CancelOrder(BaseFragmentActivity fragmentActivity, IView rootView) {
this.mActivity = fragmentActivity;
this.mRootView = rootView;
}
......@@ -43,6 +46,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
@Override
public void destroy() {
mActivity = null;
mRootView = null;
}
private void showCancelDialog(OrderManagerResponse datasBean) {
......@@ -52,10 +57,10 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
dialogBuilder.setMessage("是否取消訂單?");
dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
dialog.dismiss();
if (datasBean.withHywebPay()) {
if (datasBean.withHywebPay() && AppDevices.isHywebPos()) {
hywebOrderCancle(datasBean);
} else {
if(cancelListener != null){
if (cancelListener != null) {
cancelListener.cancel(datasBean.getId());
}
}
......@@ -79,7 +84,7 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
@Override
public void onPosSuccess(VoidRespose response) {
LoganManager.w_code(TAG, "onPosSuccess: " + response.toString());
if(cancelListener != null){
if (cancelListener != null) {
cancelListener.refeshOrders();
}
}
......@@ -87,7 +92,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
@Override
public void onPosException(Exception e) {
LoganManager.w_code(TAG, "onPosException: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionFragment statusExceptionFragment = (PosActionStatusExceptionFragment) mActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
......@@ -96,6 +102,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.VOID);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else{
mActivity.start(statusExceptionFragment);
}
}
......@@ -127,11 +135,14 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
}
private OnCancelListener cancelListener;
public void setCancelListener(OnCancelListener cancelListener) {
this.cancelListener = cancelListener;
}
public interface OnCancelListener{
public interface OnCancelListener {
void cancel(long orderId);
void refeshOrders();
}
}
......@@ -95,7 +95,8 @@ public class ModifyOrderAction implements Strategy<OrderManagerResponse> {
@Override
public void destroy() {
mActivity = null;
mRootView = null;
}
}
......@@ -60,6 +60,8 @@ public class PrintOrderAction implements Strategy<OrderManagerResponse> {
@Override
public void destroy() {
mActivity = null;
mRootView = null;
}
private void startPrintOrder(OrderManagerResponse orderDetailItem, List<OrderDetail> orderDetailList) {
......@@ -96,45 +98,48 @@ public class PrintOrderAction implements Strategy<OrderManagerResponse> {
doshokuOrder.setBillMoney(payMethodList);
}
if (orderDetailItem.withHywebPay()) {
if (AppDevices.isHywebPos()) {
if (orderDetailItem.withHywebPay() && AppDevices.isHywebPos()) {
printPosStub(orderDetailItem,doshokuOrder,dataBean);
}else {
printBill(orderDetailItem,doshokuOrder, dataBean,false);
}
}
private void printPosStub(OrderManagerResponse orderDetailItem, DoshokuOrder doshokuOrder, TableBean.DataBean dataBean) {
PosPay.printStub(mActivity, mRootView, orderDetailItem.getPayTxnId(), new OnPosActionListener() {
@Override
public void onPosSuccess(HywebPosResponse response) {
printBill(doshokuOrder, dataBean);
if(printlListener != null){
printlListener.printPosStubResult(true);
}
printBill(orderDetailItem,doshokuOrder, dataBean,true);
}
@Override
public void onPosException(Exception e) {
if(printlListener != null){
printlListener.printPosStubResult(false);
}
printBill(orderDetailItem,doshokuOrder, dataBean,true);
}
@Override
public void onPosInvalid(String e) {
printBill(orderDetailItem,doshokuOrder, dataBean,true);
}
@Override
public void onUpdateStatusSuccess(HywebPosResponse response) {
}
@Override
public void onUpdateStatusError(Throwable e) {
}
});
} else {
printBill(doshokuOrder, dataBean);
}
} else {
printBill(doshokuOrder, dataBean);
}
}
private void printBill(DoshokuOrder doshokuOrder, TableBean.DataBean dataBean) {
private void printBill(OrderManagerResponse orderDetailItem,DoshokuOrder doshokuOrder, TableBean.DataBean dataBean,boolean printStub) {
PrintContent printContent = new PrintContentAdapter().adaptationBillContent(doshokuOrder, dataBean);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
......@@ -142,11 +147,13 @@ public class PrintOrderAction implements Strategy<OrderManagerResponse> {
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess());
if (printStub) {
printPosStub(orderDetailItem,doshokuOrder,dataBean);
}
doshokuOrder.initialization();
});
}
private ArrayList<BillItem> getOrderMoneyList(OrderManagerResponse orderDetailItem, double totalMoney) {
List<SectionTextItem3> printOrderMoneyList = new ArrayList<>();
ArrayList<BillItem> printBillOrderMoneyList = new ArrayList<>();
......@@ -267,4 +274,12 @@ public class PrintOrderAction implements Strategy<OrderManagerResponse> {
}
return payMethodList;
}
private PrintOrderAction.OnPrintlListener printlListener;
public void setPrintlListener(OnPrintlListener printlListener) {
this.printlListener = printlListener;
}
public interface OnPrintlListener{
void printPosStubResult(boolean success);
}
}
......@@ -46,7 +46,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
@Override
public void destroy() {
mActivity = null;
mRootView = null;
}
private void showHywebRefundDialog(OrderManagerResponse datasBean) {
......@@ -88,7 +89,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
@Override
public void onPosException(Exception e) {
LoganManager.w_code(TAG, "onPosException: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionFragment statusExceptionFragment = (PosActionStatusExceptionFragment) mActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
......@@ -97,6 +99,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.REFUND);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else {
mActivity.start(statusExceptionFragment);
}
}
......@@ -114,7 +118,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
@Override
public void onUpdateStatusError(Throwable e) {
LoganManager.w_code(TAG, "onUpdateStatusError: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionFragment statusExceptionFragment = (PosActionStatusExceptionFragment) mActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
......@@ -123,6 +128,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.REFUND);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else{
mActivity.start(statusExceptionFragment);
}
}
});
......
......@@ -42,6 +42,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
@Override
public void destroy() {
mActivity = null;
mRootView = null;
}
private void showKeyboardDialog(OrderManagerResponse datasBean) {
......@@ -75,7 +77,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
@Override
public void onPosException(Exception e) {
LoganManager.w_code(TAG, "onPosException: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionFragment statusExceptionFragment = (PosActionStatusExceptionFragment) mActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
......@@ -84,6 +87,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.TIP);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else{
mActivity.start(statusExceptionFragment);
}
}
......@@ -100,7 +105,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
@Override
public void onUpdateStatusError(Throwable e) {
LoganManager.w_code(TAG, "onUpdateStatusError: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionFragment statusExceptionFragment = (PosActionStatusExceptionFragment) mActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
......@@ -109,6 +115,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.TIP);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else{
mActivity.start(statusExceptionFragment);
}
}
});
......
package com.gingersoft.gsa.cloud.table.mvp.model.discount;
import android.app.Activity;
import android.text.InputType;
import com.gingersoft.gsa.cloud.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.KeyboardDialog;
import com.jess.arms.utils.ArmsUtils;
import java.util.List;
/**
* @author : bin
* @create date: 2020-10-27
* @update date: 2020-10-27
* @description:賬單折扣邏輯
*/
public class BillDiscountAction implements Strategy<Discount> {
private Activity mContext;
/**
* 賬單折扣列表
*/
private List<NomalDiscount> mNomalDiscountList;
private OnCallBackListener mListener;
public BillDiscountAction(Activity context, OnCallBackListener listener) {
this.mContext = context;
this.mListener = listener;
}
public void setNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
this.mNomalDiscountList = nomalDiscountList;
}
@Override
public void action(Discount discount) {
if (mListener == null) {
return;
}
if (isOnlyOnce(discount)) {
//此折扣只一次
ArmsUtils.makeText(mContext, "此折扣只一次");
return;
}
boolean hasExclusive = hasExclusiveDiscount();
if (hasExclusive) {
//有獨佔折扣
exclusiveDiscount(discount);
return;
} else {
if (discount.getExclusive() == 1 && mNomalDiscountList.size() > 0) {
//獨佔折扣
exclusiveDiscount(discount);
return;
}
}
switch (discount.getType()) {
case Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT:
showCustomAmountDialog(discount, false);
break;
case Discount.DISCOUNT_TYPE_KEYBOARD:
showKeyboardDialog(discount, false);
break;
// case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
//
// break;
default:
mListener.preformAddDiscount(discount.clone());
break;
}
}
private void exclusiveDiscount(Discount discount) {
if (mListener != null) {
showExclusiveTipDialog(discount);
}
}
/**
* 是否有獨佔折扣
*
* @return
*/
private boolean hasExclusiveDiscount() {
for (NomalDiscount nomalDiscount : mNomalDiscountList) {
if (nomalDiscount.getDiscount().getExclusive() == 1) {
return true;
}
}
return false;
}
/**
* 此折扣是否只一次
*
* @param discount
* @return
*/
private boolean isOnlyOnce(Discount discount) {
if (discount.getOnlyOnce() == 1) {
for (NomalDiscount nomalDiscount : mNomalDiscountList) {
Discount item = nomalDiscount.getDiscount();
if (discount.getId().longValue() == item.getId().longValue()) {
return true;
}
}
}
return false;
}
/**
* 顯示自定義金額彈窗
*
* @param discount
*/
private void showCustomAmountDialog(Discount discount, boolean exclusiveReplace) {
CommonTipDialog.showEditDialog(mContext, discount.getRemark(), "請輸入折扣金額", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL, new CommonTipDialog.OnEditTextListener() {
@Override
public void inputText(String text) {
discount.setAmount(Double.parseDouble(text));
if (mListener != null) {
if (exclusiveReplace) {
mListener.exclusiveRemoveOthers(mNomalDiscountList);
}
mListener.preformAddDiscount(discount.clone());
}
}
});
}
/**
* 顯示子弟你金額彈窗 鍵盤
*
* @param discount
*/
private void showKeyboardDialog(Discount discount, boolean exclusiveReplace) {
new KeyboardDialog(mContext)
.build()
.setOnCallBackListener(new KeyboardDialog.OnCallBackListener() {
@Override
public void onSure(String number) {
discount.setAmount(Double.parseDouble(number));
if (mListener != null) {
if (exclusiveReplace) {
mListener.exclusiveRemoveOthers(mNomalDiscountList);
}
mListener.preformAddDiscount(discount.clone());
}
}
})
.show();
}
/**
* 提示有獨佔折扣是否替換
*
* @param discount
*/
private void showExclusiveTipDialog(Discount discount) {
CommonTipDialog.showDoubtDialog2(mContext, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() {
@Override
public void onSure() {
switch (discount.getType()) {
case Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT:
showCustomAmountDialog(discount, true);
break;
case Discount.DISCOUNT_TYPE_KEYBOARD:
showKeyboardDialog(discount, true);
break;
// case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
//
// break;
default:
mListener.exclusiveRemoveOthers(mNomalDiscountList);
mListener.preformAddDiscount(discount.clone());
break;
}
}
});
}
public interface OnCallBackListener {
void exclusiveRemoveOthers(List<NomalDiscount> nomalDiscountList);
void preformAddDiscount(Discount discount);
}
}
package com.gingersoft.gsa.cloud.table.mvp.model.discount;
import android.app.Activity;
import android.text.InputType;
import com.gingersoft.gsa.cloud.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.KeyboardDialog;
import com.jess.arms.utils.ArmsUtils;
import java.util.List;
/**
* @author : bin
* @create date: 2020-10-28
* @update date: 2020-10-28
* @description:美食折扣邏輯
*/
public class MealDiscountAction implements Strategy<Discount> {
private Activity mContext;
/**
* 選中的食品或套餐組
*/
private List<OrderDetail> mSelectMixOrderMealList;
private List<MultyDiscount> mMultyDiscountList;
private MealDiscountAction.OnCallBackListener mListener;
public MealDiscountAction(Activity context, List<MultyDiscount> multyDiscountList, MealDiscountAction.OnCallBackListener listener) {
this.mContext = context;
this.mMultyDiscountList = multyDiscountList;
this.mListener = listener;
}
public void setSelectMixOrderMealList(List<OrderDetail> selectMixOrderMealList) {
this.mSelectMixOrderMealList = selectMixOrderMealList;
}
@Override
public void action(Discount discount) {
if (mListener == null || mSelectMixOrderMealList == null || mSelectMixOrderMealList.size() == 0) {
return;
}
double mixTotalAomout = getMixTotalAomout(mSelectMixOrderMealList);
if(discount.getType() == 0 && discount.getAmount() > mixTotalAomout){
//金額折扣總額不能超過 食品總金額
ArmsUtils.makeText(mContext, "折扣金額不可以超過食品總金額!");
return;
}
if (discount.getMinBillAmount() > mixTotalAomout) {
//最小賬單金額
ArmsUtils.makeText(mContext, "小於最小賬單金額$" + discount.getMinBillAmount() + " 無法使用此折扣");
return;
}
if (isOnlyOnce(discount)) {
//此折扣只一次
ArmsUtils.makeText(mContext, "此折扣只一次");
return;
}
boolean hasExclusive = hasExclusiveDiscount();
if (hasExclusive) {
//有獨佔折扣
exclusiveDiscount(discount);
return;
} else {
int discountSize = getDiscountSize();
if (discount.getExclusive() == 1 && discountSize > 0) {
//獨佔折扣
exclusiveDiscount(discount);
return;
}
}
switch (discount.getType()) {
case Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT:
showCustomAmountDialog(discount, false);
break;
case Discount.DISCOUNT_TYPE_KEYBOARD:
showKeyboardDialog(discount, false);
break;
// case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
//
// break;
default:
mListener.preformAddDiscount(discount.clone());
break;
}
}
private void exclusiveDiscount(Discount discount) {
if (mListener != null) {
showExclusiveTipDialog(discount);
}
}
/**
* 食品是否有獨佔折扣
*
* @return
*/
private boolean hasExclusiveDiscount() {
for (OrderDetail orderMealItem : mSelectMixOrderMealList) {
if (orderMealItem.getDiscount() != null && orderMealItem.getDiscount().getExclusive() == 1) {
return true;
}
}
return false;
}
/**
* 此折扣是否只一次
*
* @param discount
* @return
*/
private boolean isOnlyOnce(Discount discount) {
if (discount.getOnlyOnce() == 1) {
for (OrderDetail orderMealItem : mSelectMixOrderMealList) {
Discount item = orderMealItem.getDiscount();
if (item != null && discount.getId().longValue() == item.getId().longValue()) {
return true;
}
}
}
return false;
}
/**
* 顯示自定義金額彈窗
*
* @param discount
*/
private void showCustomAmountDialog(Discount discount, boolean exclusiveReplace) {
CommonTipDialog.showEditDialog(mContext, discount.getRemark(), "請輸入折扣金額", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL, new CommonTipDialog.OnEditTextListener() {
@Override
public void inputText(String text) {
discount.setAmount(Double.parseDouble(text));
if (mListener != null) {
if (exclusiveReplace) {
mListener.exclusiveRemoveOthers();
}
mListener.preformAddDiscount(discount.clone());
}
}
});
}
/**
* 顯示子弟你金額彈窗 鍵盤
*
* @param discount
*/
private void showKeyboardDialog(Discount discount, boolean exclusiveReplace) {
new KeyboardDialog(mContext)
.build()
.setOnCallBackListener(new KeyboardDialog.OnCallBackListener() {
@Override
public void onSure(String number) {
discount.setAmount(Double.parseDouble(number));
if (mListener != null) {
if (exclusiveReplace) {
mListener.exclusiveRemoveOthers();
}
mListener.preformAddDiscount(discount.clone());
}
}
})
.show();
}
/**
* 提示有獨佔折扣是否替換
*
* @param discount
*/
private void showExclusiveTipDialog(Discount discount) {
CommonTipDialog.showDoubtDialog2(mContext, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() {
@Override
public void onSure() {
switch (discount.getType()) {
case Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT:
showCustomAmountDialog(discount, true);
break;
case Discount.DISCOUNT_TYPE_KEYBOARD:
showKeyboardDialog(discount, true);
break;
// case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
//
// break;
default:
mListener.exclusiveRemoveOthers();
mListener.preformAddDiscount(discount.clone());
break;
}
}
});
}
/**
* 獲取折扣數量
*
* @return
*/
private int getDiscountSize() {
int size = 0;
for (OrderDetail orderMealItem : mSelectMixOrderMealList) {
if (orderMealItem.getDiscount() != null) {
size++;
}
}
return size;
}
/**
* 獲取套餐總金額
*
* @param mixOrderMealList
* @return
*/
private double getMixTotalAomout(List<OrderDetail> mixOrderMealList) {
double mixTotalAomout = 0.0;
for (OrderDetail orderDetail : mixOrderMealList) {
mixTotalAomout = MoneyUtil.sum(mixTotalAomout, orderDetail.getPrice());
}
return mixTotalAomout;
}
public interface OnCallBackListener {
void exclusiveRemoveOthers();
void preformAddDiscount(Discount discount);
}
}
package com.gingersoft.gsa.cloud.table.mvp.model.function;
import com.gingersoft.gsa.cloud.common.function.FModule;
import com.gingersoft.gsa.cloud.table.R;
/**
* @author : bin
* @create date: 2020-11-21
* @update date: 2020-11-21
* @description:
*/
public class TableFunctionFactory {
public static final String BottomGroup = "/bottom/";
public static final class Bottom {
}
/**
* 餐檯頁
*/
public static final FModule[] bottom = {
new FModule("init", R.mipmap.table_init, 0),
new FModule("initSkyorder", R.mipmap.table_paper, 0),
new FModule("move", R.mipmap.table_move, 0),
new FModule("skyorder", 0, 0),
new FModule("splite", R.mipmap.table_splite, 0),
new FModule("table/bottom/parper", R.mipmap.table_paper, 0),
};
}
......@@ -150,7 +150,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
if(mNomalDiscountAction != null){
if (mNomalDiscountAction != null) {
mNomalDiscountAction.destroy();
}
stopTablePolling();
......@@ -249,7 +249,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
@Override
public void onItemDeleteClick(BillItem datasBean, int position) {
removeBillItem(position);
removeBillItemByPosition(position);
}
});
}
......@@ -385,7 +385,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
mergeMainFoodNumber(mOrderMealList);
}
PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance(),mTableInfo);
PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance(), mTableInfo);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
......@@ -432,7 +432,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
mergeMainFoodNumber(mOrderMealList);
}
PrintContent printContent = new PrintContentAdapter().adaptationPrintSlipContent(DoshokuOrder.getInstance(),mTableInfo);
PrintContent printContent = new PrintContentAdapter().adaptationPrintSlipContent(DoshokuOrder.getInstance(), mTableInfo);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SLIP)//印單
......@@ -810,15 +810,18 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
private void updateOrderDetails(BaseOrderResponse info) {
if (mDoshokuOrder != null && info.getData() != null) {
if (info.getData().getOrderDetails() != null) {
mTableInfo.setPerson(info.getData().getPerson());
//緩存訂單信息
mDoshokuOrder.setOrderPlaced(new OrderResponse(info.getData()));
//緩存食品信息
// List<OrderDetail> orderDetailList = OrderDetail.orderTransOrderDetails(info.getData().getOrderDetails());
mTableInfo.setCreateTime(info.getData().getCreateTime());
mDoshokuOrder.setOpenTableInfo(mTableInfo);
mDoshokuOrder.setOrderPlaced(info.getData());
if (info.getData().getOrderDetails() != null) {
//组装食品信息
List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(info.getData().getOrderDetails()));
mDoshokuOrder.setNewFoodList(orderDetailList);
mOrderMealList.clear();
mOrderMealList.addAll(orderDetailList);
mSelectMealAdapter.notifyDataSetChanged();
......@@ -874,8 +877,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
return true;
}
public void removeBillItem(int index) {
public void removeBillItemByPosition(int index) {
if (index < mBillItemList.size()) {
BillItem billItem = mBillItemList.get(index);
if (billItem instanceof DiscountItem) {
......@@ -888,11 +890,12 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
/**
* 修改訂單包含修改或刪除過的的食品
*
* @return
*/
private boolean hasModifyFoods() {
for (OrderDetail orderDetail : getOrderFoodLists()) {
if(orderDetail.isModify()){
if (orderDetail.isModify()) {
return true;
}
}
......
......@@ -97,6 +97,7 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
private OrderCenterAdapter mOrderCenterAdapter;
private List<OrderManagerResponse> mOrderItemList = new ArrayList<>();
private OrderManagerResponse mCheckedOrderBean;
@Inject
public AllOrderPresenter(AllOrderContract.Model model, AllOrderContract.View rootView) {
......@@ -112,6 +113,7 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
this.IActivity = null;
}
public void initOrderAdapter(Context context) {
......@@ -126,24 +128,32 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
intent.putExtra("orderDetailItem", datasBean);
mRootView.launchActivity(intent);
}
@Override
public void onPrintClick(OrderManagerResponse datasBean, int position) {
}
@Override
public void onModifyClick(OrderManagerResponse datasBean, int position) {
public void onCheckedChanged(OrderManagerResponse checkedOrder) {
if (checkedOrder.isChecked()) {
mCheckedOrderBean = checkedOrder;
} else {
mCheckedOrderBean = null;
}
@Override
public void onCancelClick(OrderManagerResponse datasBean, int position) {
IActivity.setOnCheckedChangedListener(mCheckedOrderBean);
}
@Override
public void onRefundClick(OrderManagerResponse datasBean, int position) {
public void onReloadExceptionStatus(OrderManagerResponse orderBean, String txnId) {
PosActionStatusExceptionFragment statusExceptionFragment = IActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(txnId);
statusExceptionParam.setAmount(orderBean.getTotalAmount());
statusExceptionParam.setOrderId(orderBean.getId());
statusExceptionParam.setOrderNo(orderBean.getOrderNo());
statusExceptionParam.setPayMethodName(orderBean.getPayNames());
statusExceptionParam.setPosAction(orderBean.getPosActionByMatterId());
IActivity.loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else {
IActivity.start(statusExceptionFragment);
}
@Override
public void onTipsClick(OrderManagerResponse datasBean, int position) {
}
});
}
......@@ -163,13 +173,8 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
}
}
public OrderManagerResponse getSelectedOrderItem(){
for (OrderManagerResponse orderItem:mOrderItemList) {
if(orderItem.isChecked()){
return orderItem;
}
}
return null;
public OrderManagerResponse getCheckedOrderBean() {
return mCheckedOrderBean;
}
}
......@@ -8,6 +8,7 @@ import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.order.bean.response.OrderDiscountResponse;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
import com.gingersoft.gsa.cloud.pay.pos.fragment.PosActionStatusExceptionFragment;
import com.gingersoft.gsa.cloud.pay.util.PayMethodUtils;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract;
......@@ -56,6 +57,7 @@ public class OrderDetailPresenter extends BaseOrderConterPresenter<OrderDetailCo
@Inject
AppManager mAppManager;
@Inject
public OrderDetailPresenter(OrderDetailContract.Model model, OrderDetailContract.View rootView) {
super(model, rootView);
......@@ -87,8 +89,6 @@ public class OrderDetailPresenter extends BaseOrderConterPresenter<OrderDetailCo
if (result.getData() != null) {
OrderManagerResponse orderDetailItem = JsonUtils.parseObject(JsonUtils.toJson(result.getData()), OrderManagerResponse.class);
mRootView.returnOrderDetail(orderDetailItem);
//刷新訂單列表
EventBus.getDefault().post(true, "updateOrderListEvent");
} else {
mRootView.showMessage("獲取賬單失敗");
}
......@@ -116,7 +116,7 @@ public class OrderDetailPresenter extends BaseOrderConterPresenter<OrderDetailCo
OrderManagerResponse orderDetailItem = JsonUtils.parseObject(JsonUtils.toJson(result.getData()), OrderManagerResponse.class);
mRootView.returnOrderDetail(orderDetailItem);
//刷新訂單列表
EventBus.getDefault().post(true, "updateOrderListEvent");
EventBus.getDefault().post(true, PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT);
} else {
mRootView.showMessage("獲取賬單失敗");
}
......
......@@ -5,6 +5,7 @@ import android.os.Bundle;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
......@@ -15,6 +16,7 @@ import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import com.gingersoft.gsa.cloud.order.contract.OrderStatusContract;
import com.gingersoft.gsa.cloud.pay.pos.fragment.PosActionStatusExceptionFragment;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerOrderCenterComponent;
......@@ -30,6 +32,7 @@ import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.delegate.IActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.arch.QMUIFragmentPagerAdapter;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.util.QMUIResHelper;
......@@ -73,12 +76,23 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
@BindView(R2.id.ll_bottom)
LinearLayout ll_bottom;
@BindView(R2.id.btn_print_order)
QMUIAlphaButton btn_print_order;
@BindView(R2.id.btn_cancel_order)
QMUIAlphaButton btn_cancel_order;
@BindView(R2.id.btn_refund)
QMUIAlphaButton btn_refund;
@BindView(R2.id.btn_tips)
QMUIAlphaButton btn_tips;
@BindView(R2.id.btn_modify_order)
QMUIAlphaButton btn_modify_order;
private AllOrderFragment mNormalOrderFragment, mCancelOrderFragment, mVoidOrderFragment;
//當前顯示頁下標
private int mCurrentFragmentIndex = 0;
//標題
private String[] mTabTitles = {"已付款", "已取消"};
// private String[] mTabTitles = {"堂食"};
// private String[] mTabTitles = {"堂食"};
//是否已經初始化數據,默認初始化第一個頁面
private boolean[] mPageDataInit = {true, false, false};
......@@ -106,73 +120,68 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
lp_content = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
initTabAndPager();
mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU + "",getStatusByFragmentIndex(), 0, 10, null, false);
mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU + "", getStatusByFragmentIndex(), 0, 10, null, false);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
@Subscriber(tag = "updateOrderListEvent")
private void updateOrderList(boolean update) {
@Subscriber(tag = PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT)
private void refreafshOrder(boolean refreafsh) {
refeshOrderList(getStatusByFragmentIndex());
}
public void refeshOrderList(String status) {
setPageIndex(0);
mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU + "",status, 0, 10, null, false);
mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU + "", status, 0, 10, null, false);
}
public void loadOrderList(String orderType,String status, RefreshLayout refreshLayout, boolean isLoadMore) {
public void loadOrderList(String orderType, String status, RefreshLayout refreshLayout, boolean isLoadMore) {
mPresenter.loadOrderList(orderType, status, getPageIndex(), getPageSize(), refreshLayout, isLoadMore);
}
public void cancelOrder(long orderId, String orderType,String status) {
mPresenter.cancelOrder(orderId, orderType,status);
public void cancelOrder(long orderId, String orderType, String status) {
mPresenter.cancelOrder(orderId, orderType, status);
}
@OnClick({R2.id.btn_print_order,R2.id.btn_modify_order,R2.id.btn_tips,R2.id.btn_cancel_order,R2.id.btn_refund})
public void OnClick(View v){
OrderManagerResponse orderItem = getCurrentOrderFragment().getSelectedOrderItem();
if(orderItem != null){
@OnClick({R2.id.btn_print_order, R2.id.btn_modify_order, R2.id.btn_tips, R2.id.btn_cancel_order, R2.id.btn_refund})
public void OnClick(View v) {
OrderManagerResponse orderItem = getCurrentOrderFragment().getCheckedOrderBean();
if (orderItem != null) {
int id = v.getId();
if(id == R.id.btn_print_order){
mPresenter.printOrder(this,orderItem);
}else if(id == R.id.btn_modify_order){
if (id == R.id.btn_print_order) {
mPresenter.printOrder(this, orderItem);
} else if (id == R.id.btn_modify_order) {
if (orderItem.getRestaurantTable() == null) {
showMessage("餐檯不存在,無法修改訂單");
return;
}
mPresenter.modifyOrder(this,orderItem);
}else if(id == R.id.btn_tips){
mPresenter.modifyOrder(this, orderItem);
} else if (id == R.id.btn_tips) {
mPresenter.orderTips(this, orderItem, new TipsOrder.OnRefundListener() {
@Override
public void refeshOrders() {
refeshOrderList(getStatusByFragmentIndex());
refreafshOrder(true);
}
});
}else if(id == R.id.btn_cancel_order){
} else if (id == R.id.btn_cancel_order) {
mPresenter.orderCancel(this, orderItem, new CancelOrder.OnCancelListener() {
@Override
public void cancel(long orderId) {
cancelOrder(orderId, getOrderType(),getStatusByFragmentIndex());
cancelOrder(orderId, getOrderType(), getStatusByFragmentIndex());
}
@Override
public void refeshOrders() {
refreafshOrder(true);
}
});
}else if(id == R.id.btn_refund){
} else if (id == R.id.btn_refund) {
mPresenter.orderRefund(this, orderItem, new RefundOrder.OnRefundListener() {
@Override
public void refeshOrders() {
refeshOrderList(getStatusByFragmentIndex());
refreafshOrder(true);
}
});
}
}else {
} else {
showMessage("請選中需要操作的訂單!");
}
}
......@@ -242,7 +251,7 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
pagerAdapter.createFragment(index);
if (!mPageDataInit[index]) {
//未初始化數據,獲取數據
loadOrderList(getCurrentOrderFragment().getOrderType(),getStatusByFragmentIndex(), null, false);
loadOrderList(getCurrentOrderFragment().getOrderType(), getStatusByFragmentIndex(), null, false);
}
mPageDataInit[mCurrentFragmentIndex] = true;
......@@ -363,6 +372,29 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
}
@Override
public void setOnCheckedChangedListener(OrderManagerResponse checkOrderBean) {
if (checkOrderBean != null) {
if (checkOrderBean.isCurrDeviceOrder()) {
setBtnEnabled(btn_cancel_order, true);
setBtnEnabled(btn_modify_order, true);
} else {
setBtnEnabled(btn_cancel_order, false);
setBtnEnabled(btn_modify_order, false);
}
setBtnEnabled(btn_print_order, true);
} else {
setBtnEnabled(btn_print_order, false);
setBtnEnabled(btn_cancel_order, false);
setBtnEnabled(btn_modify_order, false);
}
}
private void setBtnEnabled(Button btn, boolean enabled) {
btn.setEnabled(enabled);
btn.setClickable(enabled);
}
@Override
public AllOrderFragment getCurrentOrderFragment() {
switch (mCurrentFragmentIndex) {
case 1:
......@@ -380,12 +412,12 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
}
@Override
public String getStatusByFragmentIndex(){
public String getStatusByFragmentIndex() {
switch (mCurrentFragmentIndex) {
case 1:
return OrderStatusContract.STATUS_6+"";
return OrderStatusContract.STATUS_6 + "";
default:
return OrderStatusContract.STATUS_4+","+OrderStatusContract.STATUS_5;
return OrderStatusContract.STATUS_4 + "," + OrderStatusContract.STATUS_5;
}
}
......
......@@ -18,10 +18,12 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.constans.OrderTypeConstans;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.oaId.DeviceID;
import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
......@@ -81,6 +83,7 @@ import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import org.jetbrains.annotations.NotNull;
import org.simple.eventbus.Subscriber;
import java.util.ArrayList;
import java.util.Date;
......@@ -111,6 +114,8 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
@BindView(R2.id.rl_container)
FrameLayout rl_container;
@BindView(R2.id.tv_reload_exception_status)
TextView tv_reload_exception_status;
@BindView(R2.id.scrollview)
NestedScrollView scrollview;
......@@ -205,22 +210,22 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
btn_refund.setVisibility(View.GONE);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
@Subscriber(tag = PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT)
private void refreafshOrder(boolean refreafsh) {
refreafshOrderDetail();
}
@OnClick({R2.id.btn_print_order, R2.id.btn_cancel_order, R2.id.btn_modify_order, R2.id.btn_tips, R2.id.btn_refund})
public void onClick(View v) {
int id = v.getId();
if (id == R.id.btn_print_order) {
mPresenter.printOrder(this,mOrderDetailItem);
mPresenter.printOrder(this, mOrderDetailItem);
} else if (id == R.id.btn_modify_order) {
if (mOrderDetailItem.getRestaurantTable() == null) {
showMessage("餐檯不存在,無法修改訂單");
return;
}
mPresenter.modifyOrder(this,mOrderDetailItem);
mPresenter.modifyOrder(this, mOrderDetailItem);
} else if (id == R.id.btn_cancel_order) {
mPresenter.orderCancel(this, mOrderDetailItem, new CancelOrder.OnCancelListener() {
@Override
......@@ -230,7 +235,7 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
@Override
public void refeshOrders() {
refreafshOrderDetail();
}
});
} else if (id == R.id.btn_refund) {
......@@ -337,59 +342,21 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
private void setBtnVisible() {
if (mOrderDetailItem.getRestaurantOperationId() != null) {
//已清機
btn_modify_order.setVisibility(View.GONE);
btn_tips.setVisibility(View.GONE);
btn_cancel_order.setVisibility(View.GONE);
setWithSettlementLayoutVisible();
} else {
//未清機
boolean containCard = mPresenter.containCardPayment(mOrderDetailItem.getOrderPays());
if (containCard) {
//只有卡片支付才支持補小費
btn_tips.setVisibility(View.VISIBLE);
if (mOrderDetailItem.withHywebPay() && AppDevices.isHywebPos()) {
if (mOrderDetailItem.isCurrDeviceOrder()) {
setCurrPosDeviceLayoutVisible();
} else {
btn_tips.setVisibility(View.GONE);
setNotCurrPosDeviceLayoutVisible();
}
int status = mOrderDetailItem.getStatus();
if (status == OrderStatusContract.STATUS_6) {
tv_order_status.setVisibility(View.VISIBLE);
ll_bottom.setVisibility(View.GONE);
} else {
tv_order_status.setVisibility(View.GONE);
ll_bottom.setVisibility(View.VISIBLE);
if (AppDevices.isHywebPos() && mOrderDetailItem.withHywebPay()) {
setOrderBtnVisbilityByTxnId(mOrderDetailItem.getPayTxnId(), mOrderDetailItem.getCancelTxnId(), mOrderDetailItem.getRefundTxnId());
}
}
int orderType = mOrderDetailItem.getOrderType();
if (orderType == OrderTypeConstans.order_type_2 || orderType == OrderTypeConstans.order_type_7) {
//外賣自取 不可以修改訂單 取消訂單
btn_modify_order.setVisibility(View.GONE);
btn_cancel_order.setVisibility(View.GONE);
setNomalDeviceLayoutVisible();
}
setPublicLayoutVisible();
}
}
private void setOrderBtnVisbilityByTxnId(String payTxnId, String cancelTxnId, String refundTxnId) {
if (!TextUtils.isEmpty(cancelTxnId)) {
tv_order_status.setText("已取消");
tv_order_status.setVisibility(View.VISIBLE);
ll_bottom.setVisibility(View.GONE);
return;
}
if (!TextUtils.isEmpty(refundTxnId)) {
tv_order_status.setVisibility(View.VISIBLE);
tv_order_status.setText("已退款");
ll_bottom.setVisibility(View.GONE);
return;
}
if (!TextUtils.isEmpty(payTxnId)) {
ll_bottom.setVisibility(View.VISIBLE);
}
}
@Override
public void initIntent() {
Intent intent = getIntent();
......@@ -463,6 +430,115 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
}
@Override
public void setWithSettlementLayoutVisible() {
btn_modify_order.setVisibility(View.GONE);
btn_tips.setVisibility(View.GONE);
btn_cancel_order.setVisibility(View.GONE);
// btn_refund.setVisibility(View.VISIBLE);
}
@Override
public void setCurrPosDeviceLayoutVisible() {
//N5 POS異常重試
if (mOrderDetailItem.getMatterStatus() == OrderManagerResponse.MATTER_STATUS_EXCEPTION) {
tv_reload_exception_status.setText(mOrderDetailItem.getExceptionReloadText());
tv_reload_exception_status.setVisibility(View.VISIBLE);
tv_reload_exception_status.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PosActionStatusExceptionFragment statusExceptionFragment = findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(mOrderDetailItem.getMatterTxnId());
statusExceptionParam.setAmount(mOrderDetailItem.getTotalAmount());
statusExceptionParam.setOrderId(mOrderDetailItem.getId());
statusExceptionParam.setOrderNo(mOrderDetailItem.getOrderNo());
statusExceptionParam.setPayMethodName(mOrderDetailItem.getPayNames());
statusExceptionParam.setPosAction(mOrderDetailItem.getPosActionByMatterId());
loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
} else {
start(statusExceptionFragment);
}
}
});
rl_container.setVisibility(View.VISIBLE);
rl_container.setBackgroundResource(R.color.transparent);
ll_bottom.setVisibility(View.GONE);
} else {
tv_reload_exception_status.setText("");
tv_reload_exception_status.setVisibility(View.GONE);
tv_reload_exception_status.setOnClickListener(null);
rl_container.setVisibility(View.GONE);
rl_container.setBackgroundResource(R.color.trans);
ll_bottom.setVisibility(View.VISIBLE);
boolean containCard = mPresenter.containCardPayment(mOrderDetailItem.getOrderPays());
if (containCard) {
//當前設備訂單,且只有卡片支付才支持補小費
btn_tips.setVisibility(View.VISIBLE);
} else {
btn_tips.setVisibility(View.GONE);
}
if (!TextUtils.isEmpty(mOrderDetailItem.getCancelTxnId())) {
tv_order_status.setText("已取消");
tv_order_status.setVisibility(View.VISIBLE);
ll_bottom.setVisibility(View.GONE);
} else if (!TextUtils.isEmpty(mOrderDetailItem.getRefundTxnId())) {
tv_order_status.setVisibility(View.VISIBLE);
tv_order_status.setText("已退款");
ll_bottom.setVisibility(View.GONE);
}
}
}
@Override
public void setNotCurrPosDeviceLayoutVisible() {
btn_modify_order.setVisibility(View.GONE);
btn_tips.setVisibility(View.GONE);
btn_cancel_order.setVisibility(View.GONE);
btn_refund.setVisibility(View.GONE);
}
@Override
public void setNomalDeviceLayoutVisible() {
btn_tips.setVisibility(View.GONE);
btn_refund.setVisibility(View.GONE);
}
@Override
public void setPublicLayoutVisible() {
if (mOrderDetailItem.getStatus() == OrderStatusContract.STATUS_6) {
//訂單已取消
tv_order_status.setVisibility(View.VISIBLE);
ll_bottom.setVisibility(View.GONE);
} else {
tv_order_status.setVisibility(View.GONE);
ll_bottom.setVisibility(View.VISIBLE);
int orderType = mOrderDetailItem.getOrderType();
if (orderType == OrderTypeConstans.order_type_2 || orderType == OrderTypeConstans.order_type_7) {
//外賣自取 不可以修改訂單 取消訂單
btn_modify_order.setVisibility(View.GONE);
btn_cancel_order.setVisibility(View.GONE);
}
}
}
private void setOrderBtnVisbilityByTxnId(String cancelTxnId, String refundTxnId) {
if (!TextUtils.isEmpty(cancelTxnId)) {
tv_order_status.setText("已取消");
tv_order_status.setVisibility(View.VISIBLE);
ll_bottom.setVisibility(View.GONE);
return;
}
if (!TextUtils.isEmpty(refundTxnId)) {
tv_order_status.setVisibility(View.VISIBLE);
tv_order_status.setText("已退款");
ll_bottom.setVisibility(View.GONE);
return;
}
}
@Override
public void returnOrderDetail(OrderManagerResponse orderDetailItem) {
this.mOrderDetailItem = orderDetailItem;
mOrderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(orderDetailItem.getOrderDetails()));
......
......@@ -6,6 +6,7 @@ import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.common.constans.AppConstans;
......@@ -63,8 +64,8 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
class OrderCenterItemHolder extends BaseHolder<OrderManagerResponse> {
@BindView(R2.id.ll_root_container)
LinearLayout ll_root_container;
@BindView(R2.id.rl_root_container)
RelativeLayout rl_root_container;
@BindView(R2.id.cb_order)
MaterialCheckBox cb_order;
@BindView(R2.id.tv_table_name)
......@@ -82,44 +83,49 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
@BindView(R2.id.tv_pay_money)
TextView tv_pay_money;
@BindView(R2.id.btn_print_order)
QMUIAlphaButton btn_print_order;
@BindView(R2.id.btn_tips)
QMUIAlphaButton btn_tips;
@BindView(R2.id.btn_refund)
QMUIAlphaButton btn_refund;
@BindView(R2.id.btn_modify_order)
QMUIAlphaButton btn_modify_order;
@BindView(R2.id.btn_cancel_order)
QMUIAlphaButton btn_cancel_order;
@BindView(R2.id.btn_order_status)
QMUIAlphaButton btn_order_status;
@BindView(R2.id.ll_bottom)
LinearLayout ll_bottom;
@BindView(R2.id.ll_pos_bottom)
LinearLayout ll_pos_bottom;
public OrderCenterItemHolder(View itemView) {
super(itemView);
// @BindView(R2.id.btn_print_order)
// QMUIAlphaButton btn_print_order;
// @BindView(R2.id.btn_tips)
// QMUIAlphaButton btn_tips;
// @BindView(R2.id.btn_refund)
// QMUIAlphaButton btn_refund;
// @BindView(R2.id.btn_modify_order)
// QMUIAlphaButton btn_modify_order;
// @BindView(R2.id.btn_cancel_order)
// QMUIAlphaButton btn_cancel_order;
// @BindView(R2.id.btn_order_status)
// QMUIAlphaButton btn_order_status;
// @BindView(R2.id.ll_bottom)
// LinearLayout ll_bottom;
// @BindView(R2.id.ll_pos_bottom)
// LinearLayout ll_pos_bottom;
@BindView(R2.id.horizontal_dividing_line)
View horizontal_dividing_line;
@BindView(R2.id.tv_reload_exception_status)
TextView tv_reload_exception_status;
public OrderCenterItemHolder(View orderBeanView) {
super(orderBeanView);
}
@Override
public void setData(OrderManagerResponse item, int position) {
public void setData(OrderManagerResponse orderBean, int position) {
setOrderItemDetail(item);
setBtnListener(item, position);
setOrderItemDetail(orderBean);
setBtnListener(orderBean);
ll_root_container.setOnClickListener(new View.OnClickListener() {
rl_root_container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(item, position);
mOnItemClickListener.onItemClick(orderBean, position);
}
}
});
}
private void setOrderItemDetail(OrderManagerResponse item) {
private void setOrderItemDetail(OrderManagerResponse orderBean) {
String pax = LanguageUtils.get_language_system(mContext, "Meal.Mannumber", "人數") + ":";
String openTable = LanguageUtils.get_language_system(mContext, "open.table", "開台") + ":";
String payTable = LanguageUtils.get_language_system(mContext, "open.table", "結賬") + ":";
......@@ -127,94 +133,85 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
String orderCode = LanguageUtils.get_language_system(mContext, "order.code", "訂單碼") + ": ";
String mealCode = LanguageUtils.get_language_system(mContext, "meal.code", "取餐碼") + ": ";
tv_people_num.setText(pax + item.getPerson());
tv_open_time.setText(openTable + TimeUtils.getStringByFormat(new Date(item.getCreateTime()), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM));
if (!TextUtils.isEmpty(item.getEndTime())) {
tv_pay_time.setText(payTable + TimeUtils.getStringByFormat(new Date(item.getEndTime()), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM));
tv_people_num.setText(pax + orderBean.getPerson());
tv_open_time.setText(openTable + TimeUtils.getStringByFormat(new Date(orderBean.getCreateTime()), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM));
if (!TextUtils.isEmpty(orderBean.getEndTime())) {
tv_pay_time.setText(payTable + TimeUtils.getStringByFormat(new Date(orderBean.getEndTime()), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM));
}
tv_pay_money_text.setText(amountText);
tv_pay_money.setText(AppConstans.CARSH_STR + item.getTotalAmount());
btn_print_order.setText(LanguageUtils.get_language_system(mContext, "print.order", "打印賬單"));
btn_tips.setText(LanguageUtils.get_language_system(mContext, "public.tips", "貼士"));
btn_modify_order.setText(LanguageUtils.get_language_system(mContext, "modify.order", "修改訂單"));
btn_cancel_order.setText(LanguageUtils.get_language_system(mContext, "cancel.order", "取消訂單"));
if (item.getOrderType() == OrderTypeConstans.order_type_2) {
tv_pay_money.setText(AppConstans.CARSH_STR + orderBean.getTotalAmount());
// btn_print_order.setText(LanguageUtils.get_language_system(mContext, "print.order", "打印賬單"));
// btn_tips.setText(LanguageUtils.get_language_system(mContext, "public.tips", "貼士"));
// btn_modify_order.setText(LanguageUtils.get_language_system(mContext, "modify.order", "修改訂單"));
// btn_cancel_order.setText(LanguageUtils.get_language_system(mContext, "cancel.order", "取消訂單"));
if (orderBean.getOrderType() == OrderTypeConstans.order_type_2) {
tv_table_name.setText("外賣");
tv_order_num.setText(orderCode + item.getTakeFoodCode());
} else if (item.getOrderType() == OrderTypeConstans.order_type_7) {
tv_order_num.setText(orderCode + orderBean.getTakeFoodCode());
} else if (orderBean.getOrderType() == OrderTypeConstans.order_type_7) {
tv_table_name.setText("自取");
tv_order_num.setText(orderCode + item.getBillNo() + " " + mealCode + item.getTakeFoodCode());
tv_order_num.setText(orderCode + orderBean.getBillNo() + " " + mealCode + orderBean.getTakeFoodCode());
} else {
String tableName = LanguageUtils.get_language_system(mContext, "table.number", "檯號") + ": ";
String orderNumber = LanguageUtils.get_language_system(mContext, "order.number", "訂單號") + ": ";
tv_table_name.setText(tableName + item.getTableName());
tv_order_num.setText(orderNumber + item.getId());
tv_table_name.setText(tableName + orderBean.getTableName());
tv_order_num.setText(orderNumber + orderBean.getId());
}
//先将check回调情况,防止setChecked时反复调用onCheckedChanged方法
cb_order.setOnCheckedChangeListener(null);
if (item.getStatus() == OrderStatusContract.STATUS_6) {
if (orderBean.getStatus() == OrderStatusContract.STATUS_6) {
cb_order.setVisibility(View.GONE);
}else {
cb_order.setChecked(item.isChecked());
} else {
cb_order.setChecked(orderBean.isChecked());
}
}
private void setBtnListener(OrderManagerResponse item, int position) {
if (item.getStatus() != OrderStatusContract.STATUS_6) {
btn_print_order.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onPrintClick(item, position);
}
}
});
btn_modify_order.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onModifyClick(item, position);
}
}
});
btn_cancel_order.setOnClickListener(new View.OnClickListener() {
private void setBtnListener(OrderManagerResponse orderBean) {
if (orderBean.getStatus() != OrderStatusContract.STATUS_6) {
if (orderBean.isCurrDeviceOrder()) {
if (orderBean.getMatterStatus() == OrderManagerResponse.MATTER_STATUS_SUCCESS) {
cb_order.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onCancelClick(item, position);
}
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
for (int i = 0; i < mInfos.size(); i++) {
OrderManagerResponse orderBean = mInfos.get(i);
orderBean.setChecked(false);
}
});
btn_refund.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
orderBean.setChecked(isChecked);
notifyDataSetChanged();
if (mOnItemClickListener != null) {
mOnItemClickListener.onRefundClick(item, position);
mOnItemClickListener.onCheckedChanged(orderBean);
}
}
});
btn_tips.setOnClickListener(new View.OnClickListener() {
tv_reload_exception_status.setText("");
tv_reload_exception_status.setVisibility(View.GONE);
tv_reload_exception_status.setOnClickListener(null);
horizontal_dividing_line.setVisibility(View.VISIBLE);
rl_root_container.setBackgroundResource(R.drawable.shape_rect_radius_white_5);
} else {
cb_order.setOnCheckedChangeListener(null);
tv_reload_exception_status.setText(orderBean.getExceptionReloadText());
tv_reload_exception_status.setVisibility(View.VISIBLE);
tv_reload_exception_status.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onTipsClick(item, position);
mOnItemClickListener.onReloadExceptionStatus(orderBean, orderBean.getMatterTxnId());
}
}
});
cb_order.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
for (int i = 0; i < mInfos.size(); i++) {
OrderManagerResponse item = mInfos.get(i);
item.setChecked(false);
horizontal_dividing_line.setVisibility(View.GONE);
rl_root_container.setBackgroundResource(R.drawable.shape_rect_radius_transparent_5);
}
item.setChecked(isChecked);
notifyDataSetChanged();
} else {
//非当前POS设备不可操作
cb_order.setVisibility(View.GONE);
cb_order.setOnCheckedChangeListener(null);
}
});
}
}
}
......@@ -228,15 +225,9 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
void onItemClick(OrderManagerResponse datasBean, int position);
void onPrintClick(OrderManagerResponse datasBean, int position);
void onModifyClick(OrderManagerResponse datasBean, int position);
void onCancelClick(OrderManagerResponse datasBean, int position);
void onRefundClick(OrderManagerResponse datasBean, int position);
void onCheckedChanged(OrderManagerResponse checkedOrder);
void onTipsClick(OrderManagerResponse datasBean, int position);
void onReloadExceptionStatus(OrderManagerResponse datasBean, String txnId);
}
}
......@@ -7,8 +7,8 @@ ext {
targetSdkVersion : 29,
//正式版: 1.0.3 3
//內部測試版:1.2.0 20
versionCode : 20,
versionName : "1.2.0"
versionCode : 21,
versionName : "1.2.1"
]
version = [
......@@ -24,6 +24,13 @@ ext {
canarySdkVersion : "1.5.4",
]
buildType = [
debugLogDebug : "true",
debugUseCanary : "true",
releaseLogDebug : "true",
releaseUseCanary: "false"
]
dependencies = [
//support
"appcompat-v7" : 'androidx.appcompat:appcompat:1.0.2',//不要超過1.0.2,不然android5.1.1用webview會有問題
......@@ -127,7 +134,6 @@ ext {
"yzjRecyclerView" : "com.yanzhenjie.recyclerview:x:1.3.2",
//搜索view
"MultiSearchView" : "com.github.iammert:MultiSearchView:0.3",
// 狀態欄基础依赖包,必须要依赖
"immersionbar" : "com.gyf.immersionbar:immersionbar:3.0.0",
// fragment快速实现(可选)
......@@ -137,7 +143,9 @@ ext {
//美團點評-日誌監聽https://github.com/Meituan-Dianping/Logan/tree/master/Example/Logan-Android
"logan" : 'com.dianping.android.sdk:logan:1.2.4',
//滴滴開源 哆啦A夢:辅助开发工具、测试效率工具、视觉辅助工具
"doraemonkit" : 'com.didichuxing.doraemonkit:dokitx:3.3.3'
"doraemonkit" : 'com.didichuxing.doraemonkit:dokitx:3.3.3',
//popup
'xpopup' : 'com.lxj:xpopup:2.2.10'
]
}
package com.gingersoft.gsa.cloud.common.utils;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.RemoteException;
import android.widget.Toast;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.common.utils.view.ImageUtils;
import com.sunmi.peripheral.printer.InnerPrinterCallback;
import com.sunmi.peripheral.printer.InnerPrinterException;
import com.sunmi.peripheral.printer.InnerPrinterManager;
import com.sunmi.peripheral.printer.InnerResultCallbcak;
import com.sunmi.peripheral.printer.SunmiPrinterService;
import java.util.List;
public class AidlUtil {
private static final String SERVICE_PACKAGE = "woyou.aidlservice.jiuiv5";
private static AidlUtil mAidlUtil = new AidlUtil();
private Context context;
private SunmiPrinterService sunmiPrinterService;
private AidlUtil() {
}
public static AidlUtil getInstance() {
return mAidlUtil;
}
/**
* 连接服务
*
* @param context context
*/
public void connectPrinterService(Context context) {
this.context = context.getApplicationContext();
try {
InnerPrinterManager.getInstance().bindService(context, innerPrinterCallback);
} catch (InnerPrinterException e) {
e.printStackTrace();
}
}
/**
* 断开服务
*
* @param context context
*/
public void disconnectPrinterService(Context context) {
if (sunmiPrinterService != null) {
try {
InnerPrinterManager.getInstance().unBindService(context, innerPrinterCallback);
sunmiPrinterService = null;
} catch (InnerPrinterException e) {
e.printStackTrace();
}
}
}
public boolean isConnect() {
return sunmiPrinterService != null;
}
private InnerPrinterCallback innerPrinterCallback = new InnerPrinterCallback() {
@Override
protected void onConnected(SunmiPrinterService service) {
sunmiPrinterService = service;
//初始化打印机
AidlUtil.getInstance().initPrinter();
}
@Override
protected void onDisconnected() {
}
};
/**
* 设置打印浓度
*/
private int[] darkness = new int[]{0x0600, 0x0500, 0x0400, 0x0300, 0x0200, 0x0100, 0,
0xffff, 0xfeff, 0xfdff, 0xfcff, 0xfbff, 0xfaff};
/**
* 初始化打印机
*/
public void initPrinter() {
if (sunmiPrinterService == null) {
Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show();
return;
}
try {
sunmiPrinterService.printerInit(new com.sunmi.peripheral.printer.ICallback.Stub() {
@Override
public void onRunResult(boolean isSuccess) throws RemoteException {
LogUtil.d("printerInit", "onRunResult: " + isSuccess);
}
@Override
public void onReturnString(String result) throws RemoteException {
LogUtil.d("printerInit", "onReturnString: " + result);
}
@Override
public void onRaiseException(int code, String msg) throws RemoteException {
LogUtil.d("printerInit", "onRaiseException: " + msg);
}
@Override
public void onPrintResult(int code, String msg) throws RemoteException {
LogUtil.d("onPrintResult", "onPrintResult: " + msg);
}
});
} catch (RemoteException e) {
e.printStackTrace();
}
}
/**
* 打印二维码
*/
public void printQr(String data, int modulesize, int errorlevel) {
if (sunmiPrinterService == null) {
Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show();
return;
}
try {
sunmiPrinterService.setAlignment(1, null);
sunmiPrinterService.printQRCode(data, modulesize, errorlevel, null);
sunmiPrinterService.lineWrap(1, null);
} catch (RemoteException e) {
e.printStackTrace();
}
}
/**
* 打印条形码
*/
public void printBarCode(String data, int symbology, int height, int width, int textposition) {
if (sunmiPrinterService == null) {
Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show();
return;
}
try {
sunmiPrinterService.printBarCode(data, symbology, height, width, textposition, null);
sunmiPrinterService.lineWrap(3, null);
} catch (RemoteException e) {
e.printStackTrace();
}
}
/*
*打印图片
*/
public void printBitmap(Bitmap bitmap, InnerResultCallbcak mInnerResultCallbcak) {
// if (sunmiPrinterService == null) {
// Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show();
// return;
// }
try {
sunmiPrinterService.setAlignment(1, null);
sunmiPrinterService.printBitmap(bitmap, mInnerResultCallbcak);
sunmiPrinterService.lineWrap(3, null);
} catch (RemoteException e) {
e.printStackTrace();
}
}
/*
*打印图片
*/
public void printBitmaps(List<Bitmap> bitmaps, int paperWidth, InnerResultCallbcak mInnerResultCallbcak) {
// if (sunmiPrinterService == null) {
// Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show();
// return;
// }
try {
sunmiPrinterService.setAlignment(1, null);
for (int i = 0; i < bitmaps.size(); i++) {
sunmiPrinterService.printBitmap(ImageUtils.zoomDrawable(bitmaps.get(i), paperWidth), mInnerResultCallbcak);
sunmiPrinterService.lineWrap(3, null);
}
} catch (RemoteException e) {
e.printStackTrace();
}
}
/**
* 打印图片和文字按照指定排列顺序
*/
public void printBitmap(Bitmap bitmap, int orientation) {
if (sunmiPrinterService == null) {
Toast.makeText(context, "服務已斷開!", Toast.LENGTH_LONG).show();
return;
}
try {
if (orientation == 0) {
sunmiPrinterService.printBitmap(bitmap, null);
// sunmiPrinterService.printText("横向排列\n", null);
// sunmiPrinterService.printBitmap(bitmap, null);
// sunmiPrinterService.printText("横向排列\n", null);
} else {
sunmiPrinterService.printBitmap(bitmap, null);
// sunmiPrinterService.printText("\n纵向排列\n", null);
// sunmiPrinterService.printBitmap(bitmap, null);
// sunmiPrinterService.printText("\n纵向排列\n", null);
}
sunmiPrinterService.lineWrap(3, null);
} catch (RemoteException e) {
e.printStackTrace();
}
}
/**
* 打印表格
*/
// public void printTable(LinkedList<TableItem> list) {
// if (sunmiPrinterService == null) {
// Toast.makeText(context,LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"),Toast.LENGTH_LONG).show();
// return;
// }
//
// try {
// for (TableItem tableItem : list) {
// Log.i("kaltin", "printTable: "+tableItem.getText()[0]+tableItem.getText()[1]+tableItem.getText()[2]);
// sunmiPrinterService.printColumnsString(tableItem.getText(), tableItem.getWidth(), tableItem.getAlign(), null);
// }
// sunmiPrinterService.lineWrap(3, null);
// } catch (RemoteException e) {
// e.printStackTrace();
// }
// }
/*
* 空打三行!
*/
public void print3Line() {
if (sunmiPrinterService == null) {
Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show();
return;
}
try {
sunmiPrinterService.lineWrap(3, null);
} catch (RemoteException e) {
e.printStackTrace();
}
}
public void sendRawData(byte[] data) {
if (sunmiPrinterService == null) {
Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show();
return;
}
try {
sunmiPrinterService.sendRAWData(data, null);
} catch (RemoteException e) {
e.printStackTrace();
}
}
public void printerSelfChecking(com.sunmi.peripheral.printer.ICallback callback) {
if (sunmiPrinterService == null) {
Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show();
return;
}
try {
sunmiPrinterService.printerSelfChecking(callback);
} catch (RemoteException e) {
e.printStackTrace();
}
}
/**
* 1 ! 打印机⼯作正常
* 2 ! 打印机准备中
* 3 ! 通讯异常
* 4 ! 缺纸
* 5 ! 过热
* 6 ! 开盖
* 7 ! 切⼑异常
* 8 ! 切⼑恢复
* 9 ! 未检测到⿊标
* 505 !未检测到打印机
* 507 !打印机固件升级失败
*
* @return
*/
public int updatePrinterState() {
if (sunmiPrinterService == null) {
Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show();
return 2;
}
try {
return sunmiPrinterService.updatePrinterState();
} catch (RemoteException e) {
e.printStackTrace();
}
return 2;
}
}
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path path="" name="files_root" />
</paths>
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