From 6b2c87c96485a7107a853fc0f3b3a70ce111f171 Mon Sep 17 00:00:00 2001 From: walid seghier Date: Sun, 22 May 2022 09:43:03 +0100 Subject: [PATCH] =?UTF-8?q?r=C3=A9gler=20le=20probl=C3=A8me=20de=20g=C3=A9?= =?UTF-8?q?n=C3=A9ration=20commandes=20fournisseur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit copie les lignes de commande d'achat est leurs TCO quand on click sur le bouton (Générer commandes fournisseurs) --- .../service/PurchaseOrderSupplierService.java | 123 +++++++++++++++++- 1 file changed, 122 insertions(+), 1 deletion(-) 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 ca0a66e..7d0aa41 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 @@ -36,6 +36,8 @@ import com.axelor.apps.purchase.service.app.AppPurchaseService; import com.axelor.apps.stock.service.StockLocationService; import com.axelor.apps.supplychain.exception.IExceptionMessage; 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.exception.AxelorException; import com.axelor.exception.db.repo.TraceBackRepository; @@ -128,8 +130,9 @@ public class PurchaseOrderSupplierService { for (Partner supplierPartner : purchaseOrderLinesBySupplierPartner.keySet()) { - this.createPurchaseOrder( + PurchaseOrder PurchaseOrderNew = this.createPurchaseOrderSophal( supplierPartner, purchaseOrderLinesBySupplierPartner.get(supplierPartner), purchaseOrder); + createPurchaseOrderSupplierLineTCO(PurchaseOrderNew.getPurchaseOrderLineList() ,purchaseOrderLinesBySupplierPartner.get(supplierPartner)); } poRepo.save(purchaseOrder); @@ -223,4 +226,122 @@ public class PurchaseOrderSupplierService { purchaseOrderLine.getQty(), purchaseOrderLine.getUnit()); } + + + @Transactional(rollbackOn = {Exception.class}) + public PurchaseOrder createPurchaseOrderSophal( + Partner supplierPartner, + List purchaseOrderLineList, + PurchaseOrder parentPurchaseOrder) + throws AxelorException { + + LOG.debug( + "Création d'une commande fournisseur depuis le devis fournisseur : {} et le fournisseur : {}", + parentPurchaseOrder.getPurchaseOrderSeq(), + supplierPartner.getFullName()); + + PurchaseOrder purchaseOrder = + purchaseOrderServiceSupplychainImpl.createPurchaseOrder( + AuthUtils.getUser(), + parentPurchaseOrder.getCompany(), + null, + supplierPartner.getCurrency(), + null, + parentPurchaseOrder.getPurchaseOrderSeq(), + parentPurchaseOrder.getExternalReference(), + Beans.get(StockLocationService.class) + .getDefaultReceiptStockLocation(parentPurchaseOrder.getCompany()), + Beans.get(AppBaseService.class).getTodayDate(), + Beans.get(PartnerPriceListService.class) + .getDefaultPriceList(supplierPartner, PriceListRepository.TYPE_PURCHASE), + supplierPartner, + parentPurchaseOrder.getTradingName()); + + purchaseOrder.setParentPurchaseOrder(parentPurchaseOrder); + + for (PurchaseOrderLine purchaseOrderLine : purchaseOrderLineList) { + + // purchaseOrder.addPurchaseOrderLineListItem( + // this.createPurchaseOrderLine(purchaseOrder, purchaseOrderLine)); + purchaseOrder.addPurchaseOrderLineListItem( + this.createPurchaseOrderLineSophal(purchaseOrder, purchaseOrderLine)); + + } + + purchaseOrderServiceSupplychainImpl.computePurchaseOrder(purchaseOrder); + + purchaseOrder.setStatusSelect(PurchaseOrderRepository.STATUS_REQUESTED); + purchaseOrder.setReceiptState(PurchaseOrderRepository.STATE_NOT_RECEIVED); + + poRepo.save(purchaseOrder); + + return purchaseOrder; + } + + public PurchaseOrderLine createPurchaseOrderLineSophal( + PurchaseOrder purchaseOrder, PurchaseOrderLine purchaseOrderLine) throws AxelorException { + + + LOG.debug( + "SOPHAL Création d'une ligne de commande fournisseur pour le produit : {}", + new Object[] {purchaseOrderLine.getProductName()}); + + PurchaseOrderLine PurchaseOrderLineNew = purchaseOrderLineService.createPurchaseOrderLine( + purchaseOrder, + purchaseOrderLine.getProduct(), + purchaseOrderLine.getProductName(), + purchaseOrderLine.getDescription(), + purchaseOrderLine.getQty(), + purchaseOrderLine.getUnit()); + + + PurchaseOrderLineNew.setPrice(purchaseOrderLine.getPrice()); + PurchaseOrderLineNew.setInTaxPrice(purchaseOrderLine.getInTaxPrice()); + PurchaseOrderLineNew.setPriceDiscounted(purchaseOrderLine.getPriceDiscounted()); + PurchaseOrderLineNew.setExTaxTotal(purchaseOrderLine.getExTaxTotal()); + PurchaseOrderLineNew.setInTaxTotal(purchaseOrderLine.getInTaxTotal()); + PurchaseOrderLineNew.setDiscountAmount(purchaseOrderLine.getDiscountAmount()); + PurchaseOrderLineNew.setDiscountTypeSelect(purchaseOrderLine.getDiscountTypeSelect()); + PurchaseOrderLineNew.setSupplierPartner(purchaseOrderLine.getSupplierPartner()); + + return PurchaseOrderLineNew ; + } + + + public void createPurchaseOrderSupplierLineTCO( + List purchaseOrderLN, List purchaseOrderLP) throws AxelorException { + + int index=0; + List purchaseOrderLineNew = purchaseOrderLN; + for (PurchaseOrderLine purchaseOrderLineParnet : purchaseOrderLP) { + + List PurchaseOrderSupplierLineParnetList = + Beans.get(PurchaseOrderSupplierLineRepository.class) + .all() + .filter("self.purchaseOrderLine =?1 ", purchaseOrderLineParnet.getId()) + .fetch(); + + for (PurchaseOrderSupplierLine poLineSupplierParnet : PurchaseOrderSupplierLineParnetList) { + + PurchaseOrderSupplierLine po = new PurchaseOrderSupplierLine(); + po.setPrice(poLineSupplierParnet.getPrice()); + po.setExTaxTotal(poLineSupplierParnet.getExTaxTotal()); + po.setInTaxTotal(poLineSupplierParnet.getInTaxTotal()); + po.setTaxTotal(poLineSupplierParnet.getTaxTotal()); + po.setAvailableQty(poLineSupplierParnet.getAvailableQty()); + po.setPurchaseOrderLine(purchaseOrderLineNew.get(index)); + po.setStateSelect(poLineSupplierParnet.getStateSelect()); + po.setTaxLine(poLineSupplierParnet.getTaxLine()); + po.setSupplierPartner(poLineSupplierParnet.getSupplierPartner()); + po.setComments(poLineSupplierParnet.getComments()); + po.setArchived(poLineSupplierParnet.getArchived()); + po.setArchived(poLineSupplierParnet.getArchived()); + po.setEstimatedDelivDate(poLineSupplierParnet.getEstimatedDelivDate()); + //LOG.debug("purchaseOrderLineNew.getId(): {}",purchaseOrderLineNew.get(index).getId()); + Beans.get(PurchaseOrderSupplierLineRepository.class).save(po); + + } + index++; + } + } }