jyy
2021-07-20 a8b2da07ad54ee6d8e6a692f989627cdba756ae0
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -1306,7 +1306,7 @@
        taocanProjUse.setIsCourse(taocanShoppingGoods.getIsCourse());
        taocanProjUse.setIsInfinite(taocanShoppingGoods.getIsInfinite());
        // 赠送和打折后金额为0的都视为赠送项目
        if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) {
        if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0 && !isGiftMoneyPay(order)) {
            taocanProjUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
        } else {
            taocanProjUse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
@@ -1359,8 +1359,10 @@
        puse.setProjName(sysOrderItem.getShoppingGoods().getName());
        // 赠送和打折后金额为0的都视为赠送项目
        if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) {
        if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0 && !isGiftMoneyPay(order)) {
            puse.setSource(Dictionary.TAOCAN_SOURCE_GM);
            puse.setPrice(sysOrderItem.getZkPrice());
        } else {
@@ -1380,6 +1382,23 @@
        puse.setFailTime(invalidTime);
        puse.setBalance(sysOrderItem.getShoppingGoods().getSealPice()*puse.getSurplusCount());
        sysProjUseDao.insert(puse);
    }
    /**
     * 全是赠送金额,且配置了赠送金额购买计算为赠送
     * @param order
     * @return
     */
    private boolean isGiftMoneyPay(SysOrder order) {
        BusParameterSettings giftiIsfree = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.SHOP_MANAGE_GIFTISFREE, order.getCompanyId());
        if(giftiIsfree.getParamValue().equals("是")){
            return  order.getFlows().stream().allMatch(item -> SysOrderFlow.IS_GIFT_Y.equals(item.getIsGift())
                    && item.getAmount().doubleValue() >0D);
        }else{
            return false;
        }
    }
@@ -1531,7 +1550,7 @@
        sourceOrder.setIsHasRefund(SysOrder.IS_HAS_REFUND_Y);
//        sourceOrder.setStatu(Dictionary.ORDER_STATU_TK);
        sysOrderDao.update(sourceOrder);
        SysOrder oldOrder=sysOrderDao.selectById(   sysOrder.getOldOrderId());
        SysOrder oldOrder=sysOrderDao.selectById(sysOrder.getOldOrderId());
        sysOrder.setId(null);
        sysOrder.setStaffId(user.getSuId());