diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesPurchaseOrder.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesPurchaseOrder.java
index ac0a00cb..bb14ac5c 100644
--- a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesPurchaseOrder.java
+++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesPurchaseOrder.java
@@ -310,6 +310,17 @@ public class MesPurchaseOrder extends BaseEntity {
*/
private BigDecimal actLandAmount;
+ //含税单价
+ private BigDecimal fTaxPrice;
+
+ public BigDecimal getfTaxPrice() {
+ return fTaxPrice;
+ }
+
+ public void setfTaxPrice(BigDecimal fTaxPrice) {
+ this.fTaxPrice = fTaxPrice;
+ }
+
public BigDecimal getActLandAmount() {
return actLandAmount;
}
diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseReceiveBillMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseReceiveBillMapper.xml
index 66dc6efc..ce15190c 100644
--- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseReceiveBillMapper.xml
+++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseReceiveBillMapper.xml
@@ -195,12 +195,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
mprb.update_by,
mprb.update_time,
mpo.purchase_order_id,
- IF(EXISTS (SELECT 1
- FROM mes_base_barcode_info
- WHERE receive_bill_id = mprb.receive_bill_id), '1', '0') AS has_barcode_flag
+ CASE WHEN mbbi.receive_bill_id IS NOT NULL THEN '1' ELSE '0' END AS has_barcode_flag
from mes_purchase_receive_bill mprb
- left join mes_purchase_order mpo on mprb.po_no = mpo.po_no and mprb.material_id = mpo.material_id
+ left join mes_purchase_order mpo on mprb.fs_id = mpo.fentry_id
left join mes_base_material_info mbmi on mprb.material_id = mbmi.erp_id
+ LEFT JOIN (SELECT DISTINCT receive_bill_id FROM mes_base_barcode_info) mbbi
+ ON mprb.receive_bill_id = mbbi.receive_bill_id
and mprb.bill_no like concat('%', #{billNo}, '%')
and mprb.po_no like concat('%', #{poNo}, '%')
@@ -209,7 +209,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and mbmi.material_spec like concat('%', #{materialSpec}, '%')
and mbmi.material_id is not null
- and IF(EXISTS (SELECT 1 FROM mes_base_barcode_info WHERE receive_bill_id = mprb.receive_bill_id), '1', '0') = #{hasBarcodeFlag}
+ and IF(mbbi.receive_bill_id IS NOT NULL, '1', '0') = #{hasBarcodeFlag}
order by mprb.erp_modify_date desc
diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsStockTotalController.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsStockTotalController.java
index b943a943..6cdd3d04 100644
--- a/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsStockTotalController.java
+++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsStockTotalController.java
@@ -168,4 +168,16 @@ public class WmsStockTotalController extends BaseController
{
return toAjax(wmsStockTotalService.transferProductStockTotal(wmsStockTotalTransferVo));
}
+
+ /**
+ * 成品库存转销售订单(或将有销售订单的转安全库存)
+ */
+ @RequiresPermissions("wms:stocktotal:transferProduct")
+ @Log(title = "成品库存", businessType = BusinessType.TRANSFER)
+ @PostMapping("/transferProductStock")
+ public AjaxResult transferProductStock(@RequestBody WmsStockTotalTransferVo wmsStockTotalTransferVo)
+ {
+ return toAjax(wmsStockTotalService.transferProductStock(wmsStockTotalTransferVo));
+ }
+
}
diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsStockTotalTransferVo.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsStockTotalTransferVo.java
index a562093c..3c8bf6f4 100644
--- a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsStockTotalTransferVo.java
+++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsStockTotalTransferVo.java
@@ -39,4 +39,10 @@ public class WmsStockTotalTransferVo {
//序号
@NotNull(message = "序号必须输入")
private int index;
+
+ /**
+ * 成品库存ID
+ */
+ private Long productStockId;
+
}
diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsStockTotalService.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsStockTotalService.java
index 03e90000..bfe70a3c 100644
--- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsStockTotalService.java
+++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsStockTotalService.java
@@ -125,4 +125,12 @@ public interface IWmsStockTotalService
* @return 原材料库存
*/
public List selectWmsStockTotalExportList(WmsStockTotal wmsStockTotal);
+
+ /**
+ * 成品库存转销售订单(或将有销售订单的转安全库存)
+ * @param wmsStockTotalTransferVo
+ * @return
+ */
+ int transferProductStock(WmsStockTotalTransferVo wmsStockTotalTransferVo);
+
}
diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsStockTotalServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsStockTotalServiceImpl.java
index 2becccee..18beb71c 100644
--- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsStockTotalServiceImpl.java
+++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsStockTotalServiceImpl.java
@@ -526,4 +526,55 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService {
return wmsStockTotalMapper.selectWmsStockTotalExportList(wmsStockTotal);
}
+ /**
+ * 成品库存转销售订单(或将有销售订单的转安全库存)
+ * @param wmsStockTotalTransferVo
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public int transferProductStock(WmsStockTotalTransferVo wmsStockTotalTransferVo) {
+ BigDecimal transferAmount = wmsStockTotalTransferVo.getTransferAmount();
+ String safeFlag = wmsStockTotalTransferVo.getSafeFlag();
+ Long saleOrderId = wmsStockTotalTransferVo.getSaleOrderId();
+ String saleorderCode = wmsStockTotalTransferVo.getSaleorderCode();
+ Long productStockId = wmsStockTotalTransferVo.getProductStockId();
+
+ WmsProductStock wmsProductStock = wmsProductStockMapper.selectWmsProductStockByProductStockId(productStockId);
+ if (StringUtils.isNull(wmsProductStock)) {
+ throw new ServiceException("没有可转库存明细");
+ }
+ Long saleOrderIdOld = wmsProductStock.getSaleOrderId();
+ Long materialId = wmsProductStock.getProductId();
+
+ List mesBaseBarcodeInfoTransferVos = new ArrayList<>();
+ MesBaseBarcodeInfoTransferVo mesBaseBarcodeInfoTransferVo = new MesBaseBarcodeInfoTransferVo();
+ mesBaseBarcodeInfoTransferVo.setSaleOrderId(saleOrderId);
+ mesBaseBarcodeInfoTransferVo.setSaleOrderCode(saleorderCode);
+ mesBaseBarcodeInfoTransferVo.setSafeFlag(safeFlag);
+ mesBaseBarcodeInfoTransferVo.setBarcodeInfo(wmsProductStock.getProductBatch());
+ mesBaseBarcodeInfoTransferVos.add(mesBaseBarcodeInfoTransferVo);
+
+ wmsProductStock.setSafeFlag(safeFlag);
+ wmsProductStock.setSaleOrderId(saleOrderId);
+ wmsProductStock.setSaleorderCode(saleorderCode == null ? "" : saleorderCode);
+ wmsProductStock.setUpdateDate(new Date());
+ wmsProductStock.setUpdateBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname());
+ wmsProductStockMapper.updateWmsProductStock(wmsProductStock);
+
+ MesSaleOrderTransferVo mesSaleOrderTransferVo = new MesSaleOrderTransferVo();
+ mesSaleOrderTransferVo.setTransferAmount(transferAmount);
+ mesSaleOrderTransferVo.setOldSaleOrderId(saleOrderIdOld);
+ mesSaleOrderTransferVo.setNewSaleOrderId(saleOrderId);
+ mesSaleOrderTransferVo.setMaterialId(materialId);
+ mesSaleOrderTransferVo.setMesBaseBarcodeInfoTransferVos(mesBaseBarcodeInfoTransferVos);
+
+ R> transferBaseBarcodeInfosResult = remoteMesService.transferSaleOrders(mesSaleOrderTransferVo, SecurityConstants.INNER);
+ if (transferBaseBarcodeInfosResult.getCode() != Constants.SUCCESS) {//抛出异常,回滚事务
+ throw new RuntimeException(transferBaseBarcodeInfosResult.getMsg());
+ }
+
+ return 1;
+ }
+
}
diff --git a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml
index 6c7ef402..7217ce81 100644
--- a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml
+++ b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml
@@ -340,6 +340,7 @@
and wps.warehouse_id = #{warehouseId}
and wps.product_id = #{productId}
and wps.sale_order_id = #{saleOrderId}
+ and wps.product_stock_id = #{productStockId}
order by wbl.loc_column asc, wbl.loc_deep desc limit #{params.limit}
diff --git a/hw-ui/src/api/wms/stocktotal.js b/hw-ui/src/api/wms/stocktotal.js
index f8b76879..cff4b13b 100644
--- a/hw-ui/src/api/wms/stocktotal.js
+++ b/hw-ui/src/api/wms/stocktotal.js
@@ -99,3 +99,13 @@ export function selectMaterialInfosByVirtualMaterialId(params) {
params: params
})
}
+
+
+// 成品库存转销售订单(或将有销售订单的转安全库存)
+export function transferProductStock(data) {
+ return request({
+ url: '/wms/stocktotal/transferProductStock',
+ method: 'post',
+ data: data
+ })
+}
diff --git a/hw-ui/src/views/mes/saleOrder/selectSaleOrder.vue b/hw-ui/src/views/mes/saleOrder/selectSaleOrder.vue
index 00be353f..da4c8147 100644
--- a/hw-ui/src/views/mes/saleOrder/selectSaleOrder.vue
+++ b/hw-ui/src/views/mes/saleOrder/selectSaleOrder.vue
@@ -27,6 +27,16 @@
/>
+
+
+
+
+
转库存
-
+ 成品转库存
+
@@ -288,7 +296,7 @@
-
+
@@ -347,7 +355,7 @@ import {
transferRaw,
transferRawStockTotal,
transferProductStockTotal,
- selectMaterialInfosByVirtualMaterialId
+ selectMaterialInfosByVirtualMaterialId, transferProductStock
} from "@/api/wms/stocktotal";
import {getWarehouses,} from "@//api/wms/wmslocation";
import selectSaleOrder from '@//views/mes/saleOrder/selectSaleOrder.vue';
@@ -687,6 +695,20 @@ export default {
this.open = true;
},
+ handleProductStockTotalTransfer(row) {
+ this.reset();
+ this.transferType = "2";
+ let index = this.rawstockList.indexOf(row)
+ this.form.safeFlag = "0";
+ this.form.materialId = row.productId
+ this.form.productStockId = row.productStockId
+ this.form.transferAmount = row.totalAmount
+ this.form.stockTotalId = row.stockTotalId;
+ this.form.index = index;
+ this.rawStockInfosStr = "序号:" + (index + 1) + ",物料编码:" + row.materialCode + " 物料名称:" + row.materialName + " 物料规格:" + row.materialSpec + " 数量:" + row.totalAmount + " 销售订单:" + (row.saleorderCode ? row.saleorderCode : "无");
+ this.open = true;
+ },
+
// handleTransfer() {
// this.reset();
// this.transferType = "2";
@@ -731,17 +753,25 @@ export default {
this.submitLoading = false;
return;
}
-
-
-
- transferProductStockTotal(this.form).then(response => {
- this.$modal.msgSuccess("转库存成功");
- this.open = false;
- this.getList();
- this.getTwoList();
- }).finally(e=>{
- this.submitLoading = false;
- });
+ if (this.transferType === '1'){
+ transferProductStockTotal(this.form).then(response => {
+ this.$modal.msgSuccess("转库存成功");
+ this.open = false;
+ this.getList();
+ this.getTwoList();
+ }).finally(e=>{
+ this.submitLoading = false;
+ });
+ } else if (this.transferType === '2'){
+ transferProductStock(this.form).then(response => {
+ this.$modal.msgSuccess("转库存成功");
+ this.open = false;
+ this.getList();
+ this.getTwoList();
+ }).finally(e=>{
+ this.submitLoading = false;
+ });
+ }
} else if (this.type === this.STOCK_TYPE.RAW) {
if (this.transferType === '1') {//转总库存的原材料库存
if(this.form.transferAmount < 1){