Commit 525c4def by 宁斌

折扣增加:上限,獨佔,暫停,只一次,最小賬單金額邏輯

parent aa04da1b
...@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.ui.widget.dialog; ...@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.ui.widget.dialog;
import android.app.Activity; import android.app.Activity;
import android.text.InputType; import android.text.InputType;
import android.text.TextUtils; import android.text.TextUtils;
import android.widget.EditText;
import com.gingersoft.gsa.cloud.base.R; import com.gingersoft.gsa.cloud.base.R;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog; import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
...@@ -59,6 +60,20 @@ public class CommonTipDialog { ...@@ -59,6 +60,20 @@ public class CommonTipDialog {
dialogBuilder.create(R.style.MyDialogTheme2).show(); dialogBuilder.create(R.style.MyDialogTheme2).show();
} }
public static void showDoubtDialog2(Activity context, String msg, OnCallbackListener listener) {
QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(context);
dialogBuilder.setTitleIcon(R.drawable.qmui_icon_dialog_doubt);
dialogBuilder.setMessage(msg);
dialogBuilder.addAction(R.drawable.shape_red_five_radius_bg, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
dialog.dismiss();
if (listener != null) {
listener.onSure();
}
});
dialogBuilder.addAction(R.drawable.shape_3c_cancel_btn_bg, "取消", (dialog, index) -> dialog.dismiss());
dialogBuilder.create(R.style.MyDialogTheme2).show();
}
/** /**
* 危險警示dialog 確認后執行對應方法 * 危險警示dialog 確認后執行對應方法
* *
...@@ -190,7 +205,7 @@ public class CommonTipDialog { ...@@ -190,7 +205,7 @@ public class CommonTipDialog {
* @param title * @param title
* @param placeholder * @param placeholder
*/ */
public static void showEditDialog(Activity context, String title, String placeholder,int inputType, OnEditTextListener onEditTextListener) { public static EditText showEditDialog(Activity context, String title, String placeholder, int inputType, OnEditTextListener onEditTextListener) {
final QMUIDialog.EditTextDialogBuilder dialogBuilder = new QMUIDialog.EditTextDialogBuilder(context); final QMUIDialog.EditTextDialogBuilder dialogBuilder = new QMUIDialog.EditTextDialogBuilder(context);
dialogBuilder.setTitle(title); dialogBuilder.setTitle(title);
dialogBuilder.setPlaceholder(placeholder); dialogBuilder.setPlaceholder(placeholder);
...@@ -204,15 +219,25 @@ public class CommonTipDialog { ...@@ -204,15 +219,25 @@ public class CommonTipDialog {
}); });
dialogBuilder.addAction("取消", (dialog, index) -> dialog.dismiss()); dialogBuilder.addAction("取消", (dialog, index) -> dialog.dismiss());
dialogBuilder.create(R.style.MyEditDialogTheme).show(); dialogBuilder.create(R.style.MyEditDialogTheme).show();
return dialogBuilder.getEditText();
} }
private OnEditTextListener onEditTextListener; private OnEditTextListener onEditTextListener;
private OnCallbackListener onCallbackListener;
public void setOnEditTextListener(OnEditTextListener onEditTextListener) { public void setOnEditTextListener(OnEditTextListener onEditTextListener) {
this.onEditTextListener = onEditTextListener; this.onEditTextListener = onEditTextListener;
} }
public void setOnCallbackListener(OnCallbackListener onCallbackListener) {
this.onCallbackListener = onCallbackListener;
}
public interface OnEditTextListener { public interface OnEditTextListener {
void inputText(String text); void inputText(String text);
} }
public interface OnCallbackListener {
void onSure();
}
} }
package com.gingersoft.gsa.cloud.ui.widget.keyboard;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.R;
import java.util.ArrayList;
import java.util.Map;
/**
* 九宫格键盘适配器
*/
public class KeyBoardAdapter extends BaseAdapter {
private Context mContext;
private ArrayList<Map<String, String>> valueList;
public KeyBoardAdapter(Context mContext, ArrayList<Map<String, String>> valueList) {
this.mContext = mContext;
this.valueList = valueList;
}
@Override
public int getCount() {
return valueList.size();
}
@Override
public Object getItem(int position) {
return valueList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = View.inflate(mContext, R.layout.item_grid_virtual_keyboard, null);
viewHolder = new ViewHolder();
viewHolder.btnKey = (TextView) convertView.findViewById(R.id.btn_keys);
viewHolder.imgDelete = (RelativeLayout) convertView.findViewById(R.id.imgDelete);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
if (position == 9) {
viewHolder.imgDelete.setVisibility(View.INVISIBLE);
viewHolder.btnKey.setVisibility(View.VISIBLE);
viewHolder.btnKey.setText(valueList.get(position).get("name"));
viewHolder.btnKey.setBackgroundColor(Color.parseColor("#e0e0e0"));
} else if (position == 11) {
viewHolder.btnKey.setBackgroundResource(R.mipmap.keyboard_delete_img);
viewHolder.imgDelete.setVisibility(View.VISIBLE);
viewHolder.btnKey.setVisibility(View.INVISIBLE);
} else {
viewHolder.imgDelete.setVisibility(View.INVISIBLE);
viewHolder.btnKey.setVisibility(View.VISIBLE);
viewHolder.btnKey.setText(valueList.get(position).get("name"));
}
return convertView;
}
/**
* 存放控件
*/
public final class ViewHolder {
public TextView btnKey;
public RelativeLayout imgDelete;
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.ui.widget.keyboard;
/**
* 自定义接口,用于给密码输入完成添加回掉事件
*/
public interface OnPasswordInputFinish {
void inputFinish(String password);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.ui.widget.keyboard;
import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* 弹框里面的View
*/
public class PasswordView extends RelativeLayout {
Context mContext;
private VirtualKeyboardView virtualKeyboardView;
private TextView[] tvList; //用数组保存6个TextView,为什么用数组?
private ImageView[] imgList; //用数组保存6个TextView,为什么用数组?
private GridView gridView;
private ImageView imgCancel;
private ArrayList<Map<String, String>> valueList;
private int currentIndex = -1; //用于记录当前输入密码格位置
public PasswordView(Context context) {
this(context, null);
}
public PasswordView(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
View view = View.inflate(context, R.layout.layout_popup_bottom, null);
virtualKeyboardView = (VirtualKeyboardView) view.findViewById(R.id.virtualKeyboardView);
imgCancel = (ImageView) view.findViewById(R.id.img_cancel);
gridView = virtualKeyboardView.getGridView();
initValueList();
initView(view);
setupView();
addView(view);
}
private void initView(View view) {
tvList = new TextView[6];
imgList = new ImageView[6];
tvList[0] = (TextView) view.findViewById(R.id.tv_pass1);
tvList[1] = (TextView) view.findViewById(R.id.tv_pass2);
tvList[2] = (TextView) view.findViewById(R.id.tv_pass3);
tvList[3] = (TextView) view.findViewById(R.id.tv_pass4);
tvList[4] = (TextView) view.findViewById(R.id.tv_pass5);
tvList[5] = (TextView) view.findViewById(R.id.tv_pass6);
imgList[0] = (ImageView) view.findViewById(R.id.img_pass1);
imgList[1] = (ImageView) view.findViewById(R.id.img_pass2);
imgList[2] = (ImageView) view.findViewById(R.id.img_pass3);
imgList[3] = (ImageView) view.findViewById(R.id.img_pass4);
imgList[4] = (ImageView) view.findViewById(R.id.img_pass5);
imgList[5] = (ImageView) view.findViewById(R.id.img_pass6);
}
// 这里,我们没有使用默认的数字键盘,因为第10个数字不显示.而是空白
private void initValueList() {
valueList = new ArrayList<>();
// 初始化按钮上应该显示的数字
for (int i = 1; i < 13; i++) {
Map<String, String> map = new HashMap<String, String>();
if (i < 10) {
map.put("name", String.valueOf(i));
} else if (i == 10) {
map.put("name", "");
} else if (i == 11) {
map.put("name", String.valueOf(0));
} else if (i == 12) {
map.put("name", "");
}
valueList.add(map);
}
}
private void setupView() {
// 这里、重新为数字键盘gridView设置了Adapter
KeyBoardAdapter keyBoardAdapter = new KeyBoardAdapter(mContext, valueList);
gridView.setAdapter(keyBoardAdapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position < 11 && position != 9) { //点击0~9按钮
if (currentIndex >= -1 && currentIndex < 5) { //判断输入位置————要小心数组越界
;
++currentIndex;
tvList[currentIndex].setText(valueList.get(position).get("name"));
tvList[currentIndex].setVisibility(View.INVISIBLE);
imgList[currentIndex].setVisibility(View.VISIBLE);
}
} else {
if (position == 11) { //点击退格键
if (currentIndex - 1 >= -1) { //判断是否删除完毕————要小心数组越界
tvList[currentIndex].setText("");
tvList[currentIndex].setVisibility(View.VISIBLE);
imgList[currentIndex].setVisibility(View.INVISIBLE);
currentIndex--;
}
}
}
}
});
}
//设置监听方法,在第6位输入完成后触发
public void setOnFinishInput(final OnPasswordInputFinish pass) {
tvList[5].addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.toString().length() == 1) {
String strPassword = ""; //每次触发都要先将strPassword置空,再重新获取,避免由于输入删除再输入造成混乱
for (int i = 0; i < 6; i++) {
strPassword += tvList[i].getText().toString().trim();
}
pass.inputFinish(strPassword); //接口中要实现的方法,完成密码输入完成后的响应逻辑
}
}
});
}
public VirtualKeyboardView getVirtualKeyboardView() {
return virtualKeyboardView;
}
public ImageView getImgCancel() {
return imgCancel;
}
}
package com.gingersoft.gsa.cloud.ui.widget.keyboard;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.PopupWindow;
import android.widget.Toast;
import com.gingersoft.gsa.cloud.base.R;
/**
* 输入支付密码
*
* @author lining
*/
public class PopEnterPassword extends PopupWindow {
private PasswordView pwdView;
private View mMenuView;
private Activity mContext;
public PopEnterPassword(final Activity context) {
super(context);
this.mContext = context;
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mMenuView = inflater.inflate(R.layout.pop_enter_password, null);
pwdView = (PasswordView) mMenuView.findViewById(R.id.pwd_view);
//添加密码输入完成的响应
pwdView.setOnFinishInput(new OnPasswordInputFinish() {
@Override
public void inputFinish(final String password) {
new Thread(new Runnable() {
@Override
public void run() {
// 模拟耗时的操作。
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
mContext.runOnUiThread(new Runnable() {
@Override
public void run() {
dismiss();
Toast.makeText(mContext, "支付成功,密码为:" + password, Toast.LENGTH_SHORT).show();
}
});
}
}).start();
}
});
// 监听X关闭按钮
pwdView.getImgCancel().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
// 监听键盘上方的返回
pwdView.getVirtualKeyboardView().getLayoutBack().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
// 设置SelectPicPopupWindow的View
this.setContentView(mMenuView);
// 设置SelectPicPopupWindow弹出窗体的宽
this.setWidth(LayoutParams.MATCH_PARENT);
// 设置SelectPicPopupWindow弹出窗体的高
this.setHeight(LayoutParams.WRAP_CONTENT);
// 设置SelectPicPopupWindow弹出窗体可点击
this.setFocusable(true);
// 设置SelectPicPopupWindow弹出窗体动画效果
this.setAnimationStyle(R.style.pop_add_ainm);
// 实例化一个ColorDrawable颜色为半透明
ColorDrawable dw = new ColorDrawable(0x66000000);
// 设置SelectPicPopupWindow弹出窗体的背景
this.setBackgroundDrawable(dw);
}
}
package com.gingersoft.gsa.cloud.ui.widget.keyboard;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.GridView;
import android.widget.RelativeLayout;
import com.gingersoft.gsa.cloud.base.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* @author : bin
* @create date: 2020-10-28
* @update date: 2020-10-28
* @description:
*/
public class VirtualKeyboardView extends RelativeLayout implements View.OnClickListener {
private Context context;
private GridView gridView;
private RelativeLayout layoutBack;
private ArrayList<Map<String, String>> valueList;
public VirtualKeyboardView(Context context) {
this(context, null);
}
public VirtualKeyboardView(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
View view = View.inflate(context, R.layout.layout_virtual_keyboard, null);
valueList = new ArrayList<>();
layoutBack = (RelativeLayout) view.findViewById(R.id.layoutBack);
layoutBack.setOnClickListener(this);
gridView = (GridView) view.findViewById(R.id.gv_keybord);
setView();
addView(view);
}
public RelativeLayout getLayoutBack() {
return layoutBack;
}
public ArrayList<Map<String, String>> getValueList() {
return valueList;
}
public GridView getGridView() {
return gridView;
}
private void setView() {
/* 初始化按钮上应该显示的数字 */
for (int i = 1; i < 13; i++) {
Map<String, String> map = new HashMap<String, String>();
if (i < 10) {
map.put("name", String.valueOf(i));
} else if (i == 10) {
map.put("name", ".");
} else if (i == 11) {
map.put("name", String.valueOf(0));
} else if (i == 12) {
map.put("name", "");
}
valueList.add(map);
}
KeyBoardAdapter keyBoardAdapter = new KeyBoardAdapter(context, valueList);
gridView.setAdapter(keyBoardAdapter);
}
@Override
public void onClick(View v) {
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="0dp" />
<stroke
android:width="0.66dp"
android:color="#bfbfbf" />
<solid android:color="@android:color/white" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- 上下滑入式 -->
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromYDelta="100%p"
android:toYDelta="0" />
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="300" />
</set>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- 上下滑入式 -->
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromYDelta="0"
android:toYDelta="50%p" />
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="300"
/>
</set>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false">
<shape>
<solid android:color="#C0C4C7" />
</shape>
</item>
<item android:state_enabled="true" android:state_pressed="false">
<shape>
<solid android:color="#F5F5F5" />
</shape>
</item>
<item android:state_enabled="true" android:state_pressed="true">
<shape>
<solid android:color="#C0C4C7" />
</shape>
</item>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:useLevel="false">
<solid android:color="#000000" />
<size
android:width="20dp"
android:height="20dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="0dp" />
<stroke
android:width="0.66dp"
android:color="#bfbfbf" />
<solid android:color="@android:color/white" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e0e0e0">
<TextView
android:id="@+id/btn_keys"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:layout_centerInParent="true"
android:background="@drawable/ui_selector_item_background"
android:gravity="center"
android:includeFontPadding="false"
android:textColor="#333333"
android:textSize="@dimen/sp_26" />
<RelativeLayout
android:id="@+id/imgDelete"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_60"
android:layout_centerInParent="true">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@mipmap/keyboard_delete_img" />
</RelativeLayout>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- 输入键盘 -->
<GridView
android:id="@+id/gv_keybord"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#bdbdbd"
android:horizontalSpacing="1px"
android:numColumns="3"
android:verticalSpacing="1px" />
<View
android:id="@+id/line"
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_above="@id/gv_keybord"
android:background="#bdbdbd" />
<RelativeLayout
android:id="@+id/layoutBack"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/line"
android:background="#f5f5f5"
android:padding="@dimen/dp_10">
<ImageView
android:id="@+id/imgBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@mipmap/keyboard_back_img" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_above="@id/layoutBack"
android:layout_marginTop="@dimen/dp_1"
android:background="#bdbdbd" />
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical">
<com.gingersoft.gsa.cloud.ui.widget.keyboard.PasswordView
android:id="@+id/pwd_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
</RelativeLayout>
</FrameLayout>
\ No newline at end of file
...@@ -89,6 +89,11 @@ ...@@ -89,6 +89,11 @@
<item name="android:textSize">16sp</item> <item name="android:textSize">16sp</item>
</style> </style>
<style name="pop_add_ainm" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/push_bottom_in</item>
<item name="android:windowExitAnimation">@anim/push_bottom_out</item>
</style>
<!-- **************************QMUI 相关*******************************--> <!-- **************************QMUI 相关*******************************-->
<style name="QDtextAppearanceListItem"> <style name="QDtextAppearanceListItem">
......
...@@ -129,16 +129,15 @@ public class Discount { ...@@ -129,16 +129,15 @@ public class Discount {
@Transient @Transient
private long memberId = -1; private long memberId = -1;
@Generated(hash = 1938515536)
@Generated(hash = 637151409)
public Discount(Long id, int restaurantId, double amount, int discountValue, public Discount(Long id, int restaurantId, double amount, int discountValue,
int type, String discountType, int status, String remark, int type, String discountType, int status, String remark,
byte freeServiceCharge, byte managerApproval, String color, byte freeServiceCharge, byte managerApproval, String color,
String placeOrderType, double discountCap, double salesAmount, String placeOrderType, double discountCap, double salesAmount,
byte taxFree, byte exclusive, byte pause, byte additionalDiscount, byte taxFree, byte exclusive, byte pause, byte additionalDiscount,
byte onlyOnce, double minBillAmount, byte pointsDeduction, byte onlyOnce, double minBillAmount, byte pointsDeduction,
byte wholeFreePoints, byte amountTypeMin, String beginTime, byte wholeFreePoints, byte amountTypeMin, String beginTime,
String endTime) { String endTime) {
this.id = id; this.id = id;
this.restaurantId = restaurantId; this.restaurantId = restaurantId;
this.amount = amount; this.amount = amount;
...@@ -170,7 +169,6 @@ public class Discount { ...@@ -170,7 +169,6 @@ public class Discount {
public Discount() { public Discount() {
} }
public Long getId() { public Long getId() {
return this.id; return this.id;
} }
...@@ -235,19 +233,19 @@ public class Discount { ...@@ -235,19 +233,19 @@ public class Discount {
this.remark = remark; this.remark = remark;
} }
public Byte getFreeServiceCharge() { public byte getFreeServiceCharge() {
return this.freeServiceCharge; return this.freeServiceCharge;
} }
public void setFreeServiceCharge(Byte freeServiceCharge) { public void setFreeServiceCharge(byte freeServiceCharge) {
this.freeServiceCharge = freeServiceCharge; this.freeServiceCharge = freeServiceCharge;
} }
public Byte getManagerApproval() { public byte getManagerApproval() {
return this.managerApproval; return this.managerApproval;
} }
public void setManagerApproval(Byte managerApproval) { public void setManagerApproval(byte managerApproval) {
this.managerApproval = managerApproval; this.managerApproval = managerApproval;
} }
...@@ -275,83 +273,83 @@ public class Discount { ...@@ -275,83 +273,83 @@ public class Discount {
this.discountCap = discountCap; this.discountCap = discountCap;
} }
public Double getSalesAmount() { public double getSalesAmount() {
return this.salesAmount; return this.salesAmount;
} }
public void setSalesAmount(Double salesAmount) { public void setSalesAmount(double salesAmount) {
this.salesAmount = salesAmount; this.salesAmount = salesAmount;
} }
public Byte getTaxFree() { public byte getTaxFree() {
return this.taxFree; return this.taxFree;
} }
public void setTaxFree(Byte taxFree) { public void setTaxFree(byte taxFree) {
this.taxFree = taxFree; this.taxFree = taxFree;
} }
public Byte getExclusive() { public byte getExclusive() {
return this.exclusive; return this.exclusive;
} }
public void setExclusive(Byte exclusive) { public void setExclusive(byte exclusive) {
this.exclusive = exclusive; this.exclusive = exclusive;
} }
public Byte getPause() { public boolean isPause() {
return this.pause; return pause == 1;
} }
public void setPause(Byte pause) { public void setPause(byte pause) {
this.pause = pause; this.pause = pause;
} }
public Byte getAdditionalDiscount() { public byte getAdditionalDiscount() {
return this.additionalDiscount; return this.additionalDiscount;
} }
public void setAdditionalDiscount(Byte additionalDiscount) { public void setAdditionalDiscount(byte additionalDiscount) {
this.additionalDiscount = additionalDiscount; this.additionalDiscount = additionalDiscount;
} }
public Byte getOnlyOnce() { public byte getOnlyOnce() {
return this.onlyOnce; return this.onlyOnce;
} }
public void setOnlyOnce(Byte onlyOnce) { public void setOnlyOnce(byte onlyOnce) {
this.onlyOnce = onlyOnce; this.onlyOnce = onlyOnce;
} }
public Double getMinBillAmount() { public double getMinBillAmount() {
return this.minBillAmount; return this.minBillAmount;
} }
public void setMinBillAmount(Double minBillAmount) { public void setMinBillAmount(double minBillAmount) {
this.minBillAmount = minBillAmount; this.minBillAmount = minBillAmount;
} }
public Byte getPointsDeduction() { public byte getPointsDeduction() {
return this.pointsDeduction; return this.pointsDeduction;
} }
public void setPointsDeduction(Byte pointsDeduction) { public void setPointsDeduction(byte pointsDeduction) {
this.pointsDeduction = pointsDeduction; this.pointsDeduction = pointsDeduction;
} }
public Byte getWholeFreePoints() { public byte getWholeFreePoints() {
return this.wholeFreePoints; return this.wholeFreePoints;
} }
public void setWholeFreePoints(Byte wholeFreePoints) { public void setWholeFreePoints(byte wholeFreePoints) {
this.wholeFreePoints = wholeFreePoints; this.wholeFreePoints = wholeFreePoints;
} }
public Byte getAmountTypeMin() { public byte getAmountTypeMin() {
return this.amountTypeMin; return this.amountTypeMin;
} }
public void setAmountTypeMin(Byte amountTypeMin) { public void setAmountTypeMin(byte amountTypeMin) {
this.amountTypeMin = amountTypeMin; this.amountTypeMin = amountTypeMin;
} }
...@@ -371,57 +369,11 @@ public class Discount { ...@@ -371,57 +369,11 @@ public class Discount {
this.endTime = endTime; this.endTime = endTime;
} }
public void setFreeServiceCharge(byte freeServiceCharge) { public byte getPause() {
this.freeServiceCharge = freeServiceCharge; return this.pause;
}
public void setManagerApproval(byte managerApproval) {
this.managerApproval = managerApproval;
}
public void setDiscountCap(long discountCap) {
this.discountCap = discountCap;
}
public void setSalesAmount(double salesAmount) {
this.salesAmount = salesAmount;
}
public void setTaxFree(byte taxFree) {
this.taxFree = taxFree;
}
public void setExclusive(byte exclusive) {
this.exclusive = exclusive;
}
public void setPause(byte pause) {
this.pause = pause;
}
public void setAdditionalDiscount(byte additionalDiscount) {
this.additionalDiscount = additionalDiscount;
}
public void setOnlyOnce(byte onlyOnce) {
this.onlyOnce = onlyOnce;
}
public void setMinBillAmount(double minBillAmount) {
this.minBillAmount = minBillAmount;
}
public void setPointsDeduction(byte pointsDeduction) {
this.pointsDeduction = pointsDeduction;
} }
public void setWholeFreePoints(byte wholeFreePoints) {
this.wholeFreePoints = wholeFreePoints;
}
public void setAmountTypeMin(byte amountTypeMin) {
this.amountTypeMin = amountTypeMin;
}
} }
...@@ -36,7 +36,7 @@ public class DiscountDao extends AbstractDao<Discount, Long> { ...@@ -36,7 +36,7 @@ public class DiscountDao extends AbstractDao<Discount, Long> {
public final static Property ManagerApproval = new Property(9, byte.class, "managerApproval", false, "MANAGER_APPROVAL"); public final static Property ManagerApproval = new Property(9, byte.class, "managerApproval", false, "MANAGER_APPROVAL");
public final static Property Color = new Property(10, String.class, "color", false, "COLOR"); public final static Property Color = new Property(10, String.class, "color", false, "COLOR");
public final static Property PlaceOrderType = new Property(11, String.class, "placeOrderType", false, "PLACE_ORDER_TYPE"); public final static Property PlaceOrderType = new Property(11, String.class, "placeOrderType", false, "PLACE_ORDER_TYPE");
public final static Property DiscountCap = new Property(12, long.class, "discountCap", false, "DISCOUNT_CAP"); public final static Property DiscountCap = new Property(12, double.class, "discountCap", false, "DISCOUNT_CAP");
public final static Property SalesAmount = new Property(13, double.class, "salesAmount", false, "SALES_AMOUNT"); public final static Property SalesAmount = new Property(13, double.class, "salesAmount", false, "SALES_AMOUNT");
public final static Property TaxFree = new Property(14, byte.class, "taxFree", false, "TAX_FREE"); public final static Property TaxFree = new Property(14, byte.class, "taxFree", false, "TAX_FREE");
public final static Property Exclusive = new Property(15, byte.class, "exclusive", false, "EXCLUSIVE"); public final static Property Exclusive = new Property(15, byte.class, "exclusive", false, "EXCLUSIVE");
...@@ -76,7 +76,7 @@ public class DiscountDao extends AbstractDao<Discount, Long> { ...@@ -76,7 +76,7 @@ public class DiscountDao extends AbstractDao<Discount, Long> {
"\"MANAGER_APPROVAL\" INTEGER NOT NULL ," + // 9: managerApproval "\"MANAGER_APPROVAL\" INTEGER NOT NULL ," + // 9: managerApproval
"\"COLOR\" TEXT," + // 10: color "\"COLOR\" TEXT," + // 10: color
"\"PLACE_ORDER_TYPE\" TEXT," + // 11: placeOrderType "\"PLACE_ORDER_TYPE\" TEXT," + // 11: placeOrderType
"\"DISCOUNT_CAP\" INTEGER NOT NULL ," + // 12: discountCap "\"DISCOUNT_CAP\" REAL NOT NULL ," + // 12: discountCap
"\"SALES_AMOUNT\" REAL NOT NULL ," + // 13: salesAmount "\"SALES_AMOUNT\" REAL NOT NULL ," + // 13: salesAmount
"\"TAX_FREE\" INTEGER NOT NULL ," + // 14: taxFree "\"TAX_FREE\" INTEGER NOT NULL ," + // 14: taxFree
"\"EXCLUSIVE\" INTEGER NOT NULL ," + // 15: exclusive "\"EXCLUSIVE\" INTEGER NOT NULL ," + // 15: exclusive
...@@ -132,7 +132,7 @@ public class DiscountDao extends AbstractDao<Discount, Long> { ...@@ -132,7 +132,7 @@ public class DiscountDao extends AbstractDao<Discount, Long> {
if (placeOrderType != null) { if (placeOrderType != null) {
stmt.bindString(12, placeOrderType); stmt.bindString(12, placeOrderType);
} }
stmt.bindLong(13, entity.getDiscountCap()); stmt.bindDouble(13, entity.getDiscountCap());
stmt.bindDouble(14, entity.getSalesAmount()); stmt.bindDouble(14, entity.getSalesAmount());
stmt.bindLong(15, entity.getTaxFree()); stmt.bindLong(15, entity.getTaxFree());
stmt.bindLong(16, entity.getExclusive()); stmt.bindLong(16, entity.getExclusive());
...@@ -190,7 +190,7 @@ public class DiscountDao extends AbstractDao<Discount, Long> { ...@@ -190,7 +190,7 @@ public class DiscountDao extends AbstractDao<Discount, Long> {
if (placeOrderType != null) { if (placeOrderType != null) {
stmt.bindString(12, placeOrderType); stmt.bindString(12, placeOrderType);
} }
stmt.bindLong(13, entity.getDiscountCap()); stmt.bindDouble(13, entity.getDiscountCap());
stmt.bindDouble(14, entity.getSalesAmount()); stmt.bindDouble(14, entity.getSalesAmount());
stmt.bindLong(15, entity.getTaxFree()); stmt.bindLong(15, entity.getTaxFree());
stmt.bindLong(16, entity.getExclusive()); stmt.bindLong(16, entity.getExclusive());
...@@ -233,7 +233,7 @@ public class DiscountDao extends AbstractDao<Discount, Long> { ...@@ -233,7 +233,7 @@ public class DiscountDao extends AbstractDao<Discount, Long> {
(byte) cursor.getShort(offset + 9), // managerApproval (byte) cursor.getShort(offset + 9), // managerApproval
cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // color cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // color
cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11), // placeOrderType cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11), // placeOrderType
cursor.getLong(offset + 12), // discountCap cursor.getDouble(offset + 12), // discountCap
cursor.getDouble(offset + 13), // salesAmount cursor.getDouble(offset + 13), // salesAmount
(byte) cursor.getShort(offset + 14), // taxFree (byte) cursor.getShort(offset + 14), // taxFree
(byte) cursor.getShort(offset + 15), // exclusive (byte) cursor.getShort(offset + 15), // exclusive
...@@ -264,7 +264,7 @@ public class DiscountDao extends AbstractDao<Discount, Long> { ...@@ -264,7 +264,7 @@ public class DiscountDao extends AbstractDao<Discount, Long> {
entity.setManagerApproval((byte) cursor.getShort(offset + 9)); entity.setManagerApproval((byte) cursor.getShort(offset + 9));
entity.setColor(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); entity.setColor(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10));
entity.setPlaceOrderType(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); entity.setPlaceOrderType(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11));
entity.setDiscountCap(cursor.getLong(offset + 12)); entity.setDiscountCap(cursor.getDouble(offset + 12));
entity.setSalesAmount(cursor.getDouble(offset + 13)); entity.setSalesAmount(cursor.getDouble(offset + 13));
entity.setTaxFree((byte) cursor.getShort(offset + 14)); entity.setTaxFree((byte) cursor.getShort(offset + 14));
entity.setExclusive((byte) cursor.getShort(offset + 15)); entity.setExclusive((byte) cursor.getShort(offset + 15));
......
...@@ -49,6 +49,7 @@ public class ShoppingCart { ...@@ -49,6 +49,7 @@ public class ShoppingCart {
protected List<OrderDetail> orderCommodityList = new ArrayList<>(); protected List<OrderDetail> orderCommodityList = new ArrayList<>();
/** /**
* 賬單項列表 * 賬單項列表
*
* @see CopyOnWriteArrayList 賬單計算放在子線程中保證同步問題使用CopyOnWriteArrayList * @see CopyOnWriteArrayList 賬單計算放在子線程中保證同步問題使用CopyOnWriteArrayList
*/ */
protected List<BillItem> billItemList = new ArrayList<>(); protected List<BillItem> billItemList = new ArrayList<>();
...@@ -174,6 +175,17 @@ public class ShoppingCart { ...@@ -174,6 +175,17 @@ public class ShoppingCart {
} }
/** /**
* 刪除所有折扣
*/
public void delAllMultyDiscount() {
List<MultyDiscount> multyDiscountList = getMultyDiscountList();
// for (MultyDiscount multyDiscount: multyDiscountList) {
// multyDiscountList.remove(multyDiscount);
// }
multyDiscountList.removeAll(multyDiscountList);
}
/**
* 將普通折扣添加到鏈條中 * 將普通折扣添加到鏈條中
* *
* @param discount * @param discount
...@@ -267,6 +279,21 @@ public class ShoppingCart { ...@@ -267,6 +279,21 @@ public class ShoppingCart {
} }
} }
/**
* 獲取普通折扣
*
* @return
*/
public List<NomalDiscount> getNomalDiscoutByMultyDiscountList() {
List<NomalDiscount> nomalDiscountList = new ArrayList<>();
for (MultyDiscount multyDiscount : getMultyDiscountList()) {
if (multyDiscount instanceof NomalDiscount) {
nomalDiscountList.add((NomalDiscount) multyDiscount);
}
}
return nomalDiscountList;
}
public List<MultyDiscount> getMultyDiscountList() { public List<MultyDiscount> getMultyDiscountList() {
if (multyDiscountList == null) { if (multyDiscountList == null) {
multyDiscountList = new ArrayList<>(); multyDiscountList = new ArrayList<>();
......
package com.gingersoft.gsa.cloud.base.order.discount; package com.gingersoft.gsa.cloud.base.order.discount;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil; import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.database.bean.Discount; import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.order.base.BuildConfig;
import com.jess.arms.utils.ArmsUtils;
import lombok.Getter; import lombok.Getter;
...@@ -50,6 +53,9 @@ public class NomalDiscount extends MultyDiscount { ...@@ -50,6 +53,9 @@ public class NomalDiscount extends MultyDiscount {
if (Double.doubleToLongBits(discount.getDiscountCap()) != 0 && discount.getDiscountCap() < discountMoney) { if (Double.doubleToLongBits(discount.getDiscountCap()) != 0 && discount.getDiscountCap() < discountMoney) {
//不能大於折扣上限 //不能大於折扣上限
discountMoney = discount.getDiscountCap(); discountMoney = discount.getDiscountCap();
if (BuildConfig.DEBUG) {
ArmsUtils.makeText(GsaCloudApplication.getAppContext(), "此折扣上限為:" + discountMoney);
}
} }
if (sourceMoney < discountMoney) { if (sourceMoney < discountMoney) {
//折扣金額不能超出總額 //折扣金額不能超出總額
......
package com.gingersoft.gsa.cloud.table.mvp.model.discount;
import android.app.Activity;
import android.text.Editable;
import android.text.InputType;
import android.view.View;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.GridView;
import com.gingersoft.gsa.cloud.base.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.base.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.patterns.Strategy;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.KeyboardDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.gingersoft.gsa.cloud.ui.widget.keyboard.VirtualKeyboardView;
import com.jess.arms.utils.DeviceUtils;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import butterknife.BindView;
import butterknife.BindViews;
/**
* @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, List<NomalDiscount> nomalDiscountList, OnCallBackListener listener) {
this.mContext = context;
this.mNomalDiscountList = nomalDiscountList;
this.mListener = listener;
}
@Override
public void action(Discount discount) {
if (isOnlyOnce(discount)) {
//此折扣只一次
return;
}
boolean hasExclusive = hasExclusiveDiscount() || discount.getExclusive() == 1;
if (hasExclusive) {
//有獨佔折扣
exclusiveDiscount(discount);
return;
}
switch (discount.getType()) {
case Discount.DISCOUNT_TYPE_AMOUNT:
case Discount.DISCOUNT_TYPE_RATE:
break;
case Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT:
showCustomAmountDialog(discount);
break;
case Discount.DISCOUNT_TYPE_KEYBOARD:
showKeyboardDialog(discount);
break;
case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
break;
default:
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) {
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) {
mListener.preformAddDiscount(discount);
}
}
});
}
/**
* 顯示子弟你金額彈窗 鍵盤
* @param discount
*/
private void showKeyboardDialog(Discount discount) {
new KeyboardDialog(mContext)
.build()
.setOnCallBackListener(new KeyboardDialog.OnCallBackListener() {
@Override
public void onSure(String number) {
discount.setAmount(Double.parseDouble(number));
if (mListener != null) {
mListener.preformAddDiscount(discount);
}
}
})
.show();
}
/**
* 提示有獨佔折扣是否替換
* @param discount
*/
private void showExclusiveTipDialog(Discount discount) {
CommonTipDialog.showDoubtDialog2(mContext, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() {
@Override
public void onSure() {
mListener.exclusiveRemoveOther();
mListener.preformAddDiscount(discount);
}
});
}
public interface OnCallBackListener {
void exclusiveRemoveOther();
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.base.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.base.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.patterns.Strategy;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.KeyboardDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import java.util.ArrayList;
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> mOrderMealList;
private MealDiscountAction.OnCallBackListener mListener;
public MealDiscountAction(Activity context, List<OrderDetail> orderMealList, MealDiscountAction.OnCallBackListener listener) {
this.mContext = context;
this.mOrderMealList = orderMealList;
this.mListener = listener;
}
@Override
public void action(Discount discount) {
if (isOnlyOnce(discount)) {
//此折扣只一次
return;
}
boolean hasExclusive = hasExclusiveDiscount() || discount.getExclusive() == 1;
if (hasExclusive) {
//有獨佔折扣
exclusiveDiscount(discount);
return;
}
switch (discount.getType()) {
case Discount.DISCOUNT_TYPE_AMOUNT:
case Discount.DISCOUNT_TYPE_RATE:
break;
case Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT:
showCustomAmountDialog(discount);
break;
case Discount.DISCOUNT_TYPE_KEYBOARD:
showKeyboardDialog(discount);
break;
case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
break;
default:
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) {
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) {
mListener.preformAddDiscount(discount);
}
}
});
}
/**
* 顯示子弟你金額彈窗 鍵盤
*
* @param discount
*/
private void showKeyboardDialog(Discount discount) {
new KeyboardDialog(mContext)
.build()
.setOnCallBackListener(new KeyboardDialog.OnCallBackListener() {
@Override
public void onSure(String number) {
discount.setAmount(Double.parseDouble(number));
if (mListener != null) {
mListener.preformAddDiscount(discount);
}
}
})
.show();
}
/**
* 提示有獨佔折扣是否替換
*
* @param discount
*/
private void showExclusiveTipDialog(Discount discount) {
CommonTipDialog.showDoubtDialog2(mContext, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() {
@Override
public void onSure() {
mListener.exclusiveRemoveOther();
mListener.preformAddDiscount(discount);
}
});
}
public interface OnCallBackListener {
void exclusiveRemoveOther();
void preformAddDiscount(Discount discount);
}
}
package com.gingersoft.gsa.cloud.table.mvp.model.discount;
import android.app.Activity;
import android.content.Context;
import android.text.InputType;
import com.gingersoft.gsa.cloud.base.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.base.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.patterns.Strategy;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.TableAction;
import com.gingersoft.gsa.cloud.ui.view.AddKeyBoard;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import java.util.List;
/**
* @author : bin
* @create date: 2020-10-27
* @update date: 2020-10-27
* @description:
*/
public class NomalDiscountAction implements Strategy<Discount> {
public Context mContext;
private List<NomalDiscount> mNomalDiscountList;
public NomalDiscountAction(Context context, List<NomalDiscount> nomalDiscountList) {
this.mContext = context;
this.mNomalDiscountList = nomalDiscountList;
}
@Override
public void action(Discount discount) {
for (NomalDiscount nomalDiscount : mNomalDiscountList) {
Discount item = nomalDiscount.getDiscount();
if () {
}
}
if (discount.getOnlyOnce() == 1) {
//此折扣只一次
return;
}
if (discount.getExclusive() == 1) {
//獨佔折扣
}
switch (discount.getType()) {
case Discount.DISCOUNT_TYPE_AMOUNT:
case Discount.DISCOUNT_TYPE_RATE:
break;
case Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT:
showCustomAmountDialog(discount);
break;
case Discount.DISCOUNT_TYPE_KEYBOARD:
showKeyboardDialog(discount);
break;
case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
break;
default:
break;
}
}
private void showCustomAmountDialog(Discount discount) {
CommonTipDialog.showEditDialog((Activity) mContext, discount.getRemark(), "請輸入折扣金額", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL, new CommonTipDialog.OnEditTextListener() {
@Override
public void inputText(String text) {
}
});
}
private void showKeyboardDialog(Discount discount) {
}
}
...@@ -141,7 +141,6 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex ...@@ -141,7 +141,6 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
*/ */
private OrderBean orderPlaced; private OrderBean orderPlaced;
//币種
protected String cashStr = "$"; protected String cashStr = "$";
protected String serviceChargeStr = "服務費"; protected String serviceChargeStr = "服務費";
protected String roundingStr = "賬單小數"; protected String roundingStr = "賬單小數";
...@@ -161,7 +160,6 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex ...@@ -161,7 +160,6 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
mDoshokuOrder.getOpenTableInfo().setCreateTime(TimeUtils.getTime(createTime, TimeUtils.DEFAULT_DATE_FORMAT)); mDoshokuOrder.getOpenTableInfo().setCreateTime(TimeUtils.getTime(createTime, TimeUtils.DEFAULT_DATE_FORMAT));
} }
public BaseOrderPresenter(BaseOrderContract.Model model, BaseOrderContract.View rootView) { public BaseOrderPresenter(BaseOrderContract.Model model, BaseOrderContract.View rootView) {
super(model, rootView); super(model, rootView);
this.mModel = (M) model; this.mModel = (M) model;
...@@ -363,6 +361,21 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex ...@@ -363,6 +361,21 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
return billItem; return billItem;
} }
/**
* 是否大於最小賬單金額
* @param discount
* @param sourceMoney
* @return
*/
protected boolean greaterThanMinimumBill(Discount discount, double sourceMoney) {
double discountMoney = NomalDiscount.calculationDiscount(discount, sourceMoney);
double wholeAmount = mShoppingCart.getWholeAmount();
if (discountMoney > wholeAmount) {
return false;
}
return true;
}
private void initOrderAdapter() { private void initOrderAdapter() {
if (mSelectMealAdapter == null) { if (mSelectMealAdapter == null) {
mSelectMealAdapter = new SelectMealAdapter(IActivity, mOrderMealList, this); mSelectMealAdapter = new SelectMealAdapter(IActivity, mOrderMealList, this);
...@@ -1181,6 +1194,9 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex ...@@ -1181,6 +1194,9 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
protected List<Discount> filterDiscountByType(List<Discount> discountList, String discountType) { protected List<Discount> filterDiscountByType(List<Discount> discountList, String discountType) {
for (int i = discountList.size() - 1; i >= 0; i--) { for (int i = discountList.size() - 1; i >= 0; i--) {
Discount discount = discountList.get(i); Discount discount = discountList.get(i);
if(discount.getDiscountType().equals("2")){
continue;
}
if (TextUtils.isEmpty(discount.getDiscountType()) || !discount.getDiscountType().contains(discountType)) { if (TextUtils.isEmpty(discount.getDiscountType()) || !discount.getDiscountType().contains(discountType)) {
discountList.remove(i); discountList.remove(i);
} }
......
...@@ -12,28 +12,22 @@ import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; ...@@ -12,28 +12,22 @@ import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult; import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.common.bean.MemberInfo; import com.gingersoft.gsa.cloud.base.common.bean.MemberInfo;
import com.gingersoft.gsa.cloud.base.order.bean.DeleteOrderRequest; import com.gingersoft.gsa.cloud.base.order.bean.DeleteOrderRequest;
import com.gingersoft.gsa.cloud.base.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.base.order.commodity.OrderDetail; import com.gingersoft.gsa.cloud.base.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.base.order.bean.discount.CouponDiscountBean;
import com.gingersoft.gsa.cloud.base.order.bean.discount.OrderDiscount;
import com.gingersoft.gsa.cloud.base.order.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.base.order.billItem.ServiceChargeItem;
import com.gingersoft.gsa.cloud.base.order.discount.MultyDiscount; import com.gingersoft.gsa.cloud.base.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.base.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.base.order.order.BaseOrder; import com.gingersoft.gsa.cloud.base.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils; import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils; import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil; import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.base.utils.RestaurantExpandInfoUtils; import com.gingersoft.gsa.cloud.base.utils.RestaurantExpandInfoUtils;
import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.patterns.Strategy;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract; import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodReason; import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodReason;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood; import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.discount.NomalDiscountAction; import com.gingersoft.gsa.cloud.table.mvp.model.discount.BillDiscountAction;
import com.gingersoft.gsa.cloud.table.mvp.model.discount.MealDiscountAction;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.DiscountAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.DiscountAdapter;
...@@ -61,7 +55,6 @@ import com.jess.arms.integration.AppManager; ...@@ -61,7 +55,6 @@ import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.RxLifecycleUtils; import com.jess.arms.utils.RxLifecycleUtils;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog; import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogBuilder;
import org.simple.eventbus.Subscriber; import org.simple.eventbus.Subscriber;
...@@ -144,7 +137,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -144,7 +137,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
*/ */
private List<SoldoutCtrFood> mSoldoutCtrList = new ArrayList<>(); private List<SoldoutCtrFood> mSoldoutCtrList = new ArrayList<>();
private NomalDiscountAction mNomalDiscountAction; private MealDiscountAction mMealDiscountAction;
private OrderDetail mCurrentOrderDetailBean; private OrderDetail mCurrentOrderDetailBean;
private boolean RvMealClicked; private boolean RvMealClicked;
...@@ -154,7 +147,46 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -154,7 +147,46 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
public MealStandPresenter(MealStandContract.Model model, MealStandContract.View rootView) { public MealStandPresenter(MealStandContract.Model model, MealStandContract.View rootView) {
super(model, rootView); super(model, rootView);
this.IActivity = (MealStandActivity) rootView; this.IActivity = (MealStandActivity) rootView;
this.mNomalDiscountAction = new NomalDiscountAction(IActivity,mShoppingCart.getMultyDiscountList());
mMealDiscountAction = new MealDiscountAction(IActivity, getMixOrderMealList(), new MealDiscountAction.OnCallBackListener() {
@Override
public void exclusiveRemoveOther() {
}
@Override
public void preformAddDiscount(Discount discount) {
}
});
}
/**
* 獲取當前選中的套餐食品組
* @return
*/
private List<OrderDetail> getMixOrderMealList() {
List<OrderDetail> mixOrderMealList = new ArrayList<>();
for (int i = mSelectMealAdapter.getSelect_full_start_position();
mSelectMealAdapter.getSelect_full_end_position() < mOrderMealList.size(); i++) {
mixOrderMealList.add(mOrderMealList.get(i));
}
return mixOrderMealList;
}
/**
* 獲取套餐總金額
* @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;
} }
@Override @Override
...@@ -365,19 +397,12 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -365,19 +397,12 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
if (cutOutDiscount() == -100) { if (cutOutDiscount() == -100) {
return; return;
} }
if (discountBean.getType() == Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT) { // if (discountBean.getType() == Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT) {
showCustomAmountDialog(discountBean); // showCustomAmountDialog(discountBean);
} else { // } else {
addDiscountItem(discountBean); // addDiscountItem(discountBean);
} // }
// mNomalDiscountAction.action(discountBean, new Strategy.CallBackListener() { mNomalDiscountAction.action(discountBean);
//
// @Override
// public void callBack(Object o) {
// addDiscountItem((Discount) o);
// }
// });
// new NomalDiscountAction().
} }
}); });
} }
...@@ -1948,8 +1973,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -1948,8 +1973,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return addPosition; return addPosition;
} }
private int getEndInsertPosition(List<OrderDetail> newOrderList, OrderDetail orderDetail, private int getEndInsertPosition(List<OrderDetail> newOrderList, OrderDetail orderDetail, int currentI) {
int currentI) {
boolean hasChildFood = false; boolean hasChildFood = false;
for (int i = currentI; i < newOrderList.size(); i++) { for (int i = currentI; i < newOrderList.size(); i++) {
OrderDetail item = newOrderList.get(i); OrderDetail item = newOrderList.get(i);
...@@ -2031,19 +2055,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -2031,19 +2055,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
} }
/** /**
* 刪除會員折扣,會員優惠券
*/
// public void removeMemberDiscountItem() {
// for (int i = mBillItemList.size() - 1; i >= 0; i--) {
// BillItem billItem = mBillItemList.get(i);
// if (billItem.getType() == BillItem.MEMBER_DISCOUNT_TYPE || billItem.getType() == BillItem.COUPON_DISCOUNT_TYPE) {
// mBillItemList.remove(i);
// mOrderMoneyAdapter.notifyItemChanged(i);
// }
// }
// }
/**
* 加載折扣數據 * 加載折扣數據
*/ */
public void loadDiscountData() { public void loadDiscountData() {
......
...@@ -18,7 +18,6 @@ import com.gingersoft.gsa.cloud.base.order.billItem.DiscountItem; ...@@ -18,7 +18,6 @@ import com.gingersoft.gsa.cloud.base.order.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.base.order.commodity.OrderDetail; import com.gingersoft.gsa.cloud.base.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.base.order.bean.discount.CouponDiscountBean; import com.gingersoft.gsa.cloud.base.order.bean.discount.CouponDiscountBean;
import com.gingersoft.gsa.cloud.base.order.bean.discount.CouponDiscountResult; import com.gingersoft.gsa.cloud.base.order.bean.discount.CouponDiscountResult;
import com.gingersoft.gsa.cloud.base.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.base.order.discount.NomalDiscount; import com.gingersoft.gsa.cloud.base.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.base.order.order.BaseOrder; import com.gingersoft.gsa.cloud.base.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.base.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.base.order.order.DoshokuOrder;
...@@ -42,6 +41,7 @@ import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseOrderRespose; ...@@ -42,6 +41,7 @@ import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseOrderRespose;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.TableDetail; import com.gingersoft.gsa.cloud.table.mvp.model.bean.TableDetail;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.discount.BillDiscountAction;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil; import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
...@@ -118,7 +118,10 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -118,7 +118,10 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
*/ */
private SplitTableDialog mSplitTableDialog; private SplitTableDialog mSplitTableDialog;
private DiscountDialog.Builder mDiscountDialog; private DiscountDialog.Builder mDiscountDialog;
/**
* 整單折扣邏輯
*/
private BillDiscountAction mNomalDiscountAction;
@Inject @Inject
public OrderContentPresenter(OrderContentContract.Model model, OrderContentContract.View rootView) { public OrderContentPresenter(OrderContentContract.Model model, OrderContentContract.View rootView) {
...@@ -128,6 +131,19 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -128,6 +131,19 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//转移食品可多选 //转移食品可多选
mSelectMealAdapter.setSelectedMode(SelectMealAdapter.MULTIPLE_SELECTED); mSelectMealAdapter.setSelectedMode(SelectMealAdapter.MULTIPLE_SELECTED);
} }
mNomalDiscountAction = new BillDiscountAction(IActivity, mShoppingCart.getNomalDiscoutByMultyDiscountList(), new BillDiscountAction.OnCallBackListener() {
@Override
public void exclusiveRemoveOther() {
mShoppingCart.delAllMultyDiscount();
}
@Override
public void preformAddDiscount(Discount discount) {
mShoppingCart.addMultyDiscount(mShoppingCart.createNomalDiscount(discount, BillItem.BILL_ITEM_NO_ORDER_STATUS));
updateBillInfo();
}
});
} }
@Override @Override
...@@ -747,18 +763,12 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -747,18 +763,12 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
mDiscountDialog.setOnClickListener(new DiscountDialog.Builder.OnClickListener() { mDiscountDialog.setOnClickListener(new DiscountDialog.Builder.OnClickListener() {
@Override @Override
public void onItemClick(Discount item, int position) { public void onItemClick(Discount item, int position) {
if (item.getOnlyOnce() == 1) { if (item.getMinBillAmount() > mShoppingCart.getWholeAmount()) {
//此折扣只一次 //小於最小賬單金額 直接提示
mRootView.showMessage("食品總計金額小於" + cashStr + item.getMinBillAmount());
return; return;
} }
if (item.getExclusive() == 1) { mNomalDiscountAction.action(item);
//獨佔折扣
}
MultyDiscount nomalDiscount = mShoppingCart.createNomalDiscount(item, BillItem.BILL_ITEM_NO_ORDER_STATUS);
mShoppingCart.addMultyDiscount(nomalDiscount);
updateBillInfo();
} }
@Override @Override
...@@ -772,7 +782,6 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -772,7 +782,6 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
mDiscountDialog.build().show(); mDiscountDialog.build().show();
} }
/** /**
* 更新訂單詳情 * 更新訂單詳情
* *
......
...@@ -40,6 +40,7 @@ import com.gingersoft.gsa.cloud.table.mvp.presenter.OrderContentPresenter; ...@@ -40,6 +40,7 @@ import com.gingersoft.gsa.cloud.table.mvp.presenter.OrderContentPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment; import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.InputTableFragment; import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.InputTableFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog; import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.KeyboardDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.gingersoft.gsa.cloud.zxing.MipcaCaptureActivity; import com.gingersoft.gsa.cloud.zxing.MipcaCaptureActivity;
import com.jess.arms.base.BaseFragmentActivity; import com.jess.arms.base.BaseFragmentActivity;
......
package com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal; package com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal;
import android.content.Context; import android.content.Context;
import android.graphics.Color;
import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
...@@ -9,6 +11,7 @@ import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; ...@@ -9,6 +11,7 @@ import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.database.bean.Discount; import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2; import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.ui.view.BeveLabelView;
import com.jess.arms.base.BaseHolder; import com.jess.arms.base.BaseHolder;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
...@@ -58,6 +61,8 @@ public class DiscountAdapter extends DefaultAdapter<Discount> { ...@@ -58,6 +61,8 @@ public class DiscountAdapter extends DefaultAdapter<Discount> {
@BindView(R2.id.tv_name) @BindView(R2.id.tv_name)
TextView tv_name; TextView tv_name;
@BindView(R2.id.blv_soldout)
BeveLabelView blv_soldout;
public DiscountItemHolder(View itemView) { public DiscountItemHolder(View itemView) {
super(itemView); super(itemView);
...@@ -68,6 +73,7 @@ public class DiscountAdapter extends DefaultAdapter<Discount> { ...@@ -68,6 +73,7 @@ public class DiscountAdapter extends DefaultAdapter<Discount> {
initLayoutParams(); initLayoutParams();
initName(datasBean); initName(datasBean);
initSoldoutStatus(datasBean);
setColor(datasBean); setColor(datasBean);
} }
...@@ -77,12 +83,24 @@ public class DiscountAdapter extends DefaultAdapter<Discount> { ...@@ -77,12 +83,24 @@ public class DiscountAdapter extends DefaultAdapter<Discount> {
tv_name.setTextSize(fontSize); tv_name.setTextSize(fontSize);
} }
private void setColor(Discount datasBean) { private void initSoldoutStatus(Discount datasBean) {
if (datasBean.isPause()) {
blv_soldout.setLableText("暫停");
blv_soldout.setVisibility(View.VISIBLE);
} else {
blv_soldout.setVisibility(View.GONE);
}
}
int color = ArmsUtils.getColor(mContext, R.color.light_blue_900); private void setColor(Discount datasBean) {
String colorRes = datasBean.getColor();
if (!TextUtils.isEmpty(colorRes) && colorRes.startsWith("#")) {
tv_name.setBackgroundColor(Color.parseColor(colorRes));
} else {
int color = ArmsUtils.getColor(mContext, R.color.light_blue_900);
tv_name.setBackgroundColor(color);
}
int fontColor = ArmsUtils.getColor(mContext, R.color.theme_white_color); int fontColor = ArmsUtils.getColor(mContext, R.color.theme_white_color);
tv_name.setBackgroundColor(color);
tv_name.setTextColor(fontColor); tv_name.setTextColor(fontColor);
} }
......
...@@ -75,7 +75,6 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> { ...@@ -75,7 +75,6 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
this.mContext = context; this.mContext = context;
this.BillListFontSize = GsaCloudApplication.uiStyleConfiguration.getBillListFontSizeValue(); this.BillListFontSize = GsaCloudApplication.uiStyleConfiguration.getBillListFontSizeValue();
if (presenter instanceof MealStandPresenter) { if (presenter instanceof MealStandPresenter) {
// this.mMealStandPresenter = (MealStandPresenter) presenter;
this.mMealStandActivity = (MealStandActivity) context; this.mMealStandActivity = (MealStandActivity) context;
} else if (presenter instanceof OrderContentPresenter) { } else if (presenter instanceof OrderContentPresenter) {
this.mOrderContentPresenter = (OrderContentPresenter) presenter; this.mOrderContentPresenter = (OrderContentPresenter) presenter;
......
...@@ -49,7 +49,6 @@ public class UseMemberDialog extends Dialog { ...@@ -49,7 +49,6 @@ public class UseMemberDialog extends Dialog {
private static final String TAG = "UseMemberDialog"; private static final String TAG = "UseMemberDialog";
private Context mContext; private Context mContext;
private UseMemberDialog mDialog;
// 动画时长 // 动画时长
private final static int mAnimationDuration = 300; private final static int mAnimationDuration = 300;
...@@ -111,10 +110,6 @@ public class UseMemberDialog extends Dialog { ...@@ -111,10 +110,6 @@ public class UseMemberDialog extends Dialog {
super.setContentView(view, params); super.setContentView(view, params);
} }
public View getContentView() {
return mContentView;
}
@Override @Override
public void setContentView(@NonNull View view) { public void setContentView(@NonNull View view) {
mContentView = view; mContentView = view;
...@@ -209,14 +204,10 @@ public class UseMemberDialog extends Dialog { ...@@ -209,14 +204,10 @@ public class UseMemberDialog extends Dialog {
} }
public UseMemberDialog build() { public UseMemberDialog build() {
if (mDialog != null) {
return mDialog;
}
mDialog = new UseMemberDialog(mContext);
View contentView = buildViews(); View contentView = buildViews();
mDialog.setContentView(contentView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) (QMUIDisplayHelper.getScreenHeight(mContext) * 0.65))); setContentView(contentView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) (QMUIDisplayHelper.getScreenHeight(mContext) * 0.65)));
updateMemberInfo(memberInfo); updateMemberInfo(memberInfo);
return mDialog; return this;
} }
private View buildViews() { private View buildViews() {
...@@ -242,7 +233,7 @@ public class UseMemberDialog extends Dialog { ...@@ -242,7 +233,7 @@ public class UseMemberDialog extends Dialog {
return; return;
} }
if (onLayoutClickListener != null) { if (onLayoutClickListener != null) {
onLayoutClickListener.onInputPhone(mDialog, getTvPhone()); onLayoutClickListener.onInputPhone(UseMemberDialog.this, getTvPhone());
} }
} }
}); });
...@@ -250,7 +241,7 @@ public class UseMemberDialog extends Dialog { ...@@ -250,7 +241,7 @@ public class UseMemberDialog extends Dialog {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (onLayoutClickListener != null) { if (onLayoutClickListener != null) {
onLayoutClickListener.onScanAction(mDialog); onLayoutClickListener.onScanAction(UseMemberDialog.this);
} }
} }
}); });
...@@ -258,7 +249,7 @@ public class UseMemberDialog extends Dialog { ...@@ -258,7 +249,7 @@ public class UseMemberDialog extends Dialog {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (onLayoutClickListener != null) { if (onLayoutClickListener != null) {
onLayoutClickListener.onUseMember(mDialog); onLayoutClickListener.onUseMember(UseMemberDialog.this);
} }
} }
}); });
...@@ -280,7 +271,7 @@ public class UseMemberDialog extends Dialog { ...@@ -280,7 +271,7 @@ public class UseMemberDialog extends Dialog {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
mDialog.dismiss(); UseMemberDialog.this.dismiss();
} }
}); });
mTopBar.setTitle("使用會員"); mTopBar.setTitle("使用會員");
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv_name" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/rl_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:layout_marginRight="1px"
android:layout_marginTop="1px" <com.gingersoft.gsa.cloud.ui.view.BeveLabelView
android:gravity="center" android:id="@+id/blv_soldout"
android:padding="@dimen/dp_2" android:layout_width="40dp"
android:text="food" android:layout_height="40dp"
android:textAppearance="?android:attr/textAppearanceLarge" app:label_bg_color="#D10035"
android:textColor="@color/theme_white_color" app:label_corner="10dp"
android:textSize="@dimen/sp_16" /> app:label_length="23dp"
app:label_mode="left_top"
app:label_text="暫停"
app:label_text_color="@color/theme_white_color"
app:label_text_size="@dimen/sp_10"
android:visibility="gone"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/tv_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="1px"
android:layout_marginRight="1px"
android:gravity="center"
android:padding="@dimen/dp_2"
android:text="food"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_16" />
</FrameLayout>
...@@ -59,17 +59,6 @@ ...@@ -59,17 +59,6 @@
app:label_text_color="@color/theme_white_color" app:label_text_color="@color/theme_white_color"
app:label_text_size="@dimen/sp_10" /> app:label_text_size="@dimen/sp_10" />
<!--<TextView-->
<!--android:id="@+id/tv_status"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_alignParentRight="true"-->
<!--android:layout_gravity="right"-->
<!--android:layout_marginRight="3px"-->
<!--android:layout_marginTop="2px"-->
<!--android:background="@drawable/selector_white_rect"-->
<!--android:text="sold" />-->
<ImageView <ImageView
android:id="@+id/iv_qtySold" android:id="@+id/iv_qtySold"
android:layout_width="@dimen/dp_40" android:layout_width="@dimen/dp_40"
......
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingTop="@dimen/dp_25"
android:paddingBottom="@dimen/dp_10"
android:paddingStart="@dimen/dp_20"
android:paddingEnd="@dimen/dp_20"
android:background="@drawable/shape_rect_fillet_white_5">
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/ed_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:hint="請輸入自定義金額"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10"
android:singleLine="true"
android:textColor="@color/normal_color"
android:textColorHint="@color/hint_color"
android:textSize="@dimen/sp_16"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:met_autoValidate="true"
app:met_baseColor="@color/theme_black"
app:met_clearButton="true"
app:met_floatingLabel="highlight"
app:met_iconPadding="2dp"
app:met_primaryColor="@color/theme_color"
app:met_singleLineEllipsis="false"
app:met_bottomTextSize="@dimen/sp_16"
app:met_floatingLabelTextSize="@dimen/sp_16"/>
<View
android:layout_width="1px"
android:layout_height="@dimen/dp_30"
android:background="@color/theme_grey_color"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/tv_sure"
android:layout_width="@dimen/dp_70"
android:layout_height="@dimen/dp_40"
android:gravity="center"
android:textSize="@dimen/sp_14"
android:textColor="@color/theme_red_color"
android:text="確認"
android:layout_marginTop="@dimen/dp_10"
app:layout_constraintTop_toBottomOf="@+id/ed_text"
app:layout_constraintLeft_toLeftOf="@+id/ed_text"
app:qmui_borderColor="@color/trans"
app:qmui_radius="@dimen/dp_5" />
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/tv_cancel"
android:layout_width="@dimen/dp_70"
android:layout_height="@dimen/dp_40"
android:gravity="center"
android:textSize="@dimen/sp_14"
android:textColor="@color/theme_grey_color"
android:text="取消"
android:layout_marginTop="@dimen/dp_10"
app:layout_constraintTop_toBottomOf="@+id/ed_text"
app:layout_constraintRight_toRightOf="@+id/ed_text"
app:qmui_borderColor="@color/trans"
app:qmui_radius="@dimen/dp_5" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.gingersoft.gsa.cloud.ui.widget.keyboard.VirtualKeyboardView
android:id="@+id/virtualKeyboardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
</FrameLayout>
\ No newline at end of file
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