check TCO before request purchase order

This commit is contained in:
2022-11-07 08:49:05 +01:00
parent a3b567d510
commit 17fee20cee
3 changed files with 36 additions and 0 deletions

View File

@@ -72,4 +72,6 @@ public interface IExceptionMessage {
"Please enter supplier for following purchase request : %s" /*)*/; "Please enter supplier for following purchase request : %s" /*)*/;
public static final String TCO = /*$$(*/ public static final String TCO = /*$$(*/
"CTO not validated for products : %s" /*)*/; "CTO not validated for products : %s" /*)*/;
public static final String NO_TCO = /*$$(*/
"CTO not present for products : %s" /*)*/;
} }

View File

@@ -110,6 +110,8 @@ public interface PurchaseOrderService {
public void validatePurchaseOrder(PurchaseOrder purchaseOrder) throws AxelorException, MalformedURLException, JSONException; public void validatePurchaseOrder(PurchaseOrder purchaseOrder) throws AxelorException, MalformedURLException, JSONException;
public void checkTcoToApprove(PurchaseOrder purchaseOrder) throws AxelorException;
public void finishPurchaseOrder(PurchaseOrder purchaseOrder); public void finishPurchaseOrder(PurchaseOrder purchaseOrder);
public void cancelPurchaseOrder(PurchaseOrder purchaseOrder); public void cancelPurchaseOrder(PurchaseOrder purchaseOrder);

View File

@@ -307,6 +307,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
@Override @Override
@Transactional(rollbackOn = {Exception.class}) @Transactional(rollbackOn = {Exception.class})
public void requestPurchaseOrder(PurchaseOrder purchaseOrder) throws AxelorException { public void requestPurchaseOrder(PurchaseOrder purchaseOrder) throws AxelorException {
this.checkTcoToApprove(purchaseOrder);
purchaseOrder.setStatusSelect(PurchaseOrderRepository.STATUS_REQUESTED); purchaseOrder.setStatusSelect(PurchaseOrderRepository.STATUS_REQUESTED);
Partner partner = purchaseOrder.getSupplierPartner(); Partner partner = purchaseOrder.getSupplierPartner();
Company company = purchaseOrder.getCompany(); Company company = purchaseOrder.getCompany();
@@ -609,6 +610,37 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
} }
public void checkTcoToApprove(PurchaseOrder purchaseOrder) throws AxelorException{
/*vérifier si tous les tco sont validées */
javax.persistence.Query dateQuery =
com.axelor
.db
.JPA
.em()
.createNativeQuery("SELECT A.product "+
"FROM PURCHASE_PURCHASE_ORDER_LINE AS A "+
"LEFT JOIN PUBLIC.SUPPLIERMANAGEMENT_PURCHASE_ORDER_SUPPLIER_LINE AS B "+
"ON A.ID = B.PURCHASE_ORDER_LINE "+
"WHERE A.PURCHASE_ORDER = "+purchaseOrder.getId()+" AND (A.ARCHIVED IS NOT TRUE OR B.ARCHIVED IS NOT TRUE) and B.ID is null "+
"GROUP BY A.ID, B.ID");
List<BigInteger> productsResult = dateQuery.getResultList();
List<String> products = new ArrayList<>();
for (BigInteger id : productsResult) {
Product product = Beans.get(ProductRepository.class).find(id.longValue());
products.add(product.getFullName());
}
if(products.size() > 0){
throw new AxelorException(
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
I18n.get(IExceptionMessage.NO_TCO),products);
}
}
@Transactional @Transactional