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 48dec94d..fc7a6eda 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 51b7c55f..403e96a6 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 b3d632d3..71dde02d 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 ea5f96f2..f7834372 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 @@