| | |
| | | receiptLine.setItemId(noticeLine.getItemId()); |
| | | // 使用合格数量(如果有 IQC 则是合格数量,否则是到货数量) |
| | | receiptLine.setReceivedQuantity(noticeLine.getQualifiedQuantity() != null ? noticeLine.getQualifiedQuantity() : noticeLine.getArrivalQuantity()); |
| | | // 按采购订单行单价快照金额,供来票/对账使用 |
| | | fillReceiptLinePrice(receiptLine); |
| | | itemReceiptLineService.createItemReceiptLineFromArrivalNoticeLine(receiptLine); |
| | | } |
| | | |
| | | return receipt.getId(); |
| | | } |
| | | |
| | | /** |
| | | * 按采购订单行单价回填入库行金额,避免对账时再联表取价 |
| | | */ |
| | | private void fillReceiptLinePrice(MesWmItemReceiptLineDO receiptLine) { |
| | | if (receiptLine.getPurchaseOrderItemId() == null) { |
| | | return; |
| | | } |
| | | try { |
| | | var item = purchaseOrderApi.getPurchaseOrderItem(receiptLine.getPurchaseOrderItemId()).getData(); |
| | | if (item == null || item.getProductPrice() == null) { |
| | | return; |
| | | } |
| | | receiptLine.setPrice(item.getProductPrice()); |
| | | if (receiptLine.getReceivedQuantity() != null) { |
| | | receiptLine.setTotalPrice(item.getProductPrice().multiply(receiptLine.getReceivedQuantity())); |
| | | } |
| | | } catch (Exception ex) { |
| | | // 价格只是快照,采购订单行取不到时不阻断入库 |
| | | log.warn("[fillReceiptLinePrice][采购订单行({}) 价格快照失败]", receiptLine.getPurchaseOrderItemId(), ex); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void submitItemReceiptApproval(Long id, String processDefinitionKey) { |