/** Export the Payment Terms from one client and import into another client. */ public void testBPaymentTerm() { setTestUserContext(); setAccess(); final List<PaymentTerm> pts = getPaymentTerms(); String xml = getXML(pts); log.debug(xml); // there is a unique constraint on name xml = xml.replaceAll("</name>", "t</name>"); // export to client 1000001 setUserContext(QA_TEST_ADMIN_USER_ID); // don't be bothered by access checks... setAccess(); final ImportResult ir = DataImportService.getInstance() .importDataFromXML( OBDal.getInstance().get(Client.class, QA_TEST_CLIENT_ID), OBDal.getInstance().get(Organization.class, QA_TEST_ORG_ID), xml); if (ir.getException() != null) { ir.getException().printStackTrace(System.err); fail(ir.getException().getMessage()); } else if (ir.getErrorMessages() != null) { fail(ir.getErrorMessages()); } assertEquals(TOTAL_PT_PTL, ir.getInsertedObjects().size()); assertEquals(0, ir.getUpdatedObjects().size()); }
/** Add a PaymentTermLine in the xml and import it, there should be an extra line then. */ public void testGPaymentTerm() { setUserContext(QA_TEST_ADMIN_USER_ID); setAccess(); // make a copy of the paymentterms and their children so that the // original db is not updated final List<BaseOBObject> pts = DalUtil.copyAll(new ArrayList<BaseOBObject>(getPaymentTerms()), true); // add one at the back for (final BaseOBObject bob : pts) { final PaymentTerm pt = (PaymentTerm) bob; pt.setId("abc"); if (pt.getFinancialMgmtPaymentTermLineList().isEmpty()) { continue; } final PaymentTermLine ptl0 = pt.getFinancialMgmtPaymentTermLineList().get(0); ptl0.setPaymentTerms(pt); final PaymentTermLine ptl = (PaymentTermLine) DalUtil.copy(ptl0); ptl.setId(null); ptl.setClient(null); ptl.setOrganization(null); ptl.setLineNo((long) NO_OF_PT_LINE); pt.getFinancialMgmtPaymentTermLineList().add(ptl); ptl.setPaymentTerms(pt); } String xml = getXML(pts); // log.debug(xml); // there is a unique constraint on name xml = xml.replaceAll("</name>", "t</name>"); setUserContext(QA_TEST_ADMIN_USER_ID); setAccess(); final ImportResult ir = DataImportService.getInstance() .importDataFromXML( OBDal.getInstance().get(Client.class, QA_TEST_CLIENT_ID), OBDal.getInstance().get(Organization.class, QA_TEST_ORG_ID), xml); if (ir.getException() != null) { ir.getException().printStackTrace(System.err); fail(ir.getException().getMessage()); } // + 1 for the inserted line assertEquals(TOTAL_PT_PTL + 1, ir.getInsertedObjects().size()); for (final Object o : ir.getInsertedObjects()) { assertTrue( o instanceof PaymentTermTrl || o instanceof PaymentTerm || o instanceof PaymentTermLine); } }
/** * Test removal of a PaymentTermLine from a PaymentTerm in the xml, then import. After importing * the PaymentTermLine should have gone. */ public void testEPaymentTerm() { setTestUserContext(); setAccess(); // make a copy of the paymentterms and their children so that the // original db is not updated final List<BaseOBObject> pts = DalUtil.copyAll(new ArrayList<BaseOBObject>(getPaymentTerms()), false); for (final BaseOBObject bob : pts) { final PaymentTerm pt = (PaymentTerm) bob; final PaymentTermLine ptl = pt.getFinancialMgmtPaymentTermLineList().get(1); pt.getFinancialMgmtPaymentTermLineList().remove(ptl); } String xml = getXML(pts); // there is a unique constraint on name xml = xml.replaceAll("</name>", "t</name>"); setUserContext(QA_TEST_ADMIN_USER_ID); // a payment term line is not deletable, but for this test it should be done anyway // force this by being admin OBContext.setAdminMode(); try { final ImportResult ir = DataImportService.getInstance() .importDataFromXML( OBDal.getInstance().get(Client.class, QA_TEST_CLIENT_ID), OBDal.getInstance().get(Organization.class, QA_TEST_ORG_ID), xml); if (ir.getException() != null) { ir.getException().printStackTrace(System.err); fail(ir.getException().getMessage()); } assertEquals(0, ir.getInsertedObjects().size()); // name of paymentterm has changed // overduepaymentrule of paymenttermline is set back to 1 assertEquals(2, ir.getUpdatedObjects().size()); for (final Object o : ir.getUpdatedObjects()) { assertTrue(o instanceof PaymentTerm || o instanceof PaymentTermLine); } } finally { OBContext.restorePreviousMode(); } }
/** * Now do the same as in {@link #testCPaymentTerm()} only now with some small changes in the xml, * so that some objects are updated. */ public void testDPaymentTerm() { setTestUserContext(); setAccess(); // make a copy of the paymentterms and their children so that the // original db is not updated final List<BaseOBObject> pts = DalUtil.copyAll(new ArrayList<BaseOBObject>(getPaymentTerms()), false); // change some data and export final PaymentTerm pt = (PaymentTerm) pts.get(0); pt.setName("testtest"); pt.getFinancialMgmtPaymentTermLineList().get(0).setOverduePaymentDayRule("2"); String xml = getXML(pts); xml = xml.replaceAll("</name>", "t</name>"); setUserContext(QA_TEST_ADMIN_USER_ID); setAccess(); final ImportResult ir = DataImportService.getInstance() .importDataFromXML( OBDal.getInstance().get(Client.class, QA_TEST_CLIENT_ID), OBDal.getInstance().get(Organization.class, QA_TEST_ORG_ID), xml); if (ir.getException() != null) { ir.getException().printStackTrace(System.err); fail(ir.getException().getMessage()); } assertEquals(0, ir.getInsertedObjects().size()); assertEquals(2, ir.getUpdatedObjects().size()); for (final Object o : ir.getUpdatedObjects()) { assertTrue(o instanceof PaymentTerm || o instanceof PaymentTermLine); if (o instanceof PaymentTermLine) { final PaymentTermLine ptl = (PaymentTermLine) o; assertTrue(ir.getUpdatedObjects().contains(ptl.getPaymentTerms())); } } }