Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r16404 -r16405 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 16404) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 16405) @@ -8219,7 +8219,7 @@ tousseDefinitionInfoMap.put(tousseDefinitionId.toString(), jsonObj); } int totalNotSendAmount = JSONUtil.optInt(jsonObj, "notSendAmount", 0); - jsonObj.put("notSendAmount", totalNotSendAmount+totalNotSendAmount); + jsonObj.put("notSendAmount", totalNotSendAmount + notSendAmount); } tousseDefinitionIdSet.add(tousseDefinitionId); } @@ -8267,6 +8267,7 @@ String barcode = tousseInstance.getBarcode(); JSONObject obj = new JSONObject(); obj.put("id", tousseInstance.getId()); + obj.put("tousseDefinitionId", td.getId()); obj.put("showTousseName", tousseInstance.getShowTousseName()); obj.put("name", tousseInstance.getTousseName()); Index: ssts-web/src/main/webapp/disinfectsystem/invoice/auxiliaryInvoiceForm.js =================================================================== diff -u -r16404 -r16405 --- ssts-web/src/main/webapp/disinfectsystem/invoice/auxiliaryInvoiceForm.js (.../auxiliaryInvoiceForm.js) (revision 16404) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/auxiliaryInvoiceForm.js (.../auxiliaryInvoiceForm.js) (revision 16405) @@ -19,6 +19,7 @@ var auxiliaryInvoice_addGridItem = Ext.data.Record.create([ {name : 'id'}, + {name : 'tousseDefinitionId'}, {name : 'barcode'}, {name : 'name'}, {name : 'showTousseName'}, @@ -85,11 +86,13 @@ var rd = new Ext.data.JsonReader( { fields : [ {name : 'id'}, + {name : 'tousseDefinitionId'}, {name : 'barcode'}, {name : 'name'}, {name : 'showTousseName'}, {name : 'added'}, {name : 'count'}, + {name : 'notSendAmount'}, {name : 'middlePackageAmount'}, {name : 'diposable'}, {name : 'tousseType'}, @@ -157,6 +160,7 @@ if(sourceWarehouseIdCmp != null){ var sourceWarehouseId = sourceWarehouseIdCmp.getValue(); auxiliaryInvoice_refreshTotalAmount(); + resetAddedStatus(); } } } @@ -824,9 +828,9 @@ } } } - - addOneTousse(rows[i]); - rows[i].set('added',true); + if(addOneTousse(rows[i])){ + rows[i].set('added',true); + } addTousses.push(goods); } if(addTousses.length > 0){ @@ -836,16 +840,55 @@ top.Ext.getCmp('auxiliaryInvoice_sendOutGoodsDetail').getSelectionModel().clearSelections(); } } - +function resetAddedStatus(){ + var addedBarcodes = {}; + for ( var i = 0; i < sendOutGoodsStore.getCount(); i++) { + var record = sendOutGoodsStore.getAt(i); + var goods = record.data; + var barcode = goods.barcode; + addedBarcodes[barcode] = goods; + } + for ( var i = 0; i < recyclingapplicationStore.getCount(); i++) { + var record = recyclingapplicationStore.getAt(i); + var goods = record.data; + var barcode = goods.barcode; + if(addedBarcodes[barcode]){ + record.set('added',true); + } + } +} +function getAddedCountByTousseDefinitionId(tousseDefinitionId){ + var count = 0; + for ( var i = 0; i < sendOutGoodsStore.getCount(); i++) { + var record = sendOutGoodsStore.getAt(i); + var goods = record.data; + var goodsTousseDefinitionId = goods.tousseDefinitionId; + if(goodsTousseDefinitionId == tousseDefinitionId){ + ++count; + } + } + return count; +} function addOneTousse(r){ var tousse = r.data; var goods = getSendOutGoodsByBarcode(tousse.barcode); if(goods != null){ showResult('条形码:'+tousse.barcode+' 已经存在!'); return false; } + if(tousse.notSendAmount > 0){ + var addCount = getAddedCountByTousseDefinitionId(tousse.tousseDefinitionId); + if(addCount >= tousse.notSendAmount){ + showResult(tousse.showTousseName + '已满足发货计划!'); + return false; + } + } + + // 数量是否大于等于待发货数量 + var record = new auxiliaryInvoice_addGridItem({ id : tousse.id, + tousseDefinitionId : tousse.tousseDefinitionId, barcode : tousse.barcode, name : tousse.name, showTousseName : tousse.showTousseName, @@ -864,4 +907,5 @@ isRoutine : tousse.isRoutine }); sendOutGoodsStore.add(record); + return true; }