Browse Source

Merge remote-tracking branch 'origin/master'

master
God 10 months ago
parent
commit
b10b5c4bcb
  1. 28
      yxt-as-ui/src/views/operation/merchandisereturn/merchandisereturn.vue
  2. 281
      yxt-as-ui/src/views/operation/merchandisereturn/merchandisereturnAdd.vue
  3. 102
      yxt-as-ui/src/views/operation/merchandisereturn/merchandisereturnInfo.vue
  4. 2
      yxt-as-ui/src/views/operation/repairbill/repairbillAdd.vue
  5. 11
      yxt-as-ui/src/views/operation/salesticket/salesticketAdd.vue
  6. 44
      yxt-as-ui/src/views/purchase/procurement/procurementAdd.vue
  7. 12
      yxt-as-ui/src/views/purchase/procurement/procurementInfo.vue
  8. 4
      yxt-as-ui/src/views/purchase/procurement/relation/chooseproducts.vue
  9. 10
      yxt-as-ui/src/views/workFlow/caigouFlow/procurementDaiBan.vue
  10. 41
      yxt-as-ui/src/views/workFlow/caigouFlow/procurementEdit.vue
  11. 10
      yxt-as-ui/src/views/workFlow/caigouFlow/procurementYiBan.vue
  12. 4
      yxt-as-ui/src/views/workFlow/caigouFlow/relation/chooseproducts.vue
  13. 84
      yxt-as-ui/src/views/workFlow/shangpintuihuoFlow/merchandisereturnDaiBan.vue
  14. 259
      yxt-as-ui/src/views/workFlow/shangpintuihuoFlow/merchandisereturnEdit.vue
  15. 84
      yxt-as-ui/src/views/workFlow/shangpintuihuoFlow/merchandisereturnYiBan.vue
  16. 19
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillRest.java
  17. 40
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java
  18. 5
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SalesGoodsVo.java
  19. 4
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillMapper.xml
  20. 5
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsWmsInventorySalesVo.java
  21. 6
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbilldetail/SmsSalesBillDetail.java
  22. 11
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SalesGoodsReturnVo.java
  23. 27
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsGoodsDetailsVo.java
  24. 2
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsSalesReturn.java
  25. 2
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsSalesReturnMapper.java
  26. 6
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsSalesReturnMapper.xml
  27. 4
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsSalesReturnNewDetailsVo.java
  28. 33
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsSalesReturnNewDto.java
  29. 380
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsSalesReturnService.java
  30. 10
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturndetail/SmsSalesReturnDetail.java
  31. 2
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturndetail/SmsSalesReturnDetailMapper.java
  32. 14
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturndetail/SmsSalesReturnDetailMapper.xml
  33. 4
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturndetail/SmsSalesReturnDetailService.java
  34. 4
      yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturnitem/SmsSalesReturnItem.java
  35. 8
      yxt-sms-biz/src/main/java/com/yxt/sms/feign/as/asbusrepairbill/AsBusrepairBillFeign.java
  36. 42
      yxt-sms-biz/src/main/java/com/yxt/sms/feign/as/asbusrepairbill/AsBusrepairBillInvoice.java
  37. 92
      yxt-sms-biz/src/main/java/com/yxt/sms/feign/as/asbusrepairbill/AsBusrepairInventorybillDetail.java
  38. 4
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventory.java

28
yxt-as-ui/src/views/operation/merchandisereturn/merchandisereturn.vue

@ -22,14 +22,14 @@
<el-input v-model="listQuery.params.billNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="申请日期">
<el-date-picker v-model="listQuery.params.createTimeStart" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<el-date-picker v-model="listQuery.params.startDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.createTimeEnd" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<el-date-picker v-model="listQuery.params.endDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="办结日期">
<el-date-picker v-model="listQuery.params.closeDateStart" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<el-date-picker v-model="listQuery.params.colesStartDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.closeDateEnd" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<el-date-picker v-model="listQuery.params.colesEndDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
@ -66,8 +66,8 @@
<el-table-column prop="createByName" label="申请人" align="center" width="120" />
<el-table-column prop="createTime" label="申请日期" align="center" width="120" />
<el-table-column prop="closeDate" label="办结日期" align="center" width="120" />
<el-table-column prop="invoiceName" label="合计金额" align="center" width="100" />
<el-table-column prop="invoiceValue" label="应付金额" align="center" width="100" />
<el-table-column prop="totalAmount" label="合计金额" align="center" width="100" />
<el-table-column prop="payableAmount" label="应付金额" align="center" width="100" />
</el-table>
</div>
<!--End 主页面主要部分-->
@ -155,10 +155,10 @@ export default {
deptName: '',
createByName: '',
billNo: '',
createTimeStart: '',
createTimeEnd: '',
closeDateStart: '',
closeDateEnd: '',
startDate: '',
endDate: '',
colesStartDate: '',
colesEndDate: '',
invoiceName: '',
invoiceValue: '',
createBySid: '',
@ -276,10 +276,10 @@ export default {
deptName: '',
createByName: '',
billNo: '',
createTimeStart: '',
createTimeEnd: '',
closeDateStart: '',
closeDateEnd: '',
startDate: '',
endDate: '',
colesStartDate: '',
colesEndDate: '',
invoiceName: '',
invoiceValue: '',
createBySid: '',

281
yxt-as-ui/src/views/operation/merchandisereturn/merchandisereturnAdd.vue

@ -26,6 +26,20 @@
<el-form-item><span class="addinputInfo">{{ formobj.createTime }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">收款账号</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.accountNumber" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">账户名称</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.account" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">开户行</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.accountBank" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
@ -75,16 +89,10 @@
<el-form-item><span class="addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerOrg }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">合计金额</div>
<el-form-item><span class="addinputInfo"> = 工时费 + 材料费 + 附加费 + 税额</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.totalAmount }} = 工时费 + 材料费{{ formobj.goodsAmount }} + 附加费{{ formobj.addAmount }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
@ -94,20 +102,66 @@
</el-col>
</el-row>
<div v-show="formobj.type == '0'">
<div class="title titleOne">服务项目</div>
<div class="title titleOne">维修项目</div>
<el-table :key="sitemKey" :data="formobj.sitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column fixed label="操作" align="center" width="100">
<template>
<el-button type="primary" size="small">退</el-button>
<el-button type="primary" size="small" @click="sitemReturn(scope.row, scope.$index)">退</el-button>
</template>
</el-table-column>
<el-table-column prop="serviceItem" label="服务项目" align="center" width="300" />
<el-table-column prop="serviceItem" label="维修项目" align="center" width="300" />
<el-table-column prop="serviceType" label="工种" align="center" width="150" />
<el-table-column prop="manufacturerName" label="厂家" align="center" width="150" />
<el-table-column prop="subject" label="科目" align="center" width="100" />
<el-table-column prop="repairerName" label="维修人" align="center" width="100" />
<el-table-column prop="examineHourPrice" label="考核工时" align="center" width="100" />
<el-table-column prop="repairerName" label="维修技师" align="center" width="100" />
<el-table-column prop="examineHourPrice" label="工时提成" align="center" width="100" />
<el-table-column prop="hourPrice" label="工时单价" align="center" width="100" />
<el-table-column prop="hours" label="工时数" align="center" width="140" />
<el-table-column prop="price" label="销售价" align="center" width="120" />
<el-table-column prop="discount" label="折扣" align="center" width="120" />
<el-table-column prop="discountAmount" label="优惠" align="center" width="120" />
<el-table-column prop="amount" label="金额" align="center" width="100" />
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
</div>
<div v-show="formobj.type =='1'">
<div class="title">
<span v-show="formobj.type == '0'">维修领料</span>
<span v-show="formobj.type == '1'">商品列表</span>
</div>
<el-table :key="goodsKey" :data="formobj.goodsDetailsVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column fixed label="操作" align="center" width="100">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="goodsReturn(scope.row, scope.$index)">退</el-button>
</template>
</el-table-column>
<el-table-column prop="goodsSpuName" label="商品名称" align="center" width="300" />
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="150" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="150" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="billObjName" label="供应商" align="center" width="100" />
<el-table-column prop="price" label="销售价" align="center" width="100" />
<el-table-column prop="count" label="数量" align="center" width="100" />
<el-table-column prop="discount" label="折扣" align="center" width="120" />
<el-table-column prop="discountAmount" label="优惠" align="center" width="120" />
<el-table-column prop="amount" label="金额" align="center" width="100" />
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
</div>
<div class="title">退货信息</div>
<div v-show="formobj.returnSitemVos.length > 0">
<div class="title">维修项目</div>
<el-table :key="sitemReturnKey" :data="formobj.returnSitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>`
<el-table-column fixed label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button type="danger" size="mini" @click="sitemDelete(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column prop="serviceItem" label="维修项目" align="center" width="300" />
<el-table-column prop="serviceType" label="工种" align="center" width="150" />
<el-table-column prop="repairerName" label="维修技师" align="center" width="100" />
<el-table-column prop="examineHourPrice" label="工时提成" align="center" width="100" />
<el-table-column prop="hourPrice" label="工时单价" align="center" width="100" />
<el-table-column prop="hours" label="工时数" align="center" width="140" />
<el-table-column prop="price" label="销售价" align="center" width="120" />
@ -117,38 +171,27 @@
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
</div>
<div class="title">商品列表</div>
<el-table :key="goodsKey" :data="formobj.goodsDetailsVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column fixed label="操作" align="center" width="100">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="goodsReturn(scope.row, scope.$index)">退</el-button>
</template>
</el-table-column>
<el-table-column prop="goodsSpuName" label="商品名称" align="center" width="300" />
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="150" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="150" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="manufacturerName" label="厂家" align="center" width="100" />
<el-table-column prop="price" label="销售价" align="center" width="100" />
<el-table-column prop="count" label="数量" align="center" width="100" />
<el-table-column prop="amount" label="已出库" align="center" width="140" />
<el-table-column prop="discount" label="折扣" align="center" width="120" />
<el-table-column prop="discountAmount" label="优惠" align="center" width="120" />
<el-table-column prop="amount" label="金额" align="center" width="100" />
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
<div v-show="formobj.returnGoods.length > 0">
<div class="title titleOne">
<div>退货商品列表</div>
<el-button type="primary" size="mini" class="btntopblueline" @click="fullyWithdraw">整单全退</el-button>
<div>
<span v-show="formobj.type == '0'">维修用料</span>
<span v-show="formobj.type == '1'">商品列表</span>
</div>
<el-button type="primary" size="mini" class="btntopblueline" @click="fullyWithdraw">全退</el-button>
</div>
<el-table :key="tableKey" :data="formobj.returnGoods" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column fixed label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button type="danger" size="mini" @click="goodsDelete(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column prop="goodsSpuName" label="商品名称" align="center" width="300" />
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="150" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="150" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="billObjName" label="供应商" align="center" width="100" />
<el-table-column prop="price" label="销售单价" align="center" width="100" />
<el-table-column prop="currentCount" label="总数量" align="center" width="100" />
<el-table-column prop="returnedCount" label="已退数量" align="center" width="140" />
<el-table-column label="退货价" align="center" min-width="140">
@ -166,20 +209,8 @@
</div>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">合计金额</div>
<el-form-item><span class="addinputInfo"> = 工时费 + 材料费 + 附加费 + 税额</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">自费金额</div>
<el-form-item><span class="addinputInfo"> = 自费工时费 + 自费材料费 + 附加费 + 税额</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">应付金额</div>
<el-form-item><span class="addinputInfo"> = 自费金额 + 退优惠 - 抵扣欠款</span></el-form-item>
<div class="span-sty" style="border-right: 0px">退款金额</div>
<el-form-item><span class="addinputInfo">{{ tkjeCount }} = 工时费{{ thgsfCount }} + 材料费{{ thclfCount }} + 附加费0</span></el-form-item>
</el-col>
</el-row>
</el-form>
@ -231,7 +262,8 @@ export default {
dialogVisible: false,
tableKey: 1,
sitemKey: 2,
goodsKey: 3,
sitemReturnKey: 3,
goodsKey: 4,
index: 0,
formobj: {
type: '',
@ -253,20 +285,60 @@ export default {
waitorName: '',
customerName: '',
mobile: '',
customerOrg: '',
vehMark: '',
vinNo: '',
taskId: '',
instanceId: '',
payableAmount: '',
totalAmount: '',
hourAmount: '',
goodsAmount: '',
addAmount: '',
payableAmount: '',
payableHoursAmount: '',
payableGoodsAmount: '',
accountBank: '',
account: '',
accountNumber: '',
sitemVos: [],
goodsDetailsVos: [],
returnGoods: []
returnGoods: [],
returnSitemVos: []
},
rules: {}
}
},
computed: {},
computed: {
// 退
thgsfCount() {
let gsf = '0'
if (this.formobj.returnSitemVos.length > 0) {
this.formobj.returnSitemVos.forEach((e) => {
if (e.serviceItem !== '') {
gsf = Math.round((parseFloat(gsf) + parseFloat(e.amount)) * 100) / 100
}
})
}
return gsf
},
// 退
thclfCount() {
let clf = '0'
if (this.formobj.returnGoods.length > 0) {
this.formobj.returnGoods.forEach((e) => {
if (e.goodsSpuName !== '') {
clf = Math.round((parseFloat(clf) + parseFloat(e.backAmount !== '' ? e.backAmount : '0')) * 100) / 100
}
})
}
return clf
},
// 退
tkjeCount() {
let tkje = '0'
tkje = Math.round((parseFloat(this.thgsfCount) + parseFloat(this.thclfCount)) * 100) / 100
return tkje
}
},
methods: {
showAdd() {
this.viewTitle = '【新增】商品退货申请'
@ -299,6 +371,7 @@ export default {
req.fetchDetailsBySid(row.sid).then((res) => {
if (res.success) {
this.formobj = res.data
this.formobj.totalAmount = Math.round(parseFloat(this.formobj.hourAmount !== '' ? this.formobj.hourAmount : '0') + (parseFloat(this.formobj.goodsAmount !== '' ? this.formobj.goodsAmount : '0') + parseFloat(this.formobj.addAmount !== '' ? this.formobj.addAmount : '0')) * 100) / 100
}
})
},
@ -360,8 +433,11 @@ export default {
this.formobj.mobile = res.data.mobile
this.formobj.vehMark = res.data.vehMark
this.formobj.vinNo = res.data.vinNo
this.formobj.customerOrg = res.data.customerOrg
this.formobj.hourAmount = res.data.hourAmount
this.formobj.goodsAmount = res.data.goodsAmount
this.formobj.addAmount = res.data.addAmount
this.formobj.sitemVos = res.data.sitemVos
this.formobj.totalAmount = Math.round(parseFloat(this.formobj.hourAmount !== '' ? this.formobj.hourAmount : '0') + (parseFloat(this.formobj.goodsAmount !== '' ? this.formobj.goodsAmount : '0') + parseFloat(this.formobj.addAmount !== '' ? this.formobj.addAmount : '0')) * 100) / 100
this.formobj.goodsDetailsVos = res.data.goodsDetailsVos
}
})
@ -381,7 +457,10 @@ export default {
this.formobj.mobile = res.data.mobile
this.formobj.vehMark = res.data.vehMark
this.formobj.vinNo = res.data.vinNo
this.formobj.customerOrg = res.data.customerOrg
this.formobj.hourAmount = '0'
this.formobj.goodsAmount = res.data.goodsAmount
this.formobj.addAmount = res.data.addAmount
this.formobj.totalAmount = Math.round(parseFloat(this.formobj.hourAmount !== '' ? this.formobj.hourAmount : '0') + (parseFloat(this.formobj.goodsAmount !== '' ? this.formobj.goodsAmount : '0') + parseFloat(this.formobj.addAmount !== '' ? this.formobj.addAmount : '0')) * 100) / 100
this.formobj.goodsDetailsVos = res.data.goodsDetailsVos
}
})
@ -390,7 +469,41 @@ export default {
resetState() {
this.viewState = 1
},
sitemReturn(row, index) {
if (this.formobj.returnSitemVos.length !== 0) {
for (var i = 0; i < this.formobj.returnSitemVos.length; i++) {
if (this.formobj.returnSitemVos[i].itemLinkSid === row.itemLinkSid) {
this.$message({ showClose: true, type: 'error', message: '该记录已在退货中,请勿重复退货' })
return
}
}
}
this.formobj.returnSitemVos.push({
serviceItemSid: row.serviceItemSid,
serviceItem: row.serviceItem,
serviceTypeSid: row.serviceTypeSid,
serviceType: row.serviceType,
examineHourPrice: row.examineHourPrice,
hourPrice: row.hourPrice,
hours: row.hours,
price: row.price,
discount: row.discount,
discountAmount: row.discountAmount,
amount: row.amount,
remarks: row.remarks,
repairerName: row.repairerName,
itemLinkSid: row.itemLinkSid
})
},
goodsReturn(row, index) {
if (this.formobj.returnGoods.length !== 0) {
for (var i = 0; i < this.formobj.returnGoods.length; i++) {
if (this.formobj.returnGoods[i].goodsLinkSid === row.goodsLinkSid) {
this.$message({ showClose: true, type: 'error', message: '该记录已在退货中,请勿重复退货' })
return
}
}
}
this.formobj.returnGoods.push({
goodsID: row.goodsID,
goodSpuSid: row.sid,
@ -402,11 +515,19 @@ export default {
goodsSkuOwnSpec: row.goodsSkuOwnSpec,
currentCount: row.count,
returnedCount: row.returnedCount,
billObjName: row.billObjName,
billObjSid: row.billObjSid,
manufacturerName: row.manufacturerName,
manufacturerSid: row.manufacturerSid,
price: row.price,
backCount: '',
backPrice: '',
backAmount: ''
backAmount: '',
goodsLinkSid: row.goodsLinkSid
})
this.formobj.goodsDetailsVos.splice(index, 1)
},
sitemDelete(index) {
this.formobj.returnSitemVos.splice(index, 1)
},
fullyWithdraw() {
if (this.formobj.returnGoods.length > 0) {
@ -420,6 +541,9 @@ export default {
})
}
},
goodsDelete(index) {
this.formobj.returnGoods.splice(index, 1)
},
// 退
backAmountInput(row) {
if (row.goodsSpuName !== '') {
@ -429,6 +553,13 @@ export default {
saveOrUpdate() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.formobj.payableHoursAmount = this.thgsfCount
this.formobj.payableGoodsAmount = this.thclfCount
this.formobj.payableAmount = this.tkjeCount
if (this.formobj.payableAmount === '0') {
this.$message({ showClose: true, type: 'error', message: '退款金额不能为零' })
return
}
this.submitdisabled = true
req.saveOrUpdate(this.formobj).then((res) => {
if (res.success) {
@ -446,6 +577,13 @@ export default {
submit() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.formobj.payableHoursAmount = this.thgsfCount
this.formobj.payableGoodsAmount = this.thclfCount
this.formobj.payableAmount = this.tkjeCount
if (this.formobj.payableAmount === '0') {
this.$message({ showClose: true, type: 'error', message: '退款金额不能为零' })
return
}
this.submitdisabled = true
req.submit(this.formobj).then((res) => {
if (res.success) {
@ -482,15 +620,24 @@ export default {
waitorName: '',
customerName: '',
mobile: '',
customerOrg: '',
vehMark: '',
vinNo: '',
taskId: '',
instanceId: '',
payableAmount: '',
totalAmount: '',
hourAmount: '',
goodsAmount: '',
addAmount: '',
payableAmount: '',
payableHoursAmount: '',
payableGoodsAmount: '',
accountBank: '',
account: '',
accountNumber: '',
sitemVos: [],
goodsDetailsVos: [],
returnGoods: []
returnGoods: [],
returnSitemVos: []
}
this.submitdisabled = false
this.$emit('doback')
@ -506,10 +653,6 @@ export default {
.addinputInfo {
margin-left: 120px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
.titleOne {
padding: 7px;
display: flex;
@ -517,6 +660,10 @@ export default {
justify-content: space-between;
align-items: center;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .el-radio-group {
display: inline;
line-height: 1px;

102
yxt-as-ui/src/views/operation/merchandisereturn/merchandisereturnInfo.vue

@ -23,6 +23,20 @@
<el-form-item><span class="addinputInfo">{{ formobj.createTime }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">收款账号</div>
<el-form-item><span class="addinputInfo">{{ formobj.accountNumber }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">账户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.account }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">开户行</div>
<el-form-item><span class="addinputInfo">{{ formobj.accountBank }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
@ -74,18 +88,47 @@
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerOrg }}</span></el-form-item>
<div class="span-sty" style="border-right: 0px">合计金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.totalAmount }} = 工时费{{ formobj.hourAmount }} + 材料费{{ formobj.goodsAmount }} + 附加费{{ formobj.addAmount }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">应收金额</div>
<el-form-item><span class="addinputInfo"> = 合计优惠 + 已收金额 + 欠款 + 退款抵欠款</span></el-form-item>
</el-col>
</el-row>
<div class="title">退货信息</div>
<div v-show="formobj.returnSitemVos.length > 0">
<div class="title">维修项目</div>
<el-table :key="sitemReturnKey" :data="formobj.returnSitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>`
<el-table-column prop="serviceItem" label="维修项目" align="center" width="300" />
<el-table-column prop="serviceType" label="工种" align="center" width="150" />
<el-table-column prop="repairerName" label="维修技师" align="center" width="100" />
<el-table-column prop="examineHourPrice" label="工时提成" align="center" width="100" />
<el-table-column prop="hourPrice" label="工时单价" align="center" width="100" />
<el-table-column prop="hours" label="工时数" align="center" width="140" />
<el-table-column prop="price" label="销售价" align="center" width="120" />
<el-table-column prop="discount" label="折扣" align="center" width="120" />
<el-table-column prop="discountAmount" label="优惠" align="center" width="120" />
<el-table-column prop="amount" label="金额" align="center" width="100" />
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
</div>
<div v-show="formobj.returnGoods.length > 0">
<div class="title">退货商品列表</div>
<div class="title">
<span v-show="formobj.type == '0'">维修用料</span>
<span v-show="formobj.type == '1'">商品列表</span>
</div>
<el-table :key="tableKey" :data="formobj.returnGoods" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="goodsSpuName" label="商品名称" align="center" width="300" />
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="150" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="150" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="billObjName" label="供应商" align="center" width="100" />
<el-table-column prop="price" label="销售价" align="center" width="100" />
<el-table-column prop="currentCount" label="总数量" align="center" width="100" />
<el-table-column prop="returnedCount" label="已退数量" align="center" width="140" />
<el-table-column prop="backPrice" label="退货价" align="center" min-width="140" />
@ -95,20 +138,8 @@
</div>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">合计金额</div>
<el-form-item><span class="addinputInfo"> = 工时费 + 材料费 + 附加费 + 税额</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">自费金额</div>
<el-form-item><span class="addinputInfo"> = 自费工时费 + 自费材料费 + 附加费 + 税额</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">应付金额</div>
<el-form-item><span class="addinputInfo"> = 自费金额 + 退优惠 - 抵扣欠款</span></el-form-item>
<div class="span-sty" style="border-right: 0px">退款金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.payableAmount }} = 工时费{{ formobj.payableHoursAmount }} + 材料费{{ formobj.payableGoodsAmount }} + 附加费0</span></el-form-item>
</el-col>
</el-row>
</el-form>
@ -127,8 +158,7 @@ export default {
viewTitle: '',
viewState: 1,
tableKey: 1,
sitemKey: 2,
goodsKey: 3,
sitemReturnKey: 2,
index: 0,
formobj: {
type: '',
@ -150,15 +180,24 @@ export default {
waitorName: '',
customerName: '',
mobile: '',
customerOrg: '',
vehMark: '',
vinNo: '',
taskId: '',
instanceId: '',
payableAmount: '',
totalAmount: '',
hourAmount: '',
goodsAmount: '',
addAmount: '',
payableAmount: '',
payableHoursAmount: '',
payableGoodsAmount: '',
accountBank: '',
account: '',
accountNumber: '',
sitemVos: [],
goodsDetailsVos: [],
returnGoods: []
returnGoods: [],
returnSitemVos: []
},
rules: {}
}
@ -173,11 +212,11 @@ export default {
req.fetchDetailsBySid(row.sid).then((res) => {
if (res.success) {
this.formobj = res.data
this.formobj.totalAmount = Math.round(parseFloat(this.formobj.hourAmount !== '' ? this.formobj.hourAmount : '0') + (parseFloat(this.formobj.goodsAmount !== '' ? this.formobj.goodsAmount : '0') + parseFloat(this.formobj.addAmount !== '' ? this.formobj.addAmount : '0')) * 100) / 100
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
handleReturn() {
this.formobj = {
type: '',
sid: '',
@ -198,15 +237,24 @@ export default {
waitorName: '',
customerName: '',
mobile: '',
customerOrg: '',
vehMark: '',
vinNo: '',
taskId: '',
instanceId: '',
payableAmount: '',
totalAmount: '',
hourAmount: '',
goodsAmount: '',
addAmount: '',
payableAmount: '',
payableHoursAmount: '',
payableGoodsAmount: '',
accountBank: '',
account: '',
accountNumber: '',
sitemVos: [],
goodsDetailsVos: [],
returnGoods: []
returnGoods: [],
returnSitemVos: []
}
this.$emit('doback')
}

2
yxt-as-ui/src/views/operation/repairbill/repairbillAdd.vue

@ -86,7 +86,7 @@
<el-col :span="8">
<div class="span-sty">班组</div>
<el-form-item>
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修'" v-model="formobj.groupSid" placeholder="请选择" @change="groupChange" clearable filterable>
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.groupSid" placeholder="请选择" @change="groupChange" clearable filterable>
<el-option v-for="item in group_list" :key="item.groupSid" :label="item.groupName" :value="item.groupSid"></el-option>
</el-select>
</el-form-item>

11
yxt-as-ui/src/views/operation/salesticket/salesticketAdd.vue

@ -619,7 +619,12 @@ export default {
warehouseRackSid: '',
billObjName: '', //
billObjSid: '',
manufacturerName: '', //
manufacturerSid: '',
count: '', // /退
goodsDetailsPrice: '', //
isTaxRate: '', //
inventorySid: '', // sid
price: '', //
discount: '', // (0-10010)
discountAmount: '', // (=*(1-*0.1) )
@ -661,9 +666,12 @@ export default {
row.warehouseRackSid = value.warehouseRackSid
row.billObjName = value.billObjName
row.billObjSid = value.billObjSid
row.manufacturerName = value.manufacturerName
row.manufacturerSid = value.manufacturerSid
row.count = value.count
row.goodsDetailsPrice = value.price
row.isTaxRate = value.isTaxRate
row.inventorySid = value.inventorySid
if (this.formobj.invoiceVo.isInvoicing === '1') {
if (row.isTaxRate === '0') {
// =
@ -702,7 +710,8 @@ export default {
subjoinAdd() {
this.formobj.aitemVos.push({
aitemSid: '',
aitemName: '',
aitemName: '', //
aitemPrice: '', //
price: ''
})
},

44
yxt-as-ui/src/views/purchase/procurement/procurementAdd.vue

@ -113,10 +113,19 @@
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-col :span="8">
<div class="span-sty">备注</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.remarks" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">采购人</div>
<el-form-item>
<span class="addinputInfo" v-if="formobj.purchaseTypeValue == '代理库'">{{ formobj.purchasingAgent }}</span>
<el-select class="addinputInfo" v-else v-model="formobj.purchasingAgentSid" placeholder="请选择" @change="purchasingAgentChange" clearable filterable>
<el-option v-for="item in purchasingAgent_list" :key="item.sid" :label="item.name" :value="item.sid"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">预计到货日期</div>
<el-form-item><el-date-picker class="addinputInfo" v-model="formobj.deliveryDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期" /></el-form-item>
@ -207,6 +216,7 @@
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="200" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="200" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="manufacturerName" label="厂家" align="center" width="100" />
<el-table-column label="采购数量" align="center" width="150">
<template slot-scope="scope">
<el-input @input="amountInput(scope.row)" @keyup.native="scope.row.count = getNumber(scope.row.count, 2)" v-model="scope.row.count" clearable placeholder="" />
@ -247,7 +257,7 @@
<script>
import req from '@/api/purchase/procurement'
import uploadImg from '@/components/uploadFile/uploadImg'
import { typeValues, getOrgSidByPath, choiceSupplierInfo } from '@/api/Common/dictcommons'
import { typeValues, getOrgSidByPath, choiceSupplierInfo, selAllByOrgSidPath } from '@/api/Common/dictcommons'
import chooseproducts from './relation/chooseproducts'
export default {
@ -265,6 +275,7 @@ export default {
index: 0,
accept: '.jpg,.jpeg,.png',
procurementType_list: [],
purchasingAgent_list: [],
operateBrand_list: [],
procurementReason_list: [],
paymentMethod_list: [],
@ -285,6 +296,8 @@ export default {
purchaseTypeValue: '',
purchaseReasonKey: '',
purchaseReasonValue: '',
purchasingAgent: '',
purchasingAgentSid: '',
payTypeKey: '',
payTypeValue: '',
errorAmount: '',
@ -307,6 +320,7 @@ export default {
nodeState: '',
taskId: '',
finishTime: '',
orgPath: '',
useOrgSid: '',
useOrgName: '',
createOrgSid: '',
@ -441,6 +455,11 @@ export default {
this.supplier_list = resp.data
}
})
selAllByOrgSidPath({ orgSidPath: window.sessionStorage.getItem('defaultOrgPath') }).then((res) => {
if (res.success) {
this.purchasingAgent_list = res.data
}
})
},
showAdd() {
this.viewTitle = '【新增】采购单'
@ -499,6 +518,14 @@ export default {
} else {
this.formobj.purchaseTypeKey = ''
}
if (this.formobj.purchaseTypeValue === '代理库') {
// =
this.formobj.purchasingAgent = this.formobj.createByName
this.formobj.purchasingAgentSid = this.formobj.createBySid
} else {
this.formobj.purchasingAgent = ''
this.formobj.purchasingAgentSid = ''
}
},
operateBrandChange(value) {
const choose = this.operateBrand_list.filter((item) => item.dictValue === value)
@ -550,6 +577,14 @@ export default {
this.formobj.manufacturersOrderTypeValue = ''
}
},
purchasingAgentChange(value) {
const choose = this.purchasingAgent_list.filter((item) => item.sid === value)
if (choose !== null && choose.length > 0) {
this.formobj.purchasingAgent = choose[0].name
} else {
this.formobj.purchasingAgent = ''
}
},
isInvoicingChange(val) {
if (val === '1') {
const choose = this.supplier_list.filter((item) => item.sid === this.formobj.supplierSid)
@ -593,6 +628,8 @@ export default {
goodsSkuCode: e.goodsSkuCode,
goodsSkuOwnSpec: e.indexes,
unit: e.goodsUnitName,
manufacturerName: e.manufacturerName,
manufacturerSid: e.manufacturerSid,
warehouseSid: '',
warehouseName: '',
cost: '',
@ -673,6 +710,8 @@ export default {
purchaseTypeValue: '',
purchaseReasonKey: '',
purchaseReasonValue: '',
purchasingAgent: '',
purchasingAgentSid: '',
payTypeKey: '',
payTypeValue: '',
errorAmount: '',
@ -695,6 +734,7 @@ export default {
nodeState: '',
taskId: '',
finishTime: '',
orgPath: '',
useOrgSid: '',
useOrgName: '',
createOrgSid: '',

12
yxt-as-ui/src/views/purchase/procurement/procurementInfo.vue

@ -76,10 +76,14 @@
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-col :span="8">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">采购人</div>
<el-form-item><span class="addinputInfo">{{ formobj.purchasingAgent }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">预计到货日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.deliveryDate }}</span></el-form-item>
@ -149,6 +153,7 @@
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="200" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="200" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="manufacturerName" label="厂家" align="center" width="100" />
<el-table-column prop="count" label="采购数量" align="center" width="150" />
<el-table-column prop="taxPrice" v-if="formobj.purchaseBillInvoice.isInvoicing == '1'" label="含税单价(元)" align="center" min-width="150" />
<el-table-column prop="taxPrice" v-else label="不含税单价(元)" align="center" min-width="150" />
@ -196,6 +201,8 @@ export default {
purchaseTypeValue: '',
purchaseReasonKey: '',
purchaseReasonValue: '',
purchasingAgent: '',
purchasingAgentSid: '',
payTypeKey: '',
payTypeValue: '',
errorAmount: '',
@ -218,6 +225,7 @@ export default {
nodeState: '',
taskId: '',
finishTime: '',
orgPath: '',
useOrgSid: '',
useOrgName: '',
createOrgSid: '',
@ -319,6 +327,8 @@ export default {
purchaseTypeValue: '',
purchaseReasonKey: '',
purchaseReasonValue: '',
purchasingAgent: '',
purchasingAgentSid: '',
payTypeKey: '',
payTypeValue: '',
errorAmount: '',

4
yxt-as-ui/src/views/purchase/procurement/relation/chooseproducts.vue

@ -20,7 +20,7 @@
<el-form-item label="图号" class="searchlist">
<el-input v-model="listQuery.params.goodsSkuCode" placeholder="" clearable/>
</el-form-item>
<el-form-item label="供应商" class="searchlist">
<el-form-item label="厂家" class="searchlist">
<el-input v-model="listQuery.params.manufacturerName" placeholder="" clearable />
</el-form-item>
</el-form>
@ -42,7 +42,7 @@
<el-table-column prop="goodsSkuCode" label="图号" align="center" />
<el-table-column prop="indexes" label="规格" align="center" />
<el-table-column prop="goodsUnitName" label="单位" align="center" />
<el-table-column prop="manufacturerName" label="供应商" align="center" />
<el-table-column prop="manufacturerName" label="厂家" align="center" />
</el-table>
</div>
<div class="pages">

10
yxt-as-ui/src/views/workFlow/caigouFlow/procurementDaiBan.vue

@ -79,10 +79,14 @@
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-col :span="8">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">采购人</div>
<el-form-item><span class="addinputInfo">{{ formobj.purchasingAgent }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">预计到货日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.deliveryDate }}</span></el-form-item>
@ -152,6 +156,7 @@
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="200" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="200" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="manufacturerName" label="厂家" align="center" width="100" />
<el-table-column prop="count" label="采购数量" align="center" width="150" />
<el-table-column prop="taxPrice" v-if="formobj.purchaseBillInvoice.isInvoicing == '1'" label="含税单价(元)" align="center" min-width="150" />
<el-table-column prop="taxPrice" v-else label="不含税单价(元)" align="center" min-width="150" />
@ -238,6 +243,8 @@ export default {
purchaseTypeValue: '',
purchaseReasonKey: '',
purchaseReasonValue: '',
purchasingAgent: '',
purchasingAgentSid: '',
payTypeKey: '',
payTypeValue: '',
errorAmount: '',
@ -260,6 +267,7 @@ export default {
nodeState: '',
taskId: '',
finishTime: '',
orgPath: '',
useOrgSid: '',
useOrgName: '',
createOrgSid: '',

41
yxt-as-ui/src/views/workFlow/caigouFlow/procurementEdit.vue

@ -112,10 +112,19 @@
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-col :span="8">
<div class="span-sty">备注</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.remarks" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">采购人</div>
<el-form-item>
<span class="addinputInfo" v-if="formobj.purchaseTypeValue == '代理库'">{{ formobj.purchasingAgent }}</span>
<el-select class="addinputInfo" v-else v-model="formobj.purchasingAgentSid" placeholder="请选择" @change="purchasingAgentChange" clearable filterable>
<el-option v-for="item in purchasingAgent_list" :key="item.sid" :label="item.name" :value="item.sid"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">预计到货日期</div>
<el-form-item><el-date-picker class="addinputInfo" v-model="formobj.deliveryDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期" /></el-form-item>
@ -206,6 +215,7 @@
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="200" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="200" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="manufacturerName" label="厂家" align="center" width="100" />
<el-table-column label="采购数量" align="center" width="150">
<template slot-scope="scope">
<el-input @input="amountInput(scope.row)" @keyup.native="scope.row.count = getNumber(scope.row.count, 2)" v-model="scope.row.count" clearable placeholder="" />
@ -246,7 +256,7 @@
<script>
import req from '@/api/purchase/procurement'
import uploadImg from '@/components/uploadFile/uploadImg'
import { typeValues, choiceSupplierInfo } from '@/api/Common/dictcommons'
import { typeValues, choiceSupplierInfo, selAllByOrgSidPath } from '@/api/Common/dictcommons'
import chooseproducts from './relation/chooseproducts'
export default {
@ -264,6 +274,7 @@ export default {
index: 0,
accept: '.jpg,.jpeg,.png',
procurementType_list: [],
purchasingAgent_list: [],
operateBrand_list: [],
procurementReason_list: [],
paymentMethod_list: [],
@ -284,6 +295,8 @@ export default {
purchaseTypeValue: '',
purchaseReasonKey: '',
purchaseReasonValue: '',
purchasingAgent: '',
purchasingAgentSid: '',
payTypeKey: '',
payTypeValue: '',
errorAmount: '',
@ -306,6 +319,7 @@ export default {
nodeState: '',
taskId: '',
finishTime: '',
orgPath: '',
useOrgSid: '',
useOrgName: '',
createOrgSid: '',
@ -462,6 +476,11 @@ export default {
this.supplier_list = resp.data
}
})
selAllByOrgSidPath({ orgPath: this.formobj.orgPath }).then((res) => {
if (res.success) {
this.purchasingAgent_list = res.data
}
})
}
})
},
@ -490,6 +509,14 @@ export default {
} else {
this.formobj.purchaseTypeKey = ''
}
if (this.formobj.purchaseTypeValue === '代理库') {
// =
this.formobj.purchasingAgent = this.formobj.createByName
this.formobj.purchasingAgentSid = this.formobj.createBySid
} else {
this.formobj.purchasingAgent = ''
this.formobj.purchasingAgentSid = ''
}
},
operateBrandChange(value) {
const choose = this.operateBrand_list.filter((item) => item.dictValue === value)
@ -541,6 +568,14 @@ export default {
this.formobj.manufacturersOrderTypeValue = ''
}
},
purchasingAgentChange(value) {
const choose = this.purchasingAgent_list.filter((item) => item.sid === value)
if (choose !== null && choose.length > 0) {
this.formobj.purchasingAgent = choose[0].name
} else {
this.formobj.purchasingAgent = ''
}
},
isInvoicingChange(val) {
if (val === '1') {
const choose = this.supplier_list.filter((item) => item.sid === this.formobj.supplierSid)
@ -583,6 +618,8 @@ export default {
goodsSkuTitle: e.goodsSpuName,
goodsSkuCode: e.goodsSkuCode,
goodsSkuOwnSpec: e.indexes,
manufacturerName: e.manufacturerName,
manufacturerSid: e.manufacturerSid,
unit: e.goodsUnitName,
warehouseSid: '',
warehouseName: '',

10
yxt-as-ui/src/views/workFlow/caigouFlow/procurementYiBan.vue

@ -76,10 +76,14 @@
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-col :span="8">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">采购人</div>
<el-form-item><span class="addinputInfo">{{ formobj.purchasingAgent }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">预计到货日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.deliveryDate }}</span></el-form-item>
@ -149,6 +153,7 @@
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="200" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="200" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="manufacturerName" label="厂家" align="center" width="100" />
<el-table-column prop="count" label="采购数量" align="center" width="150" />
<el-table-column prop="taxPrice" v-if="formobj.purchaseBillInvoice.isInvoicing == '1'" label="含税单价(元)" align="center" min-width="150" />
<el-table-column prop="taxPrice" v-else label="不含税单价(元)" align="center" min-width="150" />
@ -196,6 +201,8 @@ export default {
purchaseTypeValue: '',
purchaseReasonKey: '',
purchaseReasonValue: '',
purchasingAgent: '',
purchasingAgentSid: '',
payTypeKey: '',
payTypeValue: '',
errorAmount: '',
@ -218,6 +225,7 @@ export default {
nodeState: '',
taskId: '',
finishTime: '',
orgPath: '',
useOrgSid: '',
useOrgName: '',
createOrgSid: '',

4
yxt-as-ui/src/views/workFlow/caigouFlow/relation/chooseproducts.vue

@ -20,7 +20,7 @@
<el-form-item label="图号" class="searchlist">
<el-input v-model="listQuery.params.goodsSkuCode" placeholder="" clearable/>
</el-form-item>
<el-form-item label="供应商" class="searchlist">
<el-form-item label="厂家" class="searchlist">
<el-input v-model="listQuery.params.manufacturerName" placeholder="" clearable />
</el-form-item>
</el-form>
@ -42,7 +42,7 @@
<el-table-column prop="goodsSkuCode" label="图号" align="center" />
<el-table-column prop="indexes" label="规格" align="center" />
<el-table-column prop="goodsUnitName" label="单位" align="center" />
<el-table-column prop="manufacturerName" label="供应商" align="center" />
<el-table-column prop="manufacturerName" label="厂家" align="center" />
</el-table>
</div>
<div class="pages">

84
yxt-as-ui/src/views/workFlow/shangpintuihuoFlow/merchandisereturnDaiBan.vue

@ -26,6 +26,20 @@
<el-form-item><span class="addinputInfo">{{ formobj.createTime }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">收款账号</div>
<el-form-item><span class="addinputInfo">{{ formobj.accountNumber }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">账户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.account }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">开户行</div>
<el-form-item><span class="addinputInfo">{{ formobj.accountBank }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
@ -77,18 +91,47 @@
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerOrg }}</span></el-form-item>
<div class="span-sty" style="border-right: 0px">合计金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.totalAmount }} = 工时费{{ formobj.hourAmount }} + 材料费{{ formobj.goodsAmount }} + 附加费{{ formobj.addAmount }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">应收金额</div>
<el-form-item><span class="addinputInfo"> = 合计优惠 + 已收金额 + 欠款 + 退款抵欠款</span></el-form-item>
</el-col>
</el-row>
<div class="title">退货信息</div>
<div v-show="formobj.returnSitemVos.length > 0">
<div class="title">维修项目</div>
<el-table :key="sitemReturnKey" :data="formobj.returnSitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>`
<el-table-column prop="serviceItem" label="维修项目" align="center" width="300" />
<el-table-column prop="serviceType" label="工种" align="center" width="150" />
<el-table-column prop="repairerName" label="维修技师" align="center" width="100" />
<el-table-column prop="examineHourPrice" label="工时提成" align="center" width="100" />
<el-table-column prop="hourPrice" label="工时单价" align="center" width="100" />
<el-table-column prop="hours" label="工时数" align="center" width="140" />
<el-table-column prop="price" label="销售价" align="center" width="120" />
<el-table-column prop="discount" label="折扣" align="center" width="120" />
<el-table-column prop="discountAmount" label="优惠" align="center" width="120" />
<el-table-column prop="amount" label="金额" align="center" width="100" />
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
</div>
<div v-show="formobj.returnGoods.length > 0">
<div class="title">退货商品列表</div>
<div class="title">
<span v-show="formobj.type == '0'">维修用料</span>
<span v-show="formobj.type == '1'">商品列表</span>
</div>
<el-table :key="tableKey" :data="formobj.returnGoods" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="goodsSpuName" label="商品名称" align="center" width="300" />
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="150" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="150" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="billObjName" label="供应商" align="center" width="100" />
<el-table-column prop="price" label="销售价" align="center" width="100" />
<el-table-column prop="currentCount" label="总数量" align="center" width="100" />
<el-table-column prop="returnedCount" label="已退数量" align="center" width="140" />
<el-table-column prop="backPrice" label="退货价" align="center" min-width="140" />
@ -98,20 +141,8 @@
</div>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">合计金额</div>
<el-form-item><span class="addinputInfo"> = 工时费 + 材料费 + 附加费 + 税额</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">自费金额</div>
<el-form-item><span class="addinputInfo"> = 自费工时费 + 自费材料费 + 附加费 + 税额</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">应付金额</div>
<el-form-item><span class="addinputInfo"> = 自费金额 + 退优惠 - 抵扣欠款</span></el-form-item>
<div class="span-sty" style="border-right: 0px">退款金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.payableAmount }} = 工时费{{ formobj.payableHoursAmount }} + 材料费{{ formobj.payableGoodsAmount }} + 附加费0</span></el-form-item>
</el-col>
</el-row>
</el-form>
@ -169,8 +200,7 @@ export default {
viewTitle: '',
viewState: 1,
tableKey: 1,
sitemKey: 2,
goodsKey: 3,
sitemReturnKey: 2,
index: 0,
formobj: {
type: '',
@ -192,15 +222,24 @@ export default {
waitorName: '',
customerName: '',
mobile: '',
customerOrg: '',
vehMark: '',
vinNo: '',
taskId: '',
instanceId: '',
payableAmount: '',
totalAmount: '',
hourAmount: '',
goodsAmount: '',
addAmount: '',
payableAmount: '',
payableHoursAmount: '',
payableGoodsAmount: '',
accountBank: '',
account: '',
accountNumber: '',
sitemVos: [],
goodsDetailsVos: [],
returnGoods: []
returnGoods: [],
returnSitemVos: []
},
rules: {},
options: [],
@ -279,6 +318,7 @@ export default {
req.fetchDetailsBySid(sid).then((res) => {
if (res.success) {
this.formobj = res.data
this.formobj.totalAmount = Math.round(parseFloat(this.formobj.hourAmount !== '' ? this.formobj.hourAmount : '0') + (parseFloat(this.formobj.goodsAmount !== '' ? this.formobj.goodsAmount : '0') + parseFloat(this.formobj.addAmount !== '' ? this.formobj.addAmount : '0')) * 100) / 100
}
})
selectStaffListss().then((res) => {

259
yxt-as-ui/src/views/workFlow/shangpintuihuoFlow/merchandisereturnEdit.vue

@ -25,6 +25,20 @@
<el-form-item><span class="addinputInfo">{{ formobj.createTime }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">收款账号</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.accountNumber" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">账户名称</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.account" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">开户行</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.accountBank" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
@ -74,16 +88,10 @@
<el-form-item><span class="addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerOrg }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">合计金额</div>
<el-form-item><span class="addinputInfo"> = 工时费 + 材料费 + 附加费 + 税额</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.totalAmount }} = 工时费 + 材料费{{ formobj.goodsAmount }} + 附加费{{ formobj.addAmount }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
@ -93,20 +101,67 @@
</el-col>
</el-row>
<div v-show="formobj.type == '0'">
<div class="title titleOne">服务项目</div>
<div class="title titleOne">维修项目</div>
<el-table :key="sitemKey" :data="formobj.sitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column fixed label="操作" align="center" width="100">
<template>
<el-button type="primary" size="small">退</el-button>
<el-button type="primary" size="small" @click="sitemReturn(scope.row, scope.$index)">退</el-button>
</template>
</el-table-column>
<el-table-column prop="serviceItem" label="服务项目" align="center" width="300" />
<el-table-column prop="serviceItem" label="维修项目" align="center" width="300" />
<el-table-column prop="serviceType" label="工种" align="center" width="150" />
<el-table-column prop="manufacturerName" label="厂家" align="center" width="150" />
<el-table-column prop="subject" label="科目" align="center" width="100" />
<el-table-column prop="repairerName" label="维修人" align="center" width="100" />
<el-table-column prop="examineHourPrice" label="考核工时" align="center" width="100" />
<el-table-column prop="repairerName" label="维修技师" align="center" width="100" />
<el-table-column prop="examineHourPrice" label="工时提成" align="center" width="100" />
<el-table-column prop="hourPrice" label="工时单价" align="center" width="100" />
<el-table-column prop="hours" label="工时数" align="center" width="140" />
<el-table-column prop="price" label="销售价" align="center" width="120" />
<el-table-column prop="discount" label="折扣" align="center" width="120" />
<el-table-column prop="discountAmount" label="优惠" align="center" width="120" />
<el-table-column prop="amount" label="金额" align="center" width="100" />
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
</div>
<div v-show="formobj.type =='1'">
<div class="title">
<span v-show="formobj.type == '0'">维修领料</span>
<span v-show="formobj.type == '1'">商品列表</span>
</div>
<el-table :key="goodsKey" :data="formobj.goodsDetailsVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column fixed label="操作" align="center" width="100">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="goodsReturn(scope.row, scope.$index)">退</el-button>
</template>
</el-table-column>
<el-table-column prop="goodsSpuName" label="商品名称" align="center" width="300" />
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="150" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="150" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="billObjName" label="供应商" align="center" width="100" />
<el-table-column prop="price" label="销售价" align="center" width="100" />
<el-table-column prop="count" label="数量" align="center" width="100" />
<el-table-column prop="amount" label="已出库" align="center" width="140" />
<el-table-column prop="discount" label="折扣" align="center" width="120" />
<el-table-column prop="discountAmount" label="优惠" align="center" width="120" />
<el-table-column prop="amount" label="金额" align="center" width="100" />
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
</div>
<div class="title">退货信息</div>
<div v-show="formobj.returnSitemVos.length > 0">
<div class="title">维修项目</div>
<el-table :key="sitemReturnKey" :data="formobj.returnSitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>`
<el-table-column fixed label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button type="danger" size="mini" @click="sitemDelete(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column prop="serviceItem" label="维修项目" align="center" width="300" />
<el-table-column prop="serviceType" label="工种" align="center" width="150" />
<el-table-column prop="repairerName" label="维修技师" align="center" width="100" />
<el-table-column prop="examineHourPrice" label="工时提成" align="center" width="100" />
<el-table-column prop="hourPrice" label="工时单价" align="center" width="100" />
<el-table-column prop="hours" label="工时数" align="center" width="140" />
<el-table-column prop="price" label="销售价" align="center" width="120" />
@ -116,38 +171,27 @@
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
</div>
<div class="title">商品列表</div>
<el-table :key="goodsKey" :data="formobj.goodsDetailsVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column fixed label="操作" align="center" width="100">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="goodsReturn(scope.row, scope.$index)">退</el-button>
</template>
</el-table-column>
<el-table-column prop="goodsSpuName" label="商品名称" align="center" width="300" />
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="150" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="150" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="manufacturerName" label="厂家" align="center" width="100" />
<el-table-column prop="price" label="销售价" align="center" width="100" />
<el-table-column prop="count" label="数量" align="center" width="100" />
<el-table-column prop="amount" label="已出库" align="center" width="140" />
<el-table-column prop="discount" label="折扣" align="center" width="120" />
<el-table-column prop="discountAmount" label="优惠" align="center" width="120" />
<el-table-column prop="amount" label="金额" align="center" width="100" />
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
<div v-show="formobj.returnGoods.length > 0">
<div class="title titleOne">
<div>退货商品列表</div>
<el-button type="primary" size="mini" class="btntopblueline" @click="fullyWithdraw">整单全退</el-button>
<div>
<span v-show="formobj.type == '0'">维修用料</span>
<span v-show="formobj.type == '1'">商品列表</span>
</div>
<el-button type="primary" size="mini" class="btntopblueline" @click="fullyWithdraw">全退</el-button>
</div>
<el-table :key="tableKey" :data="formobj.returnGoods" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column fixed label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button type="danger" size="mini" @click="goodsDelete(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column prop="goodsSpuName" label="商品名称" align="center" width="300" />
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="150" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="150" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="billObjName" label="供应商" align="center" width="100" />
<el-table-column prop="price" label="销售单价" align="center" width="100" />
<el-table-column prop="currentCount" label="总数量" align="center" width="100" />
<el-table-column prop="returnedCount" label="已退数量" align="center" width="140" />
<el-table-column label="退货价" align="center" min-width="140">
@ -165,20 +209,8 @@
</div>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">合计金额</div>
<el-form-item><span class="addinputInfo"> = 工时费 + 材料费 + 附加费 + 税额</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">自费金额</div>
<el-form-item><span class="addinputInfo"> = 自费工时费 + 自费材料费 + 附加费 + 税额</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">应付金额</div>
<el-form-item><span class="addinputInfo"> = 自费金额 + 退优惠 - 抵扣欠款</span></el-form-item>
<div class="span-sty" style="border-right: 0px">退款金额</div>
<el-form-item><span class="addinputInfo">{{ tkjeCount }} = 工时费{{ thgsfCount }} + 材料费{{ thclfCount }} + 附加费0</span></el-form-item>
</el-col>
</el-row>
</el-form>
@ -229,7 +261,8 @@ export default {
dialogVisible: false,
tableKey: 1,
sitemKey: 2,
goodsKey: 3,
sitemReturnKey: 3,
goodsKey: 4,
index: 0,
formobj: {
type: '',
@ -251,15 +284,24 @@ export default {
waitorName: '',
customerName: '',
mobile: '',
customerOrg: '',
vehMark: '',
vinNo: '',
taskId: '',
instanceId: '',
payableAmount: '',
totalAmount: '',
hourAmount: '',
goodsAmount: '',
addAmount: '',
payableAmount: '',
payableHoursAmount: '',
payableGoodsAmount: '',
accountBank: '',
account: '',
accountNumber: '',
sitemVos: [],
goodsDetailsVos: [],
returnGoods: []
returnGoods: [],
returnSitemVos: []
},
rules: {}
}
@ -281,7 +323,38 @@ export default {
}
}, '*')
},
computed: {},
computed: {
// 退
thgsfCount() {
let gsf = '0'
if (this.formobj.returnSitemVos.length > 0) {
this.formobj.returnSitemVos.forEach((e) => {
if (e.serviceItem !== '') {
gsf = Math.round((parseFloat(gsf) + parseFloat(e.amount)) * 100) / 100
}
})
}
return gsf
},
// 退
thclfCount() {
let clf = '0'
if (this.formobj.returnGoods.length > 0) {
this.formobj.returnGoods.forEach((e) => {
if (e.goodsSpuName !== '') {
clf = Math.round((parseFloat(clf) + parseFloat(e.backAmount !== '' ? e.backAmount : '0')) * 100) / 100
}
})
}
return clf
},
// 退
tkjeCount() {
let tkje = '0'
tkje = Math.round((parseFloat(this.thgsfCount) + parseFloat(this.thclfCount)) * 100) / 100
return tkje
}
},
methods: {
showInfo(sid) {
this.viewTitle = '【编辑】商品退货申请'
@ -291,6 +364,7 @@ export default {
req.fetchDetailsBySid(sid).then((res) => {
if (res.success) {
this.formobj = res.data
this.formobj.totalAmount = Math.round(parseFloat(this.formobj.hourAmount !== '' ? this.formobj.hourAmount : '0') + (parseFloat(this.formobj.goodsAmount !== '' ? this.formobj.goodsAmount : '0') + parseFloat(this.formobj.addAmount !== '' ? this.formobj.addAmount : '0')) * 100) / 100
}
})
},
@ -352,8 +426,11 @@ export default {
this.formobj.mobile = res.data.mobile
this.formobj.vehMark = res.data.vehMark
this.formobj.vinNo = res.data.vinNo
this.formobj.customerOrg = res.data.customerOrg
this.formobj.hourAmount = res.data.hourAmount
this.formobj.goodsAmount = res.data.goodsAmount
this.formobj.addAmount = res.data.addAmount
this.formobj.sitemVos = res.data.sitemVos
this.formobj.totalAmount = Math.round(parseFloat(this.formobj.hourAmount !== '' ? this.formobj.hourAmount : '0') + (parseFloat(this.formobj.goodsAmount !== '' ? this.formobj.goodsAmount : '0') + parseFloat(this.formobj.addAmount !== '' ? this.formobj.addAmount : '0')) * 100) / 100
this.formobj.goodsDetailsVos = res.data.goodsDetailsVos
}
})
@ -373,7 +450,10 @@ export default {
this.formobj.mobile = res.data.mobile
this.formobj.vehMark = res.data.vehMark
this.formobj.vinNo = res.data.vinNo
this.formobj.customerOrg = res.data.customerOrg
this.formobj.hourAmount = '0'
this.formobj.goodsAmount = res.data.goodsAmount
this.formobj.addAmount = res.data.addAmount
this.formobj.totalAmount = Math.round(parseFloat(this.formobj.hourAmount !== '' ? this.formobj.hourAmount : '0') + (parseFloat(this.formobj.goodsAmount !== '' ? this.formobj.goodsAmount : '0') + parseFloat(this.formobj.addAmount !== '' ? this.formobj.addAmount : '0')) * 100) / 100
this.formobj.goodsDetailsVos = res.data.goodsDetailsVos
}
})
@ -382,7 +462,41 @@ export default {
resetState() {
this.viewState = 1
},
sitemReturn(row, index) {
if (this.formobj.returnSitemVos.length !== 0) {
for (var i = 0; i < this.formobj.returnSitemVos.length; i++) {
if (this.formobj.returnSitemVos[i].itemLinkSid === row.itemLinkSid) {
this.$message({ showClose: true, type: 'error', message: '该记录已在退货中,请勿重复退货' })
return
}
}
}
this.formobj.returnSitemVos.push({
serviceItemSid: row.serviceItemSid,
serviceItem: row.serviceItem,
serviceTypeSid: row.serviceTypeSid,
serviceType: row.serviceType,
examineHourPrice: row.examineHourPrice,
hourPrice: row.hourPrice,
hours: row.hours,
price: row.price,
discount: row.discount,
discountAmount: row.discountAmount,
amount: row.amount,
remarks: row.remarks,
repairerName: row.repairerName,
itemLinkSid: row.itemLinkSid
})
},
goodsReturn(row, index) {
if (this.formobj.returnGoods.length !== 0) {
for (var i = 0; i < this.formobj.returnGoods.length; i++) {
if (this.formobj.returnGoods[i].goodsLinkSid === row.goodsLinkSid) {
this.$message({ showClose: true, type: 'error', message: '该记录已在退货中,请勿重复退货' })
return
}
}
}
this.formobj.returnGoods.push({
goodsID: row.goodsID,
goodSpuSid: row.sid,
@ -394,11 +508,19 @@ export default {
goodsSkuOwnSpec: row.goodsSkuOwnSpec,
currentCount: row.count,
returnedCount: row.returnedCount,
billObjName: row.billObjName,
billObjSid: row.billObjSid,
manufacturerName: row.manufacturerName,
manufacturerSid: row.manufacturerSid,
price: row.price,
backCount: '',
backPrice: '',
backAmount: ''
backAmount: '',
goodsLinkSid: row.goodsLinkSid
})
this.formobj.goodsDetailsVos.splice(index, 1)
},
sitemDelete(index) {
this.formobj.returnSitemVos.splice(index, 1)
},
fullyWithdraw() {
if (this.formobj.returnGoods.length > 0) {
@ -412,6 +534,9 @@ export default {
})
}
},
goodsDelete(index) {
this.formobj.returnGoods.splice(index, 1)
},
// 退
backAmountInput(row) {
if (row.goodsSpuName !== '') {
@ -421,6 +546,9 @@ export default {
saveOrUpdate() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.formobj.payableHoursAmount = this.thgsfCount
this.formobj.payableGoodsAmount = this.thclfCount
this.formobj.payableAmount = this.tkjeCount
this.submitdisabled = true
req.saveOrUpdate(this.formobj).then((res) => {
if (res.success) {
@ -445,6 +573,9 @@ export default {
submit() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.formobj.payableHoursAmount = this.thgsfCount
this.formobj.payableGoodsAmount = this.thclfCount
this.formobj.payableAmount = this.tkjeCount
this.submitdisabled = true
req.submit(this.formobj).then((res) => {
if (res.success) {
@ -477,10 +608,6 @@ export default {
.addinputInfo {
margin-left: 120px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
.titleOne {
padding: 7px;
display: flex;
@ -488,6 +615,10 @@ export default {
justify-content: space-between;
align-items: center;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .el-radio-group {
display: inline;
line-height: 1px;

84
yxt-as-ui/src/views/workFlow/shangpintuihuoFlow/merchandisereturnYiBan.vue

@ -23,6 +23,20 @@
<el-form-item><span class="addinputInfo">{{ formobj.createTime }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">收款账号</div>
<el-form-item><span class="addinputInfo">{{ formobj.accountNumber }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">账户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.account }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">开户行</div>
<el-form-item><span class="addinputInfo">{{ formobj.accountBank }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
@ -74,18 +88,47 @@
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerOrg }}</span></el-form-item>
<div class="span-sty" style="border-right: 0px">合计金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.totalAmount }} = 工时费{{ formobj.hourAmount }} + 材料费{{ formobj.goodsAmount }} + 附加费{{ formobj.addAmount }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">应收金额</div>
<el-form-item><span class="addinputInfo"> = 合计优惠 + 已收金额 + 欠款 + 退款抵欠款</span></el-form-item>
</el-col>
</el-row>
<div class="title">退货信息</div>
<div v-show="formobj.returnSitemVos.length > 0">
<div class="title">维修项目</div>
<el-table :key="sitemReturnKey" :data="formobj.returnSitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>`
<el-table-column prop="serviceItem" label="维修项目" align="center" width="300" />
<el-table-column prop="serviceType" label="工种" align="center" width="150" />
<el-table-column prop="repairerName" label="维修技师" align="center" width="100" />
<el-table-column prop="examineHourPrice" label="工时提成" align="center" width="100" />
<el-table-column prop="hourPrice" label="工时单价" align="center" width="100" />
<el-table-column prop="hours" label="工时数" align="center" width="140" />
<el-table-column prop="price" label="销售价" align="center" width="120" />
<el-table-column prop="discount" label="折扣" align="center" width="120" />
<el-table-column prop="discountAmount" label="优惠" align="center" width="120" />
<el-table-column prop="amount" label="金额" align="center" width="100" />
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
</div>
<div v-show="formobj.returnGoods.length > 0">
<div class="title">退货商品列表</div>
<div class="title">
<span v-show="formobj.type == '0'">维修用料</span>
<span v-show="formobj.type == '1'">商品列表</span>
</div>
<el-table :key="tableKey" :data="formobj.returnGoods" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="goodsSpuName" label="商品名称" align="center" width="300" />
<el-table-column prop="goodsSkuCode" label="图号" align="center" width="150" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" align="center" width="150" />
<el-table-column prop="unit" label="单位" align="center" width="100" />
<el-table-column prop="billObjName" label="供应商" align="center" width="100" />
<el-table-column prop="price" label="销售价" align="center" width="100" />
<el-table-column prop="currentCount" label="总数量" align="center" width="100" />
<el-table-column prop="returnedCount" label="已退数量" align="center" width="140" />
<el-table-column prop="backPrice" label="退货价" align="center" min-width="140" />
@ -95,20 +138,8 @@
</div>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">合计金额</div>
<el-form-item><span class="addinputInfo"> = 工时费 + 材料费 + 附加费 + 税额</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">自费金额</div>
<el-form-item><span class="addinputInfo"> = 自费工时费 + 自费材料费 + 附加费 + 税额</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">应付金额</div>
<el-form-item><span class="addinputInfo"> = 自费金额 + 退优惠 - 抵扣欠款</span></el-form-item>
<div class="span-sty" style="border-right: 0px">退款金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.payableAmount }} = 工时费{{ formobj.payableHoursAmount }} + 材料费{{ formobj.payableGoodsAmount }} + 附加费0</span></el-form-item>
</el-col>
</el-row>
</el-form>
@ -127,8 +158,7 @@ export default {
viewTitle: '',
viewState: 1,
tableKey: 1,
sitemKey: 2,
goodsKey: 3,
sitemReturnKey: 2,
index: 0,
formobj: {
type: '',
@ -150,15 +180,24 @@ export default {
waitorName: '',
customerName: '',
mobile: '',
customerOrg: '',
vehMark: '',
vinNo: '',
taskId: '',
instanceId: '',
payableAmount: '',
totalAmount: '',
hourAmount: '',
goodsAmount: '',
addAmount: '',
payableAmount: '',
payableHoursAmount: '',
payableGoodsAmount: '',
accountBank: '',
account: '',
accountNumber: '',
sitemVos: [],
goodsDetailsVos: [],
returnGoods: []
returnGoods: [],
returnSitemVos: []
},
rules: {},
//
@ -208,6 +247,7 @@ export default {
req.fetchDetailsBySid(sid).then((res) => {
if (res.success) {
this.formobj = res.data
this.formobj.totalAmount = Math.round(parseFloat(this.formobj.hourAmount !== '' ? this.formobj.hourAmount : '0') + (parseFloat(this.formobj.goodsAmount !== '' ? this.formobj.goodsAmount : '0') + parseFloat(this.formobj.addAmount !== '' ? this.formobj.addAmount : '0')) * 100) / 100
}
})
},

19
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillRest.java

@ -2,13 +2,17 @@ package com.yxt.anrui.as.biz.asbusrepairbill;
import com.yxt.anrui.as.api.asbusrepairbill.*;
import com.yxt.anrui.as.api.asbusrepairbill.app.*;
import com.yxt.anrui.as.api.asbusrepairbillinvoice.AsBusrepairBillInvoice;
import com.yxt.anrui.as.api.asbusrepairbillsitem.AsBusrepairBillSitem;
import com.yxt.anrui.as.api.asbusrepairbillsitemrepairer.AsBusrepairBillSitemRepairer;
import com.yxt.anrui.as.api.asbusrepairbillvech.AsBusrepairBillVech;
import com.yxt.anrui.as.api.asbusrepairinventorybilldetail.AsBusrepairInventorybillDetail;
import com.yxt.anrui.as.biz.asbusrepairbillinvoice.AsBusrepairBillInvoiceService;
import com.yxt.anrui.as.biz.asbusrepairbillsitem.AsBusrepairBillSitemService;
import com.yxt.anrui.as.biz.asbusrepairbillsitemrepairer.AsBusrepairBillSitemRepairerRest;
import com.yxt.anrui.as.biz.asbusrepairbillsitemrepairer.AsBusrepairBillSitemRepairerService;
import com.yxt.anrui.as.biz.asbusrepairbillvech.AsBusrepairBillVechService;
import com.yxt.anrui.as.biz.asbusrepairinventorybilldetail.AsBusrepairInventorybillDetailService;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -35,6 +39,10 @@ public class AsBusrepairBillRest {
private AsBusrepairBillSitemService asBusrepairBillSitemService;
@Autowired
private AsBusrepairBillSitemRepairerService asBusrepairBillSitemRepairerService;
@Autowired
private AsBusrepairInventorybillDetailService asBusrepairInventorybillDetailService;
@Autowired
private AsBusrepairBillInvoiceService asBusrepairBillInvoiceService;
@PostMapping("/listPage")
@ApiOperation("工单查询列表")
ResultBean<PagerVo<AsBusrepairBillVo>> listPage(@RequestBody PagerQuery<AsBusrepairBillQuery> pagerQuery) {
@ -110,7 +118,11 @@ public class AsBusrepairBillRest {
public ResultBean<AsBusrepairBillDetailsVo> fetchDetailsBySid(@PathVariable("sid") String sid) {
return asBusrepairBillService.fetchDetailsBySid(sid);
}
@ApiOperation("获取维修单开票信息")
@GetMapping("/fetchInvoiceBySid")
public AsBusrepairBillInvoice fetchInvoiceBySid(@RequestParam("sid") String sid) {
return asBusrepairBillInvoiceService.fetchByBillSid(sid);
}
@ApiOperation("获取维修单")
@GetMapping("/fetchBySid")
public AsBusrepairBill fetchBySid(@RequestParam("sid") String sid) {
@ -121,6 +133,11 @@ public class AsBusrepairBillRest {
public List<AsBusrepairBillSitem> fetchSitemByBillSid(@RequestParam("sid") String sid) {
return asBusrepairBillSitemService.fetchByBillSid(sid);
}
@ApiOperation("获取维修用料")
@GetMapping("/fetchGoodsByBillSid")
public List<AsBusrepairInventorybillDetail> fetchGoodsByBillSid(@RequestParam("sid") String sid) {
return asBusrepairInventorybillDetailService.getGoodsDetailsByBillSid(sid);
}
@ApiOperation("获取维修项目维修人员")
@GetMapping("/fetchSitemRepairerByBillSid")
public List<AsBusrepairBillSitemRepairer> fetchSitemRepairerByBillSid(@RequestParam("sid") String sid,@RequestParam("itemSid") String itemSid) {

40
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java

@ -1384,28 +1384,28 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
billNode.setCreateBySid(dto.getOperatorSid());
billNode.setNodeCode("6");
asBusrepairBillNodeService.insert(billNode);
AsTrackBillDto asTrackBillDto = new AsTrackBillDto();
asTrackBillDto.setCreateBySid(asBusrepairBill.getCreateBySid());
asTrackBillDto.setSourceBillSid(asBusrepairBill.getSid());
asTrackBillDto.setSourceBillNo(asBusrepairBill.getBillNo());
FmsReceivesettle fmsReceivesettle = fmsReceivesettleFeign.fetchBySourceSid(asBusrepairBill.getSid()).getData();
asTrackBillDto.setSettleDate(DateUtil.formatDate(fmsReceivesettle.getSettleTime()));
asTrackBillDto.setWaitorSid(asBusrepairBill.getWaitorSid());
asTrackBillDto.setWaitorName(asBusrepairBill.getWaitorName());
Calendar calendar = Calendar.getInstance();
calendar.setTime(fmsReceivesettle.getSettleTime());
calendar.add(Calendar.DAY_OF_MONTH, 3);
asTrackBillDto.setReserveDate(DateUtil.formatDate(calendar.getTime()));
asTrackBillDto.setDeptSid(asBusrepairBill.getDeptSid());
asTrackBillDto.setDeptName(asBusrepairBill.getDeptName());
asTrackBillDto.setUseOrgSid(asBusrepairBill.getUseOrgSid());
asTrackBillDto.setUseOrgName(asBusrepairBill.getUseOrgName());
asTrackBillDto.setCreateOrgSid(asBusrepairBill.getCreateOrgSid());
asTrackBillDto.setCreateOrgName(asBusrepairBill.getCreateOrgName());
asTrackBillDto.setReason("01");
asTrackBillService.saveOrUpdateDto(asTrackBillDto);
}
}
AsTrackBillDto asTrackBillDto = new AsTrackBillDto();
asTrackBillDto.setCreateBySid(asBusrepairBill.getCreateBySid());
asTrackBillDto.setSourceBillSid(asBusrepairBill.getSid());
asTrackBillDto.setSourceBillNo(asBusrepairBill.getBillNo());
FmsReceivesettle fmsReceivesettle = fmsReceivesettleFeign.fetchBySourceSid(asBusrepairBill.getSid()).getData();
asTrackBillDto.setSettleDate(DateUtil.formatDate(fmsReceivesettle.getSettleTime()));
asTrackBillDto.setWaitorSid(asBusrepairBill.getWaitorSid());
asTrackBillDto.setWaitorName(asBusrepairBill.getWaitorName());
Calendar calendar = Calendar.getInstance();
calendar.setTime(fmsReceivesettle.getSettleTime());
calendar.add(Calendar.DAY_OF_MONTH, 3);
asTrackBillDto.setReserveDate(DateUtil.formatDate(calendar.getTime()));
asTrackBillDto.setDeptSid(asBusrepairBill.getDeptSid());
asTrackBillDto.setDeptName(asBusrepairBill.getDeptName());
asTrackBillDto.setUseOrgSid(asBusrepairBill.getUseOrgSid());
asTrackBillDto.setUseOrgName(asBusrepairBill.getUseOrgName());
asTrackBillDto.setCreateOrgSid(asBusrepairBill.getCreateOrgSid());
asTrackBillDto.setCreateOrgName(asBusrepairBill.getCreateOrgName());
asTrackBillDto.setReason("01");
asTrackBillService.saveOrUpdateDto(asTrackBillDto);
return rb.success();
}

5
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SalesGoodsVo.java

@ -17,6 +17,7 @@ public class SalesGoodsVo {
private String sid;
//商品sid
private String goodSpuSid;
private String inventorySid;
private String goodsSkuSid;
//商品名称
private String goodsSpuName;
@ -66,4 +67,8 @@ public class SalesGoodsVo {
private String goodsDetailsPrice;
//是否含税(0含税,1不含税)
private String isTaxRate;
@ApiModelProperty("厂家sid")
private String manufacturerSid; // 库位sid
@ApiModelProperty("厂家名称")
private String manufacturerName; // 库位编号
}

4
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillMapper.xml

@ -119,7 +119,9 @@
wa.areaName,
i.warehouseRackSid,
i.warehouseRackCode,
IF( IFNULL(i.taxRate,0) > 0, '0', '1' ) AS isTaxRate
IF( IFNULL(i.taxRate,0) > 0, '0', '1' ) AS isTaxRate,
i.manufacturerSid,
i.manufacturerName
FROM
sms_goods AS s
LEFT JOIN yxt_wms.wms_inventory as i ON s.goodsID = i.goodsID

5
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsWmsInventorySalesVo.java

@ -77,7 +77,10 @@ public class SmsWmsInventorySalesVo implements Vo {
* 仓库sid
*/
private String warehouseSid;
@ApiModelProperty("厂家sid")
private String manufacturerSid; // 库位sid
@ApiModelProperty("厂家名称")
private String manufacturerName; // 库位编号
}

6
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbilldetail/SmsSalesBillDetail.java

@ -104,7 +104,11 @@ public class SmsSalesBillDetail extends BaseEntity {
private BigDecimal goodsDetailsPrice;
//是否含税(0含税,1不含税)
private Integer isTaxRate;
private String inventorySid;
@ApiModelProperty("厂家sid")
private String manufacturerSid; // 库位sid
@ApiModelProperty("厂家名称")
private String manufacturerName; // 库位编号

11
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SalesGoodsReturnVo.java

@ -41,5 +41,14 @@ public class SalesGoodsReturnVo {
private String backAmount; // 退货金额
@ApiModelProperty("单据关联sid")
private String goodsLinkSid; // 单据关联sid
@ApiModelProperty("销售价")
private String price; // 销售价
//供应商sid
private String billObjSid;
//供应商
private String billObjName;
@ApiModelProperty("厂家sid")
private String manufacturerSid; // 库位sid
@ApiModelProperty("厂家名称")
private String manufacturerName; // 库位编号
}

27
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsGoodsDetailsVo.java

@ -21,19 +21,8 @@ public class SmsGoodsDetailsVo implements Vo {
private String goodsSkuCode;
//规格型号
private String goodsSkuOwnSpec;
// @ApiModelProperty("出库前的库存量")
// private String currentCount;
@ApiModelProperty("计量单位")
private String unit;
// @ApiModelProperty("仓库sid")
// private String warehouseSid;
// @ApiModelProperty("仓库名称")
// private String warehouseName;
// //库位编号
// private String warehouseRackCode;
//
// @ApiModelProperty("需求数量(维修工单中)")
// private String needCount;
@ApiModelProperty("出/退库数量")
private String count;
@ApiModelProperty("销售价(元)")
@ -44,18 +33,18 @@ public class SmsGoodsDetailsVo implements Vo {
private String discountAmount;
//金额(销售价-优惠金额)
private String amount;
// @ApiModelProperty("科目")
// private String subject;
// @ApiModelProperty("领料人姓名")
// private String operName;
@ApiModelProperty("备注")
private String remarks;
// @ApiModelProperty("厂家")
// private String manufacturerName;
//供应商
private String billObjName;
//供应商sid
private String billObjSid;
//供应商
private String billObjName;
@ApiModelProperty("已退数量")
private String returnedCount;
@ApiModelProperty("单据关联sid")
private String goodsLinkSid; // 单据关联sid
@ApiModelProperty("厂家sid")
private String manufacturerSid; // 库位sid
@ApiModelProperty("厂家名称")
private String manufacturerName; // 库位编号
}

2
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsSalesReturn.java

@ -96,7 +96,7 @@ public class SmsSalesReturn extends BaseEntity {
@ApiModelProperty("退款金额")
private BigDecimal payableAmount; // 应付金额
@ApiModelProperty("0维修工单 1销售单")
private Integer billType; //0维修工单 1销售单
private Integer type; //0维修工单 1销售单
@ApiModelProperty("退工时费金额")
private BigDecimal payableHoursAmount; // 退工时费金额
@ApiModelProperty("退材料费金额")

2
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsSalesReturnMapper.java

@ -79,4 +79,6 @@ public interface SmsSalesReturnMapper extends BaseMapper<SmsSalesReturn> {
int selectBySid(String join);
int updateFlowFiled(Map<String, Object> map);
int selectSubmitBySid(@Param("sourceBillSid") String sourceBillSid);
}

6
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsSalesReturnMapper.xml

@ -122,7 +122,6 @@
date_format(s.createTime, '%Y-%m-%d') as createTime,
date_format(s.closeDate, '%Y-%m-%d') as closeDate,
s.payableAmount,
s.totalAmount,
s.procInstId,
s.procDefId
FROM
@ -138,4 +137,9 @@
WHERE nodeState != '待提交'
and find_in_set(sid, #{list})
</select>
<select id="selectSubmitBySid" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM sms_sales_return
WHERE sourceBillSid =#{sourceBillSid} and nodeState != '待提交' and nodeState != '已办结' and nodeState != '发起申请'
</select>
</mapper>

4
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsSalesReturnNewDetailsVo.java

@ -69,9 +69,9 @@ public class SmsSalesReturnNewDetailsVo implements Vo {
@ApiModelProperty("退货金额")
private String payableAmount; // 应付金额
@ApiModelProperty("退工时费金额")
private BigDecimal payableHoursAmount; // 退工时费金额
private String payableHoursAmount; // 退工时费金额
@ApiModelProperty("退材料费金额")
private BigDecimal payableGoodsAmount; // 退材料费金额
private String payableGoodsAmount; // 退材料费金额
@ApiModelProperty("开户行")
private String accountBank; // 开户行
@ApiModelProperty("收款账户名称")

33
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsSalesReturnNewDto.java

@ -4,6 +4,7 @@ import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@ -38,24 +39,44 @@ public class SmsSalesReturnNewDto implements Dto {
private String subject;
@ApiModelProperty("服务顾问姓名")
private String waitorName;
@ApiModelProperty("单据日期")
private String billDate;
@ApiModelProperty("结算日期")
private String settleDate;
@ApiModelProperty("客户名称")
private String customerName;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("客户单位")
private String customerOrg;
//-----车辆信息------
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("应付金额")
private String payableAmount; // 应付金额
@ApiModelProperty("合计金额")
private String totalAmount; // 合计金额
private List<SmsSitemVo> sitemVos = new ArrayList<>();// 服务项目
private String hourAmount; // 工时费
private String goodsAmount; // 材料费
private String addAmount; // 附加费
private List<SmsSitemVo> sitemVos = new ArrayList<>();// 维修项目
private List<SmsGoodsDetailsVo> goodsDetailsVos = new ArrayList<>(); //商品信息
private List<SalesGoodsReturnVo> returnGoods = new ArrayList<>(); //退货商品列表
private List<SalesItemsReturnVo> returnSitemVos = new ArrayList<>(); //退货维修项目列表
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("实例id")
private String instanceId;
private String procInsId;
@ApiModelProperty("退货金额")
private String payableAmount; // 应付金额
@ApiModelProperty("退工时费金额")
private String payableHoursAmount; // 退工时费金额
@ApiModelProperty("退材料费金额")
private String payableGoodsAmount; // 退材料费金额
@ApiModelProperty("开户行")
private String accountBank; // 开户行
@ApiModelProperty("收款账户名称")
private String account; // 收款账户名称
@ApiModelProperty("收款账号")
private String accountNumber; // 收款账号
}

380
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturn/SmsSalesReturnService.java

@ -31,6 +31,8 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.sms.biz.smsgoods.SmsGoods;
import com.yxt.sms.biz.smsgoods.SmsGoodsService;
import com.yxt.sms.biz.smssalesbill.*;
import com.yxt.sms.biz.smssalesbilldetail.SmsSalesBillDetail;
import com.yxt.sms.biz.smssalesbilldetail.SmsSalesBillDetailService;
@ -80,6 +82,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -134,6 +137,8 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
private FmsReceivesettleFeign fmsReceivesettleFeign;
@Autowired
private SmsSalesReturnItemService smsSalesReturnItemService;
@Autowired
private SmsGoodsService smsGoodsService;
private QueryWrapper<SmsSalesReturn> createQueryWrapper(SmsSalesReturnQuery query) {
// todo: 这里根据具体业务调整查询条件
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
@ -203,7 +208,7 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
}
}
if (StringUtils.isNotBlank(query.getUseOrgName())) {
qw.like("s.useOrgName", query.getUseOrgName());
qw.like("ss.`name`", query.getUseOrgName());
}
if (StringUtils.isNotBlank(query.getDeptName())) {
qw.like("s.deptName", query.getDeptName());
@ -215,7 +220,7 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
qw.like("s.billNo", query.getBillNo());
}
String startDate = query.getStartDate();
String endDate = query.getStartDate();
String endDate = query.getEndDate();
qw.apply(StringUtils.isNotEmpty(startDate), "date_format (s.createTime,'%Y-%m-%d') >= date_format('" + startDate + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(endDate), "date_format (s.createTime,'%Y-%m-%d') <= date_format('" + endDate + "','%Y-%m-%d')"
);
@ -538,21 +543,77 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
}
vo.setSitemVos(sitemVos);
}
// List<GoodsDetailsVo> goodsDetailsVos = data.getGoodsDetailsVos();
// List<SmsGoodsDetailsVo> smsGoodsDetailsVos = new ArrayList<>();
// if (!goodsDetailsVos.isEmpty()) {
// for (GoodsDetailsVo goodsDetailsVo : goodsDetailsVos) {
// SmsGoodsDetailsVo smsGoodsDetailsVo = new SmsGoodsDetailsVo();
// BeanUtil.copyProperties(goodsDetailsVo, smsGoodsDetailsVo);
// //查询已退数量
// String goodsID = goodsDetailsVo.getGoodsID();
// String sumBackCount = baseMapper.selBackCountByGoodsID(goodsID, sid);
// smsGoodsDetailsVo.setReturnedCount(sumBackCount);
// smsGoodsDetailsVos.add(smsGoodsDetailsVo);
// }
// vo.setGoodsDetailsVos(smsGoodsDetailsVos);
// }
BigDecimal taxRate = BigDecimal.ZERO;//税率
boolean wxGoods = false; //维修领料是否为加税点项目
AsBusrepairBillInvoice invoice = asBusrepairBillFeign.fetchInvoiceBySid(sid);
if (null != invoice) {
if (StringUtils.isNotBlank(invoice.getTaxItems())) {
String taxItem = invoice.getTaxItems();
if (taxItem.contains("维修用料")) {
wxGoods = true;
}
if (null != invoice.getTaxRate()) {
taxRate = invoice.getTaxRate();
}
}
}
List<SmsGoodsDetailsVo> goodsDetailsVos = new ArrayList<>(); //商品信息
List<AsBusrepairInventorybillDetail> goodsDetails = asBusrepairBillFeign.fetchGoodsByBillSid(sid);
if (!goodsDetails.isEmpty()) {
DecimalFormat df2 =new DecimalFormat("#.00");
for (AsBusrepairInventorybillDetail goodsDetail : goodsDetails) {
SmsGoodsDetailsVo goodsDetailsVo = new SmsGoodsDetailsVo();
BeanUtil.copyProperties(goodsDetail, goodsDetailsVo);
String goodsLinkSid = goodsDetail.getSid();
goodsDetailsVo.setGoodsLinkSid(goodsLinkSid);
BigDecimal constPrice = BigDecimal.ZERO; //销售价常量
BigDecimal count = BigDecimal.ZERO; //数量
if (null != goodsDetail.getCurrentCount()) {
count = goodsDetail.getCurrentCount();
}
goodsDetailsVo.setCount(String.valueOf(goodsDetail.getCurrentCount().intValue()));
boolean isTaxRate = false; //进货价是否含税
SmsGoods smsGoods = smsGoodsService.fetchEntityByGoodsID(goodsDetail.getGoodsID());
if (null != smsGoods) {
if (StringUtils.isNotBlank(smsGoods.getSupplierName())) {
goodsDetailsVo.setBillObjName(smsGoods.getSupplierName());
}
}
if (null != goodsDetail.getGoodsDetailsPrice()) {
constPrice = goodsDetail.getGoodsDetailsPrice();
}
if (goodsDetail.getIsTaxRate() != null) {
if (goodsDetail.getIsTaxRate().intValue() == 1) {
goodsDetailsVo.setPrice(constPrice.toString());
} else {
if (wxGoods) {
BigDecimal divide = taxRate.divide(new BigDecimal("100"));
BigDecimal add = divide.add(new BigDecimal("1"));
BigDecimal multiply = constPrice.multiply(add);
goodsDetailsVo.setPrice(df2.format(multiply));
} else {
goodsDetailsVo.setPrice(constPrice.toString());
}
}
} else {
if (wxGoods) {
BigDecimal divide = taxRate.divide(new BigDecimal("100"));
BigDecimal add = divide.add(new BigDecimal("1"));
BigDecimal multiply = constPrice.multiply(add);
goodsDetailsVo.setPrice(df2.format(multiply));
} else {
goodsDetailsVo.setPrice(constPrice.toString());
}
}
String returnCount = smsSalesReturnDetailService.selSouceSidAndGoodLinkSid(sid,goodsLinkSid);
BigDecimal rCount = new BigDecimal(returnCount);
goodsDetailsVo.setReturnedCount(returnCount);
if (rCount.compareTo(count) < 0) {
goodsDetailsVos.add(goodsDetailsVo);
}
}
vo.setGoodsDetailsVos(goodsDetailsVos);
}
}
} else if (type.equals("1")) {
//销售单
@ -561,6 +622,12 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
vo.setSourceBillNo(data.getBillNo());
vo.setBillType("销售单");
vo.setBillDate(data.getCreateTime());
if (null != data.getGoodsAmount()) {
vo.setGoodsAmount(data.getGoodsAmount());
}
if (null != data.getAddAmount()) {
vo.setAddAmount(data.getAddAmount());
}
if (StringUtils.isNotBlank(data.getSubject())) {
vo.setSubject(data.getSubject());
}
@ -590,17 +657,20 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
for (SalesGoodsVo goodsDetailsVo : goodsDetailsVos) {
SmsGoodsDetailsVo smsGoodsDetailsVo = new SmsGoodsDetailsVo();
BeanUtil.copyProperties(goodsDetailsVo, smsGoodsDetailsVo);
smsGoodsDetailsVo.setGoodsLinkSid(goodsDetailsVo.getSid());
String count = goodsDetailsVo.getCount();
BigDecimal totalCount = new BigDecimal(count);
//查询已退数量
String goodsID = goodsDetailsVo.getGoodsID();
String sumBackCount = baseMapper.selBackCountByGoodsID(goodsID, sid);
smsGoodsDetailsVo.setReturnedCount(sumBackCount);
smsGoodsDetailsVos.add(smsGoodsDetailsVo);
smsGoodsDetailsVos.add(smsGoodsDetailsVo);
String returnCount = smsSalesReturnDetailService.selSouceSidAndGoodLinkSid(sid,goodsDetailsVo.getSid());
BigDecimal rCount = new BigDecimal(returnCount);
smsGoodsDetailsVo.setReturnedCount(returnCount);
if (rCount.compareTo(totalCount) < 0) {
smsGoodsDetailsVos.add(smsGoodsDetailsVo);
}
}
vo.setGoodsDetailsVos(smsGoodsDetailsVos);
}
}
}
return vo;
}
@ -627,6 +697,24 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
public ResultBean<String> saveBill(SmsSalesReturnNewDto dto) {
ResultBean rb = ResultBean.fireFail();
String sid = "";
BigDecimal totalAmount = BigDecimal.ZERO; //合计金额
BigDecimal returnSumAmount = BigDecimal.ZERO; //退款总金额
BigDecimal goodsAmount = BigDecimal.ZERO; //退款总金额
if (StringUtils.isNotBlank(dto.getTotalAmount())) {
totalAmount = new BigDecimal(dto.getTotalAmount());
}
if (StringUtils.isNotBlank(dto.getPayableAmount())) {
returnSumAmount = new BigDecimal(dto.getPayableAmount());
}
if (returnSumAmount.compareTo(totalAmount) > 0) {
return rb.setMsg("整单退货金额不能大于销售金额");
}
if (StringUtils.isNotBlank(dto.getGoodsAmount())) {
goodsAmount = new BigDecimal(dto.getGoodsAmount());
}
if (returnSumAmount.compareTo(BigDecimal.ZERO) <= 0) {
return rb.setMsg("退货金额不能为0");
}
List<SalesGoodsReturnVo> goodsVos = dto.getReturnGoods();
if (!goodsVos.isEmpty()) {
for (SalesGoodsReturnVo goodsVo : goodsVos) {
@ -637,18 +725,31 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
if (add.compareTo(currentCount) > 0) {
return rb.setMsg("退货数量不能大于总数量");
}
BigDecimal price = BigDecimal.ZERO; //合计金额
BigDecimal backPrice = BigDecimal.ZERO; //退款总金额
if (StringUtils.isNotBlank(goodsVo.getPrice())) {
price = new BigDecimal(goodsVo.getPrice());
}
if (StringUtils.isNotBlank(goodsVo.getBackPrice())) {
backPrice = new BigDecimal(goodsVo.getBackPrice());
}
if (backPrice.compareTo(price) > 0) {
return rb.setMsg("商品退货单价不能大于销售单价");
}
}
}
if (StringUtils.isNotBlank(dto.getSid())) {
sid = dto.getSid();
SmsSalesReturn smsSalesReturn = fetchBySid(sid);
BeanUtil.copyProperties(dto, smsSalesReturn, "id", "sid");
BeanUtil.copyProperties(dto, smsSalesReturn, "id", "sid","billType");
baseMapper.updateById(smsSalesReturn);
smsSalesReturnDetailService.deleteByMainSid(sid);
smsSalesReturnItemService.deleteByMainSid(sid);
} else {
SmsSalesReturn entity = new SmsSalesReturn();
sid = entity.getSid();
BeanUtil.copyProperties(dto, entity, "id", "sid");
BeanUtil.copyProperties(dto, entity, "id", "sid","billType");
String applyCode = getApplyCode(dto.getCreateOrgSid());
entity.setBillNo(applyCode);
entity.setNodeState("待提交");
@ -663,26 +764,56 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
smsSalesReturnDetailService.insert(detail);
}
}
List<SalesItemsReturnVo> returnSitemVos = dto.getReturnSitemVos();
if (!returnSitemVos.isEmpty()) {
for (SalesItemsReturnVo returnItem : returnSitemVos) {
SmsSalesReturnItem detail = new SmsSalesReturnItem();
BeanUtil.copyProperties(returnItem, detail, "id", "sid");
detail.setBillSid(sid);
List<String> staffList = returnItem.getStaffList();
List<String> staffNameList = returnItem.getStaffNameList();
StringBuffer sbSid = new StringBuffer();
StringBuffer sbName = new StringBuffer();
if (!staffList.isEmpty()) {
for (int i = 0; i < staffList.size(); i++) {
String s = staffList.get(i);
String sName = staffNameList.get(i);
sbSid.append(s).append(",");
sbName.append(sName).append(",");
}
if (sbSid.length() > 0) {
sbSid.delete(sbSid.length() - 1 ,sbSid.length());
detail.setRepairerSid(sbSid.toString());
}
if (sbName.length() > 0) {
sbName.delete(sbName.length() - 1 ,sbName.length());
detail.setRepairerName(sbName.toString());
}
}
smsSalesReturnItemService.insert(detail);
}
}
return rb.success().setData(sid);
}
public SmsSalesReturnNewDetailsVo fetchNewDetailsVoBySid(String sid) {
SmsSalesReturnNewDetailsVo vo = new SmsSalesReturnNewDetailsVo();
SmsSalesReturn smsSalesReturn = fetchBySid(sid);
String sourceBillSid = smsSalesReturn.getSourceBillSid();
if (null != smsSalesReturn) {
BeanUtil.copyProperties(smsSalesReturn, vo);
Integer type = smsSalesReturn.getBillType();
Integer type = smsSalesReturn.getType();
vo.setCreateTime(DateUtil.formatDate(smsSalesReturn.getCreateTime()));
if (StringUtils.isNotBlank(smsSalesReturn.getProcInstId())) {
vo.setInstanceId(smsSalesReturn.getProcInstId());
}
if (type == 0) {
//维修工单
AsBusrepairBillDetailsVo data = asBusrepairBillFeign.fetchDetailsBySid(smsSalesReturn.getSourceBillSid()).getData();
AsBusrepairBill data = asBusrepairBillFeign.fetchBySid(sourceBillSid);
if (null != data) {
vo.setSourceBillNo(data.getBillNo());
vo.setBillType(data.getBillType());
vo.setBillDate(data.getCreateDate());
vo.setBillDate(DateUtil.formatDate(data.getCreateTime()));
if (StringUtils.isNotBlank(data.getSubject())) {
vo.setSubject(data.getSubject());
}
@ -695,48 +826,143 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
if (StringUtils.isNotBlank(data.getMobile())) {
vo.setMobile(data.getMobile());
}
if (StringUtils.isNotBlank(data.getVehMark())) {
vo.setVehMark(data.getVehMark());
if (null != data.getHourAmount()) {
vo.setHourAmount(data.getHourAmount().toString());
}
if (StringUtils.isNotBlank(data.getVinNo())) {
vo.setVinNo(data.getVinNo());
if (null != data.getGoodsAmount()) {
vo.setGoodsAmount(data.getGoodsAmount().toString());
}
SettleVo settleVo = data.getSettleVo();
if (null != settleVo) {
vo.setSettleDate(settleVo.getSettleTime());
if (null != data.getAddAmount()) {
vo.setAddAmount(data.getAddAmount().toString());
}
List<SitemVo> sitemVos = data.getSitemVos();
List<SmsSitemVo> smsSitemVos = new ArrayList<>();
if (!sitemVos.isEmpty()) {
for (SitemVo smsSitemVo : sitemVos) {
SmsSitemVo sitemVo = new SmsSitemVo();
BeanUtil.copyProperties(smsSitemVo, sitemVo);
smsSitemVos.add(sitemVo);
AsBusrepairBillVech vech = asBusrepairBillFeign.fetchVehInfoByBillSid(sourceBillSid);
if (null != vech) {
if (StringUtils.isNotBlank(vech.getVehMark())) {
vo.setVehMark(vech.getVehMark());
}
if (StringUtils.isNotBlank(vech.getVinNo())) {
vo.setVinNo(vech.getVinNo());
}
vo.setSitemVos(smsSitemVos);
}
List<GoodsDetailsVo> goodsDetailsVos = data.getGoodsDetailsVos();
List<SmsGoodsDetailsVo> smsGoodsDetailsVos = new ArrayList<>();
if (!goodsDetailsVos.isEmpty()) {
for (GoodsDetailsVo goodsDetailsVo : goodsDetailsVos) {
SmsGoodsDetailsVo smsGoodsDetailsVo = new SmsGoodsDetailsVo();
BeanUtil.copyProperties(goodsDetailsVo, smsGoodsDetailsVo);
//查询已退数量
String goodsID = goodsDetailsVo.getGoodsID();
String sumBackCount = baseMapper.selBackCountByGoodsID(goodsID, sid);
smsGoodsDetailsVo.setReturnedCount(sumBackCount);
smsGoodsDetailsVos.add(smsGoodsDetailsVo);
FmsReceivesettle receivesettle = fmsReceivesettleFeign.fetchBySourceSid(sourceBillSid).getData();
if (null != receivesettle) {
vo.setSettleDate(DateUtil.formatDate(receivesettle.getSettleTime()));
}
List<SmsSitemVo> sitemVos = new ArrayList<>();// 维修项目
List<AsBusrepairBillSitem> sitems = asBusrepairBillFeign.fetchSitemByBillSid(sourceBillSid);
if (!sitems.isEmpty()) {
for (AsBusrepairBillSitem sitem : sitems) {
SmsSalesReturnItem returnItem = smsSalesReturnItemService.selBySouceSidAndLinkSid(sourceBillSid,sitem.getSid());
if (null == returnItem) {
SmsSitemVo sitemVo = new SmsSitemVo();
BeanUtil.copyProperties(sitem, sitemVo);
sitemVo.setItemLinkSid(sitem.getSid());
List<AsBusrepairBillSitemRepairer> repairers = asBusrepairBillFeign.fetchSitemRepairerByBillSid(sourceBillSid, sitem.getServiceItemSid());
if (!repairers.isEmpty()) {
List<String> staffList = new ArrayList<>(); //维修人员信息
List<String> staffNameList = new ArrayList<>(); //维修人员信息
for (AsBusrepairBillSitemRepairer repairer : repairers) {
if (StringUtils.isNotBlank(repairer.getRepairerSid())) {
staffList.add(repairer.getRepairerSid());
}
if (StringUtils.isNotBlank(repairer.getRepairerName())) {
staffNameList.add(repairer.getRepairerName());
}
}
sitemVo.setStaffList(staffList);
sitemVo.setStaffNameList(staffNameList);
sitemVo.setRepairerName(String.join("、", staffNameList));
}
sitemVos.add(sitemVo);
}
}
vo.setGoodsDetailsVos(smsGoodsDetailsVos);
vo.setSitemVos(sitemVos);
}
BigDecimal taxRate = BigDecimal.ZERO;//税率
boolean wxGoods = false; //维修领料是否为加税点项目
AsBusrepairBillInvoice invoice = asBusrepairBillFeign.fetchInvoiceBySid(sourceBillSid);
if (null != invoice) {
if (StringUtils.isNotBlank(invoice.getTaxItems())) {
String taxItem = invoice.getTaxItems();
if (taxItem.contains("维修用料")) {
wxGoods = true;
}
if (null != invoice.getTaxRate()) {
taxRate = invoice.getTaxRate();
}
}
}
List<SmsGoodsDetailsVo> goodsDetailsVos = new ArrayList<>(); //商品信息
List<AsBusrepairInventorybillDetail> goodsDetails = asBusrepairBillFeign.fetchGoodsByBillSid(sourceBillSid);
if (!goodsDetails.isEmpty()) {
DecimalFormat df2 =new DecimalFormat("#.00");
for (AsBusrepairInventorybillDetail goodsDetail : goodsDetails) {
SmsGoodsDetailsVo goodsDetailsVo = new SmsGoodsDetailsVo();
BeanUtil.copyProperties(goodsDetail, goodsDetailsVo);
String goodsLinkSid = goodsDetail.getSid();
goodsDetailsVo.setGoodsLinkSid(goodsLinkSid);
BigDecimal constPrice = BigDecimal.ZERO; //销售价常量
BigDecimal count = BigDecimal.ZERO; //数量
if (null != goodsDetail.getCurrentCount()) {
count = goodsDetail.getCurrentCount();
}
goodsDetailsVo.setCount(String.valueOf(goodsDetail.getCurrentCount().intValue()));
boolean isTaxRate = false; //进货价是否含税
SmsGoods smsGoods = smsGoodsService.fetchEntityByGoodsID(goodsDetail.getGoodsID());
if (null != smsGoods) {
if (StringUtils.isNotBlank(smsGoods.getSupplierName())) {
goodsDetailsVo.setBillObjName(smsGoods.getSupplierName());
}
}
if (null != goodsDetail.getGoodsDetailsPrice()) {
constPrice = goodsDetail.getGoodsDetailsPrice();
}
if (goodsDetail.getIsTaxRate() != null) {
if (goodsDetail.getIsTaxRate().intValue() == 1) {
goodsDetailsVo.setPrice(constPrice.toString());
} else {
if (wxGoods) {
BigDecimal divide = taxRate.divide(new BigDecimal("100"));
BigDecimal add = divide.add(new BigDecimal("1"));
BigDecimal multiply = constPrice.multiply(add);
goodsDetailsVo.setPrice(df2.format(multiply));
} else {
goodsDetailsVo.setPrice(constPrice.toString());
}
}
} else {
if (wxGoods) {
BigDecimal divide = taxRate.divide(new BigDecimal("100"));
BigDecimal add = divide.add(new BigDecimal("1"));
BigDecimal multiply = constPrice.multiply(add);
goodsDetailsVo.setPrice(df2.format(multiply));
} else {
goodsDetailsVo.setPrice(constPrice.toString());
}
}
String returnCount = smsSalesReturnDetailService.selSouceSidAndGoodLinkSid(sourceBillSid,goodsLinkSid);
BigDecimal rCount = new BigDecimal(returnCount);
goodsDetailsVo.setReturnedCount(returnCount);
if (rCount.compareTo(count) < 0) {
goodsDetailsVos.add(goodsDetailsVo);
}
}
vo.setGoodsDetailsVos(goodsDetailsVos);
}
}
} else if (type == 1) {
//销售单
SmsSalesBillDetailsVo data = smsSalesBillService.fetchDetailsVoBySid(smsSalesReturn.getSourceBillSid());
SmsSalesBillDetailsVo data = smsSalesBillService.fetchDetailsVoBySid(sourceBillSid);
if (null != data) {
vo.setSourceBillNo(data.getBillNo());
vo.setBillType("销售单");
vo.setBillDate(data.getCreateTime());
if (null != data.getGoodsAmount()) {
vo.setGoodsAmount(data.getGoodsAmount());
}
if (null != data.getAddAmount()) {
vo.setAddAmount(data.getAddAmount());
}
if (StringUtils.isNotBlank(data.getSubject())) {
vo.setSubject(data.getSubject());
}
@ -749,6 +975,7 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
if (StringUtils.isNotBlank(data.getMobile())) {
vo.setMobile(data.getMobile());
}
if (StringUtils.isNotBlank(data.getVehMark())) {
vo.setVehMark(data.getVehMark());
}
@ -765,12 +992,16 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
for (SalesGoodsVo goodsDetailsVo : goodsDetailsVos) {
SmsGoodsDetailsVo smsGoodsDetailsVo = new SmsGoodsDetailsVo();
BeanUtil.copyProperties(goodsDetailsVo, smsGoodsDetailsVo);
smsGoodsDetailsVo.setGoodsLinkSid(goodsDetailsVo.getSid());
String count = goodsDetailsVo.getCount();
BigDecimal totalCount = new BigDecimal(count);
//查询已退数量
String goodsID = goodsDetailsVo.getGoodsID();
String sumBackCount = baseMapper.selBackCountByGoodsID(goodsID, sid);
smsGoodsDetailsVo.setReturnedCount(sumBackCount);
smsGoodsDetailsVos.add(smsGoodsDetailsVo);
smsGoodsDetailsVos.add(smsGoodsDetailsVo);
String returnCount = smsSalesReturnDetailService.selSouceSidAndGoodLinkSid(sourceBillSid,goodsDetailsVo.getSid());
BigDecimal rCount = new BigDecimal(returnCount);
smsGoodsDetailsVo.setReturnedCount(returnCount);
if (rCount.compareTo(totalCount) < 0) {
smsGoodsDetailsVos.add(smsGoodsDetailsVo);
}
}
vo.setGoodsDetailsVos(smsGoodsDetailsVos);
}
@ -786,6 +1017,25 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
}
vo.setReturnGoods(returnGoods);
}
List<SmsSalesReturnItem> items = smsSalesReturnItemService.fetchByBillSid(sid);
if (!items.isEmpty()) {
List<SalesItemsReturnVo> returnSitemVos = new ArrayList<>(); //退货维修项目列表
for (SmsSalesReturnItem detail : items) {
SalesItemsReturnVo returnVo = new SalesItemsReturnVo();
BeanUtil.copyProperties(detail, returnVo, "id", "sid");
String repairerSid = detail.getRepairerSid();
String repairerName = detail.getRepairerName();
String[] split = repairerSid.split(",");
String[] split1 = repairerName.split(",");
List<String> strsToList1= Arrays.asList(split);
List<String> strsToList2= Arrays.asList(split1);
returnVo.setStaffList(strsToList1);
returnVo.setStaffNameList(strsToList2);
returnSitemVos.add(returnVo);
}
vo.setReturnSitemVos(returnSitemVos);
}
}
return vo;
}
@ -801,6 +1051,9 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
for (String sid : sids) {
smsSalesReturnDetailService.deleteByMainSid(sid);
}
for (String sid : sids) {
smsSalesReturnItemService.deleteByMainSid(sid);
}
return rb.success();
}
@ -823,6 +1076,11 @@ public class SmsSalesReturnService extends MybatisBaseService<SmsSalesReturnMapp
} else {
return rb.setMsg(resultBean.getMsg());
}
String sourceBillSid = dto.getSourceBillSid();
int count = baseMapper.selectSubmitBySid(sourceBillSid);
if (count > 0) {
return rb.setMsg("所选单据为已经提交审批的数据,无法提交");
}
smsSalesReturn = fetchBySid(businessSid);
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();

10
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturndetail/SmsSalesReturnDetail.java

@ -86,4 +86,14 @@ public class SmsSalesReturnDetail extends BaseEntity {
private BigDecimal backPrice; // 退货价
@ApiModelProperty("单据关联sid")
private String goodsLinkSid; // 单据关联sid
@ApiModelProperty("销售价")
private BigDecimal price; // 销售价
//供应商sid
private String billObjSid;
//供应商
private String billObjName;
@ApiModelProperty("厂家sid")
private String manufacturerSid; // 库位sid
@ApiModelProperty("厂家名称")
private String manufacturerName; // 库位编号
}

2
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturndetail/SmsSalesReturnDetailMapper.java

@ -66,4 +66,6 @@ public interface SmsSalesReturnDetailMapper extends BaseMapper<SmsSalesReturnDet
@Delete("delete from sms_sales_return_detail where billSid = #{billSid}")
void deleteByMainSid(String billSid);
String selSouceSidAndGoodLinkSid(@Param("sid") String sid, @Param("goodsLinkSid") String goodsLinkSid);
}

14
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturndetail/SmsSalesReturnDetailMapper.xml

@ -6,8 +6,18 @@
<select id="selectPageVo" resultType="com.yxt.sms.biz.smssalesreturndetail.SmsSalesReturnDetailVo">
SELECT * FROM sms_sales_return_detail <where> ${ew.sqlSegment} </where>
</select>
<select id="selectListAllVo" resultType="com.yxt.sms.biz.smssalesreturndetail.SmsSalesReturnDetailVo">
SELECT * FROM sms_sales_return_detail <where> ${ew.sqlSegment} </where>
</select>
</mapper>
<select id="selSouceSidAndGoodLinkSid" resultType="java.lang.String">
SELECT
IFNULL(SUM(i.backCount),0)
FROM
sms_sales_return_detail AS i
LEFT JOIN sms_sales_return AS r ON i.billSid = r.sid
WHERE
r.sourceBillSid = #{sid} AND i.goodsLinkSid = #{goodsLinkSid}
AND r.nodeState = '已办结'
</select>
</mapper>

4
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturndetail/SmsSalesReturnDetailService.java

@ -109,4 +109,8 @@ public class SmsSalesReturnDetailService extends MybatisBaseService<SmsSalesRetu
BeanUtil.copyProperties(entity, vo);
return vo;
}
public String selSouceSidAndGoodLinkSid(String sid, String goodsLinkSid) {
return baseMapper.selSouceSidAndGoodLinkSid(sid,goodsLinkSid);
}
}

4
yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesreturnitem/SmsSalesReturnItem.java

@ -82,5 +82,9 @@ public class SmsSalesReturnItem extends BaseEntity {
private BigDecimal amount;
@ApiModelProperty("关联维修项目sid")
private String itemLinkSid;
@ApiModelProperty("维修人员sid")
private String repairerSid;
@ApiModelProperty("维修人员姓名")
private String repairerName;
}

8
yxt-sms-biz/src/main/java/com/yxt/sms/feign/as/asbusrepairbill/AsBusrepairBillFeign.java

@ -40,4 +40,12 @@ public interface AsBusrepairBillFeign {
@ApiOperation("获取维修项目维修人员")
@GetMapping("/fetchSitemRepairerByBillSid")
public List<AsBusrepairBillSitemRepairer> fetchSitemRepairerByBillSid(@RequestParam("sid") String sid,@RequestParam("itemSid") String itemSid);
@ApiOperation("获取维修用料")
@GetMapping("/fetchGoodsByBillSid")
public List<AsBusrepairInventorybillDetail> fetchGoodsByBillSid(@RequestParam("sid") String sid);
@ApiOperation("获取维修单开票信息")
@GetMapping("/fetchInvoiceBySid")
public AsBusrepairBillInvoice fetchInvoiceBySid(@RequestParam("sid") String sid);
}

42
yxt-sms-biz/src/main/java/com/yxt/sms/feign/as/asbusrepairbill/AsBusrepairBillInvoice.java

@ -0,0 +1,42 @@
package com.yxt.sms.feign.as.asbusrepairbill;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author Fan
* @description
* @date 2024/4/16 17:14
*/
@Data
@ApiModel(value = "维修工单-发票", description = "维修工单-发票")
@TableName("as_busrepair_bill_invoice")
public class AsBusrepairBillInvoice extends BaseEntity {
@ApiModelProperty("工单sid")
private String billSid;
@ApiModelProperty("是否需要开发票(是1,否0)")
private Integer isInvoicing;
@ApiModelProperty("发票类型")
private String invoiceType;
@ApiModelProperty("开票名称")
private String invoiceTitle;
@ApiModelProperty("税号")
private String taxpayerNo;
@ApiModelProperty("发票号码")
private String invoiceCode;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("开票单位sid")
private String invoiceCompanySid;
@ApiModelProperty("开票单位")
private String invoiceCompany;
@ApiModelProperty("加税点项目“,”英文逗号拼接")
private String taxItems;
}

92
yxt-sms-biz/src/main/java/com/yxt/sms/feign/as/asbusrepairbill/AsBusrepairInventorybillDetail.java

@ -0,0 +1,92 @@
package com.yxt.sms.feign.as.asbusrepairbill;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @description:
* @author: dimengzhe
* @date: 2024/3/7
**/
@Data
public class AsBusrepairInventorybillDetail extends BaseEntity {
private static final long serialVersionUID = 7134535185685249599L;
@ApiModelProperty("单据sid")
private String billSid;
@ApiModelProperty("工单服务项目记录sid")
private String sitemSid;
@ApiModelProperty("项目名称")
private String serviceItem;
@ApiModelProperty("商品库存sid")
private String inventorySid;
@ApiModelProperty("商品ID")
private String goodsID;
@ApiModelProperty("商品基础信息sid")
private String goodSpuSid;
@ApiModelProperty("商品名称")
private String goodsSpuName;
@ApiModelProperty("商品Skusid")
private String goodsSkuSid;
@ApiModelProperty("商品Sku名称")
private String goodsSkuTitle;
@ApiModelProperty("商品编码")
private String goodsSkuCode;
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec;
@ApiModelProperty("已出库数量")
private BigDecimal currentCount;
@ApiModelProperty("计量单位")
private String unit;
@ApiModelProperty("仓库sid")
private String warehouseSid;
@ApiModelProperty("仓库名称")
private String warehouseName;
@ApiModelProperty("库位Sid")
private String warehouseRackSid;
@ApiModelProperty("库位编号")
private String warehouseRackCode;
@ApiModelProperty("需求数量(维修工单中)")
private BigDecimal needCount;
@ApiModelProperty("出/退库数量")
private BigDecimal count;
@ApiModelProperty("销售价(元)")
private BigDecimal price;
@ApiModelProperty("折扣(0-10,0免费,10不打折)")
private Integer discount;
@ApiModelProperty("优惠金额(=销售价*(1-折扣*0.1))")
private BigDecimal discountAmount;
@ApiModelProperty("金额(销售价-优惠金额)")
private BigDecimal amount;
@ApiModelProperty("库存数量")
private BigDecimal inventoryNum; //
@ApiModelProperty("科目sid")
private String subjectSid;
@ApiModelProperty("科目")
private String subject;
@ApiModelProperty("领料人")
private String operUserSid;
@ApiModelProperty("领料人姓名")
private String operName;
//旧件是否入库(适用于保内业务,0未入库,1已入库完成)
private Integer oldIsInInventory;
@ApiModelProperty("销售价格常量")
private BigDecimal goodsDetailsPrice;
//是否含税(1含税,0不含税)
private Integer isTaxRate;
@ApiModelProperty("配件销售sid(逗号拼接)")
private String partsSellersSid;
@ApiModelProperty("配件销售")
private String partsSellers;
@ApiModelProperty("接收时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date receivedTime;
}

4
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventory.java

@ -64,4 +64,8 @@ public class WmsInventory extends BaseEntity {
private String useOrgSid;
@ApiModelProperty("厂家订单号")
private String manufactorBillNo;
@ApiModelProperty("厂家sid")
private String manufacturerSid; // 库位sid
@ApiModelProperty("厂家名称")
private String manufacturerName; // 库位编号
}

Loading…
Cancel
Save