| | |
| | | if (purchaseRequest.getOrderId() != null) { |
| | | throw exception(PURCHASE_REQUEST_ORDER_EXISTS); |
| | | } |
| | | // 3. 校验供应商 |
| | | supplierService.validateSupplier(supplierId); |
| | | // 3. 供应商以采购申请单为准:申请提交时已经选过供应商,生成订单不再要求重新选择 |
| | | // 兼容旧调用方仍显式传 supplierId 的情况,传了则以传入值为准 |
| | | Long targetSupplierId = supplierId != null ? supplierId : purchaseRequest.getSupplierId(); |
| | | if (targetSupplierId == null) { |
| | | throw exception(PURCHASE_REQUEST_SUPPLIER_REQUIRED); |
| | | } |
| | | supplierService.validateSupplier(targetSupplierId); |
| | | |
| | | // 4. 设置供应商并生成订单 |
| | | purchaseRequest.setSupplierId(supplierId); |
| | | purchaseRequest.setSupplierId(targetSupplierId); |
| | | return doGeneratePurchaseOrder(purchaseRequest); |
| | | } |
| | | |
| | |
| | | // 3. 创建采购订单 |
| | | ErpPurchaseOrderDO purchaseOrder = new ErpPurchaseOrderDO(); |
| | | purchaseOrder.setNo(orderNo); |
| | | purchaseOrder.setStatus(ErpAuditStatus.APPROVE.getStatus()); // 采购订单直接为已审核状态 |
| | | // 生成后为草稿:采购申请与采购台账字段不完全一致(付款日期、采购类型、付款方式等), |
| | | // 需要业务在采购台账里补充完整后再提交审批 |
| | | purchaseOrder.setStatus(ErpAuditStatus.DRAFT.getStatus()); |
| | | purchaseOrder.setSupplierId(purchaseRequest.getSupplierId()); |
| | | purchaseOrder.setOrderTime(purchaseRequest.getRequestTime()); |
| | | purchaseOrder.setTotalCount(purchaseRequest.getTotalCount()); |
| | |
| | | orderItem.setTaxPrice(item.getTaxPrice()); |
| | | orderItem.setRemark(item.getRemark()); |
| | | orderItem.setInCount(BigDecimal.ZERO); |
| | | orderItem.setQcCheckFlag(item.getQcCheckFlag() != null ? item.getQcCheckFlag() : false); |
| | | // 是否质检与采购申请保持一致:明细未明确标记时默认为「是」(历史申请单可能为 null) |
| | | orderItem.setQcCheckFlag(item.getQcCheckFlag() != null ? item.getQcCheckFlag() : true); |
| | | return orderItem; |
| | | }); |
| | | purchaseOrderItemMapper.insertBatch(orderItems); |
| | |
| | | // 5. 更新采购申请的订单信息 |
| | | purchaseRequestMapper.updateById(new ErpPurchaseRequestDO() |
| | | .setId(id) |
| | | .setSupplierId(purchaseRequest.getSupplierId()) |
| | | .setOrderId(purchaseOrder.getId()) |
| | | .setOrderNo(orderNo)); |
| | | |