Merge pull request #23 from root/dev
vérifier si tous TCO sont validées
This commit is contained in:
@@ -63,4 +63,6 @@ public interface IExceptionMessage {
|
|||||||
"There is no sequence set for the purchase requests for the company %s" /*)*/;
|
"There is no sequence set for the purchase requests for the company %s" /*)*/;
|
||||||
public static final String PURCHASE_REQUEST_MISSING_SUPPLIER_USER = /*$$(*/
|
public static final String PURCHASE_REQUEST_MISSING_SUPPLIER_USER = /*$$(*/
|
||||||
"Please enter supplier for following purchase request : %s" /*)*/;
|
"Please enter supplier for following purchase request : %s" /*)*/;
|
||||||
|
public static final String TCO = /*$$(*/
|
||||||
|
"CTO not validated for products : %s" /*)*/;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ import com.axelor.apps.purchase.db.PurchaseOrderLine;
|
|||||||
import com.axelor.apps.purchase.db.PurchaseOrderLineTax;
|
import com.axelor.apps.purchase.db.PurchaseOrderLineTax;
|
||||||
import com.axelor.apps.purchase.db.repo.ImportationFolderRepository;
|
import com.axelor.apps.purchase.db.repo.ImportationFolderRepository;
|
||||||
import com.axelor.apps.purchase.db.repo.PurchaseOrderRepository;
|
import com.axelor.apps.purchase.db.repo.PurchaseOrderRepository;
|
||||||
|
import com.axelor.apps.purchase.db.repo.PurchaseOrderLineRepository;
|
||||||
import com.axelor.apps.purchase.exception.IExceptionMessage;
|
import com.axelor.apps.purchase.exception.IExceptionMessage;
|
||||||
import com.axelor.apps.purchase.report.IReport;
|
import com.axelor.apps.purchase.report.IReport;
|
||||||
import com.axelor.apps.purchase.service.app.AppPurchaseService;
|
import com.axelor.apps.purchase.service.app.AppPurchaseService;
|
||||||
@@ -59,13 +60,15 @@ import com.google.inject.Inject;
|
|||||||
import com.google.inject.persist.Transactional;
|
import com.google.inject.persist.Transactional;
|
||||||
import com.axelor.apps.base.db.CancelReason;
|
import com.axelor.apps.base.db.CancelReason;
|
||||||
import wslite.json.JSONException;
|
import wslite.json.JSONException;
|
||||||
|
|
||||||
import java.lang.invoke.MethodHandles;
|
import java.lang.invoke.MethodHandles;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.math.BigInteger;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -459,6 +462,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackOn = {Exception.class})
|
@Transactional(rollbackOn = {Exception.class})
|
||||||
public void validatePurchaseOrder(PurchaseOrder purchaseOrder) throws AxelorException, MalformedURLException, JSONException {
|
public void validatePurchaseOrder(PurchaseOrder purchaseOrder) throws AxelorException, MalformedURLException, JSONException {
|
||||||
|
checkAllTco(purchaseOrder);
|
||||||
computePurchaseOrder(purchaseOrder);
|
computePurchaseOrder(purchaseOrder);
|
||||||
|
|
||||||
purchaseOrder.setStatusSelect(PurchaseOrderRepository.STATUS_VALIDATED);
|
purchaseOrder.setStatusSelect(PurchaseOrderRepository.STATUS_VALIDATED);
|
||||||
@@ -544,4 +548,54 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
}
|
}
|
||||||
purchaseOrderRepo.save(purchaseOrder);
|
purchaseOrderRepo.save(purchaseOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void checkAllTco(PurchaseOrder purchaseOrder) throws AxelorException{
|
||||||
|
/*vérifier si tous les tco sont validées */
|
||||||
|
PurchaseOrderLineService purchaseOrderLineService = Beans.get(PurchaseOrderLineService.class);
|
||||||
|
javax.persistence.Query dateQuery =
|
||||||
|
com.axelor
|
||||||
|
.db
|
||||||
|
.JPA
|
||||||
|
.em()
|
||||||
|
.createNativeQuery(
|
||||||
|
"SELECT a.id 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 b.state_select = 3 and ( a.archived is not true or b.archived is not true ) "+
|
||||||
|
"group by a.id , b.state_select ");
|
||||||
|
List<BigInteger> purchaseOrdeLineAccepted = dateQuery.getResultList();
|
||||||
|
|
||||||
|
javax.persistence.Query dateQueryTow =
|
||||||
|
com.axelor
|
||||||
|
.db
|
||||||
|
.JPA
|
||||||
|
.em()
|
||||||
|
.createNativeQuery(
|
||||||
|
"SELECT a.id 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 ) "+
|
||||||
|
"group by a.id");
|
||||||
|
List<BigInteger> purchaseOrdeLineAll = dateQueryTow.getResultList();
|
||||||
|
|
||||||
|
// subtracting Lists
|
||||||
|
Set<BigInteger> purchaseOrdeLineIdsDiff = purchaseOrdeLineAll.stream()
|
||||||
|
.filter(item -> !purchaseOrdeLineAccepted.contains(item))
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
List<String> Products = new ArrayList<>();
|
||||||
|
for (BigInteger id : purchaseOrdeLineIdsDiff) {
|
||||||
|
PurchaseOrderLine purchaseOrderLine = Beans.get(PurchaseOrderLineRepository.class).find(id.longValue());
|
||||||
|
Products.add(purchaseOrderLine.getProductName());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(purchaseOrdeLineAccepted.size() != purchaseOrdeLineAll.size()){
|
||||||
|
|
||||||
|
throw new AxelorException(
|
||||||
|
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||||
|
I18n.get(IExceptionMessage.TCO),
|
||||||
|
Products);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user