云
5 天以前 1d9cfc91e7255b9e139b20ff230cb19246f19193
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInvoiceServiceImpl.java
@@ -87,10 +87,8 @@
        // 1.2 校验可开票金额超过上限
        validatePurchaseInvoicePriceExceedsLimit(createReqVO);
        // 1.3 生成来票编号
        String no = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_INVOICE_NO_PREFIX);
        if (invoiceMapper.selectByNo(no) != null) {
            throw exception(PURCHASE_INVOICE_NO_EXISTS);
        }
        String no = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_INVOICE_NO_PREFIX,
                candidate -> invoiceMapper.selectByNo(candidate) != null);
        // 2.1 插入来票(创建后即为有效状态,无需审核)
        ErpPurchaseInvoiceDO invoice = BeanUtils.toBean(createReqVO, ErpPurchaseInvoiceDO.class).setNo(no);
@@ -121,7 +119,8 @@
     */
    private void validateItemReceipt(ErpPurchaseInvoiceSaveReqVO reqVO, ErpPurchaseOrderDO purchaseOrder) {
        if (reqVO.getItemReceiptId() == null) {
            return; // 存量/未绑定时允许为空
            throw new ServiceException(PURCHASE_INVOICE_CREATE_FAIL_RECEIPT_NOT_EXISTS.getCode(),
                    "采购来票必须绑定已完成的采购入库单。请先在 MES 完成入库,再选择对应入库单。");
        }
        MesWmItemReceiptRespDTO receipt = mesWmItemReceiptApi.getItemReceipt(reqVO.getItemReceiptId());
        if (receipt == null) {