### Eclipse Workspace Patch 1.0 #P openmrs-api Index: src/main/java/org/openmrs/api/OrderService.java =================================================================== --- src/main/java/org/openmrs/api/OrderService.java (revision 25369) +++ src/main/java/org/openmrs/api/OrderService.java (working copy) @@ -173,6 +173,9 @@ * Unknown or Unknown Location, or if there's no encounter type with name 'Regimen * Change' */ + @Authorized(PrivilegeConstants.EDIT_ORDERS) + public Order discontinueFutureOrder(Order order, Concept discontinueReason, Date discontinueDate) throws APIException; + @Authorized(value = { PrivilegeConstants.ADD_ORDERS, PrivilegeConstants.ADD_ENCOUNTERS }, requireAll = true) public void createOrdersAndEncounter(Patient p, Collection orders) throws APIException; ### Eclipse Workspace Patch 1.0 #P openmrs-api Index: src/main/java/org/openmrs/api/impl/OrderServiceImpl.java =================================================================== --- src/main/java/org/openmrs/api/impl/OrderServiceImpl.java (revision 25369) +++ src/main/java/org/openmrs/api/impl/OrderServiceImpl.java (working copy) @@ -157,6 +157,7 @@ * java.util.Date) */ public Order discontinueOrder(Order order, Concept discontinueReason, Date discontinueDate) throws APIException { + order.setDiscontinued(Boolean.TRUE); order.setDiscontinuedReason(discontinueReason); order.setDiscontinuedDate(discontinueDate); @@ -165,6 +166,15 @@ return saveOrder(order); } + public Order discontinueFutureOrder(Order order, Concept discontinueReason, Date discontinueDate) throws APIException { + + order.setDiscontinuedReason(discontinueReason); + order.setAutoExpireDate(discontinueDate); + order.setDiscontinuedBy(Context.getAuthenticatedUser()); + + return saveOrder(order); + } + /** * @see org.openmrs.api.OrderService#undiscontinueOrder(org.openmrs.Order) */ ### Eclipse Workspace Patch 1.0 #P openmrs-web Index: src/main/java/org/openmrs/web/dwr/DWROrderService.java =================================================================== --- src/main/java/org/openmrs/web/dwr/DWROrderService.java (revision 25369) +++ src/main/java/org/openmrs/web/dwr/DWROrderService.java (working copy) @@ -19,6 +19,7 @@ import java.util.List; import java.util.Map; import java.util.Vector; +import java.util.Calendar; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -105,20 +106,28 @@ public void discontinueOrder(Integer orderId, String discontinueReason, String discontinueDate) throws DWRException { Date dDiscDate = null; + Date currentDate = null; if (discontinueDate != null) { SimpleDateFormat sdf = Context.getDateFormat(); try { + String str = sdf.format(Calendar.getInstance().getTime()); + currentDate = sdf.parse(str); dDiscDate = sdf.parse(discontinueDate); } catch (ParseException e) { throw new DWRException(e.getMessage()); } } - Order o = Context.getOrderService().getOrder(orderId); try { - Context.getOrderService().discontinueOrder(o, Context.getConceptService().getConcept(discontinueReason), - dDiscDate); + if (dDiscDate.after(currentDate)) { + Order k = Context.getOrderService().discontinueFutureOrder(o, + Context.getConceptService().getConcept(discontinueReason), dDiscDate); + } else { + Order k = Context.getOrderService().discontinueOrder(o, + Context.getConceptService().getConcept(discontinueReason), dDiscDate); + + } } catch (APIException e) { throw new DWRException(e.getMessage());