|
|
@@ -186,7 +186,7 @@ Page({
|
|
|
type: 'number',
|
|
|
title: mixins.$t("factPrice"),
|
|
|
required: true,
|
|
|
- readonly: false
|
|
|
+ readonly: true
|
|
|
},
|
|
|
{
|
|
|
code: 'discount',
|
|
|
@@ -197,14 +197,7 @@ Page({
|
|
|
percentSignFlag: true,
|
|
|
inputColor: '#95A8CB'
|
|
|
},
|
|
|
- {
|
|
|
- code: 'discAmt',
|
|
|
- type: 'number',
|
|
|
- title: mixins.$t("sumWaiveAmt"),
|
|
|
- required: true,
|
|
|
- readonly: false,
|
|
|
- negativeNumber: true
|
|
|
- },
|
|
|
+
|
|
|
{
|
|
|
code: 'whId',
|
|
|
name: 'whName',
|
|
|
@@ -285,6 +278,7 @@ Page({
|
|
|
negativeNumber: true
|
|
|
},
|
|
|
],
|
|
|
+
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
@@ -298,19 +292,23 @@ Page({
|
|
|
return
|
|
|
}
|
|
|
let cardList = this.data.cardList
|
|
|
+ let contentSaveList = this.data.contentSaveList
|
|
|
+ let index_factAmt = contentSaveList.findIndex(it => it.code == 'factAmt');
|
|
|
+ let index_receivable = contentSaveList.findIndex(it => it.code == 'receivable');
|
|
|
let index = cardList.findIndex(it => it.name == 'items');
|
|
|
let dataItem = {}
|
|
|
- dataItem.sumAmount = cardList[index].sumAmount //合计金额
|
|
|
+ dataItem.sumAmount = contentSaveList[index_receivable]['content']//合计金额
|
|
|
dataItem.discount = cardList[index].discount ? cardList[index].discount : 100 //整单折扣
|
|
|
dataItem.discAmt = cardList[index].discAmt ? cardList[index].discAmt : 0 //优惠金额
|
|
|
- dataItem.factAmt = cardList[index].factAmt ? cardList[index].factAmt : cardList[index].sumAmount // 实际合计金额
|
|
|
+ dataItem.factAmt = contentSaveList[index_factAmt]['content'] ? contentSaveList[index_factAmt]['content'] :contentSaveList[index_receivable]['content'] // 实际合计金额
|
|
|
this.setData({
|
|
|
dataItem: JSON.stringify(dataItem),
|
|
|
showReverseCalculationPop: true,
|
|
|
})
|
|
|
},
|
|
|
/**
|
|
|
- * @desc : 开始反算
|
|
|
+ * @desc : 总单的各个反算
|
|
|
+ * 反算逻辑涉及到五个地方(1,总单的各个反算 2.明细的反算(在dk-form-bill里) 3.点击总单pop确定均分 4.点击明细pop确定反写总单 5明细dpop点击价格 还能弹pop 有点逻辑)
|
|
|
* @date : 2024/2/1 15:49
|
|
|
* @author : 于继渤
|
|
|
*/
|
|
|
@@ -319,29 +317,29 @@ Page({
|
|
|
let key = e.detail.key
|
|
|
let value = null
|
|
|
let dataItem = JSON.parse(this.data.dataItem)
|
|
|
- //实际合计金额=合计金额*折扣-优惠(改折扣)
|
|
|
- if (key == "discount") //整单折扣
|
|
|
+ // 总单折扣=实际合计金额/合计金额
|
|
|
+ // 实际合计金额=合计金额-优惠
|
|
|
+ // Math.round 四舍五入 取整
|
|
|
+ if (key == "discount") //修改整单折扣
|
|
|
{
|
|
|
value = Number(e.detail.value) / 100
|
|
|
- dataItem.discount = value * 100
|
|
|
- dataItem.factAmt = Number(dataItem.sumAmount) * Number(value) - Number(dataItem.discAmt)
|
|
|
+ dataItem.discount = value * 100 //整单折扣
|
|
|
+ dataItem.factAmt = Number(dataItem.sumAmount) * Number(value) //实际合计金额 = 合计金额*总单折扣
|
|
|
+ dataItem.discAmt = Number(dataItem.sumAmount)-Number(dataItem.factAmt) // 优惠 = 合计金额-实际合计金额
|
|
|
}
|
|
|
- if (key == "discAmt") //优惠金额
|
|
|
+ if (key == "discAmt") //修改优惠金额
|
|
|
{
|
|
|
value = Number(e.detail.value)
|
|
|
- dataItem.discAmt = value
|
|
|
- dataItem.factAmt = Number(dataItem.sumAmount) * (Number(dataItem.discount) / 100) - Number(value)
|
|
|
-
|
|
|
+ dataItem.discAmt = value //优惠金额
|
|
|
+ dataItem.factAmt = Number(dataItem.sumAmount) - Number(dataItem.discAmt)//实际合计金额 = 合计金额-优惠
|
|
|
+ dataItem.discount = dataItem.sumAmount? Math.round(Number(dataItem.factAmt) / Number(dataItem.sumAmount)*100):0 //总单折扣=实际合计金额/合计金额
|
|
|
}
|
|
|
- if (key == "factAmt") //实际合计金额
|
|
|
+ if (key == "factAmt") //修改实际合计金额
|
|
|
{
|
|
|
value = Number(e.detail.value)
|
|
|
- dataItem.factAmt = value
|
|
|
- //折扣 = (实际合计金额+优惠)/合计金额
|
|
|
- dataItem.discount = dataItem.sumAmount? Math.floor(((Number(value) + Number(dataItem.discAmt)) / Number(dataItem.sumAmount)) * 100):0
|
|
|
- if (dataItem.sumAmount != 0) { //预防 算出的折扣是无线循环 差的金额 放到优惠上
|
|
|
- dataItem.discAmt = ((dataItem.sumAmount * (dataItem.discount / 100)) - dataItem.factAmt).toFixed(2)
|
|
|
- }
|
|
|
+ dataItem.factAmt = value //实际合计金额
|
|
|
+ dataItem.discAmt = Number(dataItem.sumAmount)-Number(dataItem.factAmt) // 优惠 = 合计金额-实际合计金额
|
|
|
+ dataItem.discount = dataItem.sumAmount? Math.round(Number(dataItem.factAmt) / Number(dataItem.sumAmount)*100):100 //总单折扣=实际合计金额/合计金额
|
|
|
}
|
|
|
this.setData({
|
|
|
dataItem: JSON.stringify(dataItem)
|
|
|
@@ -357,7 +355,7 @@ Page({
|
|
|
this.calculateDiscounts()
|
|
|
},
|
|
|
/**
|
|
|
- * @desc : 计算折扣
|
|
|
+ * @desc : 点击总单pop确定均分
|
|
|
* @date : 2024/2/1 15:49
|
|
|
* @author : 于继渤
|
|
|
*/
|
|
|
@@ -368,13 +366,12 @@ Page({
|
|
|
let contentSaveList = this.data.contentSaveList
|
|
|
goodsList.forEach(element => {
|
|
|
element.sumPrice = Number(element.priceSale) * Number(element.itemQty) //求出单品合计
|
|
|
- }); //折扣
|
|
|
- goodsList = this.distributeValue(goodsList, dataItem.discAmt, "discAmt", "itemQty", "sumPrice") //商品平分优惠金额
|
|
|
+ }); //折扣
|
|
|
goodsList = this.distributeValue(goodsList, dataItem.factAmt, "factAmt", "itemQty", "sumPrice") //商品平分实际合计金额
|
|
|
goodsList.forEach(element => {
|
|
|
if (!element.flgGift) {
|
|
|
- element.discount = dataItem.discount
|
|
|
- element.factPrice = Number(element.factAmt) / Number(element.itemQty) //求出实际单价
|
|
|
+ element.discount = dataItem.discount //商品折扣 = 总单折扣
|
|
|
+ element.factPrice = Math.round( (Number(element.factAmt) / Number(element.itemQty) * 100) )/100 //求出实际单价
|
|
|
}
|
|
|
}); //折扣
|
|
|
formData.goodsList = goodsList
|
|
|
@@ -398,8 +395,23 @@ Page({
|
|
|
contentSaveList: contentSaveList
|
|
|
})
|
|
|
},
|
|
|
+ /**
|
|
|
+ * @desc : 点击销售单价和实际单价 弹出pop
|
|
|
+ * @date : 2024/2/1 15:49
|
|
|
+ * @author : 于继渤
|
|
|
+ */
|
|
|
+ openPopDkNumberInput(e){
|
|
|
+ console.log('openPopDkNumberInput',e);
|
|
|
+ let dataItem = JSON.parse(e.detail.dataItem)
|
|
|
+ let key = e.detail.key
|
|
|
+ if(key=="priceSale"||key=="factPrice"){
|
|
|
+ this.setData({
|
|
|
+ showChangePrice:true
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
/**
|
|
|
- * @desc : 分配总值到元素列表
|
|
|
+ * @desc : 总单分配明细 均分方法
|
|
|
* @date : 2024/2/1 15:49
|
|
|
* @author : 于继渤
|
|
|
*/
|
|
|
@@ -423,7 +435,8 @@ Page({
|
|
|
}
|
|
|
goodsList[lastIndexNonZero][key] = 0
|
|
|
result[lastIndexNonZero][key] = totalValue - goodsList.sum(key) //除了最后一个前面均分 然后最后一个是 总-前面均分的和
|
|
|
- } else { // 能进入这个方法 goodsLsit 一是有值的 进else 说明 都是金额为0 的数据 按数量分份
|
|
|
+ } else { // 能进入这个方法 goodsLsit 都是有值的 进else 说明 都是金额为0 的数据 按数量分份
|
|
|
+ return
|
|
|
let itemAmtList = goodsList.filter(it => !!!it["flgGift"]) //过滤掉赠品
|
|
|
let partNmb = itemAmtList.sum(itemQty)
|
|
|
let avg = (Number(totalValue) / Number(partNmb)).toFixed(2); // 计算平均值(取两位小数)
|
|
|
@@ -442,6 +455,7 @@ Page({
|
|
|
}
|
|
|
return result;
|
|
|
},
|
|
|
+
|
|
|
/**
|
|
|
* @desc : 手机号离焦事件
|
|
|
* @author : 于继渤
|
|
|
@@ -723,14 +737,15 @@ Page({
|
|
|
//设置需收款
|
|
|
let contentSaveList = this.data.contentSaveList
|
|
|
let formData = JSON.parse(this.data.formData)
|
|
|
- //需收款 = 合计金额 - 使用预存
|
|
|
- let amtReceivable = Number(formData.sumAmount - formData.useCollect)
|
|
|
- //实际金额 = 实际收款 - 使用预存
|
|
|
- let amtFactAmt = Number(formData.factAmt - formData.useCollect)
|
|
|
+ //需收款 = 实际金额 - 使用预存
|
|
|
+ let amtReceivable = Number(formData.factAmt - formData.useCollect)
|
|
|
+ formData.factAmt = formData.factAmt //总单实收金额 = 明细实收金额汇总
|
|
|
+ formData.discAmt = Number(formData.sumAmount) - Number(formData.factAmt) //总单优惠金额 = 合计金额 - 总单实收金额
|
|
|
+ formData.discount = formData.sumAmount? Math.round(Number(formData.factAmt) / Number(formData.sumAmount)*100):100 //总单折扣 = 总单实收金额 /总单合计金额
|
|
|
//组件显示 需收款
|
|
|
let index_factAmt = contentSaveList.findIndex(it => it.code == 'factAmt');
|
|
|
if (index_factAmt != -1) {
|
|
|
- contentSaveList[index_factAmt]['content'] = amtFactAmt
|
|
|
+ contentSaveList[index_factAmt]['content'] = formData.factAmt
|
|
|
}
|
|
|
let index_receivable = contentSaveList.findIndex(it => it.code == 'receivable');
|
|
|
if (index_receivable != -1) {
|
|
|
@@ -743,7 +758,7 @@ Page({
|
|
|
formData: JSON.stringify(formData),
|
|
|
contentSaveList: contentSaveList
|
|
|
})
|
|
|
- this.calculateAmount(formData)
|
|
|
+
|
|
|
},
|
|
|
//校验库存
|
|
|
outBound() {
|
|
|
@@ -1017,8 +1032,8 @@ Page({
|
|
|
|
|
|
|
|
|
editItems() {
|
|
|
- this.setGoods()
|
|
|
-
|
|
|
+ let formData = JSON.parse(this.data.formData)
|
|
|
+ this.calculateAmount(formData)
|
|
|
//校验库存
|
|
|
let btnFormData = this.data.btnFormData ? JSON.parse(this.data.btnFormData) : ''
|
|
|
if (btnFormData.flag) {
|
|
|
@@ -1058,6 +1073,10 @@ Page({
|
|
|
// formData.canUseCollect = 0
|
|
|
// formData.useCollect = 0
|
|
|
formData.sumQuantity = sumQuantity
|
|
|
+ formData.factAmt = factAmt //总单实收金额 = 明细实收金额汇总
|
|
|
+ formData.discAmt = sumAmount - factAmt //总单优惠金额 = 合计金额 - 总单实收金额
|
|
|
+ formData.discount = sumAmount? Math.round(Number(factAmt) / Number(sumAmount)*100):100 //总单折扣 = 总单实收金额 /总单合计金额
|
|
|
+
|
|
|
cardList.forEach(element => {
|
|
|
if (element.name == "items") {
|
|
|
element.sumAmount = sumAmount
|
|
|
@@ -1067,6 +1086,8 @@ Page({
|
|
|
}
|
|
|
});
|
|
|
let contentSaveList = this.data.contentSaveList
|
|
|
+ //需收款 = 实际金额 - 使用预存
|
|
|
+ let amtReceivable = Number(formData.factAmt - formData.useCollect)
|
|
|
//组件显示 需收款
|
|
|
let index_factAmt = contentSaveList.findIndex(it => it.code == 'factAmt');
|
|
|
if (index_factAmt != -1) {
|
|
|
@@ -1074,8 +1095,9 @@ Page({
|
|
|
}
|
|
|
let index_receivable = contentSaveList.findIndex(it => it.code == 'receivable');
|
|
|
if (index_receivable != -1) {
|
|
|
- contentSaveList[index_receivable]['content'] = sumAmount
|
|
|
+ contentSaveList[index_receivable]['content'] = amtReceivable
|
|
|
}
|
|
|
+
|
|
|
this.setData({
|
|
|
cardList: cardList,
|
|
|
contentSaveList: contentSaveList,
|
|
|
@@ -1083,7 +1105,7 @@ Page({
|
|
|
})
|
|
|
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 生命周期函数--监听页面加载
|