于继渤 1 год назад
Родитель
Сommit
1d5e8ade7f

+ 1 - 0
api/pages/ivt/inboundPurchaseReturn.js

@@ -13,6 +13,7 @@ module.exports = {
     prefix: 'mdm-server/ivt/inbound_purchase_return/',
     inBoundHandle: 'inbound_handle',
     inboundRepeal: 'repeal/',
+    inboundInsert: 'inbound_insert',
   },
 
   routeUrl: {

+ 2 - 1
package-base-select/pages/select-source-purchase-order/select-source-purchase-order.js

@@ -161,7 +161,8 @@ Page({
       if(fromNo.indexOf(res.intoNo) == -1){
         fromNo.push(res.intoNo)
       }
-  
+
+     delete res['itemId']
     })
 
     let that = this

+ 252 - 128
package-purchase/pages/purchase-return/add/add.js

@@ -6,23 +6,25 @@ const utils = require('@/utils/util')
 Page({
   mixins: [mixins],
   /**
-   * 页面的初始数据
-   */
+   * 页面的初始数据  采购退货相关 TODO
+   */ 
   data: {
     routeObjName: 'inboundReturn',
     tableData: [],
+    table: Constants.tables.purchase,
+    commonService: app.globalData['commonService'],
+    inboundSaleReturnService: app.globalData['inboundSaleReturnService'],
     btnFormData: JSON.stringify({ flag: app.globalData.setting[Constants.settingCode.IVT001] == "true" ? true : false }),
     // 系统参数
     flgHandleSetting: app.globalData.setting[Constants.settingCode.IVT001] == "true" ? true : false,
     pageFlag: false,
-    pageFlag: false,
     flgAutoIvt: false,
     showPopFlag: true,
     stepperFlag: true,
     cardList: [
       { name: 'main', title: '' },
       { name: 'relation', title: '' },
-      { name: 'items', title: mixins.$t("goodsDetail"), chooseGoodsFlag: false, sumReturnAmt: 0, displayNum: 2 },
+      { name: 'items', title: mixins.$t("goodsDetail"), chooseGoodsFlag: false, sumAmount: 0, displayNum: 2 },
       { name: 'other', title: mixins.$t("otherInfo") }
     ],
 
@@ -38,14 +40,7 @@ Page({
       ],
       relation:
         [
-          // {
-          //   code: 'fromNo',
-          //   name: 'fromNo',
-          //   type: 'choose',
-          //   controlChooseFlag: true,
-          //   title: mixins.$t("sourceOrder"),//'关联源单'
-          //   urlKey: 'selectSourcePurchaseOrder'
-          // }
+
         ],
       other: [{
         code: 'remarks',
@@ -61,7 +56,7 @@ Page({
       name: 'merge',
       title: mixins.$t("save"),//'保存'
     }],
-    contentList: [{
+    contentSaveList: [{
       code: 'flag',
       title: mixins.$t("antoHandle"),//'自动入库办理',
       type: 'checkbox'
@@ -70,11 +65,39 @@ Page({
       title: mixins.$t("totalReturn"),//'合计金额',
       type: 'str'
     }, {
-      code: 'sumReturnAmt',
+      code: 'sumAmount',
       content: 0,
       type: 'number'
     }],
-
+    popContent: [{
+      code: 'priceInto',
+      type: 'number',
+      title: mixins.$t("purReturnPrice"),
+    }, {
+      code: 'intoingQty',
+      type: 'step',
+      title: mixins.$t('count'), //'数量',
+      required: true,
+    },
+    {
+      code: 'packageBox',
+      type: 'packageBox',
+      title: mixins.$t("packageBox"),
+    },
+    {
+      code: 'skuSpec',
+      title: mixins.$t('goodSpec'), //'规格',
+      type: 'str',
+      readonly: true,
+    },
+    {
+      code: 'nonStdCode',
+      title: mixins.$t('goodsBatch'), //'色号',
+      type: 'str',
+      required: true,
+      tip: mixins.$t('tipPop'),
+    },
+    ],
 
   },
   /**
@@ -132,45 +155,75 @@ Page({
     })
   },
   /**
-* @desc : 设置保存参数
-* @date : 2024/3/19 15:49
-* @author : 于继渤
-*/
+    * @desc : 设置保存参数
+    * @date : 2024/3/19 15:49
+    * @author : 于继渤
+    */
   setParams(params) {
-    if (this.data.formMode !== 'edit' && this.data.formType !== 'add') {
-      params.fromId = this.data.item.purId ? this.data.item.purId : params.purId //采购订单id
-      params.fromNo = this.data.item.purNo ? this.data.item.purNo : params.purNo //采购订单id
-      params.supId = this.data.item.supId
-    } else {
-      //没源单的明细
-      let itemIndex = 0
-      params.goodsList.forEach(res => {
-        res.itemIndex = itemIndex++
-      })
-    }
-
+    let itemIndex = 0
+    let formData = JSON.parse(this.data.formData)
+    params.fromNo = (params.fromNo && params.fromNo.length > 0) ? params.fromNo[0] : null
+    params.fromId = this.data.item.purId ? this.data.item.purId : params.purId
+    params.factAmt = params.intoingAmt
+    params.intoQty = this.convertToNegative(params.intoQty)
+    params.intoAmt = this.convertToNegative(params.intoAmt)
+    params.goodsList.forEach(res => {
+      delete res['priceReturn']
+      delete res['pricePurchase']
+      delete res['rejectQty']
+      res.sIntoId = res.sIntoId ? res.sIntoId : params.outId
+      res.sPurId = res.sPurId ? res.sPurId : params.purId
+      res.supId = res.supId ? res.supId : null
+      res,fromId = res.fromId ? res.fromId : res.sIntoId
+      res.fromItemId = res.fromItemId ? res.fromItemId : res.sIntoItemId
+      res.factPrice = res.priceInto
+      res.factAmt = res.intoingAmt
+      res.costAmt = Number(res.intoingQty * res.costPrice)
+      res.itemIndex = itemIndex++
+    })
     let btnFormData = this.data.btnFormData ? JSON.parse(this.data.btnFormData) : ''
-    if (this.data.flgHandleSetting) {
-      params.flgAutoHandle = true
+    params.flgAutoHandle = btnFormData ? btnFormData.flag : false //自动出库标识 
+
+    params.itemList = params.goodsList //明细
+    if (formData.intoStatus == Constants.intoStatus.inBounded) //""入库状态-已入库"
+    {
+      params.itemList.forEach(element => {
+        element.intoBox = element.box
+        element.intoPiece = element.piece
+      });
     } else {
-      params.flgAutoHandle = btnFormData ? btnFormData.flag : false //自动出入库标识 
+      params.itemList.forEach(element => {
+        if (params.flgAutoHandle) {
+          element.intoBox = element.box
+          element.intoPiece = element.piece
+        } else {
+          element.intoingBox = element.box
+          element.intoingPiece = element.piece
+        }
+      });
     }
-    // 系统参数
-    params.flgHandleSetting = this.data.flgHandleSetting
-    params.itemList = params.goodsList
-    params.orgId = app.globalData.user.orgId
-    params.staffId = app.globalData.user.staffId
     params.makeStaff = app.globalData.user.staffId
-    params.returnQty = this.data.sumReturnQty
-    params.returnAmt = Number(this.data.sumReturnAmt)
-    params.limitEdit = this.data.formMode == 'edit' ? true : false
+    params['salesChannel'] = params.channelId
     delete params['goodsList']
-    delete params['sumReturnAmt']
-    delete params['sumReturnQty']
-    // return
+    delete params['orderItemResponseList']
+
+    //大小编辑判断
+    if (params.itemList.length > 0) {
+      params.limitEdit = true
+    } else {
+      params.limitEdit = false
+    }
+    console.log('params', params)
     return params
   },
-
+  /**
+ * @desc : 数值转出负值
+ * @date : 2024/2/1 15:49
+ * @author : 王英杰
+ */
+  convertToNegative(number) {
+    return Math.abs(number) * -1
+  },
   /**
     * @desc : 保存数据服务
     * @date : 2024/2/1 15:49
@@ -180,7 +233,7 @@ Page({
     if (this.data.formType == Constants.formMode.edit) {
       return this.excute(this.data.service, this.data.service.update, this.data.params);
     } else {
-      return this.excute(this.data.service, this.data.service.insert, this.data.params);
+      return this.excute(this.data.inboundSaleReturnService, this.data.inboundSaleReturnService.inboundInsert, this.data.params);
     }
   },
 
@@ -214,50 +267,104 @@ Page({
      * @author : 于继渤
      */
   setGoods(e) {
-    // let contentObj = this.data.contentObj
-    // contentObj.relation = [{
-    //   code: 'fromNo',
-    //   name: 'fromNo',
-    //   type: 'choose',
-    //   controlChooseFlag: true,
-    //   readonlyReturn: true,
-    //   title: mixins.$t("sourceOrder"),//'关联源单'
-    //   urlKey: 'selectSourcePurchaseOrder'
-    // }]
-    // this.setData({
-    //   contentObj: contentObj
-    // })
-    this.calculateTotal()
-  },
+    let contentSaveList = this.data.contentSaveList
+    console.log('外露设置产品方法', e)
 
-  /**
-* @desc :删除
-* @date : 2024/2/1 15:49
-* @author : 于继渤
-*/
-  delItem() {
-    let formData = JSON.parse(this.data.formData)
-    if (formData.goodsList.length == 0) {
-      let contentObj = this.data.contentObj
-      if (this.data.gradeCode == Constants.gradeCode.STD) {
-        contentObj.relation = []
-      } else {
-        contentObj.relation = [{
-          code: 'fromNo',
-          name: 'fromNo',
-          type: 'choose',
-          controlChooseFlag: true,
-          readonlyReturn: false,
-          title: mixins.$t("sourceOrder"),//'关联源单'
-          urlKey: 'selectSourcePurchaseOrder'
-        }]
+    let formData = e.detail.data
+    if (formData) {
+      let itemIndex = 0
+      let list = []
+      if (formData.goodsList && formData.goodsList.length > 0) {
+        formData.goodsList.forEach(res => {
+          if (res.skuId) {
+            res.itemIndex = itemIndex++
+            list.push({
+              skuId: res.skuId,
+              nonStdCode: res.nonStdCode,
+              whId: res.whId
+            })
+            res.sumPrice = res.priceInto * res.itemQty
+          }
+        })
+        if (list && list.length > 0) {
+          //批量查库存
+          this.getInventory({
+            skuIdNonStdCodeWhIdList: list
+          }).then(item => {
+            formData.goodsList.forEach(res => {
+              if (item.length > 0) {
+                item.forEach(it => {
+                  if (it.nonStdCode == res.nonStdCode && it.skuId == res.skuId && it.whId == res.whId) {
+                    res.invId = it.invId
+                    res.invQty = it.invQty ? it.invQty : 0
+                    res.usableQty = it.usableQty ? it.usableQty : 0
+                  } else {
+                    res.invQty = 0
+                    res.usableQty = 0
+                    res.invId = null
+                  }
+                })
+              } else {
+                res.invQty = 0
+                res.invId = null
+                res.usableQty = 0
+              }
+            })
+            //组件显示 需收款
+            contentSaveList.forEach(card => {
+              console.log('card', card)
+              if (card.code === 'sumAmount') {
+                card.content = Number(formData.sumAmount)
+              }
+            })
+            this.setData({
+              formData: JSON.stringify(formData),
+              contentSaveList: contentSaveList
+            })
+            //处理库存量
+            this.calculationSalesUsableQty()
+          })
+        } else {
+          this.setData({
+            formData: JSON.stringify(formData),
+          })
+        }
       }
+    }
+    //直接选品 需要计算总额
+    if (e.type == 'setGoods') {
+      let formData = JSON.parse(this.data.formData)
+      contentSaveList.forEach(card => {
+        console.log('card', card)
+        if (card.code === 'sumAmount') {
+          card.content = Number(formData.sumAmount)
+        }
+      })
       this.setData({
-        contentObj: contentObj
+        contentSaveList: contentSaveList
       })
     }
+  },
+
 
+  /**
+   * @desc : 查询库存
+   * @date : 2024/2/1 15:49
+   * @author : 于继渤
+   */
+  getInventory(params) {
+    return new Promise((resolve, reject) => {
+      this.excute(this.data.commonService, this.data.commonService.getInventoryByList, params).then(res => {
+        if (res.data.code == 200) {
+          resolve(res.data.data)
+        }
+      })
+    })
   },
+
+
+
+
   /**
 * @desc :计算金额
 * @date : 2024/2/1 15:49
@@ -265,43 +372,51 @@ Page({
 */
   calculateTotal(goodsList) {
     let formData = JSON.parse(this.data.formData)
-    let sumReturnAmt = Number(0) //合计金额
-    let sumReturnQty = Number(0) //合计金额
-    formData.goodsList.forEach(res => {
-      if (this.data.formMode != 'edit') {
-        res.returnQty = res.itemQty
-      }
-      res.returnAmt = Number(res.returnQty * res.priceReturn * -1)
-      sumReturnAmt += res.returnAmt
-      sumReturnQty += res.returnQty
-    })
+    let contentSaveList = this.data.contentSaveList
     let cardList = this.data.cardList
-    let contentList = this.data.contentList
-    formData.returnAmt = sumReturnAmt
-    formData.sumReturnAmt = sumReturnAmt
-    formData.returnQty = sumReturnQty
-    if (this.data.formMode = 'add') {
-      cardList[2].sumReturnAmt = sumReturnAmt.toFixed(2)
+    let index = cardList.findIndex(it => it.name == 'items');
+    if (formData.goodsList && formData.goodsList.length > 0) {
+      let sumAmount = Number(0)
+      let sumQuantity = Number(0)
+      formData.goodsList.forEach(item => {
+        //标价合计 =  商品标价 x  商品数量
+        item.priceStd = item.priceStandard //标价
+        item.intoingQty = item.intoingQty ? item.intoingQty : item.itemQty * -1
+        item.intoingAmt = item.priceInto * item.intoingQty
+        sumQuantity += Number(item.intoingQty) //数量
+        sumAmount += item.priceInto * item.intoingQty //没有售价默认取标价
+
+        item.intoingQty_min = item.canReturnQty ? item.canReturnQty : item.invQty * -1 //可出库最大值
+      })
+      //合计金额
+      cardList[index].sumAmount = sumAmount
+      cardList[index].sumQuantity = sumQuantity
+      formData.sumAmount = sumAmount
+      formData.sumQuantity = sumQuantity
+      formData.intoingAmt = sumAmount
+      formData.intoingQty = sumQuantity
     } else {
-      cardList[0].sumReturnAmt = sumReturnAmt.toFixed(2)
+      let sumAmount = Number(0)
+      let sumQuantity = Number(0)
+      //合计金额
+      cardList[index].sumAmount = sumAmount
+      cardList[index].sumQuantity = sumQuantity
+      formData.sumAmount = sumAmount
+      formData.sumQuantity = sumQuantity
+      formData.intoingAmt = sumAmount
+      formData.intoingQty = sumQuantity
     }
-    if (contentList.length > 0) {
-      contentList[contentList.length-1].content = sumReturnAmt.toFixed(2)
-    }
-    let beforeSumAmount = this.data.beforeSumAmount
-    let afterSumAmount = beforeSumAmount - sumReturnAmt
+    contentSaveList.forEach(card => {
+      console.log('card', card)
+      if (card.code === 'sumAmount') {
+        card.content = Number(formData.sumAmount)
+      }
+    })
     this.setData({
-      afterSumAmount: afterSumAmount,
       cardList: cardList,
-      contentList: contentList,
-      formData: JSON.stringify(formData),
-      sumReturnAmt: sumReturnAmt.toFixed(2),
-      sumReturnQty: sumReturnQty,
+      contentSaveList: contentSaveList,
+      formData: JSON.stringify(formData)
     })
-    if (this.data.formType !== 'edit') {
-      this.calculationSalesUsableQty()
-    }
-    // this.calculationSalesUsableQty()
   },
   /**
    * @desc :   自动办理事件
@@ -365,27 +480,35 @@ Page({
     this.calculateTotal()
   },
 
-
   //计算可售量相关
   calculationSalesUsableQty() {
     let formData = JSON.parse(this.data.formData)
     formData.goodsList.forEach(res => {
-      //选择的数量大于可售量
-      if (Math.abs(res.itemQty) > res.usableQty) {
-        res['usableQtyInsufficientFlag'] = true  //可售量不足
-        res['usableQty'] = res.usableQty  //可售量
+      if (res.invId) {
+        //选择的数量大于可售量
+        if (Math.abs(res.outQty) > res.usableQty) {
+          res['usableQtyInsufficientFlag'] = true //可售量不足
+          res['usableQty'] = res.usableQty //可售量
+          res['titpsItemColorFlagKey'] = true
+          res['titpsLabel'] = '缺货'
+        } else {
+          res['usableQtyInsufficientFlag'] = false //可售量不足
+          res['usableQty'] = res.usableQty //可售量
+          res['titpsItemColorFlagKey'] = false
+          res['titpsLabel'] = '有货'
+        }
       } else {
-        res['usableQtyInsufficientFlag'] = false  //可售量不足
-        res['usableQty'] = res.usableQty  //可售量
+        res['titpsItemColorFlagKey'] = true
+        res['titpsLabel'] = '缺货'
       }
+
     })
     let usableQtyInsufficientFlagList = formData.goodsList.filter(item => {
       return item.usableQtyInsufficientFlag
     })
     this.setData({
       formData: JSON.stringify(formData),
-      goodsTagText: usableQtyInsufficientFlagList.length > 0 ? '备货不足' : '备货齐套', //
-      goodsTagColor: usableQtyInsufficientFlagList.length > 0 ? '#E4002B' : null  //设置颜色
+      goodsTagColor: usableQtyInsufficientFlagList.length > 0 ? '#E4002B' : null //设置颜色
     })
   },
   /**
@@ -402,6 +525,7 @@ Page({
           goodsList: data.choooseInboundItemList
         }
         let item = data.item ? JSON.parse(data.item) : null
+        console.log('item', item)
         if (item) {
           formData.fromNo = item.fromNo
           formData.supId = item.supId
@@ -479,18 +603,18 @@ Page({
   loadInit() {
 
     let flgHandleSetting = this.data.flgHandleSetting //true为自动办理  false 为手动办理
-    let contentList = this.data.contentList
+    let contentSaveList = this.data.contentSaveList
     if (flgHandleSetting) { //系统参数中的自动办理参数  隐藏左下角cheakbox
       // 使用 filter 方法删除 code 为 flag 的项  
-      contentList = contentList.filter(item => item.code !== 'flag');
+      contentSaveList = contentSaveList.filter(item => item.code !== 'flag');
       this.setData({
-        contentList: contentList,
+        contentSaveList: contentSaveList,
       })
     }
     if (this.data.formMode != Constants.formMode.edit) {
       let formData = JSON.parse(this.data.formData)
       formData.intoDate = utils.formatDayTime(new Date())
-      if(this.data.formReturnMode == 'supplier'){
+      if (this.data.formReturnMode == 'supplier') {
         //供应商详情跳转来的 新建
         formData.supId = this.data.item.supId
         formData.supName = this.data.item.supName

+ 4 - 3
package-purchase/pages/purchase-return/add/add.wxml

@@ -35,8 +35,9 @@
   </view>
 </view>
 
-<dk-form-bill id="{{formName}}" routeObjName="{{routeObjName}}" type="purReturn" cardList="{{cardList}}"  titleCol="skuModel" titleTagCol="brandName"  showPopFlag="{{showPopFlag}}" descCol="skuName" priceCol="priceReturn" quantityCol="itemQty" quantityMin="itemQtyMin" quantityMax="itemQtyMax" sumAmountCol="sumReturnAmt" bind:chooseData="chooseData" saleStaffAndOrgFlag="{{true}}" contentObj="{{contentObj}}" model:value="{{formData}}" popType="sale" bind:setGoods="setGoods"  iconCol="imagesUrl"  bind:delItem="delItem" staff="staff" org="org" bind:onStepper="onChangeStepper" quantityMin="itemQtyMin" quantityMax="itemQtyMax" stepperFlag="{{stepperFlag}}" cardContentList="{{cardContentList}}" quantityRedTitle="可售量:" quantityRedCol="usableQty" swipeDisabled="swipeDisabled" quantityRedColFlagKey="usableQtyInsufficientFlag" goodsTagText="{{goodsTagText}}" goodsTagColor="{{goodsTagColor}}">
-</dk-form-bill>
+<dk-form-bill type="purReturn" id="{{formName}}" routeObjName="{{routeObjName}}" cardList="{{cardList}}"  titleCol="skuModel" subCol="calculationFormula" descCol="skuName" priceCol="priceInto" quantityCol="intoingQty" sumAmountCol="sumAmount" discountStandardCol="saleDiscount" pupPriceCol="sumPrice" contentObj="{{contentObj}}" iconCol="imagesUrl" model:value="{{formData}}" popContent="{{popContent}}" bind:chooseData="chooseData" bind:setGoods="setGoods" table="{{table}}" bind:editItems="setGoods"  bind:openChoosedItemInfo="openChoosedItemInfo" deleteName="deleteItemList" bind:customersChoose="customersChoose" popType="sale" priceTitle="" satffAndOrgReadonly="{{satffAndOrgReadonly}}" staff="staff" org="org" popupTopObj="{{popupTopObj}}" cardContentList="{{cardContentList}}" quantityRedTitle="可售量:" quantityRedCol="usableQty" quantityRedColFlagKey="usableQtyInsufficientFlag" goodsTagText="{{goodsTagText}}" goodsTagColor="{{goodsTagColor}}" titpsFlag="{{titpsFlag}}" titpsItemColorFlagKey="titpsItemColorFlagKey" titpsLabel="titpsLabel" titleTagCol="brandName">
+</dk-form-bill> 
+
 
 
 
@@ -63,4 +64,4 @@
 </van-popup>
 <van-dialog id="van-dialog" />
 <!-- 新建按钮 -->
-<dk-save-button model:value="{{btnFormData}}" btnAutoWidthFlag="{{false}}" btnRightFlag="{{true}}" buttonList="{{buttonList}}" contentList="{{contentList}}" bind:open="save" bind:change="saveChange"></dk-save-button>
+<dk-save-button model:value="{{btnFormData}}" btnAutoWidthFlag="{{false}}" btnRightFlag="{{true}}" buttonList="{{buttonList}}" contentList="{{contentSaveList}}" bind:open="save" bind:change="saveChange"></dk-save-button>

+ 2 - 3
package-purchase/pages/purchase-return/purchase-return.js

@@ -9,6 +9,7 @@ Page({
    */
   data: {
     isfirst: true,
+    inboundSaleReturnService: app.globalData['inboundSaleReturnService'],
      // 系统参数
      flgHandleSetting: app.globalData.setting[Constants.settingCode.IVT001] == "true" ? true : false,
      tagList: [{ title: mixins.$t("all"), code: '' }, { title: mixins.$t("inBoundingIntoStatusName"), code: mixins.$t("inBoundingIntoStatus")  }, { title: mixins.$t("inBoundedIntoStatusName"), code: mixins.$t("inBoundedIntoStatus")  }],
@@ -239,9 +240,7 @@ onChangeTabs(e) {
     this.setData({
       loading: true
     })
-    return this.excute(this.data.service, this.data.service.cancel, {
-      intoId: e.intoId
-    }).then(res => {
+    return this.excute(this.data.inboundSaleReturnService, this.data.inboundSaleReturnService.inboundRepeal+e.intoId, {}).then(res => {
       if (res.data.code == Constants.SUCESS_CODE) {
         wx.showToast({
           title: mixins.$t('invalidSuccessfully'),