Index: ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/TestDisinfectGoodsInvoiceWithDiffAncestorTousseDefinition.java
===================================================================
diff -u
--- ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/TestDisinfectGoodsInvoiceWithDiffAncestorTousseDefinition.java (revision 0)
+++ ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/TestDisinfectGoodsInvoiceWithDiffAncestorTousseDefinition.java (revision 17252)
@@ -0,0 +1,153 @@
+package test.forgon.disinfectsystem.invoicemanager.service;
+import static org.testng.Assert.*;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import org.springframework.test.annotation.Rollback;
+import org.testng.annotations.Test;
+
+import test.forgon.constant.Constants;
+import test.forgon.disinfectsystem.AbstractCSSDTest;
+
+import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition;
+import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance;
+import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse;
+import com.forgon.disinfectsystem.entity.invoicemanager.Invoice;
+import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan;
+import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication;
+import com.forgon.disinfectsystem.entity.tousseitem.TousseItem;
+
+public class TestDisinfectGoodsInvoiceWithDiffAncestorTousseDefinition extends AbstractCSSDTest {
+
+ //消毒物品器械包条码
+ private String [] barcodeArray1 = {"201410160001","201410160002","201410160003"};
+
+ /**
+ * 创建一张消毒物品申请单,申请数量为3个消毒物品
+ */
+ private void createDisifectGoodsApplication(){
+ RecyclingApplication application = new RecyclingApplication();
+ application.setSerialNumber("2014101600001");
+ application.setApplicant("吴启华");
+ application.setDepartCoding("3266");
+ application.setDepart("妇产科护士");
+ application.setSettleAccountsDepartCoding("3266");
+ application.setSettleAccountsDepart("妇产科护士");
+ application.setHandleDepart(Constants.ORG_UNIT_NAME_CSSD);
+ application.setHandleDepartCoding(Constants.ORG_UNIT_CODE_CSSD);
+ application.setApplicationTime(new Date());
+ application.setCommittedStatus(true);
+ application.setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER);
+ application.setType(InvoicePlan.TYPE_DISINFECT_GOODS_APPLICATION_FORM);
+ objectDao.saveOrUpdate(application);
+ ///
+ TousseDefinition ancestorTd = tousseDefinitionManager.getTousseDefinitionByName("test止血带");
+
+ TousseDefinition disinfectionTousse = new TousseDefinition();
+ disinfectionTousse.setTousseType(TousseDefinition.PACKAGE_TYPE_DISINFECTION);
+ disinfectionTousse.setIsTraceable("否");
+ disinfectionTousse.setName(ancestorTd.getName());
+ disinfectionTousse.setPrice(2.5);
+ disinfectionTousse.setIsCleanedEntirely("否");
+ disinfectionTousse.setIsRecycling(TousseDefinition.STR_YES);
+ disinfectionTousse.setHandlerDepartCode(Constants.ORG_UNIT_CODE_CSSD);
+ disinfectionTousse.setHandlerDepartName(Constants.ORG_UNIT_NAME_CSSD);
+ disinfectionTousse.setAncestorID(ancestorTd.getId());
+ objectDao.saveOrUpdate(disinfectionTousse);
+
+ for(String barcode : barcodeArray1){
+ TousseInstance tousseInstance = new TousseInstance();
+ tousseInstance.setTousseDefinition(disinfectionTousse);
+ tousseInstance.setTousseName(disinfectionTousse.getName());
+ tousseInstance.setBarcode(barcode);
+ tousseInstance.setType(TousseDefinition.PACKAGE_TYPE_DISINFECTION);
+ tousseInstance.setStatus(TousseInstance.STATUS_DISINFECTED);
+ tousseInstance.setPrice(3.5);
+ tousseInstance.setFluctuationPrice(3.5);
+ tousseInstance.setOrgUnitCoding(Constants.ORG_UNIT_CODE_DISINFECT);
+ tousseInstance.setOrgUnitName(Constants.ORG_UNIT_NAME_DISINFECT);
+ tousseInstance.setStatisticsAmount(10);
+ tousseInstance.setPackageType("胶带");
+ tousseInstanceManager.setToDefaultWareHouse(tousseInstance, Constants.ORG_UNIT_CODE_DISINFECT);
+ tousseInstanceManager.saveOrUpdate(tousseInstance);
+ tousseStockManager.increaseStockByTousseName(tousseInstance.getTousseName());
+ }
+ ///
+ List items = new ArrayList();
+ TousseItem item = new TousseItem();
+ item.setTousseName(disinfectionTousse.getName());
+ item.setTousseDefinitionId(disinfectionTousse.getId());
+ item.setAmount(3);
+ item.setDiposable("否");
+ item.setInvoicePlan(application);
+ items.add(item);
+ tousseItemManager.saveOrUpdate(item);
+ application.setApplicationItems(items);
+ objectDao.saveOrUpdate(application);
+ }
+
+ @Test
+ @Rollback(false)
+ public void testSendAllDisifectGoods(){
+ prepareData();
+ WareHouse wareHouse_CSSD = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD);
+ assertNotNull(wareHouse_CSSD);
+ JSONObject params = new JSONObject();
+ JSONArray invoiceItems1 = new JSONArray();
+
+ JSONObject invoiceItems1_1 = new JSONObject();
+ invoiceItems1_1.put("barcode", "201410160001");
+ invoiceItems1_1.put("sendAmount", 3);
+ invoiceItems1_1.put("isRoutine", TousseInstance.ROUTINE_YES);
+ invoiceItems1.add(invoiceItems1_1);
+
+ params.put("mode", "depart");
+ params.put("departCode", "3266");
+ params.put("assistantSender", "朱广兴");
+ params.put("sender", "朱广兴");
+ params.put("invoiceItems", invoiceItems1);
+ params.put("sourceWarehouseId", wareHouse_CSSD.getId());
+ params.put("sourceWarehouseName", wareHouse_CSSD.getName());
+ webServiceManager.submitInvoicePlans(params.toString());
+
+ //浮动价格
+ double tousseFluctionPrice = supplyRoomConfigManager.getTousseFluctuationPercent();
+
+ //发货单
+ Invoice invoice = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "2014101600001");
+
+ //全部发货
+ //断言发货单关联的包实例为3个
+ assertEquals(1 , invoice.getTousseInstances(objectDao).size());
+
+ TousseInstance instance = tousseInstanceManager.getTousseInstanceByBarcode(barcodeArray1[0]);
+ //断言发货状态为已发货
+ assertEquals(TousseInstance.STATUS_SHIPPED , instance.getStatus());
+
+ //断言申请单状态为部分发货(因为申请项为三个不同条码的物品,而发货只发其中一个条码)
+ assertEquals(InvoicePlan.DELIVERSTATUS_PARTDELIVERED , invoice.getInvoicePlan().getDeliverStatus());
+
+ //断言发货单金额
+ assertEquals( 3.5 *tousseFluctionPrice , invoice.getTotalPrice());
+
+
+ }
+
+
+ private void prepareData(){
+ initCSSDData();
+ makeActiveUser("admin");
+ //创建消毒物品器械包定义
+ initBasicData();
+ //创建消毒物品申请单
+ createDisifectGoodsApplication();
+ //创建消毒物品器械包并增加库存
+// createDisifectGoodsInstanceAndAddStroge();
+ }
+
+}
Index: ssts-web/src/test/resources/test/forgon/disinfectsystem/invoicemanager/service/AllTests.xml
===================================================================
diff -u -r17062 -r17252
--- ssts-web/src/test/resources/test/forgon/disinfectsystem/invoicemanager/service/AllTests.xml (.../AllTests.xml) (revision 17062)
+++ ssts-web/src/test/resources/test/forgon/disinfectsystem/invoicemanager/service/AllTests.xml (.../AllTests.xml) (revision 17252)
@@ -21,6 +21,8 @@
+
+
\ No newline at end of file