From 0d381faf99dde086cdf4c5395a628c95d70cbe8b Mon Sep 17 00:00:00 2001 From: hengsin Date: Thu, 26 Nov 2020 21:17:40 +0800 Subject: [PATCH] IDEMPIERE-4187 implement the usage of workflows in processes (#416) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - incorporate suggestion from Martin Schönbeck to unit test --- .../org/idempiere/test/model/ProcessTest.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/org.idempiere.test/src/org/idempiere/test/model/ProcessTest.java b/org.idempiere.test/src/org/idempiere/test/model/ProcessTest.java index 3d97a3c32c..66a38aafd0 100644 --- a/org.idempiere.test/src/org/idempiere/test/model/ProcessTest.java +++ b/org.idempiere.test/src/org/idempiere/test/model/ProcessTest.java @@ -177,6 +177,34 @@ public class ProcessTest extends AbstractTestCase { order.load(getTrxName()); assertEquals(DocAction.STATUS_Completed, order.getDocStatus(), "Expected Completed Status for Order"); + //dummy order for dummy shipment below + MOrder order1 = new MOrder(Env.getCtx(), 0, getTrxName()); + //Joe Block + order1.setBPartner(MBPartner.get(Env.getCtx(), 118)); + order1.setC_DocTypeTarget_ID(MOrder.DocSubTypeSO_Standard); + order1.setDeliveryRule(MOrder.DELIVERYRULE_CompleteOrder); + order1.setDocStatus(DocAction.STATUS_Drafted); + order1.setDocAction(DocAction.ACTION_Complete); + order1.setDateOrdered(today); + order1.setDatePromised(today); + order1.saveEx(); + + MOrderLine line2 = new MOrderLine(order1); + line2.setLine(10); + //Azalea Bush + line2.setProduct(MProduct.get(Env.getCtx(), 128)); + line2.setQty(new BigDecimal("1")); + line2.setDatePromised(today); + line2.saveEx(); + + pi = MWorkflow.runDocumentActionWorkflow(order1, DocAction.ACTION_Complete); + if (pi.isError()) { + fail("Failed to complete order" + (Util.isEmpty(pi.getSummary()) ? "" : " : "+pi.getSummary())); + return; + } + order1.load(getTrxName()); + assertEquals(DocAction.STATUS_Completed, order1.getDocStatus(), "Expected Completed Status for Order"); + int Process_InOutConfirmation = 124; MWorkflow wf = new MWorkflow(Env.getCtx(), Process_InOutConfirmation, null); MWFNode processNode = new MWFNode(wf, "Process_InOut", "Process_InOut"); @@ -199,6 +227,13 @@ public class ProcessTest extends AbstractTestCase { docCompleteNodeNext.saveEx(); try { + //dummy shipment to make sure next m_inout_id != m_inoutconfirm_id + int MM_Shipment=120; + MInOut inout1 = new MInOut(order1, MM_Shipment, order1.getDateOrdered()); + inout1.setDocStatus(DocAction.STATUS_Drafted); + inout1.setDocAction(DocAction.STATUS_Completed); + inout1.saveEx(); + int MM_Shipment_With_Pick=148; MInOut inout = new MInOut(order, MM_Shipment_With_Pick, order.getDateOrdered()); inout.setDocStatus(DocAction.STATUS_Drafted); @@ -219,6 +254,8 @@ public class ProcessTest extends AbstractTestCase { MInOutConfirm[] confirmations = inout.getConfirmations(true); assertEquals(1, confirmations.length, "Expected 1 Shipment Confirmation Document"); + assertTrue(confirmations[0].getM_InOutConfirm_ID() != inout.getM_InOut_ID(), "Test should run with M_InOut_ID != M_InOutConfirm_ID"); + pi = MWorkflow.runDocumentActionWorkflow(confirmations[0], DocAction.ACTION_Complete); if (pi.isError()) { fail("Failed to complete shipment confirmation" + (Util.isEmpty(pi.getSummary()) ? "" : " : "+pi.getSummary()));