check TCO before request purchase order
This commit is contained in:
@@ -72,4 +72,6 @@ public interface IExceptionMessage {
|
||||
"Please enter supplier for following purchase request : %s" /*)*/;
|
||||
public static final String TCO = /*$$(*/
|
||||
"CTO not validated for products : %s" /*)*/;
|
||||
public static final String NO_TCO = /*$$(*/
|
||||
"CTO not present for products : %s" /*)*/;
|
||||
}
|
||||
|
||||
@@ -110,6 +110,8 @@ public interface PurchaseOrderService {
|
||||
|
||||
public void validatePurchaseOrder(PurchaseOrder purchaseOrder) throws AxelorException, MalformedURLException, JSONException;
|
||||
|
||||
public void checkTcoToApprove(PurchaseOrder purchaseOrder) throws AxelorException;
|
||||
|
||||
public void finishPurchaseOrder(PurchaseOrder purchaseOrder);
|
||||
|
||||
public void cancelPurchaseOrder(PurchaseOrder purchaseOrder);
|
||||
|
||||
@@ -307,6 +307,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
@Override
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
public void requestPurchaseOrder(PurchaseOrder purchaseOrder) throws AxelorException {
|
||||
this.checkTcoToApprove(purchaseOrder);
|
||||
purchaseOrder.setStatusSelect(PurchaseOrderRepository.STATUS_REQUESTED);
|
||||
Partner partner = purchaseOrder.getSupplierPartner();
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user