From fbc54031aa169753746e423ddcba69c9143d0d8f Mon Sep 17 00:00:00 2001 From: bachir souldi Date: Wed, 31 Aug 2022 09:38:50 +0100 Subject: [PATCH] add auto generate importation folder for purchase order --- .../service/PurchaseOrderService.java | 3 + .../service/PurchaseOrderServiceImpl.java | 55 ++++++++++++++++++- .../purchase/web/PurchaseOrderController.java | 28 ++++++++++ 3 files changed, 84 insertions(+), 2 deletions(-) diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderService.java b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderService.java index fc7a6ed..97497d6 100644 --- a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderService.java +++ b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderService.java @@ -22,6 +22,7 @@ import com.axelor.apps.base.db.Currency; import com.axelor.apps.base.db.Partner; import com.axelor.apps.base.db.PriceList; import com.axelor.apps.base.db.TradingName; +import com.axelor.apps.purchase.db.ImportationFolder; import com.axelor.apps.purchase.db.PurchaseOrder; import com.axelor.auth.db.User; import com.axelor.exception.AxelorException; @@ -114,4 +115,6 @@ public interface PurchaseOrderService { public void cancelPurchaseOrder(PurchaseOrder purchaseOrder); public void cancelReasonPurchaseOrder(PurchaseOrder purchaseOrder, CancelReason cancelReason, String cancelReasonStr); + + public void calculateSum(List purchaseOrders,ImportationFolder importationFolder) throws AxelorException; } diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderServiceImpl.java b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderServiceImpl.java index aca2616..4d0ae43 100644 --- a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderServiceImpl.java +++ b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderServiceImpl.java @@ -85,7 +85,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Inject protected AppPurchaseService appPurchaseService; @Inject protected PurchaseOrderRepository purchaseOrderRepo; - @Inject protected ImportationFolderRepository importationFolderRepository; + @Inject protected ImportationFolderRepository importationFolderRepo; @Override public PurchaseOrder _computePurchaseOrderLines(PurchaseOrder purchaseOrder) @@ -529,7 +529,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { importationFolder.setTaxAmount(taxAmount); importationFolder.setTotalAmount(totalAmount); - importationFolderRepository.save(importationFolder); + importationFolderRepo.save(importationFolder); } @@ -598,4 +598,55 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { } + + + @Transactional + public ImportationFolder generateImportationFolder(PurchaseOrder purchaseOrder) throws AxelorException { + ImportationFolder importationFolder = new ImportationFolder(); + List purchaseOrders = new ArrayList(); + purchaseOrders.add(purchaseOrder); + importationFolder.setPurchaseOrderList(purchaseOrders); + importationFolder.setCurrency(purchaseOrder.getCurrency()); + importationFolder.setProgress(10); + + + BigDecimal amount = BigDecimal.ZERO; + BigDecimal taxAmount = BigDecimal.ZERO; + BigDecimal totalAmount = BigDecimal.ZERO; + + + + if(purchaseOrder.getCurrency().getId() == 148 || purchaseOrder.getCurrency().getId() == 46){ + Currency currency = Beans.get(CurrencyRepository.class).find(purchaseOrder.getCurrency().getId()); + Currency currencyDzd = Beans.get(CurrencyRepository.class).findByCode("DZD"); + BigDecimal currencyAmount = Beans.get(CurrencyService.class).getCurrencyConversionRate(currency, currencyDzd); + + currencyAmount = currencyAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN); + + BigDecimal finalAmount = purchaseOrder.getExTaxTotal().multiply(currencyAmount); + BigDecimal finalTaxAmount = purchaseOrder.getTaxTotal().multiply(currencyAmount); + BigDecimal finalTotalAmount = purchaseOrder.getInTaxTotal().multiply(currencyAmount); + + amount = amount.add(finalAmount).setScale(2, BigDecimal.ROUND_HALF_EVEN); + taxAmount = taxAmount.add(finalTaxAmount).setScale(2, BigDecimal.ROUND_HALF_EVEN); + totalAmount = totalAmount.add(finalTotalAmount).setScale(2, BigDecimal.ROUND_HALF_EVEN); + + }else{ + amount = amount.add(purchaseOrder.getExTaxTotal()); + taxAmount = taxAmount.add(purchaseOrder.getTaxTotal()); + totalAmount = totalAmount.add(purchaseOrder.getInTaxTotal()); + } + + + importationFolder.setAmount(amount); + importationFolder.setTaxAmount(taxAmount); + importationFolder.setTotalAmount(totalAmount); + + ImportationFolder imp = importationFolderRepo.save(importationFolder); + purchaseOrder.setImportationFolder(imp); + purchaseOrderRepo.save(purchaseOrder); + + return importationFolder; + } + } diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/web/PurchaseOrderController.java b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/web/PurchaseOrderController.java index 6ea3bb2..e571175 100644 --- a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/web/PurchaseOrderController.java +++ b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/web/PurchaseOrderController.java @@ -33,12 +33,15 @@ import com.axelor.apps.base.service.BankDetailsService; import com.axelor.apps.base.service.BlockingService; import com.axelor.apps.base.service.PartnerPriceListService; import com.axelor.apps.base.service.TradingNameService; +import com.axelor.apps.purchase.db.ImportationFolder; import com.axelor.apps.purchase.db.PurchaseOrder; import com.axelor.apps.purchase.db.PurchaseRequest; +import com.axelor.apps.purchase.db.repo.ImportationFolderRepository; import com.axelor.apps.purchase.db.repo.PurchaseOrderRepository; import com.axelor.apps.purchase.db.repo.PurchaseRequestRepository; import com.axelor.apps.purchase.exception.IExceptionMessage; import com.axelor.apps.purchase.service.PurchaseOrderService; +import com.axelor.apps.purchase.service.PurchaseOrderServiceImpl; import com.axelor.apps.purchase.service.print.PurchaseOrderPrintService; import com.axelor.apps.report.engine.ReportSettings; import com.axelor.apps.tool.StringTool; @@ -594,4 +597,29 @@ public class PurchaseOrderController { } + + public void generateImportationFolder(ActionRequest request,ActionResponse response) throws AxelorException { + + PurchaseOrder purchaseOrder = Beans.get(PurchaseOrderRepository.class).find(request.getContext().asType(PurchaseOrder.class).getId()); + + if(purchaseOrder.getImportationType() == 2){ + + ImportationFolder importationFolder = Beans.get(PurchaseOrderServiceImpl.class).generateImportationFolder(purchaseOrder); + + purchaseOrder.setImportationFolder(importationFolder); + + // Beans.get(PurchaseOrderRepository.class).save(purchaseOrder); + + response.setView( + ActionView.define("Importation folder") + .model(ImportationFolder.class.getName()) + .add("grid", "importation-folder-grid") + .add("form", "importation-folder-form") + .param("forceEdit", "true") + .domain("self.id = " + importationFolder.getId()) + .map()); + + } + } + }