change - 成品库存转销售订单、采购订单含税单价

master
yinq 21 hours ago
parent bf15098e8b
commit bceb5d5d5a

@ -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;
}

@ -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
<where>
<if test="billNo != null and billNo != ''"> and mprb.bill_no like concat('%', #{billNo}, '%')</if>
<if test="poNo != null and poNo != ''"> and mprb.po_no like concat('%', #{poNo}, '%')</if>
@ -209,7 +209,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialSpec != null and materialSpec != ''"> and mbmi.material_spec like concat('%', #{materialSpec}, '%')</if>
<if test="hasBarcodeFlag != null and hasBarcodeFlag != ''">
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}
</if>
</where>
order by mprb.erp_modify_date desc

@ -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));
}
}

@ -39,4 +39,10 @@ public class WmsStockTotalTransferVo {
//序号
@NotNull(message = "序号必须输入")
private int index;
/**
* ID
*/
private Long productStockId;
}

@ -125,4 +125,12 @@ public interface IWmsStockTotalService
* @return
*/
public List<WmsStockTotalExportVo> selectWmsStockTotalExportList(WmsStockTotal wmsStockTotal);
/**
*
* @param wmsStockTotalTransferVo
* @return
*/
int transferProductStock(WmsStockTotalTransferVo wmsStockTotalTransferVo);
}

@ -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<MesBaseBarcodeInfoTransferVo> 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;
}
}

@ -340,6 +340,7 @@
<if test="warehouseId != null ">and wps.warehouse_id = #{warehouseId}</if>
<if test="productId != null ">and wps.product_id = #{productId}</if>
<if test="saleOrderId != null and saleOrderId != ''">and wps.sale_order_id = #{saleOrderId}</if>
<if test="productStockId != null">and wps.product_stock_id = #{productStockId}</if>
</where>
order by wbl.loc_column asc, wbl.loc_deep desc limit #{params.limit}
</select>

@ -99,3 +99,13 @@ export function selectMaterialInfosByVirtualMaterialId(params) {
params: params
})
}
// 成品库存转销售订单(或将有销售订单的转安全库存)
export function transferProductStock(data) {
return request({
url: '/wms/stocktotal/transferProductStock',
method: 'post',
data: data
})
}

@ -27,6 +27,16 @@
/>
</el-form-item>
<el-form-item label="订单类型" prop="saleOrderClassfication">
<el-select v-model="queryParams.saleOrderClassfication" placeholder="请选择订单类型" clearable>
<el-option
v-for="dict in dict.type.mes_sale_order_classfication"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="物料规格" prop="materialSpec">
<el-input
@ -129,7 +139,7 @@ import { listSaleOrder } from "@/api/mes/saleOrder";
export default {
name: "saleOrderInfo",
dicts: ['document_status', 'is_release','mes_sale_order_is_release'],
dicts: ['document_status', 'is_release','mes_sale_order_is_release', 'mes_sale_order_classfication'],
props: {
defineData: {
type: Object,

@ -256,7 +256,15 @@
v-hasPermi="['wms:stocktotal:transfer']"
>转库存
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-shopping-cart-1"
v-if="type === STOCK_TYPE.PRODUCT"
@click="handleProductStockTotalTransfer(scope.row)"
v-hasPermi="['wms:stocktotal:transferProduct']"
>成品转库存
</el-button>
</template>
</el-table-column>
@ -288,7 +296,7 @@
</el-form-item>
<el-form-item label="销售订单号" prop="saleorderCode" v-if="form.safeFlag === SAFE_FLAG.NO">
<el-input v-model="form.saleorderCode" placeholder="请点击右侧检索采购订单" readonly>
<el-input v-model="form.saleorderCode" placeholder="请点击右侧检索销售订单" readonly>
<el-button slot="append" icon="el-icon-search" @click="handleSaleOrderSelect"></el-button>
</el-input>
</el-form-item>
@ -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,9 +753,7 @@ export default {
this.submitLoading = false;
return;
}
if (this.transferType === '1'){
transferProductStockTotal(this.form).then(response => {
this.$modal.msgSuccess("转库存成功");
this.open = false;
@ -742,6 +762,16 @@ export default {
}).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){

Loading…
Cancel
Save