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" /*)*/;
|
"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" /*)*/;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user