diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseRequestServiceImpl.java b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseRequestServiceImpl.java index 140a77c..40cd4db 100644 --- a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseRequestServiceImpl.java +++ b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseRequestServiceImpl.java @@ -93,6 +93,9 @@ public class PurchaseRequestServiceImpl implements PurchaseRequestService { // SOPHAL setProjectPurchaseOrder(purchaseOrder, purchaseRequest); purchaseOrder.setNotes(purchaseRequest.getDescription()); + // sophal set purchase request + // purchaseOrder.setPurchaseRequest(purchaseRequest.getId()); + // sophal purchaseOrderRepo.save(purchaseOrder); // SOPHAL key = key == null ? purchaseRequest.getId().toString() : key; @@ -133,6 +136,7 @@ public class PurchaseRequestServiceImpl implements PurchaseRequestService { } purchaseOrder.getPurchaseOrderLineList().addAll(purchaseOrderLineList); purchaseOrderService.computePurchaseOrder(purchaseOrder); + purchaseOrder.setPurchaseRequestOrigin(purchaseRequest); purchaseOrderRepo.save(purchaseOrder); Set hash_Set = new HashSet(); hash_Set.add(purchaseOrder); 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 16df4c1..8787409 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 @@ -69,6 +69,8 @@ + + diff --git a/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/service/PurchaseOrderSupplierService.java b/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/service/PurchaseOrderSupplierService.java index 3533c00..1c041ce 100644 --- a/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/service/PurchaseOrderSupplierService.java +++ b/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/service/PurchaseOrderSupplierService.java @@ -28,9 +28,11 @@ import com.axelor.apps.base.service.PartnerPriceListService; import com.axelor.apps.base.service.app.AppBaseService; import com.axelor.apps.purchase.db.PurchaseOrder; import com.axelor.apps.purchase.db.PurchaseOrderLine; +import com.axelor.apps.purchase.db.PurchaseRequest; import com.axelor.apps.purchase.db.SupplierCatalog; import com.axelor.apps.purchase.db.repo.PurchaseOrderLineRepository; import com.axelor.apps.purchase.db.repo.PurchaseOrderRepository; +import com.axelor.apps.purchase.db.repo.PurchaseRequestRepository; import com.axelor.apps.purchase.service.PurchaseOrderLineService; import com.axelor.apps.purchase.service.app.AppPurchaseService; import com.axelor.apps.stock.service.StockLocationService; @@ -39,6 +41,7 @@ import com.axelor.apps.supplychain.service.PurchaseOrderServiceSupplychainImpl; import com.axelor.apps.suppliermanagement.db.repo.PurchaseOrderSupplierLineRepository; import com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine; import com.axelor.auth.AuthUtils; +import com.axelor.db.JPA; import com.axelor.exception.AxelorException; import com.axelor.exception.db.repo.TraceBackRepository; import com.axelor.i18n.I18n; @@ -52,6 +55,11 @@ import java.util.List; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.HashSet; +import java.util.Set; +import java.util.stream.Collector; +import java.util.stream.Collectors; +import javax.persistence.Query; public class PurchaseOrderSupplierService { @@ -65,6 +73,8 @@ public class PurchaseOrderSupplierService { @Inject protected PurchaseOrderRepository poRepo; + @Inject private PurchaseRequestRepository purchaseRequestRepo; + @Transactional public void generateAllSuppliersRequests(PurchaseOrder purchaseOrder) { @@ -128,13 +138,26 @@ public class PurchaseOrderSupplierService { Map> purchaseOrderLinesBySupplierPartner = this.splitBySupplierPartner(purchaseOrder.getPurchaseOrderLineList()); + // remove link purchase order purchase request + PurchaseRequest purchaseRequest = Beans.get(PurchaseRequestRepository.class).find(purchaseOrder.getPurchaseRequestOrigin().getId()); + + Set po = purchaseRequest.getPurchaseOrderSet().stream().filter((t) -> t.getId() != purchaseOrder.getId()).collect(Collectors.toSet()); + + purchaseRequest.getPurchaseOrderSet().removeIf((t) -> t.getId() == purchaseOrder.getId()); + + Set hash_Set = new HashSet(); + hash_Set.addAll(po); for (Partner supplierPartner : purchaseOrderLinesBySupplierPartner.keySet()) { PurchaseOrder PurchaseOrderNew = this.createPurchaseOrderSophal( supplierPartner, purchaseOrderLinesBySupplierPartner.get(supplierPartner), purchaseOrder); + // sophal + hash_Set.add(PurchaseOrderNew); createPurchaseOrderSupplierLineTCO(PurchaseOrderNew.getPurchaseOrderLineList() ,purchaseOrderLinesBySupplierPartner.get(supplierPartner)); } + purchaseRequest.setPurchaseOrderSet(hash_Set); + purchaseRequestRepo.save(purchaseRequest); purchaseOrder.setArchived(true); poRepo.save(purchaseOrder); } @@ -273,7 +296,9 @@ public class PurchaseOrderSupplierService { purchaseOrder.setStatusSelect(PurchaseOrderRepository.STATUS_REQUESTED); purchaseOrder.setReceiptState(PurchaseOrderRepository.STATE_NOT_RECEIVED); - + purchaseOrder.setPurchaseRequestOrigin(parentPurchaseOrder.getPurchaseRequestOrigin()); + // copy description from parent po + purchaseOrder.setNotes(parentPurchaseOrder.getNotes());; poRepo.save(purchaseOrder); return purchaseOrder; @@ -304,6 +329,8 @@ public class PurchaseOrderSupplierService { PurchaseOrderLineNew.setDiscountAmount(purchaseOrderLine.getDiscountAmount()); PurchaseOrderLineNew.setDiscountTypeSelect(purchaseOrderLine.getDiscountTypeSelect()); PurchaseOrderLineNew.setSupplierPartner(purchaseOrderLine.getSupplierPartner()); + // set taxline to children + PurchaseOrderLineNew.setTaxLine(purchaseOrderLine.getTaxLine()); return PurchaseOrderLineNew ; } diff --git a/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/web/PurchaseOrderController.java b/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/web/PurchaseOrderController.java index 32862da..b882be6 100644 --- a/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/web/PurchaseOrderController.java +++ b/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/web/PurchaseOrderController.java @@ -27,6 +27,7 @@ import com.axelor.inject.Beans; import com.axelor.rpc.ActionRequest; import com.axelor.rpc.ActionResponse; import com.google.inject.Singleton; +import java.util.List; @Singleton public class PurchaseOrderController { @@ -34,7 +35,11 @@ public class PurchaseOrderController { public void generateSuppliersPurchaseOrder(ActionRequest request, ActionResponse response) { PurchaseOrder purchaseOrder = request.getContext().asType(PurchaseOrder.class); - + List purchaseOrders = Beans.get(PurchaseOrderRepository.class).all() + .filter("self.parentPurchaseOrder = ?1 ", purchaseOrder.getId()) + .fetch(); + + if(purchaseOrders.size() < 1){ try { Beans.get(PurchaseOrderSupplierService.class) .generateSuppliersPurchaseOrder( @@ -44,7 +49,10 @@ public class PurchaseOrderController { } catch (Exception e) { TraceBackService.trace(response, e); } + }else{ + response.setFlash("Vous avez deja genere les commandes fournisseurs associees"); } +} public void generateSuppliersRequests(ActionRequest request, ActionResponse response) {