Commit a3e7affc by 宁斌

1、餐檯模式使用會員處理

parent a7c19cb0
......@@ -106,7 +106,7 @@ dependencies {
//多功能輸入框
api 'com.rengwuxian.materialedittext:library:2.1.4'
//扫码
implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7'
api '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'
......
......@@ -186,6 +186,9 @@ public class GsaCloudApplication extends BaseApplication {
RetrofitUrlManager.getInstance().putDomain("yc_location", HttpsConstans.ROOT_SERVER_YOU_CHANG_HK);
//System請求地址
RetrofitUrlManager.getInstance().putDomain("system_url", HttpsConstans.SYSTEM_URL);
//後台遷移新地址
RetrofitUrlManager.getInstance().putDomain("new_base_url", HttpsConstans.ROOT_URL+"/ricepon-member/api/");
}
private void initPrint() {
......
......@@ -23,8 +23,9 @@ public class BillOrderMoney {
private int textColor = Color.parseColor("#000000");
private int bgColor;
private byte type = DISCOUNT_TYPE;
public static final byte DISCOUNT_TYPE = 1;
private byte type = ORDER_DISCOUNT_TYPE;
public static final byte ORDER_DISCOUNT_TYPE = 0;
public static final byte MEMBER_DISCOUNT_TYPE = 1;
public static final byte SERVERCHARGE_TYPE = 2;
public static final byte ROUNDING_TYPE = 3;
......
package com.gingersoft.gsa.cloud.base.common.bean;
import android.text.TextUtils;
import java.util.Date;
import lombok.Data;
......@@ -118,14 +120,17 @@ public class MemberInfo {
* MemberPoint : 3
*/
private CreateTimeBean createTime;
private UpdateTimeBean updateTime;
private MemberExpireDateBean memberExpireDate;
private VaildTimeBean vaildTime;
private long id;
private String memberNo;
private int memberDiscount;
//获取会员信息接口
private int MemberPoint;
private String memberName;
//开台接口返回
private int memberPoint;
private String memberName = "";
private String levelName3;
private String levelName2;
private String levelName1;
private String phone;
private int birthdaybonusratio;
private int creditPoints;
......@@ -141,7 +146,6 @@ public class MemberInfo {
private int points;
private int negativePoints;
private int couponTypeId;
private int id;
private int isdefault;
private int pointsVariable;
private String brandName;
......@@ -153,9 +157,6 @@ public class MemberInfo {
private int brandId;
private int pointRedeemCash;
private int ablediscount;
private String levelName3;
private String levelName2;
private String levelName1;
private int expireAfterDayClearPoints;
private int extendExpireAmount;
private String foodDesc3;
......@@ -182,8 +183,20 @@ public class MemberInfo {
private int pointUnit;
private int nextUpLevel;
private int restaurantId = 2;
private CreateTimeBean createTime;
private UpdateTimeBean updateTime;
private MemberExpireDateBean memberExpireDate;
private VaildTimeBean vaildTime;
public int getMemberPoint() {
if (MemberPoint != 0)
return MemberPoint;
if (memberPoint != 0)
return memberPoint;
return 0;
}
@Data
public static class CreateTimeBean {
/**
......
......@@ -7,9 +7,12 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* Created by Wyh on 2020/1/17.
*/
@Data
public class OrderBean {
/**
* id : 40553
......@@ -21,24 +24,27 @@ public class OrderBean {
* orderDetails : [{"id":1621502,"productName":"胡椒排骨涼瓜煲","productId":"4257","price":58,"lunchboxPrice":0,"number":1,"createTime":"Jan 14, 2020 8:00:11 PM","status":0},{"id":1621503,"productName":"海南雞(例牌)","productId":"4258","price":83,"lunchboxPrice":0,"number":1,"createTime":"Jan 14, 2020 8:00:11 PM","status":0}]
*/
private long id;
private long id = -1;
private String orderNo;
private int status;
private int person;
private double totalAmount;
private double totalPoints;
/**折扣金額*/
private double discountAmount;
/**折扣比例*/
private double discountValue;
/**折扣類型*/
private int type;
/**折扣描述*/
private String remark;
// /**折扣金額*/
// private double discountAmount;
// /**折扣比例*/
// private double discountValue;
// /**折扣類型*/
// private int type;
// /**折扣描述*/
// private String remark;
/**
* 生成訂單時間
*/
private String createTime;
private MemberInfo memberInfo;
private List<OrderDiscount.Respose> discountDetails;
private List<OrderDetailsBean> orderDetails;
public OrderBean() {
......@@ -49,113 +55,16 @@ public class OrderBean {
this.status = orderBean.status;
this.orderNo = orderBean.orderNo;
this.person = orderBean.person;
this.discountAmount = orderBean.discountAmount;
this.discountValue = orderBean.discountValue;
this.type = orderBean.type;
this.remark = orderBean.remark;
this.memberInfo = orderBean.memberInfo;
this.discountDetails = orderBean.discountDetails;
// this.discountAmount = orderBean.discountAmount;
// this.discountValue = orderBean.discountValue;
// this.type = orderBean.type;
// this.remark = orderBean.remark;
this.createTime = orderBean.createTime;
}
public OrderBean(int orderId) {
this.id = orderId;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public int getPerson() {
return person;
}
public void setPerson(int person) {
this.person = person;
}
public double getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(double totalAmount) {
this.totalAmount = totalAmount;
}
public double getTotalPoints() {
return totalPoints;
}
public void setTotalPoints(double totalPoints) {
this.totalPoints = totalPoints;
}
public double getDiscountAmount() {
return discountAmount;
}
public void setDiscountAmount(double discountAmount) {
this.discountAmount = discountAmount;
}
public double getDiscountValue() {
return discountValue;
}
public void setDiscountValue(double discountValue) {
this.discountValue = discountValue;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public List<OrderDetailsBean> getOrderDetails() {
return orderDetails;
}
public void setOrderDetails(List<OrderDetailsBean> orderDetails) {
this.orderDetails = orderDetails;
}
@Data
public static class OrderDetailsBean implements Serializable {
/**
* id : 1621502
......@@ -199,6 +108,21 @@ public class OrderBean {
/**折扣實體*/
private RestaurantDiscountVO restaurantDiscountVO;
/**
* 是否参与折扣#0:不參與;1:參與;
**/
private byte scAble = 1;
/**
* 額外食品加分
*/
private double pointsAdd;
/**
* 換購食品所需積分
*/
private double pointsRedeem;
/**
* 0=系統顏色, 1=黑色, 2=紅色
*/
private long printFont;
......@@ -224,199 +148,9 @@ public class OrderBean {
private long memberId;
public OrderDetailsBean() {
}
public OrderDetailsBean(String productName, long productId, long parentId, double price, double lunchboxPrice, int number, byte type, long orderId) {
this.productName = productName;
this.productId = productId;
this.parentId = parentId;
this.price = price;
this.lunchboxPrice = lunchboxPrice;
this.number = number;
this.type = type;
this.orderId = orderId;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public long getMemberId() {
return memberId;
}
public void setMemberId(long memberId) {
this.memberId = memberId;
}
public byte getType() {
return type;
}
public void setType(byte type) {
this.type = type;
}
public long getParentId() {
return parentId;
}
public void setParentId(long parentId) {
this.parentId = parentId;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public long getProductId() {
return productId;
}
public void setProductId(long productId) {
this.productId = productId;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getLunchboxPrice() {
return lunchboxPrice;
}
public void setLunchboxPrice(double lunchboxPrice) {
this.lunchboxPrice = lunchboxPrice;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public long getOrderId() {
return orderId;
}
public void setOrderId(long orderId) {
this.orderId = orderId;
}
public String getPrintSetIng() {
return printSetIng;
}
public void setPrintSetIng(String printSetIng) {
this.printSetIng = printSetIng;
}
public long getKtPrintMainItem() {
return ktPrintMainItem;
}
public void setKtPrintMainItem(long ktPrintMainItem) {
this.ktPrintMainItem = ktPrintMainItem;
}
public long getAblediscount() {
return ablediscount;
}
public void setAblediscount(long ablediscount) {
this.ablediscount = ablediscount;
}
public Long getDiscountId() {
return discountId;
}
public void setDiscountId(Long discountId) {
this.discountId = discountId;
}
public long getTopId() {
return topId;
}
public void setTopId(long topId) {
this.topId = topId;
}
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 RestaurantDiscountVO getRestaurantDiscountVO() {
return restaurantDiscountVO;
}
public void setRestaurantDiscountVO(RestaurantDiscountVO restaurantDiscountVO) {
this.restaurantDiscountVO = restaurantDiscountVO;
}
@Override
public String toString() {
return "OrderDetailsBean{" +
......@@ -431,60 +165,31 @@ public class OrderBean {
", type=" + type +
", parentId=" + parentId +
", orderId=" + orderId +
", printSetIng='" + printSetIng + '\'' +
", ktPrintMainItem=" + ktPrintMainItem +
", ablediscount=" + ablediscount +
", discountId=" + discountId +
", restaurantDiscountVO=" + restaurantDiscountVO +
", scAble=" + scAble +
", pointsAdd=" + pointsAdd +
", pointsRedeem=" + pointsRedeem +
", printFont=" + printFont +
", printToBill=" + printToBill +
", printTo=" + printTo +
", ktShowPrice=" + ktShowPrice +
", topId=" + topId +
", memberId=" + memberId +
'}';
}
@Data
public static class RestaurantDiscountVO implements Serializable{
private long id;
private int type;
private float discountValue;
private String remark;
private double discountAmount;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public float getDiscountValue() {
return discountValue;
}
public void setDiscountValue(float discountValue) {
this.discountValue = discountValue;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public double getDiscountAmount() {
return discountAmount;
}
public void setDiscountAmount(double discountAmount) {
this.discountAmount = discountAmount;
}
}
}
......@@ -497,13 +202,5 @@ public class OrderBean {
// return orderDetailsBeans;
// }
public static List<OrderDetailsBean> transOrderDetails(List<OrderDetail> foods) {
List<OrderDetailsBean> orderDetailsBeans = new ArrayList<>();
for (OrderDetail food : foods) {
OrderDetailsBean orderDetailsBean = new OrderDetailsBean(food.getProductName(), food.getProductId(), food.getParentId(), food.getUnit_price(), food.getLunchboxPrice(), food.getNumber(), food.getType(), food.getOrderId());
orderDetailsBeans.add(orderDetailsBean);
}
return orderDetailsBeans;
}
}
......@@ -185,6 +185,19 @@ public class OrderDetail implements Serializable {
*/
private int discountStatus;
/**
* 是否参与折扣#0:不參與;1:參與;
**/
private byte scAble = 1;
/**
* 額外食品加分
*/
private double pointsAdd;
/**
* 換購食品所需積分
*/
private double pointsRedeem;
/**
* 食品組
*/
private String ftName;
......@@ -273,6 +286,7 @@ public class OrderDetail implements Serializable {
this.items = orderDetail.items;
this.createTime = orderDetail.createTime;
this.ablediscount = orderDetail.ablediscount;
this.scAble = orderDetail.scAble;
this.ftName = orderDetail.ftName;
this.majorName = orderDetail.majorName;
this.discount = orderDetail.discount;
......@@ -281,6 +295,8 @@ public class OrderDetail implements Serializable {
this.printSeting = orderDetail.printSeting;
this.ktPrintMainItem = orderDetail.ktPrintMainItem;
this.currentMaxNumber = orderDetail.currentMaxNumber;
this.pointsAdd = orderDetail.pointsAdd;
this.pointsRedeem = orderDetail.pointsRedeem;
}
public int getSelected() {
......@@ -875,6 +891,9 @@ public class OrderDetail implements Serializable {
orderDetail.setType(orderDetailsBean.getType());
orderDetail.setItemType(getItemType(orderDetailsBean, parentOrderDetail));
orderDetail.setAblediscount(orderDetailsBean.getAblediscount());
orderDetail.setScAble(orderDetailsBean.getScAble());
orderDetail.setPointsAdd(orderDetailsBean.getPointsAdd());
orderDetail.setPointsRedeem(orderDetailsBean.getPointsRedeem());
orderDetailList.add(orderDetail);
// if (orderDetail.isIsfood()) {
......@@ -986,6 +1005,9 @@ public class OrderDetail implements Serializable {
int comboLevel = food.isComboFood() ? 1 : 0;
orderDetail.setComboLevel(comboLevel);
orderDetail.setCurrentMaxNumber(food.getCurrentMaxNumber());
orderDetail.setScAble(food.getServiceCharge());
orderDetail.setPointsAdd(food.getPointsAdd());
orderDetail.setPointsRedeem(food.getPointsRedeem());
return orderDetail;
}
......@@ -1031,6 +1053,9 @@ public class OrderDetail implements Serializable {
orderDetail.setSelected(1);
}
orderDetail.setCurrentMaxNumber(foodCombo.getCurrentMaxNumber());
orderDetail.setScAble((byte) foodCombo.getServiceCharge());
orderDetail.setPointsAdd(foodCombo.getPointsAdd());
orderDetail.setPointsRedeem(foodCombo.getPointsRedeem());
return orderDetail;
}
......
package com.gingersoft.gsa.cloud.base.common.bean;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-08-28
* 修订历史:2020-08-28
* 描述:
*/
public class OrderDiscount {
public static final int ORDER_DISCOUNT = 0;
public static final int MEMBER_DISCOUNT = 1;
@Data
public static class Request {
/**
* 0#整單折扣
* 1#會員折扣
*/
private int type;
/**
* 整單折扣ID
*/
private Long discountId;
/**
* 會員折扣ID
*/
private Long memberId;
/**
* 會員折扣比例
*/
private Integer memberDiscountRate;
/**
* 折扣金額
*/
private double discountAmount;
/**
* 是否计算服务费
*/
private int scAble;
public static Request orderDiscountTransRequest(BillOrderMoney discount) {
Request request = new Request();
request.setType(ORDER_DISCOUNT);
if(discount.getDiscount() != null) {
request.setDiscountId(discount.getDiscount().getId());
}
request.setDiscountAmount(discount.getMoney());
request.setScAble(0);
return request;
}
public static Request memberDiscountTransRequest(BillOrderMoney discount) {
Request request = new Request();
request.setType(MEMBER_DISCOUNT);
if(discount.getDiscount() != null) {
request.setMemberId(discount.getDiscount().getId());
request.setMemberDiscountRate((int) discount.getDiscount().getDiscount_value());
}
request.setDiscountAmount(discount.getMoney());
request.setScAble(0);
return request;
}
}
@Data
public static class Respose {
/**
* 整單折扣ID
*/
private Long discountId;
/**折扣金額*/
private double discountAmount;
/**折扣比例*/
private double discountValue;
/**
* 0#整單折扣
* 1#會員折扣
*/
private int type;
/**折扣名称1*/
private String remark;
/**折扣名称2*/
private String remark2;
/**折扣名称3*/
private String remark3;
/**
* 會員折扣比例
*/
private Integer memberDiscountRate;
public String getRemark() {
return remark;
}
}
}
......@@ -25,6 +25,11 @@ public class OrderPayRequest {
private int orderPayType;
private int tableId;
private String tableNumber;
private long memberId;
//當前加的積分
private Double pointsAdd;
//當前減去的積分
private Double pointsUse;
private List<orderPay> orderPays = new ArrayList<>();
@Data
......
package com.gingersoft.gsa.cloud.base.common.bean;
import android.graphics.Color;
import android.text.TextUtils;
import com.google.gson.annotations.SerializedName;
import java.util.List;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
......@@ -13,22 +14,157 @@ import java.util.List;
* 修订历史:2020-02-15
* 描述:
*/
@Data
public class PayMethod {
// /**
// * success : true
// * sysTime : 1582865195628
// * data : [{"id":11,"payName":"服務員確認","createTime":"May 7, 2018 11:47:27 AM"},{"id":1019,"payName":"轉數快支付","remarks":"","createTime":"Jul 10, 2019 4:56:21 PM"},{"id":9,"payName":"微信","createTime":"Jun 29, 2018 4:34:26 PM"},{"id":10,"payName":"Apple pay","createTime":"Aug 9, 2018 3:59:05 PM"},{"id":1010,"payName":"YedPay支付宝"},{"id":6,"payName":"支付寶HK","createTime":"Sep 12, 2017 2:45:12 PM"},{"id":8,"payName":"支付寶","createTime":"Jan 5, 2018 10:55:06 AM"},{"id":1020,"payName":"PayMe","createTime":"Nov 29, 2019 6:07:56 PM"}]
// */
// private int id;
// private String payName;
// private String createTime;
// private String remarks;
//
// private String NAME;
// private String NAME2;
// private String NAME3;
// private String PAYWAY;
/**
* success : true
* sysTime : 1582865195628
* data : [{"id":11,"payName":"服務員確認","createTime":"May 7, 2018 11:47:27 AM"},{"id":1019,"payName":"轉數快支付","remarks":"","createTime":"Jul 10, 2019 4:56:21 PM"},{"id":9,"payName":"微信","createTime":"Jun 29, 2018 4:34:26 PM"},{"id":10,"payName":"Apple pay","createTime":"Aug 9, 2018 3:59:05 PM"},{"id":1010,"payName":"YedPay支付宝"},{"id":6,"payName":"支付寶HK","createTime":"Sep 12, 2017 2:45:12 PM"},{"id":8,"payName":"支付寶","createTime":"Jan 5, 2018 10:55:06 AM"},{"id":1020,"payName":"PayMe","createTime":"Nov 29, 2019 6:07:56 PM"}]
* id : 12
* brandId : 1
* restaurantId : 26
* nameFirst : 兒不同
* nameSecond : 吃v否
* nameThird : 份日日法人
* whetherSales : 1
* whetherManagerAuthority : 0
* color : #00FF2F
* whetherReportCount : 1
* interactiveType : 1
* whetherFixedAmount : 1
* payType : 8
* minPayAmount : 0
* whetherFreeService : 1
* whetherTaxExemption : 1
* whetherSignatureLine : 1
* paySeq : 1
* whetherOpenBox : 1
* getIntegral : 5
* integralMultiple : 2
* deductionIntegral : 1
* dockingType : 0
* billType : 1,2
* tablePrintingAmount : 2
* takeOutPrintingAmount : 2
* updateTime : 1598674202856
* createTime : 1598674202856
* updateUid : 492
* createUid : 492
*/
private int id;
private String payName;
private String createTime;
private String remarks;
private int brandId;
private int restaurantId;
private String nameFirst;
private String nameSecond;
private String nameThird;
/**
* 銷售營業額(0:非營業額 1:營業額)
*/
private int whetherSales;
/**
* 經理權限
*/
private int whetherManagerAuthority;
/**
* 背景顔色
*/
private String color = "#FFFFFF";
/**
* 字體顔色
*/
private String font_color = "#000000";
/**
* 報表計算人數(0:否 1:是)
*/
private int whetherReportCount;
/**
* 交互方式
*/
private int interactiveType;
/**
* 固定金額 (0:否 1:是)
*/
private int whetherFixedAmount;
/**
* 固定金額數值
*/
private double amountValue;
/**
* 支付方式(1:寶達通 8:支付寶 1001:現金 1023:支付寶HK )
*/
private int payType;
/**
* 最小支付金額(是否有小數點)
*/
private double minPayAmount;
/**
* 是否免服務費(0:否 1:是)
*/
private int whetherFreeService;
/**
* 是否免稅 (0:否 1:是)
*/
private int whetherTaxExemption;
/**
* 是否展示簽署線 (0:否 1:是)
*/
private int whetherSignatureLine;
/**
* 排序
*/
private int paySeq;
/**
* 是否開錢箱(0:否 1:是)
*/
private int whetherOpenBox;
/**
* '獲取積分
*/
private int getIntegral;
/**
* 積分倍數
*/
private int integralMultiple;
/**
* 扣減積分
*/
private float deductionIntegral;
/**
* 對接類型 (0:否 1:yedpay 2:八達通 3:積分 )
*/
private int dockingType;
/**
* 賬單類型(0:否 1:是)
*/
private String billType;
/**
* 櫃檯結賬打印
*/
private int tablePrintingAmount;
/**
* 外賣結賬打印
*/
private int takeOutPrintingAmount;
private long updateTime;
@SerializedName("createTime")
private long createTimeX;
private int updateUid;
private int createUid;
private String NAME;
private String NAME2;
private String NAME3;
private String PAYWAY;
//*************自定義字段***************
private double payMoney = 0.0;
......@@ -43,146 +179,31 @@ public class PayMethod {
public static final int PAY_TYPE_CASH = 1001;
public PayMethod(int id, String payName, String createTime, String remarks, String NAME, String NAME2, String NAME3, String PAYWAY) {
this.id = id;
this.payName = payName;
this.createTime = createTime;
this.remarks = remarks;
this.NAME = NAME;
this.NAME2 = NAME2;
this.NAME3 = NAME3;
this.PAYWAY = PAYWAY;
}
public PayMethod() {
}
public int getId() {
return id;
}
public void setId(int id) {
public PayMethod(int id, String nameFirst, String nameSecond, String nameThird) {
this.id = id;
this.nameFirst = nameFirst;
this.nameSecond = nameSecond;
this.nameThird = nameThird;
}
public String getPayName() {
return payName;
}
public void setPayName(String payName) {
this.payName = payName;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
if (!TextUtils.isEmpty(nameFirst))
return nameFirst;
if (!TextUtils.isEmpty(nameSecond))
return nameSecond;
if (!TextUtils.isEmpty(nameThird))
return nameThird;
return "";
}
public String getNAME() {
return NAME;
}
public void setNAME(String NAME) {
this.NAME = NAME;
}
public String getNAME2() {
return NAME2;
}
public void setNAME2(String NAME2) {
this.NAME2 = NAME2;
}
public String getNAME3() {
return NAME3;
public void setPayName(String name){
this.nameFirst = name;
this.nameSecond = name;
this.nameThird = name;
}
public void setNAME3(String NAME3) {
this.NAME3 = NAME3;
}
public String getPAYWAY() {
return PAYWAY;
}
public void setPAYWAY(String PAYWAY) {
this.PAYWAY = PAYWAY;
}
public double getPayMoney() {
return payMoney;
}
public void setPayMoney(double payMoney) {
this.payMoney = payMoney;
}
public double getTipsPrice() {
return TipsPrice;
}
public void setTipsPrice(double tipsPrice) {
TipsPrice = tipsPrice;
}
public int getPayModeTextColor() {
return payModeTextColor;
}
public void setPayModeTextColor(int payModeTextColor) {
this.payModeTextColor = payModeTextColor;
}
public int getPayMoneyTextColor() {
return payMoneyTextColor;
}
public void setPayMoneyTextColor(int payMoneyTextColor) {
this.payMoneyTextColor = payMoneyTextColor;
}
public int getPayModeTextSelectColor() {
return payModeTextSelectColor;
}
public void setPayModeTextSelectColor(int payModeTextSelectColor) {
this.payModeTextSelectColor = payModeTextSelectColor;
}
public int getPayMoneyTextSelectColor() {
return payMoneyTextSelectColor;
}
public void setPayMoneyTextSelectColor(int payMoneyTextSelectColor) {
this.payMoneyTextSelectColor = payMoneyTextSelectColor;
}
public int getPayModeSize() {
return payModeSize;
}
public void setPayModeSize(int payModeSize) {
this.payModeSize = payModeSize;
}
public int getPayMoneySize() {
return payMoneySize;
}
public void setPayMoneySize(int payMoneySize) {
this.payMoneySize = payMoneySize;
}
}
......@@ -34,9 +34,11 @@ public class RestaurantExpandInfoUtils {
MoneyUtil.ItemDecimals = expandInfo.getValueInt();
}
if (expandInfo.getSettingName().equals(ExpandConstant.MergeSendFood)) {
GsaCloudApplication.androidSetting.setMergeSendFood(Boolean.parseBoolean(expandInfo.getValueChar()));
GsaCloudApplication.androidSetting.setMergeSendFood(expandInfo.getValueInt() == 1?true:false);
}
if (expandInfo.getSettingName().equals(ExpandConstant.AutoPrinterParper)) {
GsaCloudApplication.androidSetting.setAutoPrinterParper(expandInfo.getValueInt() == 1?true:false);
}
}
}
......
package com.gingersoft.gsa.cloud.base.common.bean;
import java.io.Serializable;
import java.util.List;
import lombok.Data;
......@@ -59,7 +60,7 @@ public class TableBean {
}
@Data
public static class DataBean {
public static class DataBean implements Serializable {
/**
* id : 25839
* tableName : ceshitai1*
......
......@@ -27,7 +27,7 @@ import java.util.List;
public class MyOrderManage {
private static MyOrderManage myOrderManage;
//外賣接單
/**外賣接單*/
private static OrderDetails.DataBean dataBean;
public static MyOrderManage getInstance() {
......@@ -80,6 +80,22 @@ public class MyOrderManage {
*/
private List<PayMethod> billMoney = new ArrayList<>();
/**
* 結賬前積分(堂食結賬)
*/
private Double pointsOld;
/**
* 結賬后積分(堂食結賬)
*/
private Double pointsNow;
/**
* 結賬加的積分(堂食結賬)
*/
private Double pointsAdd;
/**
* 結賬減去的積分(堂食結賬)
*/
private Double pointsUse;
/**
* 合計
*/
private double wholeAmount = 0.0;
......@@ -232,563 +248,6 @@ public class MyOrderManage {
CommonTipDialog.showSurpisedDialog(GsaCloudApplication.getAppContext().getCurrentActivity(), msg, null, null, null, null, null);
}
// private void change_child_number(OrderDetail orderFood, int number) {
//
// //每个组子项最大选择数量
// Map<String, String> maxNumberArray = new HashMap<>();
//
// for (int i = 0; i < orderFoodList.size(); i++) {
// OrderDetail datasBean = orderFoodList.get(i);
// if (datasBean.getParent_index() == orderFood.getMy_index() && datasBean.getItemtype() == 2) {
//
// String comId = datasBean.getComid();
//
// if (!datasBean.getComid().equals("discount")) {
//
// //当前主食品组子项最大选择数
// int comboMaxQty = selectMealAdapter.queryComboMaxQty(datasBean.getItemNo(), datasBean.getComid());
// int comboGroupMaxQty = selectMealAdapter.queryComboMaxQty(datasBean.getItemNo(), datasBean.getComid()) * number;
//
// maxNumberArray.put(comId, comboMaxQty + "_" + comboGroupMaxQty);
// } else {
// maxNumberArray.put(comId, "-1_-1");
// }
//// int comIdIndex = maxNumberArray.indexOfKey(comId);
//// if (comIdIndex != -1) {
//// int totalQty;
//// if (!TextUtils.isEmpty(maxNumberArray.get(comId))) {
//// totalQty = Integer.parseInt(maxNumberArray.get(comId).split("_")[0]) + datasBean.getQty();
//// } else {
//// totalQty = datasBean.getQty();
//// }
//// } else {
//// maxNumberArray.put(comId, datasBean.getQty() + "");
//// }
// }
// }
//
// Iterator<String> iterator = maxNumberArray.keySet().iterator();
// while (iterator.hasNext()) {
// String key = iterator.next();
// String totalQty = maxNumberArray.get(key);
// int combNumber = 0;
// for (int j = 0; j < orderFoodList.size(); j++) {
// OrderDetail datasBean = orderFoodList.get(j);
// if (datasBean.getParent_index() == orderFood.getMy_index() && datasBean.getItemtype() == 2) {
// String comId = datasBean.getComid();
// if (key.equals(comId)) {
// combNumber += datasBean.getQty();
// }
// }
// }
// String value = totalQty + "_" + combNumber;
// maxNumberArray.put(key, value);
// }
//
//// for (int i = 0; i < maxNumberArray.size(); i++) {
//// String key = maxNumberArray.get(i);
//// String totalQty = maxNumberArray.get(key);
//// int combNumber = 0;
//// for (int j = 0; j < orderFoodList.size(); j++) {
//// OrderDetail datasBean = orderFoodList.get(j);
//// if (datasBean.getParent_index() == orderFood.getMy_index() && datasBean.getItemtype() == 2) {
//// String comId = datasBean.getComid();
//// if (key.equals(comId)) {
//// combNumber += datasBean.getQty();
//// }
//// }
//// }
//// String value = totalQty + "_" + combNumber;
//// maxNumberArray.put(key, value);
//// }
//
// for (int i = orderFoodList.size() - 1; i >= 0; i--) {
// OrderDetail datasBean = orderFoodList.get(i);
// if (datasBean.getParent_index() == orderFood.getMy_index()) {
// if (datasBean.getItemtype() == 3) {
// datasBean.setQty(number);
// datasBean.newnumber = number;
// setCalculatePrice(datasBean, datasBean.isFuncmoney(), datasBean.getUnitprice());
// } else {
//
// if (datasBean.getComid().equals("discount")) {
// datasBean.setQty(number);
// datasBean.newnumber = number;
// continue;
// }
//
// int comboQty = datasBean.getQty();
//
// //当前主食品子项最大选择数
//// int comboMaxQty = selectMealAdapter.queryComboMaxQty(datasBean.getItemNo(), datasBean.getComid()) * orderFood.getQty();
//
// int currentNumber = datasBean.getChangeBeforeQty();
////
// String key = datasBean.getComid();
// String vaule = maxNumberArray.get(key);
//
// String[] totalQty_combNumber = vaule.split("_");
// int comboMaxQty = Integer.parseInt(totalQty_combNumber[0]);
// int comboGroupMaxQty = Integer.parseInt(totalQty_combNumber[1]);
//// int combNumber = Integer.parseInt(totalQty_combNumber[2]);
//
// if (number == 1) {
// currentNumber = datasBean.getChangeBeforeQty();
// } else {
// if (number < datasBean.getQty()) {
// //从大到小
// if (comboMaxQty == 1) {
// //这一组最大选择数为1
// currentNumber = number;
// } else {
// if (comboGroupMaxQty > 0) {
// currentNumber = number;
// //最大选择数减去当前子项的数量
// comboGroupMaxQty -= currentNumber;
// maxNumberArray.put(key, comboMaxQty + "_" + comboGroupMaxQty);
// } else {
// //已达到最大选择数,后面还有食品直接删除
// currentNumber = 0;
// }
// }
// } else {
// currentNumber = number * datasBean.getChangeBeforeQty();
// }
// }
//
// if (currentNumber == 0) {
// orderFoodList.remove(i);
// } else {
// datasBean.setQty(currentNumber);
// datasBean.newnumber = currentNumber;
// setCalculatePrice(datasBean, datasBean.isFuncmoney(), datasBean.getUnitprice());
// }
// }
// }
// }
//
// lastTimeChangeNumber = number;
//
// maxNumberArray.clear();
// }
// private void removeFoodModifify(OrderDetail myorder) {
// int endIndex = myorder.getMy_index() - 1;
// for (int i = orderFoodList.size() - 1; i > endIndex; i--) {
// OrderDetail foodBean = orderFoodList.get(i);
// if (foodBean.getProp().equalsIgnoreCase("modifify_modalkeyboard") && foodBean.getParent_index() == myorder.getMy_index()) {
// //删除当前食品下的所有子项
// orderFoodList.remove(i);
// }
// }
// }
// public void Re_Discount() {
// if (orderFoodList.size() == 0) {
// return;
// }
// try {
// //计算数呈
// if (this.selstartpostion > orderFoodList.size()) {
// return;
// }
//
// OrderDetail mainorder = orderFoodList.get(this.selstartpostion);
// for (int i = selstartpostion; i < orderFoodList.size(); i++) {
// OrderDetail childOrder = orderFoodList.get(i);
// if (childOrder.getItemtype() == 0) {
// break;
// }
// if (childOrder.comid.equals("discount")) {
// childOrder.setAmount_price(childOrder.getUnitprice());
// childOrder.Famount_price_sign = childOrder.getUnitprice() / childOrder.newnumber;
// }
// }
// //从selstartpostion开始向下查找到全部的归属于本茶品的最后位置
// DiscountTypeAndOrderPay.DatasBean dt = new DiscountTypeAndOrderPay.DatasBean();
// dt.setSelStartPostion(this.selstartpostion);
// dt.setSelEndPostion(this.selendpostion);
// dt.recalc_doubleandfixed6(orderFoodList);
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
/**
* 检查当前食品有没有超过数量或者已经沽清
*
* @param fid
* @param isfood
* @param number
* @return
*/
// public boolean checkOverSoldoutNumber(String fid, boolean isfood, int number) {
// int newNumber = 0;
// //检查是否需要改变估清
// CurrentSoldoutFood.DatasBean scClass;
// Db_SoldoutCtrl db = new Db_SoldoutCtrl(context);
// if (isfood) {
// scClass = db.getSoldoutCtrl("F", fid);
// } else {
// scClass = db.getSoldoutCtrl("M", fid);
// }
// db.closeDb();
// db = null;
//
// if (scClass.OR_Qty == -999999999 && scClass.Used_Qty == -999999999) {
// //不需要判读数量
// return true;
// } else {
// newNumber = getCountNumber(fid);
// //需要判读数量,如果当前数量超过,直接返回估清
// if (scClass.OR_Qty - scClass.Used_Qty - newNumber - number < 0) {
// return false;
// } else {
// return true;
// }
// }
// }
/*查找并计算碰餐,计算出的结果:如果是已经存在的,则需要记录此单新金额*/
/*得到当前的碰餐折扣表,从高到低的折扣金额排列*/
/*获取食品细项,把该食品与其它任意食品B依金额碰,如果B尚未碰过,则两者相碰成功*/
/*检查到B食品时,向下碰C食品,如果C食品碰的金额大于*/
// public boolean calc_Mix(int operatType) {
// int max_mixIndex = 0;
// MixOldOrders.clear();
//
// //获得碰餐有效数据(已经数据库中对status=false和日期不在起始日期内 或者不在假期内的数据进行了屏蔽并且已经是取到了最优的碰餐结果了)
// Db_MixComboGroup_Discount db_md = new Db_MixComboGroup_Discount(context);// this.activity);
// mixComboGroup_Discounts = db_md.get_valid_discount();
// db_md.closeDb();
//
// if (mixComboGroup_Discounts.size() == 0) {
// return false;
// }
//
// int n = 0;
// for (OrderDetail order : orderFoodList) {
// if (order.getItemtype() == 1) {
//// n = n + order.newnumber;
// n = n + 1;
// order.setMix_DETAIL_ID(0);
// order.setMixGroupDiscPrice(0);
// order.setMixDesc1("");
// order.setMixDesc2("");
// order.setMixDesc3("");
// order.setMixQty(0);
// order.setMixGroupID(0);
// }
// }
// /*只有一个食品,则退出*/
//// if (operatType == ADD_OPERAT && n <= 1) {
//// return false;
//// }
//
// /*删除后食品必须大于一,否则则退出*/
// boolean allowDelete = operatType == DELETE_OPERAT && n > 1;
//
// if (operatType == ADD_OPERAT || allowDelete) {
// Db_MixComboGroup db_maxgroup = new Db_MixComboGroup(GSAApplication.getAppContext());
// for (MixComboGroupDiscount.DatasBean mcgd : mixComboGroup_Discounts) {
//
// boolean findgroup1;
// boolean findgroup2;
//
// OrderDetail findorder1;
// OrderDetail findorder2;
//
// List<MixComboGroup.DatasBean> mcgroups1 = db_maxgroup.query_byFood(mcgd.getGROUPID1());
// List<MixComboGroup.DatasBean> mcgroups2 = db_maxgroup.query_byFood(mcgd.getGROUPID2());// + " and status=1 order by ISNULL(SEQ,-1),f.Price desc,g.ID,id ");
//
// for (int i = 0; i < mcgroups1.size(); i++) {
// MixComboGroup.DatasBean mcgroup1 = mcgroups1.get(i);
// //加个循环,保证找完所有的order
// for (OrderDetail morder : orderFoodList) {
// findgroup1 = false;
// findgroup2 = false;
// findorder1 = null;
// findorder2 = null;
// int recordIndex = -1;
// for (int k = 0; k < orderFoodList.size(); k++) {
// OrderDetail order = orderFoodList.get(k);
// String desc1 = order.getDesc1();
// if (order.getItemtype() != 1 || !order.isIsfood()) {
// continue;
// }
// //非食品则不操作
// int qty = order.getQty();
// int mixQty = order.getMixQty();
// if (qty <= 0 || qty <= mixQty) {
// continue;
// }
// String fid1 = order.getItemno();
// String fid2 = mcgroup1.getFID();
// if (fid1.equals(fid2)) {
// findgroup1 = true;
// findorder1 = order;
// recordIndex = k;
// break;
// }
// }
// if (findgroup1 == false) {
// continue;
// } //没有找到就跳下一个
//
// for (int k = 0; k < mcgroups2.size(); k++) {
// MixComboGroup.DatasBean mcgroup2 = mcgroups2.get(k);
// for (int o = 0; o < orderFoodList.size(); o++) {
// OrderDetail order = orderFoodList.get(o);
// String desc1 = order.getDesc1();
// if (order.getItemtype() != 1 || !order.isIsfood()) {
// continue;
// } //非食品则不操作
// int qty = order.getQty();
// int mixQty = order.getMixQty();
// if (qty <= 0 || qty <= mixQty) {
// continue;
// }
// if (recordIndex == o) {
// //该食品已经碰餐了
// continue;
// }
// String fid1 = order.getItemno();
// String fid2 = mcgroup2.getFID();
// if (fid1.equals(fid2)) {
// findgroup2 = true;
// findorder2 = order;
// break;
// }
// }
// if (findgroup2 == true) {
// break;
// }
// }
// if (findgroup2 == false) {
// continue;
// }
//
// max_mixIndex = max_mixIndex + 1;
//
// int Mix_DETAIL_ID1 = findorder1.getMix_DETAIL_ID() + max_mixIndex;
// int Mix_DETAIL_ID2 = findorder2.getMix_DETAIL_ID() + max_mixIndex;
// findorder1.setMix_DETAIL_ID(Mix_DETAIL_ID1);
// findorder2.setMix_DETAIL_ID(Mix_DETAIL_ID2);
// /*开始设置这两个食品的碰餐属性*/
// /*数量算法,如果限制了数量,则最高为限制数量,如果没有限制,则使用最小的可以折扣的数量*/
// int findorder1MixNumber = db_maxgroup.get_mixqty(findorder1.getItemno(), mcgd.getGROUPID1());
// int findorder2MixNumber = db_maxgroup.get_mixqty(findorder2.getItemno(), mcgd.getGROUPID2());
// //最后需要更新的数量
// int nowMixQty = 0;
// //得到最小的剩余数量
// int mixqty = findorder1.getQty() - findorder1.getMixQty() > findorder2.getQty() - findorder2.getMixQty() ?
// findorder2.getQty() - findorder2.getMixQty() : findorder1.getQty() - findorder1.getMixQty();
//
// if (findorder1MixNumber < 1 || findorder2MixNumber < 1) {
// //有一个有无限数量或者两个都是无限数量的情况
// if (findorder1MixNumber + findorder2MixNumber <= 0) {
// //两个都是无限数量,此时取最小的数量
// nowMixQty = mixqty;
// } else if (findorder1MixNumber > 1) { //表明2号食品无限制,1号食品有限制
// //食品1有限制数量:
// // 食品1总数量-碰餐1数量即剩下的数量大于MixNumber,取最小的剩余数量。
// // 小于
// nowMixQty = mixqty > findorder1MixNumber ? findorder1MixNumber : mixqty;
// } else { //2号食品有限制 1号食品无限制
// nowMixQty = mixqty > findorder2MixNumber ? findorder2MixNumber : mixqty;
// }
//
// } else {
// //两个都有限制,取最小值
// if (findorder1MixNumber > findorder2MixNumber) {
// nowMixQty = mixqty > findorder2MixNumber ? findorder2MixNumber : mixqty;
// } else {
// nowMixQty = mixqty > findorder1MixNumber ? findorder1MixNumber : mixqty;
// }
// }
//
// int mixQty1 = findorder1.getMixQty();
// findorder1.setMixQty(mixQty1 + nowMixQty);
//
// double GROUP1Price = mcgd.getGROUP1Price();
// if (GROUP1Price > findorder1.getFamount_price_sign()) {
// //碰餐金額大於 食品總金額,直接減去原因金額
// GROUP1Price = findorder1.getFamount_price_sign();
// }
// findorder1.setMixGroupDiscPrice(findorder1.getMixGroupDiscPrice() + GROUP1Price * nowMixQty);
// findorder1.setMixGroupID(mcgd.getGROUPID1());
// findorder1.setMixDesc1(mcgd.getDesc1());
// findorder1.setMixDesc2(mcgd.getDesc2());
// findorder1.setMixDesc3(mcgd.getDesc3());
//
// double GROUP2Price = mcgd.getGROUP2Price();
// if (GROUP2Price > findorder2.getFamount_price_sign()) {
// //碰餐金額大於 食品總金額,直接減去原因金額
// GROUP2Price = findorder2.getFamount_price_sign();
// }
//
// int mixQty2 = findorder2.getMixQty();
// findorder2.setMixQty(mixQty2 + nowMixQty);
//// findorder2.setMixGroupDiscPrice(findorder2.getMixGroupDiscPrice() + mcgd.getGROUP2Price() * nowMixQty);
// findorder2.setMixGroupDiscPrice(findorder2.getMixGroupDiscPrice() + GROUP2Price * nowMixQty);
// findorder2.setMixGroupID(mcgd.getGROUPID2());
// findorder2.setMixDesc1(mcgd.getDesc1());
// findorder2.setMixDesc2(mcgd.getDesc2());
// findorder2.setMixDesc3(mcgd.getDesc3());
// }
// }
// }
// db_maxgroup.closeDb();
// }
//
// //2:更新各项数据
// for (OrderDetail order : orderFoodList) {
// if (order.getItemtype() != 1) {
// continue;
// }
// if (!order.isIsfood()) {
// continue;
// }
// if (order.getQty() <= 0) {
// continue;
// }
// if (order.getOrder_detail_id() > -1) {//是已经保存过的
// MixOldOrder moo = new MixOldOrder();
// moo.Mix_DETAIL_ID = order.getMix_DETAIL_ID();
// moo.Mixqty = order.getMixQty();
// moo.ORDER_DETAIL_ID = order.getOrder_detail_id();
// moo.MixDesc1 = order.getMixDesc1();
// moo.MixDesc2 = order.getMixDesc2();
// moo.MixDesc3 = order.getMixDesc3();
// moo.MixGroupDiscPrice = order.getMixGroupDiscPrice();
// moo.MixGroupID = order.getMixGroupID();
// MixOldOrders.add(moo);
// }
// }
// for (OrderDetail order : orderFoodList) {
// int fnumber = order.getQty();
// double famount_price_sign = 0.0;
// if (!order.isnew) {
// famount_price_sign = order.Famount_price_sign / fnumber;
// } else {
// famount_price_sign = order.Famount_price_sign;
// }
// double mixGroupDiscPrice = order.getMixGroupDiscPrice();
// double amount_price = famount_price_sign * fnumber - Math.abs(mixGroupDiscPrice);
// if (amount_price < 0 && order.getDiscount_id() == 0) {
// //排除掉折扣,食品金额不能为负数
// order.setAmount_price(0);
// } else {
// if (order.getDiscount_id() != 0) {
// updateDiscoutMoney(order);
// } else {
// order.setAmount_price(amount_price);
// }
// }
//
// LogUtil.d("mix_detail_id: " + order.getMix_DETAIL_ID() + " amount_price: " + order.getAmount_price());
// }
// return true;
// }
// /**
// * 更新折扣金額
// *
// * @param order
// */
// public void updateDiscoutMoney(OrderDetail order) {
// DiscountTypeAndOrderPay.DatasBean discountBean = order.getDiscountTypeAndOrderPayBean();
// if (discountBean != null) {
// discountBean.setSelPostion(selectMealAdapter.getSelect_position());
// discountBean.setSelEndPostion(selectMealAdapter.getSelect_end_position());
// discountBean.setSelStartPostion(selectMealAdapter.getSelect_start_position());
// discountBean.setSelMainStartPositon(selectMealAdapter.getMainStartPos());
// discountBean.setSelMainEnnPostion(selectMealAdapter.getMainEndPos());
// discountBean.setSelect_Full_start_position(selectMealAdapter.getSelect_full_start_position());
// discountBean.setSelect_Full_end_position(selectMealAdapter.getSelect_full_end_position());
// discountBean.setUpdateDiscoutMoney(true);
// double discountMoney = discountBean.Add_menu_postion(orderFoodList, context);
// order.setAmount_price(discountMoney);
// }
// }
// public boolean hasMixFood() {
// for (int i = 0; i < orderFoodList.size(); i++) {
// OrderDetail datasBean = orderFoodList.get(i);
// if (datasBean.getMixGroupID() > 0) {
// return true;
// }
// }
// return false;
// }
// public void get_max_seqno() {
// int i = 1;
// for (OrderDetail myorder : orderFoodList) {
// if (myorder.getItemtype() == 1) {
// i = i + 1;
// }
// }
// seqno = i;
// }
//
// private int get_sseq() {
// int i = 0;
// if (orderFoodList == null) {
// return i;
// }
// for (OrderDetail myorder : orderFoodList) {
// if (myorder.getSeqno() == seqno && myorder.getItemtype() == 2) {
// i = i + 1;
// }
// }
// return i;
// }
//
// private int get_mseq(int isseq) {
// int i = 0;
// if (orderFoodList == null) {
// return i;
// }
// for (OrderDetail myorder : orderFoodList) {
// if (myorder.getSeqno() == seqno && myorder.getSseq() == isseq && myorder.getItemtype() == 3) {
// i = i + 1;
// }
// }
// return i;
// }
//
// public void no_select() {
// for (int i = 0; i < orderFoodList.size(); i++) {
// orderFoodList.get(i).selected = 0;
// }
// }
//
// public DatasBean getCurrentOrderFood() {
// if (getSize() == 0) {
// return null;
// }
// if (selpostion < orderFoodList.size()) {
// return orderFoodList.get(selpostion);
// } else {
// return orderFoodList.get(orderFoodList.size() - 1);
// }
// }
//
// private int getCountNumber(String fid) {
// int number = 0;
// for (OrderDetail or : orderFoodList) {
// if (or.getItemno().equals(fid)) {
// number = number + or.newnumber;
// }
// }
// return number;
// }
//
/**
* 设置所有价格相关字段数据
* Qty、Itemtype、Itemno、Advprice、MixGroupDiscPrice字段需提前设置值
......@@ -810,242 +269,6 @@ public class MyOrderManage {
datasBean.setPrice(money * datasBean.getNumber());
}
// /**
// * 主食品转换
// *
// * @param datasBean
// * @return
// */
// public OrderDetail orderConvertOrderDetail(Food datasBean, int Qty, boolean isFuncmoney) {
// OrderDetail orderDetail = new OrderDetail();
// orderDetail.setDesc1(datasBean.getFoodName());
// orderDetail.setDesc2(datasBean.getFoodName());
// orderDetail.setDesc3(datasBean.getFoodName());
// orderDetail.setName(datasBean.getFoodName());
// orderDetail.setItemno(datasBean.getId()+"");
// orderDetail.setFTID(datasBean.getTopID());
// orderDetail.setIsfood(true);
// orderDetail.setIsnew(true);
// orderDetail.setQty(Qty);
// orderDetail.setNewnumber(Qty);
// orderDetail.setItemtype(1);
// orderDetail.setProp("food");
// orderDetail.setModid("");
// orderDetail.setUser_Qty(datasBean.getOR_Qty());
// orderDetail.setPointsadd(datasBean.getPointsAdd());
// orderDetail.setPointsRedeem(datasBean.getPointsRedeem());
// orderDetail.setPointsrote(datasBean.getPointsRatio());
// orderDetail.setD_able(datasBean.isAblediscount());
// orderDetail.setSc_able(datasBean.isServercharge());
// orderDetail.setAutomod(datasBean.isAutoMod() ? 1 : 0);
// orderDetail.setAdvprice(datasBean.getAdvPrice());
// orderDetail.setUnit_id(datasBean.getUnit_id());
// orderDetail.setFuncmoney(isFuncmoney);
//
// setCalculatePrice(orderDetail, isFuncmoney, datasBean.getPrice());
//
// //设置seq
// sseq = get_sseq();
// mseq = get_mseq(sseq);
// orderDetail.setSeqno(seqno);
// orderDetail.setSseq(sseq);
// orderDetail.setMseq(mseq);
//
// int comboLevel = datasBean.isComboFood() ? 1 : 0;
// orderDetail.setComboLevel(comboLevel);
// orderDetail.setSelected(2);
// return orderDetail;
// }
//
// /**
// * 子食品转换
// *
// * @param datasBean
// * @param prop
// * @return
// */
// public OrderDetail comboConvertOrderDetail(ComboItem.DatasBean datasBean, String prop) {
// OrderDetail orderDetail = new OrderDetail();
// orderDetail.setDesc1(datasBean.getDesc1());
// orderDetail.setDesc2(datasBean.getDesc2());
// orderDetail.setDesc3(datasBean.getDesc3());
// orderDetail.setItemno(datasBean.getFID());
// orderDetail.setFTID(datasBean.getFID());
// orderDetail.setComid(datasBean.getComID());
// orderDetail.setIsfood(true);
// orderDetail.setIsnew(true);
// orderDetail.setQty(datasBean.getQty());
// orderDetail.setNewnumber(datasBean.getQty());
// orderDetail.setItemtype(2);
// orderDetail.setD_able(datasBean.isAblediscount());
// orderDetail.setComboAuto(datasBean.isAutomode());
// if (prop.equals("comboitem_auto")) {
// orderDetail.isComboAuto = true;
// }
// orderDetail.ComboLevel = 2;
// orderDetail.limitQty = datasBean.getQty();
// orderDetail.setProp(prop);
//
// int order_detail_id = -1;
// if (MyOrderManage.getInstance().getCurrentOrderFood() != null) {
// order_detail_id = MyOrderManage.getInstance().getCurrentOrderFood().getOrder_detail_id();
// }
// orderDetail.setOrder_detail_id(order_detail_id);
//
// setCalculatePrice(orderDetail, false, datasBean.getDiffAmt());
//
// //设置seq
// sseq = get_sseq();
// mseq = get_mseq(sseq);
// orderDetail.setSeqno(seqno);
// orderDetail.setSseq(sseq);
// orderDetail.setMseq(mseq);
//
// if (presenter.isRvMealClicked()) {
// //手动点击细项 才将子食品作为主体被选中
// orderDetail.setSelected(2);
// } else {
// orderDetail.setSelected(1);
// }
// return orderDetail;
// }
//
// public OrderDetail modifierConvertOrderDetail(Modifier.DatasBean datasBean) {
// OrderDetail orderDetail = new OrderDetail();
// orderDetail.setDesc1(datasBean.getDesc1());
// orderDetail.setDesc2(datasBean.getDesc2());
// orderDetail.setDesc3(datasBean.getDesc3());
// orderDetail.setName(datasBean.getName());
//// orderDetail.setItemno(datasBean.getFid());
// orderDetail.setItemno(datasBean.getMID());
// orderDetail.setFTID(datasBean.getTopID());
// orderDetail.setIsfood(false);
// orderDetail.setIsnew(true);
// orderDetail.setQty(1);
// orderDetail.setNewnumber(1);
// orderDetail.setItemtype(3);
// orderDetail.setProp("modifify");
// orderDetail.setModid(datasBean.getMID());
// orderDetail.setUser_Qty(datasBean.getOR_Qty());
// orderDetail.setD_able(datasBean.isAblediscount());
//
// int order_detail_id = -1;
// if (MyOrderManage.getInstance().getCurrentOrderFood() != null) {
// order_detail_id = MyOrderManage.getInstance().getCurrentOrderFood().getOrder_detail_id();
// }
// orderDetail.setOrder_detail_id(order_detail_id);
//
// setCalculatePrice(orderDetail, false, datasBean.getPrice());
//
// //手动点击细项 才将子食品作为主体被选中
// orderDetail.setSelected(2);
//
// return orderDetail;
// }
//
// public OrderDetail MyButtonMealModifDetailConvertOrderDetail(MyButtonMealModifDetail datasBean) {
// OrderDetail orderDetail = new OrderDetail();
// orderDetail.setDesc1(datasBean.name1);
// orderDetail.setDesc2(datasBean.name2);
// orderDetail.setDesc3(datasBean.name3);
// orderDetail.setItemno(datasBean.mid);
// orderDetail.setItemNo(datasBean.parentid);
// orderDetail.setFTID(datasBean.topid);
// orderDetail.setIsfood(false);
// orderDetail.setIsnew(true);
// orderDetail.setQty(1);
// orderDetail.setNewnumber(1);
// orderDetail.setItemtype(3);
// orderDetail.setProp("modifify_modalkeyboard");
// orderDetail.setModid(datasBean.mid);
// orderDetail.setD_able(datasBean.ablediscount);
//
// int order_detail_id = -1;
// if (MyOrderManage.getInstance().getCurrentOrderFood() != null) {
// order_detail_id = MyOrderManage.getInstance().getCurrentOrderFood().getOrder_detail_id();
// }
// orderDetail.setOrder_detail_id(order_detail_id);
//
//// orderDetail.setOrder_detail_id(datasBean.order_detail_id);
//
// setCalculatePrice(orderDetail, false, datasBean.money);
//
// //设置seq
// sseq = get_sseq();
// mseq = get_mseq(sseq);
// orderDetail.setSeqno(seqno);
// orderDetail.setSseq(sseq);
// orderDetail.setMseq(mseq);
//
//// if (datasBean.name1.length() > 0) {
//// orderDetail.setUnit_id(datasBean.order_detail_id);
//// add_menu_bmd(bmd_advpriceIs2, bmd_advpriceIs2.get_Fname() + "(" + Title.trim() + ")", money, unitid);
//// }
// return orderDetail;
// }
//
// public MyButtonMealModifDetail modifierConvertMyButtonMealModifDetail(Modifier.DatasBean datasBean) {
// MyButtonMealModifDetail buttonMealModifDetail = new MyButtonMealModifDetail(context, GSAApplication.androidSetting.getOrderNumberChildShowSize(), GSAApplication.androidSetting.getOrderNumberChildFontSize());
// buttonMealModifDetail.name1 = datasBean.getDesc1();
// buttonMealModifDetail.name2 = datasBean.getDesc2();
// buttonMealModifDetail.name3 = datasBean.getDesc3();
// buttonMealModifDetail.maxQty = datasBean.getMaxqty();
// buttonMealModifDetail.minQty = datasBean.getMinqty();
// buttonMealModifDetail.mid = datasBean.getMID();
// buttonMealModifDetail.money = datasBean.getPrice();
//
// buttonMealModifDetail.set_Fname(AndroidSettingUtils.getDataLanguage(datasBean.getDesc1(), datasBean.getDesc2(), datasBean.getDesc3()));
// buttonMealModifDetail.topid = datasBean.getTopID();
// buttonMealModifDetail.isParent = datasBean.isParent() ? 1 : 0;
// buttonMealModifDetail.parentid = datasBean.getFid();
// buttonMealModifDetail.mod_Comm = datasBean.isMod_comm() ? 1 : 0;
// buttonMealModifDetail.mod_msg = datasBean.isMod_msg() ? 1 : 0;
// buttonMealModifDetail.multiple = datasBean.isMod_taste() ? 1 : 0;
// buttonMealModifDetail.visible = datasBean.isVisible() ? 1 : 0;
// buttonMealModifDetail.ModKeyboard = datasBean.isModKeyboard();
// buttonMealModifDetail.ablediscount = datasBean.isAblediscount();
// int order_detail_id = -1;
// if (MyOrderManage.getInstance().getCurrentOrderFood() != null) {
// order_detail_id = MyOrderManage.getInstance().getCurrentOrderFood().getOrder_detail_id();
// }
// buttonMealModifDetail.order_detail_id = order_detail_id;
//
// return buttonMealModifDetail;
// }
//
// public Modifier.DatasBean MyButtonMealModifDetailConvertModifier(MyButtonMealModifDetail datasBean) {
//
// Modifier.DatasBean modifier = new Modifier.DatasBean();
// modifier.setDesc1(datasBean.name1);
// modifier.setDesc2(datasBean.name2);
// modifier.setDesc3(datasBean.name3);
// modifier.setMaxqty(datasBean.maxQty);
// modifier.setMinqty(datasBean.minQty);
// modifier.setMID(datasBean.mid);
// modifier.setPrice(datasBean.money);
//
// modifier.setTopID(datasBean.topid);
// modifier.setIsParent(datasBean.isParent == 1 ? true : false);
// modifier.setFid(datasBean.parentid);
// modifier.setMod_comm(datasBean.mod_Comm == 1 ? true : false);
// modifier.setMod_msg(datasBean.mod_msg == 1 ? true : false);
//
// modifier.setMultiple(datasBean.multiple);
// modifier.setVisible(datasBean.visible == 1 ? true : false);
// modifier.setModKeyboard(datasBean.ModKeyboard);
// modifier.setAblediscount(datasBean.ablediscount);
//
// return modifier;
// }
//
// public double getMoney(String fid, int number, int unit, Date needCalcdate) {
// double money = 0.00;
// Db_Food_Price dfp = new Db_Food_Price(context);
// money = dfp.getMoney(fid, unit, number, needCalcdate);
// dfp.closeDb();
// return money;
// }
public int getSize() {
return orderFoodList != null ? orderFoodList.size() : 0;
}
......@@ -1087,6 +310,18 @@ public class MyOrderManage {
if (billMoney != null) {
billMoney.clear();
}
if (pointsOld != null) {
pointsOld = null;
}
if (pointsNow != null) {
pointsNow = null;
}
if (pointsAdd != null) {
pointsAdd = null;
}
if (pointsUse != null) {
pointsUse = null;
}
wholeAmount = 0.0;
totalAmount = 0.0;
orderBean = null;
......@@ -1205,6 +440,38 @@ public class MyOrderManage {
this.mseq = mseq;
}
public Double getPointsOld() {
return pointsOld;
}
public void setPointsOld(Double pointsOld) {
this.pointsOld = pointsOld;
}
public Double getPointsNow() {
return pointsNow;
}
public void setPointsNow(Double pointsNow) {
this.pointsNow = pointsNow;
}
public Double getPointsAdd() {
return pointsAdd;
}
public void setPointsAdd(Double pointsAdd) {
this.pointsAdd = pointsAdd;
}
public Double getPointsUse() {
return pointsUse;
}
public void setPointsUse(Double pointsUse) {
this.pointsUse = pointsUse;
}
public List<OrderDetail> getOrderFoodList() {
if (orderFoodList == null) {
orderFoodList = new ArrayList<>();
......@@ -1243,51 +510,6 @@ public class MyOrderManage {
this.wholeAmount = wholeAmount;
}
//
// public List<DatasBean> getComboOrders() {
// return comboOrders;
// }
//
// public void setComboOrders(List<DatasBean> comboOrders) {
// this.comboOrders = comboOrders;
// }
//
// public List<MixOldOrder> getMixOldOrders() {
// return MixOldOrders;
// }
//
// public void setMixOldOrders(List<MixOldOrder> mixOldOrders) {
// MixOldOrders = mixOldOrders;
// }
//
// public List<MixComboGroupDiscount.DatasBean> getMixComboGroup_Discounts() {
// return mixComboGroup_Discounts;
// }
//
// public void setMixComboGroup_Discounts(List<MixComboGroupDiscount.DatasBean> mixComboGroup_Discounts) {
// this.mixComboGroup_Discounts = mixComboGroup_Discounts;
// }
//
// public List<MixComboGroup.DatasBean> getMixComboGroups() {
// return MixComboGroups;
// }
//
// public void setMixComboGroups(List<MixComboGroup.DatasBean> mixComboGroups) {
// MixComboGroups = mixComboGroups;
// }
//
// public void setContext(Activity context) {
// this.context = context;
// }
//
// public void setPresenter(MealStandPresenter presenter) {
// this.presenter = presenter;
// }
//
// public void setSelectMealAdapter(SelectMealAdapter selectMealAdapter) {
// this.selectMealAdapter = selectMealAdapter;
// }
public boolean isModifyOrder() {
return modifyOrder;
}
......
......@@ -17,21 +17,22 @@ import java.util.concurrent.TimeUnit;
*/
public class ThreadPoolManager {
private String TAG =this.getClass().getSimpleName();
private String TAG = this.getClass().getSimpleName();
private static ThreadPoolManager instence = null;
private ThreadPoolExecutor mThreadPoolExecutor;
private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();
//线程数量,核心线程数
private int corePoolSize = 5;
private static final int CORE_POOL_SIZE = Math.max(2, Math.min(CPU_COUNT - 1, 4));
//池中允许的最大线程数
private int maximumPoolSize = 10;
private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1;
//设置空闲线程的空闲时间,如果一共有6个线程,那么超出核心线程数的两个线程就会被记录时间,超过该时间就会被杀死,如果没有超过核心线程数,那么线程是不会被倒计时的。
private long keepAliveTime = 10;
private static final int KEEP_ALIVE_SECONDS = 30;
//等待执行的容器容量大小
private int capacity = 10;
private int capacity = 128;
//拒绝后的执行任务容器--》凉快的地方
private LinkedBlockingQueue taskQueue =new LinkedBlockingQueue();
private LinkedBlockingQueue taskQueue = new LinkedBlockingQueue();
public synchronized static ThreadPoolManager getInstence() {
if (instence == null) {
......@@ -49,9 +50,9 @@ public class ThreadPoolManager {
* ArrayBlockingQueue是一个执行任务的容量,当调用mThreadPoolExecutor的execute,容量加1,执行run完后,容量减1
* ArrayBlockingQueue后面传入true就是以FIFO规则存储:先进先出
*/
public ThreadPoolManager(){
if(mThreadPoolExecutor==null){
mThreadPoolExecutor = new ThreadPoolExecutor(corePoolSize,maximumPoolSize,keepAliveTime, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(capacity,true),handler);
public ThreadPoolManager() {
if (mThreadPoolExecutor == null) {
mThreadPoolExecutor = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE_SECONDS, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(capacity, true), handler);
}
//开启线程一直循环从等待队列里面取出可执行任务并执行
mThreadPoolExecutor.execute(runnable);
......@@ -60,9 +61,10 @@ public class ThreadPoolManager {
/**
* 往队列里面存入可执行任务
*
* @param runnable
*/
public void putExecutableTasks(Runnable runnable){
public void putExecutableTasks(Runnable runnable) {
try {
taskQueue.put(runnable);
} catch (InterruptedException e) {
......@@ -73,34 +75,33 @@ public class ThreadPoolManager {
/**
* ThreadPoolExecutor的run
*/
private Runnable runnable=new Runnable() {
private Runnable runnable = new Runnable() {
@Override
public void run() {
//开启循环
while(true){
while (true) {
//取出等待的执行任务
Runnable taskQueueRunnable = null;
try {
Log.d(TAG,"等待队列大小:"+taskQueue.size());
Log.d(TAG, "等待队列大小:" + taskQueue.size());
taskQueueRunnable = (Runnable) taskQueue.take();
} catch (InterruptedException e) {
e.printStackTrace();
}
if(runnable!=null){
if (runnable != null) {
mThreadPoolExecutor.execute(taskQueueRunnable);
}
Log.d(TAG,"线程池大小"+mThreadPoolExecutor.getPoolSize());
Log.d(TAG, "线程池大小" + mThreadPoolExecutor.getPoolSize());
}
}
};
/**
* 拒绝策略
* 当ArrayBlockingQueue容量过大,就要执行拒绝策略,对来的执行任务说:放不下了,先到一边凉快去,那么就要有一个凉快的容器撞他们
*
* 当ArrayBlockingQueue容量过大,就要执行拒绝策略,对来的执行任务说:放不下了,先到一边凉快去,那么就要有一个凉快的容器装他们
*/
private RejectedExecutionHandler handler = new RejectedExecutionHandler(){
private RejectedExecutionHandler handler = new RejectedExecutionHandler() {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
......
......@@ -12,7 +12,7 @@ public class ExpandConstant {
public final static String RoundingDecimal = "RoundingDecimal";
public final static String ItemDecimals = "ItemDecimals";
public final static String MergeSendFood = "MergeSendFood";
public final static String AutoPrinterParper = "AutoPrinterParper";
......
......@@ -149,6 +149,11 @@ public class ComboItem {
*/
@Transient
private long ablediscount;
/**
* 是否收取服務費
*/
@Transient
private int serviceCharge;
/*** 是否自動展開*/
@Transient
private int autoMode = 0;
......
......@@ -104,7 +104,19 @@ public class Discount {
// else {
// discountPrice = sourcePrice - discountPrice;
// }
return -MoneyUtil.get_ItemDecimals_money(discountPrice);
return -MoneyUtil.get_ItemDecimals_money(Math.abs(discountPrice));
}
public static double calculationMemberDiscount(int memberDiscount, double sourcePrice) {
double discountPrice = MoneyUtil.divide(MoneyUtil.multiply(sourcePrice, memberDiscount), 100).doubleValue();
if (sourcePrice < discountPrice) {
//折扣金額不能超出總額
discountPrice = sourcePrice;
}
// else {
// discountPrice = sourcePrice - discountPrice;
// }
return -MoneyUtil.get_ItemDecimals_money(Math.abs(discountPrice));
}
......
......@@ -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,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";
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,SERVICE_CHARGE 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 + "'";
......@@ -187,6 +187,7 @@ public class ComboItemDaoUtils {
order.setPointsAdd(c.getDouble(c.getColumnIndex("POINTS_ADD")));
order.setPointsRatio(c.getLong(c.getColumnIndex("POINTS_RATIO")));
order.setPointsRedeem(c.getDouble(c.getColumnIndex("POINTS_REDEEM")));
order.setServiceCharge(c.getInt(c.getColumnIndex("SERVICE_CHARGE")));
String defmodifier = c.getString(c.getColumnIndex("DEF_MODIFIER"));
if (!TextUtils.isEmpty(defmodifier) && !", ".equals(defmodifier)) {
order.setDefmodifier(defmodifier);
......
......@@ -117,6 +117,10 @@ public class FunctionStyleUtils {
* 送單是否自動合併未送食品(只處理未有細項的食品)
*/
private boolean MergeSendFood = true;
/**
* 送單是否自動打印上菜纸
*/
private boolean AutoPrinterParper = true;
private Set<String> customizeSetting = new HashSet<>();
......
......@@ -62,7 +62,7 @@ public class MyGlobalHttpHandler implements GlobalHttpHandler {
// return;
// }
//因为String的length是字符数量不是字节数量所以为了防止中文字符过多,
// 把4*1024的MAX字节打印长度改为2001字符数
//把4*1024的MAX字节打印长度改为2001字符数
// int max_str_length = 2001 - TAG.length();
//大于4000时
// while (msg.length() > max_str_length) {
......
......@@ -77,11 +77,11 @@ public class MyResponseErrorListener implements ResponseErrorListener {
showloggedDialog(activity, ArmsUtils.getString(context, R.string.response_error_request_logged));
}
} else {
if (httpException.code() == 400) {
//Bad Request
Activity activity = GsaCloudApplication.getAppContext().getCurrentActivity();
toLoginActivity(activity);
}
// if (httpException.code() == 400) {
// //Bad Request
// Activity activity = GsaCloudApplication.getAppContext().getCurrentActivity();
// toLoginActivity(activity);
// }
msg = httpException.message();
}
return msg;
......
......@@ -20,7 +20,7 @@ public class MyAppLifecycles implements AppLifecycles {
@Override
public void onCreate(Application application) {
// initTimber();
// initLeakCanary(application);
initLeakCanary(application);
initFragmentation();
// initARouter(application);
}
......
package com.gingersoft.gsa.cloud.ui.adapter;
import android.graphics.Color;
import android.text.TextUtils;
import androidx.annotation.Nullable;
......@@ -31,7 +32,8 @@ public class BillMethodAdapter extends BaseQuickAdapter<PayMethod, BaseViewHolde
}
tv_bill_method_name.setTextSize(item.getPayModeSize());
tv_bill_method_name.setTextColor(item.getPayModeTextColor());
tv_bill_method_name.setTextColor(Color.parseColor(item.getFont_color()));
tv_bill_method_name.setBackgroundColor(Color.parseColor(item.getColor()));
}
}
......@@ -107,14 +107,32 @@ public class OrderPayView extends LinearLayout {
if (mBillMoneyList.size() == 2) {
//替换掉第一个
mBillMoneyList.remove(0);
} else if (mBillMoneyList.size() == 1) {
//差一种支付方式 直接补足余额
}
//是否同步金額
//固定金額 (0:否 1:是)
if (method.getWhetherFixedAmount() == 1) {
//直接补足余额
double differenceMoney = getDifferenceMoney();
if (differenceMoney > -1 && differenceMoney != totalAmount) {
if (method.getMinPayAmount() != 0) {
//補足最小支付金額
if (differenceMoney > method.getMinPayAmount()) {
method.setPayMoney(differenceMoney);
} else {
method.setPayMoney(method.getMinPayAmount());
}
} else {
//補足差額
if (differenceMoney > -1 && differenceMoney != totalAmount) {
method.setPayMoney(differenceMoney);
}
}
} else {
if (method.getMinPayAmount() != 0) {
//補足最小支付金額
method.setPayMoney(method.getMinPayAmount());
}
}
//添加選中支付方式
mBillMoneyList.add(method);
mBillMoneyAdapter.setSelect_position(mBillMoneyList.size() - 1);
......@@ -124,7 +142,6 @@ public class OrderPayView extends LinearLayout {
setDifferenceText(context);
}
});
mBillMoneyAdapter.setOnItemClickListener(new BillMoneyAdapter.OnItemClickListener() {
@Override
......@@ -173,7 +190,6 @@ public class OrderPayView extends LinearLayout {
if (mOnSureClickLisenter != null) {
mOnSureClickLisenter.onClick(mBillMoneyList);
}
});
//Keypad
......
......@@ -79,11 +79,14 @@ public class TriangleLabelView extends View {
private Corner corner;
private boolean isRestoreText = true;
public enum Corner {
TOP_LEFT(1),
TOP_RIGHT(2),
BOTTOM_LEFT(3),
BOTTOM_RIGHT(4),;
private final int type;
Corner(int type) {
......@@ -139,6 +142,8 @@ public class TriangleLabelView extends View {
this.primary.size = ta.getDimension(R.styleable.TriangleLabelView_primaryTextSize, sp2px(11));
this.secondary.size = ta.getDimension(R.styleable.TriangleLabelView_secondaryTextSize, sp2px(8));
this.isRestoreText = ta.getBoolean(R.styleable.TriangleLabelView_isRestoreText, true);
final String primary = ta.getString(R.styleable.TriangleLabelView_primaryText);
if (primary != null) {
this.primary.text = primary;
......@@ -335,13 +340,15 @@ public class TriangleLabelView extends View {
canvas.drawPath(path, trianglePaint);
// draw secondaryText
// if (corner.top()) {
// canvas.drawText(secondary.text, (width) / 2, topPadding + secondary.height, secondary.paint);
// canvas.drawText(primary.text, (width) / 2, (topPadding + secondary.height + centerPadding + primary.height), primary.paint);
// } else {
// canvas.drawText(secondary.text, (width) / 2, bottomPadding + secondary.height + centerPadding + primary.height, secondary.paint);
// canvas.drawText(primary.text, (width) / 2, (bottomPadding + primary.height), primary.paint);
// }
if (isRestoreText) {
if (corner.top()) {
canvas.drawText(secondary.text, (width) / 2, topPadding + secondary.height, secondary.paint);
canvas.drawText(primary.text, (width) / 2, (topPadding + secondary.height + centerPadding + primary.height), primary.paint);
} else {
canvas.drawText(secondary.text, (width) / 2, bottomPadding + secondary.height + centerPadding + primary.height, secondary.paint);
canvas.drawText(primary.text, (width) / 2, (bottomPadding + primary.height), primary.paint);
}
}
canvas.restore();
}
......
......@@ -34,7 +34,6 @@ 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.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.R2;
......@@ -63,16 +62,15 @@ 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 java.util.logging.LogManager;
import java.util.logging.Logger;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
......@@ -82,12 +80,12 @@ import butterknife.OnClick;
import cn.bingoogolapple.photopicker.activity.BGAPhotoPickerActivity;
import cn.bingoogolapple.qrcode.core.QRCodeView;
import cn.bingoogolapple.qrcode.zxing.ZXingView;
import lombok.Builder;
import static com.jess.arms.utils.Preconditions.checkNotNull;
public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements IView, QRCodeView.Delegate, OnClickListener {
@BindView(R2.id.topbar)
QMUITopBar mTopBar;
@BindView(R2.id.btn_album)
......@@ -104,16 +102,14 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
Manifest.permission.READ_EXTERNAL_STORAGE,
};
public static final int CALL_BACK_QR_RESULT = 100;
private static final int REQUEST_CODE_CHOOSE_QRCODE_FROM_GALLERY = 666;
public static final int CALL_BACK_QR_RESULT = 666;
private String title = "掃碼";
public static void startMipcaCaptureActivity(Context context, String title) {
public static void startMipcaCaptureActivity(Activity context, String title) {
Intent intent = new Intent(context, MipcaCaptureActivity.class);
intent.putExtra("title", title);
context.startActivity(intent);
// context.startActivityForResult(intent, MealStandActivity.SCAN_REQUEST_CODE);
context.startActivityForResult(intent, MipcaCaptureActivity.CALL_BACK_QR_RESULT);
}
@Override
......@@ -134,6 +130,7 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
@Override
public void initData(@Nullable Bundle savedInstanceState) {
mZXingView.setDelegate(this);
}
......@@ -216,18 +213,6 @@ 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);
}
}
......@@ -300,7 +285,13 @@ public class MipcaCaptureActivity extends BaseActivity<BasePresenter> implements
Log.i(TAG, "onScanQRCodeSuccess:" + result);
showMessage("掃描結果: " + result);
vibrate();
mZXingView.startSpot(); // 开始识别
mZXingView.startSpot();
Intent intent = new Intent();
intent.putExtra("qrCodeResult",result);
setResult(CALL_BACK_QR_RESULT,intent);
killMyself();
}
@Override
......
......@@ -52,6 +52,8 @@
<attr name="labelCenterPadding" format="dimension" />
<attr name="labelBottomPadding" format="dimension" />
<attr name="isRestoreText" format="boolean" />
<attr name="primaryTextStyle">
<enum name="normal" value="0" />
<enum name="italic" value="1" />
......
......@@ -60,17 +60,17 @@ class BtnBuilder(var functions: List<Function>) {
}
private fun getBtn(key:String, btnCode:Int, btnContent: String, btnColor: Int, btnImg: Int): BtnBean? {
// for (value in functions) {
// if (value.resUrl == key) {
// return when {
// value.status == 3 -> BtnBean(btnCode, btnContent, R.color.color_ccc, btnImg)
//// value.status == 1 -> BtnBean(btnCode, btnContent, btnColor, btnImg)
// else -> BtnBean(btnCode, btnContent, btnColor, btnImg)
// }
// }
// }
// return null
return BtnBean(btnCode, btnContent, btnColor, btnImg)
for (value in functions) {
if (value.resUrl == key) {
return when {
value.status == 3 -> BtnBean(btnCode, btnContent, R.color.color_ccc, btnImg)
// value.status == 1 -> BtnBean(btnCode, btnContent, btnColor, btnImg)
else -> BtnBean(btnCode, btnContent, btnColor, btnImg)
}
}
}
return null
// return BtnBean(btnCode, btnContent, btnColor, btnImg)
}
}
......@@ -155,8 +155,8 @@ public class PayTypeInfo {
private int id;
private long isdefault;
private String payName;
private String remarks;
private String payName;
private String payName3;
private String payName2;
private boolean checked;
......@@ -229,7 +229,7 @@ public class PayTypeInfo {
return payMethods;
}
for (PayTypeInfo.DataBean.PayTypeBean payType : payTypes.payType) {
PayMethod payMethod = new PayMethod(payType.id, payType.payName, "", payType.remarks, payType.payName, payType.payName2, payType.payName3, "");
PayMethod payMethod = new PayMethod(payType.id, payType.payName, payType.payName2, payType.payName3);
payMethods.add(payMethod);
}
return payMethods;
......
......@@ -262,53 +262,53 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
List<Function> functions = new ArrayList<>();
//// if (!BuildConfig.DEBUG) {
functions.add(new Function((long) 150, 0, 5, "點餐", 0, 0));
if (BuildConfig.DEBUG) {
functions.add(new Function((long) 138, 150, 5, "餐檯模式", R.drawable.ic_dining_table_mode, 0));
}
functions.add(new Function((long) 139, 150, 5, "外送/自取", R.drawable.ic_delivery_mode, 0));
// functions.add(new Function((long) 140, 150, 5, "外賣模式", R.drawable.ic_outsourcing_model_close, 0));
// functions.add(new Function((long) 141, 150, 5, "預點餐模式", R.drawable.ic_pre_order_mode_close, 1));
functions.add(new Function((long) 151, 0, 5, "管理", 0, 0));
if (BuildConfig.DEBUG) {
functions.add(new Function((long) 142, 151, 5, "賬單管理", R.drawable.ic_meals_menu_management, 0));
functions.add(new Function((long) 143, 151, 5, "餐檯管理", R.drawable.ic_dining_table_management, 0));
}
functions.add(new Function((long) 144, 151, 5, "打印管理", R.drawable.ic_print_management, 0));
if (BuildConfig.DEBUG) {
functions.add(new Function((long) 145, 151, 5, "支付管理", R.drawable.ic_pay_management_close, 1));
functions.add(new Function((long) 146, 151, 5, "折扣管理", R.drawable.ic_discount_management_close, 1));
functions.add(new Function((long) 147, 151, 5, "沽清管理", R.drawable.ic_sell_off_manger, 0));
}
functions.add(new Function((long) 152, 0, 5, "員工", 0, 0));
functions.add(new Function((long) 147, 152, 5, "員工管理", R.drawable.ic_staff_management_close, 1));
functions.add(new Function((long) 148, 152, 5, "權限管理", R.drawable.ic_authority_management_close, 1));
functions.add(new Function((long) 149, 152, 5, "操作記錄", R.drawable.ic_operation_record_close, 1));
// } else {
// List<Function> orderFuncations = FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.order, "order");
// if (orderFuncations.size() > 0) {
// functions.addAll(orderFuncations);
// sl_order.setVisibility(View.VISIBLE);
// } else {
// sl_order.setVisibility(View.INVISIBLE);
// functions.add(new Function((long) 150, 0, 5, "點餐", 0, 0));
// if (BuildConfig.DEBUG) {
// functions.add(new Function((long) 138, 150, 5, "餐檯模式", R.drawable.ic_dining_table_mode, 0));
// }
//
// List<Function> managerFuncations = FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.manager, "manager");
// if (managerFuncations.size() > 0) {
// functions.addAll(managerFuncations);
// ll_management.setVisibility(View.VISIBLE);
// } else {
// ll_management.setVisibility(View.GONE);
// functions.add(new Function((long) 139, 150, 5, "外送/自取", R.drawable.ic_delivery_mode, 0));
//// functions.add(new Function((long) 140, 150, 5, "外賣模式", R.drawable.ic_outsourcing_model_close, 0));
//// functions.add(new Function((long) 141, 150, 5, "預點餐模式", R.drawable.ic_pre_order_mode_close, 1));
// functions.add(new Function((long) 151, 0, 5, "管理", 0, 0));
// if (BuildConfig.DEBUG) {
// functions.add(new Function((long) 142, 151, 5, "賬單管理", R.drawable.ic_meals_menu_management, 0));
// functions.add(new Function((long) 143, 151, 5, "餐檯管理", R.drawable.ic_dining_table_management, 0));
// }
//
// List<Function> employeeFuncations = FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.employee, "employee");
// if (employeeFuncations.size() > 0) {
// functions.addAll(employeeFuncations);
// ll_staff_management.setVisibility(View.VISIBLE);
// } else {
// ll_staff_management.setVisibility(View.GONE);
// functions.add(new Function((long) 144, 151, 5, "打印管理", R.drawable.ic_print_management, 0));
// if (BuildConfig.DEBUG) {
// functions.add(new Function((long) 145, 151, 5, "支付管理", R.drawable.ic_pay_management_close, 1));
// functions.add(new Function((long) 146, 151, 5, "折扣管理", R.drawable.ic_discount_management_close, 1));
// functions.add(new Function((long) 147, 151, 5, "沽清管理", R.drawable.ic_sell_off_manger, 0));
// }
// functions.add(new Function((long) 152, 0, 5, "員工", 0, 0));
// functions.add(new Function((long) 147, 152, 5, "員工管理", R.drawable.ic_staff_management_close, 1));
// functions.add(new Function((long) 148, 152, 5, "權限管理", R.drawable.ic_authority_management_close, 1));
// functions.add(new Function((long) 149, 152, 5, "操作記錄", R.drawable.ic_operation_record_close, 1));
// } else {
List<Function> orderFuncations = FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.order, "order");
if (orderFuncations.size() > 0) {
functions.addAll(orderFuncations);
sl_order.setVisibility(View.VISIBLE);
} else {
sl_order.setVisibility(View.INVISIBLE);
}
List<Function> managerFuncations = FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.manager, "manager");
if (managerFuncations.size() > 0) {
functions.addAll(managerFuncations);
ll_management.setVisibility(View.VISIBLE);
} else {
ll_management.setVisibility(View.GONE);
}
List<Function> employeeFuncations = FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.employee, "employee");
if (employeeFuncations.size() > 0) {
functions.addAll(employeeFuncations);
ll_staff_management.setVisibility(View.VISIBLE);
} else {
ll_staff_management.setVisibility(View.GONE);
}
// }
//將功能列表數據分組
......@@ -328,15 +328,15 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
}
}
}
// if (orderFuncations.size() > 0) {
if (orderFuncations.size() > 0) {
initAdapter(parents, funMap, 0, R.layout.main_home_funcation_item, rvOrdering, 4);
// }
// if (managerFuncations.size() > 0) {
}
if (managerFuncations.size() > 0) {
initAdapter(parents, funMap, 1, R.layout.main_home_management_funcation_item, rvManagement, 5);
// }
// if (employeeFuncations.size() > 0) {
}
if (employeeFuncations.size() > 0) {
initAdapter(parents, funMap, 2, R.layout.main_home_management_funcation_item, rvStaffManagement, 4);
// }
}
}
private void initAdapter(SparseArray<String> parents, SparseArray<List<Function>> funMap, int i, int p, RecyclerView rvOrdering, int i2) {
......
......@@ -24,6 +24,7 @@ import retrofit2.http.Query;
*/
public interface TableManageService {
@POST("restaurant/addRestaurantRegion" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> addArea(@Body RequestBody requestBody);
......
......@@ -6,6 +6,7 @@ import android.widget.LinearLayout;
import com.gingersoft.gsa.cloud.base.common.bean.BillOrderMoney;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.common.bean.MemberInfo;
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;
......@@ -16,6 +17,7 @@ import com.gingersoft.gsa.cloud.constans.ExpandConstant;
import com.gingersoft.gsa.cloud.database.bean.ExpandInfo;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.database.utils.ExpandInfoDaoUtils;
import com.gingersoft.gsa.cloud.print.bean.OrderDetails;
import java.math.BigDecimal;
import java.util.ArrayList;
......@@ -101,10 +103,24 @@ public class PrintBill extends PrinterRoot {
layout.addView(getDiningBillPayMethod(mContext, MyOrderManage.getInstance().getBillMoney()));
layout.addView(getLine(mContext));
// layout.addView(getTableMealMemberIntegerView(mContext,));
layout.addView(getTableMealMemberIntegerView(mContext, getOrderDetail()));
return zoomBitmap(deviceBean, viewToBitmap(mContext, layout));
}
private OrderDetails.DataBean getOrderDetail() {
OrderDetails.DataBean dataBean = new OrderDetails.DataBean();
dataBean.setNowPoints(MyOrderManage.getInstance().getPointsNow());
dataBean.setAddPoints(MyOrderManage.getInstance().getPointsAdd());
dataBean.setOldPoints(MyOrderManage.getInstance().getPointsUse());
MemberInfo memberInfo = MyOrderManage.getInstance().getMemberInfo();
if (memberInfo != null) {
dataBean.setMEMBER_NAME(memberInfo.getMemberName());
dataBean.setPHONE(memberInfo.getPhone());
}
return dataBean;
}
}
......@@ -127,7 +127,11 @@ public interface MealStandContract {
Observable<FoodReason> getRestaurantFoodReason(int brandId, int restaurantId, int type);
Observable<BaseResult2> queryMember(int type, String parm, String shopName);
Observable<BaseResult> queryMember(int type, String parm, String shopName,int tableId,String tableNumber);
Observable<BaseResult> memeberUse(int tableId, String tableNumber, long memberId);
Observable<BaseResult> memeberUseCancel(int tableId, String tableNumber, long memberId);
List<Food> queryDB_AllFoodList();
......
package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
......@@ -67,6 +68,8 @@ public interface TableContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
List<Food> queryDB_AllFoodList();
List<Modifier> queryDB_ModifierList(long fid, int mode);
Observable<TableBean> getTables(int restaurantId);
......
......@@ -180,9 +180,21 @@ public class MealStandModel extends BaseModel implements MealStandContract.Model
}
@Override
public Observable<BaseResult2> queryMember(int type, String parm, String shopName) {
public Observable<BaseResult> queryMember(int type, String parm, String shopName,int tableId,String tableNumber) {
return mRepositoryManager.obtainRetrofitService(MemberService.class)
.queryMember(type,parm,shopName);
.queryMember(type,parm,shopName,tableId,tableNumber);
}
@Override
public Observable<BaseResult> memeberUse(int tableId, String tableNumber, long memberId) {
return mRepositoryManager.obtainRetrofitService(MemberService.class)
.memeberUse(tableId,tableNumber,memberId);
}
@Override
public Observable<BaseResult> memeberUseCancel(int tableId, String tableNumber, long memberId) {
return mRepositoryManager.obtainRetrofitService(MemberService.class)
.memeberUseCancel(tableId,tableNumber,memberId);
}
@Override
......
......@@ -4,8 +4,10 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
......@@ -59,6 +61,14 @@ public class TableModel extends BaseModel implements TableContract.Model {
this.mApplication = null;
}
@Override
public List<Food> queryDB_AllFoodList() {
FoodDaoUtils foodDaoUtils = new FoodDaoUtils(mApplication);
List<Food> foods = foodDaoUtils.queryAllFoodByQueryBuilder();
return foods;
}
@Override
public List<Modifier> queryDB_ModifierList(long fid, int mode) {
ModifierDaoUtils daoUtils = new ModifierDaoUtils(mApplication);
......
......@@ -2,6 +2,8 @@ package com.gingersoft.gsa.cloud.table.mvp.model.bean;
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 lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
......@@ -82,7 +84,7 @@ public class OrderDetailItem implements Serializable {
/**折扣金額*/
private double discountAmount;
/**折扣比例*/
private double discountValue;
private int discountValue;
/**折扣名稱*/
private String remark;
/**折扣類型*/
......@@ -94,6 +96,8 @@ public class OrderDetailItem implements Serializable {
private List<OrderBean.OrderDetailsBean> orderDetails;
private List<OrderPayBean> orderPays;
/**餐檯信息*/
private TableBean.DataBean restaurantTable;
/**
* 訂單狀態:0:未支付;1:待確認(已支付, 待餐廳確認);2:制作中(餐厅确认);3:派送中;4:确认收货(完成);5:是否评论;6:取消;
......@@ -120,8 +124,6 @@ public class OrderDetailItem implements Serializable {
private double paySales;
private String payName;
}
// public static List<OrderDetail> orderTransOrderDetails(List<OrderBean.OrderDetailsBean> orderDetails) {
// List<OrderDetail> orderDetailList = new ArrayList<>();
......
package com.gingersoft.gsa.cloud.table.mvp.model.bean.request;
import com.gingersoft.gsa.cloud.base.common.bean.OrderBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDiscount;
import java.util.List;
import java.util.Map;
......@@ -20,11 +21,9 @@ public class AddOrderRequest {
private long orderId;
private long tableId;
private String tableNumber;
private Integer memberId;
/**賬單小數*/
private Double rounding;
/**整單折扣ID*/
private Long discountId;
private List<OrderDiscount.Request> discountDetails;
private Map<String, List<OrderBean.OrderDetailsBean>> maps;
}
......
package com.gingersoft.gsa.cloud.table.mvp.model.bean.request;
import com.gingersoft.gsa.cloud.base.common.bean.OrderBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDiscount;
import java.util.List;
import java.util.Map;
......@@ -22,11 +23,9 @@ public class CreateOrderRequest {
private String tableNumber;
private String tableName;
private int restaurantId;
private Integer memberId;
/**賬單小數*/
private Double rounding;
/**整單折扣ID*/
private Long discountId;
private List<OrderDiscount.Request> discountDetails;
private Map<Long, List<OrderBean.OrderDetailsBean>> orderDetails;
......
......@@ -21,8 +21,13 @@ import retrofit2.http.Query;
public interface MemberService {
@Headers({"Domain-Name: update_version"})
@GET("member/getMemberInfo?" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult2> queryMember(@Query("type") int type, @Query("parm") String parm, @Query("gsposShopId") String shopName);
@Headers({"Domain-Name: new_base_url"})
@GET("member/checkMemberInfo" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> queryMember(@Query("type") int type, @Query("parm") String parm, @Query("gsposShopId") String shopName,@Query("tableId") int tableId, @Query("tableNumber") String tableNumber);
@GET("restaurantTable/memberUse" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> memeberUse(@Query("tableId") int tableId, @Query("tableNumber") String tableNumber, @Query("memberId") long memberId);
@GET("restaurantTable/memberUseCancel" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> memeberUseCancel(@Query("tableId") int tableId, @Query("tableNumber") String tableNumber, @Query("memberId") long memberId);
}
......@@ -2,15 +2,16 @@ 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;
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.BillOrderMoney;
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.OrderDiscount;
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;
......@@ -42,11 +43,8 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.inject.Inject;
......@@ -57,7 +55,6 @@ import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import okhttp3.FormBody;
import okhttp3.RequestBody;
import static com.gingersoft.gsa.cloud.base.common.bean.OrderDetail.DISCOUNT_PROP;
import static com.gingersoft.gsa.cloud.base.common.bean.OrderDetail.DISCOUNT_TYPE;
/**
......@@ -67,7 +64,6 @@ import static com.gingersoft.gsa.cloud.base.common.bean.OrderDetail.DISCOUNT_TYP
* 修订历史:2020-01-11
* 描述:
*/
@ActivityScope
public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends BaseOrderContract.View> extends BasePresenter<BaseOrderContract.Model, BaseOrderContract.View> {
......@@ -114,6 +110,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
OpenTableManage.getDefault().setTableBean(new TableBean.DataBean());
}
OpenTableManage.getDefault().getTableBean().setCreateTime(TimeUtils.getTime(createTime, TimeUtils.DEFAULT_DATE_FORMAT));
}
@Inject
......@@ -141,20 +138,22 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
initOrderAdapter();
initItemClickListener();
removeBillOrderMoney();
// removeBillOrderMoney();
if (this instanceof MealStandPresenter) {
addTableServiceAmount();
addSentOrderDiscount();
addOrderRounding();
updateOrderDiscount();
//設置賬單總金額
myOrderManage.setTotalAmount(getTotalAmount());
} else {
updateOrderMoneyItem();
}
}
private void removeBillOrderMoney() {
for (int i = mOrderMoneyList.size() - 1; i >= 0; i--) {
BillOrderMoney billOrderMoney = mOrderMoneyList.get(i);
if ((billOrderMoney.getType() == BillOrderMoney.DISCOUNT_TYPE && billOrderMoney.getStatus() == 0)) {
if ((billOrderMoney.getType() == BillOrderMoney.ORDER_DISCOUNT_TYPE || billOrderMoney.getType() == BillOrderMoney.MEMBER_DISCOUNT_TYPE) && billOrderMoney.getStatus() == 0) {
//未送單折扣不刪除
} else {
mOrderMoneyList.remove(i);
......@@ -230,8 +229,11 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
@Override
public void onRequestPermissionSuccess() {
Intent intent = new Intent(IActivity, MipcaCaptureActivity.class);
IActivity.startActivityForResult(intent, MealStandActivity.SCAN_REQUEST_CODE);
if (IActivity instanceof MealStandActivity) {
MipcaCaptureActivity.startMipcaCaptureActivity(IActivity, "掃描會員碼");
} else if (IActivity instanceof OrderContentActivity) {
MipcaCaptureActivity.startMipcaCaptureActivity(IActivity, "掃描折扣碼");
}
}
@Override
......@@ -288,7 +290,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
* @param isPrint 是否印單
*/
public void sendOrder(boolean isPrint) {
if (MyOrderManage.getInstance().getOrderId() == -1) {
if (MyOrderManage.getInstance().getOrderId() < 1) {
if (getFoodSize() == 0) {
Class[] parameterTypes = {boolean.class};
Object[] parameters = {isPrint};
......@@ -325,10 +327,11 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
/**
* 更新賬單金額
*/
protected void updateOrderMoneyItem() {
public void updateOrderMoneyItem() {
updateFoodDiscount();
updateTableServiceAmount();
updateOrderDiscount();
updateMemberDiscount();
updateOrderRounding();
myOrderManage.setTotalAmount(getTotalAmount());
}
......@@ -339,29 +342,36 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
private void addSentOrderDiscount() {
OrderBean orderBean = myOrderManage.getOrderBean();
if (orderBean != null) {
//折扣
List<OrderDiscount.Respose> discountDetails = orderBean.getDiscountDetails();
if (discountDetails != null) {
for (int i = 0; i < discountDetails.size(); i++) {
OrderDiscount.Respose orderDiscount = discountDetails.get(i);
if (orderDiscount.getType() == OrderDiscount.ORDER_DISCOUNT) {
//整單折扣
Discount discount = new Discount();
discount.setType(orderBean.getType());
discount.setRemark(orderBean.getRemark());
if (orderBean.getDiscountValue() != 0) {
discount.setId(orderDiscount.getDiscountId());
discount.setType(orderDiscount.getType());
discount.setRemark(orderDiscount.getRemark());
if (orderDiscount.getDiscountValue() != 0) {
//百分比折扣
discount.setDiscount_value(orderBean.getDiscountValue());
discount.setDiscount_value(orderDiscount.getDiscountValue());
addOrderDiscount(true, discount, 1);
}
if (orderBean.getDiscountAmount() != 0) {
if (orderDiscount.getDiscountAmount() != 0) {
//金額折扣
discount.setAmount(orderBean.getDiscountAmount());
discount.setAmount(orderDiscount.getDiscountAmount());
addOrderDiscount(true, discount, 1);
}
} else if (orderDiscount.getType() == OrderDiscount.MEMBER_DISCOUNT) {
//會員折扣
MemberInfo memberInfo = MyOrderManage.getInstance().getMemberInfo();
if (memberInfo != null) {
addMemberDiscount(memberInfo.getId(), orderDiscount.getMemberDiscountRate(), memberInfo.getMemberName(), memberInfo.getLevelName1());
}
}
}
}
}
/**
* 添加會員項
*/
private void addOrderMember() {
}
/**
......@@ -373,7 +383,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
return;
}
// double serviceAmount = getTotalAmountFilterByType(BillOrderMoney.SERVERCHARGE_TYPE, BillOrderMoney.DISCOUNT_TYPE, BillOrderMoney.ROUNDING_TYPE) * dataBean.getServiceCharge() / 100;
double serviceAmount = getFoodTotal() * dataBean.getServiceCharge() / 100;
double serviceAmount = getScAbleFoodTotal() * dataBean.getServiceCharge() / 100;
if (serviceAmount > 0) {
BillOrderMoney orderMoney = new BillOrderMoney();
orderMoney.setMoney(MoneyUtil.get_ItemDecimals_money(serviceAmount));
......@@ -381,7 +391,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
orderMoney.setStatus(1);
orderMoney.setType(BillOrderMoney.SERVERCHARGE_TYPE);
orderMoney.setTextColor(ArmsUtils.getColor(IActivity, R.color.theme_black));
BillOrderMoney discountBill = getBillOrderItemByType(BillOrderMoney.DISCOUNT_TYPE);
BillOrderMoney discountBill = getBillOrderItemByType(BillOrderMoney.ORDER_DISCOUNT_TYPE);
if (discountBill != null) {
mOrderMoneyList.add(0, orderMoney);
} else {
......@@ -399,7 +409,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
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 = getFoodTotal() * dataBean.getServiceCharge() / 100;
double serviceAmount = getScAbleFoodTotal() * dataBean.getServiceCharge() / 100;
if (serviceAmount > 0) {
billOrderMoney.setMoney(MoneyUtil.get_ItemDecimals_money(serviceAmount));
} else {
......@@ -409,15 +419,16 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
}
/**
* 添加賬單折扣
*
* @param discount
*/
protected void addOrderDiscount(boolean init, Discount discount, int status) {
double totalMoney = getDiscountableFoodTotal();
double totalMoney = getDiscountableFoodTotal(BillOrderMoney.ORDER_DISCOUNT_TYPE, true);
for (BillOrderMoney item : mOrderMoneyList) {
if (item.getType() == BillOrderMoney.ROUNDING_TYPE) {
if (item.getType() == BillOrderMoney.ORDER_DISCOUNT_TYPE) {
mOrderMoneyList.remove(item);
mOrderMoneyAdapter.notifyDataSetChanged();
break;
......@@ -427,7 +438,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
BillOrderMoney orderMoney = new BillOrderMoney();
orderMoney.setMoney(discountPrice);
orderMoney.setTitle(discount.getRemark());
orderMoney.setType(BillOrderMoney.DISCOUNT_TYPE);
orderMoney.setType(BillOrderMoney.ORDER_DISCOUNT_TYPE);
if (status == 0) {
orderMoney.setTextColor(ArmsUtils.getColor(IActivity, R.color.theme_hint_color));
} else {
......@@ -438,6 +449,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
mOrderMoneyList.add(orderMoney);
mOrderMoneyAdapter.notifyDataSetChanged();
//更新總金額
if (!init && mOrderContentActivity != null) {
//先更新下賬單小數,再計算總金額才不會錯
......@@ -451,9 +463,59 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
* 更新整單折扣
*/
protected void updateOrderDiscount() {
BillOrderMoney orderMoney = getBillOrderItemByType(BillOrderMoney.DISCOUNT_TYPE);
BillOrderMoney orderMoney = getBillOrderItemByType(BillOrderMoney.ORDER_DISCOUNT_TYPE);
if (orderMoney != null) {
double totalMoney = getDiscountableFoodTotal(BillOrderMoney.ORDER_DISCOUNT_TYPE, false);
double discountPrice = Discount.calculationDiscount(orderMoney.getDiscount(), totalMoney);
orderMoney.setMoney(discountPrice);
}
}
/**
* 添加会员折扣
*
* @param memberId
* @param memberDiscount
* @param memberName
*/
public void addMemberDiscount(long memberId, int memberDiscount, String memberName, String levelName1) {
double totalMoney = getDiscountableFoodTotal(BillOrderMoney.MEMBER_DISCOUNT_TYPE, true);
for (BillOrderMoney item : mOrderMoneyList) {
if (item.getType() == BillOrderMoney.MEMBER_DISCOUNT_TYPE) {
mOrderMoneyList.remove(item);
mOrderMoneyAdapter.notifyDataSetChanged();
break;
}
}
if (!TextUtils.isEmpty(levelName1)) {
memberName = memberName + "(" + levelName1 + ")";
}
double discountPrice = Discount.calculationMemberDiscount(memberDiscount, totalMoney);
BillOrderMoney orderMoney = new BillOrderMoney();
orderMoney.setMoney(discountPrice);
orderMoney.setTitle(memberName + memberDiscount + "%");
orderMoney.setType(BillOrderMoney.MEMBER_DISCOUNT_TYPE);
orderMoney.setTextColor(ArmsUtils.getColor(IActivity, R.color.theme_black));
orderMoney.setStatus(0);
//折扣
Discount discount = new Discount();
discount.setId(memberId);
discount.setType(1);
discount.setRemark(memberName + memberDiscount + "%");
discount.setDiscount_value(memberDiscount);
orderMoney.setDiscount(discount);
mOrderMoneyList.add(orderMoney);
mOrderMoneyAdapter.notifyDataSetChanged();
}
/**
* 更新会员折扣
*/
protected void updateMemberDiscount() {
BillOrderMoney orderMoney = getBillOrderItemByType(BillOrderMoney.MEMBER_DISCOUNT_TYPE);
if (orderMoney != null) {
double totalMoney = getDiscountableFoodTotal();
double totalMoney = getDiscountableFoodTotal(BillOrderMoney.MEMBER_DISCOUNT_TYPE, false);
double discountPrice = Discount.calculationDiscount(orderMoney.getDiscount(), totalMoney);
orderMoney.setMoney(discountPrice);
}
......@@ -618,7 +680,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
*
* @return
*/
public double getDiscountableFoodTotal() {
public double getDiscountableFoodTotal(int discountType, boolean add) {
double total = 0.0;
int orderSize = myOrderManage.getOrderFoodList().size();
for (int i = 0; i < orderSize; i++) {
......@@ -642,6 +704,80 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
}
}
if (add) {
//添加折扣
//折上折的情况,先减去上面的折扣金额再进行折扣
for (int i = 0; i < mOrderMoneyList.size(); i++) {
BillOrderMoney billOrderMoney = mOrderMoneyList.get(i);
if (billOrderMoney.getType() == BillOrderMoney.ORDER_DISCOUNT_TYPE || billOrderMoney.getType() == BillOrderMoney.MEMBER_DISCOUNT_TYPE) {
double money = billOrderMoney.getMoney();
total = MoneyUtil.sum(total, money);
break;
}
}
} else {
//更新折扣
int containAllDiscount = 0;
for (int i = 0; i < mOrderMoneyList.size(); i++) {
BillOrderMoney billOrderMoney = mOrderMoneyList.get(i);
if (billOrderMoney.getType() == BillOrderMoney.ORDER_DISCOUNT_TYPE) {
containAllDiscount++;
}
if (billOrderMoney.getType() == BillOrderMoney.MEMBER_DISCOUNT_TYPE) {
containAllDiscount++;
}
}
if (containAllDiscount == 2) {
//有账单折扣+会员折扣
//折上折的情况,先减去上之前的折扣金额再进行折扣
for (int i = 0; i < mOrderMoneyList.size(); i++) {
BillOrderMoney billOrderMoney = mOrderMoneyList.get(i);
if (billOrderMoney.getType() == discountType)
//不能减掉自身再折
break;
if (billOrderMoney.getType() == BillOrderMoney.ORDER_DISCOUNT_TYPE || billOrderMoney.getType() == BillOrderMoney.MEMBER_DISCOUNT_TYPE) {
double money = billOrderMoney.getMoney();
total = MoneyUtil.sum(total, money);
break;
}
}
}
}
if (total < 0) {
total = 0;
}
return MoneyUtil.get_ItemDecimals_money(total);
}
/**
* 獲取所有可服务费食品合計
*
* @return
*/
public double getScAbleFoodTotal() {
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.getScAble() == 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).getScAble() == 1) {
//主食品可參與服务费 子食品才能參與服务费
if (food.getScAble() == 1) {
total = MoneyUtil.sum(total, food.getPrice());
}
}
}
}
}
if (total < 0) {
total = 0;
}
......@@ -784,20 +920,6 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
mSelectMealAdapter.setIndex();
}
// protected void reduceSelectedFoodNumber(int number) {
// List<OrderDetail> orderDetails = getOrderFoodLists();
// int start_position = mSelectMealAdapter.getSelect_full_start_position();
// int end_position = mSelectMealAdapter.getSelect_full_end_position();
// for (int i = orderDetails.size() - 1; i >= 0; i--) {
// if (start_position <= i && i <= end_position) {
// OrderDetail orderDetail1 = orderDetails.get(i);
// if (orderDetail1.getType() != DISCOUNT_TYPE) {
// orderDetail1.setNumber(orderDetail1.getNumber() - number);
// }
// }
// }
// }
/**
* 返回未选中的食品
*
......@@ -824,7 +946,8 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
mergeMainFoodNumber(newFoodList);
}
setChildAblediscountByMainAblediscount(newFoodList);
setChildScAbleByMainAble(newFoodList);
setChildDiscountByMainAblediscount(newFoodList);
int restaurantId = GsaCloudApplication.getRestaurantId(mApplication);
CreateOrderRequest request = new CreateOrderRequest();
......@@ -835,13 +958,9 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
request.setTableName(OpenTableManage.getDefault().getTableBean().getTableName());
request.setRounding(getRounding());
request.setRestaurantId(restaurantId);
if (MyOrderManage.getInstance().getMemberInfo() != null) {
request.setMemberId(MyOrderManage.getInstance().getMemberInfo().getId());
}
Discount orderDiscount = getNesOrderDiscount();
if (orderDiscount != null) {
request.setDiscountId(orderDiscount.getId());
}
List<OrderDiscount.Request> discountDetails = getOrderDiscountDetails();
request.setDiscountDetails(discountDetails);
return request;
}
......@@ -853,7 +972,8 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
mergeMainFoodNumber(newFoodList);
}
setChildAblediscountByMainAblediscount(newFoodList);
setChildScAbleByMainAble(newFoodList);
setChildDiscountByMainAblediscount(newFoodList);
AddOrderRequest request = new AddOrderRequest();
request.setTableNumber(OpenTableManage.getDefault().getTableBean().getTableNumber());
......@@ -862,16 +982,28 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
request.setTableId(OpenTableManage.getDefault().getTableBean().getId());
Double rounding = getRounding();
request.setRounding(rounding != null ? rounding : 0);
Discount orderDiscount = getNesOrderDiscount();
if (orderDiscount != null) {
request.setDiscountId(orderDiscount.getId());
}
if (MyOrderManage.getInstance().getMemberInfo() != null) {
request.setMemberId(MyOrderManage.getInstance().getMemberInfo().getId());
}
List<OrderDiscount.Request> discountDetails = getOrderDiscountDetails();
request.setDiscountDetails(discountDetails);
return request;
}
private List<OrderDiscount.Request> getOrderDiscountDetails() {
List<OrderDiscount.Request> discountRequests = new ArrayList<>();
for (BillOrderMoney item : mOrderMoneyList) {
if (item.getType() == BillOrderMoney.ORDER_DISCOUNT_TYPE) {
discountRequests.add(OrderDiscount.Request.orderDiscountTransRequest(item));
continue;
}
if (item.getType() == BillOrderMoney.MEMBER_DISCOUNT_TYPE) {
discountRequests.add(OrderDiscount.Request.memberDiscountTransRequest(item));
continue;
}
}
return discountRequests;
}
protected Map<Long, List<OrderBean.OrderDetailsBean>> orderDetailBeanToFoodRequest(List<OrderDetail> foodList) {
Map<Long, List<OrderBean.OrderDetailsBean>> orderDetails = new HashMap<>();
......@@ -907,8 +1039,11 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
request.setType(item.getType());
request.setPrintSetIng(item.getPrintseting());
request.setAblediscount(item.getAblediscount());
request.setScAble(item.getScAble());
request.setDiscountId(getDiscountIdByParentId(foodList, mainProductId));
request.setLunchboxPrice(0);
request.setPointsAdd(item.getPointsAdd());
request.setPointsRedeem(item.getPointsRedeem());
if (item.isNew()) {
//這裡只添加新食品
orderItems.add(request);
......@@ -991,8 +1126,11 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
request.setType(item.getType());
request.setPrintSetIng(item.getPrintseting());
request.setAblediscount(item.getAblediscount());
request.setScAble(item.getScAble());
request.setDiscountId(getDiscountIdByParentId(foodList, mainParentId));
request.setLunchboxPrice(0);
request.setPointsAdd(item.getPointsAdd());
request.setPointsRedeem(item.getPointsRedeem());
if (item.isNew() || item.getDiscountStatus() == 1) {
//這裡只添加新食品或有新折扣食品
orderItems.add(request);
......@@ -1025,7 +1163,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
*
* @param newFoodList
*/
private void setChildAblediscountByMainAblediscount(List<OrderDetail> newFoodList) {
private void setChildDiscountByMainAblediscount(List<OrderDetail> newFoodList) {
int orderSize = newFoodList.size();
for (int i = 0; i < orderSize; i++) {
OrderDetail food = newFoodList.get(i);
......@@ -1040,6 +1178,25 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
/**
* 送单前根据主食品ScAble更新子食品ScAble(前端处理后台直接存即可)
*
* @param newFoodList
*/
private void setChildScAbleByMainAble(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.setScAble((byte) 0);
}
}
}
}
/**
* 合并新下单主食品数量
*
* @param foodList
......@@ -1134,14 +1291,28 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
/**
* 返回整單折扣
*
* @return
*/
protected BillOrderMoney getOrderDiscount() {
for (BillOrderMoney item : mOrderMoneyList) {
if (item.getType() == BillOrderMoney.ORDER_DISCOUNT_TYPE) {
return item;
}
}
return null;
}
/**
* 返回未送單整單折扣
*
* @return
*/
protected Discount getNesOrderDiscount() {
protected BillOrderMoney getNesOrderDiscount() {
for (BillOrderMoney item : mOrderMoneyList) {
if (item.getStatus() == 0 && item.getType() == BillOrderMoney.DISCOUNT_TYPE) {
return item.getDiscount();
if (item.getStatus() == 0 && item.getType() == BillOrderMoney.ORDER_DISCOUNT_TYPE) {
return item;
}
}
return null;
......@@ -1149,6 +1320,20 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
/**
* 返回未送單會員折扣
*
* @return
*/
protected BillOrderMoney getMemberDiscount() {
for (BillOrderMoney item : mOrderMoneyList) {
if (item.getType() == BillOrderMoney.MEMBER_DISCOUNT_TYPE) {
return item;
}
}
return null;
}
/**
* 返回未送單食品列表
*
* @return
......
......@@ -2,15 +2,18 @@ package com.gingersoft.gsa.cloud.table.mvp.presenter;
import android.app.Application;
import android.content.Intent;
import android.graphics.Color;
import android.text.TextUtils;
import android.util.SparseArray;
import android.view.View;
import android.widget.Button;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.aspectj.XClickUtil;
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.BaseResult2;
import com.gingersoft.gsa.cloud.base.common.bean.BillOrderMoney;
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;
......@@ -794,20 +797,23 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
* @param initTable 是否是開台
*/
private void printSendOrder(boolean initTable) {
// CC.obtainBuilder("Component.Print")
// .setActionName("printActivity")
// .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_KITCHEN)
// .build()
// .callAsyncCallbackOnMainThread((cc, result) -> {
//// if (result.isSuccess()) {
// //打印成功
// IActivity.returnBeforeActivity(initTable);
//// } else {
//// mRootView.showMessage("打印失敗");
//// }
// });
if (GsaCloudApplication.androidSetting.isAutoPrinterParper()) {
CC.obtainBuilder("Component.Print")
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_KITCHEN)
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
if (result.isSuccess()) {
} else {
mRootView.showMessage("打印失敗");
}
//打印成功
IActivity.returnBeforeActivity(initTable);
});
} else {
IActivity.returnBeforeActivity(initTable);
}
}
/**
* 問題:刪除數量 1.賬單小數未更新 世維調整
......@@ -880,34 +886,102 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
});
}
public void queryMember(int type, String parm, String shopName) {
mModel.queryMember(type, parm, shopName)
public void queryMember(int type, String parm, String shopName, int tableId, String tableNumber) {
mModel.queryMember(type, parm, shopName, tableId, tableNumber)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<BaseResult2>(mErrorHandler) {
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onNext(@NonNull BaseResult2 info) {
if (info != null && info.getCode().equals("1")) {
public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
if (info.getData() != null) {
MemberInfo memberInfo = JsonUtils.parseObject(info.getData(), MemberInfo.class);
if (memberInfo != null) {
if (memberInfo != null && memberInfo.getId() != 0) {
//更新會員信息
mRootView.updateMemberInfo(memberInfo);
} else {
mRootView.showMessage("請輸入正確的會員號碼!");
}
} else {
mRootView.showMessage("獲取會員信息失敗!");
}
} else {
mRootView.showMessage(info.getErrorMsg());
mRootView.showMessage(info.getErrMsg());
}
}
@Override
public void onError(Throwable t) {
super.onError(t);
}
});
}
// public void memeberUse(int tableId, String tableNumber, long memberId, Button btn_table) {
// mModel.memeberUse(tableId, tableNumber, memberId)
// .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(@NonNull BaseResult info) {
// if (info != null && info.isSuccess()) {
// if (info.getData() != null) {
// MyOrderManage.getInstance().setMemberInfo(mMemberInfo);
// btn_table.setBackgroundResource(R.color.pink_300);
// //添加会员折扣行
// addMemberDiscount(mMemberInfo.getId(),mMemberInfo.getMemberDiscount(),mMemberInfo.getLevelName1());
// } else {
// mRootView.showMessage("使用失敗!");
// }
// } else {
// mRootView.showMessage(info.getErrMsg());
// }
// }
// });
// }
// public void memeberUseCancel(int tableId, String tableNumber, long memberId, Button btn_table) {
// mModel.memeberUseCancel(tableId, tableNumber, memberId)
// .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(@NonNull BaseResult info) {
// if (info != null && info.isSuccess()) {
// if (info.getData() != null) {
// btn_table.setBackgroundColor(Color.parseColor("#336699"));
// MyOrderManage.getInstance().setMemberInfo(null);
// //刪除會員折扣行
// removeMemberDiscountItem();
// //更新會員信息
// mRootView.memberUseCancelSuccess();
// } else {
// mRootView.showMessage("清除失敗!");
// }
// } else {
// mRootView.showMessage(info.getErrMsg());
// }
// }
//
// });
// }
public void getRestaurantFoodReason() {
int brandId = GsaCloudApplication.getBrandId(mApplication);
int restaurantId = GsaCloudApplication.getRestaurantId(mApplication);
......@@ -1455,7 +1529,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return false;
}
}
if (!memberPointsCondition(foodBean.getPointsRedeem(),foodBean.getFoodName())) {
if (!memberPointsCondition(foodBean.getPointsRedeem(), foodBean.getFoodName())) {
return false;
}
return true;
......@@ -1476,7 +1550,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return false;
}
}
if (!memberPointsCondition(comboItem.getPointsRedeem(),comboItem.getName())) {
if (!memberPointsCondition(comboItem.getPointsRedeem(), comboItem.getName())) {
return false;
}
return true;
......@@ -1907,6 +1981,19 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
}
/**
* 刪除會員折扣行
*/
public void removeMemberDiscountItem() {
for (BillOrderMoney orderMoney : mOrderMoneyList) {
if (orderMoney.getType() == BillOrderMoney.MEMBER_DISCOUNT_TYPE) {
mOrderMoneyList.remove(orderMoney);
mOrderMoneyAdapter.notifyDataSetChanged();
break;
}
}
}
/**
* 加載折扣數據
*/
public void loadDiscountData() {
......@@ -2056,4 +2143,5 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
public List<SoldoutCtrFood> getSoldoutCtrList() {
return mSoldoutCtrList;
}
}
......@@ -363,19 +363,21 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
* 送單
*/
private void printSendOrder(List<OrderDetail> newFoods) {
// MyOrderManage.getInstance().setNewFoodList(newFoods);
// CC.obtainBuilder("Component.Print")
// .setActionName("printActivity")
// .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_KITCHEN)
// .build()
// .callAsyncCallbackOnMainThread((cc, result) -> {
// Log.e("error", "是否成功打印:" + result.isSuccess());
//// if (result.isSuccess()) {
//// //打印成功
////
//// }
if (GsaCloudApplication.androidSetting.isAutoPrinterParper()) {
CC.obtainBuilder("Component.Print")
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_KITCHEN)
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
if (result.isSuccess()) {
} else {
mRootView.showMessage("打印失敗");
}
mRootView.sendSuccess();
// });
});
} else {
mRootView.sendSuccess();
}
}
public void printOrder(long tableId, boolean isSend) {
......
......@@ -4,6 +4,7 @@ import android.app.Application;
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.MemberInfo;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.OrderPayRequest;
import com.gingersoft.gsa.cloud.base.common.bean.PayMethod;
......@@ -205,7 +206,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
* 結賬
*/
public void toOrderPay(boolean show) {
if(myOrderManage.isModifyOrder()){
if (myOrderManage.isModifyOrder()) {
//修改訂單
updateOrderPay();
return;
......@@ -233,11 +234,33 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
public void onNext(BaseResult baseResult) {
mRootView.hideLoading();
if (baseResult.isSuccess()) {
MemberInfo memberInfo = MyOrderManage.getInstance().getMemberInfo();
if (memberInfo != null) {
setPoints(memberInfo);
}
//結賬成功
mRootView.paySuccess();
}
}
private void setPoints(MemberInfo memberInfo) {
double pointsAdd = getPointsAdd();
double pointsUse = getPointsRedeem();
double pointsOld = memberInfo.getMemberPoint();
double pointsNow = pointsOld + (pointsAdd + pointsUse);
MyOrderManage.getInstance().setPointsOld(pointsOld);
MyOrderManage.getInstance().setPointsNow(pointsNow);
if (pointsAdd > 0) {
MyOrderManage.getInstance().setPointsAdd(pointsAdd);
}
if (pointsUse > 0) {
MyOrderManage.getInstance().setPointsUse(pointsUse);
}
}
@Override
public void onError(Throwable t) {
super.onError(t);
......@@ -255,6 +278,9 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
payRequest.setLinePayType(orderPayView.getLinePayType());
payRequest.setTableId(OpenTableManage.getDefault().getTableBean().getId());
payRequest.setTableNumber(OpenTableManage.getDefault().getTableBean().getTableNumber());
payRequest.setMemberId(GsaCloudApplication.getMemberId(mApplication));
payRequest.setPointsAdd(getPointsAdd());
payRequest.setPointsUse(getPointsRedeem());
for (int i = 0; i < payMethodList.size(); i++) {
PayMethod payMethod = payMethodList.get(i);
......@@ -404,32 +430,17 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
}
/**
* 獲取當前n5支付方式
*
* @return
*/
private PayMethod getSelectN5PayMethod() {
// for (int i = 0; i < mBillMoneyList.size(); i++) {
// if (!TextUtils.isEmpty(mBillMoneyList.get(i).getPAYWAY()) &&
// !mBillMoneyList.get(i).getPAYWAY().equals(PayConstant.PAY_WAY_CASH)) {
// return mBillMoneyList.get(i);
// }
// }
return null;
}
/**
* 是否現金支付
*
* @param datasBean
* @return
*/
private boolean isCashPayMethod(PayMethod datasBean) {
if (datasBean.getPAYWAY().equals(PayConstant.PAY_WAY_CASH)) {
// if (datasBean.getPayType().equals(PayConstant.PAY_WAY_CASH)) {
return true;
} else {
return false;
}
// } else {
// return false;
// }
}
/**
......@@ -492,6 +503,37 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
}
/**
* 額外食品加分
*
* @return
*/
public double getPointsAdd() {
double pointsAdd = 0;
for (OrderDetail orderDetail : mOrderFoodList) {
if (orderDetail.getType() == OrderDetail.FOOD_TYPE) {
pointsAdd = MoneyUtil.sum(pointsAdd, orderDetail.getPointsAdd() * orderDetail.getNumber());
}
}
return pointsAdd;
}
/**
* 換購食品所需積分
*
* @return
*/
public double getPointsRedeem() {
double pointsRedeem = 0;
for (OrderDetail orderDetail : mOrderFoodList) {
if (orderDetail.getType() == OrderDetail.FOOD_TYPE) {
pointsRedeem = MoneyUtil.sum(pointsRedeem, orderDetail.getPointsRedeem() * orderDetail.getNumber());
}
}
return pointsRedeem;
}
/**
* 是否滿足支付條件
*
* @return
......
......@@ -20,6 +20,7 @@ import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.constans.GoldConstants;
import com.gingersoft.gsa.cloud.constans.PrintConstans;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.Function;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
......@@ -428,16 +429,21 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}
OpenTableManage.getDefault().setPeopleNumber(orderBean.getPerson());
List<OrderBean.OrderDetailsBean> orderDetailsBeans = respose.getData().getOrderDetails();
List<OrderBean.OrderDetailsBean> orderDetailsBeans = orderBean.getOrderDetails();
//設置topId
setFoodPoints(orderDetailsBeans);
//設置套餐topId
setTopId(orderDetailsBeans);
//緩存訂單信息
MyOrderManage.getInstance().setOrderBean(new OrderBean(orderBean));
//緩存食品信息
List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(orderDetailsBeans));
MyOrderManage.getInstance().setOrderFoodList(orderDetailList);
if (orderBean.getMemberInfo() != null) {
//设置会员信息
MyOrderManage.getInstance().setMemberInfo(orderBean.getMemberInfo());
}
} else {
MyOrderManage.getInstance().setOrderBean(null);
MyOrderManage.getInstance().setOrderFoodList(new ArrayList<>());
......@@ -452,6 +458,26 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}
/**
* 設置已送單食品積分(訂單表沒有存儲食品積分字段)
*/
private void setFoodPoints(List<OrderBean.OrderDetailsBean> orderDetailsBeans) {
List<Food> foods = mModel.queryDB_AllFoodList();
for (int i = 0; i < orderDetailsBeans.size(); i++) {
OrderBean.OrderDetailsBean orderDetailsBean = orderDetailsBeans.get(i);
if (orderDetailsBean.getType() != FOOD_TYPE) {
continue;
}
for (int j = 0; j < foods.size(); j++) {
Food food = foods.get(j);
if (food.getId() == orderDetailsBean.getProductId()) {
orderDetailsBean.setPointsAdd(food.getPointsAdd());
orderDetailsBean.setPointsRedeem(food.getPointsRedeem());
}
}
}
}
/**
* 設置套餐,細項組別ID
*
* @param orderDetailsBeans
......@@ -850,7 +876,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
initTable(dataBean.getId(), dataBean.getTableNumber(), true);
break;
case TableOperatTypeConstant.move_table_4:
turnTable(originalTableId, targetTableId,originalTableNumber,targetTableNumber, finalIsMergeTable);
turnTable(originalTableId, targetTableId, originalTableNumber, targetTableNumber, finalIsMergeTable);
break;
case TableOperatTypeConstant.skyorder_mode_5:
......
......@@ -123,13 +123,15 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
orderBean.setCreateTime(datasBean.getCreateTime());
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());
OpenTableManage.getDefault().setTableBean(openTableBean);
// TableBean.DataBean openTableBean = new TableBean.DataBean();
// openTableBean.setCreateTime(TimeUtil.getStringByFormat(new Date(datasBean.getCreateTime()), TimeUtil.dateFormatYMDHM));
// openTableBean.setTableName(datasBean.getTableName());
// openTableBean.setId(datasBean.getTableId());
TableBean.DataBean tableBean = new TableBean.DataBean(datasBean.getRestaurantTable());
tableBean.setTableName(tableBean.getTableName() + "-" + tableBean.getTableNumber());
OpenTableManage.getDefault().setTableBean(tableBean);
OpenTableManage.getDefault().setPeopleNumber(datasBean.getPerson());
List<OrderBean.OrderDetailsBean> orderDetailsBeans = datasBean.getOrderDetails();
List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(orderDetailsBeans));
MyOrderManage.getInstance().setOrderFoodList(orderDetailList);
......
......@@ -5,6 +5,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
......@@ -250,10 +251,8 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
private UseMemberDialog mUseMemberDialog;
private UseMemberDialog.BottomLayoutBuilder mUseMemberLayoutBuilder;
private MemberInfoAdapter mMemberInfoAdapter;
private List<SectionTextItem> mMemberInfoList;
private MemberInfo mMemberInfo;
/**
* 是否初始化细项布局
*/
......@@ -320,6 +319,9 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
//根据倒计时时间自动退出当前页面
initAutoQuit();
}
if (MyOrderManage.getInstance().getMemberInfo() != null) {
useMember();
}
mPresenter.getCurrentSoldoutFood();
// setViewDrawableColor();
......@@ -516,7 +518,6 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
showViewModeVisibility(MealConstant.fine_ViewMode, MealConstant.fine_tabs_ViewMode);
}
@Override
public void setCurrentFinePage() {
if (currentFinePage == 0) {
......@@ -563,7 +564,7 @@ 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){
if (mainOrderDetail != null && mainOrderDetail.getAblediscount() == 0) {
showMessage("此食品不能參與折扣!");
return;
}
......@@ -576,52 +577,47 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@OnClick(R2.id.btn_table)
void onClickTable() {
//type取值:1qrCdoetype,2:手機號,3:memberId
// mUseMemberDialog = new UseMemberDialog(this);
if (mUseMemberDialog == null) {
mUseMemberDialog = new UseMemberDialog.BottomLayoutBuilder(this)
.setOnLayoutClickListener(new UseMemberDialog.BottomLayoutBuilder.OnLayoutClickListener() {
@Override
public void onInputPhone(UseMemberDialog dialog, String phone) {
mPresenter.queryMember(2, phone, GsaCloudApplication.getGsPosShopId(mContext));
public void setBottomLayoutBuilder(UseMemberDialog.BottomLayoutBuilder layoutBuilder) {
mUseMemberLayoutBuilder = layoutBuilder;
}
@Override
public void onScanAction(UseMemberDialog dialog) {
mPresenter.startScanActivity();
public void onInputPhone(UseMemberDialog dialog, String phone) {
mPresenter.queryMember(2, phone, GsaCloudApplication.getGsPosShopId(mContext), OpenTableManage.getDefault().getTableBean().getId(), OpenTableManage.getDefault().getTableBean().getTableNumber());
}
@Override
public void setAdapter(RecyclerView recycler_member_info, UseMemberDialog.BottomLayoutBuilder layoutBuilder) {
mUseMemberLayoutBuilder = layoutBuilder;
if (mMemberInfoList == null) {
mMemberInfoList = new ArrayList<>();
}
if (mMemberInfoAdapter == null) {
mMemberInfoAdapter = new MemberInfoAdapter(mMemberInfoList);
}
recycler_member_info.setAdapter(mMemberInfoAdapter);
public void onScanAction(UseMemberDialog dialog) {
mPresenter.startScanActivity();
}
@Override
public void onUseMember(UseMemberDialog dialog) {
if (mMemberInfo != null) {
MyOrderManage.getInstance().setMemberInfo(mMemberInfo);
btn_table.setBackgroundResource(R.color.pink_300);
//添加会员折扣行
mPresenter.addMemberDiscount(mMemberInfo.getId(), mMemberInfo.getMemberDiscount(), mMemberInfo.getMemberName(), mMemberInfo.getLevelName1());
useMember();
} else {
showMessage("請輸入正確的會員號碼!");
}
}
@Override
public void clearMemberInfo() {
btn_table.setBackgroundColor(Color.parseColor("#336699"));
MyOrderManage.getInstance().setMemberInfo(null);
if (mMemberInfoList.size() > 0) {
mMemberInfoList.clear();
}
mMemberInfoAdapter.notifyDataSetChanged();
if (mUseMemberLayoutBuilder != null) {
mUseMemberLayoutBuilder.showBottomLayoutVisibility(false);
//刪除會員折扣行
mPresenter.removeMemberDiscountItem();
mPresenter.updateOrderMoneyItem();
}
}
}).setOnDismissListener(new DialogInterface.OnDismissListener() {
})
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
......@@ -635,32 +631,12 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
public void updateMemberInfo(MemberInfo memberInfo) {
this.mMemberInfo = memberInfo;
if (mUseMemberDialog != null) {
List<SectionTextItem> data = getMemberInfoItem(memberInfo);
if (mMemberInfoList.size() > 0) {
mMemberInfoList.clear();
}
mMemberInfoList.addAll(data);
mMemberInfoAdapter.notifyDataSetChanged();
if (mUseMemberLayoutBuilder != null) {
mUseMemberLayoutBuilder.showBottomLayoutVisibility(true);
}
mUseMemberLayoutBuilder.updateMemberInfo(memberInfo);
}
}
private List<SectionTextItem> getMemberInfoItem(MemberInfo memberInfo) {
List<SectionTextItem> textItems = new ArrayList<>();
String memberName;
if (TextUtils.isEmpty(memberInfo.getMemberName())) {
memberName = memberInfo.getLevelName1();
} else {
memberName = memberInfo.getMemberName();
}
textItems.add(new SectionTextItem("會員號碼: " + memberInfo.getMemberNo()));
textItems.add(new SectionTextItem("會員電話: " + memberInfo.getPhone()));
textItems.add(new SectionTextItem("會員名稱: " + memberName));
textItems.add(new SectionTextItem("積分: " + memberInfo.getMemberPoint()));
return textItems;
private void useMember() {
btn_table.setBackgroundResource(R.color.pink_300);
}
@OnClick(R2.id.btn_multiple_selection)
......@@ -1250,10 +1226,6 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
return mFoodGroupAdapter;
}
public MemberInfo getMemberInfo() {
return mMemberInfo;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
......
package com.gingersoft.gsa.cloud.table.mvp.ui.activity;
import android.app.Activity;
import android.app.NotificationManager;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
import android.view.View;
......@@ -214,7 +216,8 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
String tableno = "";
if (!OpenTableManage.getDefault().isSplite() && OpenTableManage.getDefault().getTableBean() != null) {
tableno = OpenTableManage.getDefault().getTableBean().getTableName();
} else {//TODO 暫未分檯功能
} else {
//TODO 暫未分檯功能
// tableno = GSAApplication.tableContract.getTableno().trim() + "-" + GSAApplication.tableContract.getTableno_split().trim();
}
btn_table.setText(tableno);
......@@ -260,7 +263,6 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
// backPressed();
// }
@Override
public void onBackPressedSupport() {
super.onBackPressedSupport();
......
......@@ -18,9 +18,11 @@ import androidx.recyclerview.widget.RecyclerView;
import com.billy.cc.core.component.CC;
import com.chad.library.adapter.base.BaseQuickAdapter;
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.PayMethod;
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.VibratorUtils;
import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
......@@ -100,6 +102,9 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
@BindView(R2.id.tv_time)
TextView tv_time;
@BindView(R2.id.tv_member_info)
TextView tv_member_info;
// @BindView(R2.id.tv_difference_name)
// TextView tv_difference_name;
// @BindView(R2.id.tv_difference_money)
......@@ -128,6 +133,29 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
// private QMUITipDialog tipDialog;
@BindView(R2.id.gsa_pay_view)
OrderPayView gsaPayView;
/**
* 會員積分數
*/
private double memberIntegral = 0;
/**
* 額外食品加分
*/
private double pointsAdd;
/**
* 換購食品所需積分
*/
private double pointsRedeem;
/**
* 積分兌換現金比例(MemberPointRedeemCash=2 (理解為每2分=1元)
*/
private double memberPointRedeemCash = 0;
/**
* 積分規則
*/
private int pointRule;
/**
* N5相关
*/
......@@ -161,22 +189,6 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
.inject(this);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
Intent intent = getIntent();
// N5CallbackManage.getInstance().register(this, in5Callback);
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
// mPresenter.getPayMethods();
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// outState.putSerializable(PRE_BILL_DATA, mPresenter.getPreBillData());
// outState.putSerializable(PAY_METHOD, mPresenter.getBillMethodList());
super.onSaveInstanceState(outState);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
......@@ -190,6 +202,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
mPresenter.getPayMethods();
initTopInfo();
initOrderDetail();
initMemberInfo();
initN5RespCallBack();
}
......@@ -233,6 +246,59 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
// setDifferenceText();
}
private void initMemberInfo() {
//会员信息
if (MyOrderManage.getInstance().getMemberInfo() != null) {
tv_member_info.setVisibility(View.VISIBLE);
tv_member_info.setText(getMemberInfo());
} else {
tv_member_info.setVisibility(View.GONE);
}
}
private String getMemberInfo() {
MemberInfo memberBean = MyOrderManage.getInstance().getMemberInfo();
String memberInfo;
String memberName = memberBean.getMemberName();
String LevelName1 = memberBean.getLevelName1();
if (!TextUtils.isEmpty(LevelName1)) {
memberInfo = LanguageUtils.get_language_system(this, "meal.info.member.name", "會員名稱:")
+ memberName
+ "(" + LevelName1 + ")";
} else {
memberInfo = LanguageUtils.get_language_system(this, "meal.info.member.name", "會員:") + memberName;
}
boolean showPoints = false;
if (mPresenter.getPointsAdd() != 0 && mPresenter.getPointsRedeem() != 0) {
memberInfo = memberInfo + ":" + memberBean.getMemberPoint() + " +" + mPresenter.getPointsAdd() + " -" + mPresenter.getPointsRedeem();
showPoints = true;
} else {
if (mPresenter.getPointsAdd() != 0) {
memberInfo = memberInfo + ":" + memberBean.getMemberPoint() + " +" + mPresenter.getPointsAdd();
showPoints = true;
}
if (mPresenter.getPointsRedeem() != 0) {
memberInfo = memberInfo + ":" + memberBean.getMemberPoint() + " -" + mPresenter.getPointsRedeem();
showPoints = true;
}
}
if(!showPoints){
memberInfo = memberInfo + ":" + memberBean.getMemberPoint();
}
// memberIntegral = memberBean.getMemberPoint();
// memberPointRedeemCash = memberBean.getPointRedeemCash();
// //獲取積分支付抵扣金額
// double consumptionPoints = mPresenter.getConsumptionPoints(memberPointRedeemCash);
// if (consumptionPoints > 0) {
// memberInfo = memberInfo + ": " + memberIntegral + " " + "-" + consumptionPoints;
// } else {
// memberInfo = memberInfo + ": " + memberIntegral;
// }
return memberInfo;
}
@Override
public void setDifferenceText() {
// double difference = mPresenter.getDifferenceMoney();
......@@ -503,9 +569,33 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
setBillMoney();
if (!MyOrderManage.getInstance().isModifyOrder() && OpenTableManage.getDefault() != null && OpenTableManage.getDefault().getTableBean() != null) {
//通知更新餐台状态
EventBus.getDefault().post(new InitTableEvent(OpenTableManage.getDefault().getTableBean().getId(), OpenTableManage.getDefault().getTableBean().getTableNumber()),"initTable_status_event");
EventBus.getDefault().post(new InitTableEvent(OpenTableManage.getDefault().getTableBean().getId(), OpenTableManage.getDefault().getTableBean().getTableNumber()), "initTable_status_event");
}
showMessage("支付成功");
//開錢箱
boolean openInstruction = false;
List<PayMethod> payMethods = gsaPayView.getBillMoneyList();
for (PayMethod payMethod : payMethods) {
if (payMethod.getWhetherOpenBox() == 1) {
openInstruction = true;
break;
}
}
if (openInstruction) {
CC.obtainBuilder("Component.Print")
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_INSTRUCTION)
.build()
.callAsync((cc, result) -> {
printBill();
});
} else {
printBill();
}
}
private void printBill() {
//打印結賬單
CC.obtainBuilder("Component.Print")
.setActionName("printActivity")
......
package com.gingersoft.gsa.cloud.table.mvp.ui.activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Message;
import android.view.View;
......
......@@ -402,20 +402,22 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
orderBean.setStatus(datasBean.getStatus());
orderBean.setOrderNo(datasBean.getOrderNo());
orderBean.setPerson(datasBean.getPerson());
orderBean.setType(datasBean.getType());
orderBean.setRemark(datasBean.getRemark());
orderBean.setDiscountAmount(datasBean.getDiscountAmount());
orderBean.setDiscountValue(datasBean.getDiscountValue());
// orderBean.setType(datasBean.getType());
// orderBean.setRemark(datasBean.getRemark());
// 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);
// TableBean.DataBean openTableBean = new TableBean.DataBean();
// openTableBean.setCreateTime(TimeUtil.getStringByFormat(new Date(datasBean.getCreateTime()), TimeUtil.dateFormatYMDHM));
// openTableBean.setTableName(datasBean.getTableName());
// openTableBean.setId(datasBean.getTableId());
// OpenTableManage.getDefault().setTableBean(openTableBean);
TableBean.DataBean tableBean = new TableBean.DataBean(datasBean.getRestaurantTable());
tableBean.setTableName(tableBean.getTableName() + "-" + tableBean.getTableNumber());
OpenTableManage.getDefault().setTableBean(tableBean);
OpenTableManage.getDefault().setPeopleNumber(datasBean.getPerson());
List<OrderBean.OrderDetailsBean> orderDetailsBeans = datasBean.getOrderDetails();
......@@ -445,7 +447,6 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
dataBean.setCreateTime(TimeUtil.getStringByFormat(new Date(orderDetailItem.getCreateTime()), TimeUtil.dateFormatYMDHM));
OpenTableManage.getDefault().setTableBean(dataBean);
CC.obtainBuilder("Component.Print")
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
......
......@@ -89,7 +89,8 @@ public class OrderMoneyAdapter extends DefaultAdapter<BillOrderMoney> {
tv_money.setTextColor(datasBean.getTextColor());
if (mContext instanceof OrderContentActivity &&
datasBean.getType() == BillOrderMoney.DISCOUNT_TYPE &&
datasBean.getType() == BillOrderMoney.ORDER_DISCOUNT_TYPE &&
datasBean.getType() != BillOrderMoney.MEMBER_DISCOUNT_TYPE &&
datasBean.getStatus() == 0) {
iv_delete.setVisibility(View.VISIBLE);
iv_delete.setOnClickListener(v -> {
......
......@@ -115,9 +115,9 @@ public class TableAdapter extends DefaultAdapter<TableBean.DataBean> {
TextView tv_open_duration;
// @BindView(R2.id.btn_showMain)
// Button btn_showMain;
// @BindView(R2.id.iv_vip)
// ImageView iv_vip;
// @BindView(R2.id.tv_scan_flag)
@BindView(R2.id.iv_vip)
TriangleLabelView iv_vip;
// @BindView(R2.id.tv_scan_flag)
// TextView tv_scan_flag;
@BindView(R2.id.fl_table_type)
FrameLayout fl_table_type;
......@@ -207,6 +207,11 @@ public class TableAdapter extends DefaultAdapter<TableBean.DataBean> {
} else {
fl_table_type.setVisibility(View.GONE);
}
if (item.getMemberId() > 0) {
iv_vip.setVisibility(View.VISIBLE);
} else {
iv_vip.setVisibility(View.GONE);
}
}
private void initTableBackground(TableBean.DataBean item) {
......
......@@ -185,6 +185,13 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
tv_D.setVisibility(View.INVISIBLE);
}
tv_D_1.setVisibility(View.INVISIBLE);
if(datasBean.getScAble() == 0){
tv_S.setVisibility(View.VISIBLE);
}else {
tv_S.setVisibility(View.INVISIBLE);
}
tv_S_1.setVisibility(View.INVISIBLE);
tv_discount_money.setVisibility(View.INVISIBLE);
// if (datasBean.isModify()) {
......
......@@ -23,7 +23,10 @@ import android.widget.LinearLayout;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.gingersoft.gsa.cloud.base.common.bean.MemberInfo;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.MemberInfoAdapter;
import com.gingersoft.gsa.cloud.ui.adapter.BasTextSectiontAdapter;
import com.gingersoft.gsa.cloud.ui.bean.mode.BrandsBean;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
......@@ -116,7 +119,6 @@ public class UseMemberDialog extends Dialog {
super.setContentView(view);
}
/**
* BottomSheet升起动画
*/
......@@ -220,8 +222,6 @@ public class UseMemberDialog extends Dialog {
private Context mContext;
private UseMemberDialog mDialog;
private MemberInfo mMemberInfo;
private QMUITopBar mTopBar;
private RecyclerView.LayoutManager mLayoutManager;
......@@ -234,15 +234,13 @@ public class UseMemberDialog extends Dialog {
private QMUIAlphaButton btn_use_member;
private QMUIAlphaButton btn_clear_member;
private MemberInfoAdapter mMemberInfoAdapter;
private List<SectionTextItem> mMemberInfoList;
public BottomLayoutBuilder(Context context) {
mContext = context;
}
public void setMemberInfo(MemberInfo mMemberInfo) {
this.mMemberInfo = mMemberInfo;
}
@Override
public void onClick(View v) {
}
......@@ -257,6 +255,7 @@ public class UseMemberDialog extends Dialog {
if (mDismissListener != null) {
mDialog.setOnDismissListener(mDismissListener);
}
updateMemberInfo(MyOrderManage.getInstance().getMemberInfo());
// AndroidWorkaround.assistActivity(contentView);
return mDialog;
}
......@@ -275,6 +274,9 @@ public class UseMemberDialog extends Dialog {
initTopbar();
initRecyclerLayout();
if (onLayoutClickListener != null) {
onLayoutClickListener.setBottomLayoutBuilder(this);
}
btn_query_memeber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
......@@ -308,26 +310,15 @@ public class UseMemberDialog extends Dialog {
public void onClick(View v) {
if (onLayoutClickListener != null) {
onLayoutClickListener.clearMemberInfo();
clearMemberInfo();
}
}
});
if (onLayoutClickListener != null) {
onLayoutClickListener.setAdapter(recycler_member_info,this);
}
return view;
}
private void initTopbar() {
mTopBar.setBackgroundColor(ContextCompat.getColor(mContext, R.color.theme_color));
// Button rightBtn = mTopBar.addRightTextButton("清除", R.id.btn_right);
// rightBtn.setTextColor(ContextCompat.getColor(mContext, R.color.theme_white_color));
// rightBtn.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
//
//
// }
// });
mTopBar.addLeftBackImageButton().setOnClickListener(new View.OnClickListener() {
@Override
......@@ -358,9 +349,52 @@ public class UseMemberDialog extends Dialog {
};
}
public void showBottomLayoutVisibility(boolean show){
ll_bottom.setVisibility(show?View.VISIBLE:View.GONE);
btn_scan.setVisibility(!show?View.VISIBLE:View.GONE);
public void updateMemberInfo(MemberInfo memberInfo) {
if (memberInfo != null) {
if (mMemberInfoList == null) {
mMemberInfoList = new ArrayList<>();
}
if (mMemberInfoAdapter == null) {
mMemberInfoAdapter = new MemberInfoAdapter(mMemberInfoList);
recycler_member_info.setAdapter(mMemberInfoAdapter);
}
List<SectionTextItem> data = getMemberInfoItem(memberInfo);
if (mMemberInfoList.size() > 0) {
mMemberInfoList.clear();
}
mMemberInfoList.addAll(data);
mMemberInfoAdapter.notifyDataSetChanged();
showBottomLayoutVisibility(true);
}
}
public void clearMemberInfo() {
if (mMemberInfoList.size() > 0) {
mMemberInfoList.clear();
}
mMemberInfoAdapter.notifyDataSetChanged();
showBottomLayoutVisibility(false);
}
private List<SectionTextItem> getMemberInfoItem(MemberInfo memberInfo) {
List<SectionTextItem> textItems = new ArrayList<>();
String memberName = memberInfo.getMemberName();
String LevelName1 = memberInfo.getLevelName1();
if (!TextUtils.isEmpty(LevelName1)) {
memberName = memberName
+ "(" + LevelName1 + ")";
}
textItems.add(new SectionTextItem("會員號碼: " + memberInfo.getMemberNo()));
textItems.add(new SectionTextItem("會員電話: " + memberInfo.getPhone()));
textItems.add(new SectionTextItem("會員名稱: " + memberName));
textItems.add(new SectionTextItem("積分: " + memberInfo.getMemberPoint()));
return textItems;
}
public void showBottomLayoutVisibility(boolean show) {
ll_bottom.setVisibility(show ? View.VISIBLE : View.GONE);
btn_scan.setVisibility(!show ? View.VISIBLE : View.GONE);
}
private String getTvPhone() {
......@@ -386,12 +420,12 @@ public class UseMemberDialog extends Dialog {
public interface OnLayoutClickListener {
void setBottomLayoutBuilder(BottomLayoutBuilder layoutBuilder);
void onInputPhone(UseMemberDialog dialog, String phone);
void onScanAction(UseMemberDialog dialog);
void setAdapter(RecyclerView recycler_member_info,BottomLayoutBuilder layoutBuilder);
void onUseMember(UseMemberDialog dialog);
void clearMemberInfo();
......
......@@ -2,7 +2,8 @@
<RelativeLayout 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="wrap_content">
android:layout_height="wrap_content"
android:background="@color/theme_white_color">
<Chronometer
android:id="@+id/ctime"
......
......@@ -3,6 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/theme_white_color"
android:orientation="vertical">
<Chronometer
......
......@@ -89,6 +89,17 @@
</RelativeLayout>
</LinearLayout>
<TextView
android:id="@+id/tv_member_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="會員信息"
android:textSize="@dimen/sp_14"
android:padding="@dimen/dp_5"
android:textStyle="bold"
android:textColor="@color/theme_white_color"
android:background="@color/app_color_theme_1"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_food"
android:layout_width="match_parent"
......
......@@ -2,7 +2,8 @@
<RelativeLayout 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:background="@color/theme_white_color">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
......
......@@ -93,7 +93,8 @@
app:corner="rightBottom"
app:primaryText="堂"
app:primaryTextColor="#249B65"
app:primaryTextSize="10sp" />
app:primaryTextSize="10sp"
app:isRestoreText="false"/>
<TextView
android:id="@+id/tv_type_labe"
......@@ -105,6 +106,18 @@
android:textSize="10sp"
android:padding="@dimen/dp_5"/>
</FrameLayout>
<com.gingersoft.gsa.cloud.ui.view.TriangleLabelView
android:id="@+id/iv_vip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:backgroundColor="#FFDF713B"
app:corner="leftTop"
app:primaryText="VIP"
app:primaryTextColor="@color/theme_white_color"
app:primaryTextSize="@dimen/sp_12"
app:isRestoreText="true"/>
<!-- <ImageView-->
<!-- android:id="@+id/iv_vip"-->
<!-- android:layout_width="50dp"-->
......@@ -113,7 +126,7 @@
<!-- android:layout_alignParentTop="true"-->
<!-- android:scaleType="fitXY"-->
<!-- android:src="@drawable/qmui_icon_tip_new"-->
<!-- android:visibility="gone" />-->
<!-- android:visibility="visible" />-->
<!-- <TextView-->
<!-- android:id="@+id/tv_scan_flag"-->
......@@ -127,4 +140,5 @@
<!-- android:gravity="center"-->
<!-- android:visibility="gone"-->
<!-- android:textSize="@dimen/font_normal2" />-->
</com.qmuiteam.qmui.layout.QMUIRelativeLayout>
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