Browse Source

新增商品组合退款统计

大大的豆芽 2 tuần trước cách đây
mục cha
commit
e6bb83f965

+ 2 - 2
admin-ui/.env.development

@@ -5,8 +5,8 @@ VUE_APP_TITLE = 一七管理系统
 ENV = 'development'
 
 
-VUE_APP_BASE_API_HOST = 'http://192.168.1.114:9801'
-VUE_APP_BASE_API = 'http://192.168.1.114:9801'
+VUE_APP_BASE_API_HOST = 'http://192.168.1.137:9801'
+VUE_APP_BASE_API = 'http://192.168.1.137:9801'
 #VUE_APP_BASE_API_HOST = 'http://139.224.65.227:8091/prod-api'
 #VUE_APP_BASE_API = 'http://139.224.65.227:8091/prod-api'
 # VUE_APP_BASE_API_HOST = 'http://192.168.5.247:9801/'

+ 119 - 18
admin-ui/src/views/settlement/bill/storeSettlement.vue

@@ -41,10 +41,17 @@
             <el-table-column label="原材料备用金" align="center" prop="materialImprestAmount" width="100px" />
       <el-table-column label="原材料剩余金额" align="center" prop="materialImprestRemainAmount" width="120px" />
             <el-table-column label="系统维护费" align="center" prop="systemMaintenanceAmount" width="100px" />
+            <el-table-column label="零售本店卡异店消费" align="center" prop="retailOtherStoreAmount" width="130px" />
+            <el-table-column label="零售异店卡本店消费" align="center" prop="retailOtherCardAmount" width="130px" />
+            <el-table-column label="洗衣本店卡异店消费" align="center" prop="washOtherStoreAmount" width="130px" />
+            <el-table-column label="洗衣异店卡本店消费" align="center" prop="washOtherCardAmount" width="130px" />
+            <el-table-column label="APP本店卡异店消费" align="center" prop="appOtherStoreAmount" width="130px" />
+            <el-table-column label="APP异店卡本店消费" align="center" prop="appOtherCardAmount" width="130px" />
+            <el-table-column label="第三方本店卡异店消费" align="center" prop="thirdOtherStoreAmount" width="130px" />
+            <el-table-column label="第三方异店卡本店消费" align="center" prop="thirdOtherCardAmount" width="130px" />
+            <el-table-column label="洗衣金额" align="center" prop="orderClothAmount" width="100px" />
+            <el-table-column label="免洗余额" align="center" prop="freeWashBalance" width="100px" />
             <el-table-column label="洗衣费" align="center" prop="washClothAmount" width="100px" />
-            <el-table-column label="快递费" align="center" prop="expressAmount" width="100px" />
-            <el-table-column label="跨店结算金" align="center" prop="crossStoreSettlementAmount" width="100px" />
-            <!-- <el-table-column label="超额订货金额" align="center" prop="overOrderingAmount" width="100px" /> -->
             <el-table-column label="结算金额" align="center" prop="settlementAmount" width="100px" />
                         <el-table-column label="备注" align="center" prop="remark" width="120px" >
                 <template slot-scope="scope">
@@ -177,24 +184,29 @@
           </el-card>
         </el-col>
 
-        <!-- 卡密信息 -->
+        
+
+        <!-- 洗衣/免洗信息 -->
         <el-col :span="12">
           <el-card class="box-card">
             <div slot="header">
-              <span>异店信息</span>
-              <el-tooltip content="跨店结算金=(本店卡:洗衣*费率-异店卡:洗衣*费率)+(本店卡:零售*费率-异店卡:零售*费率)+(本店卡:app*费率-异店卡:app*费率)+(本店卡:第三方*费率-异店卡:第三方*费率)+(本店卡:运费*费率-异店卡:运费*费率)" placement="top">
+              <span>洗衣/免洗信息</span>
+              <el-tooltip content="免洗金额可编辑,免洗余额为只读,洗衣费为只读。" placement="top">
                 <i class="el-icon-question"></i>
               </el-tooltip>
             </div>
-            <el-form ref="cardForm" :model="form" label-width="120px">
-              <el-form-item label="本店卡异店消费金额">
-                <el-input-number v-model="settlementManageStore.otherStoreAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+            <el-form ref="washForm" :model="form" label-width="120px">
+              <el-form-item label="洗衣金额">
+                <el-input-number v-model="settlementManageStore.orderClothAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+              </el-form-item>
+              <el-form-item label="免洗金额" prop="freeWashAmount">
+                <el-input-number v-model="form.freeWashAmount" :disabled="getCanEdit" :precision="2" :controls="false" style="width: 180px" @change="handleAmountChange"></el-input-number>
               </el-form-item>
-              <el-form-item label="异店卡本店消费金额">
-                <el-input-number v-model="settlementManageStore.otherCardAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+              <el-form-item label="免洗余额">
+                <el-input-number v-model="settlementManageStore.freeWashBalance" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
               </el-form-item>
-              <el-form-item label="跨店结算金">
-                <el-input-number v-model="settlementManageStore.crossStoreSettlementAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+              <el-form-item label="洗衣费">
+                <el-input-number v-model="settlementManageStore.washClothAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
               </el-form-item>
             </el-form>
           </el-card>
@@ -217,6 +229,77 @@
           </el-card>
         </el-col>
 
+        <!-- 异店信息 -->
+        <el-col :span="24">
+          <el-card class="box-card">
+            <div slot="header">
+              <span>异店信息</span>
+              <el-tooltip content="跨店结算金=(本店卡:洗衣*费率-异店卡:洗衣*费率)+(本店卡:零售*费率-异店卡:零售*费率)+(本店卡:app*费率-异店卡:app*费率)+(本店卡:第三方*费率-异店卡:第三方*费率)+(本店卡:运费*费率-异店卡:运费*费率)" placement="top">
+                <i class="el-icon-question"></i>
+              </el-tooltip>
+            </div>
+            <el-form ref="cardForm" :model="form" label-width="120px">
+              <el-row :gutter="20">
+                <el-col :span="12">
+                  <el-form-item label="本店卡异店消费金额">
+                    <el-input-number v-model="settlementManageStore.otherStoreAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="异店卡本店消费金额">
+                    <el-input-number v-model="settlementManageStore.otherCardAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="零售本店卡异店消费">
+                    <el-input-number v-model="settlementManageStore.retailOtherStoreAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="零售异店卡本店消费">
+                    <el-input-number v-model="settlementManageStore.retailOtherCardAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="洗衣本店卡异店消费">
+                    <el-input-number v-model="settlementManageStore.washOtherStoreAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="洗衣异店卡本店消费">
+                    <el-input-number v-model="settlementManageStore.washOtherCardAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="APP本店卡异店消费">
+                    <el-input-number v-model="settlementManageStore.appOtherStoreAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="APP异店卡本店消费">
+                    <el-input-number v-model="settlementManageStore.appOtherCardAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="第三方本店卡异店消费">
+                    <el-input-number v-model="settlementManageStore.thirdOtherStoreAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="第三方异店卡本店消费">
+                    <el-input-number v-model="settlementManageStore.thirdOtherCardAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="跨店结算金">
+                    <el-input-number v-model="settlementManageStore.crossStoreSettlementAmount" :disabled="true" :precision="2" :controls="false" style="width: 180px"></el-input-number>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+            </el-form>
+          </el-card>
+        </el-col>
+
         <!-- 结算金额 -->
         <el-col :span="24">
           <el-card class="box-card">
@@ -282,7 +365,21 @@ export default {
                 title: null
             },
             // 表单参数
-            form: {},
+            form: {
+                /**
+                 * 免洗金额
+                 * @type {number}
+                 */
+                freeWashAmount: null,
+                settleId: null, //门店结算Id
+                settleGetCardPasswordDeposit: null, //清算收取卡密押金
+                settleSettlementAmount: null, //清算结算金额
+                settleMaterialImprestAmount: null, //清算原材料备用金(材料费)
+                settleWelfareDeposit: null, //清算福利金额
+                settlePaidDeposit: null, //清算已付押金
+                realSettlementAmount: null, //实际结算金额
+                settleRemark: null //清算备注
+            },
             // 表单校验
             rules: {
         settlePaidDeposit: [
@@ -392,7 +489,8 @@ export default {
                 settleWelfareDeposit: null, //清算福利金额
                 settlePaidDeposit: null, //清算已付押金
                 realSettlementAmount: null, //实际结算金额
-                settleRemark: null //清算备注
+                settleRemark: null, //清算备注
+                freeWashAmount: null, //免洗金额
             }
             this.resetForm('form')
         },
@@ -501,7 +599,8 @@ export default {
                 this.settlementManageStore.washClothAmount * 1000000 -
                 this.settlementManageStore.sfExpressAmount * 1000000 -
                 this.settlementManageStore.crossStoreSettlementAmount * 1000000 -
-                this.settlementManageStore.overOrderingAmount * 1000000
+                this.settlementManageStore.overOrderingAmount * 1000000 -
+                (this.form.freeWashAmount ? this.form.freeWashAmount * 1000000 : 0)
 
             this.form.realSettlementAmount = Number((result / 1000000).toFixed(2))
         },
@@ -518,7 +617,8 @@ export default {
                     settleWelfareDeposit: this.settlementManageStore.settleWelfareDeposit,
                     settlePaidDeposit: this.settlementManageStore.settlePaidDeposit,
                     settleMaterialImprestAmount: this.settlementManageStore.settleMaterialImprestAmount,
-                    realSettlementAmount: this.settlementManageStore.settleSettlementAmount
+                    realSettlementAmount: this.settlementManageStore.settleSettlementAmount,
+                    freeWashAmount: this.settlementManageStore.freeWashAmount,
                 }
             } else {
                 // 未结算状态,计算初始值
@@ -528,7 +628,8 @@ export default {
                     settleWelfareDeposit: this.settlementManageStore.welfareDeposit - this.settlementManageStore.paidWelfareDeposit,
                     settlePaidDeposit: this.settlementManageStore.payableDeposit - this.settlementManageStore.paidDeposit,
                     settleMaterialImprestAmount: this.settlementManageStore.materialImprestAmount,
-                    settleRemark: ''
+                    settleRemark: '',
+                    freeWashAmount: this.settlementManageStore.freeWashAmount,
                 }
                 this.calculateSettlementAmount()
             }

+ 30 - 0
yiqi-common/src/main/java/com/yiqi/core/domain/SettlementManageStore.java

@@ -262,6 +262,21 @@ public class SettlementManageStore {
     @ApiModelProperty("洗衣订单金额")
     private BigDecimal orderClothAmount;
 
+
+    /**
+     * 免洗金额 = 本期洗衣费金额
+     */
+    @Excel(name = "免洗金额")
+    @ApiModelProperty("免洗金额")
+    private BigDecimal freeWashAmount;
+
+    /**
+     *  免洗余额=上月未免洗余额-本期已用免洗金额
+     */
+    @Excel(name = "免洗余额")
+    @ApiModelProperty("免洗余额")
+    private BigDecimal freeWashBalance;
+
     /**
      * 商品金额-去掉退款
      */
@@ -304,6 +319,20 @@ public class SettlementManageStore {
     @ApiModelProperty("异卡金额 零售")
     private BigDecimal retailOtherCardAmount;
 
+    /**
+     * 异店金额 洗衣
+     */
+    @Excel(name = "异店金额 洗衣")
+    @ApiModelProperty("异店金额 洗衣")
+    private BigDecimal washOtherStoreAmount;
+
+    /**
+     * 异卡金额 零售
+     */
+    @Excel(name = "异卡金额 洗衣")
+    @ApiModelProperty("异卡金额 洗衣")
+    private BigDecimal washOtherCardAmount;
+
     /**
      * 异店金额 app订单
      */
@@ -325,6 +354,7 @@ public class SettlementManageStore {
     @ApiModelProperty("异店金额 第三方")
     private BigDecimal thirdOtherStoreAmount;
 
+
     /**
      * 异卡金额 第三方
      */

+ 3 - 0
yiqi-common/src/main/java/com/yiqi/settlement/domain/dto/StoreSettlementData.java

@@ -5,12 +5,14 @@ import com.yiqi.core.domain.SettlementManageStore;
 import com.yiqi.order.domain.*;
 import com.yiqi.recharge.domain.RechargePasswordCard;
 import com.yiqi.settlement.domain.SettlementStoreRate;
+import com.yiqi.system.domain.SysStore;
 import lombok.Data;
 
 import java.util.List;
 
 @Data
 public class StoreSettlementData {
+    private SysStore store;
     // 订单数据
     private List<OrderCloth> clothOrders;          // 洗衣订单
     private List<OrderClothItem> clothItems;       // 洗衣单项
@@ -21,6 +23,7 @@ public class StoreSettlementData {
 
     // 支付数据
     private List<OrderPayInfo> payInfos;           // 支付记录
+
     private List<OrderRefundInfo> refundInfos;     // 退款记录
 
     // 会员卡数据

+ 10 - 1
yiqi-core/src/main/java/com/yiqi/core/service/impl/SettlementManageBillServiceImpl.java

@@ -594,6 +594,7 @@ public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManag
         StoreSettlementData data = loadSettlementData(store.getId(),
                 settlementManageBill.getBeginTime(),
                 settlementManageBill.getEndTime());
+        data.setStore(store);
 
         // 2. 创建结算记录
         SettlementManageStore settlement = new SettlementManageStore();
@@ -742,7 +743,13 @@ public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManag
                 .filter(item -> Integer.parseInt(item.getFlowStatus()) > 0)
                 .map(OrderClothItem::getPayPrice)
                 .reduce(BigDecimal.ZERO, BigDecimal::add);
-        settlement.setWashClothAmount(washAmount);
+        //免洗金额=本期洗衣费金额
+        BigDecimal washRateAmount = CurrencyUtil.mul(washAmount, new BigDecimal(1).subtract(data.getSettlementRate().getWashRate()));
+        settlement.setFreeWashAmount(data.getStore().getNoWashBalance().compareTo(washRateAmount) > 0 ? washRateAmount : data.getStore().getNoWashBalance());
+        //免洗余额=上月未免洗余额-本期已用免洗金额
+        BigDecimal washBalance = CurrencyUtil.sub(data.getStore().getNoWashBalance(), settlement.getFreeWashAmount());
+        settlement.setFreeWashBalance(washBalance.compareTo(BigDecimal.ZERO) > 0 ? washBalance : BigDecimal.ZERO);
+        settlement.setWashClothAmount(CurrencyUtil.sub(washRateAmount, settlement.getFreeWashAmount()));
     }
 
     /**
@@ -848,6 +855,8 @@ public class SettlementManageBillServiceImpl extends ServiceImpl<SettlementManag
         BigDecimal crossStoreAmount = CurrencyUtil.mul(CurrencyUtil.sub(allPayAmount, otherPayAmount), settlementRate.getOtherConsumeRate());
         settlement.setOtherStoreAmount(allPayAmount);
         settlement.setOtherCardAmount(otherPayAmount);
+        settlement.setWashOtherStoreAmount(washAmount);
+        settlement.setWashOtherCardAmount(washOtherAmount);
         settlement.setRetailOtherStoreAmount(goodsAmount);
         settlement.setRetailOtherCardAmount(goodsOtherAmount);
         settlement.setAppOtherStoreAmount(appAmount);