|
@@ -116,7 +116,6 @@ function fullReduction(goodsDetails,key){
|
|
|
|
|
|
// 满赠
|
|
|
function calculateGoodsByMz(goodsDetails,type){
|
|
|
- debugger;
|
|
|
// 判断当前支付金额是否满足满赠金额,若满足,直接修改金额为1
|
|
|
var mzGoods = vm.mz.get(goodsDetails.prodBarcode);
|
|
|
if(mzGoods){
|
|
@@ -235,6 +234,53 @@ function calculateGoodsByMysy(goodsDetails,type){
|
|
|
|
|
|
}
|
|
|
|
|
|
+ if(brandMysy){
|
|
|
+ var buyNum = brandMysy.buyNum;
|
|
|
+ if(type == "add"){
|
|
|
+
|
|
|
+ // 如果不是买一送一,而是买n送n,先获取购物车已有该类型商品数量
|
|
|
+ var boughtNum = vm.boughtNum.get(goodsDetails.brand);
|
|
|
+ // 如果没有,置为1
|
|
|
+ if(!boughtNum){
|
|
|
+ vm.boughtNum.set(goodsDetails.brand , 1);
|
|
|
+ return ;
|
|
|
+ }
|
|
|
+ // 走到这里,证明购买过该类型商品,且数量不是买一送一的
|
|
|
+ // 如果相等,证明达到送的条件
|
|
|
+ if(buyNum === boughtNum + 1){
|
|
|
+ var mysyNum = vm.freeBardcode.get(brandMysy.giftBarcode);
|
|
|
+ if(!mysyNum){
|
|
|
+ mysyNum = 0;
|
|
|
+ }
|
|
|
+ vm.freeBardcode.set(brandMysy.giftBarcode,mysyNum + 1);
|
|
|
+ vm.boughtNum.set(goodsDetails.brand,0);
|
|
|
+ }else{
|
|
|
+ // 如果不相等,已经购买数量+1
|
|
|
+ vm.boughtNum.set(goodsDetails.brand , boughtNum+1);
|
|
|
+ }
|
|
|
+ }else if (type == "minus"){
|
|
|
+
|
|
|
+ var mysyNum = vm.boughtNum.get(goodsDetails.brand);
|
|
|
+ if(mysyNum == 0){
|
|
|
+ if(vm.freeBardcode.get(brandMysy.giftBarcode) == 0){
|
|
|
+ vm.freeBardcode.set(brandMysy.giftBarcode,-1);
|
|
|
+ }else{
|
|
|
+ vm.freeBardcode.set(brandMysy.giftBarcode,vm.freeBardcode.get(brandMysy.giftBarcode) - 1);
|
|
|
+ }
|
|
|
+ vm.boughtNum.set(goodsDetails.brand,buyNum - 1);
|
|
|
+ }else{
|
|
|
+ vm.boughtNum.set(goodsDetails.brand,mysyNum - 1);
|
|
|
+
|
|
|
+ }
|
|
|
+ // var freeNum = vm.freeBardcode.get(brandMysy.giftBarcode);
|
|
|
+ // if(freeNum > 0){
|
|
|
+ // vm.freeBardcode.set(brandMysy.giftBarcode,freeNum - 1);
|
|
|
+ //
|
|
|
+ // }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -425,6 +471,7 @@ let vm = new Vue({
|
|
|
// 买一送一
|
|
|
mysy: [],
|
|
|
freeBardcode : new Map(),
|
|
|
+ modifyShopcart:false, // 是否需要修改购物车中商品信息
|
|
|
brandGetOneFree : new Map(),
|
|
|
barcodeGetOneFree: new Map(),
|
|
|
boughtNum: new Map(),
|
|
@@ -500,16 +547,27 @@ let vm = new Vue({
|
|
|
alert("数量至少为1个");
|
|
|
return ;
|
|
|
}
|
|
|
- debugger;
|
|
|
- goodsDetails.sellVolume = g.sellVolume;
|
|
|
- calculateGoodsByMj(goodsDetails,"minus");
|
|
|
- calculateGoodsByMysy(goodsDetails,"minus");
|
|
|
- // calculateGoodsByMz(goodsDetails,"minus");
|
|
|
- goodsDetails.sellVolume = -1;
|
|
|
- goodsDetails.actualPaymentAmount = -goodsDetails.actualPaymentAmount;
|
|
|
- goodsDetails.discountedPrice = -goodsDetails.discountedPrice;
|
|
|
- goodsDetails.goodstaxes = - goodsDetails.goodstaxes;
|
|
|
- goodsDetails.retailPrice = - goodsDetails.retailPrice;
|
|
|
+ // 如果不为空,证明减的是买A送B中的B,这时候要还原赠送资格跟B的扣减
|
|
|
+ var freeMap = vm.freeBardcode.get(goodsDetails.prodBarcode);
|
|
|
+ if((freeMap || freeMap == 0) && g.actualPaymentAmount == 0){
|
|
|
+ vm.freeBardcode.set(goodsDetails.prodBarcode,freeMap + 1);
|
|
|
+ goodsDetails.sellVolume = -1;
|
|
|
+ goodsDetails.actualPaymentAmount = 0;
|
|
|
+ goodsDetails.discountedPrice = -goodsDetails.retailPrice;
|
|
|
+ goodsDetails.goodstaxes = - goodsDetails.goodstaxes;
|
|
|
+ goodsDetails.retailPrice = - goodsDetails.retailPrice;
|
|
|
+ }else{
|
|
|
+ goodsDetails.sellVolume = g.sellVolume;
|
|
|
+ calculateGoodsByMj(goodsDetails,"minus");
|
|
|
+ calculateGoodsByMysy(goodsDetails,"minus");
|
|
|
+ // calculateGoodsByMz(goodsDetails,"minus");
|
|
|
+ goodsDetails.sellVolume = -1;
|
|
|
+ goodsDetails.actualPaymentAmount = -goodsDetails.actualPaymentAmount;
|
|
|
+ goodsDetails.discountedPrice = -goodsDetails.discountedPrice;
|
|
|
+ goodsDetails.goodstaxes = - goodsDetails.goodstaxes;
|
|
|
+ goodsDetails.retailPrice = - goodsDetails.retailPrice;
|
|
|
+ }
|
|
|
+
|
|
|
handle(goodsDetails,"minus");
|
|
|
break;
|
|
|
}
|
|
@@ -528,6 +586,25 @@ let vm = new Vue({
|
|
|
if(vm.mz.get(this.goodsList[i].prodBarcode)){
|
|
|
vm.mz.get(this.goodsList[i].prodBarcode).useMz = false ;
|
|
|
}
|
|
|
+ if(vm.brandGetOneFree.get(this.goodsList[i].brand)){
|
|
|
+ var giftBarcode = vm.brandGetOneFree.get(this.goodsList[i].brand).giftBarcode;
|
|
|
+ var muilty = vm.brandGetOneFree.get(this.goodsList[i].brand).buyNum;
|
|
|
+ var sellNum = this.goodsList[i].sellVolume;;
|
|
|
+ vm.freeBardcode.set(giftBarcode,sellNum/muilty);
|
|
|
+
|
|
|
+ for(var j = 0 ; j < vm.goodsList.length ; j++){
|
|
|
+ var shopcartGoods = vm.goodsList[j];
|
|
|
+ var shopcartFree = vm.freeBardcode.get(shopcartGoods.prodBarcode);
|
|
|
+ if(shopcartFree /*&& shopcartGoods.actualPaymentAmount*/){
|
|
|
+ shopcartGoods.actualPaymentAmount = shopcartGoods.actualPaymentAmount + (shopcartGoods.retailPrice * shopcartFree);
|
|
|
+ shopcartGoods.discountedPrice = shopcartGoods.discountedPrice - (shopcartGoods.retailPrice * shopcartFree);
|
|
|
+ vm.freeBardcode.set(shopcartGoods.prodBarcode, 0);// 重置回0
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
var goods = this.goodsList[i];
|
|
|
console.log(goods);
|
|
|
vm.totalPrice = vm.totalPrice - (goods.retailPrice * goods.sellVolume);
|
|
@@ -627,7 +704,6 @@ let vm = new Vue({
|
|
|
vm.customidcard = '';
|
|
|
vm.customClearData();
|
|
|
|
|
|
- // alert('打印小票完成');
|
|
|
}else{
|
|
|
// alert("打印小票失败");
|
|
|
}
|
|
@@ -647,6 +723,8 @@ let vm = new Vue({
|
|
|
vm.goodsDetail = false;
|
|
|
// 买一送一
|
|
|
vm.mysy = [];
|
|
|
+ vm.freeBardcode = new Map();
|
|
|
+ vm.brandGetOneFree = new Map();
|
|
|
vm.barcodeGetOneFree = new Map();
|
|
|
vm.brandGetOneFree = new Map();
|
|
|
vm.boughtNum = new Map();
|
|
@@ -1280,6 +1358,57 @@ function handle(goodsDetails,operatorType){
|
|
|
goodsDetails.goodsDesc = "";
|
|
|
|
|
|
|
|
|
+ // 判断当前商品是否是赠品
|
|
|
+ var freeMap = vm.freeBardcode.get(goodsDetails.prodBarcode);
|
|
|
+ if(freeMap && "minus" != operatorType){
|
|
|
+ goodsDetails.actualPaymentAmount = 0;
|
|
|
+ goodsDetails.discountedPrice = goodsDetails.retailPrice;
|
|
|
+ vm.freeBardcode.set(goodsDetails.prodBarcode,freeMap - 1);
|
|
|
+ }else{
|
|
|
+ if(!freeMap && freeMap != 0 ){
|
|
|
+ // 判断购物车中是否有赠品 这个操作只有是非赠品才能进来
|
|
|
+ for(var i = 0 ; i < vm.goodsList.length ; i++){
|
|
|
+ var shopcartGoods = vm.goodsList[i];
|
|
|
+ var shopcartFree = vm.freeBardcode.get(shopcartGoods.prodBarcode);
|
|
|
+ if(shopcartFree /*&& shopcartGoods.actualPaymentAmount*/){
|
|
|
+ // if("minus" != operatorType){
|
|
|
+ var shopcartSellNum = shopcartGoods.sellVolume;
|
|
|
+ if(shopcartFree > shopcartSellNum){
|
|
|
+ shopcartGoods.actualPaymentAmount = 0;
|
|
|
+ shopcartGoods.discountedPrice = shopcartGoods.retailPrice * shopcartFree;
|
|
|
+
|
|
|
+ vm.discountedPrice = vm.discountedPrice + shopcartGoods.discountedPrice ;
|
|
|
+ vm.actualPrice = vm.actualPrice + shopcartGoods.actualPaymentAmount ;
|
|
|
+
|
|
|
+ vm.freeBardcode.set(shopcartGoods.prodBarcode,shopcartFree - 1);//
|
|
|
+ }else if(shopcartFree == -1 ){
|
|
|
+ // g.actualPaymentAmount == 0){
|
|
|
+ shopcartGoods.actualPaymentAmount = shopcartGoods.retailPrice + shopcartGoods.actualPaymentAmount;
|
|
|
+ shopcartGoods.discountedPrice = shopcartGoods.discountedPrice - shopcartGoods.retailPrice;
|
|
|
+
|
|
|
+ vm.discountedPrice = vm.discountedPrice + shopcartGoods.discountedPrice ;
|
|
|
+ vm.actualPrice = vm.actualPrice + shopcartGoods.actualPaymentAmount ;
|
|
|
+
|
|
|
+ vm.freeBardcode.set(shopcartGoods.prodBarcode,0);// 重置回0
|
|
|
+ }else{
|
|
|
+ if(shopcartGoods.actualPaymentAmount > 0){
|
|
|
+ shopcartGoods.actualPaymentAmount = shopcartGoods.actualPaymentAmount - (shopcartGoods.retailPrice * shopcartFree);
|
|
|
+ shopcartGoods.discountedPrice = shopcartGoods.discountedPrice + (shopcartGoods.retailPrice * shopcartFree);
|
|
|
+
|
|
|
+ vm.actualPrice = vm.actualPrice - (shopcartGoods.retailPrice * shopcartFree) ;
|
|
|
+ vm.discountedPrice = vm.discountedPrice + (shopcartGoods.retailPrice * shopcartFree) ;
|
|
|
+
|
|
|
+ vm.freeBardcode.set(shopcartGoods.prodBarcode, shopcartFree - 1);// 重置回0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
|