Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/MaterialInvoiceManagerImpl.java =================================================================== diff -u -r13112 -r13114 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/MaterialInvoiceManagerImpl.java (.../MaterialInvoiceManagerImpl.java) (revision 13112) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/MaterialInvoiceManagerImpl.java (.../MaterialInvoiceManagerImpl.java) (revision 13114) @@ -190,16 +190,20 @@ } Double settlementPrice = 0.0; + //还需发货的数量(根据库存发货实时调整) int needSendOutAmount = sendOutAmount.intValue(); while(true){ String sql = " where 1=1 and wareHouseId = " + warehouseId + " and materialDefinitionId = " + materialDefinitionId + " and amount > 0"; GoodsStock goodsStock = (GoodsStock)objectDao.getBySql(GoodsStock.class.getSimpleName(), sql); + //实际发生变动数量 + int stockChangeAmount = goodsStock.getAmount(); if(goodsStock.getAmount() >= needSendOutAmount){ + stockChangeAmount = needSendOutAmount; goodsStock.setAmount(goodsStock.getAmount() - needSendOutAmount); objectDao.saveOrUpdate(goodsStock); MaterialItem materialItem = new MaterialItem(); - materialItem.setAmount(needSendOutAmount); + materialItem.setAmount(stockChangeAmount); materialItem.setGoodsStockId(goodsStock.getId()); materialItem.setMaterialInvoice(materialInvoice); materialItem.setMaterialInvoiceItemID(materialInvoiceItem.getId()); @@ -216,12 +220,13 @@ .getAmount().toString()))).doubleValue(); break; } + stockChangeAmount = goodsStock.getAmount(); needSendOutAmount -= goodsStock.getAmount(); goodsStock.setAmount(0); objectDao.saveOrUpdate(goodsStock); MaterialItem materialItem = new MaterialItem(); - materialItem.setAmount(goodsStock.getAmount()); + materialItem.setAmount(stockChangeAmount); materialItem.setGoodsStockId(goodsStock.getId()); materialItem.setMaterialInvoice(materialInvoice); materialItem.setMaterialInvoiceItemID(materialInvoiceItem.getId());