diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderService.java b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderService.java index 48dec94..fc7a6ed 100644 --- a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderService.java +++ b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderService.java @@ -26,7 +26,7 @@ import com.axelor.apps.purchase.db.PurchaseOrder; import com.axelor.auth.db.User; import com.axelor.exception.AxelorException; import com.google.inject.persist.Transactional; - +import com.axelor.apps.base.db.CancelReason; import wslite.json.JSONException; import java.net.MalformedURLException; @@ -112,4 +112,6 @@ public interface PurchaseOrderService { public void finishPurchaseOrder(PurchaseOrder purchaseOrder); public void cancelPurchaseOrder(PurchaseOrder purchaseOrder); + + public void cancelReasonPurchaseOrder(PurchaseOrder purchaseOrder, CancelReason cancelReason, String cancelReasonStr); } diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderServiceImpl.java b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderServiceImpl.java index 51b7c55..403e96a 100644 --- a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderServiceImpl.java +++ b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderServiceImpl.java @@ -57,7 +57,7 @@ import com.axelor.inject.Beans; import com.google.common.base.Strings; import com.google.inject.Inject; import com.google.inject.persist.Transactional; - +import com.axelor.apps.base.db.CancelReason; import wslite.json.JSONException; import java.lang.invoke.MethodHandles; @@ -528,4 +528,20 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { importationFolderRepository.save(importationFolder); } + + + @Override + @Transactional + public void cancelReasonPurchaseOrder( + PurchaseOrder purchaseOrder, CancelReason cancelReason, String cancelReasonStr){ + + purchaseOrder.setStatusSelect(PurchaseOrderRepository.STATUS_CANCELED); + purchaseOrder.setCancelReason(cancelReason); + if (Strings.isNullOrEmpty(cancelReasonStr)) { + purchaseOrder.setCancelReasonStr(cancelReason.getName()); + } else { + purchaseOrder.setCancelReasonStr(cancelReasonStr); + } + purchaseOrderRepo.save(purchaseOrder); + } } diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/web/PurchaseOrderController.java b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/web/PurchaseOrderController.java index b3d632d..71dde02 100644 --- a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/web/PurchaseOrderController.java +++ b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/web/PurchaseOrderController.java @@ -538,4 +538,20 @@ public class PurchaseOrderController { TraceBackService.trace(response, e); } } + + public void cancelReasonPurchaseOrder(ActionRequest request, ActionResponse response) { + try { + PurchaseOrder purchaseOrder = request.getContext().asType(PurchaseOrder.class); + Beans.get(PurchaseOrderService.class) + .cancelReasonPurchaseOrder( + Beans.get(PurchaseOrderRepository.class).find(purchaseOrder.getId()), + purchaseOrder.getCancelReason(), + purchaseOrder.getCancelReasonStr()); + + response.setFlash(I18n.get("The purchase order was canceled")); + response.setCanClose(true); + } catch (Exception e) { + TraceBackService.trace(response, e); + } + } } diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/resources/domains/PurchaseOrder.xml b/modules/axelor-open-suite/axelor-purchase/src/main/resources/domains/PurchaseOrder.xml index ea5f96f..f783437 100644 --- a/modules/axelor-open-suite/axelor-purchase/src/main/resources/domains/PurchaseOrder.xml +++ b/modules/axelor-open-suite/axelor-purchase/src/main/resources/domains/PurchaseOrder.xml @@ -70,6 +70,9 @@ + + + @@ -98,6 +101,8 @@ + +