Commit 8ef87d75 by 宁斌

1、餐檯模式部分數據不對問題處理

parent 1385fdee
......@@ -106,7 +106,12 @@ dependencies {
//多功能輸入框
api 'com.rengwuxian.materialedittext:library:2.1.4'
//扫码
implementation 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.3'
implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7'
implementation 'cn.bingoogolapple:bga-photopicker:1.2.8@aar'
implementation 'cn.bingoogolapple:bga-baseadapter:1.2.9@aar'
implementation 'cn.bingoogolapple:bga-flowlayout:1.0.0@aar'
api 'androidx.core:core-ktx:+'
implementation 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
......
......@@ -2,6 +2,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:name="com.gingersoft.gsa.cloud.base.application.GsaCloudApplication"
android:allowBackup="true"
......
......@@ -19,6 +19,8 @@ import java.util.Date;
import java.util.List;
import java.util.Objects;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
......@@ -26,6 +28,7 @@ import java.util.Objects;
* 修订历史:2020-02-18
* 描述:訂單實體類
*/
@Data
public class OrderDetail implements Serializable {
private static final long serialVersionUID = -958791295551999853L;
/**
......@@ -172,7 +175,7 @@ public class OrderDetail implements Serializable {
/**
* 是否参与折扣#0:不參與;1:參與;
*/
private long ablediscount;
private long ablediscount = 1;
/**
* 折扣實體
*/
......@@ -864,12 +867,14 @@ public class OrderDetail implements Serializable {
orderDetail.setKtPrintMainItem(orderDetailsBean.getKtPrintMainItem());
orderDetail.setPrintFont(orderDetailsBean.getPrintFont());
orderDetail.setPrintToBill(orderDetailsBean.getPrintToBill());
orderDetail.setPrintTo(orderDetail.getPrintTo());
orderDetail.setKtShowPrice(orderDetail.getKtShowPrice());
orderDetail.setPrintTo(orderDetailsBean.getPrintTo());
orderDetail.setKtShowPrice(orderDetailsBean.getKtShowPrice());
orderDetail.setAblediscount(orderDetailsBean.getAblediscount());
orderDetail.setIsfood(orderDetailsBean.getType() == FOOD_TYPE);
orderDetail.setNew(false);
orderDetail.setType(orderDetailsBean.getType());
orderDetail.setItemType(getItemType(orderDetailsBean, parentOrderDetail));
orderDetail.setAblediscount(orderDetailsBean.getAblediscount());
orderDetailList.add(orderDetail);
// if (orderDetail.isIsfood()) {
......@@ -890,7 +895,7 @@ public class OrderDetail implements Serializable {
int nextIndex = i + 1;
if (orderList.size() == nextIndex || orderList.get(nextIndex).getParentId() == 0) {
//已到結尾或者下一個食品是主食品
Discount discount = getDiscountItem(orderDetailsBean.getRestaurantDiscountVO(), parentId, discountSourcePrice);
Discount discount = getDiscountItem(orderDetailsBean.getRestaurantDiscountVO());
if (discount != null) {
orderDetailList.add(discountTransOrderDetail(discount, false, parentId, discountSourcePrice));
}
......@@ -906,11 +911,13 @@ public class OrderDetail implements Serializable {
return orderDetailList;
}
private static Discount getDiscountItem(OrderBean.OrderDetailsBean.RestaurantDiscountVO discountBean, long parentId, double discountAmount) {
//PLU可输入子项
//食品数量支持小数 例如1.25
private static Discount getDiscountItem(OrderBean.OrderDetailsBean.RestaurantDiscountVO discountBean) {
Discount discount = new Discount();
discount.setId(discountBean.getId());
discount.setDiscount_value(discountBean.getDiscountValue());
discount.setAmount(discountAmount);
discount.setAmount(discountBean.getDiscountAmount());
discount.setType(discountBean.getType());
discount.setRemark(discountBean.getRemark());
return discount;
......@@ -974,6 +981,7 @@ public class OrderDetail implements Serializable {
orderDetail.setType(FOOD_TYPE);
orderDetail.setItemType(1);
orderDetail.setProp(FOOD_PROP);
orderDetail.setAblediscount(food.getAbleDiscount());
orderDetail.setAutoMod(food.getAutoMod());
int comboLevel = food.isComboFood() ? 1 : 0;
orderDetail.setComboLevel(comboLevel);
......@@ -1014,6 +1022,7 @@ public class OrderDetail implements Serializable {
orderDetail.setItemType(2);
orderDetail.setProp(prop);
orderDetail.setPrintseting(foodCombo.getPrintSeting());
orderDetail.setAblediscount(foodCombo.getAblediscount());
// orderDetail.setComboAuto(foodCombo.isAutoMode());
if (isRvMealClicked) {
//手动点击细项 才将子食品作为主体被选中
......@@ -1048,9 +1057,10 @@ public class OrderDetail implements Serializable {
orderDetail.setMid(modifier.getMid());
orderDetail.setIsfood(false);
orderDetail.setNew(true);
orderDetail.setType(MODIFIER_TYPE);
orderDetail.setItemType(3);
orderDetail.setType(MODIFIER_TYPE);
orderDetail.setProp(MODIFIER_PROP);
orderDetail.setAblediscount(modifier.getAbleDisCount());
//手动点击细项 才将子食品作为主体被选中
orderDetail.setSelected(2);
orderDetail.setCurrentMaxNumber(modifier.getCurrentMaxNumber());
......@@ -1080,15 +1090,23 @@ public class OrderDetail implements Serializable {
orderDetail.setIsfood(false);
orderDetail.setNew(isNew);
orderDetail.setType(DISCOUNT_TYPE);
orderDetail.setItemType(2);
orderDetail.setProp(DISCOUNT_PROP);
orderDetail.setSelected(2);
orderDetail.setItemType(2);
orderDetail.setDiscount(discount);
return orderDetail;
}
public static List<OrderDetail> transNewOrderDetails(List<OrderDetail> orderDetailList) {
List<OrderDetail> newOrderList = new ArrayList<>();
for (OrderDetail orderDetail : orderDetailList) {
newOrderList.add(new OrderDetail(orderDetail));
}
return newOrderList;
}
/**
* 此食品是否包含折扣
*
......
......@@ -181,6 +181,7 @@ public class TableBean {
tableBean.setStatus(dataBean.getTableStatus());
tableBean.setUseStatus(dataBean.getInUse());
tableBean.setTableNumber(dataBean.getTableNumber());
tableBean.setServiceCharge(dataBean.getServiceCharge());
return tableBean;
}
......@@ -197,6 +198,7 @@ public class TableBean {
tableBean.setStatus(dataBean.getTableStatus());
tableBean.setUseStatus(dataBean.getInUse());
tableBean.setTableNumber(dataBean.getTableNumber());
tableBean.setServiceCharge(dataBean.getServiceCharge());
return tableBean;
}
}
......@@ -56,6 +56,7 @@ public class MyOrderManage {
private int sseq = 0;//二级序
private int mseq = 0;//三级序
private OrderBean orderBean;
/**
......@@ -89,6 +90,8 @@ public class MyOrderManage {
/**
* 記錄修改訂單操作
* false#送單
* true#修改訂單
*/
private boolean modifyOrder = false;
......
......@@ -12,6 +12,8 @@ import java.util.Date;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Transient;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
......@@ -19,6 +21,7 @@ import org.greenrobot.greendao.annotation.Transient;
* 修订历史:2020-02-18
* 描述:套餐食品關係
*/
@Data
@Entity
public class ComboItem {
......@@ -63,9 +66,9 @@ public class ComboItem {
@Id(autoincrement = true)
private Long id;
private long comId;
private Long comId;
private long fid;
private Long fid;
private long qty;
......@@ -93,6 +96,7 @@ public class ComboItem {
private byte isMainAccount;
// /**
// * 廚房單打印主項
// */
......@@ -140,6 +144,11 @@ public class ComboItem {
*/
@Transient
private double price = 0.00;
/**
* 是否参与折扣#0:不參與;1:參與;
*/
@Transient
private long ablediscount;
/*** 是否自動展開*/
@Transient
private int autoMode = 0;
......@@ -170,9 +179,29 @@ public class ComboItem {
* 打印設定, 用逗號分隔, *=切紙
*/
private String printSeting="";
/**
* 額外食品加分
*/
@Transient
private double pointsAdd;
/**
* 額外積分比率
*/
@Transient
private long pointsRatio;
/**
* 換購食品所需積分
*/
@Transient
private double pointsRedeem;
@Generated(hash = 435228340)
public ComboItem() {
}
@Generated(hash = 426398155)
public ComboItem(Long id, long comId, long fid, long qty, double diffAmt, long seqNo, long visible, Date createTime,
@Generated(hash = 1579207287)
public ComboItem(Long id, Long comId, Long fid, long qty, double diffAmt, long seqNo, long visible, Date createTime,
String createBy, Date updateTime, long conditions, long isRT, byte deletes, long posId, long restaurant_id,
byte isMainAccount, String printSeting) {
this.id = id;
......@@ -194,10 +223,6 @@ public class ComboItem {
this.printSeting = printSeting;
}
@Generated(hash = 435228340)
public ComboItem() {
}
public boolean isSold() {
if(!TextUtils.isEmpty(currentMaxNumber) && ("售罄".equals(currentMaxNumber) || "暫停".equals(currentMaxNumber))){
......@@ -206,360 +231,182 @@ public class ComboItem {
return false;
}
public Long getId() {
return id;
}
public Long getComId() {
return comId;
}
public Long getFid() {
return fid;
}
public long getInvisible() {
return invisible;
}
public void setInvisible(long invisible) {
this.invisible = invisible;
}
public String getMaxNumber() {
return maxNumber;
}
public void setMaxNumber(String maxNumber) {
this.maxNumber = maxNumber;
}
public String getCurrentMaxNumber() {
return currentMaxNumber;
}
public void setCurrentMaxNumber(String currentMaxNumber) {
this.currentMaxNumber = currentMaxNumber;
}
public Long getQty() {
return qty;
public static ComboItem addFoodInfo(Food food, ComboItem foodCombo) {
foodCombo.setName(food.getFoodName());
foodCombo.setFid(food.getId());
foodCombo.setPrice(food.getPrice());
foodCombo.setAutoMode(food.getAutoMod());
return foodCombo;
}
public Double getDiffAmt() {
return diffAmt;
}
public Long getSeqNo() {
return seqNo;
public Long getId() {
return this.id;
}
public Long getVisible() {
return visible;
}
public Date getCreateTime() {
return createTime;
public void setId(Long id) {
this.id = id;
}
public String getCreateBy() {
return createBy;
}
public Date getUpdateTime() {
return updateTime;
public Long getComId() {
return this.comId;
}
public Long getConditions() {
return conditions;
}
public Long getIsRT() {
return isRT;
public void setComId(Long comId) {
this.comId = comId;
}
public Byte getDeletes() {
return deletes;
}
public Long getPosId() {
return posId;
public Long getFid() {
return this.fid;
}
public Long getRestaurant_id() {
return restaurant_id;
}
public Byte getIsMainAccount() {
return isMainAccount;
public void setFid(Long fid) {
this.fid = fid;
}
public String getName() {
return name;
}
public String getName1() {
return name1;
public long getQty() {
return this.qty;
}
public String getName2() {
return name2;
}
public long getParentId() {
return parentId;
public void setQty(long qty) {
this.qty = qty;
}
public double getPrice() {
return price;
}
public int getAutoMode() {
return autoMode;
public double getDiffAmt() {
return this.diffAmt;
}
public boolean isModifier() {
return isModifier;
}
public int getBgColor() {
return bgColor;
public void setDiffAmt(double diffAmt) {
this.diffAmt = diffAmt;
}
public int getFontColor() {
return fontColor;
}
public void setName1(String name1) {
this.name1 = name1;
public long getSeqNo() {
return this.seqNo;
}
public void setName2(String name2) {
this.name2 = name2;
}
public Modifier getModifier() {
return modifier;
public void setSeqNo(long seqNo) {
this.seqNo = seqNo;
}
public void setId(Long id) {
this.id = id;
}
public void setComId(Long comId) {
this.comId = comId;
public long getVisible() {
return this.visible;
}
public void setFid(Long fid) {
this.fid = fid;
}
public void setQty(Long qty) {
this.qty = qty;
public void setVisible(long visible) {
this.visible = visible;
}
public void setDiffAmt(Double diffAmt) {
this.diffAmt = diffAmt;
}
public void setSeqNo(Long seqNo) {
this.seqNo = seqNo;
public Date getCreateTime() {
return this.createTime;
}
public void setVisible(Long visible) {
this.visible = visible;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public void setConditions(Long conditions) {
this.conditions = conditions;
public String getCreateBy() {
return this.createBy;
}
public void setIsRT(Long isRT) {
this.isRT = isRT;
}
public void setDeletes(Byte deletes) {
this.deletes = deletes;
}
public void setPosId(Long posId) {
this.posId = posId;
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public void setRestaurant_id(Long restaurant_id) {
this.restaurant_id = restaurant_id;
}
public void setIsMainAccount(Byte isMainAccount) {
this.isMainAccount = isMainAccount;
public Date getUpdateTime() {
return this.updateTime;
}
public void setName(String name) {
this.name = name;
}
public void setParentId(long parentId) {
this.parentId = parentId;
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public void setPrice(double price) {
this.price = price;
}
public void setAutoMode(int autoMode) {
this.autoMode = autoMode;
public long getConditions() {
return this.conditions;
}
public void setModifier(boolean modifier) {
isModifier = modifier;
}
public void setBgColor(int bgColor) {
this.bgColor = bgColor;
public void setConditions(long conditions) {
this.conditions = conditions;
}
public void setFontColor(int fontColor) {
this.fontColor = fontColor;
}
public void setModifier(Modifier modifier) {
this.modifier = modifier;
public long getIsRT() {
return this.isRT;
}
public int getSelectQty() {
return selectQty;
}
public void setSelectQty(int selectQty) {
this.selectQty = selectQty;
public void setIsRT(long isRT) {
this.isRT = isRT;
}
public String getDefmodifier() {
return defmodifier;
}
public void setDefmodifier(String defmodifier) {
this.defmodifier = defmodifier;
public byte getDeletes() {
return this.deletes;
}
public static ComboItem addFoodInfo(Food food, ComboItem foodCombo) {
foodCombo.setName(food.getFoodName());
foodCombo.setFid(food.getId());
foodCombo.setPrice(food.getPrice());
foodCombo.setAutoMode(food.getAutoMod());
return foodCombo;
}
public void setId(long id) {
this.id = id;
public void setDeletes(byte deletes) {
this.deletes = deletes;
}
public void setComId(long comId) {
this.comId = comId;
}
public void setFid(long fid) {
this.fid = fid;
public long getPosId() {
return this.posId;
}
public void setQty(long qty) {
this.qty = qty;
}
public void setDiffAmt(double diffAmt) {
this.diffAmt = diffAmt;
public void setPosId(long posId) {
this.posId = posId;
}
public void setSeqNo(long seqNo) {
this.seqNo = seqNo;
}
public void setVisible(long visible) {
this.visible = visible;
public long getRestaurant_id() {
return this.restaurant_id;
}
public void setConditions(long conditions) {
this.conditions = conditions;
}
public void setIsRT(long isRT) {
this.isRT = isRT;
public void setRestaurant_id(long restaurant_id) {
this.restaurant_id = restaurant_id;
}
public void setDeletes(byte deletes) {
this.deletes = deletes;
}
public void setPosId(long posId) {
this.posId = posId;
public byte getIsMainAccount() {
return this.isMainAccount;
}
public void setRestaurant_id(long restaurant_id) {
this.restaurant_id = restaurant_id;
}
public void setIsMainAccount(byte isMainAccount) {
this.isMainAccount = isMainAccount;
}
//
// public long getKtPrintMainItem() {
// return ktPrintMainItem;
// }
//
// public void setKtPrintMainItem(long ktPrintMainItem) {
// this.ktPrintMainItem = ktPrintMainItem;
// }
//
// public long getPrintFont() {
// return printFont;
// }
//
// public void setPrintFont(long printFont) {
// this.printFont = printFont;
// }
//
// public long getPrintToBill() {
// return printToBill;
// }
//
// public void setPrintToBill(long printToBill) {
// this.printToBill = printToBill;
// }
//
// public long getPrintTo() {
// return printTo;
// }
//
// public void setPrintTo(long printTo) {
// this.printTo = printTo;
// }
//
// public long getKtShowPrice() {
// return ktShowPrice;
// }
//
// public void setKtShowPrice(long ktShowPrice) {
// this.ktShowPrice = ktShowPrice;
// }
public String getPrintSeting() {
return printSeting;
return this.printSeting;
}
public void setPrintSeting(String printSeting) {
this.printSeting = printSeting;
}
}
......@@ -25,8 +25,8 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> {
*/
public static class Properties {
public final static Property Id = new Property(0, Long.class, "id", true, "_id");
public final static Property ComId = new Property(1, long.class, "comId", false, "COM_ID");
public final static Property Fid = new Property(2, long.class, "fid", false, "FID");
public final static Property ComId = new Property(1, Long.class, "comId", false, "COM_ID");
public final static Property Fid = new Property(2, Long.class, "fid", false, "FID");
public final static Property Qty = new Property(3, long.class, "qty", false, "QTY");
public final static Property DiffAmt = new Property(4, double.class, "diffAmt", false, "DIFF_AMT");
public final static Property SeqNo = new Property(5, long.class, "seqNo", false, "SEQ_NO");
......@@ -57,8 +57,8 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> {
String constraint = ifNotExists? "IF NOT EXISTS ": "";
db.execSQL("CREATE TABLE " + constraint + "\"COMBO_ITEM\" (" + //
"\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id
"\"COM_ID\" INTEGER NOT NULL ," + // 1: comId
"\"FID\" INTEGER NOT NULL ," + // 2: fid
"\"COM_ID\" INTEGER," + // 1: comId
"\"FID\" INTEGER," + // 2: fid
"\"QTY\" INTEGER NOT NULL ," + // 3: qty
"\"DIFF_AMT\" REAL NOT NULL ," + // 4: diffAmt
"\"SEQ_NO\" INTEGER NOT NULL ," + // 5: seqNo
......@@ -89,8 +89,16 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> {
if (id != null) {
stmt.bindLong(1, id);
}
stmt.bindLong(2, entity.getComId());
stmt.bindLong(3, entity.getFid());
Long comId = entity.getComId();
if (comId != null) {
stmt.bindLong(2, comId);
}
Long fid = entity.getFid();
if (fid != null) {
stmt.bindLong(3, fid);
}
stmt.bindLong(4, entity.getQty());
stmt.bindDouble(5, entity.getDiffAmt());
stmt.bindLong(6, entity.getSeqNo());
......@@ -131,8 +139,16 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> {
if (id != null) {
stmt.bindLong(1, id);
}
stmt.bindLong(2, entity.getComId());
stmt.bindLong(3, entity.getFid());
Long comId = entity.getComId();
if (comId != null) {
stmt.bindLong(2, comId);
}
Long fid = entity.getFid();
if (fid != null) {
stmt.bindLong(3, fid);
}
stmt.bindLong(4, entity.getQty());
stmt.bindDouble(5, entity.getDiffAmt());
stmt.bindLong(6, entity.getSeqNo());
......@@ -174,8 +190,8 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> {
public ComboItem readEntity(Cursor cursor, int offset) {
ComboItem entity = new ComboItem( //
cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
cursor.getLong(offset + 1), // comId
cursor.getLong(offset + 2), // fid
cursor.isNull(offset + 1) ? null : cursor.getLong(offset + 1), // comId
cursor.isNull(offset + 2) ? null : cursor.getLong(offset + 2), // fid
cursor.getLong(offset + 3), // qty
cursor.getDouble(offset + 4), // diffAmt
cursor.getLong(offset + 5), // seqNo
......@@ -197,8 +213,8 @@ public class ComboItemDao extends AbstractDao<ComboItem, Long> {
@Override
public void readEntity(Cursor cursor, ComboItem entity, int offset) {
entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
entity.setComId(cursor.getLong(offset + 1));
entity.setFid(cursor.getLong(offset + 2));
entity.setComId(cursor.isNull(offset + 1) ? null : cursor.getLong(offset + 1));
entity.setFid(cursor.isNull(offset + 2) ? null : cursor.getLong(offset + 2));
entity.setQty(cursor.getLong(offset + 3));
entity.setDiffAmt(cursor.getDouble(offset + 4));
entity.setSeqNo(cursor.getLong(offset + 5));
......
......@@ -162,7 +162,7 @@ public class ComboItemDaoUtils {
ArrayList<ComboItem> comboItems = new ArrayList<>();
// String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD FROM COMBO_ITEM c join FOOD f on c.FID=f.FID and f.INVISIBLE=0 join FOOD_COMBO r on r.COM_ID=c.COM_ID ";
String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD,f.PRINT_SETING,SELECT_QTY,DEF_MODIFIER,INVISIBLE FROM COMBO_ITEM c join FOOD f on c.FID=f.FID and f.INVISIBLE!=1 join FOOD_COMBO r on r.COM_ID=c.COM_ID and r.DELETES!=1";
String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD,f.PRINT_SETING,f.ABLE_DISCOUNT,SELECT_QTY,DEF_MODIFIER,INVISIBLE,POINTS_ADD,POINTS_RATIO,POINTS_REDEEM FROM COMBO_ITEM c join FOOD f on c.FID=f.FID and f.INVISIBLE!=1 join FOOD_COMBO r on r.COM_ID=c.COM_ID and r.DELETES!=1";
if (fid > 0) {
sql = sql + " where r.FID='" + fid + "'";
......@@ -183,7 +183,10 @@ public class ComboItemDaoUtils {
order.setSelectQty(c.getInt(c.getColumnIndex("SELECT_QTY")));
order.setInvisible(c.getLong(c.getColumnIndex("INVISIBLE")));
order.setPrintSeting(c.getString(c.getColumnIndex("PRINT_SETING")));
int deletes = c.getInt(c.getColumnIndex("DELETES"));
order.setAblediscount(c.getLong(c.getColumnIndex("ABLE_DISCOUNT")));
order.setPointsAdd(c.getDouble(c.getColumnIndex("POINTS_ADD")));
order.setPointsRatio(c.getLong(c.getColumnIndex("POINTS_RATIO")));
order.setPointsRedeem(c.getDouble(c.getColumnIndex("POINTS_REDEEM")));
String defmodifier = c.getString(c.getColumnIndex("DEF_MODIFIER"));
if (!TextUtils.isEmpty(defmodifier) && !", ".equals(defmodifier)) {
order.setDefmodifier(defmodifier);
......
......@@ -324,7 +324,7 @@ public class ModifierDaoUtils {
// String sql = " SELECT MODIFIER.mid,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT" +
// " FROM MODIFIER join FOOD_MODIFIER on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.seq,MODIFIER.SEQ_NO";
String sql = " SELECT MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,MAX_QTY,MIN_QTY" +
String sql = " SELECT MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT" +
" FROM MODIFIER join FOOD_MODIFIER fm on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE!=1 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO";
List<Modifier> mfs_child = new ArrayList<>();
......@@ -337,14 +337,14 @@ public class ModifierDaoUtils {
switch (mode) {
case modifierMode_All:
sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY" +
sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT" +
" FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE!=1 and m.IS_PARENT=1 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.SEQ_NO";
mfs_child1 = query_modifier_Child_new(sqlstr, fid);
List<Modifier> mfs_child2 = new ArrayList<>();
sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY" +
sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT" +
" FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE!=1 and m.IS_PARENT=0 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.SEQ_NO";
mfs_child2 = query_modifier_Child_new(sqlstr, fid);
......@@ -397,6 +397,7 @@ public class ModifierDaoUtils {
order.setModMsg(c.getLong(c.getColumnIndex("MOD_MSG")));
order.setModTaste(c.getLong(c.getColumnIndex("MOD_TASTE")));
order.setMultiple(c.getDouble(c.getColumnIndex("MULTIPLE")));
order.setAbleDisCount(c.getLong(c.getColumnIndex("ABLE_DIS_COUNT")));
order.setInvisible(c.getLong(c.getColumnIndex("INVISIBLE")));
if (fid != 0) {
//非公共細項
......
......@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.zxing;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ContentUris;
import android.content.Context;
import android.content.DialogInterface;
......@@ -11,6 +12,7 @@ import android.content.pm.PackageManager;
import android.content.res.AssetFileDescriptor;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.PointF;
import android.media.AudioManager;
import android.media.MediaPlayer;
......@@ -32,8 +34,8 @@ import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import com.billy.cc.core.component.CC;
import com.dlazaro66.qrcodereaderview.QRCodeReaderView;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.R2;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
......@@ -53,6 +55,7 @@ import com.google.zxing.Result;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.QRCodeReader;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.base.delegate.IActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.mvp.IView;
......@@ -60,56 +63,58 @@ import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DrawableProvider;
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton;
import com.qmuiteam.qmui.widget.QMUITopBar;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.Hashtable;
import java.util.List;
import java.util.Vector;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import butterknife.BindView;
import butterknife.OnClick;
import cn.bingoogolapple.photopicker.activity.BGAPhotoPickerActivity;
import cn.bingoogolapple.qrcode.core.QRCodeView;
import cn.bingoogolapple.qrcode.zxing.ZXingView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements IView, Callback, OnClickListener, QRCodeReaderView.OnQRCodeReadListener {
public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements IView, QRCodeView.Delegate, OnClickListener {
@BindView(R2.id.topbar)
QMUITopBar mTopBar;
@BindView(R2.id.btn_album)
TextView btn_album;
@BindView(R2.id.qrdecoderview)
QRCodeReaderView qrCodeReaderView;
// @BindView(R2.id.preview_view)
// SurfaceView preview_view;
// @BindView(R2.id.viewfinder_view)
// ViewfinderView viewfinderView;
// private Vector<BarcodeFormat> decodeFormats;
private String characterSet;
private MediaPlayer mediaPlayer;
private boolean hasSurface;
private boolean playBeep;
private static final float BEEP_VOLUME = 0.10f;
private boolean vibrate;
@BindView(R2.id.zxingview)
ZXingView mZXingView;
private final int ALBUM_REQUEST_CODE = 6;
public static final int PHOTOZOOM = 0; // 相册
private boolean isCheckSelfPermission = false;
private String cameraPermissions = Manifest.permission.CAMERA;//请求的权限
private String[] needPermissions = {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
};
private final int CAMERA_STORAGE_REQUEST_CODE = 11;
public static final int CALL_BACK_QR_RESULT = 100;
private static final int REQUEST_CODE_CHOOSE_QRCODE_FROM_GALLERY = 666;
private String title = "掃碼";
public static void startMipcaCaptureActivity(Context context, String title) {
Intent intent = new Intent(context, MipcaCaptureActivity.class);
intent.putExtra("title", title);
context.startActivity(intent);
// context.startActivityForResult(intent, MealStandActivity.SCAN_REQUEST_CODE);
}
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
......@@ -128,28 +133,14 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
@Override
public void initData(@Nullable Bundle savedInstanceState) {
qrCodeReaderView.setOnQRCodeReadListener(this);
// Use this function to enable/disable decoding
qrCodeReaderView.setQRDecodingEnabled(true);
// Use this function to change the autofocus interval (default is 5 secs)
qrCodeReaderView.setAutofocusInterval(2000L);
// Use this function to enable/disable Torch
qrCodeReaderView.setTorchEnabled(true);
// Use this function to set front camera preview
qrCodeReaderView.setFrontCamera();
// Use this function to set back camera preview
qrCodeReaderView.setBackCamera();
hasSurface = false;
mZXingView.setDelegate(this);
}
@Override
public void initIntent() {
Intent intent = getIntent();
title = intent.getStringExtra("title");
}
@Override
......@@ -163,7 +154,7 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
killMyself();
}
});
mTopBar.setTitle("掃碼");
mTopBar.setTitle(title);
}
@Override
......@@ -182,82 +173,32 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
}
@Override
protected void onResume() {
super.onResume();
qrCodeReaderView.startCamera();
}
@Override
protected void onPause() {
super.onPause();
qrCodeReaderView.stopCamera();
}
protected void onStart() {
super.onStart();
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
mZXingView.startCamera(); // 打开后置摄像头开始预览,但是并未开始识别
// mZXingView.startCamera(Camera.CameraInfo.CAMERA_FACING_FRONT); // 打开前置摄像头开始预览,但是并未开始识别
mZXingView.startSpotAndShowRect(); // 显示扫描框,并开始识别
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
protected void onStop() {
mZXingView.stopCamera(); // 关闭摄像头预览,并且隐藏扫描框
super.onStop();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
hasSurface = false;
}
// public ViewfinderView getViewfinderView() {
// return viewfinderView;
// }
//
// public Handler getHandler() {
// return handler;
// }
//
// public void drawViewfinder() {
// viewfinderView.drawViewfinder();
// }
private void initBeepSound() {
if (playBeep && mediaPlayer == null) {
setVolumeControlStream(AudioManager.STREAM_MUSIC);
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnCompletionListener(beepListener);
AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.beep);
try {
mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength());
file.close();
mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME);
mediaPlayer.prepare();
} catch (IOException e) {
mediaPlayer = null;
}
}
protected void onDestroy() {
mZXingView.onDestroy(); // 销毁二维码扫描控件
super.onDestroy();
}
private static final long VIBRATE_DURATION = 200L;
@SuppressLint("MissingPermission")
private void playBeepSoundAndVibrate() {
if (playBeep && mediaPlayer != null) {
mediaPlayer.start();
}
if (vibrate) {
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(VIBRATE_DURATION);
}
private void vibrate() {
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(200);
}
/**
* When the beep has finished playing, rewind to queue up another one.
*/
private final OnCompletionListener beepListener = mediaPlayer -> mediaPlayer.seekTo(0);
@OnClick({R2.id.btn_album})
public void onClick(View v) {
if (v.getId() == R.id.btn_album) {
......@@ -275,6 +216,18 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, PHOTOZOOM);
}
/*
从相册选取二维码图片,这里为了方便演示,使用的是
https://github.com/bingoogolapple/BGAPhotoPicker-Android
这个库来从图库中选择二维码图片,这个库不是必须的,你也可以通过自己的方式从图库中选择图片
*/
// Intent photoPickerIntent = new BGAPhotoPickerActivity.IntentBuilder(this)
// .cameraFileDir(null)
// .maxChooseCount(1)
// .selectedPhotos(null)
// .pauseOnScroll(false)
// .build();
// startActivityForResult(photoPickerIntent, REQUEST_CODE_CHOOSE_QRCODE_FROM_GALLERY);
}
}
......@@ -282,6 +235,10 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 显示扫描框,并开始识别
mZXingView.startSpotAndShowRect();
if (requestCode == PHOTOZOOM) {
if (data == null) {
return;
......@@ -294,14 +251,80 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
finish();
return;
}
// qrCodeResult(result);
mZXingView.decodeQRCode(result.getText());
}
} else {
finish();
}
// if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE_CHOOSE_QRCODE_FROM_GALLERY) {
// final String picturePath = BGAPhotoPickerActivity.getSelectedPhotos(data).get(0);
// // 本来就用到 QRCodeView 时可直接调 QRCodeView 的方法,走通用的回调
// mZXingView.decodeQRCode(picturePath);
//
// }
}
@Override
public void showLoading(String message) {
if (message != null)
LoadingDialog.showDialogForLoading(this, message, true);
else
LoadingDialog.showDialogForLoading(this);
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
@Override
public void onScanQRCodeSuccess(String result) {
Log.i(TAG, "onScanQRCodeSuccess:" + result);
showMessage("掃描結果: " + result);
vibrate();
mZXingView.startSpot(); // 开始识别
}
@Override
public void onCameraAmbientBrightnessChanged(boolean isDark) {
// 这里是通过修改提示文案来展示环境是否过暗的状态,接入方也可以根据 isDark 的值来实现其他交互效果
String tipText = mZXingView.getScanBoxView().getTipText();
String ambientBrightnessTip = "\n環境過暗,請打開閃光燈";
if (isDark) {
if (!tipText.contains(ambientBrightnessTip)) {
mZXingView.getScanBoxView().setTipText(tipText + ambientBrightnessTip);
}
} else {
if (tipText.contains(ambientBrightnessTip)) {
tipText = tipText.substring(0, tipText.indexOf(ambientBrightnessTip));
mZXingView.getScanBoxView().setTipText(tipText);
}
}
}
@Override
public void onScanQRCodeOpenCameraError() {
showMessage("打開相機出錯!");
}
private Bitmap scanBitmap;
//解析二维码图片,返回结果封装在Result对象中
private com.google.zxing.Result parseQRcodeBitmap(Uri uri) {
......@@ -309,47 +332,36 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
if (path == null) {
return null;
}
scanBitmap = BitmapUtil.decodeUri(this, uri, 500, 500);
Bitmap scanBitmap = BitmapUtil.decodeUri(this, uri, 500, 500);
Hashtable<DecodeHintType, String> hints = new Hashtable<>();
hints.put(DecodeHintType.CHARACTER_SET, "UTF-8"); // 设置二维码内容的编码
// BitmapFactory.Options options = new BitmapFactory.Options();
// options.inJustDecodeBounds = true; // 先获取原大小
// scanBitmap = BitmapFactory.decodeFile(path, options);
//
//// ercode_img.setImageBitmap(BitmapFactory.decodeFile(path));//filePath);
// options.inJustDecodeBounds = false;
// int sampleSize = (int) (options.outHeight / (float) 200);
// if (sampleSize <= 0)
// sampleSize = 1;
//
// options.inSampleSize = sampleSize;
//
// scanBitmap = BitmapFactory.decodeFile(path, options);
// int[] data = new int[scanBitmap.getWidth() * scanBitmap.getHeight()];
// scanBitmap.getPixels(data, 0, scanBitmap.getWidth(), 0, 0, scanBitmap.getWidth(), scanBitmap.getHeight());
// 设置二维码内容的编码
hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
//新建一个RGBLuminanceSource对象,将bitmap图片传给此对象
// RGBLuminanceSource rgbLuminanceSource = new RGBLuminanceSource(scanBitmap);
// //将图片转换成二进制图片
// BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(rgbLuminanceSource));
// //初始化解析对象
// QRCodeReader reader = new QRCodeReader();
// scanBitmap.recycle();
// //开始解析
int width = scanBitmap.getWidth();
int height = scanBitmap.getHeight();
int[] pixels = new int[width * height];
scanBitmap.getPixels(pixels, 0, width, 0, 0, width, height);
RGBLuminanceSource rgbLuminanceSource = new RGBLuminanceSource(width, height, pixels);
//将图片转换成二进制图片
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(rgbLuminanceSource));
//初始化解析对象
QRCodeReader reader = new QRCodeReader();
scanBitmap.recycle();
//开始解析
Result result = null;
// try {
// result = reader.decode(binaryBitmap, hints);
// } catch (NotFoundException e) {
// Log.e("hxy", "NotFoundException");
// } catch (ChecksumException e) {
// Log.e("hxy", "ChecksumException");
// } catch (FormatException e) {
// Log.e("hxy", "FormatException");
// }
try {
result = reader.decode(binaryBitmap, hints);
} catch (NotFoundException e) {
Log.e("hxy", "NotFoundException");
} catch (ChecksumException e) {
Log.e("hxy", "ChecksumException");
} catch (FormatException e) {
Log.e("hxy", "FormatException");
}
return result;
}
@SuppressLint("NewApi")
public static String getPath(final Context context, final Uri uri) {
final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
// DocumentProvider
......@@ -362,7 +374,6 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
if ("primary".equalsIgnoreCase(type)) {
return Environment.getExternalStorageDirectory() + "/" + split[1];
}
// TODO handle non-primary volumes
}
// DownloadsProvider
else if (isDownloadsDocument(uri)) {
......@@ -405,8 +416,17 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
return null;
}
public static String getDataColumn(Context context, Uri uri, String selection,
String[] selectionArgs) {
/**
* Get the value of the data column for this Uri. This is useful for
* MediaStore Uris, and other file-based ContentProviders.
*
* @param context The context.
* @param uri The Uri to query.
* @param selection (Optional) Filter used in the query.
* @param selectionArgs (Optional) Selection arguments used in the query.
* @return The value of the _data column, which is typically a file path.
*/
public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {
Cursor cursor = null;
final String column = "_data";
final String[] projection = {
......@@ -457,45 +477,4 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
public static boolean isGooglePhotosUri(Uri uri) {
return "com.google.android.apps.photos.content".equals(uri.getAuthority());
}
@Override
public void showLoading(String message) {
if (message != null)
LoadingDialog.showDialogForLoading(this, message, true);
else
LoadingDialog.showDialogForLoading(this);
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.makeText(this, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
@Override
public void onQRCodeRead(String text, PointF[] points) {
Intent intent = new Intent();
intent.putExtra("qrCodeResult",text);
setResult(CALL_BACK_QR_RESULT,intent);
finish();
// showMessage("onQRCodeRead "+text);
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout 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:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- <SurfaceView-->
<!-- android:id="@+id/preview_view"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:layout_gravity="center"/>-->
<!-- <com.gingersoft.gsa.cloud.zxing.view.ViewfinderView-->
<!-- android:id="@+id/viewfinder_view"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content" />-->
<!-- <LinearLayout-->
<!-- android:id="@+id/title_layout"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_alignParentTop="true"-->
<!-- android:orientation="vertical">-->
<!-- <com.zxing.view.ViewfinderView-->
<!-- android:id="@+id/viewfinder_view"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content" />-->
android:layout_height="@dimen/head_height"
app:qmui_topbar_title_color="@color/theme_white_color" />
<!-- <include layout="@layout/title_bar_" />-->
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
android:layout_width="match_parent"
android:layout_height="@dimen/head_height"
app:qmui_topbar_title_color="@color/theme_white_color" />
<TextView
android:id="@+id/btn_album"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:text="相冊"
android:paddingLeft="@dimen/normal_space12"
android:paddingRight="@dimen/normal_space12"
android:paddingTop="@dimen/normal_space5"
android:paddingBottom="@dimen/normal_space5"
android:textColor="@color/white"
android:layout_below="@+id/topbar"
android:layout_marginTop="@dimen/head_height"
android:background="@drawable/shape_delivery_item_btn_normal"
android:textSize="@dimen/font_normal2"
android:layout_gravity="right"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.dlazaro66.qrcodereaderview.QRCodeReaderView
android:id="@+id/qrdecoderview"
<cn.bingoogolapple.qrcode.zxing.ZXingView
android:id="@+id/zxingview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/head_height"/>
app:qrcv_animTime="1000"
app:qrcv_barCodeTipText="將條碼放入框內,即可自動掃描"
app:qrcv_barcodeRectHeight="120dp"
app:qrcv_borderColor="@android:color/white"
app:qrcv_borderSize="1dp"
app:qrcv_cornerColor="@color/colorPrimaryDark"
app:qrcv_cornerDisplayType="center"
app:qrcv_cornerLength="20dp"
app:qrcv_cornerSize="3dp"
app:qrcv_customScanLineDrawable="@mipmap/qrcode_default_scan_line"
app:qrcv_isAutoZoom="true"
app:qrcv_isBarcode="false"
app:qrcv_isOnlyDecodeScanBoxArea="false"
app:qrcv_isScanLineReverse="true"
app:qrcv_isShowDefaultGridScanLineDrawable="false"
app:qrcv_isShowDefaultScanLineDrawable="true"
app:qrcv_isShowLocationPoint="true"
app:qrcv_isShowTipBackground="true"
app:qrcv_isShowTipTextAsSingleLine="false"
app:qrcv_isTipTextBelowRect="false"
app:qrcv_maskColor="@color/trans"
app:qrcv_qrCodeTipText="將二維碼/條碼框內,即可自動掃描"
app:qrcv_rectWidth="200dp"
app:qrcv_scanLineColor="@color/colorPrimaryDark"
app:qrcv_scanLineMargin="0dp"
app:qrcv_scanLineSize="0.5dp"
app:qrcv_tipTextColor="@android:color/white"
app:qrcv_tipTextSize="12sp"
app:qrcv_toolbarHeight="56dp"
app:qrcv_topOffset="65dp"
app:qrcv_verticalBias="-1" />
<com.gingersoft.gsa.cloud.zxing.PointsOverlayView
android:id="@+id/points_overlay_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:id="@+id/btn_album"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:text="相冊"
android:paddingLeft="@dimen/normal_space12"
android:paddingRight="@dimen/normal_space12"
android:paddingTop="@dimen/normal_space5"
android:paddingBottom="@dimen/normal_space5"
android:textColor="@color/white"
android:layout_below="@+id/topbar"
android:layout_marginTop="@dimen/head_height"
android:background="@drawable/shape_delivery_item_btn_normal"
android:textSize="@dimen/font_normal2"
android:layout_gravity="right"/>
<!-- </LinearLayout>-->
</RelativeLayout>
</FrameLayout>
\ No newline at end of file
</FrameLayout>
</LinearLayout>
\ No newline at end of file
......@@ -26,5 +26,5 @@ QMUI_LINT_VERSION = 1.1.0
QMUI_SKIN_MAKER_VERSION = 0.0.1
POM_GIT_URL=https://github.com/Tencent/QMUI_Android/
POM_SITE_URL=https://qmuiteam.com/android
android.injected.testOnly=false
#android.injected.testOnly=false
......@@ -324,11 +324,11 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
if (mTableItem.getLayoutType() == 0 && mTableItem.getServiceCharge() != 0) {
serverchargeEditText.setText(mTableItem.getServiceCharge() + "");
}
InputFilter[] filters3 = {new InputFilter.LengthFilter(5)};
InputFilter[] filters3 = {new InputFilter.LengthFilter(2)};
serverchargeEditText.setFilters(filters3);
serverchargeEditText.setTextSize(16);
serverchargeEditText.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans));
serverchargeEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
serverchargeEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
serverchargeItemView.addAccessoryCustomView(serverchargeEditText);
// 如下是内容为空的配置,需要两个属性结合使用;如果有默认值,进行相反的配置
// 设置文字的对齐方式
......
......@@ -82,7 +82,7 @@ class CoolWeatherNetwork {
suspend fun noticePersonnel(requestBody: RequestBody) = appService.noticePersonnel(requestBody).await()
// suspend fun getTransportationConfig(restaurantId: String) = systemService.getTransportationConfig(restaurantId).await()
suspend fun getTransportationConfig(restaurantId: String) = systemService.getTransportationConfig(restaurantId).await()
private suspend fun <T> Call<T>.await(): T {
return suspendCoroutine { continuation ->
......
......@@ -69,6 +69,6 @@ interface WeatherService {
@POST("printerRecording/add")
fun addPrj(@Body requestBody: RequestBody): Call<String>
// @GET("restaurantTransportationConfig/list")
// fun getTransportationConfig(@Query("restaurantId") restaurantId: String):Call<TransportationBean>
@GET("restaurantTransportationConfig/list")
fun getTransportationConfig(@Query("restaurantId") restaurantId: String):Call<TransportationBean>
}
\ No newline at end of file
......@@ -107,7 +107,6 @@ public class OrderDetailItem implements Serializable {
public static final byte STATUS_CANCEL = 6;
@Data
public static class OrderPayBean implements Serializable{
private long id;
......
......@@ -5,6 +5,8 @@ import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import java.util.List;
import java.util.Map;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
......@@ -14,74 +16,22 @@ import java.util.Map;
*/
public class DeleteOrderRequest {
@Data
public static class Request{
private List<Map<Byte, DeleteOrderRequest.DeleteBean>> mapsDelete;
private long orderId ;
private long tableId;
private String tableNumber;
private byte type;
private long reasonId;
public List<Map<Byte, DeleteOrderRequest.DeleteBean>> getMapsDelete() {
return mapsDelete;
}
public void setMapsDelete(List<Map<Byte, DeleteOrderRequest.DeleteBean>> mapsDelete) {
this.mapsDelete = mapsDelete;
}
public long getOrderId() {
return orderId;
}
public void setOrderId(long orderId) {
this.orderId = orderId;
}
public long getTableId() {
return tableId;
}
public void setTableId(long tableId) {
this.tableId = tableId;
}
public byte getType() {
return type;
}
public void setType(byte type) {
this.type = type;
}
public long getReasonId() {
return reasonId;
}
public void setReasonId(long reasonId) {
this.reasonId = reasonId;
}
}
@Data
public static class DeleteBean{
private long id;
private int number;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
}
......@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.table.mvp.presenter;
import android.app.Activity;
import android.app.Application;
import android.content.Intent;
import android.text.TextUtils;
import android.widget.TextView;
......@@ -13,6 +14,7 @@ import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.database.bean.Discount;
......@@ -20,16 +22,21 @@ import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.contract.BaseOrderContract;
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.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.OrderMoneyAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.gingersoft.gsa.cloud.zxing.MipcaCaptureActivity;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import com.jess.arms.utils.PermissionUtil;
import com.jess.arms.utils.RxLifecycleUtils;
import com.tbruyelle.rxpermissions2.RxPermissions;
import java.util.ArrayList;
import java.util.Collections;
......@@ -138,6 +145,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
addTableServiceAmount();
addSentOrderDiscount();
addOrderRounding();
updateOrderDiscount();
//設置賬單總金額
myOrderManage.setTotalAmount(getTotalAmount());
......@@ -217,6 +225,29 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
});
}
protected void toScanActivity() {
PermissionUtil.launchCamera(new PermissionUtil.RequestPermission() {
@Override
public void onRequestPermissionSuccess() {
Intent intent = new Intent(IActivity, MipcaCaptureActivity.class);
IActivity.startActivityForResult(intent, MealStandActivity.SCAN_REQUEST_CODE);
}
@Override
public void onRequestPermissionFailure(List<String> permissions) {
DeviceUtils.startSetting(IActivity);
mRootView.showMessage(LanguageUtils.get_language_system(IActivity, "please.open.camera.permissions", "請前往設置開放照相機權限"));
}
@Override
public void onRequestPermissionFailureWithAskNeverAgain(List<String> permissions) {
DeviceUtils.startSetting(IActivity);
mRootView.showMessage(LanguageUtils.get_language_system(IActivity, "please.open.camera.permissions", "請前往設置開放照相機權限"));
}
}, new RxPermissions(IActivity), mErrorHandler);
}
public void changeNumber(int number) {
if (!changeNumberCondition(number)) {
return;
......@@ -341,7 +372,8 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
if (dataBean == null) {
return;
}
double serviceAmount = getTotalAmountFilterByType(BillOrderMoney.SERVERCHARGE_TYPE, BillOrderMoney.DISCOUNT_TYPE, BillOrderMoney.ROUNDING_TYPE) * dataBean.getServiceCharge() / 100;
// double serviceAmount = getTotalAmountFilterByType(BillOrderMoney.SERVERCHARGE_TYPE, BillOrderMoney.DISCOUNT_TYPE, BillOrderMoney.ROUNDING_TYPE) * dataBean.getServiceCharge() / 100;
double serviceAmount = getFoodTotal() * dataBean.getServiceCharge() / 100;
if (serviceAmount > 0) {
BillOrderMoney orderMoney = new BillOrderMoney();
orderMoney.setMoney(MoneyUtil.get_ItemDecimals_money(serviceAmount));
......@@ -360,15 +392,16 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
/**
* 更新账单折扣
* 更新服务费
*/
private void updateTableServiceAmount() {
BillOrderMoney billOrderMoney = getBillOrderItemByType(BillOrderMoney.SERVERCHARGE_TYPE);
if (billOrderMoney != null) {
TableBean.DataBean dataBean = OpenTableManage.getDefault().getTableBean();
double serviceAmount = getTotalAmountFilterByType(BillOrderMoney.SERVERCHARGE_TYPE, BillOrderMoney.DISCOUNT_TYPE, BillOrderMoney.ROUNDING_TYPE) * dataBean.getServiceCharge() / 100;
// double serviceAmount = getTotalAmountFilterByType(BillOrderMoney.SERVERCHARGE_TYPE, BillOrderMoney.DISCOUNT_TYPE, BillOrderMoney.ROUNDING_TYPE) * dataBean.getServiceCharge() / 100;
double serviceAmount = getFoodTotal() * dataBean.getServiceCharge() / 100;
if (serviceAmount > 0) {
billOrderMoney.setMoney(serviceAmount);
billOrderMoney.setMoney(MoneyUtil.get_ItemDecimals_money(serviceAmount));
} else {
mOrderMoneyList.remove(billOrderMoney);
}
......@@ -382,7 +415,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
* @param discount
*/
protected void addOrderDiscount(boolean init, Discount discount, int status) {
double totalMoney = getFoodTotal();
double totalMoney = getDiscountableFoodTotal();
for (BillOrderMoney item : mOrderMoneyList) {
if (item.getType() == BillOrderMoney.ROUNDING_TYPE) {
mOrderMoneyList.remove(item);
......@@ -420,7 +453,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
protected void updateOrderDiscount() {
BillOrderMoney orderMoney = getBillOrderItemByType(BillOrderMoney.DISCOUNT_TYPE);
if (orderMoney != null) {
double totalMoney = getFoodTotal();
double totalMoney = getDiscountableFoodTotal();
double discountPrice = Discount.calculationDiscount(orderMoney.getDiscount(), totalMoney);
orderMoney.setMoney(discountPrice);
}
......@@ -459,6 +492,9 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
orderDetailsBean.setPrice(-discountPrice);
break;
} else {
if (orderDetailsBean.getAblediscount() == 0)
//此食品或细项不支持折扣 直接跳过
continue;
//保存每個食品套餐折扣總額
totalMoney = MoneyUtil.sum(totalMoney, orderDetailsBean.getPrice());
//往下找
......@@ -469,7 +505,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
totalMoney = 0;
}
//參與折扣
orderDetailsBean.setAblediscount(1);
// orderDetailsBean.setAblediscount(1);
if (!orderDetailsBean.isNew()) {
if (orderDetailsBean.getDiscountStatus() == 0) {
//此食品新增折扣
......@@ -483,7 +519,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
for (int i = 0; i < orderDetailList.size(); i++) {
if (start_position <= i && i <= end_position) {
OrderDetail orderDetailsBean = orderDetailList.get(i);
orderDetailsBean.setAblediscount(0);
// orderDetailsBean.setAblediscount(0);
orderDetailsBean.setDiscountStatus(0);
}
}
......@@ -557,14 +593,54 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
/**
* 獲取食品合計金額
* 獲取食品合計
*
* @return
*/
public double getFoodTotal() {
double total = 0.0;
for (OrderDetail food : myOrderManage.getOrderFoodList()) {
total = MoneyUtil.sum(total, food.getPrice());
if (food.getType() == OrderDetail.DISCOUNT_TYPE) {
//折扣金额直接减掉
total = MoneyUtil.sub(total, Math.abs(food.getPrice()));
} else {
total = MoneyUtil.sum(total, food.getPrice());
}
}
if (total < 0) {
total = 0;
}
return MoneyUtil.get_ItemDecimals_money(total);
}
/**
* 獲取所有可折扣食品合計
*
* @return
*/
public double getDiscountableFoodTotal() {
double total = 0.0;
int orderSize = myOrderManage.getOrderFoodList().size();
for (int i = 0; i < orderSize; i++) {
OrderDetail food = myOrderManage.getOrderFoodList().get(i);
if (food.getItemType() == 1) {
if (food.getAblediscount() == 1) {
total = MoneyUtil.sum(total, food.getPrice());
}
} else {
if (food.getType() == OrderDetail.DISCOUNT_TYPE) {
//折扣金额直接减掉
total = MoneyUtil.sub(total, Math.abs(food.getPrice()));
} else {
int parentIndex = food.getParentIndex() - 1;
if (orderSize > parentIndex && myOrderManage.getOrderFoodList().get(parentIndex).getAblediscount() == 1) {
//主食品可參與折扣 子食品才能參與折扣
if (food.getAblediscount() == 1) {
total = MoneyUtil.sum(total, food.getPrice());
}
}
}
}
}
if (total < 0) {
total = 0;
......@@ -742,13 +818,14 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
protected CreateOrderRequest getCreateOrderRequest(List<OrderDetail> foodList) {
List<OrderDetail> newFoodList = new ArrayList<>();
newFoodList.addAll(foodList);
List<OrderDetail> newFoodList = OrderDetail.transNewOrderDetails(foodList);
if (GsaCloudApplication.androidSetting.isMergeSendFood()) {
//合并未送单主食品
mergeMainFoodNumber(newFoodList);
}
setChildAblediscountByMainAblediscount(newFoodList);
int restaurantId = GsaCloudApplication.getRestaurantId(mApplication);
CreateOrderRequest request = new CreateOrderRequest();
request.setTableNumber(OpenTableManage.getDefault().getTableBean().getTableNumber());
......@@ -768,14 +845,16 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
return request;
}
protected AddOrderRequest getAddOrderRequest(List<OrderDetail> foodList) {
List<OrderDetail> newFoodList = new ArrayList<>();
newFoodList.addAll(foodList);
List<OrderDetail> newFoodList = OrderDetail.transNewOrderDetails(foodList);
if (GsaCloudApplication.androidSetting.isMergeSendFood()) {
//合并未送单主食品
mergeMainFoodNumber(newFoodList);
}
setChildAblediscountByMainAblediscount(newFoodList);
AddOrderRequest request = new AddOrderRequest();
request.setTableNumber(OpenTableManage.getDefault().getTableBean().getTableNumber());
request.setMaps(orderDetailBeanToAddFoodRequest(newFoodList));
......@@ -942,6 +1021,25 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
/**
* 送单前根据主食品Ablediscount更新子食品Ablediscount(前端处理后台直接存即可)
*
* @param newFoodList
*/
private void setChildAblediscountByMainAblediscount(List<OrderDetail> newFoodList) {
int orderSize = newFoodList.size();
for (int i = 0; i < orderSize; i++) {
OrderDetail food = newFoodList.get(i);
if (food.getItemType() != 1) {
int parentIndex = food.getParentIndex() - 1;
if (orderSize > parentIndex && newFoodList.get(parentIndex).getAblediscount() == 0) {
//主食品不可參與折扣 子食品也不能參與折扣
food.setAblediscount(0);
}
}
}
}
/**
* 合并新下单主食品数量
*
* @param foodList
......
......@@ -62,6 +62,7 @@ import com.tbruyelle.rxpermissions2.RxPermissions;
import org.simple.eventbus.EventBus;
import org.simple.eventbus.Subscriber;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -158,27 +159,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
this.mApplication = null;
}
public void toScanActivity() {
PermissionUtil.launchCamera(new PermissionUtil.RequestPermission() {
@Override
public void onRequestPermissionSuccess() {
Intent intent = new Intent(IActivity, MipcaCaptureActivity.class);
IActivity.startActivityForResult(intent, MealStandActivity.SCAN_REQUEST_CODE);
}
@Override
public void onRequestPermissionFailure(List<String> permissions) {
DeviceUtils.startSetting(IActivity);
mRootView.showMessage(LanguageUtils.get_language_system(IActivity, "please.open.camera.permissions", "請前往設置開放照相機權限"));
}
@Override
public void onRequestPermissionFailureWithAskNeverAgain(List<String> permissions) {
DeviceUtils.startSetting(IActivity);
mRootView.showMessage(LanguageUtils.get_language_system(IActivity, "please.open.camera.permissions", "請前往設置開放照相機權限"));
}
}, new RxPermissions(IActivity), mErrorHandler);
public void startScanActivity() {
toScanActivity();
}
public void initMealData() {
......@@ -295,6 +277,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
addFoodItemBefore(mCurrentOrderDetailBean);
//沽清食品數量
updateFoodSoldoutCtrData();
//更新賬單金額
updateOrderMoneyItem();
updateOrderFoodNumber();
}
});
......@@ -354,8 +338,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
addModifierItem(datasBean);
//沽清細項沽清數
updateModifierSoldoutCtrData();
//更新賬單金額
updateOrderMoneyItem();
// }
}
});
......@@ -373,8 +355,12 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
// if (!discountConditionFilter(datasBean)) {
// return;
// }
cutOutDiscount();
if (cutOutDiscount() == -100) {
return;
}
addDiscountItem(datasBean);
//更新賬單金額
updateOrderMoneyItem();
}
});
}
......@@ -445,6 +431,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
addPosition = mSelectMealAdapter.addFoodItem(mCurrentOrderDetailBean);
}
//更新賬單金額
updateOrderMoneyItem();
IActivity.setFineItemSlodoutListFull(mSoldoutCtrList);
mRootView.setMealRvScrollToPosition(addPosition);
......@@ -503,16 +492,28 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
*
* @return
*/
private void cutOutDiscount() {
OrderDetail mainOrderDetail = mSelectMealAdapter.getCurrentMainOrderDetail();
if (mainOrderDetail.getItemType() == 1) {
for (OrderDetail orderDetail : mOrderFoodList) {
if (orderDetail.getParentIndex() == mainOrderDetail.getMyIndex() && orderDetail.getType() == OrderDetail.DISCOUNT_TYPE) {
mOrderFoodList.remove(orderDetail);
break;
private int cutOutDiscount() {
OrderDetail mainOrderDetail1 = mSelectMealAdapter.getCurrentMainOrderDetail();
if (mainOrderDetail1 != null) {
if (mainOrderDetail1.getItemType() == 1) {
for (int i = 0; i < mOrderFoodList.size(); i++) {
OrderDetail orderDetail = mOrderFoodList.get(i);
if (orderDetail.getParentIndex() == mainOrderDetail1.getMyIndex() && orderDetail.getType() == OrderDetail.DISCOUNT_TYPE) {
if (!orderDetail.isNew()) {
//已送单折扣不可替换
return -100;
}
if (mOrderFoodList.get(mSelectMealAdapter.getSelect_position()).getType() == OrderDetail.DISCOUNT_TYPE) {
//选中折扣 替换原有折扣防止将折扣添加到下面一个食品
mSelectMealAdapter.setSelect_position(mSelectMealAdapter.getSelect_position() - 1);
}
mSelectMealAdapter.removeItemByPosition(i);
break;
}
}
}
}
return 0;
}
/**
......@@ -524,7 +525,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
private int cutOutModifier(Modifier datasBean) {
int cutPosition = getCutPositionByOutLimitModifier(datasBean);
if (cutPosition != -1 && cutPosition != -100) {
mSelectMealAdapter.removeFoodItemByPosition(cutPosition);
mSelectMealAdapter.removeItemByPosition(cutPosition);
}
return cutPosition;
}
......@@ -538,7 +539,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
private int cutOutCombo(ComboItem datasBean) {
int cutPosition = getCutPositionOutLimitCombo(datasBean);
if (cutPosition != -1 && cutPosition != -100) {
mSelectMealAdapter.removeFoodItemByPosition(cutPosition);
mSelectMealAdapter.removeItemByPosition(cutPosition);
}
return cutPosition;
}
......@@ -1162,7 +1163,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
// }
}
private void setModifierSoldoutCtrData(List<Modifier> modifierList, List<SoldoutCtrFood> soldoutCtrFoods) {
private void setModifierSoldoutCtrData
(List<Modifier> modifierList, List<SoldoutCtrFood> soldoutCtrFoods) {
for (SoldoutCtrFood scc : soldoutCtrFoods) {
for (Modifier modifier : modifierList) {
if (scc.getType() == MODIFIER_TYPE && scc.getModifierId() != null && modifier.getMid() != 0 && modifier.getMid() == scc.getModifierId()) {
......@@ -1326,7 +1328,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return false;
}
private boolean isContainModifier(List<SoldoutCtrFood> soldoutCtrFoods, Modifier modifier) {
private boolean isContainModifier(List<SoldoutCtrFood> soldoutCtrFoods, Modifier
modifier) {
for (SoldoutCtrFood soldoutCtrFood : soldoutCtrFoods) {
if (soldoutCtrFood.getType() == MODIFIER_TYPE && soldoutCtrFood.getModifierId() == modifier.getMid()) {
return true;
......@@ -1452,6 +1455,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return false;
}
}
if (!memberPointsCondition(foodBean.getPointsRedeem(),foodBean.getFoodName())) {
return false;
}
return true;
}
......@@ -1470,6 +1476,36 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return false;
}
}
if (!memberPointsCondition(comboItem.getPointsRedeem(),comboItem.getName())) {
return false;
}
return true;
}
/**
* 積分是否滿足條件
*
* @param pointsRedeem
* @return
*/
private boolean memberPointsCondition(double pointsRedeem, String foodName) {
MemberInfo memberInfo = myOrderManage.getMemberInfo();
if (memberInfo == null) {
//当前食品需要会员积分
if (pointsRedeem > 0) {
mRootView.showMessage(LanguageUtils.get_language_system(mApplication, "unused_members_can.not.order.food", "積分食品,未使用會員,不可點選") + "\"" + foodName + "\"");
return false;
}
} else {
//如果没有会员,则pointsadd=5是加5分 pointsredeem=5是減5分
//當一張臺號沒有會員登錄時判定積分為0 不能為負數
//此時call pointsredeem=5 的食物 不給過
//點選pointsadd=5的食物 0+5 是正數 這個給過
if (pointsRedeem > 0 && memberInfo.getMemberPoint() < pointsRedeem) {
mRootView.showMessage(LanguageUtils.get_language_system(mApplication, "insufficient.points.can.not.selected", "積分食品,會員積分不足,不可點選") + "\"" + foodName + "\"");
return false;
}
}
return true;
}
......@@ -1758,57 +1794,73 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
* 添加多選細項
*/
public int addMultipleModifierItems(Modifier modifierItem, int addPosition) {
List<OrderDetail> newOrderList = new ArrayList<>();
newOrderList.addAll(mOrderFoodList);
int overIndex = 0;
for (int i = 0; i < mOrderFoodList.size(); i++) {
if (overIndex > i)
continue;
OrderDetail item = mOrderFoodList.get(i);
if (item.getSelected() != 0) {
if (item.getItemType() == 1) {
int j = i;
int insertPosition = getEndInsertPosition(newOrderList, item, i);
int insertPosition = getEndInsertPosition(mOrderFoodList, item, i);
if (insertPosition != -1) {
if (insertPosition < newOrderList.size()) {
if (insertPosition < mOrderFoodList.size()) {
j = insertPosition + 1;
} else {
j = insertPosition;
}
}
overIndex = j;
long id = item.isNew() ? item.getProductId() : item.getId();
OrderDetail modifierTransOrderDetail = OrderDetail.modifierTransOrderDetail(modifierItem, id, item.getProductId(), 1);
newOrderList.add(j, modifierTransOrderDetail);
mOrderFoodList.add(j, modifierTransOrderDetail);
setIndex(mOrderFoodList);
}
}
}
mOrderFoodList.clear();
mOrderFoodList.addAll(newOrderList);
//重新更新下標
mSelectMealAdapter.setIndex();
mSelectMealAdapter.notifyDataSetChanged();
return addPosition;
}
private int getEndInsertPosition(List<OrderDetail> newOrderList, OrderDetail orderDetail, int currentI) {
private int getEndInsertPosition(List<OrderDetail> newOrderList, OrderDetail orderDetail,
int currentI) {
boolean hasChildFood = false;
for (int i = currentI; i < newOrderList.size(); i++) {
OrderDetail item = newOrderList.get(i);
if (item.getItemType() == 2) {
continue;
}
//往下找
int nextIndex = i + 1;
// if (mOrderFoodList.size() == (nextIndex - 1) && mOrderFoodList.get(nextIndex).getItemType() == 3) {
// //最後一個並且是第三層
// return i;
// }
// if (item.getItemType() == 3 && item.getParentProductId() == orderDetail.getProductId() && mOrderFoodList.get(nextIndex).getItemType() != 3) {
// //添加到主食品細項最後面
// return i;
// }
boolean samePackage = (item.getParentProductId() == orderDetail.getProductId() || item.getProductId() == orderDetail.getProductId());
if (newOrderList.size() == nextIndex && samePackage) {
if (newOrderList.size() == nextIndex) {
//最後一個
return nextIndex;
}
if (newOrderList.get(nextIndex).getItemType() != 3) {
//添加到主食品細項最後面
return i;
if (item.getItemType() == 1) {
hasChildFood = mSelectMealAdapter.hasChildFood(item);
}
OrderDetail nextItem = newOrderList.get(nextIndex);
if (item.getItemType() == 1) {
if (hasChildFood) {
if (nextItem.getItemType() != 3) {
return i;
}
} else {
return i;
}
} else {
if (hasChildFood) {
if (nextItem.getItemType() == 1 || nextItem.getItemType() == 2) {
return i;
}
} else {
if (nextItem.getItemType() == 1) {
return nextIndex;
}
}
}
}
return -1;
......@@ -1896,7 +1948,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
discount = MoneyUtil.sum(discount, orderDetailsBean.getPrice());
}
//參與折扣
orderDetailsBean.setAblediscount(1);
// orderDetailsBean.setAblediscount(1);
if (!orderDetailsBean.isNew()) {
if (orderDetailsBean.getDiscountStatus() == 0) {
//此食品新增折扣
......@@ -1926,6 +1978,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
request.setMapsDelete(mapsDelete);
request.setOrderId(orderId);
request.setTableId(OpenTableManage.getDefault().getTableBean().getId());
request.setTableNumber(OpenTableManage.getDefault().getTableBean().getTableNumber());
request.setType(type);
request.setReasonId(reasonId);
return request;
......@@ -1939,7 +1992,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
* @param deleteNumber
* @return
*/
private List<Map<Byte, DeleteOrderRequest.DeleteBean>> getMapsDelete(String ids, int maxNumber, int deleteNumber) {
private List<Map<Byte, DeleteOrderRequest.DeleteBean>> getMapsDelete(String ids,
int maxNumber, int deleteNumber) {
List<Map<Byte, DeleteOrderRequest.DeleteBean>> deleteMaps = new ArrayList<>();
//取消食品id
String[] idsArray = ids.split(",");
......
......@@ -122,6 +122,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
this.mApplication = null;
}
public void initAdapter() {
if (mOrderTopFunctionAdapter == null) {
mOrderTopFunctionAdapter = new OrderTopFunctionAdapter(IActivity, mFunctionList);
......@@ -702,12 +703,18 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
private void showDiscountDialog() {
if (mDiscountDialog == null) {
mDiscountDialog = new DiscountDialog.Builder(IActivity);
mDiscountDialog.setCanScan(true);
mDiscountDialog.setOnClickListener(new DiscountDialog.Builder.OnClickListener() {
@Override
public void onItemClick(Discount item, int position) {
addOrderDiscount(false, item, 0);
updateOrderMoneyItem();
}
@Override
public void onScan() {
toScanActivity();
}
});
}
List<Discount> discountList = filterDiscountByType(mModel.queryDB_DiscountList("1"), "1");
......
......@@ -205,18 +205,15 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
* 結賬
*/
public void toOrderPay(boolean show) {
if(myOrderManage.isModifyOrder()){
//修改訂單
updateOrderPay();
return;
}
OrderPayView orderPayView = IActivity.getGsaPayView();
if (orderPayView.getBillMoneyList() == null || orderPayView.getBillMoneyList().size() == 0)
return;
// RequestBody requestBody = new FormBody.Builder()
// .add("orderPayType", String.valueOf(orderPayType))
// .add("payType", String.valueOf(orderPayView.getBillMoneyList().get(0).getId()))
// .add("orderId", String.valueOf(MyOrderManage.getInstance().getOrderId()))
// .add("amount", String.valueOf(orderPayView.getBillMoney()))
// .add("linePayType", String.valueOf(orderPayView.getLinePayType()))
// .add("tipsPrice", String.valueOf(orderPayView.getTipsPrice()))
// .build();
String payRequest = GsonUtils.GsonString(getOrderPayRequest(orderPayView));
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), payRequest);
......@@ -280,29 +277,33 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
/**
* 修改訂單更新支付方式
*/
// public void updateOrderPay() {
// RequestBody requestBody = new FormBody.Builder()
// .add("payType", String.valueOf(mBillMoneyList.get(0).getId()))
// .add("orderId", String.valueOf(MyOrderManage.getInstance().getOrderId()))
// .build();
// mModel.updateOrderPay(requestBody)
// .subscribeOn(Schedulers.io())
// .doOnSubscribe(disposable -> mRootView.showLoading(null))
// .subscribeOn(AndroidSchedulers.mainThread())
// .observeOn(AndroidSchedulers.mainThread())
// .doAfterTerminate(() -> mRootView.hideLoading())
// .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
// .subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
//
// @Override
// public void onNext(BaseResult baseResult) {
// if (baseResult.isSuccess()) {
// //結賬成功
// mRootView.paySuccess();
// }
// }
// });
// }
public void updateOrderPay() {
OrderPayView orderPayView = IActivity.getGsaPayView();
if (orderPayView.getBillMoneyList() == null || orderPayView.getBillMoneyList().size() == 0)
return;
String payRequest = GsonUtils.GsonString(getOrderPayRequest(orderPayView));
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), payRequest);
mModel.updateOrderPay(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onNext(BaseResult baseResult) {
if (baseResult.isSuccess()) {
//結賬成功
mRootView.paySuccess();
}
}
});
}
protected void createOrder() {
CreateOrderRequest request = getCreateOrderRequest(getOrderFoodLists());
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(request));
......
......@@ -120,16 +120,17 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
*/
private int mCurrentOperatType = -1;
/**
* 选中操作的台名、id
* 选中操作的台名、id、分檯編號
*/
private String originalTableName = "";
private long originalTableId;
private String originalTableNumber = "";
/**
* 转台需要转到台名、id
* 转台需要转到台名、id、分檯編號
*/
private String targetTableName = "";
private long targetTableId;
private String targetTableNumber = "";
@Inject
public TablePresenter(TableContract.Model model, TableContract.View rootView) {
......@@ -522,6 +523,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}
originalTableName = tableBean.getTableName();
originalTableId = tableBean.getId();
originalTableNumber = tableBean.getTableNumber();
mRootView.setOperatContentText("由: " + originalTableName + " 轉到 ");
} else {
if (tableBean.getUseStatus() == 1) {
......@@ -530,6 +532,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}
targetTableName = tableBean.getTableName();
targetTableId = tableBean.getId();
targetTableNumber = tableBean.getTableNumber();
if (tableBean.getStatus() == 1 || tableBean.getStatus() == 2 || tableBean.getStatus() == 3) {
mRootView.setOperatContentText("由: " + originalTableName + " 合併 " + targetTableName);
} else {
......@@ -545,11 +548,13 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
});
}
public void turnTable(long originalTableId, long targetTableId, boolean isMergeTable) {
public void turnTable(long originalTableId, long targetTableId, String tableNumber, String targetTableNumber, boolean isMergeTable) {
RequestBody requestBody = new FormBody.Builder()
.add("id", String.valueOf(originalTableId))
.add("tableId", String.valueOf(targetTableId))
.add("tableNumber", tableNumber)
.add("targetTableNumber", targetTableNumber)
.build();
mModel.turnTable(requestBody)
......@@ -845,7 +850,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
initTable(dataBean.getId(), dataBean.getTableNumber(), true);
break;
case TableOperatTypeConstant.move_table_4:
turnTable(originalTableId, targetTableId, finalIsMergeTable);
turnTable(originalTableId, targetTableId,originalTableNumber,targetTableNumber, finalIsMergeTable);
break;
case TableOperatTypeConstant.skyorder_mode_5:
......@@ -871,8 +876,10 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
public void initTableParameter() {
originalTableName = "";
originalTableId = 0;
originalTableNumber = "";
targetTableName = "";
targetTableId = 0;
targetTableNumber = "";
}
private TableBean.DataBean getTableById(long id) {
......
......@@ -38,6 +38,7 @@ import androidx.viewpager.widget.ViewPager;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.MemberInfo;
import com.gingersoft.gsa.cloud.base.common.bean.OrderBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
......@@ -89,7 +90,9 @@ import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.util.QMUIDrawableHelper;
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
import com.tbruyelle.rxpermissions2.RxPermissions;
import org.simple.eventbus.EventBus;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
......@@ -559,6 +562,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@OnClick(R2.id.btn_meal_discount)
void onClickDiscount() {
OrderDetail mainOrderDetail = mPresenter.getSelectMealAdapter().getCurrentMainOrderDetail();
if(mainOrderDetail != null && mainOrderDetail.getAblediscount() == 0){
showMessage("此食品不能參與折扣!");
return;
}
//更新折扣数据
mPresenter.loadDiscountData();
......@@ -569,7 +577,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
void onClickTable() {
//type取值:1qrCdoetype,2:手機號,3:memberId
// mUseMemberDialog = new UseMemberDialog(this);
if(mUseMemberDialog == null) {
if (mUseMemberDialog == null) {
mUseMemberDialog = new UseMemberDialog.BottomLayoutBuilder(this)
.setOnLayoutClickListener(new UseMemberDialog.BottomLayoutBuilder.OnLayoutClickListener() {
......@@ -580,7 +588,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@Override
public void onScanAction(UseMemberDialog dialog) {
mPresenter.toScanActivity();
mPresenter.startScanActivity();
}
@Override
......@@ -745,9 +753,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
case 3:
case 4:
case 5:
OrderBean order = MyOrderManage.getInstance().getOrderBean();
if (order != null) {
// ArmsUtils.snackbarText("訂單ID:" + order.getId());
if (i == 1) {
OrderBean order = MyOrderManage.getInstance().getOrderBean();
if (order != null) {
ArmsUtils.snackbarText("訂單ID:" + order.getId());
}
}
mPresenter.changeNumber(i);
break;
......@@ -1252,7 +1262,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
if (resultCode == Activity.RESULT_OK) {
//打印成功
//結賬成功
//關閉當前頁面
//關閉當前頁面
killMyself();
}
} else if (requestCode == MipcaCaptureActivity.CALL_BACK_QR_RESULT) {
......
......@@ -40,6 +40,7 @@ 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.widget.ChooseNumberDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.gingersoft.gsa.cloud.zxing.MipcaCaptureActivity;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.DefaultAdapter;
......@@ -574,6 +575,9 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
setResult(Activity.RESULT_OK, null);
killMyself();
}
}else if (requestCode == MipcaCaptureActivity.CALL_BACK_QR_RESULT) {
String qrCodeResult = data.getStringExtra("qrCodeResult");
}
}
......
......@@ -151,9 +151,6 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
context.startActivity(intent);
}
// private List<BillMethodBean> billMoney = new ArrayList<>();
// private BillMoneyAdapter billMoneyAdapter;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerOrderPayComponent //如找不到该类,请编译一下项目
......
......@@ -135,6 +135,7 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
private OrderCenterMoneyAdapter mOrderDetailPayMethodAdapter;
private List<SectionTextItem3> mOrderCenterPayMethodList = new ArrayList<>();
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerOrderDetailComponent //如找不到该类,请编译一下项目
......@@ -335,13 +336,14 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
}
private void setTitleByOrderType(OrderDetailItem item) {
String mealCode = LanguageUtils.get_language_system(mContext, "meal.code", "訂單碼") + ": ";
String orderCode = LanguageUtils.get_language_system(mContext, "order.code", "訂單碼") + ": ";
String mealCode = LanguageUtils.get_language_system(mContext, "meal.code", "取餐碼") + ": ";
if (item.getOrderType() == 2) {
tv_table_name.setText("外賣");
tv_order_num.setText(mealCode + item.getBillNo());
tv_order_num.setText(orderCode + item.getTakeFoodCode());
} else if (item.getOrderType() == 7) {
tv_table_name.setText("自取");
tv_order_num.setText(mealCode + item.getBillNo());
tv_order_num.setText(orderCode + item.getBillNo() + " " + mealCode + item.getTakeFoodCode());
} else {
String tableName = LanguageUtils.get_language_system(this, "table.number", "檯號") + ": ";
String orderNumber = LanguageUtils.get_language_system(this, "order.number", "訂單號") + ": ";
......@@ -405,15 +407,17 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
orderBean.setDiscountAmount(datasBean.getDiscountAmount());
orderBean.setDiscountValue(datasBean.getDiscountValue());
orderBean.setCreateTime(datasBean.getCreateTime());
orderBean.setOrderDetails(datasBean.getOrderDetails());
MyOrderManage.getInstance().setOrderBean(orderBean);
TableBean.DataBean openTableBean = new TableBean.DataBean();
openTableBean.setCreateTime(TimeUtil.getStringByFormat(new Date(datasBean.getCreateTime()), TimeUtil.dateFormatYMDHM));
openTableBean.setTableName(datasBean.getTableName());
openTableBean.setId(datasBean.getTableId());
// openTableBean.setServiceCharge(datasBean.getServiceAmount()/datasBean.getTotalAmount());
OpenTableManage.getDefault().setTableBean(openTableBean);
OpenTableManage.getDefault().setPeopleNumber(datasBean.getPerson());
List<OrderBean.OrderDetailsBean> orderDetailsBeans = datasBean.getOrderDetails();
List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(orderDetailsBeans));
MyOrderManage.getInstance().setOrderFoodList(orderDetailList);
......
......@@ -117,13 +117,14 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderDetailItem> {
}
private void setTitleByOrderType(OrderDetailItem item) {
String mealCode = LanguageUtils.get_language_system(mContext, "meal.code", "訂單碼") + ": ";
String orderCode = LanguageUtils.get_language_system(mContext, "order.code", "訂單碼") + ": ";
String mealCode = LanguageUtils.get_language_system(mContext, "meal.code", "取餐碼") + ": ";
if (item.getOrderType() == 2) {
tv_table_name.setText("外賣");
tv_order_num.setText(mealCode + item.getBillNo());
tv_order_num.setText(orderCode + item.getTakeFoodCode());
} else if (item.getOrderType() == 7) {
tv_table_name.setText("自取");
tv_order_num.setText(mealCode + item.getBillNo());
tv_order_num.setText(orderCode + item.getBillNo() + " " + mealCode + item.getTakeFoodCode());
} else {
String tableName = LanguageUtils.get_language_system(mContext, "table.number", "檯號") + ": ";
String orderNumber = LanguageUtils.get_language_system(mContext, "order.number", "訂單號") + ": ";
......
......@@ -179,7 +179,11 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
private void setViewVisibility(OrderDetail datasBean) {
tv_D.setVisibility(View.INVISIBLE);
if(datasBean.getAblediscount() == 0){
tv_D.setVisibility(View.VISIBLE);
}else {
tv_D.setVisibility(View.INVISIBLE);
}
tv_D_1.setVisibility(View.INVISIBLE);
tv_discount_money.setVisibility(View.INVISIBLE);
......@@ -277,7 +281,6 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
} else {
tv_money.setText(carshStr + MoneyUtil.get_ItemDecimals_money(price));
}
} else {
tv_money.setText("");
}
......@@ -428,7 +431,7 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
*
* @param position
*/
public void removeFoodItemByPosition(int position) {
public void removeItemByPosition(int position) {
if (mInfos.size() > position) {
mInfos.remove(position);
notifyItemChanged(position);
......@@ -1081,8 +1084,8 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
}
public OrderDetail getCurrentMainOrderDetail() {
if (select_start_position != -1) {
return mInfos.get(select_start_position);
if (select_full_start_position != -1) {
return mInfos.get(select_full_start_position);
} else {
return null;
}
......
......@@ -85,6 +85,7 @@ public class DiscountDialog extends Dialog {
private float mShadowAlpha = 0.25f;
private int mShadowElevationDp = 14;
private int mBagcolor;
private boolean canScan = false;
private List<Discount> mItems;
private DiscountAdapter mAdapter;
......@@ -110,6 +111,10 @@ public class DiscountDialog extends Dialog {
mItems.addAll(items);
}
public void setCanScan(boolean canScan) {
this.canScan = canScan;
}
@Override
public void onClick(View v) {
}
......@@ -150,6 +155,17 @@ public class DiscountDialog extends Dialog {
} else {
mTopBar.setBackgroundColor(ContextCompat.getColor(mContext, R.color.theme_color));
}
if (canScan) {
mTopBar.addRightImageButton(R.mipmap.table_white_scan, R.id.topbar_right_change_button)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onClickListener != null) {
onClickListener.onScan();
}
}
});
}
mTopBar.setTitle("折扣");
}
......@@ -202,6 +218,8 @@ public class DiscountDialog extends Dialog {
void onItemClick(Discount item, int position);
void onScan();
}
}
......
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