Commit d8f7d32d authored by 陈前's avatar 陈前

Merge remote-tracking branch 'origin/master'

parents 1f19445b 2b26af2a
......@@ -428,6 +428,7 @@ public class C {
public final class SP_KEY {
public static final String IS_SHOW_SIGNUP_BTN = "showbtn";
public static final String SETTLE_MODE = "settle.mode";
}
public final class RETURN_CODE {
......@@ -467,6 +468,9 @@ public class C {
//共享fragment功能确定
public static final String STARTOBJECT = "startobject";
//添加无码商品
public static final String ADD_NO_BARCODE_SKU = "add.no.barcode.sku";
}
public final class EXTRA_KEY {
......
......@@ -49,7 +49,7 @@ public class SsskuActivity extends BaseActivity<SsskuPresenter, ActivitySsskuBin
@Override
public void initView() {
this.showTitleBarByTitleMode(C.TITLE_MODE.SKU_MANAGER);
this.loadRootFragment(R.id.f_sssku, mManagerFragment);
this.loadRootFragment(R.id.f_sssku, mManagerFragment, false, false);
mViewBinding.btnBack.setOnClickListener(view -> getTopFragment().onBackPressedSupport());
mViewBinding.btnScan.setOnClickListener(view -> mPresenter.clickScan(mViewBinding.getTitleMode()));
mViewBinding.btnMenu.setOnClickListener(view -> mPresenter.clickSkuMenu());
......
......@@ -29,14 +29,15 @@ public class AddFragment extends BaseFragment<SsskuPresenter, FragmentSsskuAddBi
@Override
public void initView() {
mViewBinding.etBarcode.setOnEditorActionListener((textView, i, keyEvent) -> {
if ((i == EditorInfo.IME_ACTION_SEARCH || i == EditorInfo.IME_ACTION_UNSPECIFIED) && !StringUtils.isEmpty(textView.getText())) {
if (i == EditorInfo.IME_ACTION_SEARCH && !StringUtils.isEmpty(textView.getText())) {
KeyboardUtils.hideSoftInput(textView);
mPresenter.clickCheck(mViewBinding.etBarcode.getText().toString());
mPresenter.clickCheck(textView.getText().toString());
}
return false;
});
mViewBinding.tvCheck.setOnClickListener(view -> {
KeyboardUtils.hideSoftInput(mViewBinding.etBarcode);
mPresenter.clickCheck(mViewBinding.etBarcode.getText().toString());
});
......
......@@ -144,26 +144,32 @@ public class MsPresenter<Sku extends BaseSku> extends MsContract.Presenter<Sku>
case C.MS_EDITOR_MODE.ADD:
ApiFactory.Ms.add(ms)
.doOnSubscribe(disposable -> mView.dismissLoadingDialog())
.subscribe(ms1 -> {
mView.showMsg("添加成功");
isNeedSync = true;
mView.backToManagerFragment();
mView.addMs(ms1);
}, throwable -> {
mView.showMsg("添加失败");
});
.subscribe(
ms1 -> {
mView.showMsg("添加成功");
isNeedSync = true;
mView.backToManagerFragment();
mView.addMs(ms1);
},
throwable -> {
mView.showMsg("添加失败");
}
);
break;
case C.MS_EDITOR_MODE.UPDATE:
ApiFactory.Ms.update(ms)
.doOnSubscribe(disposable -> mView.dismissLoadingDialog())
.subscribe(ms1 -> {
mView.showMsg("修改成功");
isNeedSync = true;
mView.backToManagerFragment();
mView.updateMs(ms1);
}, throwable -> {
mView.showMsg("修改失败");
});
.subscribe(
ms1 -> {
mView.showMsg("修改成功");
isNeedSync = true;
mView.backToManagerFragment();
mView.updateMs(ms1);
},
throwable -> {
mView.showMsg("修改失败");
}
);
break;
}
}
......
......@@ -5,6 +5,7 @@ import android.view.MotionEvent;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.hwangjr.rxbus.RxBus;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseActivity;
......@@ -24,7 +25,7 @@ public class PaymentActivity extends BaseActivity<PaymentPresenter, ActivityPaym
@Override
public void initView() {
loadRootFragment(R.id.f_payment, mPaymentFragment);
loadRootFragment(R.id.f_payment, mPaymentFragment, false, false);
mViewBinding.btnBack.setOnClickListener(view -> onBackPressedSupport());
}
......@@ -34,6 +35,11 @@ public class PaymentActivity extends BaseActivity<PaymentPresenter, ActivityPaym
ToastUtils.showShort(msg);
}
@Override
public void setSettleMode(int settleMode) {
mPaymentFragment.setSettleMode(settleMode);
}
@Override
public void showSettle(Long amt) {
Intent intent = new Intent(PaymentActivity.this, SettleActivity.class);
......@@ -42,6 +48,12 @@ public class PaymentActivity extends BaseActivity<PaymentPresenter, ActivityPaym
ActivityUtils.startActivity(intent);
}
@Override
public void addNoBarcodeSku(Long amt) {
RxBus.get().post(C.EVENT_TAGS.ADD_NO_BARCODE_SKU, amt);
this.finish();
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
Global.clickHideKeyboard(ev, this);
......
......@@ -15,10 +15,26 @@ interface PaymentContract {
*/
void showMsg(String msg);
/**
* 根据收款模式设置页面
*
* @param settleMode 收款模式
*/
void setSettleMode(int settleMode);
/**
* 显示结算页面
*
* @param amt 金额
*/
void showSettle(Long amt);
/**
* 添加无码商品
*
* @param amt 金额
*/
void addNoBarcodeSku(Long amt);
}
abstract class Presenter extends BasePresenter<View> {
......
package com.xingdata.zzdpos.ui.payment;
import com.xingdata.zzdpos.C;
public class PaymentPresenter extends PaymentContract.Presenter {
private int mSettleMode;
@Override
public void onAttached() {
mSettleMode = getIntent().getIntExtra(C.SP_KEY.SETTLE_MODE, C.SETTLE_MODE.PAYMENT);
mView.setSettleMode(mSettleMode);
}
@Override
......@@ -11,7 +18,14 @@ public class PaymentPresenter extends PaymentContract.Presenter {
if (amt > 99999999999L || amt <= 0) {
mView.showMsg("您填写的金额超出范围");
} else {
mView.showSettle(amt);
switch (mSettleMode) {
case C.SETTLE_MODE.PAYMENT:
mView.showSettle(amt);
break;
case C.SETTLE_MODE.STORE:
mView.addNoBarcodeSku(amt);
break;
}
}
}
}
......@@ -29,4 +29,13 @@ public class PaymentFragment extends BaseFragment<PaymentPresenter, FragmentPaym
if (result > 0) mPresenter.clickSettle(result);
});
}
/**
* 根据收款模式设置页面
*
* @param settleMode 收款模式
*/
public void setSettleMode(int settleMode) {
mCalculatorView.setSettleMode(settleMode);
}
}
......@@ -4,6 +4,7 @@ package com.xingdata.zzdpos.ui.payment.view;
import android.view.View;
import android.widget.TextView;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.base.BasePresenter;
......@@ -20,6 +21,8 @@ public class CalculatorView<P extends BasePresenter> extends BaseFragment<P, Vie
private String mValue;
private String mLast;
private int mSettleMode;
private OnResultChangeListener mOnResultChangeListener;
private onSettleClickListener mOnSettleClickListener;
......@@ -38,6 +41,10 @@ public class CalculatorView<P extends BasePresenter> extends BaseFragment<P, Vie
void onSettleClick(Long result);
}
public void setSettleMode(int settleMode) {
this.mSettleMode = settleMode;
}
@Override
public int getLayoutId() {
return R.layout.view_calculator;
......@@ -85,6 +92,14 @@ public class CalculatorView<P extends BasePresenter> extends BaseFragment<P, Vie
}
};
mViewBinding.setOnClick(mOnClickListener);
switch (mSettleMode) {
case C.SETTLE_MODE.PAYMENT:
mViewBinding.setText(getString(R.string.inputer_settle));
break;
case C.SETTLE_MODE.STORE:
mViewBinding.setText(getString(R.string.inputer_confirm));
break;
}
}
/**
......
......@@ -194,6 +194,11 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
mPayingDialog.setType(payType).setResponse(response).show(this);
}
@Override
public String getMark() {
return mSettleFragment.mViewBinding.etMark.getText().toString();
}
@Override
public void backToSettleFragment() {
......
......@@ -132,6 +132,13 @@ interface SettleContract {
*/
void showPayingDialog(int payType, com.xingdata.zzdpos.api.Pay.Response response);
/**
* 获取备注
*
* @return 备注信息
*/
String getMark();
/**
* 返回结算主页面
*/
......@@ -156,7 +163,6 @@ interface SettleContract {
* 关闭密码页面
*/
void dismissPasswordDialog();
}
abstract class Presenter extends BasePresenter<View> {
......
......@@ -2,6 +2,7 @@ package com.xingdata.zzdpos.ui.settle;
import com.alibaba.fastjson.JSON;
import com.blankj.utilcode.util.StringUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.xingdata.api.print.ZX_PrintPOS;
import com.xingdata.zzdpos.C;
......@@ -378,6 +379,9 @@ public class SettlePresenter extends SettleContract.Presenter {
private Saleorder.Param createSaleorderParam() {
Saleorder.Param saleorderParam = mSaleorder.setVip(mVip).param();
for (int i = 0; i < mSaledetails.size(); i++) {
if (mSettleMode == C.SETTLE_MODE.PAYMENT && !StringUtils.isEmpty(mView.getMark())) {
mSaledetails.get(0).setSpuName(mView.getMark());
}
saleorderParam.saleOrderParamDetailList.add(mSaledetails.get(i).param());
}
return saleorderParam;
......
......@@ -34,6 +34,8 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
private SaledetailAdapter mSaledetailAdapter;
private DisAdapter mDisAdapter;
private Vip mVip;
@Override
public int getLayoutId() {
return R.layout.fragment_settle;
......@@ -41,6 +43,8 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
@Override
public void initView() {
mVip = Vip.createDefault();
mPays = new ArrayList<>();
mViewBinding.setDefualtVip(true);
......@@ -95,12 +99,14 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
switch (settleMode) {
case C.SETTLE_MODE.PAYMENT:
mViewBinding.llStore.setVisibility(View.GONE);
mViewBinding.clMark.setVisibility(View.VISIBLE);
mPresenter.initPaymentInfo();
BottomSheetBehavior.from(mViewBinding.llSheet).setState(BottomSheetBehavior.STATE_EXPANDED);
mViewBinding.tvSettle.setAlpha(0);
break;
case C.SETTLE_MODE.STORE:
mViewBinding.llStore.setVisibility(View.VISIBLE);
mViewBinding.clMark.setVisibility(View.GONE);
this.initStoreView();
break;
}
......@@ -147,8 +153,6 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
* @param vip 会员信息
*/
public void loadVip(Vip vip) {
mPayAdapter.setNewData(getAvlPays(vip));
mViewBinding.setDefualtVip(vip.isDefaultVip());
mViewBinding.setName(vip.getVipName());
mViewBinding.setPhone(vip.getVipMobile());
......@@ -169,6 +173,7 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
mViewBinding.ivLevel.setImageResource(R.mipmap.mk_grade03);
break;
}
this.mVip = vip;
}
......@@ -201,6 +206,8 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
mViewBinding.tvVipOffAmt.setText(ConvertUtil.fenToYuan(saleorder.getOrderVipOffAmt(), true));
mViewBinding.tvOrderCnt.setText(String.valueOf(saleorder.getOrderCnt()));
}
mPayAdapter.setNewData(getAvlPays(mVip));
}
......@@ -225,7 +232,13 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
}
List<Pay> getAvlPays(Vip vip) {
/**
* 获取可用支付方式
*
* @param vip 会员信息
* @return 支付方式
*/
private List<Pay> getAvlPays(Vip vip) {
List<Pay> _pays = new ArrayList<>();
for (int i = 0; i < mPays.size(); i++) {
if (!mPays.get(i).isNeedVip() || (!vip.isDefaultVip() && (mPays.get(i).getPayType() != C.PAY_CHANNEL.CARD || vip.getAcctCbal() >= mViewBinding.getOrderPayAmt())))
......
......@@ -12,6 +12,9 @@ import com.blankj.utilcode.constant.PermissionConstants;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.PermissionUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.hwangjr.rxbus.annotation.Subscribe;
import com.hwangjr.rxbus.annotation.Tag;
import com.hwangjr.rxbus.thread.EventThread;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseActivity;
......@@ -22,6 +25,7 @@ import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.model.Saleorder;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.ui.payment.PaymentActivity;
import com.xingdata.zzdpos.ui.scan.ScanFragment;
import com.xingdata.zzdpos.ui.settle.SettleActivity;
import com.xingdata.zzdpos.ui.store.dialog.CartDialog;
......@@ -57,8 +61,7 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
mViewBinding.vSearch.setOnSearchListener(keyword -> mPresenter.searchSku(keyword));
mViewBinding.btnScan.setOnClickListener(view -> PermissionUtils.permission(PermissionConstants.CAMERA)
.callback(new PermissionUtils.FullCallback() {
mViewBinding.btnScan.setOnClickListener(view -> PermissionUtils.permission(PermissionConstants.CAMERA).callback(new PermissionUtils.FullCallback() {
@Override
public void onGranted(List<String> permissionsGranted) {
mPresenter.clickScan();
......@@ -67,9 +70,15 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
@Override
public void onDenied(List<String> permissionsDeniedForever, List<String> permissionsDenied) {
}
})
.request()
}).request()
);
mViewBinding.btnPayment.setOnClickListener(view -> {
Intent intent = new Intent(StoreActivity.this, PaymentActivity.class);
intent.putExtra(C.SP_KEY.SETTLE_MODE, C.SETTLE_MODE.STORE);
ActivityUtils.startActivity(intent);
});
mScanFragment.setOnScanCompletedListener(barcode -> mPresenter.scanComplete(barcode));
}
......@@ -227,4 +236,14 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
return super.dispatchTouchEvent(ev);
}
@Subscribe(
thread = EventThread.MAIN_THREAD,
tags = {@Tag(C.EVENT_TAGS.ADD_NO_BARCODE_SKU)}
)
public void addNoBarcodeSku(Long amt) {
mPresenter.addNoBarcodeSku(amt);
}
}
......@@ -140,6 +140,7 @@ public class StorePresenter extends StoreContract.Presenter {
mView.showMsDialog(mMss);
}
@Override
public <Sku extends BaseSku> void clickAddSku(Sku sku, int value) {
//更新购物车信息
......@@ -160,7 +161,6 @@ public class StorePresenter extends StoreContract.Presenter {
this.cartChanged();
}
@Override
public void cartChanged() {
//设置订单信息
......@@ -343,13 +343,11 @@ public class StorePresenter extends StoreContract.Presenter {
*/
private void getProductByBarcode(String barcode) {
mView.showLoadingDialog();
List<Sssku> ssskus = DBFactory.getList(DB.getInstance().get(MainPresenter.class).where
(Sssku.class)
List<Sssku> ssskus = DBFactory.getList(DB.getInstance().get(MainPresenter.class).where(Sssku.class)
.equalTo("spuBarcode", StringUtil.strToLong(barcode))
.equalTo("skuStatus", 0)
.findAll());
List<Ussku> usskus = DBFactory.getList(DB.getInstance().get(MainPresenter.class).where
(Ussku.class)
List<Ussku> usskus = DBFactory.getList(DB.getInstance().get(MainPresenter.class).where(Ussku.class)
.equalTo("spuBarcode", StringUtil.strToLong(barcode))
.equalTo("skuStatus", 0)
.findAll());
......@@ -366,4 +364,17 @@ public class StorePresenter extends StoreContract.Presenter {
mView.dismissLoadingDialog();
}
/**
* 添加无码商品
*
* @param amt 无码商品价格
*/
void addNoBarcodeSku(Long amt) {
mSaledetails.add(0, Saledetail.create("无码商品", amt, mVip));
//发送购物车信息
mView.loadSaledetails(mSaledetails, true);
//购物车发生变化
this.cartChanged();
}
}
......@@ -83,7 +83,7 @@ public class SearchBar extends ConstraintLayout {
mViewBinding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.view_search_bar, this, true);
mViewBinding.etSearch.setOnEditorActionListener((textView, i, keyEvent) -> {
if (i == EditorInfo.IME_ACTION_SEARCH||i==EditorInfo.IME_ACTION_UNSPECIFIED) {
if (i == EditorInfo.IME_ACTION_SEARCH) {
String str = mViewBinding.etSearch.getText().toString();
if (StringUtils.isEmpty(str) && !isEmptyEnabled) {
ToastUtils.showShort("请输入搜索内容");
......
......@@ -79,17 +79,27 @@
app:layout_constraintRight_toLeftOf="parent" />
<ImageButton
android:id="@+id/btn_scan"
android:layout_width="wrap_content"
android:id="@+id/btn_payment"
android:layout_width="?attr/actionBarSize"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/all_spacing"
android:background="@color/transparent"
android:contentDescription="@string/store_scan"
android:foreground="?android:attr/actionBarItemBackground"
android:src="@mipmap/but_collection"
android:visibility="@{titleMode>1?View.GONE:View.VISIBLE}"
app:layout_constraintBottom_toTopOf="parent"
app:layout_constraintRight_toLeftOf="@id/btn_scan"
app:layout_constraintTop_toBottomOf="parent" />
<ImageButton
android:id="@+id/btn_scan"
android:layout_width="?attr/actionBarSize"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/all_spacing"
android:background="@color/transparent"
android:contentDescription="@string/store_scan"
android:foreground="?android:attr/actionBarItemBackground"
android:paddingEnd="@dimen/all_padding"
android:paddingStart="@dimen/all_bounced_padding"
android:src="@mipmap/but_sweep_yard"
android:visibility="@{titleMode>1?View.GONE:View.VISIBLE}"
app:layout_constraintBottom_toTopOf="parent"
......
......@@ -173,7 +173,6 @@
android:layout_height="@dimen/all_line_width"
android:background="@color/gray_huanggai" />
<LinearLayout
android:id="@+id/ll_store"
android:layout_width="match_parent"
......@@ -370,12 +369,10 @@
android:background="@color/gray_huanggai" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_vip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/all_margin"
android:layout_marginTop="@dimen/all_margin"
android:background="@color/white_caocao"
android:orientation="vertical"
......@@ -507,6 +504,57 @@
</LinearLayout>
<android.support.constraint.ConstraintLayout
android:id="@+id/cl_mark"
android:layout_width="match_parent"
android:layout_height="@dimen/title_height"
android:layout_marginTop="@dimen/all_margin"
android:background="@color/white_caocao"
android:orientation="vertical"
android:visibility="gone">
<View
android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width"
android:background="@color/gray_huanggai"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_mark_hint"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginStart="@dimen/all_margin"
android:gravity="center_vertical"
android:text="@string/no_barcode_remark"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/et_mark"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/et_mark"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="@dimen/all_margin"
android:background="@color/transparent"
android:gravity="end|center_vertical"
android:hint="@string/no_barcode_remark_hint"
android:textColor="@color/black_baozheng"
android:textColorHint="@color/black_likui"
android:textSize="@dimen/all_body_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/tv_mark_hint"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width"
android:background="@color/gray_huanggai"
app:layout_constraintBottom_toBottomOf="parent" />
</android.support.constraint.ConstraintLayout>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
......
......@@ -6,6 +6,11 @@
<variable
name="onClick"
type="android.view.View.OnClickListener" />
<variable
name="text"
type="String" />
</data>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
......@@ -277,7 +282,7 @@
android:foreground="?android:attr/selectableItemBackground"
android:gravity="center"
android:onClickListener="@{onClick}"
android:text="@string/inputer_settle"
android:text="@{text}"
android:textColor="@color/white_caocao"
android:textSize="@dimen/all_sub_title_size"
app:layout_constraintBottom_toBottomOf="@id/tv_0"
......
......@@ -103,7 +103,7 @@
<string name="no_barcode_title">无码商品</string>
<string name="no_barcode_amt">金额:</string>
<string name="no_barcode_amt_hint">请输入金额</string>
<string name="no_barcode_remark">备注:</string>
<string name="no_barcode_remark">备注</string>
<string name="no_barcode_remark_hint">请输入备注内容</string>
<!--会员页面-->
......@@ -539,6 +539,7 @@
<string name="inputer_del">退格</string>
<string name="inputer_clear">清空</string>
<string name="inputer_settle">收\n款</string>
<string name="inputer_confirm">确\n认</string>
<string name="inputer_add">+</string>
<string name="inputer_sub">-</string>
<string name="inputer_mul">×</string>
......@@ -741,6 +742,4 @@
<string name="search_clear">清空</string>
</resources>
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